@mcp-use/inspector 9.0.1 → 10.0.0-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -337,7 +337,7 @@ void main() {
|
|
|
337
337
|
|
|
338
338
|
fragColor = vec4(color, opacity);
|
|
339
339
|
}
|
|
340
|
-
`;function Eu(e){if(Array.isArray(e))return e.length===4?e:e.length===3?[...e,1]:Mu;if(typeof e!=`string`)return Mu;let t,n,r,i=1;if(e.startsWith(`#`))[t,n,r,i]=Du(e);else if(e.startsWith(`rgb`))[t,n,r,i]=Ou(e);else if(e.startsWith(`hsl`))[t,n,r,i]=Au(ku(e));else return console.error(`Unsupported color format`,e),Mu;return[ju(t,0,1),ju(n,0,1),ju(r,0,1),ju(i,0,1)]}function Du(e){return e=e.replace(/^#/,``),e.length===3&&(e=e.split(``).map(e=>e+e).join(``)),e.length===6&&(e+=`ff`),[parseInt(e.slice(0,2),16)/255,parseInt(e.slice(2,4),16)/255,parseInt(e.slice(4,6),16)/255,parseInt(e.slice(6,8),16)/255]}function Ou(e){let t=e.match(/^rgba?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([0-9.]+))?\s*\)$/i);return t?[parseInt(t[1]??`0`)/255,parseInt(t[2]??`0`)/255,parseInt(t[3]??`0`)/255,t[4]===void 0?1:parseFloat(t[4])]:[0,0,0,1]}function ku(e){let t=e.match(/^hsla?\s*\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(?:,\s*([0-9.]+))?\s*\)$/i);return t?[parseInt(t[1]??`0`),parseInt(t[2]??`0`),parseInt(t[3]??`0`),t[4]===void 0?1:parseFloat(t[4])]:[0,0,0,1]}function Au(e){let[t,n,r,i]=e,a=t/360,o=n/100,s=r/100,c,l,u;if(n===0)c=l=u=s;else{let e=(e,t,n)=>(n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e),t=s<.5?s*(1+o):s+o-s*o,n=2*s-t;c=e(n,t,a+1/3),l=e(n,t,a),u=e(n,t,a-1/3)}return[c,l,u,i]}var ju=(e,t,n)=>Math.min(Math.max(e,t),n),Mu=[0,0,0,1];function Nu(e){let t=w.useRef(void 0),n=w.useCallback(t=>{let n=e.map(e=>{if(e!=null){if(typeof e==`function`){let n=e,r=n(t);return typeof r==`function`?r:()=>{n(null)}}return e.current=t,()=>{e.current=null}}});return()=>{n.forEach(e=>e?.())}},e);return w.useMemo(()=>e.every(e=>e==null)?null:e=>{t.current&&=(t.current(),void 0),e!=null&&(t.current=n(e))},e)}function Pu(e){if(e.naturalWidth<1024&&e.naturalHeight<1024){if(e.naturalWidth<1||e.naturalHeight<1)return;let t=e.naturalWidth/e.naturalHeight;e.width=Math.round(t>1?1024*t:1024),e.height=Math.round(t>1?1024:1024/t)}}async function Fu(e){let t={},n=[],r=e=>{try{return e.startsWith(`/`)||new URL(e),!0}catch{return!1}},i=e=>{try{return e.startsWith(`/`)?!1:new URL(e,window.location.origin).origin!==window.location.origin}catch{return!1}};return Object.entries(e).forEach(([e,a])=>{if(typeof a==`string`){let o=a||`data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==`;if(!r(o)){console.warn(`Uniform "${e}" has invalid URL "${o}". Skipping image loading.`);return}let s=new Promise((n,r)=>{let a=new Image;i(o)&&(a.crossOrigin=`anonymous`),a.onload=()=>{Pu(a),t[e]=a,n()},a.onerror=()=>{console.error(`Could not set uniforms. Failed to load image at ${o}`),r()},a.src=o});n.push(s)}else a instanceof HTMLImageElement&&Pu(a),t[e]=a}),await Promise.all(n),t}var Iu=(0,w.forwardRef)(function({fragmentShader:e,uniforms:t,webGlContextAttributes:n,speed:r=0,frame:i=0,width:a,height:o,minPixelRatio:s,maxPixelCount:c,mipmaps:l,style:u,...d},f){let[p,m]=(0,w.useState)(!1),h=(0,w.useRef)(null),g=(0,w.useRef)(null),_=(0,w.useRef)(n);return(0,w.useEffect)(()=>((async()=>{let n=await Fu(t);h.current&&!g.current&&(g.current=new pu(h.current,e,n,_.current,r,i,s,c,l),m(!0))})(),()=>{g.current?.dispose(),g.current=null}),[e]),(0,w.useEffect)(()=>{let e=!1;return(async()=>{let n=await Fu(t);e||g.current?.setUniforms(n)})(),()=>{e=!0}},[t,p]),(0,w.useEffect)(()=>{g.current?.setSpeed(r)},[r,p]),(0,w.useEffect)(()=>{g.current?.setMaxPixelCount(c)},[c,p]),(0,w.useEffect)(()=>{g.current?.setMinPixelRatio(s)},[s,p]),(0,w.useEffect)(()=>{g.current?.setFrame(i)},[i,p]),(0,S.jsx)(`div`,{ref:Nu([h,f]),style:a!==void 0||o!==void 0?{width:typeof a==`string`&&isNaN(+a)===!1?+a:a,height:typeof o==`string`&&isNaN(+o)===!1?+o:o,...u}:u,...d})});Iu.displayName=`ShaderMount`;function Lu(e,t){for(let n in e){if(n===`colors`){let n=Array.isArray(e.colors),r=Array.isArray(t.colors);if(!n||!r){if(Object.is(e.colors,t.colors)===!1)return!1;continue}if(e.colors?.length!==t.colors?.length||!e.colors?.every((e,n)=>e===t.colors?.[n]))return!1;continue}if(Object.is(e[n],t[n])===!1)return!1}return!0}var Ru={name:`Default`,params:{...yu,speed:1,frame:0,colors:[`#e0eaff`,`#241d9a`,`#f75092`,`#9f50d3`],distortion:.8,swirl:.1,grainMixer:0,grainOverlay:0}};({...yu}),{...yu},{...yu};var zu=(0,w.memo)(function({speed:e=Ru.params.speed,frame:t=Ru.params.frame,colors:n=Ru.params.colors,distortion:r=Ru.params.distortion,swirl:i=Ru.params.swirl,grainMixer:a=Ru.params.grainMixer,grainOverlay:o=Ru.params.grainOverlay,fit:s=Ru.params.fit,rotation:c=Ru.params.rotation,scale:l=Ru.params.scale,originX:u=Ru.params.originX,originY:d=Ru.params.originY,offsetX:f=Ru.params.offsetX,offsetY:p=Ru.params.offsetY,worldWidth:m=Ru.params.worldWidth,worldHeight:h=Ru.params.worldHeight,...g}){let _={u_colors:n.map(Eu),u_colorsCount:n.length,u_distortion:r,u_swirl:i,u_grainMixer:a,u_grainOverlay:o,u_fit:bu[s],u_rotation:c,u_scale:l,u_offsetX:f,u_offsetY:p,u_originX:u,u_originY:d,u_worldWidth:m,u_worldHeight:h};return(0,S.jsx)(Iu,{...g,speed:e,frame:t,fragmentShader:Tu,uniforms:_})},Lu),Bu=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),Vu=`VisuallyHidden`,Hu=w.forwardRef((e,t)=>(0,S.jsx)(Jt.span,{...e,ref:t,style:{...Bu,...e.style}}));Hu.displayName=Vu;var Uu=Hu,[Wu,nee]=Nt(`Tooltip`,[oa]),Gu=oa(),Ku=`TooltipProvider`,qu=700,Ju=`tooltip.open`,[Yu,Xu]=Wu(Ku),Zu=e=>{let{__scopeTooltip:t,delayDuration:n=qu,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=w.useRef(!0),s=w.useRef(!1),c=w.useRef(0);return w.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,S.jsx)(Yu,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:w.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:w.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:w.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};Zu.displayName=Ku;var Qu=`Tooltip`,[$u,ed]=Wu(Qu),td=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=Xu(Qu,e.__scopeTooltip),l=Gu(t),[u,d]=w.useState(null),f=In(),p=w.useRef(0),m=o??c.disableHoverableContent,h=s??c.delayDuration,g=w.useRef(!1),[_,v]=Lt({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(Ju))):c.onClose(),a?.(e)},caller:Qu}),y=w.useMemo(()=>_?g.current?`delayed-open`:`instant-open`:`closed`,[_]),b=w.useCallback(()=>{window.clearTimeout(p.current),p.current=0,g.current=!1,v(!0)},[v]),x=w.useCallback(()=>{window.clearTimeout(p.current),p.current=0,v(!1)},[v]),C=w.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>{g.current=!0,v(!0),p.current=0},h)},[h,v]);return w.useEffect(()=>()=>{p.current&&=(window.clearTimeout(p.current),0)},[]),(0,S.jsx)(Sa,{...l,children:(0,S.jsx)($u,{scope:t,contentId:f,open:_,stateAttribute:y,trigger:u,onTriggerChange:d,onTriggerEnter:w.useCallback(()=>{c.isOpenDelayedRef.current?C():b()},[c.isOpenDelayedRef,C,b]),onTriggerLeave:w.useCallback(()=>{m?x():(window.clearTimeout(p.current),p.current=0)},[x,m]),onOpen:b,onClose:x,disableHoverableContent:m,children:n})})};td.displayName=Qu;var nd=`TooltipTrigger`,rd=w.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=ed(nd,n),a=Xu(nd,n),o=Gu(n),s=D(t,w.useRef(null),i.onTriggerChange),c=w.useRef(!1),l=w.useRef(!1),u=w.useCallback(()=>c.current=!1,[]);return w.useEffect(()=>()=>document.removeEventListener(`pointerup`,u),[u]),(0,S.jsx)(Ca,{asChild:!0,...o,children:(0,S.jsx)(Jt.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:s,onPointerMove:jt(e.onPointerMove,e=>{e.pointerType!==`touch`&&!l.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),l.current=!0)}),onPointerLeave:jt(e.onPointerLeave,()=>{i.onTriggerLeave(),l.current=!1}),onPointerDown:jt(e.onPointerDown,()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener(`pointerup`,u,{once:!0})}),onFocus:jt(e.onFocus,()=>{c.current||i.onOpen()}),onBlur:jt(e.onBlur,i.onClose),onClick:jt(e.onClick,i.onClose)})})});rd.displayName=nd;var id=`TooltipPortal`,[ad,od]=Wu(id,{forceMount:void 0}),sd=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=ed(id,t);return(0,S.jsx)(ad,{scope:t,forceMount:n,children:(0,S.jsx)(ka,{present:n||a.open,children:(0,S.jsx)(Da,{asChild:!0,container:i,children:r})})})};sd.displayName=id;var cd=`TooltipContent`,ld=w.forwardRef((e,t)=>{let n=od(cd,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=ed(cd,e.__scopeTooltip);return(0,S.jsx)(ka,{present:r||o.open,children:o.disableHoverableContent?(0,S.jsx)(md,{side:i,...a,ref:t}):(0,S.jsx)(ud,{side:i,...a,ref:t})})}),ud=w.forwardRef((e,t)=>{let n=ed(cd,e.__scopeTooltip),r=Xu(cd,e.__scopeTooltip),i=w.useRef(null),a=D(t,i),[o,s]=w.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=w.useCallback(()=>{s(null),d(!1)},[d]),p=w.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=vd(r,_d(r,n.getBoundingClientRect())),a=yd(t.getBoundingClientRect());s(xd([...i,...a])),d(!0)},[d]);return w.useEffect(()=>()=>f(),[f]),w.useEffect(()=>{if(c&&u){let e=e=>p(e,u),t=e=>p(e,c);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),w.useEffect(()=>{if(o){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!bd(n,o);r?f():i&&(f(),l())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,S.jsx)(md,{...e,ref:a})}),[dd,fd]=Wu(Qu,{isInside:!1}),pd=Wt(`TooltipContent`),md=w.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=ed(cd,n),l=Gu(n),{onClose:u}=c;return w.useEffect(()=>(document.addEventListener(Ju,u),()=>document.removeEventListener(Ju,u)),[u]),w.useEffect(()=>{if(c.trigger){let e=e=>{e.target?.contains(c.trigger)&&u()};return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[c.trigger,u]),(0,S.jsx)(cn,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,S.jsxs)(wa,{"data-state":c.stateAttribute,...l,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,S.jsx)(pd,{children:r}),(0,S.jsx)(dd,{scope:n,isInside:!0,children:(0,S.jsx)(Uu,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});ld.displayName=cd;var hd=`TooltipArrow`,gd=w.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=Gu(n);return fd(hd,n).isInside?null:(0,S.jsx)(Ta,{...i,...r,ref:t})});gd.displayName=hd;function _d(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function vd(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function yd(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function bd(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function xd(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:+(e.y>t.y)),Sd(t)}function Sd(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var ree=Zu,Cd=td,wd=rd,Td=sd,Ed=ld,Dd=gd;function Od({delayDuration:e=0,...t}){return(0,S.jsx)(ree,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function kd({...e}){return(0,S.jsx)(Od,{children:(0,S.jsx)(Cd,{"data-slot":`tooltip`,...e})})}function Ad({...e}){return(0,S.jsx)(wd,{"data-slot":`tooltip-trigger`,...e})}function jd({className:e,sideOffset:t=0,children:n,...r}){return(0,S.jsx)(Td,{children:(0,S.jsxs)(Ed,{"data-slot":`tooltip-content`,sideOffset:t,className:H(`bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-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 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance`,e),...r,children:[n,(0,S.jsx)(Dd,{className:`bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`})]})})}var Md=class{name=`mcp_inspector_open`;properties;constructor(e){this.properties={server_url:e.serverUrl,connection_count:e.connectionCount}}},Nd=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}}},Pd=class{name=`mcp_resource_read`;properties;constructor(e){this.properties={resource_uri:e.resourceUri,server_id:e.serverId,success:e.success,error:e.error}}},Fd=class{name=`mcp_prompt_call`;properties;constructor(e){this.properties={prompt_name:e.promptName,server_id:e.serverId,success:e.success,error:e.error}}},Id=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}}},Ld=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}}},Rd=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}}},zd=class{name=`mcp_server_removed`;properties;constructor(e){this.properties={server_id:e.serverId}}},Bd=class{name=`mcp_command_palette_open`;properties;constructor(e){this.properties={trigger:e.trigger}}},Vd=class{name=`mcp_tool_saved`;properties;constructor(e){this.properties={tool_name:e.toolName,server_id:e.serverId}}},Hd=class{name=`mcp_tunnel_action`;properties;constructor(e){this.properties={action:e.action,success:e.success,tunnel_url:e.tunnelUrl}}},Ud=class{name=`mcp_deploy_click`;properties;constructor(e){this.properties={referrer:e.referrer}}},Wd=class{name=`mcp_chat_configured`;properties;constructor(e){this.properties={provider:e.provider,model:e.model}}},Gd=class{name=`mcp_tab_navigation`;properties;constructor(e){this.properties={tab:e.tab,previous_tab:e.previousTab}}},Kd=class{name=`mcp_add_to_client`;properties;constructor(e){this.properties={client:e.client}}},qd=class{name=`mcp_session_duration`;properties;constructor(e){this.properties={duration_seconds:e.durationSeconds,tabs_visited:e.tabsVisited,tools_executed:e.toolsExecuted}}};function Jd(){try{return`9.0.1`}catch{return`0.0.0`}}function Yd(){try{return typeof window<`u`&&typeof document<`u`}catch{return!1}}var Xd=class{endpoint;timeout;constructor(e,t=3e3){this.endpoint=e,this.timeout=t}async logEvent(e){try{let t=new AbortController,n=setTimeout(()=>t.abort(),this.timeout),r=await fetch(this.endpoint,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:t.signal});if(clearTimeout(n),!r.ok)throw Error(`HTTP error! status: ${r.status}`)}catch{}}};function Zd(e){return`mcp_inspector_telemetry_${e}`}function Qd(){if(typeof window>`u`)return`standalone`;let e=window.__MCP_INSPECTOR_MODE__;return e===`standalone`||e===`embedded`||e===`cloud`?e:`standalone`}function $d(){return typeof localStorage<`u`&&typeof localStorage.getItem==`function`&&typeof localStorage.setItem==`function`}var ef=class e{static instance=null;POSTHOG_PROXY_URL=`/inspector/api/tel/posthog`;SCARF_PROXY_URL=`/inspector/api/tel/scarf`;UNKNOWN_USER_ID=`UNKNOWN_USER_ID`;_currUserId=null;_posthogClient=null;_scarfClient=null;_source=`inspector`;_mode=`standalone`;constructor(){let e=Yd(),t=this.isTelemetryDisabled();if(this._source=this.getStoredSource()||`inspector`,this._mode=Qd(),t)this._posthogClient=null,this._scarfClient=null;else if(!e)this._posthogClient=null,this._scarfClient=null;else{try{this._posthogClient=new Xd(this.POSTHOG_PROXY_URL,3e3)}catch{this._posthogClient=null}try{this._scarfClient=new Xd(this.SCARF_PROXY_URL,3e3)}catch{this._scarfClient=null}}}isTelemetryDisabled(){return!!(typeof window<`u`&&window.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||$d()&&localStorage.getItem(Zd(`disabled`))===`true`||typeof process<`u`&&{}?.MCP_USE_ANONYMIZED_TELEMETRY===`false`)}getStoredSource(){return $d()?localStorage.getItem(Zd(`source`)):null}static getInstance(){return e.instance||=new e,e.instance}setSource(e){this._source=e,$d()&&localStorage.setItem(Zd(`source`),e)}getSource(){return this._source}getMode(){return this._mode}get userId(){if(this._currUserId)return this._currUserId;if(!Yd())return this._currUserId=this.UNKNOWN_USER_ID,this._currUserId;try{if(!$d())throw Error(`localStorage is not available or not functional`);let e=localStorage.getItem(Zd(`user_id`));if(e)this._currUserId=e;else{let e=this.generateUserId();localStorage.setItem(Zd(`user_id`),e),this._currUserId=e}this.trackPackageDownload({triggered_by:`user_id_property`}).catch(()=>{})}catch{this._currUserId=this.UNKNOWN_USER_ID}return this._currUserId}generateUserId(){let e=window.crypto;if(e){let t=new Uint8Array(16);e.getRandomValues(t),t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=Array.from(t).map(e=>e.toString(16).padStart(2,`0`)).join(``);return n.slice(0,8)+`-`+n.slice(8,12)+`-`+n.slice(12,16)+`-`+n.slice(16,20)+`-`+n.slice(20,32)}else return`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)})}async capture(e){if(!(!this._posthogClient&&!this._scarfClient)){if(this._posthogClient)try{let t={event:e.name,user_id:this.userId,properties:{...e.properties,mcp_use_version:Jd(),language:`typescript`,source:this._source,package:`inspector`,mode:this._mode}};await this._posthogClient.logEvent(t)}catch{}if(this._scarfClient)try{let t={};t.mcp_use_version=Jd(),t.user_id=this.userId,t.event=e.name,t.language=`typescript`,t.source=this._source,t.package=`inspector`,t.mode=this._mode,await this._scarfClient.logEvent(t)}catch{}}}async trackPackageDownload(e){if(this._scarfClient&&Yd())try{if(!$d())throw Error(`localStorage is not available or not functional`);let t=Jd(),n=!1,r=!1,i=localStorage.getItem(Zd(`download_version`));if(i?t>i&&(n=!0,r=!1,localStorage.setItem(Zd(`download_version`),t)):(n=!0,r=!0,localStorage.setItem(Zd(`download_version`),t)),n){let n={...e||{}};n.mcp_use_version=t,n.user_id=this.userId,n.event=`package_download`,n.first_download=r,n.language=`typescript`,n.source=this._source,n.package=`inspector`,n.mode=this._mode,await this._scarfClient.logEvent(n)}}catch{}}async trackInspectorOpen(e){let t=new Md(e);await this.capture(t)}},tf=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),nf=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),rf=e=>{let t=nf(e);return t.charAt(0).toUpperCase()+t.slice(1)},af=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),of=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0},sf={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`},cf=(0,w.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>(0,w.createElement)(`svg`,{ref:c,...sf,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:af(`lucide`,i),...!a&&!of(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,w.createElement)(e,t)),...Array.isArray(a)?a:[a]])),lf=(e,t)=>{let n=(0,w.forwardRef)(({className:n,...r},i)=>(0,w.createElement)(cf,{ref:i,iconNode:t,className:af(`lucide-${tf(rf(e))}`,`lucide-${e}`,n),...r}));return n.displayName=rf(e),n},uf=lf(`arrow-down-to-line`,[[`path`,{d:`M12 17V3`,key:`1cwfxf`}],[`path`,{d:`m6 11 6 6 6-6`,key:`12ii2o`}],[`path`,{d:`M19 21H5`,key:`150jfl`}]]),df=lf(`arrow-up-from-line`,[[`path`,{d:`m18 9-6-6-6 6`,key:`kcunyi`}],[`path`,{d:`M12 3v14`,key:`7cf3v8`}],[`path`,{d:`M5 21h14`,key:`11awu3`}]]),ff=lf(`arrow-up-right`,[[`path`,{d:`M7 7h10v10`,key:`1tivn9`}],[`path`,{d:`M7 17 17 7`,key:`1vkiza`}]]),iee=lf(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),pf=lf(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),mf=lf(`braces`,[[`path`,{d:`M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1`,key:`ezmyqa`}],[`path`,{d:`M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1`,key:`e1hn23`}]]),hf=lf(`brush-cleaning`,[[`path`,{d:`m16 22-1-4`,key:`1ow2iv`}],[`path`,{d:`M19 14a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2h-3a1 1 0 0 1-1-1V4a2 2 0 0 0-4 0v5a1 1 0 0 1-1 1H6a2 2 0 0 0-2 2v1a1 1 0 0 0 1 1`,key:`11gii7`}],[`path`,{d:`M19 14H5l-1.973 6.767A1 1 0 0 0 4 22h16a1 1 0 0 0 .973-1.233z`,key:`bju7h4`}],[`path`,{d:`m8 22 1-4`,key:`s3unb`}]]),gf=lf(`brush`,[[`path`,{d:`m11 10 3 3`,key:`fzmg1i`}],[`path`,{d:`M6.5 21A3.5 3.5 0 1 0 3 17.5a2.62 2.62 0 0 1-.708 1.792A1 1 0 0 0 3 21z`,key:`p4q2r7`}],[`path`,{d:`M9.969 17.031 21.378 5.624a1 1 0 0 0-3.002-3.002L6.967 14.031`,key:`wy6l02`}]]),_f=lf(`bug`,[[`path`,{d:`M12 20v-9`,key:`1qisl0`}],[`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`,key:`uouzyp`}],[`path`,{d:`M14.12 3.88 16 2`,key:`qol33r`}],[`path`,{d:`M21 21a4 4 0 0 0-3.81-4`,key:`1b0z45`}],[`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`,key:`5cxbf6`}],[`path`,{d:`M22 13h-4`,key:`1jl80f`}],[`path`,{d:`M3 21a4 4 0 0 1 3.81-4`,key:`1fjd4g`}],[`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`,key:`1d7oge`}],[`path`,{d:`M6 13H2`,key:`82j7cp`}],[`path`,{d:`m8 2 1.88 1.88`,key:`fmnt4t`}],[`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`,key:`1vgav8`}]]),vf=lf(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),yf=lf(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),bf=lf(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),xf=lf(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),Sf=lf(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),Cf=lf(`chevrons-left-right-ellipsis`,[[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}],[`path`,{d:`m17 7 5 5-5 5`,key:`1xlxn0`}],[`path`,{d:`m7 7-5 5 5 5`,key:`19njba`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}]]),wf=lf(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),Tf=lf(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),Ef=lf(`circle-minus`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}]]),Df=lf(`clock`,[[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),Of=lf(`code`,[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]),kf=lf(`cog`,[[`path`,{d:`M11 10.27 7 3.34`,key:`16pf9h`}],[`path`,{d:`m11 13.73-4 6.93`,key:`794ttg`}],[`path`,{d:`M12 22v-2`,key:`1osdcq`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14 12h8`,key:`4f43i9`}],[`path`,{d:`m17 20.66-1-1.73`,key:`eq3orb`}],[`path`,{d:`m17 3.34-1 1.73`,key:`2wel8s`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`m20.66 17-1.73-1`,key:`sg0v6f`}],[`path`,{d:`m20.66 7-1.73 1`,key:`1ow05n`}],[`path`,{d:`m3.34 17 1.73-1`,key:`nuk764`}],[`path`,{d:`m3.34 7 1.73 1`,key:`1ulond`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`circle`,{cx:`12`,cy:`12`,r:`8`,key:`46899m`}]]),Af=lf(`command`,[[`path`,{d:`M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3`,key:`11bfej`}]]),jf=lf(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),Mf=lf(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),Nf=lf(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),Pf=lf(`ellipsis-vertical`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]]),Ff=lf(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),If=lf(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Lf=lf(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Rf=lf(`file-code`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12.5 8 15l2 2.5`,key:`1tg20x`}],[`path`,{d:`m14 12.5 2 2.5-2 2.5`,key:`yinavb`}]]),zf=lf(`file-image`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`10`,cy:`12`,r:`2`,key:`737tya`}],[`path`,{d:`m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22`,key:`wt3hpn`}]]),Bf=lf(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),Vf=lf(`file`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]),Hf=lf(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]),Uf=lf(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),Wf=lf(`grip-vertical`,[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]),Gf=lf(`hash`,[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`,key:`4lhtct`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`,key:`vyu0kd`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`,key:`1ggp8o`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`,key:`weycgp`}]]),Kf=lf(`history`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}],[`path`,{d:`M12 7v5l4 2`,key:`1fdv2h`}]]),qf=lf(`image`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]),Jf=lf(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),Yf=lf(`key`,[[`path`,{d:`m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4`,key:`g0fldk`}],[`path`,{d:`m21 2-9.6 9.6`,key:`1j0ho8`}],[`circle`,{cx:`7.5`,cy:`15.5`,r:`5.5`,key:`yqb3hr`}]]),Xf=lf(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),Zf=lf(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),Qf=lf(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),$f=lf(`maximize`,[[`path`,{d:`M8 3H5a2 2 0 0 0-2 2v3`,key:`1dcmit`}],[`path`,{d:`M21 8V5a2 2 0 0 0-2-2h-3`,key:`1e4gt3`}],[`path`,{d:`M3 16v3a2 2 0 0 0 2 2h3`,key:`wsl5sc`}],[`path`,{d:`M16 21h3a2 2 0 0 0 2-2v-3`,key:`18trek`}]]),ep=lf(`message-circle`,[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}]]),tp=lf(`message-square`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]),np=lf(`minimize`,[[`path`,{d:`M8 3v3a2 2 0 0 1-2 2H3`,key:`hohbtr`}],[`path`,{d:`M21 8h-3a2 2 0 0 1-2-2V3`,key:`5jw1f3`}],[`path`,{d:`M3 16h3a2 2 0 0 1 2 2v3`,key:`198tvr`}],[`path`,{d:`M16 21v-3a2 2 0 0 1 2-2h3`,key:`ph8mxp`}]]),rp=lf(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),ip=lf(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),aee=lf(`mouse-pointer-2`,[[`path`,{d:`M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z`,key:`edeuup`}]]),ap=lf(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),op=lf(`picture-in-picture`,[[`path`,{d:`M2 10h6V4`,key:`zwrco`}],[`path`,{d:`m2 4 6 6`,key:`ug085t`}],[`path`,{d:`M21 10V7a2 2 0 0 0-2-2h-7`,key:`git5jr`}],[`path`,{d:`M3 14v2a2 2 0 0 0 2 2h3`,key:`1f7fh3`}],[`rect`,{x:`12`,y:`14`,width:`10`,height:`7`,rx:`1`,key:`1wjs3o`}]]),sp=lf(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),cp=lf(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),lp=lf(`pointer`,[[`path`,{d:`M22 14a8 8 0 0 1-8 8`,key:`56vcr3`}],[`path`,{d:`M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2`,key:`1agjmk`}],[`path`,{d:`M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1`,key:`wdbh2u`}],[`path`,{d:`M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10`,key:`1ibuk9`}],[`path`,{d:`M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`,key:`g6ys72`}]]),up=lf(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),dp=lf(`rocket`,[[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z`,key:`m3kijz`}],[`path`,{d:`m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z`,key:`1fmvmk`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0`,key:`1f8sc4`}],[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}]]),fp=lf(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),pp=lf(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),mp=lf(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),hp=lf(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),gp=lf(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]),_p=lf(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),vp=lf(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),yp=lf(`shield-off`,[[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`,key:`1jlk70`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`,key:`18rp1v`}]]),bp=lf(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),xp=lf(`smartphone`,[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]),Sp=lf(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),Cp=lf(`square-check-big`,[[`path`,{d:`M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344`,key:`2acyp4`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),wp=lf(`square-dashed-mouse-pointer`,[[`path`,{d:`M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z`,key:`xwnzip`}],[`path`,{d:`M5 3a2 2 0 0 0-2 2`,key:`y57alp`}],[`path`,{d:`M19 3a2 2 0 0 1 2 2`,key:`18rm91`}],[`path`,{d:`M5 21a2 2 0 0 1-2-2`,key:`sbafld`}],[`path`,{d:`M9 3h1`,key:`1yesri`}],[`path`,{d:`M9 21h2`,key:`1qve2z`}],[`path`,{d:`M14 3h1`,key:`1ec4yj`}],[`path`,{d:`M3 9v1`,key:`1r0deq`}],[`path`,{d:`M21 9v2`,key:`p14lih`}],[`path`,{d:`M3 14v1`,key:`vnatye`}]]),Tp=lf(`square-pen`,[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]]),Ep=lf(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),Dp=lf(`sun-dim`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 4h.01`,key:`1ujb9j`}],[`path`,{d:`M20 12h.01`,key:`1ykeid`}],[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M4 12h.01`,key:`158zrr`}],[`path`,{d:`M17.657 6.343h.01`,key:`31pqzk`}],[`path`,{d:`M17.657 17.657h.01`,key:`jehnf4`}],[`path`,{d:`M6.343 17.657h.01`,key:`gdk6ow`}],[`path`,{d:`M6.343 6.343h.01`,key:`1uurf0`}]]),Op=lf(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),kp=lf(`tablet`,[[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`,ry:`2`,key:`76otgf`}],[`line`,{x1:`12`,x2:`12.01`,y1:`18`,y2:`18`,key:`1dp563`}]]),Ap=lf(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),jp=lf(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),Mp=lf(`trash`,[[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),Np=lf(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),Pp=lf(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),Fp=lf(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),Ip=Object.freeze({status:`aborted`});function W(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 Lp=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Rp=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}},zp={};function Bp(e){return e&&Object.assign(zp,e),zp}function Vp(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 Hp(e,t){return typeof t==`bigint`?t.toString():t}function Up(e){return{get value(){{let t=e();return Object.defineProperty(this,`value`,{value:t}),t}throw Error(`cached value already set`)}}}function Wp(e){return e==null}function Gp(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function oee(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=t.toString(),i=(r.split(`.`)[1]||``).length;if(i===0&&/\d?e-\d?/.test(r)){let e=r.match(/\d?e-(\d?)/);e?.[1]&&(i=Number.parseInt(e[1]))}let a=n>i?n:i;return Number.parseInt(e.toFixed(a).replace(`.`,``))%Number.parseInt(t.toFixed(a).replace(`.`,``))/10**a}var see=Symbol(`evaluating`);function Kp(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==see)return r===void 0&&(r=see,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function qp(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function Jp(...e){let t={};for(let n of e)Object.assign(t,Object.getOwnPropertyDescriptors(n));return Object.defineProperties({},t)}function cee(e){return JSON.stringify(e)}function lee(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var uee=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function Yp(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var dee=Up(()=>{if(typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function Xp(e){if(Yp(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return!(Yp(n)===!1||Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)===!1)}function fee(e){return Xp(e)?{...e}:Array.isArray(e)?[...e]:e}var pee=new Set([`string`,`number`,`symbol`]);function Zp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Qp(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function $p(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 mee(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var hee={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function gee(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 Qp(e,Jp(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 qp(this,`shape`,e),e},checks:[]}))}function _ee(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 Qp(e,Jp(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 qp(this,`shape`,r),r},checks:[]}))}function vee(e,t){if(!Xp(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 Qp(e,Jp(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return qp(this,`shape`,n),n}}))}function yee(e,t){if(!Xp(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return Qp(e,Jp(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return qp(this,`shape`,n),n}}))}function bee(e,t){return Qp(e,Jp(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return qp(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:[]}))}function xee(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 Qp(t,Jp(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 qp(this,`shape`,i),i},checks:[]}))}function See(e,t,n){return Qp(t,Jp(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 qp(this,`shape`,i),i}}))}function em(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 tm(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function nm(e){return typeof e==`string`?e:e?.message}function rm(e,t,n){let r={...e,path:e.path??[]};return e.message||(r.message=nm(e.inst?._zod.def?.error?.(e))??nm(t?.error?.(e))??nm(n.customError?.(e))??nm(n.localeError?.(e))??`Invalid input`),delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function im(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function am(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var om=(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,Hp,2),Object.defineProperty(e,`toString`,{value:()=>e.message,enumerable:!1})},sm=W(`$ZodError`,om),cm=W(`$ZodError`,om,{Parent:Error});function Cee(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 wee(e,t=e=>e.message){let n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`&&i.errors.length)i.errors.map(e=>r({issues:e}));else if(i.code===`invalid_key`)r({issues:i.issues});else if(i.code===`invalid_element`)r({issues:i.issues});else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;r<i.path.length;){let n=i.path[r];r===i.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(i))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(e),n}var lm=e=>(t,n,r,i)=>{let a=r?Object.assign(r,{async:!1}):{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new Lp;if(o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>rm(e,a,Bp())));throw uee(t,i?.callee),t}return o.value},um=e=>async(t,n,r,i)=>{let a=r?Object.assign(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=>rm(e,a,Bp())));throw uee(t,i?.callee),t}return o.value},dm=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 Lp;return a.issues.length?{success:!1,error:new(e??sm)(a.issues.map(e=>rm(e,i,Bp())))}:{success:!0,data:a.value}},Tee=dm(cm),fm=e=>async(t,n,r)=>{let i=r?Object.assign(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=>rm(e,i,Bp())))}:{success:!0,data:a.value}},Eee=fm(cm),Dee=e=>(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return lm(e)(t,n,i)},Oee=e=>(t,n,r)=>lm(e)(t,n,r),kee=e=>async(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return um(e)(t,n,i)},Aee=e=>async(t,n,r)=>um(e)(t,n,r),jee=e=>(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return dm(e)(t,n,i)},Mee=e=>(t,n,r)=>dm(e)(t,n,r),Nee=e=>async(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return fm(e)(t,n,i)},Pee=e=>async(t,n,r)=>fm(e)(t,n,r),Fee=/^[cC][^\s-]{8,}$/,Iee=/^[0-9a-z]+$/,Lee=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Ree=/^[0-9a-vA-V]{20}$/,zee=/^[A-Za-z0-9]{27}$/,Bee=/^[a-zA-Z0-9_-]{21}$/,Vee=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Hee=/^([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})$/,pm=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)$/,Uee=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Wee=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function Gee(){return new RegExp(Wee,`u`)}var Kee=/^(?:(?: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])$/,qee=/^(([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}|:))$/,Jee=/^((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])$/,Yee=/^(([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])$/,Xee=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,mm=/^[A-Za-z0-9_-]*$/,Zee=/^\+[1-9]\d{6,14}$/,hm=`(?:(?:\\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])))`,Qee=RegExp(`^${hm}$`);function gm(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 $ee(e){return RegExp(`^${gm(e)}$`)}function ete(e){let t=gm({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(`^${hm}T(?:${r})$`)}var tte=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},nte=/^-?\d+$/,_m=/^-?\d+(?:\.\d+)?$/,rte=/^(?:true|false)$/i,ite=/^null$/i,ate=/^[^A-Z]*$/,ote=/^[^a-z]*$/,vm=W(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),ym={number:`number`,bigint:`bigint`,object:`date`},bm=W(`$ZodCheckLessThan`,(e,t)=>{vm.init(e,t);let n=ym[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})}}),xm=W(`$ZodCheckGreaterThan`,(e,t)=>{vm.init(e,t);let n=ym[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})}}),ste=W(`$ZodCheckMultipleOf`,(e,t)=>{vm.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):oee(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})}}),cte=W(`$ZodCheckNumberFormat`,(e,t)=>{vm.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=hee[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=nte)}),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})}}),lte=W(`$ZodCheckMaxLength`,(e,t)=>{var n;vm.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Wp(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=im(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),ute=W(`$ZodCheckMinLength`,(e,t)=>{var n;vm.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Wp(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=im(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),dte=W(`$ZodCheckLengthEquals`,(e,t)=>{var n;vm.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Wp(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=im(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})}}),Sm=W(`$ZodCheckStringFormat`,(e,t)=>{var n,r;vm.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=()=>{})}),fte=W(`$ZodCheckRegex`,(e,t)=>{Sm.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})}}),pte=W(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=ate,Sm.init(e,t)}),mte=W(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=ote,Sm.init(e,t)}),hte=W(`$ZodCheckIncludes`,(e,t)=>{vm.init(e,t);let n=Zp(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})}}),gte=W(`$ZodCheckStartsWith`,(e,t)=>{vm.init(e,t);let n=RegExp(`^${Zp(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})}}),_te=W(`$ZodCheckEndsWith`,(e,t)=>{vm.init(e,t);let n=RegExp(`.*${Zp(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})}}),vte=W(`$ZodCheckOverwrite`,(e,t)=>{vm.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),yte=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(`
|
|
340
|
+
`;function Eu(e){if(Array.isArray(e))return e.length===4?e:e.length===3?[...e,1]:Mu;if(typeof e!=`string`)return Mu;let t,n,r,i=1;if(e.startsWith(`#`))[t,n,r,i]=Du(e);else if(e.startsWith(`rgb`))[t,n,r,i]=Ou(e);else if(e.startsWith(`hsl`))[t,n,r,i]=Au(ku(e));else return console.error(`Unsupported color format`,e),Mu;return[ju(t,0,1),ju(n,0,1),ju(r,0,1),ju(i,0,1)]}function Du(e){return e=e.replace(/^#/,``),e.length===3&&(e=e.split(``).map(e=>e+e).join(``)),e.length===6&&(e+=`ff`),[parseInt(e.slice(0,2),16)/255,parseInt(e.slice(2,4),16)/255,parseInt(e.slice(4,6),16)/255,parseInt(e.slice(6,8),16)/255]}function Ou(e){let t=e.match(/^rgba?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([0-9.]+))?\s*\)$/i);return t?[parseInt(t[1]??`0`)/255,parseInt(t[2]??`0`)/255,parseInt(t[3]??`0`)/255,t[4]===void 0?1:parseFloat(t[4])]:[0,0,0,1]}function ku(e){let t=e.match(/^hsla?\s*\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(?:,\s*([0-9.]+))?\s*\)$/i);return t?[parseInt(t[1]??`0`),parseInt(t[2]??`0`),parseInt(t[3]??`0`),t[4]===void 0?1:parseFloat(t[4])]:[0,0,0,1]}function Au(e){let[t,n,r,i]=e,a=t/360,o=n/100,s=r/100,c,l,u;if(n===0)c=l=u=s;else{let e=(e,t,n)=>(n<0&&(n+=1),n>1&&--n,n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e),t=s<.5?s*(1+o):s+o-s*o,n=2*s-t;c=e(n,t,a+1/3),l=e(n,t,a),u=e(n,t,a-1/3)}return[c,l,u,i]}var ju=(e,t,n)=>Math.min(Math.max(e,t),n),Mu=[0,0,0,1];function Nu(e){let t=w.useRef(void 0),n=w.useCallback(t=>{let n=e.map(e=>{if(e!=null){if(typeof e==`function`){let n=e,r=n(t);return typeof r==`function`?r:()=>{n(null)}}return e.current=t,()=>{e.current=null}}});return()=>{n.forEach(e=>e?.())}},e);return w.useMemo(()=>e.every(e=>e==null)?null:e=>{t.current&&=(t.current(),void 0),e!=null&&(t.current=n(e))},e)}function Pu(e){if(e.naturalWidth<1024&&e.naturalHeight<1024){if(e.naturalWidth<1||e.naturalHeight<1)return;let t=e.naturalWidth/e.naturalHeight;e.width=Math.round(t>1?1024*t:1024),e.height=Math.round(t>1?1024:1024/t)}}async function Fu(e){let t={},n=[],r=e=>{try{return e.startsWith(`/`)||new URL(e),!0}catch{return!1}},i=e=>{try{return e.startsWith(`/`)?!1:new URL(e,window.location.origin).origin!==window.location.origin}catch{return!1}};return Object.entries(e).forEach(([e,a])=>{if(typeof a==`string`){let o=a||`data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==`;if(!r(o)){console.warn(`Uniform "${e}" has invalid URL "${o}". Skipping image loading.`);return}let s=new Promise((n,r)=>{let a=new Image;i(o)&&(a.crossOrigin=`anonymous`),a.onload=()=>{Pu(a),t[e]=a,n()},a.onerror=()=>{console.error(`Could not set uniforms. Failed to load image at ${o}`),r()},a.src=o});n.push(s)}else a instanceof HTMLImageElement&&Pu(a),t[e]=a}),await Promise.all(n),t}var Iu=(0,w.forwardRef)(function({fragmentShader:e,uniforms:t,webGlContextAttributes:n,speed:r=0,frame:i=0,width:a,height:o,minPixelRatio:s,maxPixelCount:c,mipmaps:l,style:u,...d},f){let[p,m]=(0,w.useState)(!1),h=(0,w.useRef)(null),g=(0,w.useRef)(null),_=(0,w.useRef)(n);return(0,w.useEffect)(()=>((async()=>{let n=await Fu(t);h.current&&!g.current&&(g.current=new pu(h.current,e,n,_.current,r,i,s,c,l),m(!0))})(),()=>{g.current?.dispose(),g.current=null}),[e]),(0,w.useEffect)(()=>{let e=!1;return(async()=>{let n=await Fu(t);e||g.current?.setUniforms(n)})(),()=>{e=!0}},[t,p]),(0,w.useEffect)(()=>{g.current?.setSpeed(r)},[r,p]),(0,w.useEffect)(()=>{g.current?.setMaxPixelCount(c)},[c,p]),(0,w.useEffect)(()=>{g.current?.setMinPixelRatio(s)},[s,p]),(0,w.useEffect)(()=>{g.current?.setFrame(i)},[i,p]),(0,S.jsx)(`div`,{ref:Nu([h,f]),style:a!==void 0||o!==void 0?{width:typeof a==`string`&&isNaN(+a)===!1?+a:a,height:typeof o==`string`&&isNaN(+o)===!1?+o:o,...u}:u,...d})});Iu.displayName=`ShaderMount`;function Lu(e,t){for(let n in e){if(n===`colors`){let n=Array.isArray(e.colors),r=Array.isArray(t.colors);if(!n||!r){if(Object.is(e.colors,t.colors)===!1)return!1;continue}if(e.colors?.length!==t.colors?.length||!e.colors?.every((e,n)=>e===t.colors?.[n]))return!1;continue}if(Object.is(e[n],t[n])===!1)return!1}return!0}var Ru={name:`Default`,params:{...yu,speed:1,frame:0,colors:[`#e0eaff`,`#241d9a`,`#f75092`,`#9f50d3`],distortion:.8,swirl:.1,grainMixer:0,grainOverlay:0}};({...yu}),{...yu},{...yu};var zu=(0,w.memo)(function({speed:e=Ru.params.speed,frame:t=Ru.params.frame,colors:n=Ru.params.colors,distortion:r=Ru.params.distortion,swirl:i=Ru.params.swirl,grainMixer:a=Ru.params.grainMixer,grainOverlay:o=Ru.params.grainOverlay,fit:s=Ru.params.fit,rotation:c=Ru.params.rotation,scale:l=Ru.params.scale,originX:u=Ru.params.originX,originY:d=Ru.params.originY,offsetX:f=Ru.params.offsetX,offsetY:p=Ru.params.offsetY,worldWidth:m=Ru.params.worldWidth,worldHeight:h=Ru.params.worldHeight,...g}){let _={u_colors:n.map(Eu),u_colorsCount:n.length,u_distortion:r,u_swirl:i,u_grainMixer:a,u_grainOverlay:o,u_fit:bu[s],u_rotation:c,u_scale:l,u_offsetX:f,u_offsetY:p,u_originX:u,u_originY:d,u_worldWidth:m,u_worldHeight:h};return(0,S.jsx)(Iu,{...g,speed:e,frame:t,fragmentShader:Tu,uniforms:_})},Lu),Bu=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),Vu=`VisuallyHidden`,Hu=w.forwardRef((e,t)=>(0,S.jsx)(Jt.span,{...e,ref:t,style:{...Bu,...e.style}}));Hu.displayName=Vu;var Uu=Hu,[Wu,nee]=Nt(`Tooltip`,[oa]),Gu=oa(),Ku=`TooltipProvider`,qu=700,Ju=`tooltip.open`,[Yu,Xu]=Wu(Ku),Zu=e=>{let{__scopeTooltip:t,delayDuration:n=qu,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=w.useRef(!0),s=w.useRef(!1),c=w.useRef(0);return w.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,S.jsx)(Yu,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:w.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:w.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:w.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};Zu.displayName=Ku;var Qu=`Tooltip`,[$u,ed]=Wu(Qu),td=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=Xu(Qu,e.__scopeTooltip),l=Gu(t),[u,d]=w.useState(null),f=In(),p=w.useRef(0),m=o??c.disableHoverableContent,h=s??c.delayDuration,g=w.useRef(!1),[_,v]=Lt({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(Ju))):c.onClose(),a?.(e)},caller:Qu}),y=w.useMemo(()=>_?g.current?`delayed-open`:`instant-open`:`closed`,[_]),b=w.useCallback(()=>{window.clearTimeout(p.current),p.current=0,g.current=!1,v(!0)},[v]),x=w.useCallback(()=>{window.clearTimeout(p.current),p.current=0,v(!1)},[v]),C=w.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>{g.current=!0,v(!0),p.current=0},h)},[h,v]);return w.useEffect(()=>()=>{p.current&&=(window.clearTimeout(p.current),0)},[]),(0,S.jsx)(Sa,{...l,children:(0,S.jsx)($u,{scope:t,contentId:f,open:_,stateAttribute:y,trigger:u,onTriggerChange:d,onTriggerEnter:w.useCallback(()=>{c.isOpenDelayedRef.current?C():b()},[c.isOpenDelayedRef,C,b]),onTriggerLeave:w.useCallback(()=>{m?x():(window.clearTimeout(p.current),p.current=0)},[x,m]),onOpen:b,onClose:x,disableHoverableContent:m,children:n})})};td.displayName=Qu;var nd=`TooltipTrigger`,rd=w.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=ed(nd,n),a=Xu(nd,n),o=Gu(n),s=D(t,w.useRef(null),i.onTriggerChange),c=w.useRef(!1),l=w.useRef(!1),u=w.useCallback(()=>c.current=!1,[]);return w.useEffect(()=>()=>document.removeEventListener(`pointerup`,u),[u]),(0,S.jsx)(Ca,{asChild:!0,...o,children:(0,S.jsx)(Jt.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:s,onPointerMove:jt(e.onPointerMove,e=>{e.pointerType!==`touch`&&!l.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),l.current=!0)}),onPointerLeave:jt(e.onPointerLeave,()=>{i.onTriggerLeave(),l.current=!1}),onPointerDown:jt(e.onPointerDown,()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener(`pointerup`,u,{once:!0})}),onFocus:jt(e.onFocus,()=>{c.current||i.onOpen()}),onBlur:jt(e.onBlur,i.onClose),onClick:jt(e.onClick,i.onClose)})})});rd.displayName=nd;var id=`TooltipPortal`,[ad,od]=Wu(id,{forceMount:void 0}),sd=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=ed(id,t);return(0,S.jsx)(ad,{scope:t,forceMount:n,children:(0,S.jsx)(ka,{present:n||a.open,children:(0,S.jsx)(Da,{asChild:!0,container:i,children:r})})})};sd.displayName=id;var cd=`TooltipContent`,ld=w.forwardRef((e,t)=>{let n=od(cd,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=ed(cd,e.__scopeTooltip);return(0,S.jsx)(ka,{present:r||o.open,children:o.disableHoverableContent?(0,S.jsx)(md,{side:i,...a,ref:t}):(0,S.jsx)(ud,{side:i,...a,ref:t})})}),ud=w.forwardRef((e,t)=>{let n=ed(cd,e.__scopeTooltip),r=Xu(cd,e.__scopeTooltip),i=w.useRef(null),a=D(t,i),[o,s]=w.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=w.useCallback(()=>{s(null),d(!1)},[d]),p=w.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=vd(r,_d(r,n.getBoundingClientRect())),a=yd(t.getBoundingClientRect());s(xd([...i,...a])),d(!0)},[d]);return w.useEffect(()=>()=>f(),[f]),w.useEffect(()=>{if(c&&u){let e=e=>p(e,u),t=e=>p(e,c);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),w.useEffect(()=>{if(o){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!bd(n,o);r?f():i&&(f(),l())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,S.jsx)(md,{...e,ref:a})}),[dd,fd]=Wu(Qu,{isInside:!1}),pd=Wt(`TooltipContent`),md=w.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=ed(cd,n),l=Gu(n),{onClose:u}=c;return w.useEffect(()=>(document.addEventListener(Ju,u),()=>document.removeEventListener(Ju,u)),[u]),w.useEffect(()=>{if(c.trigger){let e=e=>{e.target?.contains(c.trigger)&&u()};return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[c.trigger,u]),(0,S.jsx)(cn,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,S.jsxs)(wa,{"data-state":c.stateAttribute,...l,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,S.jsx)(pd,{children:r}),(0,S.jsx)(dd,{scope:n,isInside:!0,children:(0,S.jsx)(Uu,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});ld.displayName=cd;var hd=`TooltipArrow`,gd=w.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=Gu(n);return fd(hd,n).isInside?null:(0,S.jsx)(Ta,{...i,...r,ref:t})});gd.displayName=hd;function _d(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function vd(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function yd(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function bd(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function xd(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:+(e.y>t.y)),Sd(t)}function Sd(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var ree=Zu,Cd=td,wd=rd,Td=sd,Ed=ld,Dd=gd;function Od({delayDuration:e=0,...t}){return(0,S.jsx)(ree,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function kd({...e}){return(0,S.jsx)(Od,{children:(0,S.jsx)(Cd,{"data-slot":`tooltip`,...e})})}function Ad({...e}){return(0,S.jsx)(wd,{"data-slot":`tooltip-trigger`,...e})}function jd({className:e,sideOffset:t=0,children:n,...r}){return(0,S.jsx)(Td,{children:(0,S.jsxs)(Ed,{"data-slot":`tooltip-content`,sideOffset:t,className:H(`bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-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 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance`,e),...r,children:[n,(0,S.jsx)(Dd,{className:`bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]`})]})})}var Md=class{name=`mcp_inspector_open`;properties;constructor(e){this.properties={server_url:e.serverUrl,connection_count:e.connectionCount}}},Nd=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}}},Pd=class{name=`mcp_resource_read`;properties;constructor(e){this.properties={resource_uri:e.resourceUri,server_id:e.serverId,success:e.success,error:e.error}}},Fd=class{name=`mcp_prompt_call`;properties;constructor(e){this.properties={prompt_name:e.promptName,server_id:e.serverId,success:e.success,error:e.error}}},Id=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}}},Ld=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}}},Rd=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}}},zd=class{name=`mcp_server_removed`;properties;constructor(e){this.properties={server_id:e.serverId}}},Bd=class{name=`mcp_command_palette_open`;properties;constructor(e){this.properties={trigger:e.trigger}}},Vd=class{name=`mcp_tool_saved`;properties;constructor(e){this.properties={tool_name:e.toolName,server_id:e.serverId}}},Hd=class{name=`mcp_tunnel_action`;properties;constructor(e){this.properties={action:e.action,success:e.success,tunnel_url:e.tunnelUrl}}},Ud=class{name=`mcp_deploy_click`;properties;constructor(e){this.properties={referrer:e.referrer}}},Wd=class{name=`mcp_chat_configured`;properties;constructor(e){this.properties={provider:e.provider,model:e.model}}},Gd=class{name=`mcp_tab_navigation`;properties;constructor(e){this.properties={tab:e.tab,previous_tab:e.previousTab}}},Kd=class{name=`mcp_add_to_client`;properties;constructor(e){this.properties={client:e.client}}},qd=class{name=`mcp_session_duration`;properties;constructor(e){this.properties={duration_seconds:e.durationSeconds,tabs_visited:e.tabsVisited,tools_executed:e.toolsExecuted}}};function Jd(){try{return`10.0.0-canary.0`}catch{return`0.0.0`}}function Yd(){try{return typeof window<`u`&&typeof document<`u`}catch{return!1}}var Xd=class{endpoint;timeout;constructor(e,t=3e3){this.endpoint=e,this.timeout=t}async logEvent(e){try{let t=new AbortController,n=setTimeout(()=>t.abort(),this.timeout),r=await fetch(this.endpoint,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:t.signal});if(clearTimeout(n),!r.ok)throw Error(`HTTP error! status: ${r.status}`)}catch{}}};function Zd(e){return`mcp_inspector_telemetry_${e}`}function Qd(){if(typeof window>`u`)return`standalone`;let e=window.__MCP_INSPECTOR_MODE__;return e===`standalone`||e===`embedded`||e===`cloud`?e:`standalone`}function $d(){return typeof localStorage<`u`&&typeof localStorage.getItem==`function`&&typeof localStorage.setItem==`function`}var ef=class e{static instance=null;POSTHOG_PROXY_URL=`/inspector/api/tel/posthog`;SCARF_PROXY_URL=`/inspector/api/tel/scarf`;UNKNOWN_USER_ID=`UNKNOWN_USER_ID`;_currUserId=null;_posthogClient=null;_scarfClient=null;_source=`inspector`;_mode=`standalone`;constructor(){let e=Yd(),t=this.isTelemetryDisabled();if(this._source=this.getStoredSource()||`inspector`,this._mode=Qd(),t)this._posthogClient=null,this._scarfClient=null;else if(!e)this._posthogClient=null,this._scarfClient=null;else{try{this._posthogClient=new Xd(this.POSTHOG_PROXY_URL,3e3)}catch{this._posthogClient=null}try{this._scarfClient=new Xd(this.SCARF_PROXY_URL,3e3)}catch{this._scarfClient=null}}}isTelemetryDisabled(){return!!(typeof window<`u`&&window.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||$d()&&localStorage.getItem(Zd(`disabled`))===`true`||typeof process<`u`&&{}?.MCP_USE_ANONYMIZED_TELEMETRY===`false`)}getStoredSource(){return $d()?localStorage.getItem(Zd(`source`)):null}static getInstance(){return e.instance||=new e,e.instance}setSource(e){this._source=e,$d()&&localStorage.setItem(Zd(`source`),e)}getSource(){return this._source}getMode(){return this._mode}get userId(){if(this._currUserId)return this._currUserId;if(!Yd())return this._currUserId=this.UNKNOWN_USER_ID,this._currUserId;try{if(!$d())throw Error(`localStorage is not available or not functional`);let e=localStorage.getItem(Zd(`user_id`));if(e)this._currUserId=e;else{let e=this.generateUserId();localStorage.setItem(Zd(`user_id`),e),this._currUserId=e}this.trackPackageDownload({triggered_by:`user_id_property`}).catch(()=>{})}catch{this._currUserId=this.UNKNOWN_USER_ID}return this._currUserId}generateUserId(){let e=window.crypto;if(e){let t=new Uint8Array(16);e.getRandomValues(t),t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=Array.from(t).map(e=>e.toString(16).padStart(2,`0`)).join(``);return n.slice(0,8)+`-`+n.slice(8,12)+`-`+n.slice(12,16)+`-`+n.slice(16,20)+`-`+n.slice(20,32)}else return`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)})}async capture(e){if(!(!this._posthogClient&&!this._scarfClient)){if(this._posthogClient)try{let t={event:e.name,user_id:this.userId,properties:{...e.properties,mcp_use_version:Jd(),language:`typescript`,source:this._source,package:`inspector`,mode:this._mode}};await this._posthogClient.logEvent(t)}catch{}if(this._scarfClient)try{let t={};t.mcp_use_version=Jd(),t.user_id=this.userId,t.event=e.name,t.language=`typescript`,t.source=this._source,t.package=`inspector`,t.mode=this._mode,await this._scarfClient.logEvent(t)}catch{}}}async trackPackageDownload(e){if(this._scarfClient&&Yd())try{if(!$d())throw Error(`localStorage is not available or not functional`);let t=Jd(),n=!1,r=!1,i=localStorage.getItem(Zd(`download_version`));if(i?t>i&&(n=!0,r=!1,localStorage.setItem(Zd(`download_version`),t)):(n=!0,r=!0,localStorage.setItem(Zd(`download_version`),t)),n){let n={...e||{}};n.mcp_use_version=t,n.user_id=this.userId,n.event=`package_download`,n.first_download=r,n.language=`typescript`,n.source=this._source,n.package=`inspector`,n.mode=this._mode,await this._scarfClient.logEvent(n)}}catch{}}async trackInspectorOpen(e){let t=new Md(e);await this.capture(t)}},tf=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),nf=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),rf=e=>{let t=nf(e);return t.charAt(0).toUpperCase()+t.slice(1)},af=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),of=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0},sf={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`},cf=(0,w.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>(0,w.createElement)(`svg`,{ref:c,...sf,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:af(`lucide`,i),...!a&&!of(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,w.createElement)(e,t)),...Array.isArray(a)?a:[a]])),lf=(e,t)=>{let n=(0,w.forwardRef)(({className:n,...r},i)=>(0,w.createElement)(cf,{ref:i,iconNode:t,className:af(`lucide-${tf(rf(e))}`,`lucide-${e}`,n),...r}));return n.displayName=rf(e),n},uf=lf(`arrow-down-to-line`,[[`path`,{d:`M12 17V3`,key:`1cwfxf`}],[`path`,{d:`m6 11 6 6 6-6`,key:`12ii2o`}],[`path`,{d:`M19 21H5`,key:`150jfl`}]]),df=lf(`arrow-up-from-line`,[[`path`,{d:`m18 9-6-6-6 6`,key:`kcunyi`}],[`path`,{d:`M12 3v14`,key:`7cf3v8`}],[`path`,{d:`M5 21h14`,key:`11awu3`}]]),ff=lf(`arrow-up-right`,[[`path`,{d:`M7 7h10v10`,key:`1tivn9`}],[`path`,{d:`M7 17 17 7`,key:`1vkiza`}]]),iee=lf(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),pf=lf(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),mf=lf(`braces`,[[`path`,{d:`M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1`,key:`ezmyqa`}],[`path`,{d:`M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1`,key:`e1hn23`}]]),hf=lf(`brush-cleaning`,[[`path`,{d:`m16 22-1-4`,key:`1ow2iv`}],[`path`,{d:`M19 14a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2h-3a1 1 0 0 1-1-1V4a2 2 0 0 0-4 0v5a1 1 0 0 1-1 1H6a2 2 0 0 0-2 2v1a1 1 0 0 0 1 1`,key:`11gii7`}],[`path`,{d:`M19 14H5l-1.973 6.767A1 1 0 0 0 4 22h16a1 1 0 0 0 .973-1.233z`,key:`bju7h4`}],[`path`,{d:`m8 22 1-4`,key:`s3unb`}]]),gf=lf(`brush`,[[`path`,{d:`m11 10 3 3`,key:`fzmg1i`}],[`path`,{d:`M6.5 21A3.5 3.5 0 1 0 3 17.5a2.62 2.62 0 0 1-.708 1.792A1 1 0 0 0 3 21z`,key:`p4q2r7`}],[`path`,{d:`M9.969 17.031 21.378 5.624a1 1 0 0 0-3.002-3.002L6.967 14.031`,key:`wy6l02`}]]),_f=lf(`bug`,[[`path`,{d:`M12 20v-9`,key:`1qisl0`}],[`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`,key:`uouzyp`}],[`path`,{d:`M14.12 3.88 16 2`,key:`qol33r`}],[`path`,{d:`M21 21a4 4 0 0 0-3.81-4`,key:`1b0z45`}],[`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`,key:`5cxbf6`}],[`path`,{d:`M22 13h-4`,key:`1jl80f`}],[`path`,{d:`M3 21a4 4 0 0 1 3.81-4`,key:`1fjd4g`}],[`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`,key:`1d7oge`}],[`path`,{d:`M6 13H2`,key:`82j7cp`}],[`path`,{d:`m8 2 1.88 1.88`,key:`fmnt4t`}],[`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`,key:`1vgav8`}]]),vf=lf(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),yf=lf(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),bf=lf(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),xf=lf(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),Sf=lf(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),Cf=lf(`chevrons-left-right-ellipsis`,[[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}],[`path`,{d:`m17 7 5 5-5 5`,key:`1xlxn0`}],[`path`,{d:`m7 7-5 5 5 5`,key:`19njba`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}]]),wf=lf(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),Tf=lf(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),Ef=lf(`circle-minus`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}]]),Df=lf(`clock`,[[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),Of=lf(`code`,[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]),kf=lf(`cog`,[[`path`,{d:`M11 10.27 7 3.34`,key:`16pf9h`}],[`path`,{d:`m11 13.73-4 6.93`,key:`794ttg`}],[`path`,{d:`M12 22v-2`,key:`1osdcq`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14 12h8`,key:`4f43i9`}],[`path`,{d:`m17 20.66-1-1.73`,key:`eq3orb`}],[`path`,{d:`m17 3.34-1 1.73`,key:`2wel8s`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`m20.66 17-1.73-1`,key:`sg0v6f`}],[`path`,{d:`m20.66 7-1.73 1`,key:`1ow05n`}],[`path`,{d:`m3.34 17 1.73-1`,key:`nuk764`}],[`path`,{d:`m3.34 7 1.73 1`,key:`1ulond`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`circle`,{cx:`12`,cy:`12`,r:`8`,key:`46899m`}]]),Af=lf(`command`,[[`path`,{d:`M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3`,key:`11bfej`}]]),jf=lf(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),Mf=lf(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),Nf=lf(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),Pf=lf(`ellipsis-vertical`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`5`,r:`1`,key:`gxeob9`}],[`circle`,{cx:`12`,cy:`19`,r:`1`,key:`lyex9k`}]]),Ff=lf(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),If=lf(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Lf=lf(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Rf=lf(`file-code`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12.5 8 15l2 2.5`,key:`1tg20x`}],[`path`,{d:`m14 12.5 2 2.5-2 2.5`,key:`yinavb`}]]),zf=lf(`file-image`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`10`,cy:`12`,r:`2`,key:`737tya`}],[`path`,{d:`m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22`,key:`wt3hpn`}]]),Bf=lf(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),Vf=lf(`file`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]),Hf=lf(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]),Uf=lf(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),Wf=lf(`grip-vertical`,[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]),Gf=lf(`hash`,[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`,key:`4lhtct`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`,key:`vyu0kd`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`,key:`1ggp8o`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`,key:`weycgp`}]]),Kf=lf(`history`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}],[`path`,{d:`M12 7v5l4 2`,key:`1fdv2h`}]]),qf=lf(`image`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]),Jf=lf(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),Yf=lf(`key`,[[`path`,{d:`m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4`,key:`g0fldk`}],[`path`,{d:`m21 2-9.6 9.6`,key:`1j0ho8`}],[`circle`,{cx:`7.5`,cy:`15.5`,r:`5.5`,key:`yqb3hr`}]]),Xf=lf(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),Zf=lf(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),Qf=lf(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),$f=lf(`maximize`,[[`path`,{d:`M8 3H5a2 2 0 0 0-2 2v3`,key:`1dcmit`}],[`path`,{d:`M21 8V5a2 2 0 0 0-2-2h-3`,key:`1e4gt3`}],[`path`,{d:`M3 16v3a2 2 0 0 0 2 2h3`,key:`wsl5sc`}],[`path`,{d:`M16 21h3a2 2 0 0 0 2-2v-3`,key:`18trek`}]]),ep=lf(`message-circle`,[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}]]),tp=lf(`message-square`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]),np=lf(`minimize`,[[`path`,{d:`M8 3v3a2 2 0 0 1-2 2H3`,key:`hohbtr`}],[`path`,{d:`M21 8h-3a2 2 0 0 1-2-2V3`,key:`5jw1f3`}],[`path`,{d:`M3 16h3a2 2 0 0 1 2 2v3`,key:`198tvr`}],[`path`,{d:`M16 21v-3a2 2 0 0 1 2-2h3`,key:`ph8mxp`}]]),rp=lf(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),ip=lf(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),aee=lf(`mouse-pointer-2`,[[`path`,{d:`M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z`,key:`edeuup`}]]),ap=lf(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),op=lf(`picture-in-picture`,[[`path`,{d:`M2 10h6V4`,key:`zwrco`}],[`path`,{d:`m2 4 6 6`,key:`ug085t`}],[`path`,{d:`M21 10V7a2 2 0 0 0-2-2h-7`,key:`git5jr`}],[`path`,{d:`M3 14v2a2 2 0 0 0 2 2h3`,key:`1f7fh3`}],[`rect`,{x:`12`,y:`14`,width:`10`,height:`7`,rx:`1`,key:`1wjs3o`}]]),sp=lf(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),cp=lf(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),lp=lf(`pointer`,[[`path`,{d:`M22 14a8 8 0 0 1-8 8`,key:`56vcr3`}],[`path`,{d:`M18 11v-1a2 2 0 0 0-2-2a2 2 0 0 0-2 2`,key:`1agjmk`}],[`path`,{d:`M14 10V9a2 2 0 0 0-2-2a2 2 0 0 0-2 2v1`,key:`wdbh2u`}],[`path`,{d:`M10 9.5V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v10`,key:`1ibuk9`}],[`path`,{d:`M18 11a2 2 0 1 1 4 0v3a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`,key:`g6ys72`}]]),up=lf(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),dp=lf(`rocket`,[[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z`,key:`m3kijz`}],[`path`,{d:`m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z`,key:`1fmvmk`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0`,key:`1f8sc4`}],[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}]]),fp=lf(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),pp=lf(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),mp=lf(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),hp=lf(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),gp=lf(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]),_p=lf(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),vp=lf(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),yp=lf(`shield-off`,[[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`,key:`1jlk70`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`,key:`18rp1v`}]]),bp=lf(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),xp=lf(`smartphone`,[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]),Sp=lf(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),Cp=lf(`square-check-big`,[[`path`,{d:`M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344`,key:`2acyp4`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),wp=lf(`square-dashed-mouse-pointer`,[[`path`,{d:`M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z`,key:`xwnzip`}],[`path`,{d:`M5 3a2 2 0 0 0-2 2`,key:`y57alp`}],[`path`,{d:`M19 3a2 2 0 0 1 2 2`,key:`18rm91`}],[`path`,{d:`M5 21a2 2 0 0 1-2-2`,key:`sbafld`}],[`path`,{d:`M9 3h1`,key:`1yesri`}],[`path`,{d:`M9 21h2`,key:`1qve2z`}],[`path`,{d:`M14 3h1`,key:`1ec4yj`}],[`path`,{d:`M3 9v1`,key:`1r0deq`}],[`path`,{d:`M21 9v2`,key:`p14lih`}],[`path`,{d:`M3 14v1`,key:`vnatye`}]]),Tp=lf(`square-pen`,[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]]),Ep=lf(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),Dp=lf(`sun-dim`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 4h.01`,key:`1ujb9j`}],[`path`,{d:`M20 12h.01`,key:`1ykeid`}],[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M4 12h.01`,key:`158zrr`}],[`path`,{d:`M17.657 6.343h.01`,key:`31pqzk`}],[`path`,{d:`M17.657 17.657h.01`,key:`jehnf4`}],[`path`,{d:`M6.343 17.657h.01`,key:`gdk6ow`}],[`path`,{d:`M6.343 6.343h.01`,key:`1uurf0`}]]),Op=lf(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),kp=lf(`tablet`,[[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`,ry:`2`,key:`76otgf`}],[`line`,{x1:`12`,x2:`12.01`,y1:`18`,y2:`18`,key:`1dp563`}]]),Ap=lf(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),jp=lf(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),Mp=lf(`trash`,[[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),Np=lf(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),Pp=lf(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),Fp=lf(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),Ip=Object.freeze({status:`aborted`});function W(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 Lp=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Rp=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}},zp={};function Bp(e){return e&&Object.assign(zp,e),zp}function Vp(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 Hp(e,t){return typeof t==`bigint`?t.toString():t}function Up(e){return{get value(){{let t=e();return Object.defineProperty(this,`value`,{value:t}),t}throw Error(`cached value already set`)}}}function Wp(e){return e==null}function Gp(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function oee(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=t.toString(),i=(r.split(`.`)[1]||``).length;if(i===0&&/\d?e-\d?/.test(r)){let e=r.match(/\d?e-(\d?)/);e?.[1]&&(i=Number.parseInt(e[1]))}let a=n>i?n:i;return Number.parseInt(e.toFixed(a).replace(`.`,``))%Number.parseInt(t.toFixed(a).replace(`.`,``))/10**a}var see=Symbol(`evaluating`);function Kp(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==see)return r===void 0&&(r=see,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function qp(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function Jp(...e){let t={};for(let n of e)Object.assign(t,Object.getOwnPropertyDescriptors(n));return Object.defineProperties({},t)}function cee(e){return JSON.stringify(e)}function lee(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var uee=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function Yp(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var dee=Up(()=>{if(typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function Xp(e){if(Yp(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return!(Yp(n)===!1||Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)===!1)}function fee(e){return Xp(e)?{...e}:Array.isArray(e)?[...e]:e}var pee=new Set([`string`,`number`,`symbol`]);function Zp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Qp(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function $p(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 mee(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var hee={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function gee(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 Qp(e,Jp(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 qp(this,`shape`,e),e},checks:[]}))}function _ee(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 Qp(e,Jp(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 qp(this,`shape`,r),r},checks:[]}))}function vee(e,t){if(!Xp(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 Qp(e,Jp(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return qp(this,`shape`,n),n}}))}function yee(e,t){if(!Xp(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return Qp(e,Jp(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return qp(this,`shape`,n),n}}))}function bee(e,t){return Qp(e,Jp(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return qp(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:[]}))}function xee(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 Qp(t,Jp(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 qp(this,`shape`,i),i},checks:[]}))}function See(e,t,n){return Qp(t,Jp(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 qp(this,`shape`,i),i}}))}function em(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 tm(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function nm(e){return typeof e==`string`?e:e?.message}function rm(e,t,n){let r={...e,path:e.path??[]};return e.message||(r.message=nm(e.inst?._zod.def?.error?.(e))??nm(t?.error?.(e))??nm(n.customError?.(e))??nm(n.localeError?.(e))??`Invalid input`),delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function im(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function am(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var om=(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,Hp,2),Object.defineProperty(e,`toString`,{value:()=>e.message,enumerable:!1})},sm=W(`$ZodError`,om),cm=W(`$ZodError`,om,{Parent:Error});function Cee(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 wee(e,t=e=>e.message){let n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`&&i.errors.length)i.errors.map(e=>r({issues:e}));else if(i.code===`invalid_key`)r({issues:i.issues});else if(i.code===`invalid_element`)r({issues:i.issues});else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;r<i.path.length;){let n=i.path[r];r===i.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(i))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(e),n}var lm=e=>(t,n,r,i)=>{let a=r?Object.assign(r,{async:!1}):{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new Lp;if(o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>rm(e,a,Bp())));throw uee(t,i?.callee),t}return o.value},um=e=>async(t,n,r,i)=>{let a=r?Object.assign(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=>rm(e,a,Bp())));throw uee(t,i?.callee),t}return o.value},dm=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 Lp;return a.issues.length?{success:!1,error:new(e??sm)(a.issues.map(e=>rm(e,i,Bp())))}:{success:!0,data:a.value}},Tee=dm(cm),fm=e=>async(t,n,r)=>{let i=r?Object.assign(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=>rm(e,i,Bp())))}:{success:!0,data:a.value}},Eee=fm(cm),Dee=e=>(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return lm(e)(t,n,i)},Oee=e=>(t,n,r)=>lm(e)(t,n,r),kee=e=>async(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return um(e)(t,n,i)},Aee=e=>async(t,n,r)=>um(e)(t,n,r),jee=e=>(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return dm(e)(t,n,i)},Mee=e=>(t,n,r)=>dm(e)(t,n,r),Nee=e=>async(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return fm(e)(t,n,i)},Pee=e=>async(t,n,r)=>fm(e)(t,n,r),Fee=/^[cC][^\s-]{8,}$/,Iee=/^[0-9a-z]+$/,Lee=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Ree=/^[0-9a-vA-V]{20}$/,zee=/^[A-Za-z0-9]{27}$/,Bee=/^[a-zA-Z0-9_-]{21}$/,Vee=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Hee=/^([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})$/,pm=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)$/,Uee=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Wee=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function Gee(){return new RegExp(Wee,`u`)}var Kee=/^(?:(?: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])$/,qee=/^(([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}|:))$/,Jee=/^((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])$/,Yee=/^(([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])$/,Xee=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,mm=/^[A-Za-z0-9_-]*$/,Zee=/^\+[1-9]\d{6,14}$/,hm=`(?:(?:\\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])))`,Qee=RegExp(`^${hm}$`);function gm(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 $ee(e){return RegExp(`^${gm(e)}$`)}function ete(e){let t=gm({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(`^${hm}T(?:${r})$`)}var tte=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},nte=/^-?\d+$/,_m=/^-?\d+(?:\.\d+)?$/,rte=/^(?:true|false)$/i,ite=/^null$/i,ate=/^[^A-Z]*$/,ote=/^[^a-z]*$/,vm=W(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),ym={number:`number`,bigint:`bigint`,object:`date`},bm=W(`$ZodCheckLessThan`,(e,t)=>{vm.init(e,t);let n=ym[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})}}),xm=W(`$ZodCheckGreaterThan`,(e,t)=>{vm.init(e,t);let n=ym[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})}}),ste=W(`$ZodCheckMultipleOf`,(e,t)=>{vm.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):oee(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})}}),cte=W(`$ZodCheckNumberFormat`,(e,t)=>{vm.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=hee[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=nte)}),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})}}),lte=W(`$ZodCheckMaxLength`,(e,t)=>{var n;vm.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Wp(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=im(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),ute=W(`$ZodCheckMinLength`,(e,t)=>{var n;vm.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Wp(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=im(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),dte=W(`$ZodCheckLengthEquals`,(e,t)=>{var n;vm.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!Wp(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=im(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})}}),Sm=W(`$ZodCheckStringFormat`,(e,t)=>{var n,r;vm.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=()=>{})}),fte=W(`$ZodCheckRegex`,(e,t)=>{Sm.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})}}),pte=W(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=ate,Sm.init(e,t)}),mte=W(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=ote,Sm.init(e,t)}),hte=W(`$ZodCheckIncludes`,(e,t)=>{vm.init(e,t);let n=Zp(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})}}),gte=W(`$ZodCheckStartsWith`,(e,t)=>{vm.init(e,t);let n=RegExp(`^${Zp(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})}}),_te=W(`$ZodCheckEndsWith`,(e,t)=>{vm.init(e,t);let n=RegExp(`.*${Zp(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})}}),vte=W(`$ZodCheckOverwrite`,(e,t)=>{vm.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),yte=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(`
|
|
341
341
|
`).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(`
|
|
342
342
|
`))}},bte={major:4,minor:3,patch:5},Cm=W(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=bte;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=em(e),i;for(let a of t){if(a._zod.def.when){if(!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 Lp;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=em(e,t))});else{if(e.issues.length===t)continue;r||=em(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if(em(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new Lp;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 Lp;return o.then(e=>t(e,r,a))}return t(o,r,a)}}Kp(e,`~standard`,()=>({validate:t=>{try{let n=Tee(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return Eee(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),wm=W(`$ZodString`,(e,t)=>{Cm.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??tte(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}}),Tm=W(`$ZodStringFormat`,(e,t)=>{Sm.init(e,t),wm.init(e,t)}),xte=W(`$ZodGUID`,(e,t)=>{t.pattern??=Hee,Tm.init(e,t)}),Ste=W(`$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??=pm(e)}else t.pattern??=pm();Tm.init(e,t)}),Cte=W(`$ZodEmail`,(e,t)=>{t.pattern??=Uee,Tm.init(e,t)}),wte=W(`$ZodURL`,(e,t)=>{Tm.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),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})}}}),Tte=W(`$ZodEmoji`,(e,t)=>{t.pattern??=Gee(),Tm.init(e,t)}),Ete=W(`$ZodNanoID`,(e,t)=>{t.pattern??=Bee,Tm.init(e,t)}),Dte=W(`$ZodCUID`,(e,t)=>{t.pattern??=Fee,Tm.init(e,t)}),Ote=W(`$ZodCUID2`,(e,t)=>{t.pattern??=Iee,Tm.init(e,t)}),kte=W(`$ZodULID`,(e,t)=>{t.pattern??=Lee,Tm.init(e,t)}),Ate=W(`$ZodXID`,(e,t)=>{t.pattern??=Ree,Tm.init(e,t)}),jte=W(`$ZodKSUID`,(e,t)=>{t.pattern??=zee,Tm.init(e,t)}),Mte=W(`$ZodISODateTime`,(e,t)=>{t.pattern??=ete(t),Tm.init(e,t)}),Nte=W(`$ZodISODate`,(e,t)=>{t.pattern??=Qee,Tm.init(e,t)}),Pte=W(`$ZodISOTime`,(e,t)=>{t.pattern??=$ee(t),Tm.init(e,t)}),Fte=W(`$ZodISODuration`,(e,t)=>{t.pattern??=Vee,Tm.init(e,t)}),Ite=W(`$ZodIPv4`,(e,t)=>{t.pattern??=Kee,Tm.init(e,t),e._zod.bag.format=`ipv4`}),Lte=W(`$ZodIPv6`,(e,t)=>{t.pattern??=qee,Tm.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})}}}),Rte=W(`$ZodCIDRv4`,(e,t)=>{t.pattern??=Jee,Tm.init(e,t)}),zte=W(`$ZodCIDRv6`,(e,t)=>{t.pattern??=Yee,Tm.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 Em(e){if(e===``)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var Bte=W(`$ZodBase64`,(e,t)=>{t.pattern??=Xee,Tm.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{Em(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function Vte(e){if(!mm.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return Em(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var Hte=W(`$ZodBase64URL`,(e,t)=>{t.pattern??=mm,Tm.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{Vte(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),Ute=W(`$ZodE164`,(e,t)=>{t.pattern??=Zee,Tm.init(e,t)});function Wte(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 Gte=W(`$ZodJWT`,(e,t)=>{Tm.init(e,t),e._zod.check=n=>{Wte(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),Dm=W(`$ZodNumber`,(e,t)=>{Cm.init(e,t),e._zod.pattern=e._zod.bag.pattern??_m,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}}),Kte=W(`$ZodNumberFormat`,(e,t)=>{cte.init(e,t),Dm.init(e,t)}),qte=W(`$ZodBoolean`,(e,t)=>{Cm.init(e,t),e._zod.pattern=rte,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}}),Jte=W(`$ZodNull`,(e,t)=>{Cm.init(e,t),e._zod.pattern=ite,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}}),Yte=W(`$ZodAny`,(e,t)=>{Cm.init(e,t),e._zod.parse=e=>e}),Xte=W(`$ZodUnknown`,(e,t)=>{Cm.init(e,t),e._zod.parse=e=>e}),Zte=W(`$ZodNever`,(e,t)=>{Cm.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function Om(e,t,n){e.issues.length&&t.issues.push(...tm(n,e.issues)),t.value[n]=e.value}var Qte=W(`$ZodArray`,(e,t)=>{Cm.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=>Om(t,n,e))):Om(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function km(e,t,n,r,i){if(e.issues.length){if(i&&!(n in r))return;t.issues.push(...tm(n,e.issues))}e.value===void 0?n in r&&(t.value[n]=void 0):t.value[n]=e.value}function Am(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=mee(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function jm(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optout===`optional`;for(let i in t){if(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=>km(e,n,i,t,u))):km(a,n,i,t,u)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}var $te=W(`$ZodObject`,(e,t)=>{if(Cm.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=Up(()=>Am(t));Kp(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=Yp,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.optout===`optional`,i=n._zod.run({value:s[e],issues:[]},o);i instanceof Promise?c.push(i.then(n=>km(n,t,e,s,r))):km(i,t,e,s,r)}return i?jm(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),ene=W(`$ZodObjectJIT`,(e,t)=>{$te.init(e,t);let n=e._zod.parse,r=Up(()=>Am(t)),i=e=>{let t=new yte([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=cee(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=cee(r),s=e[r]?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),s?t.write(`
|
|
343
343
|
if (${n}.issues.length) {
|
|
@@ -435,7 +435,7 @@ Note: This type uses \`Record<K, string | undefined>\` rather than \`Partial<Rec
|
|
|
435
435
|
for compatibility with Zod schema generation. Both are functionally equivalent for validation.`);K.object({method:K.literal(`ui/open-link`),params:K.object({url:K.string().describe(`URL to open in the host's browser`)})}),K.object({isError:K.boolean().optional().describe(`True if the host failed to open the URL (e.g., due to security policy).`)}).passthrough(),K.object({isError:K.boolean().optional().describe(`True if the host rejected or failed to deliver the message.`)}).passthrough(),K.object({method:K.literal(`ui/notifications/sandbox-proxy-ready`),params:K.object({})});var ZD=K.object({connectDomains:K.array(K.string()).optional().describe(`Origins for network requests (fetch/XHR/WebSocket).`),resourceDomains:K.array(K.string()).optional().describe(`Origins for static resources (scripts, images, styles, fonts).`),frameDomains:K.array(K.string()).optional().describe(`Origins for nested iframes (frame-src directive).`),baseUriDomains:K.array(K.string()).optional().describe(`Allowed base URIs for the document (base-uri directive).`)}),QD=K.object({camera:K.object({}).optional().describe("Request camera access (Permission Policy `camera` feature)."),microphone:K.object({}).optional().describe("Request microphone access (Permission Policy `microphone` feature)."),geolocation:K.object({}).optional().describe("Request geolocation access (Permission Policy `geolocation` feature)."),clipboardWrite:K.object({}).optional().describe("Request clipboard write access (Permission Policy `clipboard-write` feature).")});K.object({method:K.literal(`ui/notifications/size-changed`),params:K.object({width:K.number().optional().describe(`New width in pixels.`),height:K.number().optional().describe(`New height in pixels.`)})}),K.object({method:K.literal(`ui/notifications/tool-input`),params:K.object({arguments:K.record(K.string(),K.unknown().describe(`Complete tool call arguments as key-value pairs.`)).optional().describe(`Complete tool call arguments as key-value pairs.`)})}),K.object({method:K.literal(`ui/notifications/tool-input-partial`),params:K.object({arguments:K.record(K.string(),K.unknown().describe(`Partial tool call arguments (incomplete, may change).`)).optional().describe(`Partial tool call arguments (incomplete, may change).`)})}),K.object({method:K.literal(`ui/notifications/tool-cancelled`),params:K.object({reason:K.string().optional().describe(`Optional reason for the cancellation (e.g., "user action", "timeout").`)})});var aue=K.object({fonts:K.string().optional()}),oue=K.object({variables:iue.optional().describe(`CSS variables for theming the app.`),css:aue.optional().describe(`CSS blocks that apps can inject.`)});K.object({method:K.literal(`ui/resource-teardown`),params:K.object({})}),K.record(K.string(),K.unknown());var $D=K.object({text:K.object({}).optional().describe(`Host supports text content blocks.`),image:K.object({}).optional().describe(`Host supports image content blocks.`),audio:K.object({}).optional().describe(`Host supports audio content blocks.`),resource:K.object({}).optional().describe(`Host supports resource content blocks.`),resourceLink:K.object({}).optional().describe(`Host supports resource link content blocks.`),structuredContent:K.object({}).optional().describe(`Host supports structured content.`)}),sue=K.object({experimental:K.object({}).optional().describe(`Experimental features (structure TBD).`),openLinks:K.object({}).optional().describe(`Host supports opening external URLs.`),serverTools:K.object({listChanged:K.boolean().optional().describe(`Host supports tools/list_changed notifications.`)}).optional().describe(`Host can proxy tool calls to the MCP server.`),serverResources:K.object({listChanged:K.boolean().optional().describe(`Host supports resources/list_changed notifications.`)}).optional().describe(`Host can proxy resource reads to the MCP server.`),logging:K.object({}).optional().describe(`Host accepts log messages.`),sandbox:K.object({permissions:QD.optional().describe(`Permissions granted by the host (camera, microphone, geolocation).`),csp:ZD.optional().describe(`CSP domains approved by the host.`)}).optional().describe(`Sandbox configuration applied by the host.`),updateModelContext:$D.optional().describe(`Host accepts context updates (ui/update-model-context) to be included in the model's context for future turns.`),message:$D.optional().describe(`Host supports receiving content messages (ui/message) from the view.`)}),cue=K.object({experimental:K.object({}).optional().describe(`Experimental features (structure TBD).`),tools:K.object({listChanged:K.boolean().optional().describe(`App supports tools/list_changed notifications.`)}).optional().describe(`App exposes MCP-style tools that the host can call.`),availableDisplayModes:K.array(XD).optional().describe(`Display modes the app supports.`)});K.object({method:K.literal(`ui/notifications/initialized`),params:K.object({}).optional()}),K.object({csp:ZD.optional().describe(`Content Security Policy configuration.`),permissions:QD.optional().describe(`Sandbox permissions requested by the UI.`),domain:K.string().optional().describe(`Dedicated origin for view sandbox.`),prefersBorder:K.boolean().optional().describe(`Visual boundary preference - true if UI prefers a visible border.`)}),K.object({method:K.literal(`ui/request-display-mode`),params:K.object({mode:XD.describe(`The display mode being requested.`)})}),K.object({mode:XD.describe(`The display mode that was actually set. May differ from requested if not supported.`)}).passthrough();var lue=K.union([K.literal(`model`),K.literal(`app`)]).describe(`Tool visibility scope - who can access the tool.`);K.object({resourceUri:K.string().optional(),visibility:K.array(lue).optional().describe(`Who can access this tool. Default: ["model", "app"]
|
|
436
436
|
- "model": Tool visible to and callable by the agent
|
|
437
437
|
- "app": Tool callable by the app from this server only`)}),K.object({mimeTypes:K.array(K.string()).optional().describe('Array of supported MIME types for UI resources.\nMust include `"text/html;profile=mcp-app"` for MCP Apps support.')}),K.object({method:K.literal(`ui/message`),params:K.object({role:K.literal(`user`).describe(`Message role, currently only "user" is supported.`),content:K.array(Gg).describe(`Message content blocks (text, image, etc.).`)})}),K.object({method:K.literal(`ui/notifications/sandbox-resource-ready`),params:K.object({html:K.string().describe(`HTML content to load into the inner iframe.`),sandbox:K.string().optional().describe(`Optional override for the inner iframe's sandbox attribute.`),csp:ZD.optional().describe(`CSP configuration from resource metadata.`),permissions:QD.optional().describe(`Sandbox permissions from resource metadata.`)})}),K.object({method:K.literal(`ui/notifications/tool-result`),params:Xg.describe(`Standard MCP tool execution result.`)});var eO=K.object({toolInfo:K.object({id:Xh.optional().describe(`JSON-RPC id of the tools/call request.`),tool:Jg.describe(`Tool definition including name, inputSchema, etc.`)}).optional().describe(`Metadata of the tool call that instantiated this App.`),theme:nue.optional().describe(`Current color theme preference.`),styles:oue.optional().describe(`Style configuration for theming the app.`),displayMode:XD.optional().describe(`How the UI is currently displayed.`),availableDisplayModes:K.array(XD).optional().describe(`Display modes the host supports.`),containerDimensions:K.union([K.object({height:K.number().describe(`Fixed container height in pixels.`)}),K.object({maxHeight:K.union([K.number(),K.undefined()]).optional().describe(`Maximum container height in pixels.`)})]).and(K.union([K.object({width:K.number().describe(`Fixed container width in pixels.`)}),K.object({maxWidth:K.union([K.number(),K.undefined()]).optional().describe(`Maximum container width in pixels.`)})])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other
|
|
438
|
-
container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:K.string().optional().describe(`User's language and region preference in BCP 47 format.`),timeZone:K.string().optional().describe(`User's timezone in IANA format.`),userAgent:K.string().optional().describe(`Host application identifier.`),platform:K.union([K.literal(`web`),K.literal(`desktop`),K.literal(`mobile`)]).optional().describe(`Platform type for responsive design decisions.`),deviceCapabilities:K.object({touch:K.boolean().optional().describe(`Whether the device supports touch input.`),hover:K.boolean().optional().describe(`Whether the device supports hover interactions.`)}).optional().describe(`Device input capabilities.`),safeAreaInsets:K.object({top:K.number().describe(`Top safe area inset in pixels.`),right:K.number().describe(`Right safe area inset in pixels.`),bottom:K.number().describe(`Bottom safe area inset in pixels.`),left:K.number().describe(`Left safe area inset in pixels.`)}).optional().describe(`Mobile safe area boundaries in pixels.`)}).passthrough();K.object({method:K.literal(`ui/notifications/host-context-changed`),params:eO.describe(`Partial context update containing only changed fields.`)}),K.object({method:K.literal(`ui/update-model-context`),params:K.object({content:K.array(Gg).optional().describe(`Context content blocks (text, image, etc.).`),structuredContent:K.record(K.string(),K.unknown().describe(`Structured content for machine-readable context data.`)).optional().describe(`Structured content for machine-readable context data.`)})}),K.object({method:K.literal(`ui/initialize`),params:K.object({appInfo:lg.describe(`App identification (name and version).`),appCapabilities:cue.describe(`Features and capabilities this app provides.`),protocolVersion:K.string().describe(`Protocol version this app supports.`)})}),K.object({protocolVersion:K.string().describe(`Negotiated protocol version string (e.g., "2025-11-21").`),hostInfo:lg.describe(`Host application identification and version.`),hostCapabilities:sue.describe(`Features and capabilities provided by the host.`),hostContext:eO.describe(`Rich context about the host environment.`)}).passthrough();var uue=`text/html;profile=mcp-app`,due=`modulepreload`,fue=function(e){return`/inspector/`+e},tO={},J=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=fue(t,n),t in tO)return;tO[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`:due,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)})},pue=`1.31.1`;function nO(){return pue}a(nO,`getPackageVersion`);var rO=class{static{a(this,`BaseTelemetryEvent`)}},mue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`MCPAgentExecutionEvent`)}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}}};function iO(e,t){let n=Array.from(e.registrations.tools.values()),r=Array.from(e.registrations.prompts.values()),i=Array.from(e.registrations.resources.values()),a=Array.from(e.registrations.resourceTemplates.values()),o=i.map(e=>({name:e.config.name,title:e.config.title??null,description:e.config.description??null,uri:e.config.uri??null,mime_type:e.config.mimeType??null})),s=o.filter(e=>e.mime_type===`text/html+skybridge`),c=o.filter(e=>e.mime_type===`text/uri-list`||e.mime_type===`text/html`),l=o.filter(e=>e.mime_type===uue);return{transport:t,toolsNumber:e.registeredTools.length,resourcesNumber:e.registeredResources.length,promptsNumber:e.registeredPrompts.length,auth:!!e.oauthProvider,name:e.config.name,description:e.config.description??null,baseUrl:e.serverBaseUrl??null,toolNames:e.registeredTools.length>0?e.registeredTools:null,resourceNames:e.registeredResources.length>0?e.registeredResources:null,promptNames:e.registeredPrompts.length>0?e.registeredPrompts:null,tools:n.length>0?n.map(e=>({name:e.config.name,title:e.config.title??null,description:e.config.description??null,input_schema:e.config.schema?JSON.stringify(e.config.schema):null,output_schema:e.config.outputSchema?JSON.stringify(e.config.outputSchema):null})):null,resources:o.length>0?o:null,prompts:r.length>0?r.map(e=>({name:e.config.name,title:e.config.title??null,description:e.config.description??null,args:e.config.args?JSON.stringify(e.config.args):null})):null,templates:a.length>0?a.map(e=>({name:e.config.name,title:e.config.title??null,description:e.config.description??null})):null,capabilities:{logging:!0,resources:{subscribe:!0,listChanged:!0}},appsSdkResources:s.length>0?s:null,appsSdkResourcesNumber:s.length,mcpUiResources:c.length>0?c:null,mcpUiResourcesNumber:c.length,mcpAppsResources:l.length>0?l:null,mcpAppsResourcesNumber:l.length}}a(iO,`createServerRunEventData`);var hue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ServerRunEvent`)}get name(){return`server_run`}get properties(){return{transport:this.data.transport,tools_number:this.data.toolsNumber,resources_number:this.data.resourcesNumber,prompts_number:this.data.promptsNumber,auth:this.data.auth,name:this.data.name,description:this.data.description??null,base_url:this.data.baseUrl??null,tool_names:this.data.toolNames??null,resource_names:this.data.resourceNames??null,prompt_names:this.data.promptNames??null,tools:this.data.tools??null,resources:this.data.resources??null,prompts:this.data.prompts??null,templates:this.data.templates??null,capabilities:this.data.capabilities?JSON.stringify(this.data.capabilities):null,apps_sdk_resources:this.data.appsSdkResources?JSON.stringify(this.data.appsSdkResources):null,apps_sdk_resources_number:this.data.appsSdkResourcesNumber??0,mcp_ui_resources:this.data.mcpUiResources?JSON.stringify(this.data.mcpUiResources):null,mcp_ui_resources_number:this.data.mcpUiResourcesNumber??0,mcp_apps_resources:this.data.mcpAppsResources?JSON.stringify(this.data.mcpAppsResources):null,mcp_apps_resources_number:this.data.mcpAppsResourcesNumber??0}}},gue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ServerInitializeEvent`)}get name(){return`server_initialize_call`}get properties(){return{protocol_version:this.data.protocolVersion,client_info:JSON.stringify(this.data.clientInfo),client_capabilities:JSON.stringify(this.data.clientCapabilities),session_id:this.data.sessionId??null}}},_ue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ServerToolCallEvent`)}get name(){return`server_tool_call`}get properties(){return{tool_name:this.data.toolName,length_input_argument:this.data.lengthInputArgument,success:this.data.success,error_type:this.data.errorType??null,execution_time_ms:this.data.executionTimeMs??null}}},vue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ServerResourceCallEvent`)}get name(){return`server_resource_call`}get properties(){return{name:this.data.name,description:this.data.description,contents:this.data.contents,success:this.data.success,error_type:this.data.errorType??null}}},yue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ServerPromptCallEvent`)}get name(){return`server_prompt_call`}get properties(){return{name:this.data.name,description:this.data.description,success:this.data.success,error_type:this.data.errorType??null}}},bue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ServerContextEvent`)}get name(){return`server_context_${this.data.contextType}`}get properties(){return{context_type:this.data.contextType,notification_type:this.data.notificationType??null}}},xue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`MCPClientInitEvent`)}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}}},Sue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ConnectorInitEvent`)}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}}},Cue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ClientAddServerEvent`)}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}}},wue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ClientRemoveServerEvent`)}get name(){return`client_remove_server`}get properties(){return{server_name:this.data.serverName}}};function aO(e){return e._llm_type||e.constructor.name.toLowerCase()}a(aO,`getModelProvider`);function oO(e){if(`_identifyingParams`in e){let t=e._identifyingParams;if(typeof t==`object`&&t){for(let e of[`model`,`modelName`,`model_name`,`modelId`,`model_id`,`deploymentName`,`deployment_name`])if(e in t)return String(t[e])}}return e.model||e.modelName||e.constructor.name}a(oO,`getModelName`);function Tue(e){return[aO(e),oO(e)]}a(Tue,`extractModelInfo`);function sO(){if(typeof globalThis<`u`&&globalThis.crypto&&typeof globalThis.crypto.randomUUID==`function`)return globalThis.crypto.randomUUID();if(typeof globalThis<`u`&&globalThis.crypto&&typeof globalThis.crypto.getRandomValues==`function`){let e=new Uint8Array(16);globalThis.crypto.getRandomValues(e);let t=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``);return`${t.substring(0,8)}-${t.substring(8,12)}-${t.substring(12,16)}-${t.substring(16,20)}-${t.substring(20)}`}return`${Date.now()}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}`}a(sO,`generateUUID`);function cO(){if(typeof window<`u`&&window.crypto&&typeof window.crypto.getRandomValues==`function`){let e=new Uint8Array(8);return window.crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}if(typeof globalThis<`u`&&globalThis.crypto&&typeof globalThis.crypto.getRandomValues==`function`){let e=new Uint8Array(8);return globalThis.crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}return Math.random().toString(36).substring(2,15)}a(cO,`secureRandomString`);var lO=`mcp_use_user_id`;function uO(){return typeof localStorage<`u`&&typeof localStorage.getItem==`function`&&typeof localStorage.setItem==`function`&&typeof localStorage.removeItem==`function`}a(uO,`isLocalStorageFunctional`);function dO(){try{return typeof window<`u`&&typeof document<`u`?`browser`:`unknown`}catch{return`unknown`}}a(dO,`detectRuntimeEnvironment`);function fO(e){if(e===`browser`)try{if(uO())return localStorage.setItem(`__mcp_use_test__`,`1`),localStorage.removeItem(`__mcp_use_test__`),`localStorage`}catch{}return`session-only`}a(fO,`getStorageCapability`);var pO=null;function mO(){return pO===null&&(pO=dO()),pO}a(mO,`getRuntimeEnvironment`);var hO=class e{static{a(this,`Telemetry`)}static instance=null;PROJECT_API_KEY=`phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI`;HOST=`https://eu.i.posthog.com`;UNKNOWN_USER_ID=`UNKNOWN_USER_ID`;_currUserId=null;_posthogBrowserClient=null;_posthogLoading=null;_runtimeEnvironment;_storageCapability;_source;constructor(){this._runtimeEnvironment=mO(),this._storageCapability=fO(this._runtimeEnvironment),this._source=this._getSourceFromLocalStorage()||this._runtimeEnvironment;let e=this._checkTelemetryDisabled(),t=this._runtimeEnvironment!==`unknown`;e?(this._posthogBrowserClient=null,l.debug(`Telemetry disabled via localStorage`)):t?(l.debug(`Anonymized telemetry enabled. Set MCP_USE_ANONYMIZED_TELEMETRY=false in localStorage to disable.`),this._posthogLoading=this._initPostHogBrowser()):(this._posthogBrowserClient=null,l.debug(`Telemetry disabled - unknown environment: ${this._runtimeEnvironment}`))}_getSourceFromLocalStorage(){try{if(uO())return localStorage.getItem(`MCP_USE_TELEMETRY_SOURCE`)}catch{}return null}_checkTelemetryDisabled(){return!!(typeof window<`u`&&window.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||uO()&&localStorage.getItem(`MCP_USE_ANONYMIZED_TELEMETRY`)===`false`)}async _initPostHogBrowser(){try{let e=await J(()=>import(`./module-BXKdgN2b.js`),[]),t=e.default||e.posthog;if(!t||typeof t.init!=`function`)throw Error(`posthog-js module did not export expected interface`);t.init(this.PROJECT_API_KEY,{api_host:this.HOST,persistence:`localStorage`,autocapture:!1,capture_pageview:!1,disable_session_recording:!0,loaded:a(()=>{l.debug(`PostHog browser client initialized`)},`loaded`)}),this._posthogBrowserClient=t}catch(e){l.warn(`Failed to initialize PostHog browser telemetry: ${e}`),this._posthogBrowserClient=null}}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{uO()&&localStorage.setItem(`MCP_USE_TELEMETRY_SOURCE`,e)}catch{}l.debug(`Telemetry source set to: ${e}`)}getSource(){return this._source}get isEnabled(){return this._posthogBrowserClient!==null}get userId(){if(this._currUserId)return this._currUserId;try{switch(this._storageCapability){case`localStorage`:this._currUserId=this._getUserIdFromLocalStorage();break;default:try{this._currUserId=`session-${sO()}`}catch{this._currUserId=`session-${Date.now()}-${cO()}`}break}}catch{this._currUserId=this.UNKNOWN_USER_ID}return this._currUserId}_getUserIdFromLocalStorage(){try{if(!uO())throw Error(`localStorage is not available or not functional`);localStorage.setItem(`__mcp_use_test__`,`1`),localStorage.removeItem(`__mcp_use_test__`);let e=localStorage.getItem(lO);if(!e){try{e=sO()}catch{e=`${Date.now()}-${cO()}`}localStorage.setItem(lO,e)}return e}catch(e){l.debug(`Failed to access localStorage for user ID: ${e}`);let t;try{t=`session-${sO()}`}catch{t=`session-${Date.now()}-${cO()}`}return t}}async capture(e){if(this._posthogLoading&&await this._posthogLoading,!this._posthogBrowserClient)return;let t=this.userId,n={...e.properties};if(n.mcp_use_version=nO(),n.language=`typescript`,n.source=this._source,n.runtime=this._runtimeEnvironment,this._posthogBrowserClient)try{this._posthogBrowserClient.capture(e.name,{...n,distinct_id:t})}catch(t){l.debug(`Failed to track PostHog Browser event ${e.name}: ${t}`)}}async trackAgentExecution(e){if(!this.isEnabled)return;let t=new mue(e);await this.capture(t)}async trackServerRunFromServer(e,t){if(!this.isEnabled)return;let n=new hue(iO(e,t));await this.capture(n)}async trackServerInitialize(e){if(!this.isEnabled)return;let t=new gue(e);await this.capture(t)}async trackServerToolCall(e){if(!this.isEnabled)return;let t=new _ue(e);await this.capture(t)}async trackServerResourceCall(e){if(!this.isEnabled)return;let t=new vue(e);await this.capture(t)}async trackServerPromptCall(e){if(!this.isEnabled)return;let t=new yue(e);await this.capture(t)}async trackServerContext(e){if(!this.isEnabled)return;let t=new bue(e);await this.capture(t)}async trackMCPClientInit(e){if(!this.isEnabled)return;let t=new xue(e);await this.capture(t)}async trackConnectorInit(e){if(!this.isEnabled)return;let t=new Sue(e);await this.capture(t)}async trackClientAddServer(e,t){if(!this.isEnabled)return;let n=new Cue({serverName:e,serverConfig:t});await this.capture(n)}async trackClientRemoveServer(e){if(!this.isEnabled)return;let t=new wue({serverName:e});await this.capture(t)}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){if(this._posthogBrowserClient)try{this._posthogBrowserClient.identify(e,t)}catch(e){l.debug(`Failed to identify user: ${e}`)}}reset(){if(this._posthogBrowserClient)try{this._posthogBrowserClient.reset()}catch(e){l.debug(`Failed to reset user: ${e}`)}this._currUserId=null}flush(){}shutdown(){}async trackPackageDownload(e){}},gO=hO;function Eue(e){gO.getInstance().setSource(e)}a(Eue,`setTelemetrySource`);var Due=class{static{a(this,`BaseConnector`)}client=null;connectionManager=null;toolsCache=null;capabilitiesCache=null;serverInfoCache=null;connected=!1;opts;notificationHandlers=[];rootsCache=[];constructor(e={}){let t={...e,onSampling:e.onSampling??e.samplingCallback,onElicitation:e.onElicitation??e.elicitationCallback};e.samplingCallback&&!e.onSampling&&l.warn(`[BaseConnector] The "samplingCallback" option is deprecated. Use "onSampling" instead.`),e.elicitationCallback&&!e.onElicitation&&console.warn(`[BaseConnector] The "elicitationCallback" option is deprecated. Use "onElicitation" instead.`),this.opts=t,t.roots&&(this.rootsCache=[...t.roots]),t.onNotification&&this.notificationHandlers.push(t.onNotification)}trackConnectorInit(e){let t=this.constructor.name;hO.getInstance().trackConnectorInit({connectorType:t,...e}).catch(e=>l.debug(`Failed to track connector init: ${e}`))}onNotification(e){this.notificationHandlers.push(e),this.client&&this.setupNotificationHandler()}setupNotificationHandler(){if(!this.client)return;let e=a(async e=>{for(let t of this.notificationHandlers)try{await t(e)}catch(e){l.error(`Error in notification handler:`,e)}},`forwardToUserHandlers`);this.client.fallbackNotificationHandler=async t=>{switch(t.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 e(t)};let t=this.client._notificationHandlers;for(let n of[`notifications/progress`,`notifications/cancelled`]){let r=t.get(n);r&&t.set(n,async t=>{await r(t),await e(t)})}}async refreshToolsCache(){if(this.client)try{l.debug(`[Auto] Refreshing tools cache due to list_changed notification`),this.toolsCache=(await this.client.listTools()).tools??[],l.debug(`[Auto] Refreshed tools cache: ${this.toolsCache.length} tools`)}catch(e){l.warn(`[Auto] Failed to refresh tools cache:`,e)}}async onResourcesListChanged(){l.debug(`[Auto] Resources list changed - clients should re-fetch if needed`)}async onPromptsListChanged(){l.debug(`[Auto] Prompts list changed - clients should re-fetch if needed`)}async setRoots(e){this.rootsCache=[...e],this.client&&(l.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(c_,async(e,t)=>(l.debug(`Server requested roots list, returning ${this.rootsCache.length} root(s)`),{roots:this.rootsCache}))}setupSamplingHandler(){if(!this.client){l.debug(`setupSamplingHandler: No client available`);return}let e=this.opts.onSampling??this.opts.samplingCallback;if(!e){l.debug(`setupSamplingHandler: No sampling callback provided`);return}l.debug(`setupSamplingHandler: Setting up sampling request handler`),this.client.setRequestHandler(n_,async(t,n)=>(l.debug(`Server requested sampling, forwarding to callback`),await e(t.params))),l.debug(`setupSamplingHandler: Sampling handler registered successfully`)}setupElicitationHandler(){if(!this.client){l.debug(`setupElicitationHandler: No client available`);return}let e=this.opts.onElicitation??this.opts.elicitationCallback;if(!e){l.debug(`setupElicitationHandler: No elicitation callback provided`);return}l.debug(`setupElicitationHandler: Setting up elicitation request handler`),this.client.setRequestHandler(a_,async(t,n)=>(l.debug(`Server requested elicitation, forwarding to callback`),await e(t.params))),l.debug(`setupElicitationHandler: Elicitation handler registered successfully`)}async disconnect(){if(!this.connected){l.debug(`Not connected to MCP implementation`);return}l.debug(`Disconnecting from MCP implementation`),await this.cleanupResources(),this.connected=!1,l.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`);l.debug(`Caching server capabilities & tools`);let t=this.client.getServerCapabilities();this.capabilitiesCache=t||null;let n=this.client.getServerVersion();this.serverInfoCache=n||null;try{this.toolsCache=(await this.client.listTools(void 0,e)).tools??[],l.debug(`Fetched ${this.toolsCache.length} tools from server`)}catch(e){let t=e;t.code===-32601?l.debug(`Server does not implement tools/list, assuming no tools`):l.debug(`Failed to list tools, assuming empty:`,t.message),this.toolsCache=[]}return l.debug(`Server capabilities:`,t),l.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}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=()=>{},l.debug(`[BaseConnector] Added onprogress callback for tool '${e}' to enable progressToken`)),l.debug(`Calling tool '${e}' with args`,t);let i=await this.client.callTool({name:e,arguments:t},void 0,r);return l.debug(`Tool '${e}' returned`,i),i}async listTools(e){if(!this.client)throw Error(`MCP client is not connected`);l.debug(`[listTools] Fetching fresh tools from server...`);let t=await this.client.listTools(void 0,e),n=t.tools?[...t.tools]:[];return l.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 l.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 l.debug(`Server does not advertise resources capability, skipping`),{resources:[]};try{l.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 l.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 l.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`);l.debug(`[complete] Requesting completions for:`,e.ref);let n=await this.client.complete(e,t);return l.debug(`[complete] Received ${n.completion.values.length} suggestions`),n}async readResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return l.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 l.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 l.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 l.debug(`Server does not advertise prompts capability, skipping`),{prompts:[]};try{return l.debug(`Listing prompts`),await this.client.listPrompts()}catch(e){if(e.code===-32601)return l.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 l.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 l.debug(`Sending raw request '${e}' with params`,t),await this.client.request({method:e,params:t??{}},void 0,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}`;l.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}`;l.warn(n),e.push(n)}finally{this.connectionManager=null}this.toolsCache=null,e.length&&l.warn(`Resource cleanup finished with ${e.length} issue(s)`)}},Oue=class{static{a(this,`ConnectionManager`)}_readyPromise;_readyResolver;_donePromise;_doneResolver;_exception=null;_connection=null;_task=null;_abortController=null;constructor(){this.reset()}async start(){if(this.reset(),l.debug(`Starting ${this.constructor.name}`),this._task=this.connectionTask(),await this._readyPromise,this._exception)throw this._exception;if(this._connection===null)throw Error(`Connection was not established`);return this._connection}async stop(){if(this._task&&this._abortController){l.debug(`Cancelling ${this.constructor.name} task`),this._abortController.abort();try{await this._task}catch(e){e instanceof Error&&e.name===`AbortError`?l.debug(`${this.constructor.name} task aborted successfully`):l.warn(`Error stopping ${this.constructor.name} task: ${e}`)}}await this._donePromise,l.debug(`${this.constructor.name} task completed`)}reset(){this._readyPromise=new Promise(e=>this._readyResolver=e),this._donePromise=new Promise(e=>this._doneResolver=e),this._exception=null,this._connection=null,this._task=null,this._abortController=new AbortController}async connectionTask(){l.debug(`Running ${this.constructor.name} task`);try{this._connection=await this.establishConnection(),l.debug(`${this.constructor.name} connected successfully`),this._readyResolver(),await this.waitForAbort()}catch(e){this._exception=e,l.error(`Error in ${this.constructor.name} task: ${e}`),this._readyResolver()}finally{if(this._connection!==null){try{await this.closeConnection(this._connection)}catch(e){l.warn(`Error closing connection in ${this.constructor.name}: ${e}`)}this._connection=null}this._doneResolver()}}async waitForAbort(){return new Promise((e,t)=>{if(!this._abortController)return;let n=this._abortController.signal;if(n.aborted){e();return}let r=a(()=>{n.removeEventListener(`abort`,r),e()},`onAbort`);n.addEventListener(`abort`,r)})}},_O=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.regexpCode=e.getEsmExportName=e.getProperty=e.safeStringify=e.stringify=e.strConcat=e.addCodeArg=e.str=e._=e.nil=e._Code=e.Name=e.IDENTIFIER=e._CodeOrName=void 0;var t=class{};e._CodeOrName=t,e.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var n=class extends t{constructor(t){if(super(),!e.IDENTIFIER.test(t))throw Error(`CodeGen: name must be a valid identifier`);this.str=t}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};e.Name=n;var r=class extends t{constructor(e){super(),this._items=typeof e==`string`?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let e=this._items[0];return e===``||e===`""`}get str(){return this._str??=this._items.reduce((e,t)=>`${e}${t}`,``)}get names(){return this._names??=this._items.reduce((e,t)=>(t instanceof n&&(e[t.str]=(e[t.str]||0)+1),e),{})}};e._Code=r,e.nil=new r(``);function i(e,...t){let n=[e[0]],i=0;for(;i<t.length;)s(n,t[i]),n.push(e[++i]);return new r(n)}e._=i;var a=new r(`+`);function o(e,...t){let n=[p(e[0])],i=0;for(;i<t.length;)n.push(a),s(n,t[i]),n.push(a,p(e[++i]));return c(n),new r(n)}e.str=o;function s(e,t){t instanceof r?e.push(...t._items):t instanceof n?e.push(t):e.push(d(t))}e.addCodeArg=s;function c(e){let t=1;for(;t<e.length-1;){if(e[t]===a){let n=l(e[t-1],e[t+1]);if(n!==void 0){e.splice(t-1,3,n);continue}e[t++]=`+`}t++}}function l(e,t){if(t===`""`)return e;if(e===`""`)return t;if(typeof e==`string`)return t instanceof n||e[e.length-1]!==`"`?void 0:typeof t==`string`?t[0]===`"`?e.slice(0,-1)+t.slice(1):void 0:`${e.slice(0,-1)}${t}"`;if(typeof t==`string`&&t[0]===`"`&&!(e instanceof n))return`"${e}${t.slice(1)}`}function u(e,t){return t.emptyStr()?e:e.emptyStr()?t:o`${e}${t}`}e.strConcat=u;function d(e){return typeof e==`number`||typeof e==`boolean`||e===null?e:p(Array.isArray(e)?e.join(`,`):e)}function f(e){return new r(p(e))}e.stringify=f;function p(e){return JSON.stringify(e).replace(/\u2028/g,`\\u2028`).replace(/\u2029/g,`\\u2029`)}e.safeStringify=p;function m(t){return typeof t==`string`&&e.IDENTIFIER.test(t)?new r(`.${t}`):i`[${t}]`}e.getProperty=m;function h(t){if(typeof t==`string`&&e.IDENTIFIER.test(t))return new r(`${t}`);throw Error(`CodeGen: invalid export name: ${t}, use explicit $id name mapping`)}e.getEsmExportName=h;function g(e){return new r(e.toString())}e.regexpCode=g})),vO=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ValueScope=e.ValueScopeName=e.Scope=e.varKinds=e.UsedValueState=void 0;var t=_O(),n=class extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`),this.value=e.value}},r;(function(e){e[e.Started=0]=`Started`,e[e.Completed=1]=`Completed`})(r||(e.UsedValueState=r={})),e.varKinds={const:new t.Name(`const`),let:new t.Name(`let`),var:new t.Name(`var`)};var i=class{constructor({prefixes:e,parent:t}={}){this._names={},this._prefixes=e,this._parent=t}toName(e){return e instanceof t.Name?e:this.name(e)}name(e){return new t.Name(this._newName(e))}_newName(e){let t=this._names[e]||this._nameGroup(e);return`${e}${t.index++}`}_nameGroup(e){if((this._parent?._prefixes)?.has(e)||this._prefixes&&!this._prefixes.has(e))throw Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}};e.Scope=i;var a=class extends t.Name{constructor(e,t){super(t),this.prefix=e}setValue(e,{property:n,itemIndex:r}){this.value=e,this.scopePath=(0,t._)`.${new t.Name(n)}[${r}]`}};e.ValueScopeName=a;var o=(0,t._)`\n`;e.ValueScope=class extends i{constructor(e){super(e),this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?o:t.nil}}get(){return this._scope}name(e){return new a(e,this._newName(e))}value(e,t){if(t.ref===void 0)throw Error(`CodeGen: ref must be passed in value`);let n=this.toName(e),{prefix:r}=n,i=t.key??t.ref,a=this._values[r];if(a){let e=a.get(i);if(e)return e}else a=this._values[r]=new Map;a.set(i,n);let o=this._scope[r]||(this._scope[r]=[]),s=o.length;return o[s]=t.ref,n.setValue(t,{property:r,itemIndex:s}),n}getValue(e,t){let n=this._values[e];if(n)return n.get(t)}scopeRefs(e,n=this._values){return this._reduceValues(n,n=>{if(n.scopePath===void 0)throw Error(`CodeGen: name "${n}" has no value`);return(0,t._)`${e}${n.scopePath}`})}scopeCode(e=this._values,t,n){return this._reduceValues(e,e=>{if(e.value===void 0)throw Error(`CodeGen: name "${e}" has no value`);return e.value.code},t,n)}_reduceValues(i,a,o={},s){let c=t.nil;for(let l in i){let u=i[l];if(!u)continue;let d=o[l]=o[l]||new Map;u.forEach(i=>{if(d.has(i))return;d.set(i,r.Started);let o=a(i);if(o){let n=this.opts.es5?e.varKinds.var:e.varKinds.const;c=(0,t._)`${c}${n} ${i} = ${o};${this.opts._n}`}else if(o=s?.(i))c=(0,t._)`${c}${o}${this.opts._n}`;else throw new n(i);d.set(i,r.Completed)})}return c}}})),yO=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.or=e.and=e.not=e.CodeGen=e.operators=e.varKinds=e.ValueScopeName=e.ValueScope=e.Scope=e.Name=e.regexpCode=e.stringify=e.getProperty=e.nil=e.strConcat=e.str=e._=void 0;var t=_O(),n=vO(),r=_O();Object.defineProperty(e,`_`,{enumerable:!0,get:function(){return r._}}),Object.defineProperty(e,`str`,{enumerable:!0,get:function(){return r.str}}),Object.defineProperty(e,`strConcat`,{enumerable:!0,get:function(){return r.strConcat}}),Object.defineProperty(e,`nil`,{enumerable:!0,get:function(){return r.nil}}),Object.defineProperty(e,`getProperty`,{enumerable:!0,get:function(){return r.getProperty}}),Object.defineProperty(e,`stringify`,{enumerable:!0,get:function(){return r.stringify}}),Object.defineProperty(e,`regexpCode`,{enumerable:!0,get:function(){return r.regexpCode}}),Object.defineProperty(e,`Name`,{enumerable:!0,get:function(){return r.Name}});var i=vO();Object.defineProperty(e,`Scope`,{enumerable:!0,get:function(){return i.Scope}}),Object.defineProperty(e,`ValueScope`,{enumerable:!0,get:function(){return i.ValueScope}}),Object.defineProperty(e,`ValueScopeName`,{enumerable:!0,get:function(){return i.ValueScopeName}}),Object.defineProperty(e,`varKinds`,{enumerable:!0,get:function(){return i.varKinds}}),e.operators={GT:new t._Code(`>`),GTE:new t._Code(`>=`),LT:new t._Code(`<`),LTE:new t._Code(`<=`),EQ:new t._Code(`===`),NEQ:new t._Code(`!==`),NOT:new t._Code(`!`),OR:new t._Code(`||`),AND:new t._Code(`&&`),ADD:new t._Code(`+`)};var a=class{optimizeNodes(){return this}optimizeNames(e,t){return this}},o=class extends a{constructor(e,t,n){super(),this.varKind=e,this.name=t,this.rhs=n}render({es5:e,_n:t}){let r=e?n.varKinds.var:this.varKind,i=this.rhs===void 0?``:` = ${this.rhs}`;return`${r} ${this.name}${i};`+t}optimizeNames(e,t){if(e[this.name.str])return this.rhs&&=k(this.rhs,e,t),this}get names(){return this.rhs instanceof t._CodeOrName?this.rhs.names:{}}},s=class extends a{constructor(e,t,n){super(),this.lhs=e,this.rhs=t,this.sideEffects=n}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,n){if(!(this.lhs instanceof t.Name&&!e[this.lhs.str]&&!this.sideEffects))return this.rhs=k(this.rhs,e,n),this}get names(){return O(this.lhs instanceof t.Name?{}:{...this.lhs.names},this.rhs)}},c=class extends s{constructor(e,t,n,r){super(e,n,r),this.op=t}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}},l=class extends a{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}},u=class extends a{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:``};`+e}},d=class extends a{constructor(e){super(),this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}},f=class extends a{constructor(e){super(),this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,t){return this.code=k(this.code,e,t),this}get names(){return this.code instanceof t._CodeOrName?this.code.names:{}}},p=class extends a{constructor(e=[]){super(),this.nodes=e}render(e){return this.nodes.reduce((t,n)=>t+n.render(e),``)}optimizeNodes(){let{nodes:e}=this,t=e.length;for(;t--;){let n=e[t].optimizeNodes();Array.isArray(n)?e.splice(t,1,...n):n?e[t]=n:e.splice(t,1)}return e.length>0?this:void 0}optimizeNames(e,t){let{nodes:n}=this,r=n.length;for(;r--;){let i=n[r];i.optimizeNames(e,t)||(A(e,i.names),n.splice(r,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce((e,t)=>D(e,t.names),{})}},m=class extends p{render(e){return`{`+e._n+super.render(e)+`}`+e._n}},h=class extends p{},g=class extends m{};g.kind=`else`;var _=class e extends m{constructor(e,t){super(t),this.condition=e}render(e){let t=`if(${this.condition})`+super.render(e);return this.else&&(t+=`else `+this.else.render(e)),t}optimizeNodes(){super.optimizeNodes();let t=this.condition;if(t===!0)return this.nodes;let n=this.else;if(n){let e=n.optimizeNodes();n=this.else=Array.isArray(e)?new g(e):e}if(n)return t===!1?n instanceof e?n:n.nodes:this.nodes.length?this:new e(j(t),n instanceof e?[n]:n.nodes);if(!(t===!1||!this.nodes.length))return this}optimizeNames(e,t){if(this.else=this.else?.optimizeNames(e,t),super.optimizeNames(e,t)||this.else)return this.condition=k(this.condition,e,t),this}get names(){let e=super.names;return O(e,this.condition),this.else&&D(e,this.else.names),e}};_.kind=`if`;var v=class extends m{};v.kind=`for`;var y=class extends v{constructor(e){super(),this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iteration=k(this.iteration,e,t),this}get names(){return D(super.names,this.iteration.names)}},b=class extends v{constructor(e,t,n,r){super(),this.varKind=e,this.name=t,this.from=n,this.to=r}render(e){let t=e.es5?n.varKinds.var:this.varKind,{name:r,from:i,to:a}=this;return`for(${t} ${r}=${i}; ${r}<${a}; ${r}++)`+super.render(e)}get names(){return O(O(super.names,this.from),this.to)}},x=class extends v{constructor(e,t,n,r){super(),this.loop=e,this.varKind=t,this.name=n,this.iterable=r}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iterable=k(this.iterable,e,t),this}get names(){return D(super.names,this.iterable.names)}},S=class extends m{constructor(e,t,n){super(),this.name=e,this.args=t,this.async=n}render(e){return`${this.async?`async `:``}function ${this.name}(${this.args})`+super.render(e)}};S.kind=`func`;var C=class extends p{render(e){return`return `+super.render(e)}};C.kind=`return`;var w=class extends m{render(e){let t=`try`+super.render(e);return this.catch&&(t+=this.catch.render(e)),this.finally&&(t+=this.finally.render(e)),t}optimizeNodes(){var e,t;return super.optimizeNodes(),(e=this.catch)==null||e.optimizeNodes(),(t=this.finally)==null||t.optimizeNodes(),this}optimizeNames(e,t){var n,r;return super.optimizeNames(e,t),(n=this.catch)==null||n.optimizeNames(e,t),(r=this.finally)==null||r.optimizeNames(e,t),this}get names(){let e=super.names;return this.catch&&D(e,this.catch.names),this.finally&&D(e,this.finally.names),e}},T=class extends m{constructor(e){super(),this.error=e}render(e){return`catch(${this.error})`+super.render(e)}};T.kind=`catch`;var E=class extends m{render(e){return`finally`+super.render(e)}};E.kind=`finally`,e.CodeGen=class{constructor(e,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...t,_n:t.lines?`
|
|
438
|
+
container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:K.string().optional().describe(`User's language and region preference in BCP 47 format.`),timeZone:K.string().optional().describe(`User's timezone in IANA format.`),userAgent:K.string().optional().describe(`Host application identifier.`),platform:K.union([K.literal(`web`),K.literal(`desktop`),K.literal(`mobile`)]).optional().describe(`Platform type for responsive design decisions.`),deviceCapabilities:K.object({touch:K.boolean().optional().describe(`Whether the device supports touch input.`),hover:K.boolean().optional().describe(`Whether the device supports hover interactions.`)}).optional().describe(`Device input capabilities.`),safeAreaInsets:K.object({top:K.number().describe(`Top safe area inset in pixels.`),right:K.number().describe(`Right safe area inset in pixels.`),bottom:K.number().describe(`Bottom safe area inset in pixels.`),left:K.number().describe(`Left safe area inset in pixels.`)}).optional().describe(`Mobile safe area boundaries in pixels.`)}).passthrough();K.object({method:K.literal(`ui/notifications/host-context-changed`),params:eO.describe(`Partial context update containing only changed fields.`)}),K.object({method:K.literal(`ui/update-model-context`),params:K.object({content:K.array(Gg).optional().describe(`Context content blocks (text, image, etc.).`),structuredContent:K.record(K.string(),K.unknown().describe(`Structured content for machine-readable context data.`)).optional().describe(`Structured content for machine-readable context data.`)})}),K.object({method:K.literal(`ui/initialize`),params:K.object({appInfo:lg.describe(`App identification (name and version).`),appCapabilities:cue.describe(`Features and capabilities this app provides.`),protocolVersion:K.string().describe(`Protocol version this app supports.`)})}),K.object({protocolVersion:K.string().describe(`Negotiated protocol version string (e.g., "2025-11-21").`),hostInfo:lg.describe(`Host application identification and version.`),hostCapabilities:sue.describe(`Features and capabilities provided by the host.`),hostContext:eO.describe(`Rich context about the host environment.`)}).passthrough();var uue=`text/html;profile=mcp-app`,due=`modulepreload`,fue=function(e){return`/inspector/`+e},tO={},J=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=fue(t,n),t in tO)return;tO[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`:due,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)})},pue=`1.32.0-canary.0`;function nO(){return pue}a(nO,`getPackageVersion`);var rO=class{static{a(this,`BaseTelemetryEvent`)}},mue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`MCPAgentExecutionEvent`)}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}}};function iO(e,t){let n=Array.from(e.registrations.tools.values()),r=Array.from(e.registrations.prompts.values()),i=Array.from(e.registrations.resources.values()),a=Array.from(e.registrations.resourceTemplates.values()),o=i.map(e=>({name:e.config.name,title:e.config.title??null,description:e.config.description??null,uri:e.config.uri??null,mime_type:e.config.mimeType??null})),s=o.filter(e=>e.mime_type===`text/html+skybridge`),c=o.filter(e=>e.mime_type===`text/uri-list`||e.mime_type===`text/html`),l=o.filter(e=>e.mime_type===uue);return{transport:t,toolsNumber:e.registeredTools.length,resourcesNumber:e.registeredResources.length,promptsNumber:e.registeredPrompts.length,auth:!!e.oauthProvider,name:e.config.name,description:e.config.description??null,baseUrl:e.serverBaseUrl??null,toolNames:e.registeredTools.length>0?e.registeredTools:null,resourceNames:e.registeredResources.length>0?e.registeredResources:null,promptNames:e.registeredPrompts.length>0?e.registeredPrompts:null,tools:n.length>0?n.map(e=>({name:e.config.name,title:e.config.title??null,description:e.config.description??null,input_schema:e.config.schema?JSON.stringify(e.config.schema):null,output_schema:e.config.outputSchema?JSON.stringify(e.config.outputSchema):null})):null,resources:o.length>0?o:null,prompts:r.length>0?r.map(e=>({name:e.config.name,title:e.config.title??null,description:e.config.description??null,args:e.config.args?JSON.stringify(e.config.args):null})):null,templates:a.length>0?a.map(e=>({name:e.config.name,title:e.config.title??null,description:e.config.description??null})):null,capabilities:{logging:!0,resources:{subscribe:!0,listChanged:!0}},appsSdkResources:s.length>0?s:null,appsSdkResourcesNumber:s.length,mcpUiResources:c.length>0?c:null,mcpUiResourcesNumber:c.length,mcpAppsResources:l.length>0?l:null,mcpAppsResourcesNumber:l.length}}a(iO,`createServerRunEventData`);var hue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ServerRunEvent`)}get name(){return`server_run`}get properties(){return{transport:this.data.transport,tools_number:this.data.toolsNumber,resources_number:this.data.resourcesNumber,prompts_number:this.data.promptsNumber,auth:this.data.auth,name:this.data.name,description:this.data.description??null,base_url:this.data.baseUrl??null,tool_names:this.data.toolNames??null,resource_names:this.data.resourceNames??null,prompt_names:this.data.promptNames??null,tools:this.data.tools??null,resources:this.data.resources??null,prompts:this.data.prompts??null,templates:this.data.templates??null,capabilities:this.data.capabilities?JSON.stringify(this.data.capabilities):null,apps_sdk_resources:this.data.appsSdkResources?JSON.stringify(this.data.appsSdkResources):null,apps_sdk_resources_number:this.data.appsSdkResourcesNumber??0,mcp_ui_resources:this.data.mcpUiResources?JSON.stringify(this.data.mcpUiResources):null,mcp_ui_resources_number:this.data.mcpUiResourcesNumber??0,mcp_apps_resources:this.data.mcpAppsResources?JSON.stringify(this.data.mcpAppsResources):null,mcp_apps_resources_number:this.data.mcpAppsResourcesNumber??0}}},gue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ServerInitializeEvent`)}get name(){return`server_initialize_call`}get properties(){return{protocol_version:this.data.protocolVersion,client_info:JSON.stringify(this.data.clientInfo),client_capabilities:JSON.stringify(this.data.clientCapabilities),session_id:this.data.sessionId??null}}},_ue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ServerToolCallEvent`)}get name(){return`server_tool_call`}get properties(){return{tool_name:this.data.toolName,length_input_argument:this.data.lengthInputArgument,success:this.data.success,error_type:this.data.errorType??null,execution_time_ms:this.data.executionTimeMs??null}}},vue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ServerResourceCallEvent`)}get name(){return`server_resource_call`}get properties(){return{name:this.data.name,description:this.data.description,contents:this.data.contents,success:this.data.success,error_type:this.data.errorType??null}}},yue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ServerPromptCallEvent`)}get name(){return`server_prompt_call`}get properties(){return{name:this.data.name,description:this.data.description,success:this.data.success,error_type:this.data.errorType??null}}},bue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ServerContextEvent`)}get name(){return`server_context_${this.data.contextType}`}get properties(){return{context_type:this.data.contextType,notification_type:this.data.notificationType??null}}},xue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`MCPClientInitEvent`)}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}}},Sue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ConnectorInitEvent`)}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}}},Cue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ClientAddServerEvent`)}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}}},wue=class extends rO{constructor(e){super(),this.data=e}static{a(this,`ClientRemoveServerEvent`)}get name(){return`client_remove_server`}get properties(){return{server_name:this.data.serverName}}};function aO(e){return e._llm_type||e.constructor.name.toLowerCase()}a(aO,`getModelProvider`);function oO(e){if(`_identifyingParams`in e){let t=e._identifyingParams;if(typeof t==`object`&&t){for(let e of[`model`,`modelName`,`model_name`,`modelId`,`model_id`,`deploymentName`,`deployment_name`])if(e in t)return String(t[e])}}return e.model||e.modelName||e.constructor.name}a(oO,`getModelName`);function Tue(e){return[aO(e),oO(e)]}a(Tue,`extractModelInfo`);function sO(){if(typeof globalThis<`u`&&globalThis.crypto&&typeof globalThis.crypto.randomUUID==`function`)return globalThis.crypto.randomUUID();if(typeof globalThis<`u`&&globalThis.crypto&&typeof globalThis.crypto.getRandomValues==`function`){let e=new Uint8Array(16);globalThis.crypto.getRandomValues(e);let t=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``);return`${t.substring(0,8)}-${t.substring(8,12)}-${t.substring(12,16)}-${t.substring(16,20)}-${t.substring(20)}`}return`${Date.now()}-${Math.random().toString(36).substring(2,15)}-${Math.random().toString(36).substring(2,15)}`}a(sO,`generateUUID`);function cO(){if(typeof window<`u`&&window.crypto&&typeof window.crypto.getRandomValues==`function`){let e=new Uint8Array(8);return window.crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}if(typeof globalThis<`u`&&globalThis.crypto&&typeof globalThis.crypto.getRandomValues==`function`){let e=new Uint8Array(8);return globalThis.crypto.getRandomValues(e),Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}return Math.random().toString(36).substring(2,15)}a(cO,`secureRandomString`);var lO=`mcp_use_user_id`;function uO(){return typeof localStorage<`u`&&typeof localStorage.getItem==`function`&&typeof localStorage.setItem==`function`&&typeof localStorage.removeItem==`function`}a(uO,`isLocalStorageFunctional`);function dO(){try{return typeof window<`u`&&typeof document<`u`?`browser`:`unknown`}catch{return`unknown`}}a(dO,`detectRuntimeEnvironment`);function fO(e){if(e===`browser`)try{if(uO())return localStorage.setItem(`__mcp_use_test__`,`1`),localStorage.removeItem(`__mcp_use_test__`),`localStorage`}catch{}return`session-only`}a(fO,`getStorageCapability`);var pO=null;function mO(){return pO===null&&(pO=dO()),pO}a(mO,`getRuntimeEnvironment`);var hO=class e{static{a(this,`Telemetry`)}static instance=null;PROJECT_API_KEY=`phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI`;HOST=`https://eu.i.posthog.com`;UNKNOWN_USER_ID=`UNKNOWN_USER_ID`;_currUserId=null;_posthogBrowserClient=null;_posthogLoading=null;_runtimeEnvironment;_storageCapability;_source;constructor(){this._runtimeEnvironment=mO(),this._storageCapability=fO(this._runtimeEnvironment),this._source=this._getSourceFromLocalStorage()||this._runtimeEnvironment;let e=this._checkTelemetryDisabled(),t=this._runtimeEnvironment!==`unknown`;e?(this._posthogBrowserClient=null,l.debug(`Telemetry disabled via localStorage`)):t?(l.debug(`Anonymized telemetry enabled. Set MCP_USE_ANONYMIZED_TELEMETRY=false in localStorage to disable.`),this._posthogLoading=this._initPostHogBrowser()):(this._posthogBrowserClient=null,l.debug(`Telemetry disabled - unknown environment: ${this._runtimeEnvironment}`))}_getSourceFromLocalStorage(){try{if(uO())return localStorage.getItem(`MCP_USE_TELEMETRY_SOURCE`)}catch{}return null}_checkTelemetryDisabled(){return!!(typeof window<`u`&&window.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||uO()&&localStorage.getItem(`MCP_USE_ANONYMIZED_TELEMETRY`)===`false`)}async _initPostHogBrowser(){try{let e=await J(()=>import(`./module-BXKdgN2b.js`),[]),t=e.default||e.posthog;if(!t||typeof t.init!=`function`)throw Error(`posthog-js module did not export expected interface`);t.init(this.PROJECT_API_KEY,{api_host:this.HOST,persistence:`localStorage`,autocapture:!1,capture_pageview:!1,disable_session_recording:!0,loaded:a(()=>{l.debug(`PostHog browser client initialized`)},`loaded`)}),this._posthogBrowserClient=t}catch(e){l.warn(`Failed to initialize PostHog browser telemetry: ${e}`),this._posthogBrowserClient=null}}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{uO()&&localStorage.setItem(`MCP_USE_TELEMETRY_SOURCE`,e)}catch{}l.debug(`Telemetry source set to: ${e}`)}getSource(){return this._source}get isEnabled(){return this._posthogBrowserClient!==null}get userId(){if(this._currUserId)return this._currUserId;try{switch(this._storageCapability){case`localStorage`:this._currUserId=this._getUserIdFromLocalStorage();break;default:try{this._currUserId=`session-${sO()}`}catch{this._currUserId=`session-${Date.now()}-${cO()}`}break}}catch{this._currUserId=this.UNKNOWN_USER_ID}return this._currUserId}_getUserIdFromLocalStorage(){try{if(!uO())throw Error(`localStorage is not available or not functional`);localStorage.setItem(`__mcp_use_test__`,`1`),localStorage.removeItem(`__mcp_use_test__`);let e=localStorage.getItem(lO);if(!e){try{e=sO()}catch{e=`${Date.now()}-${cO()}`}localStorage.setItem(lO,e)}return e}catch(e){l.debug(`Failed to access localStorage for user ID: ${e}`);let t;try{t=`session-${sO()}`}catch{t=`session-${Date.now()}-${cO()}`}return t}}async capture(e){if(this._posthogLoading&&await this._posthogLoading,!this._posthogBrowserClient)return;let t=this.userId,n={...e.properties};if(n.mcp_use_version=nO(),n.language=`typescript`,n.source=this._source,n.runtime=this._runtimeEnvironment,this._posthogBrowserClient)try{this._posthogBrowserClient.capture(e.name,{...n,distinct_id:t})}catch(t){l.debug(`Failed to track PostHog Browser event ${e.name}: ${t}`)}}async trackAgentExecution(e){if(!this.isEnabled)return;let t=new mue(e);await this.capture(t)}async trackServerRunFromServer(e,t){if(!this.isEnabled)return;let n=new hue(iO(e,t));await this.capture(n)}async trackServerInitialize(e){if(!this.isEnabled)return;let t=new gue(e);await this.capture(t)}async trackServerToolCall(e){if(!this.isEnabled)return;let t=new _ue(e);await this.capture(t)}async trackServerResourceCall(e){if(!this.isEnabled)return;let t=new vue(e);await this.capture(t)}async trackServerPromptCall(e){if(!this.isEnabled)return;let t=new yue(e);await this.capture(t)}async trackServerContext(e){if(!this.isEnabled)return;let t=new bue(e);await this.capture(t)}async trackMCPClientInit(e){if(!this.isEnabled)return;let t=new xue(e);await this.capture(t)}async trackConnectorInit(e){if(!this.isEnabled)return;let t=new Sue(e);await this.capture(t)}async trackClientAddServer(e,t){if(!this.isEnabled)return;let n=new Cue({serverName:e,serverConfig:t});await this.capture(n)}async trackClientRemoveServer(e){if(!this.isEnabled)return;let t=new wue({serverName:e});await this.capture(t)}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){if(this._posthogBrowserClient)try{this._posthogBrowserClient.identify(e,t)}catch(e){l.debug(`Failed to identify user: ${e}`)}}reset(){if(this._posthogBrowserClient)try{this._posthogBrowserClient.reset()}catch(e){l.debug(`Failed to reset user: ${e}`)}this._currUserId=null}flush(){}shutdown(){}async trackPackageDownload(e){}},gO=hO;function Eue(e){gO.getInstance().setSource(e)}a(Eue,`setTelemetrySource`);var Due=class{static{a(this,`BaseConnector`)}client=null;connectionManager=null;toolsCache=null;capabilitiesCache=null;serverInfoCache=null;connected=!1;opts;notificationHandlers=[];rootsCache=[];constructor(e={}){let t={...e,onSampling:e.onSampling??e.samplingCallback,onElicitation:e.onElicitation??e.elicitationCallback};e.samplingCallback&&!e.onSampling&&l.warn(`[BaseConnector] The "samplingCallback" option is deprecated. Use "onSampling" instead.`),e.elicitationCallback&&!e.onElicitation&&console.warn(`[BaseConnector] The "elicitationCallback" option is deprecated. Use "onElicitation" instead.`),this.opts=t,t.roots&&(this.rootsCache=[...t.roots]),t.onNotification&&this.notificationHandlers.push(t.onNotification)}trackConnectorInit(e){let t=this.constructor.name;hO.getInstance().trackConnectorInit({connectorType:t,...e}).catch(e=>l.debug(`Failed to track connector init: ${e}`))}onNotification(e){this.notificationHandlers.push(e),this.client&&this.setupNotificationHandler()}setupNotificationHandler(){if(!this.client)return;let e=a(async e=>{for(let t of this.notificationHandlers)try{await t(e)}catch(e){l.error(`Error in notification handler:`,e)}},`forwardToUserHandlers`);this.client.fallbackNotificationHandler=async t=>{switch(t.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 e(t)};let t=this.client._notificationHandlers;for(let n of[`notifications/progress`,`notifications/cancelled`]){let r=t.get(n);r&&t.set(n,async t=>{await r(t),await e(t)})}}async refreshToolsCache(){if(this.client)try{l.debug(`[Auto] Refreshing tools cache due to list_changed notification`),this.toolsCache=(await this.client.listTools()).tools??[],l.debug(`[Auto] Refreshed tools cache: ${this.toolsCache.length} tools`)}catch(e){l.warn(`[Auto] Failed to refresh tools cache:`,e)}}async onResourcesListChanged(){l.debug(`[Auto] Resources list changed - clients should re-fetch if needed`)}async onPromptsListChanged(){l.debug(`[Auto] Prompts list changed - clients should re-fetch if needed`)}async setRoots(e){this.rootsCache=[...e],this.client&&(l.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(c_,async(e,t)=>(l.debug(`Server requested roots list, returning ${this.rootsCache.length} root(s)`),{roots:this.rootsCache}))}setupSamplingHandler(){if(!this.client){l.debug(`setupSamplingHandler: No client available`);return}let e=this.opts.onSampling??this.opts.samplingCallback;if(!e){l.debug(`setupSamplingHandler: No sampling callback provided`);return}l.debug(`setupSamplingHandler: Setting up sampling request handler`),this.client.setRequestHandler(n_,async(t,n)=>(l.debug(`Server requested sampling, forwarding to callback`),await e(t.params))),l.debug(`setupSamplingHandler: Sampling handler registered successfully`)}setupElicitationHandler(){if(!this.client){l.debug(`setupElicitationHandler: No client available`);return}let e=this.opts.onElicitation??this.opts.elicitationCallback;if(!e){l.debug(`setupElicitationHandler: No elicitation callback provided`);return}l.debug(`setupElicitationHandler: Setting up elicitation request handler`),this.client.setRequestHandler(a_,async(t,n)=>(l.debug(`Server requested elicitation, forwarding to callback`),await e(t.params))),l.debug(`setupElicitationHandler: Elicitation handler registered successfully`)}async disconnect(){if(!this.connected){l.debug(`Not connected to MCP implementation`);return}l.debug(`Disconnecting from MCP implementation`),await this.cleanupResources(),this.connected=!1,l.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`);l.debug(`Caching server capabilities & tools`);let t=this.client.getServerCapabilities();this.capabilitiesCache=t||null;let n=this.client.getServerVersion();this.serverInfoCache=n||null;try{this.toolsCache=(await this.client.listTools(void 0,e)).tools??[],l.debug(`Fetched ${this.toolsCache.length} tools from server`)}catch(e){let t=e;t.code===-32601?l.debug(`Server does not implement tools/list, assuming no tools`):l.debug(`Failed to list tools, assuming empty:`,t.message),this.toolsCache=[]}return l.debug(`Server capabilities:`,t),l.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}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=()=>{},l.debug(`[BaseConnector] Added onprogress callback for tool '${e}' to enable progressToken`)),l.debug(`Calling tool '${e}' with args`,t);let i=await this.client.callTool({name:e,arguments:t},void 0,r);return l.debug(`Tool '${e}' returned`,i),i}async listTools(e){if(!this.client)throw Error(`MCP client is not connected`);l.debug(`[listTools] Fetching fresh tools from server...`);let t=await this.client.listTools(void 0,e),n=t.tools?[...t.tools]:[];return l.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 l.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 l.debug(`Server does not advertise resources capability, skipping`),{resources:[]};try{l.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 l.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 l.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`);l.debug(`[complete] Requesting completions for:`,e.ref);let n=await this.client.complete(e,t);return l.debug(`[complete] Received ${n.completion.values.length} suggestions`),n}async readResource(e,t){if(!this.client)throw Error(`MCP client is not connected`);return l.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 l.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 l.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 l.debug(`Server does not advertise prompts capability, skipping`),{prompts:[]};try{return l.debug(`Listing prompts`),await this.client.listPrompts()}catch(e){if(e.code===-32601)return l.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 l.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 l.debug(`Sending raw request '${e}' with params`,t),await this.client.request({method:e,params:t??{}},void 0,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}`;l.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}`;l.warn(n),e.push(n)}finally{this.connectionManager=null}this.toolsCache=null,e.length&&l.warn(`Resource cleanup finished with ${e.length} issue(s)`)}},Oue=class{static{a(this,`ConnectionManager`)}_readyPromise;_readyResolver;_donePromise;_doneResolver;_exception=null;_connection=null;_task=null;_abortController=null;constructor(){this.reset()}async start(){if(this.reset(),l.debug(`Starting ${this.constructor.name}`),this._task=this.connectionTask(),await this._readyPromise,this._exception)throw this._exception;if(this._connection===null)throw Error(`Connection was not established`);return this._connection}async stop(){if(this._task&&this._abortController){l.debug(`Cancelling ${this.constructor.name} task`),this._abortController.abort();try{await this._task}catch(e){e instanceof Error&&e.name===`AbortError`?l.debug(`${this.constructor.name} task aborted successfully`):l.warn(`Error stopping ${this.constructor.name} task: ${e}`)}}await this._donePromise,l.debug(`${this.constructor.name} task completed`)}reset(){this._readyPromise=new Promise(e=>this._readyResolver=e),this._donePromise=new Promise(e=>this._doneResolver=e),this._exception=null,this._connection=null,this._task=null,this._abortController=new AbortController}async connectionTask(){l.debug(`Running ${this.constructor.name} task`);try{this._connection=await this.establishConnection(),l.debug(`${this.constructor.name} connected successfully`),this._readyResolver(),await this.waitForAbort()}catch(e){this._exception=e,l.error(`Error in ${this.constructor.name} task: ${e}`),this._readyResolver()}finally{if(this._connection!==null){try{await this.closeConnection(this._connection)}catch(e){l.warn(`Error closing connection in ${this.constructor.name}: ${e}`)}this._connection=null}this._doneResolver()}}async waitForAbort(){return new Promise((e,t)=>{if(!this._abortController)return;let n=this._abortController.signal;if(n.aborted){e();return}let r=a(()=>{n.removeEventListener(`abort`,r),e()},`onAbort`);n.addEventListener(`abort`,r)})}},_O=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.regexpCode=e.getEsmExportName=e.getProperty=e.safeStringify=e.stringify=e.strConcat=e.addCodeArg=e.str=e._=e.nil=e._Code=e.Name=e.IDENTIFIER=e._CodeOrName=void 0;var t=class{};e._CodeOrName=t,e.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var n=class extends t{constructor(t){if(super(),!e.IDENTIFIER.test(t))throw Error(`CodeGen: name must be a valid identifier`);this.str=t}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};e.Name=n;var r=class extends t{constructor(e){super(),this._items=typeof e==`string`?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let e=this._items[0];return e===``||e===`""`}get str(){return this._str??=this._items.reduce((e,t)=>`${e}${t}`,``)}get names(){return this._names??=this._items.reduce((e,t)=>(t instanceof n&&(e[t.str]=(e[t.str]||0)+1),e),{})}};e._Code=r,e.nil=new r(``);function i(e,...t){let n=[e[0]],i=0;for(;i<t.length;)s(n,t[i]),n.push(e[++i]);return new r(n)}e._=i;var a=new r(`+`);function o(e,...t){let n=[p(e[0])],i=0;for(;i<t.length;)n.push(a),s(n,t[i]),n.push(a,p(e[++i]));return c(n),new r(n)}e.str=o;function s(e,t){t instanceof r?e.push(...t._items):t instanceof n?e.push(t):e.push(d(t))}e.addCodeArg=s;function c(e){let t=1;for(;t<e.length-1;){if(e[t]===a){let n=l(e[t-1],e[t+1]);if(n!==void 0){e.splice(t-1,3,n);continue}e[t++]=`+`}t++}}function l(e,t){if(t===`""`)return e;if(e===`""`)return t;if(typeof e==`string`)return t instanceof n||e[e.length-1]!==`"`?void 0:typeof t==`string`?t[0]===`"`?e.slice(0,-1)+t.slice(1):void 0:`${e.slice(0,-1)}${t}"`;if(typeof t==`string`&&t[0]===`"`&&!(e instanceof n))return`"${e}${t.slice(1)}`}function u(e,t){return t.emptyStr()?e:e.emptyStr()?t:o`${e}${t}`}e.strConcat=u;function d(e){return typeof e==`number`||typeof e==`boolean`||e===null?e:p(Array.isArray(e)?e.join(`,`):e)}function f(e){return new r(p(e))}e.stringify=f;function p(e){return JSON.stringify(e).replace(/\u2028/g,`\\u2028`).replace(/\u2029/g,`\\u2029`)}e.safeStringify=p;function m(t){return typeof t==`string`&&e.IDENTIFIER.test(t)?new r(`.${t}`):i`[${t}]`}e.getProperty=m;function h(t){if(typeof t==`string`&&e.IDENTIFIER.test(t))return new r(`${t}`);throw Error(`CodeGen: invalid export name: ${t}, use explicit $id name mapping`)}e.getEsmExportName=h;function g(e){return new r(e.toString())}e.regexpCode=g})),vO=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.ValueScope=e.ValueScopeName=e.Scope=e.varKinds=e.UsedValueState=void 0;var t=_O(),n=class extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`),this.value=e.value}},r;(function(e){e[e.Started=0]=`Started`,e[e.Completed=1]=`Completed`})(r||(e.UsedValueState=r={})),e.varKinds={const:new t.Name(`const`),let:new t.Name(`let`),var:new t.Name(`var`)};var i=class{constructor({prefixes:e,parent:t}={}){this._names={},this._prefixes=e,this._parent=t}toName(e){return e instanceof t.Name?e:this.name(e)}name(e){return new t.Name(this._newName(e))}_newName(e){let t=this._names[e]||this._nameGroup(e);return`${e}${t.index++}`}_nameGroup(e){if((this._parent?._prefixes)?.has(e)||this._prefixes&&!this._prefixes.has(e))throw Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}};e.Scope=i;var a=class extends t.Name{constructor(e,t){super(t),this.prefix=e}setValue(e,{property:n,itemIndex:r}){this.value=e,this.scopePath=(0,t._)`.${new t.Name(n)}[${r}]`}};e.ValueScopeName=a;var o=(0,t._)`\n`;e.ValueScope=class extends i{constructor(e){super(e),this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?o:t.nil}}get(){return this._scope}name(e){return new a(e,this._newName(e))}value(e,t){if(t.ref===void 0)throw Error(`CodeGen: ref must be passed in value`);let n=this.toName(e),{prefix:r}=n,i=t.key??t.ref,a=this._values[r];if(a){let e=a.get(i);if(e)return e}else a=this._values[r]=new Map;a.set(i,n);let o=this._scope[r]||(this._scope[r]=[]),s=o.length;return o[s]=t.ref,n.setValue(t,{property:r,itemIndex:s}),n}getValue(e,t){let n=this._values[e];if(n)return n.get(t)}scopeRefs(e,n=this._values){return this._reduceValues(n,n=>{if(n.scopePath===void 0)throw Error(`CodeGen: name "${n}" has no value`);return(0,t._)`${e}${n.scopePath}`})}scopeCode(e=this._values,t,n){return this._reduceValues(e,e=>{if(e.value===void 0)throw Error(`CodeGen: name "${e}" has no value`);return e.value.code},t,n)}_reduceValues(i,a,o={},s){let c=t.nil;for(let l in i){let u=i[l];if(!u)continue;let d=o[l]=o[l]||new Map;u.forEach(i=>{if(d.has(i))return;d.set(i,r.Started);let o=a(i);if(o){let n=this.opts.es5?e.varKinds.var:e.varKinds.const;c=(0,t._)`${c}${n} ${i} = ${o};${this.opts._n}`}else if(o=s?.(i))c=(0,t._)`${c}${o}${this.opts._n}`;else throw new n(i);d.set(i,r.Completed)})}return c}}})),yO=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.or=e.and=e.not=e.CodeGen=e.operators=e.varKinds=e.ValueScopeName=e.ValueScope=e.Scope=e.Name=e.regexpCode=e.stringify=e.getProperty=e.nil=e.strConcat=e.str=e._=void 0;var t=_O(),n=vO(),r=_O();Object.defineProperty(e,`_`,{enumerable:!0,get:function(){return r._}}),Object.defineProperty(e,`str`,{enumerable:!0,get:function(){return r.str}}),Object.defineProperty(e,`strConcat`,{enumerable:!0,get:function(){return r.strConcat}}),Object.defineProperty(e,`nil`,{enumerable:!0,get:function(){return r.nil}}),Object.defineProperty(e,`getProperty`,{enumerable:!0,get:function(){return r.getProperty}}),Object.defineProperty(e,`stringify`,{enumerable:!0,get:function(){return r.stringify}}),Object.defineProperty(e,`regexpCode`,{enumerable:!0,get:function(){return r.regexpCode}}),Object.defineProperty(e,`Name`,{enumerable:!0,get:function(){return r.Name}});var i=vO();Object.defineProperty(e,`Scope`,{enumerable:!0,get:function(){return i.Scope}}),Object.defineProperty(e,`ValueScope`,{enumerable:!0,get:function(){return i.ValueScope}}),Object.defineProperty(e,`ValueScopeName`,{enumerable:!0,get:function(){return i.ValueScopeName}}),Object.defineProperty(e,`varKinds`,{enumerable:!0,get:function(){return i.varKinds}}),e.operators={GT:new t._Code(`>`),GTE:new t._Code(`>=`),LT:new t._Code(`<`),LTE:new t._Code(`<=`),EQ:new t._Code(`===`),NEQ:new t._Code(`!==`),NOT:new t._Code(`!`),OR:new t._Code(`||`),AND:new t._Code(`&&`),ADD:new t._Code(`+`)};var a=class{optimizeNodes(){return this}optimizeNames(e,t){return this}},o=class extends a{constructor(e,t,n){super(),this.varKind=e,this.name=t,this.rhs=n}render({es5:e,_n:t}){let r=e?n.varKinds.var:this.varKind,i=this.rhs===void 0?``:` = ${this.rhs}`;return`${r} ${this.name}${i};`+t}optimizeNames(e,t){if(e[this.name.str])return this.rhs&&=k(this.rhs,e,t),this}get names(){return this.rhs instanceof t._CodeOrName?this.rhs.names:{}}},s=class extends a{constructor(e,t,n){super(),this.lhs=e,this.rhs=t,this.sideEffects=n}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,n){if(!(this.lhs instanceof t.Name&&!e[this.lhs.str]&&!this.sideEffects))return this.rhs=k(this.rhs,e,n),this}get names(){return O(this.lhs instanceof t.Name?{}:{...this.lhs.names},this.rhs)}},c=class extends s{constructor(e,t,n,r){super(e,n,r),this.op=t}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}},l=class extends a{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}},u=class extends a{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:``};`+e}},d=class extends a{constructor(e){super(),this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}},f=class extends a{constructor(e){super(),this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,t){return this.code=k(this.code,e,t),this}get names(){return this.code instanceof t._CodeOrName?this.code.names:{}}},p=class extends a{constructor(e=[]){super(),this.nodes=e}render(e){return this.nodes.reduce((t,n)=>t+n.render(e),``)}optimizeNodes(){let{nodes:e}=this,t=e.length;for(;t--;){let n=e[t].optimizeNodes();Array.isArray(n)?e.splice(t,1,...n):n?e[t]=n:e.splice(t,1)}return e.length>0?this:void 0}optimizeNames(e,t){let{nodes:n}=this,r=n.length;for(;r--;){let i=n[r];i.optimizeNames(e,t)||(A(e,i.names),n.splice(r,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce((e,t)=>D(e,t.names),{})}},m=class extends p{render(e){return`{`+e._n+super.render(e)+`}`+e._n}},h=class extends p{},g=class extends m{};g.kind=`else`;var _=class e extends m{constructor(e,t){super(t),this.condition=e}render(e){let t=`if(${this.condition})`+super.render(e);return this.else&&(t+=`else `+this.else.render(e)),t}optimizeNodes(){super.optimizeNodes();let t=this.condition;if(t===!0)return this.nodes;let n=this.else;if(n){let e=n.optimizeNodes();n=this.else=Array.isArray(e)?new g(e):e}if(n)return t===!1?n instanceof e?n:n.nodes:this.nodes.length?this:new e(j(t),n instanceof e?[n]:n.nodes);if(!(t===!1||!this.nodes.length))return this}optimizeNames(e,t){if(this.else=this.else?.optimizeNames(e,t),super.optimizeNames(e,t)||this.else)return this.condition=k(this.condition,e,t),this}get names(){let e=super.names;return O(e,this.condition),this.else&&D(e,this.else.names),e}};_.kind=`if`;var v=class extends m{};v.kind=`for`;var y=class extends v{constructor(e){super(),this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iteration=k(this.iteration,e,t),this}get names(){return D(super.names,this.iteration.names)}},b=class extends v{constructor(e,t,n,r){super(),this.varKind=e,this.name=t,this.from=n,this.to=r}render(e){let t=e.es5?n.varKinds.var:this.varKind,{name:r,from:i,to:a}=this;return`for(${t} ${r}=${i}; ${r}<${a}; ${r}++)`+super.render(e)}get names(){return O(O(super.names,this.from),this.to)}},x=class extends v{constructor(e,t,n,r){super(),this.loop=e,this.varKind=t,this.name=n,this.iterable=r}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iterable=k(this.iterable,e,t),this}get names(){return D(super.names,this.iterable.names)}},S=class extends m{constructor(e,t,n){super(),this.name=e,this.args=t,this.async=n}render(e){return`${this.async?`async `:``}function ${this.name}(${this.args})`+super.render(e)}};S.kind=`func`;var C=class extends p{render(e){return`return `+super.render(e)}};C.kind=`return`;var w=class extends m{render(e){let t=`try`+super.render(e);return this.catch&&(t+=this.catch.render(e)),this.finally&&(t+=this.finally.render(e)),t}optimizeNodes(){var e,t;return super.optimizeNodes(),(e=this.catch)==null||e.optimizeNodes(),(t=this.finally)==null||t.optimizeNodes(),this}optimizeNames(e,t){var n,r;return super.optimizeNames(e,t),(n=this.catch)==null||n.optimizeNames(e,t),(r=this.finally)==null||r.optimizeNames(e,t),this}get names(){let e=super.names;return this.catch&&D(e,this.catch.names),this.finally&&D(e,this.finally.names),e}},T=class extends m{constructor(e){super(),this.error=e}render(e){return`catch(${this.error})`+super.render(e)}};T.kind=`catch`;var E=class extends m{render(e){return`finally`+super.render(e)}};E.kind=`finally`,e.CodeGen=class{constructor(e,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...t,_n:t.lines?`
|
|
439
439
|
`:``},this._extScope=e,this._scope=new n.Scope({parent:e}),this._nodes=[new h]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,t){let n=this._extScope.value(e,t);return(this._values[n.prefix]||(this._values[n.prefix]=new Set)).add(n),n}getScopeValue(e,t){return this._extScope.getValue(e,t)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,t,n,r){let i=this._scope.toName(t);return n!==void 0&&r&&(this._constants[i.str]=n),this._leafNode(new o(e,i,n)),i}const(e,t,r){return this._def(n.varKinds.const,e,t,r)}let(e,t,r){return this._def(n.varKinds.let,e,t,r)}var(e,t,r){return this._def(n.varKinds.var,e,t,r)}assign(e,t,n){return this._leafNode(new s(e,t,n))}add(t,n){return this._leafNode(new c(t,e.operators.ADD,n))}code(e){return typeof e==`function`?e():e!==t.nil&&this._leafNode(new f(e)),this}object(...e){let n=[`{`];for(let[r,i]of e)n.length>1&&n.push(`,`),n.push(r),(r!==i||this.opts.es5)&&(n.push(`:`),(0,t.addCodeArg)(n,i));return n.push(`}`),new t._Code(n)}if(e,t,n){if(this._blockNode(new _(e)),t&&n)this.code(t).else().code(n).endIf();else if(t)this.code(t).endIf();else if(n)throw Error(`CodeGen: "else" body without "then" body`);return this}elseIf(e){return this._elseNode(new _(e))}else(){return this._elseNode(new g)}endIf(){return this._endBlockNode(_,g)}_for(e,t){return this._blockNode(e),t&&this.code(t).endFor(),this}for(e,t){return this._for(new y(e),t)}forRange(e,t,r,i,a=this.opts.es5?n.varKinds.var:n.varKinds.let){let o=this._scope.toName(e);return this._for(new b(a,o,t,r),()=>i(o))}forOf(e,r,i,a=n.varKinds.const){let o=this._scope.toName(e);if(this.opts.es5){let e=r instanceof t.Name?r:this.var(`_arr`,r);return this.forRange(`_i`,0,(0,t._)`${e}.length`,n=>{this.var(o,(0,t._)`${e}[${n}]`),i(o)})}return this._for(new x(`of`,a,o,r),()=>i(o))}forIn(e,r,i,a=this.opts.es5?n.varKinds.var:n.varKinds.const){if(this.opts.ownProperties)return this.forOf(e,(0,t._)`Object.keys(${r})`,i);let o=this._scope.toName(e);return this._for(new x(`in`,a,o,r),()=>i(o))}endFor(){return this._endBlockNode(v)}label(e){return this._leafNode(new l(e))}break(e){return this._leafNode(new u(e))}return(e){let t=new C;if(this._blockNode(t),this.code(e),t.nodes.length!==1)throw Error(`CodeGen: "return" should have one node`);return this._endBlockNode(C)}try(e,t,n){if(!t&&!n)throw Error(`CodeGen: "try" without "catch" and "finally"`);let r=new w;if(this._blockNode(r),this.code(e),t){let e=this.name(`e`);this._currNode=r.catch=new T(e),t(e)}return n&&(this._currNode=r.finally=new E,this.code(n)),this._endBlockNode(T,E)}throw(e){return this._leafNode(new d(e))}block(e,t){return this._blockStarts.push(this._nodes.length),e&&this.code(e).endBlock(t),this}endBlock(e){let t=this._blockStarts.pop();if(t===void 0)throw Error(`CodeGen: not in self-balancing block`);let n=this._nodes.length-t;if(n<0||e!==void 0&&n!==e)throw Error(`CodeGen: wrong number of nodes: ${n} vs ${e} expected`);return this._nodes.length=t,this}func(e,n=t.nil,r,i){return this._blockNode(new S(e,n,r)),i&&this.code(i).endFunc(),this}endFunc(){return this._endBlockNode(S)}optimize(e=1){for(;e-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,t){let n=this._currNode;if(n instanceof e||t&&n instanceof t)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${t?`${e.kind}/${t.kind}`:e.kind}"`)}_elseNode(e){let t=this._currNode;if(!(t instanceof _))throw Error(`CodeGen: "else" without "if"`);return this._currNode=t.else=e,this}get _root(){return this._nodes[0]}get _currNode(){let e=this._nodes;return e[e.length-1]}set _currNode(e){let t=this._nodes;t[t.length-1]=e}};function D(e,t){for(let n in t)e[n]=(e[n]||0)+(t[n]||0);return e}function O(e,n){return n instanceof t._CodeOrName?D(e,n.names):e}function k(e,n,r){if(e instanceof t.Name)return i(e);if(!a(e))return e;return new t._Code(e._items.reduce((e,n)=>(n instanceof t.Name&&(n=i(n)),n instanceof t._Code?e.push(...n._items):e.push(n),e),[]));function i(e){let t=r[e.str];return t===void 0||n[e.str]!==1?e:(delete n[e.str],t)}function a(e){return e instanceof t._Code&&e._items.some(e=>e instanceof t.Name&&n[e.str]===1&&r[e.str]!==void 0)}}function A(e,t){for(let n in t)e[n]=(e[n]||0)-(t[n]||0)}function j(e){return typeof e==`boolean`||typeof e==`number`||e===null?!e:(0,t._)`!${L(e)}`}e.not=j;var M=I(e.operators.AND);function N(...e){return e.reduce(M)}e.and=N;var P=I(e.operators.OR);function F(...e){return e.reduce(P)}e.or=F;function I(e){return(n,r)=>n===t.nil?r:r===t.nil?n:(0,t._)`${L(n)} ${e} ${L(r)}`}function L(e){return e instanceof t.Name?e:(0,t._)`(${e})`}})),bO=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.checkStrictMode=e.getErrorPath=e.Type=e.useFunc=e.setEvaluated=e.evaluatedPropsToName=e.mergeEvaluated=e.eachItem=e.unescapeJsonPointer=e.escapeJsonPointer=e.escapeFragment=e.unescapeFragment=e.schemaRefOrVal=e.schemaHasRulesButRef=e.schemaHasRules=e.checkUnknownRules=e.alwaysValidSchema=e.toHash=void 0;var t=yO(),n=_O();function r(e){let t={};for(let n of e)t[n]=!0;return t}e.toHash=r;function i(e,t){return typeof t==`boolean`?t:Object.keys(t).length===0?!0:(a(e,t),!o(t,e.self.RULES.all))}e.alwaysValidSchema=i;function a(e,t=e.schema){let{opts:n,self:r}=e;if(!n.strictSchema||typeof t==`boolean`)return;let i=r.RULES.keywords;for(let n in t)i[n]||x(e,`unknown keyword: "${n}"`)}e.checkUnknownRules=a;function o(e,t){if(typeof e==`boolean`)return!e;for(let n in e)if(t[n])return!0;return!1}e.schemaHasRules=o;function s(e,t){if(typeof e==`boolean`)return!e;for(let n in e)if(n!==`$ref`&&t.all[n])return!0;return!1}e.schemaHasRulesButRef=s;function c({topSchemaRef:e,schemaPath:n},r,i,a){if(!a){if(typeof r==`number`||typeof r==`boolean`)return r;if(typeof r==`string`)return(0,t._)`${r}`}return(0,t._)`${e}${n}${(0,t.getProperty)(i)}`}e.schemaRefOrVal=c;function l(e){return f(decodeURIComponent(e))}e.unescapeFragment=l;function u(e){return encodeURIComponent(d(e))}e.escapeFragment=u;function d(e){return typeof e==`number`?`${e}`:e.replace(/~/g,`~0`).replace(/\//g,`~1`)}e.escapeJsonPointer=d;function f(e){return e.replace(/~1/g,`/`).replace(/~0/g,`~`)}e.unescapeJsonPointer=f;function p(e,t){if(Array.isArray(e))for(let n of e)t(n);else t(e)}e.eachItem=p;function m({mergeNames:e,mergeToName:n,mergeValues:r,resultToName:i}){return(a,o,s,c)=>{let l=s===void 0?o:s instanceof t.Name?(o instanceof t.Name?e(a,o,s):n(a,o,s),s):o instanceof t.Name?(n(a,s,o),o):r(o,s);return c===t.Name&&!(l instanceof t.Name)?i(a,l):l}}e.mergeEvaluated={props:m({mergeNames:(e,n,r)=>e.if((0,t._)`${r} !== true && ${n} !== undefined`,()=>{e.if((0,t._)`${n} === true`,()=>e.assign(r,!0),()=>e.assign(r,(0,t._)`${r} || {}`).code((0,t._)`Object.assign(${r}, ${n})`))}),mergeToName:(e,n,r)=>e.if((0,t._)`${r} !== true`,()=>{n===!0?e.assign(r,!0):(e.assign(r,(0,t._)`${r} || {}`),g(e,r,n))}),mergeValues:(e,t)=>e===!0?!0:{...e,...t},resultToName:h}),items:m({mergeNames:(e,n,r)=>e.if((0,t._)`${r} !== true && ${n} !== undefined`,()=>e.assign(r,(0,t._)`${n} === true ? true : ${r} > ${n} ? ${r} : ${n}`)),mergeToName:(e,n,r)=>e.if((0,t._)`${r} !== true`,()=>e.assign(r,n===!0?!0:(0,t._)`${r} > ${n} ? ${r} : ${n}`)),mergeValues:(e,t)=>e===!0?!0:Math.max(e,t),resultToName:(e,t)=>e.var(`items`,t)})};function h(e,n){if(n===!0)return e.var(`props`,!0);let r=e.var(`props`,(0,t._)`{}`);return n!==void 0&&g(e,r,n),r}e.evaluatedPropsToName=h;function g(e,n,r){Object.keys(r).forEach(r=>e.assign((0,t._)`${n}${(0,t.getProperty)(r)}`,!0))}e.setEvaluated=g;var _={};function v(e,t){return e.scopeValue(`func`,{ref:t,code:_[t.code]||(_[t.code]=new n._Code(t.code))})}e.useFunc=v;var y;(function(e){e[e.Num=0]=`Num`,e[e.Str=1]=`Str`})(y||(e.Type=y={}));function b(e,n,r){if(e instanceof t.Name){let i=n===y.Num;return r?i?(0,t._)`"[" + ${e} + "]"`:(0,t._)`"['" + ${e} + "']"`:i?(0,t._)`"/" + ${e}`:(0,t._)`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,t.getProperty)(e).toString():`/`+d(e)}e.getErrorPath=b;function x(e,t,n=e.opts.strictSchema){if(n){if(t=`strict mode: ${t}`,n===!0)throw Error(t);e.self.logger.warn(t)}}e.checkStrictMode=x})),xO=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0});var t=yO();e.default={data:new t.Name(`data`),valCxt:new t.Name(`valCxt`),instancePath:new t.Name(`instancePath`),parentData:new t.Name(`parentData`),parentDataProperty:new t.Name(`parentDataProperty`),rootData:new t.Name(`rootData`),dynamicAnchors:new t.Name(`dynamicAnchors`),vErrors:new t.Name(`vErrors`),errors:new t.Name(`errors`),this:new t.Name(`this`),self:new t.Name(`self`),scope:new t.Name(`scope`),json:new t.Name(`json`),jsonPos:new t.Name(`jsonPos`),jsonLen:new t.Name(`jsonLen`),jsonPart:new t.Name(`jsonPart`)}})),SO=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.extendErrors=e.resetErrorsCount=e.reportExtraError=e.reportError=e.keyword$DataError=e.keywordError=void 0;var t=yO(),n=bO(),r=xO();e.keywordError={message:({keyword:e})=>(0,t.str)`must pass "${e}" keyword validation`},e.keyword$DataError={message:({keyword:e,schemaType:n})=>n?(0,t.str)`"${e}" keyword must be ${n} ($data)`:(0,t.str)`"${e}" keyword is invalid ($data)`};function i(n,r=e.keywordError,i,a){let{it:o}=n,{gen:s,compositeRule:u,allErrors:f}=o,p=d(n,r,i);a??(u||f)?c(s,p):l(o,(0,t._)`[${p}]`)}e.reportError=i;function a(t,n=e.keywordError,i){let{it:a}=t,{gen:o,compositeRule:s,allErrors:u}=a;c(o,d(t,n,i)),s||u||l(a,r.default.vErrors)}e.reportExtraError=a;function o(e,n){e.assign(r.default.errors,n),e.if((0,t._)`${r.default.vErrors} !== null`,()=>e.if(n,()=>e.assign((0,t._)`${r.default.vErrors}.length`,n),()=>e.assign(r.default.vErrors,null)))}e.resetErrorsCount=o;function s({gen:e,keyword:n,schemaValue:i,data:a,errsCount:o,it:s}){if(o===void 0)throw Error(`ajv implementation error`);let c=e.name(`err`);e.forRange(`i`,o,r.default.errors,o=>{e.const(c,(0,t._)`${r.default.vErrors}[${o}]`),e.if((0,t._)`${c}.instancePath === undefined`,()=>e.assign((0,t._)`${c}.instancePath`,(0,t.strConcat)(r.default.instancePath,s.errorPath))),e.assign((0,t._)`${c}.schemaPath`,(0,t.str)`${s.errSchemaPath}/${n}`),s.opts.verbose&&(e.assign((0,t._)`${c}.schema`,i),e.assign((0,t._)`${c}.data`,a))})}e.extendErrors=s;function c(e,n){let i=e.const(`err`,n);e.if((0,t._)`${r.default.vErrors} === null`,()=>e.assign(r.default.vErrors,(0,t._)`[${i}]`),(0,t._)`${r.default.vErrors}.push(${i})`),e.code((0,t._)`${r.default.errors}++`)}function l(e,n){let{gen:r,validateName:i,schemaEnv:a}=e;a.$async?r.throw((0,t._)`new ${e.ValidationError}(${n})`):(r.assign((0,t._)`${i}.errors`,n),r.return(!1))}var u={keyword:new t.Name(`keyword`),schemaPath:new t.Name(`schemaPath`),params:new t.Name(`params`),propertyName:new t.Name(`propertyName`),message:new t.Name(`message`),schema:new t.Name(`schema`),parentSchema:new t.Name(`parentSchema`)};function d(e,n,r){let{createErrors:i}=e.it;return i===!1?(0,t._)`{}`:f(e,n,r)}function f(e,t,n={}){let{gen:r,it:i}=e,a=[p(i,n),m(e,n)];return h(e,t,a),r.object(...a)}function p({errorPath:e},{instancePath:i}){let a=i?(0,t.str)`${e}${(0,n.getErrorPath)(i,n.Type.Str)}`:e;return[r.default.instancePath,(0,t.strConcat)(r.default.instancePath,a)]}function m({keyword:e,it:{errSchemaPath:r}},{schemaPath:i,parentSchema:a}){let o=a?r:(0,t.str)`${r}/${e}`;return i&&(o=(0,t.str)`${o}${(0,n.getErrorPath)(i,n.Type.Str)}`),[u.schemaPath,o]}function h(e,{params:n,message:i},a){let{keyword:o,data:s,schemaValue:c,it:l}=e,{opts:d,propertyName:f,topSchemaRef:p,schemaPath:m}=l;a.push([u.keyword,o],[u.params,typeof n==`function`?n(e):n||(0,t._)`{}`]),d.messages&&a.push([u.message,typeof i==`function`?i(e):i]),d.verbose&&a.push([u.schema,c],[u.parentSchema,(0,t._)`${p}${m}`],[r.default.data,s]),f&&a.push([u.propertyName,f])}})),kue=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.boolOrEmptySchema=e.topBoolOrEmptySchema=void 0;var t=SO(),n=yO(),r=xO(),i={message:`boolean schema is false`};function a(e){let{gen:t,schema:i,validateName:a}=e;i===!1?s(e,!1):typeof i==`object`&&i.$async===!0?t.return(r.default.data):(t.assign((0,n._)`${a}.errors`,null),t.return(!0))}e.topBoolOrEmptySchema=a;function o(e,t){let{gen:n,schema:r}=e;r===!1?(n.var(t,!1),s(e)):n.var(t,!0)}e.boolOrEmptySchema=o;function s(e,n){let{gen:r,data:a}=e,o={gen:r,keyword:`false schema`,data:a,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,t.reportError)(o,i,void 0,n)}})),CO=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.getRules=e.isJSONType=void 0;var t=new Set([`string`,`number`,`integer`,`boolean`,`null`,`object`,`array`]);function n(e){return typeof e==`string`&&t.has(e)}e.isJSONType=n;function r(){let e={number:{type:`number`,rules:[]},string:{type:`string`,rules:[]},array:{type:`array`,rules:[]},object:{type:`object`,rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}e.getRules=r})),wO=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.shouldUseRule=e.shouldUseGroup=e.schemaHasRulesForType=void 0;function t({schema:e,self:t},r){let i=t.RULES.types[r];return i&&i!==!0&&n(e,i)}e.schemaHasRulesForType=t;function n(e,t){return t.rules.some(t=>r(e,t))}e.shouldUseGroup=n;function r(e,t){return e[t.keyword]!==void 0||t.definition.implements?.some(t=>e[t]!==void 0)}e.shouldUseRule=r})),TO=i((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.reportTypeError=e.checkDataTypes=e.checkDataType=e.coerceAndCheckDataType=e.getJSONTypes=e.getSchemaTypes=e.DataType=void 0;var t=CO(),n=wO(),r=SO(),i=yO(),a=bO(),o;(function(e){e[e.Correct=0]=`Correct`,e[e.Wrong=1]=`Wrong`})(o||(e.DataType=o={}));function s(e){let t=c(e.type);if(t.includes(`null`)){if(e.nullable===!1)throw Error(`type: null contradicts nullable: false`)}else{if(!t.length&&e.nullable!==void 0)throw Error(`"nullable" cannot be used without "type"`);e.nullable===!0&&t.push(`null`)}return t}e.getSchemaTypes=s;function c(e){let n=Array.isArray(e)?e:e?[e]:[];if(n.every(t.isJSONType))return n;throw Error(`type must be JSONType or JSONType[]: `+n.join(`,`))}e.getJSONTypes=c;function l(e,t){let{gen:r,data:i,opts:a}=e,s=d(t,a.coerceTypes),c=t.length>0&&!(s.length===0&&t.length===1&&(0,n.schemaHasRulesForType)(e,t[0]));if(c){let n=h(t,i,a.strictNumbers,o.Wrong);r.if(n,()=>{s.length?f(e,t,s):_(e)})}return c}e.coerceAndCheckDataType=l;var u=new Set([`string`,`number`,`integer`,`boolean`,`null`]);function d(e,t){return t?e.filter(e=>u.has(e)||t===`array`&&e===`array`):[]}function f(e,t,n){let{gen:r,data:a,opts:o}=e,s=r.let(`dataType`,(0,i._)`typeof ${a}`),c=r.let(`coerced`,(0,i._)`undefined`);o.coerceTypes===`array`&&r.if((0,i._)`${s} == 'object' && Array.isArray(${a}) && ${a}.length == 1`,()=>r.assign(a,(0,i._)`${a}[0]`).assign(s,(0,i._)`typeof ${a}`).if(h(t,a,o.strictNumbers),()=>r.assign(c,a))),r.if((0,i._)`${c} !== undefined`);for(let e of n)(u.has(e)||e===`array`&&o.coerceTypes===`array`)&&l(e);r.else(),_(e),r.endIf(),r.if((0,i._)`${c} !== undefined`,()=>{r.assign(a,c),p(e,c)});function l(e){switch(e){case`string`:r.elseIf((0,i._)`${s} == "number" || ${s} == "boolean"`).assign(c,(0,i._)`"" + ${a}`).elseIf((0,i._)`${a} === null`).assign(c,(0,i._)`""`);return;case`number`:r.elseIf((0,i._)`${s} == "boolean" || ${a} === null
|
|
440
440
|
|| (${s} == "string" && ${a} && ${a} == +${a})`).assign(c,(0,i._)`+${a}`);return;case`integer`:r.elseIf((0,i._)`${s} === "boolean" || ${a} === null
|
|
441
441
|
|| (${s} === "string" && ${a} && ${a} == +${a} && !(${a} % 1))`).assign(c,(0,i._)`+${a}`);return;case`boolean`:r.elseIf((0,i._)`${a} === "false" || ${a} === 0 || ${a} === null`).assign(c,!1).elseIf((0,i._)`${a} === "true" || ${a} === 1`).assign(c,!0);return;case`null`:r.elseIf((0,i._)`${a} === "" || ${a} === 0 || ${a} === false`),r.assign(c,null);return;case`array`:r.elseIf((0,i._)`${s} === "string" || ${s} === "number"
|
|
@@ -446,7 +446,7 @@ container holding the app. Specify either width or maxWidth, and either height o
|
|
|
446
446
|
`;break;case`id`:s=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.test(t)?r(parseInt(t,10)):n(new Dfe(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:i}));break;default:n(new Dfe(`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(`
|
|
447
447
|
`)?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 kfe(e){let t=[],n=``,r=0;for(;r<e.length;){let i=e.indexOf(`\r`,r),a=e.indexOf(`
|
|
448
448
|
`,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]===`
|
|
449
|
-
`&&r++}}return[t,n]}var Afe=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n}={}){let r;super({start(i){r=Ofe({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)}})}},jfe={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2},wk=class extends Error{constructor(e,t){super(`Streamable HTTP error: ${t}`),this.code=e}},Mfe=class{constructor(e,t){this._hasCompletedAuthFlow=!1,this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=t?.requestInit,this._authProvider=t?.authProvider,this._fetch=t?.fetch,this._fetchWithInit=Hde(t?.fetch,t?.requestInit),this._sessionId=t?.sessionId,this._reconnectionOptions=t?.reconnectionOptions??jfe}async _authThenStart(){if(!this._authProvider)throw new fk(`No auth provider`);let e;try{e=await hk(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(e){throw this.onerror?.(e),e}if(e!==`AUTHORIZED`)throw new fk;return await this._startOrAuthSse({resumptionToken:void 0})}async _commonHeaders(){let e={};if(this._authProvider){let t=await this._authProvider.tokens();t&&(e.Authorization=`Bearer ${t.access_token}`)}this._sessionId&&(e[`mcp-session-id`]=this._sessionId),this._protocolVersion&&(e[`mcp-protocol-version`]=this._protocolVersion);let t=KO(this._requestInit?.headers);return new Headers({...e,...t})}async _startOrAuthSse(e){let{resumptionToken:t}=e;try{let n=await this._commonHeaders();n.set(`Accept`,`text/event-stream`),t&&n.set(`last-event-id`,t);let r=await(this._fetch??fetch)(this._url,{method:`GET`,headers:n,signal:this._abortController?.signal});if(!r.ok){if(await r.body?.cancel(),r.status===401&&this._authProvider)return await this._authThenStart();if(r.status===405)return;throw new wk(r.status,`Failed to open SSE stream: ${r.statusText}`)}this._handleSseStream(r.body,e,!0)}catch(e){throw 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.`));return}let r=this._getNextReconnectionDelay(t);this._reconnectionTimeout=setTimeout(()=>{this._startOrAuthSse(e).catch(n=>{this.onerror?.(Error(`Failed to reconnect SSE stream: ${n instanceof Error?n.message:String(n)}`)),this._scheduleReconnection(e,t+1)})},r)}_handleSseStream(e,t,n){if(!e)return;let{onresumptiontoken:r,replayMessageId:i}=t,a,o=!1,s=!1;(async()=>{try{let t=e.pipeThrough(new TextDecoderStream).pipeThrough(new Afe({onRetry:e=>{this._serverRetryMs=e}})).getReader();for(;;){let{value:e,done:n}=await t.read();if(n)break;if(e.id&&(a=e.id,o=!0,r?.(e.id)),e.data&&(!e.event||e.event===`message`))try{let t=ig.parse(JSON.parse(e.data));tg(t)&&(s=!0,i!==void 0&&(t.id=i)),this.onmessage?.(t)}catch(e){this.onerror?.(e)}}(n||o)&&!s&&this._abortController&&!this._abortController.signal.aborted&&this._scheduleReconnection({resumptionToken:a,onresumptiontoken:r,replayMessageId:i},0)}catch(e){if(this.onerror?.(Error(`SSE stream disconnected: ${e}`)),(n||o)&&!s&&this._abortController&&!this._abortController.signal.aborted)try{this._scheduleReconnection({resumptionToken:a,onresumptiontoken:r,replayMessageId:i},0)}catch(e){this.onerror?.(Error(`Failed to reconnect: ${e instanceof Error?e.message:String(e)}`))}}})()}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){if(!this._authProvider)throw new fk(`No auth provider`);if(await hk(this._authProvider,{serverUrl:this._url,authorizationCode:e,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new fk(`Failed to authorize`)}async close(){this._reconnectionTimeout&&=(clearTimeout(this._reconnectionTimeout),void 0),this._abortController?.abort(),this.onclose?.()}async send(e,t){try{let{resumptionToken:n,onresumptiontoken:r}=t||{};if(n){this._startOrAuthSse({resumptionToken:n,replayMessageId:Qh(e)?e.id:void 0}).catch(e=>this.onerror?.(e));return}let i=await this._commonHeaders();i.set(`content-type`,`application/json`),i.set(`accept`,`application/json, text/event-stream`);let a={...this._requestInit,method:`POST`,headers:i,body:JSON.stringify(e),signal:this._abortController?.signal},o=await(this._fetch??fetch)(this._url,a),s=o.headers.get(`mcp-session-id`);if(s&&(this._sessionId=s),!o.ok){let t=await o.text().catch(()=>null);if(o.status===401&&this._authProvider){if(this._hasCompletedAuthFlow)throw new wk(401,`Server returned 401 after successful authentication`);let{resourceMetadataUrl:t,scope:n}=_k(o);if(this._resourceMetadataUrl=t,this._scope=n,await hk(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new fk;return this._hasCompletedAuthFlow=!0,this.send(e)}if(o.status===403&&this._authProvider){let{resourceMetadataUrl:t,scope:n,error:r}=_k(o);if(r===`insufficient_scope`){let r=o.headers.get(`WWW-Authenticate`);if(this._lastUpscopingHeader===r)throw new wk(403,`Server returned 403 after trying upscoping`);if(n&&(this._scope=n),t&&(this._resourceMetadataUrl=t),this._lastUpscopingHeader=r??void 0,await hk(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetch})!==`AUTHORIZED`)throw new fk;return this.send(e)}}throw new wk(o.status,`Error POSTing to endpoint: ${t}`)}if(this._hasCompletedAuthFlow=!1,this._lastUpscopingHeader=void 0,o.status===202){await o.body?.cancel(),Sae(e)&&this._startOrAuthSse({resumptionToken:void 0}).catch(e=>this.onerror?.(e));return}let c=(Array.isArray(e)?e:[e]).filter(e=>`method`in e&&`id`in e&&e.id!==void 0).length>0,l=o.headers.get(`content-type`);if(c)if(l?.includes(`text/event-stream`))this._handleSseStream(o.body,{onresumptiontoken:r},!1);else if(l?.includes(`application/json`)){let e=await o.json(),t=Array.isArray(e)?e.map(e=>ig.parse(e)):[ig.parse(e)];for(let e of t)this.onmessage?.(e)}else throw await o.body?.cancel(),new wk(-1,`Unexpected content type: ${l}`);else await o.body?.cancel()}catch(e){throw 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.body?.cancel(),!n.ok&&n.status!==405)throw new wk(n.status,`Failed to terminate session: ${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})}},Nfe=class extends Event{constructor(e,t){super(e),this.code=t?.code??void 0,this.message=t?.message??void 0}[Symbol.for(`nodejs.util.inspect.custom`)](e,t,n){return n(Ffe(this),t)}[Symbol.for(`Deno.customInspect`)](e,t){return e(Ffe(this),t)}};function Pfe(e){let t=globalThis.DOMException;return typeof t==`function`?new t(e,`SyntaxError`):SyntaxError(e)}function Tk(e){return e instanceof Error?`errors`in e&&Array.isArray(e.errors)?e.errors.map(Tk).join(`, `):`cause`in e&&e.cause instanceof Error?`${e}: ${Tk(e.cause)}`:e.message:`${e}`}function Ffe(e){return{type:e.type,message:e.message,code:e.code,defaultPrevented:e.defaultPrevented,cancelable:e.cancelable,timeStamp:e.timeStamp}}var Ek=e=>{throw TypeError(e)},Dk=(e,t,n)=>t.has(e)||Ek(`Cannot `+n),Ok=(e,t,n)=>(Dk(e,t,`read from private field`),n?n.call(e):t.get(e)),kk=(e,t,n)=>t.has(e)?Ek(`Cannot add the same private member more than once`):t instanceof WeakSet?t.add(e):t.set(e,n),Ak=(e,t,n,r)=>(Dk(e,t,`write to private field`),t.set(e,n),n),jk=(e,t,n)=>(Dk(e,t,`access private method`),n),Mk,Nk,Pk,Fk,Ik,Lk,Rk,zk,Bk,Vk,Hk,Uk,Wk,Gk,Kk,qk,Jk,Yk,Xk,Zk,Qk,$k,eA,tA=class extends EventTarget{constructor(e,t){super(),kk(this,Gk),this.CONNECTING=0,this.OPEN=1,this.CLOSED=2,kk(this,Mk),kk(this,Nk),kk(this,Pk),kk(this,Fk),kk(this,Ik),kk(this,Lk),kk(this,Rk),kk(this,zk,null),kk(this,Bk),kk(this,Vk),kk(this,Hk,null),kk(this,Uk,null),kk(this,Wk,null),kk(this,qk,async e=>{var t;Ok(this,Vk).reset();let{body:n,redirected:r,status:i,headers:a}=e;if(i===204){jk(this,Gk,Qk).call(this,`Server sent HTTP 204, not reconnecting`,204),this.close();return}if(r?Ak(this,Pk,new URL(e.url)):Ak(this,Pk,void 0),i!==200){jk(this,Gk,Qk).call(this,`Non-200 status code (${i})`,i);return}if(!(a.get(`content-type`)||``).startsWith(`text/event-stream`)){jk(this,Gk,Qk).call(this,`Invalid content type, expected "text/event-stream"`,i);return}if(Ok(this,Mk)===this.CLOSED)return;Ak(this,Mk,this.OPEN);let o=new Event(`open`);if((t=Ok(this,Wk))==null||t.call(this,o),this.dispatchEvent(o),typeof n!=`object`||!n||!(`getReader`in n)){jk(this,Gk,Qk).call(this,`Invalid response body, expected a web ReadableStream`,i),this.close();return}let s=new TextDecoder,c=n.getReader(),l=!0;do{let{done:e,value:t}=await c.read();t&&Ok(this,Vk).feed(s.decode(t,{stream:!e})),e&&(l=!1,Ok(this,Vk).reset(),jk(this,Gk,$k).call(this))}while(l)}),kk(this,Jk,e=>{Ak(this,Bk,void 0),!(e.name===`AbortError`||e.type===`aborted`)&&jk(this,Gk,$k).call(this,Tk(e))}),kk(this,Xk,e=>{typeof e.id==`string`&&Ak(this,zk,e.id);let t=new MessageEvent(e.event||`message`,{data:e.data,origin:Ok(this,Pk)?Ok(this,Pk).origin:Ok(this,Nk).origin,lastEventId:e.id||``});Ok(this,Uk)&&(!e.event||e.event===`message`)&&Ok(this,Uk).call(this,t),this.dispatchEvent(t)}),kk(this,Zk,e=>{Ak(this,Lk,e)}),kk(this,eA,()=>{Ak(this,Rk,void 0),Ok(this,Mk)===this.CONNECTING&&jk(this,Gk,Kk).call(this)});try{if(e instanceof URL)Ak(this,Nk,e);else if(typeof e==`string`)Ak(this,Nk,new URL(e,Ife()));else throw Error(`Invalid URL`)}catch{throw Pfe(`An invalid or illegal string was specified`)}Ak(this,Vk,Ofe({onEvent:Ok(this,Xk),onRetry:Ok(this,Zk)})),Ak(this,Mk,this.CONNECTING),Ak(this,Lk,3e3),Ak(this,Ik,t?.fetch??globalThis.fetch),Ak(this,Fk,t?.withCredentials??!1),jk(this,Gk,Kk).call(this)}get readyState(){return Ok(this,Mk)}get url(){return Ok(this,Nk).href}get withCredentials(){return Ok(this,Fk)}get onerror(){return Ok(this,Hk)}set onerror(e){Ak(this,Hk,e)}get onmessage(){return Ok(this,Uk)}set onmessage(e){Ak(this,Uk,e)}get onopen(){return Ok(this,Wk)}set onopen(e){Ak(this,Wk,e)}addEventListener(e,t,n){let r=t;super.addEventListener(e,r,n)}removeEventListener(e,t,n){let r=t;super.removeEventListener(e,r,n)}close(){Ok(this,Rk)&&clearTimeout(Ok(this,Rk)),Ok(this,Mk)!==this.CLOSED&&(Ok(this,Bk)&&Ok(this,Bk).abort(),Ak(this,Mk,this.CLOSED),Ak(this,Bk,void 0))}};Mk=new WeakMap,Nk=new WeakMap,Pk=new WeakMap,Fk=new WeakMap,Ik=new WeakMap,Lk=new WeakMap,Rk=new WeakMap,zk=new WeakMap,Bk=new WeakMap,Vk=new WeakMap,Hk=new WeakMap,Uk=new WeakMap,Wk=new WeakMap,Gk=new WeakSet,Kk=function(){Ak(this,Mk,this.CONNECTING),Ak(this,Bk,new AbortController),Ok(this,Ik)(Ok(this,Nk),jk(this,Gk,Yk).call(this)).then(Ok(this,qk)).catch(Ok(this,Jk))},qk=new WeakMap,Jk=new WeakMap,Yk=function(){let e={mode:`cors`,redirect:`follow`,headers:{Accept:`text/event-stream`,...Ok(this,zk)?{"Last-Event-ID":Ok(this,zk)}:void 0},cache:`no-store`,signal:Ok(this,Bk)?.signal};return`window`in globalThis&&(e.credentials=this.withCredentials?`include`:`same-origin`),e},Xk=new WeakMap,Zk=new WeakMap,Qk=function(e,t){var n;Ok(this,Mk)!==this.CLOSED&&Ak(this,Mk,this.CLOSED);let r=new Nfe(`error`,{code:t,message:e});(n=Ok(this,Hk))==null||n.call(this,r),this.dispatchEvent(r)},$k=function(e,t){var n;if(Ok(this,Mk)===this.CLOSED)return;Ak(this,Mk,this.CONNECTING);let r=new Nfe(`error`,{code:t,message:e});(n=Ok(this,Hk))==null||n.call(this,r),this.dispatchEvent(r),Ak(this,Rk,setTimeout(Ok(this,eA),Ok(this,Lk)))},eA=new WeakMap,tA.CONNECTING=0,tA.OPEN=1,tA.CLOSED=2;function Ife(){let e=`document`in globalThis?globalThis.document:void 0;return e&&typeof e==`object`&&`baseURI`in e&&typeof e.baseURI==`string`?e.baseURI:void 0}var Lfe=class extends Error{constructor(e,t,n){super(`SSE error: ${t}`),this.code=e,this.event=n}},Rfe=class{constructor(e,t){this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._eventSourceInit=t?.eventSourceInit,this._requestInit=t?.requestInit,this._authProvider=t?.authProvider,this._fetch=t?.fetch,this._fetchWithInit=Hde(t?.fetch,t?.requestInit)}async _authThenStart(){if(!this._authProvider)throw new fk(`No auth provider`);let e;try{e=await hk(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(e){throw this.onerror?.(e),e}if(e!==`AUTHORIZED`)throw new fk;return await this._startOrAuth()}async _commonHeaders(){let e={};if(this._authProvider){let t=await this._authProvider.tokens();t&&(e.Authorization=`Bearer ${t.access_token}`)}this._protocolVersion&&(e[`mcp-protocol-version`]=this._protocolVersion);let t=KO(this._requestInit?.headers);return new Headers({...e,...t})}_startOrAuth(){let e=this?._eventSourceInit?.fetch??this._fetch??fetch;return new Promise((t,n)=>{this._eventSource=new tA(this._url.href,{...this._eventSourceInit,fetch:async(t,n)=>{let r=await this._commonHeaders();r.set(`Accept`,`text/event-stream`);let i=await e(t,{...n,headers:r});if(i.status===401&&i.headers.has(`www-authenticate`)){let{resourceMetadataUrl:e,scope:t}=_k(i);this._resourceMetadataUrl=e,this._scope=t}return i}}),this._abortController=new AbortController,this._eventSource.onerror=e=>{if(e.code===401&&this._authProvider){this._authThenStart().then(t,n);return}let r=new Lfe(e.code,e.message,e);n(r),this.onerror?.(r)},this._eventSource.onopen=()=>{},this._eventSource.addEventListener(`endpoint`,e=>{let r=e;try{if(this._endpoint=new URL(r.data,this._url),this._endpoint.origin!==this._url.origin)throw Error(`Endpoint origin does not match connection origin: ${this._endpoint.origin}`)}catch(e){n(e),this.onerror?.(e),this.close();return}t()}),this._eventSource.onmessage=e=>{let t=e,n;try{n=ig.parse(JSON.parse(t.data))}catch(e){this.onerror?.(e);return}this.onmessage?.(n)}})}async start(){if(this._eventSource)throw Error(`SSEClientTransport already started! If using Client class, note that connect() calls start() automatically.`);return await this._startOrAuth()}async finishAuth(e){if(!this._authProvider)throw new fk(`No auth provider`);if(await hk(this._authProvider,{serverUrl:this._url,authorizationCode:e,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new fk(`Failed to authorize`)}async close(){this._abortController?.abort(),this._eventSource?.close(),this.onclose?.()}async send(e){if(!this._endpoint)throw Error(`Not connected`);try{let t=await this._commonHeaders();t.set(`content-type`,`application/json`);let n={...this._requestInit,method:`POST`,headers:t,body:JSON.stringify(e),signal:this._abortController?.signal},r=await(this._fetch??fetch)(this._endpoint,n);if(!r.ok){let t=await r.text().catch(()=>null);if(r.status===401&&this._authProvider){let{resourceMetadataUrl:t,scope:n}=_k(r);if(this._resourceMetadataUrl=t,this._scope=n,await hk(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new fk;return this.send(e)}throw Error(`Error POSTing to endpoint (HTTP ${r.status}): ${t}`)}await r.body?.cancel()}catch(e){throw this.onerror?.(e),e}}setProtocolVersion(e){this._protocolVersion=e}},zfe=class extends Oue{static{a(this,`SseConnectionManager`)}url;opts;_transport=null;reinitializing=!1;constructor(e,t){super(),this.url=typeof e==`string`?new URL(e):e,this.opts=t}async establishConnection(){let e=new Rfe(this.url,this.opts),t=e.send.bind(e);return e.send=async n=>{let r=a(async e=>{if(Array.isArray(e))for(let n of e)await t(n);else await t(e)},`sendMessage`);try{await r(n)}catch(t){if(t?.code===404&&e.sessionId&&!this.reinitializing){l.warn(`[SSE] Session not found (404), re-initializing per MCP spec...`),this.reinitializing=!0;try{e.sessionId=void 0,await this.reinitialize(e),l.debug(`[SSE] Re-initialization successful, retrying request`),await r(n)}finally{this.reinitializing=!1}}else throw t}},this._transport=e,l.debug(`${this.constructor.name} connected successfully`),e}async reinitialize(e){l.debug(`[SSE] Re-initialization triggered`)}async closeConnection(e){if(this._transport)try{await this._transport.close()}catch(e){l.warn(`Error closing SSE transport: ${e}`)}finally{this._transport=null}}},nA=class extends Due{static{a(this,`HttpConnector`)}baseUrl;headers;timeout;sseReadTimeout;customFetch;clientInfo;preferSse;disableSseFallback;gatewayUrl;serverId;reconnectionOptions;transportType=null;streamableTransport=null;constructor(e,t={}){super(t);let n=e.replace(/\/$/,``);this.gatewayUrl=t.gatewayUrl,this.serverId=t.serverId,this.gatewayUrl?(this.baseUrl=this.gatewayUrl.replace(/\/$/,``),this.headers={...t.headers??{}},this.headers[`X-Target-URL`]=n,this.serverId&&(this.headers[`X-Server-Id`]=this.serverId)):(this.baseUrl=n,this.headers={...t.headers??{}}),t.authToken&&(this.headers.Authorization=`Bearer ${t.authToken}`),this.timeout=t.timeout??1e4,this.sseReadTimeout=t.sseReadTimeout??3e5,this.customFetch=t.fetch,this.clientInfo=t.clientInfo??{name:`http-connector`,version:`1.0.0`},this.preferSse=t.preferSse??!1,this.disableSseFallback=t.disableSseFallback??!1,this.reconnectionOptions=t.reconnectionOptions}buildClientOptions(){return{...this.opts.clientOptions||{},capabilities:{...this.opts.clientOptions?.capabilities||{},roots:{listChanged:!0},...this.opts.onSampling?{sampling:{}}:{},...this.opts.onElicitation??this.opts.elicitationCallback?{elicitation:{form:{},url:{}}}:{}}}}unwrapStreamableError(e){return e instanceof wk?e:e instanceof Error&&e.cause instanceof wk?e.cause:null}classifyStreamableHttpFailure(e){let t=`Unknown error`,n=!1,r,i=this.unwrapStreamableError(e);if(i)return n=i.code===401,r=i.code,i.code===400&&i.message.includes(`Missing session ID`)?(t=`Server requires session ID (FastMCP compatibility) - using SSE transport`,l.warn(`\u26A0\uFE0F ${t}`)):i.code===404||i.code===405?(t=`Server returned ${i.code} - server likely doesn't support streamable HTTP`,l.debug(t)):(t=`Server returned ${i.code}: ${i.message}`,l.debug(t)),{fallbackReason:t,is401Error:n,httpStatusCode:r};if(e instanceof Error){let r=e.toString(),i=e.message||``;n=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) - using SSE transport`,l.warn(`\u26A0\uFE0F ${t}`)):r.includes(`405 Method Not Allowed`)||r.includes(`404 Not Found`)?(t=`Server doesn't support streamable HTTP (405/404)`,l.debug(t)):(t=`Streamable HTTP failed: ${e.message}`,l.debug(t))}return{fallbackReason:t,is401Error:n,httpStatusCode:r}}async connect(){if(this.connected){l.debug(`Already connected to MCP implementation`);return}let e=this.baseUrl;if(this.preferSse){l.debug(`Connecting to MCP implementation via HTTP/SSE: ${e}`),await this.connectWithSse(e);return}l.debug(`Connecting to MCP implementation via HTTP: ${e}`);try{l.debug(`🔄 Attempting streamable HTTP transport...`),await this.connectWithStreamableHttp(e),l.debug(`✅ Successfully connected via streamable HTTP`)}catch(t){l.debug(`Streamable HTTP connect failed`,t);let{fallbackReason:n,is401Error:r,httpStatusCode:i}=this.classifyStreamableHttpFailure(t);if(r){l.info(`Authentication required - skipping SSE fallback`),await this.cleanupResources();let e=Error(`Authentication required`);throw e.code=401,e}if(this.disableSseFallback)throw l.info(`SSE fallback disabled - failing connection`),await this.cleanupResources(),Error(`Streamable HTTP connection failed: ${n}`);l.debug(`🔄 Falling back to SSE transport...`);try{await this.connectWithSse(e)}catch(e){if(l.error(`Failed to connect with both transports:`),l.error(` Streamable HTTP: ${n}`),l.error(` SSE: ${e}`),await this.cleanupResources(),e?.message?.includes(`401`)||e?.message?.includes(`Unauthorized`)){let e=Error(`Authentication required`);throw e.code=401,e}let t=Error(`Could not connect to server with any available transport. Streamable HTTP: ${n}`);throw i!==void 0&&(Object.defineProperty(t,`code`,{value:i,writable:!1,enumerable:!0,configurable:!0}),l.debug(`Preserving HTTP status code ${i} in error for proxy fallback detection`)),t}}}async connectWithStreamableHttp(e){try{l.debug(`[HttpConnector] Connecting with Streamable HTTP`,{baseUrl:e,originalUrl:this.baseUrl,gatewayUrl:this.gatewayUrl||`none`,authProviderUrl:this.opts.authProvider?.serverUrl||`none`,headers:this.headers});let t=new Mfe(new URL(e),{authProvider:this.opts.authProvider,fetch:this.customFetch,requestInit:{headers:this.headers},reconnectionOptions:{maxReconnectionDelay:3e4,initialReconnectionDelay:1e3,reconnectionDelayGrowFactor:1.5,maxRetries:2,...this.reconnectionOptions}}),n=t;if(this.opts.wrapTransport){let e=this.baseUrl;n=this.opts.wrapTransport(n,e)}let r=this.buildClientOptions();l.debug(`Creating Client with capabilities:`,JSON.stringify(r.capabilities,null,2)),this.client=new Vde(this.clientInfo,r),this.setupRootsHandler(),l.debug(`Roots handler registered before connect`);try{await this.client.connect(n,{timeout:this.timeout});let e=t.sessionId;e?l.debug(`Session ID obtained: ${e}`):l.warn(`Session ID not available after connect - this may cause issues with SSE stream`)}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=t,this.connectionManager={stop:a(async()=>{if(this.streamableTransport)try{await this.streamableTransport.close()}catch(e){l.warn(`Error closing Streamable HTTP transport: ${e}`)}finally{this.streamableTransport=null}},`stop`)},this.connected=!0,this.transportType=`streamable-http`,this.setupNotificationHandler(),this.setupSamplingHandler(),this.setupElicitationHandler(),l.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}}async connectWithSse(e){try{this.connectionManager=new zfe(e,{authProvider:this.opts.authProvider,requestInit:{headers:this.headers}});let t=await this.connectionManager.start();if(this.opts.wrapTransport){let e=this.baseUrl;t=this.opts.wrapTransport(t,e)}let n=this.buildClientOptions();l.debug(`Creating Client with capabilities (SSE):`,JSON.stringify(n.capabilities,null,2)),this.client=new Vde(this.clientInfo,n),this.setupRootsHandler(),l.debug(`Roots handler registered before connect (SSE)`),await this.client.connect(t),this.connected=!0,this.transportType=`sse`,this.setupNotificationHandler(),this.setupSamplingHandler(),this.setupElicitationHandler(),l.debug(`Successfully connected to MCP implementation via HTTP/SSE: ${e}`),this.trackConnectorInit({serverUrl:this.baseUrl,publicIdentifier:`${this.baseUrl} (sse)`})}catch(e){throw await this.cleanupResources(),e}}get publicIdentifier(){return{type:`http`,url:this.baseUrl,transport:this.transportType||`unknown`}}getTransportType(){return this.transportType}async cleanupResources(){if(this.streamableTransport)try{await this.streamableTransport.terminateSession()}catch(e){l.debug(`Error terminating Streamable HTTP session: ${e}`)}await super.cleanupResources()}};function rA(e,t){return{onSampling:e?.onSampling??e?.samplingCallback??t?.onSampling??t?.samplingCallback,onElicitation:e?.onElicitation??e?.elicitationCallback??t?.onElicitation??t?.elicitationCallback,onNotification:e?.onNotification??t?.onNotification}}a(rA,`resolveCallbacks`);function iA(){return{name:`mcp-use`,title:`mcp-use`,version:nO(),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`}}a(iA,`getDefaultClientInfo`);function aA(e){let t=iA();if(!e||typeof e!=`object`)return t;let n=e;return!n.name||!n.version?t:{...t,...n}}a(aA,`normalizeClientInfo`);function Bfe(e,t){let n=aA(e.clientInfo);if(`command`in e&&`args`in e)throw Error(`Stdio connector is not supported in this environment. Stdio connections require Node.js and are only available in the Node.js MCPClient.`);if(`url`in e){let r=e.transport||`http`;return new nA(e.url,{headers:e.headers,fetch:e.fetch,authToken:e.auth_token||e.authToken,authProvider:e.authProvider,preferSse:e.preferSse||r===`sse`,disableSseFallback:e.disableSseFallback,clientInfo:n,...t})}throw Error(`Cannot determine connector type from config`)}a(Bfe,`createConnectorFromConfig`);var Vfe=class{static{a(this,`MCPSession`)}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}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)}},Hfe=class{static{a(this,`BaseMCPClient`)}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,gO.getInstance().trackClientAddServer(e,t)}removeServer(e){this.config.mcpServers?.[e]&&(delete this.config.mcpServers[e],this.activeSessions=this.activeSessions.filter(t=>t!==e),gO.getInstance().trackClientRemoveServer(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&&l.warn(`No MCP servers defined in config`),!n[e])throw Error(`Server '${e}' not found in config`);let r=new Vfe(await Promise.resolve(this.createConnectorFromConfig(n[e])));return t&&await r.initialize(),this.sessions[e]=r,this.activeSessions.includes(e)||this.activeSessions.push(e),r}async createAllSessions(e=!0){let t=this.config.mcpServers??{};Object.keys(t).length===0&&l.warn(`No MCP servers defined in config`);for(let n of Object.keys(t))await this.createSession(n,e);return this.sessions}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){l.warn(`No session exists for server ${e}, nothing to close`);return}try{l.debug(`Closing session for server ${e}`),await t.disconnect()}catch(t){l.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{l.debug(`Closing session for server ${n}`),await this.closeSession(n)}catch(e){let r=`Failed to close session for server '${n}': ${e}`;l.error(r),t.push(r)}t.length?l.error(`Encountered ${t.length} errors while closing sessions`):l.debug(`All sessions closed successfully`)}};function oA(e){let t=Object.keys(e.mcpServers??{});gO.getInstance().trackMCPClientInit({codeMode:!1,sandbox:!1,allCallbacks:!1,verify:!1,servers:t,numServers:t.length,isBrowser:!0}).catch(e=>l.debug(`Failed to track BrowserMCPClient init: ${e}`))}a(oA,`trackBrowserClientInit`);var Ufe=class e extends Hfe{static{a(this,`BrowserMCPClient`)}static getPackageVersion(){return nO()}constructor(e){super(e),oA(this.config)}static fromDict(t){return new e(t)}createConnectorFromConfig(e){let{url:t,headers:n,fetch:r,authToken:i,authProvider:a,wrapTransport:o,clientOptions:s,disableSseFallback:c,preferSse:u,timeout:d,sseReadTimeout:f,gatewayUrl:p,serverId:m,reconnectionOptions:h}=e;if(!t)throw Error(`Server URL is required`);let g=this.config,_=rA(e,g),v=aA(e.clientInfo??this.config.clientInfo),y={headers:n,fetch:r,authToken:i,authProvider:a,wrapTransport:o,clientOptions:s,onSampling:_.onSampling,onElicitation:_.onElicitation,onNotification:_.onNotification,disableSseFallback:c,preferSse:u,timeout:d,sseReadTimeout:f,clientInfo:v,gatewayUrl:p,serverId:m,reconnectionOptions:h};return l.debug(`[BrowserMCPClient] Connector options prepared (clientOptions: ${s?`provided`:`none`})`),new nA(t,y)}};function sA(e){let t=a(()=>{throw Error(`Invalid url to pass to open(): ${e}`)},`abort`),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(cA).join(`&`),n.hash=n.hash.slice(0,1)+encodeURIComponent(n.hash.slice(1)),n.href}a(sA,`sanitizeUrl`);function cA([e,t]){return`${encodeURIComponent(e)}${t.length>0?`=${encodeURIComponent(t)}`:``}`}a(cA,`sanitizeParam`);var Wfe=class{static{a(this,`LocalStorageKVStore`)}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}},Gfe=class e{static{a(this,`OAuthSessionStore`)}serverUrl;storageKeyPrefix;serverUrlHash;clientName;clientUri;logoUri;callbackUrl;scope;store;_cachedAuthServerUrl=null;_cachedMetadata=null;_refreshPromise=null;constructor(t,n,r){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:``),this.logoUri=n.logoUri||`https://mcp-use.com/logo.png`,this.callbackUrl=sA(n.callbackUrl||(typeof window<`u`?new URL(`/oauth/callback`,window.location.origin).toString():`/oauth/callback`)),this.scope=n.scope,this.store=r}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}:{}}}async tokens(){let e=this.getKey(`tokens`),t=await this.store.get(e);if(t)try{let e=JSON.parse(t);if(e.access_token&&e.refresh_token)try{let t=JSON.parse(atob(e.access_token.split(`.`)[1]));if(t.exp&&Date.now()>=(t.exp-30)*1e3){console.log(`[tokens] Access token expiring soon, refreshing...`);let t=await this._dedupedRefresh(e);if(t)return console.log(`[tokens] Refreshed successfully`),t}}catch{}return e}catch(t){console.warn(`[${this.storageKeyPrefix}] Failed to parse tokens:`,t),await this.store.remove(e);return}}async saveTokens(e){await this.store.set(this.getKey(`tokens`),JSON.stringify(e)),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`))}async clientInformation(){let e=this.getKey(`client_info`),t=await this.store.get(e);if(t)try{let n=JSON.parse(t),r=Array.isArray(n.redirect_uris)?n.redirect_uris:[];if(!(r.length===0||r.includes(this.redirectUrl))){console.info(`[${this.storageKeyPrefix}] Invalidating cached OAuth client info due to redirect URI mismatch.`),await this.store.remove(e),await this.store.remove(this.getKey(`tokens`)),await this.store.remove(this.getKey(`last_auth_url`));return}return n}catch(t){console.warn(`[${this.storageKeyPrefix}] Failed to parse client information:`,t),await this.store.remove(e);return}}async saveClientInformation(e){let t=this.getKey(`client_info`);await this.store.set(t,JSON.stringify(e))}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){switch(e){case`all`:await this.store.remove(this.getKey(`tokens`)),await this.store.remove(this.getKey(`client_info`)),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`));break;case`client`:await this.store.remove(this.getKey(`client_info`));break;case`tokens`:await this.store.remove(this.getKey(`tokens`));break;case`verifier`:await this.store.remove(this.getKey(`code_verifier`));break;default:break}}async storeAuthorizationState(e,t={}){let n=globalThis.crypto.randomUUID(),r=`${this.storageKeyPrefix}:state_${n}`,i=await this.store.get(this.getKey(`code_verifier`)),a={serverUrlHash:this.serverUrlHash,expiry:Date.now()+1e3*60*10,codeVerifier:i||void 0,providerOptions:{serverUrl:this.serverUrl,storageKeyPrefix:this.storageKeyPrefix,clientName:this.clientName,clientUri:this.clientUri,callbackUrl:this.callbackUrl,...t.extraProviderOptions??{}},flowType:t.flowType,returnUrl:t.returnUrl};e.searchParams.set(`state`,n);let o=sA(e.toString());return await this.store.set(r,JSON.stringify(a)),await this.store.set(this.getKey(`last_auth_url`),o),o}async _refresh(e){try{if(!this._cachedAuthServerUrl||!this._cachedMetadata){let e=(await yk(this.serverUrl)).authorization_servers?.[0];if(!e)return null;let t=await xk(e);if(!t)return null;this._cachedAuthServerUrl=e,this._cachedMetadata=t}let t=await this.clientInformation();if(!t)return null;let n=await Sk(this._cachedAuthServerUrl,{metadata:this._cachedMetadata,clientInformation:t,refreshToken:e.refresh_token});return await this.saveTokens(n),n}catch{return null}}async _dedupedRefresh(e){if(this._refreshPromise)return this._refreshPromise;this._refreshPromise=this._refresh(e);try{return await this._refreshPromise}finally{this._refreshPromise=null}}async forceRefresh(){let e=await this.store.get(this.getKey(`tokens`));if(!e)return null;let t;try{t=JSON.parse(e)}catch{return null}return t.refresh_token?this._dedupedRefresh(t):null}};async function lA(e){return typeof e==`string`?e:e instanceof URLSearchParams||e instanceof FormData?Object.fromEntries(e.entries()):e instanceof Blob?await e.text():e}a(lA,`serializeBody`);var uA=class{static{a(this,`BrowserOAuthClientProvider`)}serverUrl;staticClientInfo;session;preventAutoAuth;useRedirectFlow;oauthProxyUrl;connectionUrl;originalFetch;_lastOriginalResource=null;onPopupWindow;constructor(e,t={}){this.serverUrl=e,this.session=new Gfe(e,t,new Wfe),this.preventAutoAuth=t.preventAutoAuth,this.useRedirectFlow=t.useRedirectFlow,this.oauthProxyUrl=t.oauthProxyUrl,this.connectionUrl=t.connectionUrl,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}getKey(e){return this.session.getKey(e)}installFetchInterceptor(){if(!this.oauthProxyUrl){console.warn(`[BrowserOAuthProvider] No OAuth proxy URL configured, skipping fetch interceptor installation`);return}if(!this.originalFetch)this.originalFetch=window.fetch;else{console.warn(`[BrowserOAuthProvider] Fetch interceptor already installed`);return}let e=this.oauthProxyUrl,t=this.connectionUrl,n=this.serverUrl,r=this.originalFetch;console.log(`[BrowserOAuthProvider] Installing fetch interceptor with proxy: ${e}`),window.fetch=async(i,a)=>{let o=typeof i==`string`?i:i instanceof URL?i.toString():i.url;if(!(o.includes(`/.well-known/`)||o.match(/\/(register|token|authorize)$/)))return await r(i,a);try{let t=new URL(o),n=new URL(e);if(t.origin===n.origin&&(t.pathname.startsWith(n.pathname)||o.includes(`/inspector/api/oauth`)))return await r(i,a)}catch{}try{let i=o.includes(`/.well-known/`),s=i?`${e}/metadata?url=${encodeURIComponent(o)}`:`${e}/proxy`;if(console.log(`[OAuth Proxy] Routing ${i?`metadata`:`request`} through: ${s}`),i){let e={...a?.headers?Object.fromEntries(new Headers(a.headers)):{}};t&&(e[`X-Connection-URL`]=t);let i=new URL(s);n&&i.searchParams.set(`mcp_url`,n);let o=await r(i.toString(),{...a,method:`GET`,headers:e});try{if((o.headers.get(`content-type`)||``).includes(`application/json`)){let e=await o.clone().json(),t=e&&typeof e==`object`&&typeof e._original_resource==`string`?e._original_resource:null;t&&(this._lastOriginalResource=t)}}catch{}return o}let c=a?.body?await lA(a.body):void 0,l=await(await r(s,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:o,method:a?.method||`POST`,headers:a?.headers?Object.fromEntries(new Headers(a.headers)):{},body:c})})).json();return new Response(JSON.stringify(l.body),{status:l.status,statusText:l.statusText,headers:new Headers(l.headers)})}catch(e){return console.error(`[OAuth Proxy] Request failed, falling back to direct fetch:`,e),await r(i,a)}}}restoreFetch(){this.originalFetch&&=(console.log(`[BrowserOAuthProvider] Restoring original fetch`),window.fetch=this.originalFetch,void 0)}get redirectUrl(){return this.session.redirectUrl}get clientMetadata(){return this.session.clientMetadata}tokens(){return this.session.tokens()}saveTokens(e){return this.session.saveTokens(e)}async clientInformation(){return this.staticClientInfo?this.staticClientInfo:this.session.clientInformation()}async saveClientInformation(e){if(!this.staticClientInfo)return this.session.saveClientInformation(e)}codeVerifier(){return this.session.codeVerifier()}saveCodeVerifier(e){return this.session.saveCodeVerifier(e)}invalidateCredentials(e){return this.session.invalidateCredentials(e)}async prepareAuthorizationUrl(e){return this.rewriteResourceIfLocalProxy(e),this.session.storeAuthorizationState(e,{extraProviderOptions:{oauthProxyUrl:this.oauthProxyUrl,connectionUrl:this.connectionUrl,...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)}}rewriteResourceIfLocalProxy(e){let t=e.searchParams.get(`resource`),n=!!(t&&(t.includes(`/inspector/api/proxy`)||t.includes(`/api/proxy`)||t.includes(`localhost:3000`))),r=!!(t&&this.connectionUrl&&t===this.connectionUrl),i=!!(t&&(this._lastOriginalResource||this.serverUrl)&&(r||n)),a=this._lastOriginalResource||this.serverUrl;i&&a&&e.searchParams.set(`resource`,a)}getLastAttemptedAuthUrl(){let e=localStorage.getItem(this.getKey(`last_auth_url`));return e?sA(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}},dA=`mcp_auth_callback`,Kfe=`mcp_auth_callback`;function fA(e){try{return typeof localStorage<`u`&&!!localStorage.getItem(e)}catch{return!1}}a(fA,`hasStoredTokens`);function pA({popup:e,state:t,tokensKey:n,timeoutMs:r=5*6e4,closePollMs:i=1e3,closeGraceMs:o=2e4,expectedOrigin:s=typeof window<`u`?window.location.origin:``}){return new Promise(c=>{let l=!1,u=null,d=null,f=null,p=null,m=a(()=>{if(u&&=(clearInterval(u),null),d&&=(clearTimeout(d),null),f&&=(clearTimeout(f),null),typeof window<`u`&&(window.removeEventListener(`message`,_),window.removeEventListener(`storage`,y)),p){try{p.removeEventListener(`message`,v),p.close()}catch{}p=null}},`cleanup`),h=a(e=>{l||(l=!0,m(),c(e))},`settle`),g=a(e=>{!e||e.type!==`mcp_auth_callback`||e.state&&t&&e.state!==t||(e.success?h({kind:`success`}):h({kind:`error`,error:e.error??`Authentication failed in callback.`}))},`handlePayload`),_=a(e=>{s&&e.origin!==s||g(e.data)},`messageHandler`),v=a(e=>{g(e.data)},`broadcastHandler`),y=a(e=>{e.key===n&&e.newValue&&h({kind:`success`})},`storageHandler`);if(typeof window<`u`&&(window.addEventListener(`message`,_),window.addEventListener(`storage`,y)),typeof BroadcastChannel<`u`)try{p=new BroadcastChannel(dA),p.addEventListener(`message`,v)}catch{p=null}e&&(u=setInterval(()=>{if(l)return;let t=!1;try{t=e.closed}catch{t=!1}if(t){if(u&&=(clearInterval(u),null),fA(n)){h({kind:`success`});return}f=setTimeout(()=>{h(fA(n)?{kind:`success`}:{kind:`cancelled`})},o)}},i)),d=setTimeout(()=>{h(fA(n)?{kind:`success`}:{kind:`timeout`})},r)})}a(pA,`runAuthPopup`);var mA=null;function hA(){if(typeof window>`u`)return!1;let e=window.name;return typeof e==`string`&&e.startsWith(`mcp_auth_`)}a(hA,`isMcpAuthPopupWindow`);function gA(e,t,n){return{type:Kfe,success:e,...e?{}:{error:t??`Unknown error`},...n?.state?{state:n.state}:{},...n?.serverUrlHash?{serverUrlHash:n.serverUrlHash}:{}}}a(gA,`buildCallbackPayload`);function _A(e,t,n){if(typeof BroadcastChannel>`u`)return;let r=null;try{r=new BroadcastChannel(dA),r.postMessage(gA(e,t,n))}catch(e){console.warn(`[mcp-callback] Failed to broadcast auth callback over BroadcastChannel:`,e)}finally{r&&setTimeout(()=>{try{r?.close()}catch{}},0)}}a(_A,`broadcastAuthCallback`);function vA(e,t,n=`success`,r){if(!(typeof document>`u`))try{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`);n===`error`&&(o.style.color=`red`,o.style.backgroundColor=`#ffebeb`,o.style.border=`1px solid red`,o.style.padding=`10px`,o.style.borderRadius=`4px`),o.textContent=t,i.appendChild(o);let s=document.createElement(`p`);s.textContent=`You can close this window or `;let c=document.createElement(`a`);if(c.href=`#`,c.textContent=`click here to close`,c.onclick=e=>(e.preventDefault(),window.close(),!1),s.appendChild(c),s.appendChild(document.createTextNode(`.`)),i.appendChild(s),r){let e=document.createElement(`p`),t=document.createElement(`a`);t.href=r,t.textContent=`Return to the app`,e.appendChild(t),i.appendChild(e)}document.body.appendChild(i)}catch{}}a(vA,`renderCloseWindowMessage`);function qfe(){return mA||(mA=yA(),mA)}a(qfe,`onMcpAuthorization`);async function yA(){let e=new URLSearchParams(window.location.search),t=e.get(`code`),n=e.get(`state`),r=e.get(`error`),i=e.get(`error_description`),o=`[mcp-callback]`;console.log(`${o} Handling callback...`,{code:t,state:n,error:r,errorDescription:i});let s=null,c=null,l=null;try{if(!n)throw Error(`State parameter not found or invalid in callback query parameters.`);console.log(`[mcp-callback] Looking for state: ${n}`),console.log(`[mcp-callback] All localStorage keys:`,Object.keys(localStorage));let e=`mcp:auth:state_${n}`;if(localStorage.getItem(e))l=e,console.log(`[mcp-callback] Found state with default key: ${e}`);else{let e=`:state_${n}`;for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);if(n&&n.endsWith(e)){l=n,console.log(`[mcp-callback] Found state with dynamic key: ${n}`);break}}}if(!l){let e=Object.keys(localStorage).filter(e=>e.includes(`state`));throw console.log(`[mcp-callback] State keys in storage:`,e),Error(`Invalid or expired state parameter "${n}". No matching state found in storage.`)}let u=localStorage.getItem(l);if(!u)throw Error(`Invalid or expired state parameter "${n}". No matching state found in storage.`);try{c=JSON.parse(u)}catch{throw Error(`Failed to parse stored OAuth state.`)}if(!c.expiry||c.expiry<Date.now())throw localStorage.removeItem(l),Error(`OAuth state has expired. Please try initiating authentication again.`);let d={state:n,serverUrlHash:c.serverUrlHash};if(r){console.log(`${o} OAuth error received: ${r} - ${i||`No description`}`);let e=c.flowType===`redirect`,t=window.opener&&!window.opener.closed,n=hA()||c.flowType===`popup`,s=a(e=>{console.log(`${o} Returning to: ${e}`),localStorage.removeItem(l);let t=new URL(e);t.searchParams.set(`auth_error`,r),i&&t.searchParams.set(`auth_error_description`,i),window.location.href=t.toString()},`redirectWithError`);if(t){window.opener.postMessage(gA(!1,`${r}${i?`: ${i}`:``}`,d),window.location.origin),localStorage.removeItem(l),window.close();return}if(c.returnUrl&&(e||!n)){s(c.returnUrl);return}if(n){_A(!1,`${r}${i?`: ${i}`:``}`,d),localStorage.removeItem(l),vA(`Authentication Error`,`${r}${i?`: ${i}`:``}`,`error`,c.returnUrl);try{window.close()}catch{}return}throw Error(`OAuth error: ${r}${i?` - ${i}`:``}`)}if(!t)throw Error(`Authorization code not found in callback query parameters.`);if(!c.providerOptions)throw Error(`Stored state is missing required provider options.`);let{serverUrl:f,...p}=c.providerOptions,m=p.connectionUrl,h=!!(m&&/run\.mcp-use\.com|mcp-use\.run/.test(m)),g=h?m:void 0,_=p.oauthProxyUrl,v=g;if(!_&&v)try{let e=new URL(window.location.href);if(e.pathname.includes(`/oauth/callback`)){let t=e.pathname.replace(/\/oauth\/callback.*$/,``);(!t||t===``)&&(/run\.mcp-use\.com|mcp-use\.run/.test(v)?console.log(`${o} Gateway connection detected; skipping default /inspector OAuth proxy inference`):(t=`/inspector`,console.log(`${o} Callback at root /oauth/callback, using /inspector as base path for OAuth proxy`))),t&&(_=`${e.origin}${t}/api/oauth`),console.log(`${o} Inferred OAuth proxy URL from callback: ${_}`)}}catch(e){console.warn(`${o} Could not infer OAuth proxy URL:`,e)}console.log(`${o} Re-instantiating provider for server: ${f}`),s=new uA(f,{...p,oauthProxyUrl:_,connectionUrl:v});let y=`${p.storageKeyPrefix}_${c.serverUrlHash}_code_verifier`,b=c.codeVerifier||localStorage.getItem(y);if(b)localStorage.setItem(y,b),localStorage.setItem(s.getKey(`code_verifier`),b);else throw Error(`[${p.storageKeyPrefix}] Code verifier missing for OAuth state ${n}. Please restart authentication.`);_&&(console.log(`${o} Installing fetch interceptor for token exchange (proxy: ${_})`),s.installFetchInterceptor()),console.log(`${o} Calling SDK auth() to exchange code...`);let x=h&&v?v:f;console.log(`${o} Using SDK serverUrl: ${x} (connectionUrl: ${v||`none`})`);let S=await hk(s,{serverUrl:x,authorizationCode:t});if(S===`AUTHORIZED`){console.log(`${o} Authorization successful via SDK auth().`);let e=c.flowType===`redirect`,t=hA()||c.flowType===`popup`;if(e&&c.returnUrl)console.log(`${o} Redirect flow complete. Returning to: ${c.returnUrl}`),localStorage.removeItem(l),window.location.href=c.returnUrl;else if(window.opener&&!window.opener.closed)console.log(`${o} Popup flow complete. Notifying opener...`),window.opener.postMessage(gA(!0,void 0,d),window.location.origin),localStorage.removeItem(l),window.close();else if(t){console.log(`${o} Popup flow complete but opener was lost; broadcasting success and rendering close-window message.`),_A(!0,void 0,d),localStorage.removeItem(l),vA(`Authentication Successful!`,`You're authenticated. You can close this window and return to the app.`,`success`,c.returnUrl);try{window.close()}catch{}}else if(c.returnUrl)console.log(`${o} Popup flow without opener (top-level nav). Returning to: ${c.returnUrl}`),localStorage.removeItem(l),window.location.href=c.returnUrl;else{console.warn(`${o} No opener window or return URL detected. Redirecting to root.`),localStorage.removeItem(l);let e=window.location.pathname.split(`/`).filter(Boolean),t=e.length>0&&e[e.length-1]===`callback`?`/`+e.slice(0,-2).join(`/`):`/`;window.location.href=t||`/`}}else throw console.warn(`${o} SDK auth() returned unexpected status: ${S}`),Error(`Unexpected result from authentication library: ${S}`)}catch(e){console.error(`${o} Error during OAuth callback handling:`,e);let t=e instanceof Error?e.message:String(e),r={state:n,serverUrlHash:c?.serverUrlHash};window.opener&&!window.opener.closed?window.opener.postMessage(gA(!1,t,r),window.location.origin):(hA()||c?.flowType===`popup`)&&_A(!1,t,r);try{document.body.innerHTML=``;let n=document.createElement(`div`);n.style.fontFamily=`sans-serif`,n.style.padding=`20px`;let r=document.createElement(`h1`);r.textContent=`Authentication Error`,n.appendChild(r);let i=document.createElement(`p`);i.style.color=`red`,i.style.backgroundColor=`#ffebeb`,i.style.border=`1px solid red`,i.style.padding=`10px`,i.style.borderRadius=`4px`,i.textContent=t,n.appendChild(i);let a=document.createElement(`p`);a.textContent=`You can close this window or `;let o=document.createElement(`a`);if(o.href=`#`,o.textContent=`click here to close`,o.onclick=e=>(e.preventDefault(),window.close(),!1),a.appendChild(o),a.appendChild(document.createTextNode(`.`)),n.appendChild(a),e instanceof Error&&e.stack){let t=document.createElement(`pre`);t.style.fontSize=`0.8em`,t.style.color=`#555`,t.style.marginTop=`20px`,t.style.whiteSpace=`pre-wrap`,t.textContent=e.stack,n.appendChild(t)}document.body.appendChild(n)}catch(e){console.error(`${o} Could not display error in callback window:`,e)}l&&localStorage.removeItem(l),s&&localStorage.removeItem(s.getKey(`last_auth_url`))}}a(yA,`doOnMcpAuthorization`);async function bA(e,t=fetch){let n=e.replace(/\/$/,``),r=await t(n.endsWith(`/mcp`)?n:`${n}/mcp`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({jsonrpc:`2.0`,method:`initialize`,id:1,params:{}})});if(r.status!==401)return{};let{resourceMetadataUrl:i,scope:a}=_k(r);return{resourceMetadataUrl:i,scope:a}}a(bA,`probeAuthParams`);function xA(e,t){if(!e)throw Error(t)}a(xA,`assert`);function SA(e){return e===`localhost`||e===`127.0.0.1`||e.startsWith(`127.`)||e.startsWith(`192.168.`)||e.startsWith(`10.`)||e.startsWith(`172.`)}a(SA,`isLocalServer`);function CA(e){let t=e.split(`.`),n=[];for(let e=0;e<t.length-1;e++)n.push(t.slice(e).join(`.`));return n}a(CA,`getSubdomainLevels`);function wA(e){return new Promise((t,n)=>{let r=new FileReader;r.onloadend=()=>{t(r.result)},r.onerror=n,r.readAsDataURL(e)})}a(wA,`blobToBase64`);async function TA(e){console.debug(`[favicon-detector] Starting favicon detection for:`,e);try{let t;if(t=e.startsWith(`http://`)||e.startsWith(`https://`)?new URL(e).hostname:e.includes(`://`)?e.split(`://`)[1].split(`/`)[0]:e.split(`/`)[0],console.debug(`[favicon-detector] Extracted domain:`,t),SA(t))return console.debug(`[favicon-detector] Skipping local server:`,t),null;let n=CA(t);console.debug(`[favicon-detector] Domains to try:`,n);for(let e of n)try{let t=`https://favicon.tools.mcp-use.com/${e}?response=json`;console.debug(`[favicon-detector] Attempting to fetch favicon metadata for:`,e,`from:`,t);let n=new AbortController,r=setTimeout(()=>n.abort(),2e3);try{let i=await fetch(t,{signal:n.signal});if(clearTimeout(r),!i.ok){console.debug(`[favicon-detector] Fetch failed for`,e,`with status:`,i.status);continue}let a=await i.json();console.debug(`[favicon-detector] Retrieved favicon metadata for:`,e,`source:`,a.source);let o=a.url.replace(/^http:\/\//,`https://`),s=await fetch(o);if(!s.ok){console.debug(`[favicon-detector] Failed to fetch favicon image for`,e,`status:`,s.status);continue}let c=await s.blob(),l=await wA(c);if(a.source===`default`){console.debug(`[favicon-detector] Found default favicon for:`,e,`skipping and continuing to search for non-default`);continue}return console.debug(`[favicon-detector] Successfully retrieved non-default favicon for:`,e,`source:`,a.source,`size:`,c.size,`bytes`),l}catch(t){clearTimeout(r),console.debug(`[favicon-detector] Fetch error for`,e,`:`,t instanceof Error?t.message:String(t));continue}}catch(t){console.debug(`[favicon-detector] Error processing domain`,e,`:`,t instanceof Error?t.message:String(t));continue}return console.debug(`[favicon-detector] No non-default favicon found for:`,e,`returning null to show gradient fallback`),null}catch(e){return console.warn(`[favicon-detector] Error detecting favicon:`,e),null}}a(TA,`detectFavicon`);function EA(e,t){let n=t?.headers??t?.customHeaders??{};if(t?.customHeaders&&!t?.headers&&console.warn(`[applyProxyConfig] The "customHeaders" option in proxyConfig is deprecated. Use "headers" instead.`),!t?.proxyAddress)return{url:e,headers:n};let r=new URL(t.proxyAddress),i=new URL(e);return{url:`${r.origin}${r.pathname}${i.pathname}${i.search}`,headers:{"X-Target-URL":e,...n}}}a(EA,`applyProxyConfig`);var DA=`inspector-server`;function OA(e,t){return t?`state=${e}`:`client disconnected (state=${e})`}a(OA,`formatMcpNotReadyReason`);function kA(e){return{name:e.name,version:e.version,uri:e.websiteUrl,logo_uri:e.icons?.[0]?.src}}a(kA,`deriveOAuthClientConfigFromClientInfo`);function AA(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`)}a(AA,`isOAuthDiscoveryFailure`);function jA(e){if(!e)return;let t=new URL(e),n=t.pathname.replace(/\/proxy\/?$/,``);return`${t.origin}${n}/oauth`}a(jA,`deriveOAuthProxyUrl`);function MA(e){let t=jA(e.gatewayUrl),n=new uA(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,staticClientInfo:e.staticClientInfo,scope:e.scope});return t&&e.installFetchInterceptor&&n.installFetchInterceptor(),{provider:n,oauthProxyUrl:t}}a(MA,`createBrowserOAuthProvider`);function NA(e){let t=null,n=Date.now(),r=e.healthCheckIntervalMs??1e4,i=e.healthCheckTimeoutMs??3e4;return t=setInterval(a(async()=>{if(!e.isMountedRef.current||e.stateRef.current!==`ready`){t&&=(clearInterval(t),null);return}try{let t=e.gatewayUrl||e.url;if(!t)return;let r=e.getAuthHeaders?await e.getAuthHeaders():{},i=await fetch(t,{method:`HEAD`,headers:{...e.allHeaders,...r},signal:AbortSignal.timeout(5e3)});if(i.ok||i.status<500)n=Date.now();else throw Error(`Server returned ${i.status}`)}catch{let r=Date.now()-n;r>i&&(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)))}},`checkConnectionHealth`),r),()=>{t&&=(clearInterval(t),null)}}a(NA,`startConnectionHealthMonitoring`);var PA=3e3,Jfe=5e3;function FA(e){let{url:t,enabled:n=!0,callbackUrl:r=typeof window<`u`?sA(new URL(`/oauth/callback`,window.location.origin).toString()):`/oauth/callback`,storageKeyPrefix:i=`mcp:auth`,clientConfig:o={},authProvider:s,headers:u,customHeaders:d,proxyConfig:f,autoProxyFallback:p=!0,debug:m=!1,logLevel:h,autoRetry:g=!1,autoReconnect:_=PA,reconnectionOptions:v,transportType:y=`auto`,preventAutoAuth:b=!0,useRedirectFlow:x=!1,onPopupWindow:S,timeout:C=3e4,sseReadTimeout:T=3e5,wrapTransport:E,fetch:D,clientOptions:O,onNotification:k,onSampling:A,samplingCallback:j,onElicitation:M,elicitationCallback:N,oauth:P}=e,F=P?.clientId?.trim()||void 0,I=P?.clientSecret?.trim()||void 0,L=P?.scope?.trim()||void 0,ee=(0,w.useMemo)(()=>F?{client_id:F,...I?{client_secret:I}:{}}:void 0,[F,I]),te=(0,w.useMemo)(()=>{let e=`useMcp:${t||`no-url`}`,n=c.get(e);return h?n.level=h:m&&(n.level=`debug`),n},[t,h,m]),ne=u??d??{};d&&!u&&te.warn(`[useMcp] The "customHeaders" option is deprecated. Use "headers" instead.`);let re=A??j;j&&!A&&te.warn(`[useMcp] The "samplingCallback" option is deprecated. Use "onSampling" instead.`);let R=M??N;N&&!M&&l.warn(`[useMcp] The "elicitationCallback" option is deprecated. Use "onElicitation" instead.`);let z=(0,w.useMemo)(()=>({name:`mcp-use`,title:`mcp-use`,version:nO(),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`}),[]),B=(0,w.useMemo)(()=>e.clientInfo?{...z,...e.clientInfo}:z,[e.clientInfo,z]),ie=(0,w.useMemo)(()=>kA(B),[B]),ae=(0,w.useMemo)(()=>o&&Object.keys(o).length>0?(te.warn(`[useMcp] The 'clientConfig' option is deprecated and will be removed in a future version. Use 'clientInfo' instead. The clientConfig will be automatically derived from clientInfo.`),{...ie,...o}):ie,[o,ie]),oe=(0,w.useMemo)(()=>p?typeof p==`boolean`?{enabled:p,proxyAddress:`https://inspector.mcp-use.com/inspector/api/proxy`}:{enabled:p.enabled!==!1,proxyAddress:p.proxyAddress||`https://inspector.mcp-use.com/inspector/api/proxy`}:{enabled:!1,proxyAddress:void 0},[p]),se=(0,w.useMemo)(()=>_===!1?{enabled:!1,initialDelay:0,healthCheckInterval:!1,healthCheckTimeout:3e4}:_===!0?{enabled:!0,initialDelay:PA,healthCheckInterval:1e4,healthCheckTimeout:3e4}:typeof _==`number`?{enabled:!0,initialDelay:_,healthCheckInterval:1e4,healthCheckTimeout:3e4}:{enabled:_.enabled!==!1,initialDelay:_.initialDelay??PA,healthCheckInterval:_.healthCheckInterval??1e4,healthCheckTimeout:_.healthCheckTimeout??3e4},[_]),ce=(0,w.useRef)(!1),[le,ue]=(0,w.useState)(f);(0,w.useEffect)(()=>{ue(f)},[f]);let{gatewayUrl:de,proxyHeaders:fe}=(0,w.useMemo)(()=>{let e=EA(t||``,f);return{gatewayUrl:f?.proxyAddress,proxyHeaders:e.headers}},[t,f]),pe=(0,w.useMemo)(()=>t||``,[t]),me=(0,w.useMemo)(()=>({...fe,...ne}),[fe,ne]),[he,ge]=(0,w.useState)(`discovering`),[_e,ve]=(0,w.useState)([]),[ye,be]=(0,w.useState)([]),[xe,Se]=(0,w.useState)([]),[Ce,we]=(0,w.useState)([]),[Te,Ee]=(0,w.useState)(e._initialServerInfo?.name?e._initialServerInfo:void 0),[De,Oe]=(0,w.useState)(),[ke,Ae]=(0,w.useState)(void 0),[je,Me]=(0,w.useState)([]),[Ne,Pe]=(0,w.useState)(void 0),[Fe,Ie]=(0,w.useState)(void 0),Le=(0,w.useRef)(null),Re=(0,w.useRef)(s??null),ze=(0,w.useRef)(null),Be=(0,w.useRef)(!1),Ve=(0,w.useRef)(!0),He=(0,w.useRef)(0),Ue=(0,w.useRef)(0),We=(0,w.useRef)(null),Ge=(0,w.useRef)(!1),Ke=(0,w.useRef)(!1),qe=(0,w.useRef)(he),Je=(0,w.useRef)(_),Ye=(0,w.useRef)(null),Xe=(0,w.useRef)(null),Ze=(0,w.useRef)(null);(0,w.useEffect)(()=>{qe.current=he,Je.current=_},[he,_]),(0,w.useEffect)(()=>{Re.current=s??null},[s]);let V=(0,w.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`:te.error(i);break;case`warn`:te.warn(i);break;case`info`:te.info(i);break;case`debug`:te.debug(i);break;default:te.info(i)}Ve.current&&Me(t=>[...t.slice(-100),{level:e,message:r,timestamp:Date.now()}])},[te]),Qe=(0,w.useCallback)(async(e=!1)=>{e||V(`info`,`Disconnecting...`),Be.current=!1,We.current&&clearTimeout(We.current),We.current=null;let t=Ue.current,n=Le.current;if(n)try{let e=DA,t=n.getSession(e);t&&t._healthCheckCleanup&&(t._healthCheckCleanup(),t._healthCheckCleanup=null),t&&await n.closeSession(e)}catch(t){e||V(`warn`,`Error closing session:`,t)}let r=Ue.current!==t;Le.current===n&&!r&&(Le.current=null),Ve.current&&!e&&!r&&(ge(`discovering`),ve([]),be([]),Se([]),we([]),Ae(void 0),Pe(void 0))},[V]),$e=(0,w.useCallback)((e,n)=>{V(`error`,e,n??``);let r=n&&`code`in n?n.code:void 0,i=oe.enabled&&!le?.proxyAddress,a=e.includes(`CORS`)||e.includes(`blocked by CORS policy`)||e.includes(`Failed to fetch`),o=r===400;if(i&&(a||o||typeof r==`number`&&r>=404&&r<500)&&!(r===401||r===403))return V(`info`,`Direct connection failed with ${a?`CORS error`:o?`HTTP 400 (Bad Request)`:`HTTP 4xx error`}. Trying with proxy...`),Le.current=null,s||(Re.current=null),V(`debug`,`Cleared client and auth provider for proxy fallback`),ue({proxyAddress:oe.proxyAddress}),Ve.current&&ge(`discovering`),setTimeout(()=>{Ve.current&&Xe.current?.()},1e3),!0;if(Ve.current){V(`info`,`Setting state to FAILED:`,e),ge(`failed`),Ae(e);let t=Re.current?.getLastAttemptedAuthUrl?.();t&&(Pe(t),V(`info`,`Manual authentication URL may be available.`,t))}return Be.current=!1,t&&gO.getInstance().trackUseMcpConnection({url:t,transportType:y,success:!1,errorType:n?.name||`UnknownError`,hasOAuth:!!Re.current,hasSampling:!!re,hasElicitation:!!R}).catch(()=>{}),!1},[V,t,y,re,R,oe,le,s]),et=(0,w.useCallback)(async()=>{if(!n||!t){V(`debug`,n?`No server URL provided, skipping connection.`:`Connection disabled via enabled flag.`);return}if(Be.current){V(`debug`,`Connection attempt already in progress.`);return}if(!Ve.current){V(`debug`,`Connect called after unmount, aborting.`);return}if(Be.current=!0,Ue.current+=1,He.current+=1,Ae(void 0),Pe(void 0),Ye.current=null,ge(`discovering`),V(`info`,`Connecting attempt #${He.current} to ${t}...`),!Re.current){let{provider:e,oauthProxyUrl:t}=MA({effectiveOAuthUrl:pe,storageKeyPrefix:i,oauthClientConfig:ae,callbackUrl:r,preventAutoAuth:b,useRedirectFlow:x,gatewayUrl:de,onPopupWindow:S,installFetchInterceptor:!0,staticClientInfo:ee,scope:L});Re.current=e,t&&V(`debug`,`OAuth proxy URL derived from gateway: ${t}`),V(`debug`,`BrowserOAuthClientProvider initialized with URL: ${pe}, proxy: ${t?`enabled`:`disabled`}, gateway: ${de?`enabled`:`disabled`}`)}Le.current?V(`debug`,`BrowserMCPClient already exists, reusing.`):(Le.current=new Ufe,V(`debug`,`BrowserMCPClient initialized in connect.`));let e=a(async n=>{if(!Ve.current)return V(`debug`,`Connection attempt aborted - component unmounted`),`failed`;V(`info`,`Attempting connection with transport: ${n}`),V(`debug`,`Client ref status at start of tryConnectWithTransport: ${Le.current?`initialized`:`NULL`}`);try{let e=DA,r={url:t,transport:n===`sse`?`http`:n,timeout:C,sseReadTimeout:T,disableSseFallback:y===`http`,preferSse:n===`sse`,clientInfo:B,...D&&{fetch:D},...O&&{clientOptions:O},...v?{reconnectionOptions:v}:_===!1?{reconnectionOptions:{maxRetries:0}}:{}};if(de&&(r.gatewayUrl=de,V(`debug`,`Using proxy gateway: ${de} for target: ${t}`)),me&&Object.keys(me).length>0&&(r.headers=me),!Le.current){if(!Ve.current)return V(`debug`,`Connection aborted - component unmounted, client cleaned up`),`failed`;let e=Error(`Client not initialized - this is a bug in the connection flow`);throw V(`error`,`Client ref is null in tryConnectWithTransport but component is still mounted`),e}Le.current.addServer(e,{...r,authProvider:Re.current,onSampling:re,onElicitation:R,wrapTransport:E?n=>(V(`debug`,`Applying transport wrapper for server:`,e,`url:`,t),E(n,t)):void 0});let i=await Le.current.createSession(e,!1);if(!Ve.current)return V(`debug`,`Connection aborted after session creation - component unmounted`),`failed`;if(i.on(`notification`,e=>{V(`debug`,`Notification received:`,e.method,e),k?.(e),e.method===`notifications/tools/list_changed`?(V(`info`,`Tools list changed, auto-refreshing...`),ct().catch(e=>{V(`warn`,`Auto-refresh tools failed:`,e)})):e.method===`notifications/resources/list_changed`?(V(`info`,`Resources list changed, auto-refreshing...`),lt().catch(e=>V(`warn`,`Auto-refresh resources failed:`,e))):e.method===`notifications/prompts/list_changed`&&(V(`info`,`Prompts list changed, auto-refreshing...`),ut().catch(e=>V(`warn`,`Auto-refresh prompts failed:`,e)))}),await i.initialize(),!Ve.current)return V(`debug`,`Connection completed but component unmounted, aborting`),`failed`;if(V(`info`,`✅ Successfully connected to MCP server`),V(`info`,`Server info:`,i.connector.serverInfo),V(`info`,`Server capabilities:`,i.connector.serverCapabilities),!Ve.current)return V(`debug`,`Skipping state update - component unmounted`),`failed`;ge(`ready`),Ye.current=n,se.enabled&&se.healthCheckInterval!==!1&&(i._healthCheckCleanup=NA({gatewayUrl:de,url:t,allHeaders:me,getAuthHeaders:a(async()=>{try{let e=await Re.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{}},`getAuthHeaders`),isMountedRef:Ve,stateRef:qe,autoReconnectRef:Je,setState:ge,addLog:V,connect:et,defaultReconnectDelay:se.initialDelay,healthCheckIntervalMs:se.healthCheckInterval,healthCheckTimeoutMs:se.healthCheckTimeout})),gO.getInstance().trackUseMcpConnection({url:t,transportType:n,success:!0,hasOAuth:!!Re.current,hasSampling:!!re,hasElicitation:!!R}).catch(()=>{}),ve(i.connector.tools||[]);let o=await i.connector.listAllResources();if(!Ve.current)return V(`debug`,`Connection aborted after listing resources - component unmounted`),`failed`;be(o.resources||[]);let s=await i.connector.listPrompts();if(!Ve.current)return V(`debug`,`Connection aborted after listing prompts - component unmounted`),`failed`;if(we(s.prompts||[]),i.connector.serverCapabilities?.resourceTemplates){let e=await i.connector.listResourceTemplates();if(!Ve.current)return V(`debug`,`Connection aborted after listing resource templates - component unmounted`),`failed`;Se(e.resourceTemplates||[])}else Se([]);let c=i.connector.serverInfo,l=i.connector.serverCapabilities;if(c){if(V(`debug`,`Server info:`,c),!Ve.current)return V(`debug`,`Skipping state update - component unmounted`),`failed`;Ee(c),ze.current=(async()=>{try{let e=c.icons;if(e&&Array.isArray(e)&&e.length>0){let t=e[0].src||e[0].url;if(t){V(`info`,`Server provided icon:`,t);let e=await(await fetch(t)).blob(),n=await new Promise((t,n)=>{let r=new FileReader;r.onloadend=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)});return Ve.current&&(Ee(e=>e?{...e,icon:n}:void 0),V(`debug`,`Server icon converted to base64`)),n}}if(t){let e=await TA(t);if(!Ve.current)return V(`debug`,`Connection aborted after favicon detection - component unmounted`),null;if(e)return Ee(t=>t?{...t,icon:e}:void 0),V(`debug`,`Favicon detected and added to serverInfo`),e}return null}catch(e){return V(`debug`,`Icon loading failed (non-critical):`,e),null}})()}if(l){if(V(`debug`,`Server capabilities:`,l),!Ve.current)return V(`debug`,`Skipping state update - component unmounted`),`failed`;Oe(l)}if(Re.current){let e=await Re.current.tokens?.();if(!Ve.current)return V(`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;if(!Ve.current)return V(`debug`,`Skipping state update - component unmounted`),`failed`;Ie({access_token:e.access_token,token_type:e.token_type||`Bearer`,expires_at:t,refresh_token:e.refresh_token,scope:e.scope})}}return`success`}catch(r){let i=r,a=i?.message||String(r),o=AA(r),s=i.code===401||a.includes(`401`)||a.includes(`Unauthorized`);if(o&&ne&&Object.keys(ne).length>0)return $e(`Authentication failed (HTTP 401). Server does not support OAuth. Check your Authorization header value is correct.`),`failed`;if(o&&(!ne||Object.keys(ne).length===0))return $e(`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(s){if(o)return $e(`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(Re.current)if(V(`info`,`Authentication required. OAuth provider available.`),b){if(V(`info`,`Waiting for user to initiate authentication flow...`),Ve.current){ge(`pending_auth`);let e=Re.current?.getLastAttemptedAuthUrl?.();e&&(Pe(e),V(`info`,`Retrieved stored auth URL for manual authentication`))}return Be.current=!1,`auth_redirect`}else{V(`info`,`Triggering automatic OAuth authentication flow...`);try{let{resourceMetadataUrl:r,scope:i}=await bA(t);if(await hk(Re.current,{serverUrl:t,...r&&{resourceMetadataUrl:r},...i&&{scope:i}})===`REDIRECT`){let e=await Re.current.getAuthorizationCode?.();if(!e)throw Error(`Authorization code not captured by headless provider`);await hk(Re.current,{serverUrl:t,...r&&{resourceMetadataUrl:r},...i&&{scope:i},authorizationCode:e})}return V(`info`,`OAuth flow completed, reconnecting...`),await e(n)}catch(e){return $e(`Automatic OAuth authentication failed: ${e instanceof Error?e.message:String(e)}`,e instanceof Error?e:Error(String(e))),`failed`}}return ne&&Object.keys(ne).length>0?($e(`Authentication failed: Server returned 401 Unauthorized. Check your Authorization header value is correct.`),`failed`):($e(`Authentication required: Server returned 401 Unauthorized. Add an Authorization header in the Custom Headers section (e.g., Authorization: Bearer YOUR_API_KEY).`),`failed`)}return $e(a,i instanceof Error?i:Error(String(i)))?`auth_redirect`:`failed`}},`tryConnectWithTransport`),o=`failed`;if(y===`sse`)V(`debug`,`Using SSE-only transport mode`),o=await e(`sse`);else if(y===`http`)V(`debug`,`Using HTTP-only transport mode`),o=await e(`http`);else{V(`debug`,`Using auto transport mode (HTTP with SSE fallback)`);let t=await e(`http`);t===`fallback`&&Ve.current&&qe.current!==`authenticating`?(V(`info`,`HTTP failed, attempting SSE fallback...`),o=await e(`sse`)):o=t}(o===`success`||o===`failed`||o===`auth_redirect`)&&(Be.current=!1),V(`debug`,`Connection sequence finished with status: ${o}`)},[V,$e,Qe,t,i,r,ae.name,ae.version,ae.uri,ae.logo_uri,ee,L,ne,y,b,x,S,n,C,T,B,de,me,pe]);(0,w.useEffect)(()=>{Xe.current=et,Ze.current=$e},[et,$e]);let tt=(0,w.useCallback)(async(e,t,n)=>{if(qe.current!==`ready`||!Le.current)throw Error(`MCP client is not ready (${OA(qe.current,!!Le.current)}). Cannot call tool "${e}".`);V(`info`,`Calling tool: ${e}`,t);let r=Date.now();try{let i=DA,a=Le.current.getSession(i);if(!a)throw Error(`No active session found`);let o=await a.connector.callTool(e,t||{},n);return V(`info`,`Tool "${e}" call successful:`,o),gO.getInstance().trackUseMcpToolCall({toolName:e,success:!0,executionTimeMs:Date.now()-r}).catch(()=>{}),o}catch(t){throw V(`error`,`Tool "${e}" call failed:`,t),gO.getInstance().trackUseMcpToolCall({toolName:e,success:!1,errorType:t instanceof Error?t.name:`UnknownError`,executionTimeMs:Date.now()-r}).catch(()=>{}),t}},[he]),nt=(0,w.useCallback)(()=>{qe.current===`failed`?(V(`info`,`Retry requested...`),Xe.current?.()):V(`warn`,`Retry called but state is not 'failed' (state: ${qe.current}). Ignoring.`)},[V]),rt=(0,w.useCallback)(async()=>{V(`info`,`Manual authentication requested...`);let e=qe.current;if(e===`failed`)V(`info`,`Attempting to reconnect and authenticate via retry...`),nt();else if(e===`pending_auth`){V(`info`,`Proceeding with authentication from pending state...`);try{if(xA(Re.current,`Auth Provider not available for manual auth`),xA(t,`Server URL is required for authentication`),s){V(`info`,`Using provided authProvider for manual authentication`);let e=new URL(t),n=e.origin+e.pathname.replace(/\/+$/,``);await hk(Re.current,{serverUrl:n}),Xe.current?.();return}V(`info`,`Cleared ${Re.current.clearStorage?.()??0} OAuth storage item(s) for fresh authentication`),ge(`authenticating`);let e=null,n=null,{provider:o,oauthProxyUrl:c}=MA({effectiveOAuthUrl:pe,storageKeyPrefix:i,oauthClientConfig:ae,callbackUrl:r,preventAutoAuth:!1,useRedirectFlow:x,gatewayUrl:de,onPopupWindow:a((t,r,i)=>{e=i;try{n=new URL(t).searchParams.get(`state`)}catch{}S?.(t,r,i)},`captureOnPopupWindow`),installFetchInterceptor:!de,staticClientInfo:ee,scope:L});c&&!de?V(`info`,`Installed OAuth fetch interceptor for manual auth`):c&&de&&V(`info`,`Using MCP gateway proxy for OAuth (no fetch interceptor needed)`),Re.current=o,V(`info`,`Triggering fresh OAuth authorization...`);let l=new URL(t),u=l.origin+l.pathname.replace(/\/+$/,``);try{await hk(o,{serverUrl:u}),V(`info`,`OAuth flow completed (tokens obtained)`)}catch(e){V(`info`,`OAuth flow initiated (popup/redirect):`,e instanceof Error?e.message:`Redirecting...`)}let d=o.getLastAttemptedAuthUrl?.();if(d&&(Pe(d),V(`info`,`Updated auth URL for fallback:`,d),!n))try{n=new URL(d).searchParams.get(`state`)}catch{}if(x)return;let f=o.getKey?.(`tokens`);if(!f){V(`warn`,`Could not derive tokens storage key; relying on callback listener.`);return}Ke.current=!0;let p;try{p=await pA({popup:e,state:n,tokensKey:f})}finally{Ke.current=!1}if(!Ve.current)return;switch(p.kind){case`success`:V(`info`,`Authentication succeeded; reconnecting to MCP server...`),Be.current=!1,Xe.current?.();break;case`cancelled`:V(`warn`,`Authentication popup was closed before completing. Returning to pending_auth.`),ge(`pending_auth`);break;case`timeout`:V(`warn`,`Authentication timed out waiting for the popup. Returning to pending_auth.`),ge(`pending_auth`);break;case`error`:$e(`Authentication failed: ${p.error}`);break;default:break}}catch(e){if(!Ve.current)return;ge(`pending_auth`),V(`error`,`Manual authentication failed: ${e instanceof Error?e.message:String(e)}`)}}else if(e===`authenticating`){V(`warn`,`Already attempting authentication. Check for blocked popups or wait for timeout.`);let e=Re.current?.getLastAttemptedAuthUrl?.();e&&!Ne&&(Pe(e),V(`info`,`Manual authentication URL retrieved:`,e))}else V(`info`,`Client not in a state requiring manual authentication trigger (state: ${e}). If needed, try disconnecting and reconnecting.`)},[V,nt,$e,Ne,t,x,S,i,ae.name,ae.uri,ae.logo_uri,ee,L,r,B,s]),it=(0,w.useCallback)(()=>{Re.current?.clearStorage?(V(`info`,`Cleared ${Re.current.clearStorage()} item(s) from localStorage for ${t}.`),Pe(void 0),Qe()):V(`warn`,`Auth provider not initialized, cannot clear storage.`)},[t,V,Qe]),at=(0,w.useCallback)(async()=>{if(qe.current!==`ready`||!Le.current)throw Error(`MCP client is not ready (${OA(qe.current,!!Le.current)}). Cannot list resources.`);V(`info`,`Listing resources`);try{let e=DA,t=Le.current.getSession(e);if(!t)throw Error(`No active session found`);be((await t.connector.listAllResources()).resources||[]),V(`info`,`Resources listed successfully`)}catch(e){throw V(`error`,`List resources failed:`,e),e}},[he]),ot=(0,w.useCallback)(async e=>{if(qe.current!==`ready`||!Le.current)throw Error(`MCP client is not ready (${OA(qe.current,!!Le.current)}). Cannot read resource.`);V(`info`,`Reading resource: ${e}`);try{let t=DA,n=Le.current.getSession(t);if(!n)throw Error(`No active session found`);let r=await n.connector.readResource(e);return V(`info`,`Resource read successful:`,r),gO.getInstance().trackUseMcpResourceRead({resourceUri:e,success:!0}).catch(()=>{}),r}catch(t){throw V(`error`,`Resource read failed:`,t),gO.getInstance().trackUseMcpResourceRead({resourceUri:e,success:!1,errorType:t instanceof Error?t.name:`UnknownError`}).catch(()=>{}),t}},[he]),st=(0,w.useCallback)(async()=>{if(qe.current!==`ready`||!Le.current)throw Error(`MCP client is not ready (${OA(qe.current,!!Le.current)}). Cannot list prompts.`);V(`info`,`Listing prompts`);try{let e=DA,t=Le.current.getSession(e);if(!t)throw Error(`No active session found`);we((await t.connector.listPrompts()).prompts||[]),V(`info`,`Prompts listed successfully`)}catch(e){throw V(`error`,`List prompts failed:`,e),e}},[he]),ct=(0,w.useCallback)(async()=>{if(qe.current!==`ready`||!Le.current){V(`debug`,`Cannot refresh tools - client not ready. State:`,qe.current);return}V(`debug`,`Refreshing tools list`);try{let e=DA,t=Le.current.getSession(e);if(!t){V(`warn`,`No active session found for tools refresh`);return}V(`debug`,`Calling listTools...`);let n=await t.connector.listTools();V(`debug`,`listTools returned:`,n?.length,`tools`),ve(n||[]),V(`info`,`Tools list refreshed successfully`)}catch(e){V(`error`,`Failed to refresh tools:`,e)}},[V]),lt=(0,w.useCallback)(async()=>{if(qe.current!==`ready`||!Le.current){V(`debug`,`Cannot refresh resources - client not ready`);return}V(`debug`,`Refreshing resources list`);try{let e=DA,t=Le.current.getSession(e);if(!t){V(`warn`,`No active session found for resources refresh`);return}be((await t.connector.listAllResources()).resources||[]),V(`info`,`Resources list refreshed successfully`)}catch(e){V(`warn`,`Failed to refresh resources:`,e)}},[V]),ut=(0,w.useCallback)(async()=>{if(qe.current!==`ready`||!Le.current){V(`debug`,`Cannot refresh prompts - client not ready`);return}V(`debug`,`Refreshing prompts list`);try{let e=DA,t=Le.current.getSession(e);if(!t){V(`warn`,`No active session found for prompts refresh`);return}we((await t.connector.listPrompts()).prompts||[]),V(`info`,`Prompts list refreshed successfully`)}catch(e){V(`warn`,`Failed to refresh prompts:`,e)}},[V]),dt=(0,w.useCallback)(async()=>{if(qe.current!==`ready`||!Le.current){V(`debug`,`Cannot refresh resource templates - client not ready`);return}V(`debug`,`Refreshing resource templates list`);try{let e=DA,t=Le.current.getSession(e);if(!t)throw Error(`No active session found`);let n=await t.connector.listResourceTemplates();Ve.current&&(Se(n.resourceTemplates||[]),V(`info`,`Resource templates refreshed: ${n.resourceTemplates?.length||0} templates`))}catch(e){throw V(`error`,`Failed to refresh resource templates:`,e),e}},[V]),ft=(0,w.useCallback)(async()=>{V(`info`,`Refreshing all lists (tools, resources, resource templates, prompts)`),await Promise.all([ct(),lt(),dt(),ut()])},[ct,lt,dt,ut,V]),pt=(0,w.useCallback)(async(e,t)=>{if(qe.current!==`ready`||!Le.current)throw Error(`MCP client is not ready (${OA(qe.current,!!Le.current)}). Cannot get prompt.`);V(`info`,`Getting prompt: ${e}`,t);try{let n=DA,r=Le.current.getSession(n);if(!r)throw Error(`No active session found`);let i=await r.connector.getPrompt(e,t||{});return V(`info`,`Prompt "${e}" retrieved successfully:`,i),i}catch(t){throw V(`error`,`Prompt "${e}" retrieval failed:`,t),t}},[he,V]),mt=(0,w.useCallback)(async e=>{if(qe.current!==`ready`||!Le.current)throw Error(`MCP client is not ready (${OA(qe.current,!!Le.current)}). Cannot request completion.`);V(`info`,`Requesting completions for ${e.ref.type===`ref/prompt`?`prompt`:`resource template`} "${e.ref.type===`ref/prompt`?e.ref.name:e.ref.uri}"`);try{let t=DA,n=Le.current.getSession(t);if(!n)throw Error(`No active session found`);let r=await n.complete(e);return V(`info`,`Received ${r.completion.values.length} completion suggestions`),r}catch(e){throw V(`error`,`Completion request failed:`,e),e}},[he,V]);(0,w.useEffect)(()=>{let e=a((e,t)=>{if(Ke.current){V(`debug`,`Ignoring auth callback via ${t}; manual popup flow owns this result.`);return}let n=Re.current?.serverUrlHash;if(e?.serverUrlHash&&n&&e.serverUrlHash!==n){V(`debug`,`Ignoring auth callback via ${t} for a different server.`);return}if(V(`info`,`Received auth callback via ${t}.`,e),We.current&&clearTimeout(We.current),We.current=null,e?.success)V(`info`,`Authentication successful via popup. Reconnecting client...`),Be.current&&V(`debug`,`Connection attempt already in progress, resetting flag to allow reconnection.`),Be.current=!1,setTimeout(()=>{Ve.current&&(V(`debug`,`Initiating reconnection after successful auth callback.`),Xe.current?.())},100);else{if(qe.current!==`authenticating`&&qe.current!==`pending_auth`){V(`debug`,`Ignoring stale auth failure callback (state=${qe.current}).`);return}Ze.current?.(`Authentication failed in callback: ${e?.error||`Unknown reason.`}`)}},`handleCallbackPayload`),t=a(t=>{t.origin===window.location.origin&&t.data?.type===`mcp_auth_callback`&&e(t.data,`postMessage`)},`messageHandler`);window.addEventListener(`message`,t),V(`debug`,`Auth callback message listener added.`);let n=null,r=a(t=>{t.data?.type===`mcp_auth_callback`&&e(t.data,`BroadcastChannel`)},`broadcastHandler`);if(typeof BroadcastChannel<`u`)try{n=new BroadcastChannel(dA),n.addEventListener(`message`,r),V(`debug`,`Auth callback BroadcastChannel listener added.`)}catch(e){V(`warn`,`Failed to open auth callback BroadcastChannel; lost-opener popups will not reach this client.`,e),n=null}return()=>{if(window.removeEventListener(`message`,t),V(`debug`,`Auth callback message listener removed.`),n){try{n.removeEventListener(`message`,r),n.close()}catch{}V(`debug`,`Auth callback BroadcastChannel listener removed.`)}We.current&&clearTimeout(We.current)}},[V]),(0,w.useEffect)(()=>{ce.current=!1,ue(f)},[t,f]),(0,w.useEffect)(()=>{if(Ve.current=!0,!n||!t)return V(`debug`,n?`No server URL provided, skipping connection.`:`Connection disabled via enabled flag.`),ge(`discovering`),()=>{Ve.current=!1};if(V(`debug`,`useMcp mounted, initiating connection.`),He.current=0,s)Re.current=s,V(`debug`,`Using externally provided authProvider`);else if(!Re.current||Re.current.serverUrl!==pe){let{provider:e,oauthProxyUrl:t}=MA({effectiveOAuthUrl:pe,storageKeyPrefix:i,oauthClientConfig:ae,callbackUrl:r,preventAutoAuth:b,useRedirectFlow:x,gatewayUrl:de,onPopupWindow:S,installFetchInterceptor:!0,staticClientInfo:ee,scope:L});Re.current=e,t&&V(`debug`,`OAuth proxy URL derived from gateway: ${t}`),V(`debug`,`BrowserOAuthClientProvider initialized/updated with URL: ${pe}, proxy: ${t?`enabled`:`disabled`}, gateway: ${de?`enabled`:`disabled`}`)}return et(),()=>{Ve.current=!1,V(`debug`,`useMcp unmounting, disconnecting.`),Re.current?.restoreFetch?.(),Qe(!0)}},[t,n,i,r,ae.name,ae.version,ae.uri,ae.logo_uri,ee,L,x,B,pe,f,s]);let ht=(0,w.useRef)(nt),gt=(0,w.useRef)(V);(0,w.useEffect)(()=>{ht.current=nt,gt.current=V},[nt,V]),(0,w.useEffect)(()=>{let e=null;if(he===`failed`&&g&&He.current>0){if(!Ge.current){Ge.current=!0;let t=typeof g==`number`?g:Jfe;gt.current(`info`,`Connection failed, auto-retrying in ${t}ms...`),e=setTimeout(()=>{Ge.current=!1,Ve.current&&qe.current===`failed`&&ht.current()},t)}}else he!==`failed`&&(Ge.current=!1);return()=>{e&&(clearTimeout(e),Ge.current=!1)}},[he,g]);let _t=(0,w.useCallback)(async()=>qe.current===`ready`?Te?.icon?Te.icon:ze.current?(V(`debug`,`Waiting for icon to finish loading...`),await ze.current):(V(`debug`,`No icon available and no loading in progress`),null):(V(`warn`,`Cannot ensure icon loaded - not connected`),null),[Te,V]);return{state:he,name:Te?.name||t||``,tools:_e,resources:ye,resourceTemplates:xe,prompts:Ce,serverInfo:Te,capabilities:De,error:ke,log:je,authUrl:Ne,authTokens:Fe,client:Le.current,callTool:tt,readResource:ot,listResources:at,listPrompts:st,getPrompt:pt,complete:mt,refreshTools:ct,refreshResources:lt,refreshResourceTemplates:dt,refreshPrompts:ut,refreshAll:ft,retry:nt,disconnect:Qe,authenticate:rt,clearStorage:it,ensureIconLoaded:_t}}a(FA,`useMcp`);var IA=`__model_context`,LA=new Map;function RA(e){LA.set(e.id,e),VA()}a(RA,`setNode`);function zA(e){LA.delete(e),VA()}a(zA,`removeNode`);var BA=!1;function VA(){BA||(BA=!0,queueMicrotask(HA))}a(VA,`scheduleFlush`);function HA(){BA=!1,KA(UA())}a(HA,`flush`);function UA(){let e=new Map;for(let t of LA.values()){let n=t.parentId??null;e.has(n)||e.set(n,[]),e.get(n).push(t)}for(let t of e.values())t.sort((e,t)=>e.id.localeCompare(t.id));let t=[];function n(r,i){let a=e.get(r);if(a)for(let e of a)e.content.trim()&&t.push(`${` `.repeat(i)}- ${e.content.trim()}`),n(e.id,i+1)}return a(n,`traverseTree`),n(null,0),t.join(`
|
|
449
|
+
`&&r++}}return[t,n]}var Afe=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n}={}){let r;super({start(i){r=Ofe({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)}})}},jfe={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2},wk=class extends Error{constructor(e,t){super(`Streamable HTTP error: ${t}`),this.code=e}},Mfe=class{constructor(e,t){this._hasCompletedAuthFlow=!1,this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=t?.requestInit,this._authProvider=t?.authProvider,this._fetch=t?.fetch,this._fetchWithInit=Hde(t?.fetch,t?.requestInit),this._sessionId=t?.sessionId,this._reconnectionOptions=t?.reconnectionOptions??jfe}async _authThenStart(){if(!this._authProvider)throw new fk(`No auth provider`);let e;try{e=await hk(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(e){throw this.onerror?.(e),e}if(e!==`AUTHORIZED`)throw new fk;return await this._startOrAuthSse({resumptionToken:void 0})}async _commonHeaders(){let e={};if(this._authProvider){let t=await this._authProvider.tokens();t&&(e.Authorization=`Bearer ${t.access_token}`)}this._sessionId&&(e[`mcp-session-id`]=this._sessionId),this._protocolVersion&&(e[`mcp-protocol-version`]=this._protocolVersion);let t=KO(this._requestInit?.headers);return new Headers({...e,...t})}async _startOrAuthSse(e){let{resumptionToken:t}=e;try{let n=await this._commonHeaders();n.set(`Accept`,`text/event-stream`),t&&n.set(`last-event-id`,t);let r=await(this._fetch??fetch)(this._url,{method:`GET`,headers:n,signal:this._abortController?.signal});if(!r.ok){if(await r.body?.cancel(),r.status===401&&this._authProvider)return await this._authThenStart();if(r.status===405)return;throw new wk(r.status,`Failed to open SSE stream: ${r.statusText}`)}this._handleSseStream(r.body,e,!0)}catch(e){throw 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.`));return}let r=this._getNextReconnectionDelay(t);this._reconnectionTimeout=setTimeout(()=>{this._startOrAuthSse(e).catch(n=>{this.onerror?.(Error(`Failed to reconnect SSE stream: ${n instanceof Error?n.message:String(n)}`)),this._scheduleReconnection(e,t+1)})},r)}_handleSseStream(e,t,n){if(!e)return;let{onresumptiontoken:r,replayMessageId:i}=t,a,o=!1,s=!1;(async()=>{try{let t=e.pipeThrough(new TextDecoderStream).pipeThrough(new Afe({onRetry:e=>{this._serverRetryMs=e}})).getReader();for(;;){let{value:e,done:n}=await t.read();if(n)break;if(e.id&&(a=e.id,o=!0,r?.(e.id)),e.data&&(!e.event||e.event===`message`))try{let t=ig.parse(JSON.parse(e.data));tg(t)&&(s=!0,i!==void 0&&(t.id=i)),this.onmessage?.(t)}catch(e){this.onerror?.(e)}}(n||o)&&!s&&this._abortController&&!this._abortController.signal.aborted&&this._scheduleReconnection({resumptionToken:a,onresumptiontoken:r,replayMessageId:i},0)}catch(e){if(this.onerror?.(Error(`SSE stream disconnected: ${e}`)),(n||o)&&!s&&this._abortController&&!this._abortController.signal.aborted)try{this._scheduleReconnection({resumptionToken:a,onresumptiontoken:r,replayMessageId:i},0)}catch(e){this.onerror?.(Error(`Failed to reconnect: ${e instanceof Error?e.message:String(e)}`))}}})()}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){if(!this._authProvider)throw new fk(`No auth provider`);if(await hk(this._authProvider,{serverUrl:this._url,authorizationCode:e,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new fk(`Failed to authorize`)}async close(){this._reconnectionTimeout&&=(clearTimeout(this._reconnectionTimeout),void 0),this._abortController?.abort(),this.onclose?.()}async send(e,t){try{let{resumptionToken:n,onresumptiontoken:r}=t||{};if(n){this._startOrAuthSse({resumptionToken:n,replayMessageId:Qh(e)?e.id:void 0}).catch(e=>this.onerror?.(e));return}let i=await this._commonHeaders();i.set(`content-type`,`application/json`),i.set(`accept`,`application/json, text/event-stream`);let a={...this._requestInit,method:`POST`,headers:i,body:JSON.stringify(e),signal:this._abortController?.signal},o=await(this._fetch??fetch)(this._url,a),s=o.headers.get(`mcp-session-id`);if(s&&(this._sessionId=s),!o.ok){let t=await o.text().catch(()=>null);if(o.status===401&&this._authProvider){if(this._hasCompletedAuthFlow)throw new wk(401,`Server returned 401 after successful authentication`);let{resourceMetadataUrl:t,scope:n}=_k(o);if(this._resourceMetadataUrl=t,this._scope=n,await hk(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new fk;return this._hasCompletedAuthFlow=!0,this.send(e)}if(o.status===403&&this._authProvider){let{resourceMetadataUrl:t,scope:n,error:r}=_k(o);if(r===`insufficient_scope`){let r=o.headers.get(`WWW-Authenticate`);if(this._lastUpscopingHeader===r)throw new wk(403,`Server returned 403 after trying upscoping`);if(n&&(this._scope=n),t&&(this._resourceMetadataUrl=t),this._lastUpscopingHeader=r??void 0,await hk(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetch})!==`AUTHORIZED`)throw new fk;return this.send(e)}}throw new wk(o.status,`Error POSTing to endpoint: ${t}`)}if(this._hasCompletedAuthFlow=!1,this._lastUpscopingHeader=void 0,o.status===202){await o.body?.cancel(),Sae(e)&&this._startOrAuthSse({resumptionToken:void 0}).catch(e=>this.onerror?.(e));return}let c=(Array.isArray(e)?e:[e]).filter(e=>`method`in e&&`id`in e&&e.id!==void 0).length>0,l=o.headers.get(`content-type`);if(c)if(l?.includes(`text/event-stream`))this._handleSseStream(o.body,{onresumptiontoken:r},!1);else if(l?.includes(`application/json`)){let e=await o.json(),t=Array.isArray(e)?e.map(e=>ig.parse(e)):[ig.parse(e)];for(let e of t)this.onmessage?.(e)}else throw await o.body?.cancel(),new wk(-1,`Unexpected content type: ${l}`);else await o.body?.cancel()}catch(e){throw 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.body?.cancel(),!n.ok&&n.status!==405)throw new wk(n.status,`Failed to terminate session: ${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})}},Nfe=class extends Event{constructor(e,t){super(e),this.code=t?.code??void 0,this.message=t?.message??void 0}[Symbol.for(`nodejs.util.inspect.custom`)](e,t,n){return n(Ffe(this),t)}[Symbol.for(`Deno.customInspect`)](e,t){return e(Ffe(this),t)}};function Pfe(e){let t=globalThis.DOMException;return typeof t==`function`?new t(e,`SyntaxError`):SyntaxError(e)}function Tk(e){return e instanceof Error?`errors`in e&&Array.isArray(e.errors)?e.errors.map(Tk).join(`, `):`cause`in e&&e.cause instanceof Error?`${e}: ${Tk(e.cause)}`:e.message:`${e}`}function Ffe(e){return{type:e.type,message:e.message,code:e.code,defaultPrevented:e.defaultPrevented,cancelable:e.cancelable,timeStamp:e.timeStamp}}var Ek=e=>{throw TypeError(e)},Dk=(e,t,n)=>t.has(e)||Ek(`Cannot `+n),Ok=(e,t,n)=>(Dk(e,t,`read from private field`),n?n.call(e):t.get(e)),kk=(e,t,n)=>t.has(e)?Ek(`Cannot add the same private member more than once`):t instanceof WeakSet?t.add(e):t.set(e,n),Ak=(e,t,n,r)=>(Dk(e,t,`write to private field`),t.set(e,n),n),jk=(e,t,n)=>(Dk(e,t,`access private method`),n),Mk,Nk,Pk,Fk,Ik,Lk,Rk,zk,Bk,Vk,Hk,Uk,Wk,Gk,Kk,qk,Jk,Yk,Xk,Zk,Qk,$k,eA,tA=class extends EventTarget{constructor(e,t){super(),kk(this,Gk),this.CONNECTING=0,this.OPEN=1,this.CLOSED=2,kk(this,Mk),kk(this,Nk),kk(this,Pk),kk(this,Fk),kk(this,Ik),kk(this,Lk),kk(this,Rk),kk(this,zk,null),kk(this,Bk),kk(this,Vk),kk(this,Hk,null),kk(this,Uk,null),kk(this,Wk,null),kk(this,qk,async e=>{var t;Ok(this,Vk).reset();let{body:n,redirected:r,status:i,headers:a}=e;if(i===204){jk(this,Gk,Qk).call(this,`Server sent HTTP 204, not reconnecting`,204),this.close();return}if(r?Ak(this,Pk,new URL(e.url)):Ak(this,Pk,void 0),i!==200){jk(this,Gk,Qk).call(this,`Non-200 status code (${i})`,i);return}if(!(a.get(`content-type`)||``).startsWith(`text/event-stream`)){jk(this,Gk,Qk).call(this,`Invalid content type, expected "text/event-stream"`,i);return}if(Ok(this,Mk)===this.CLOSED)return;Ak(this,Mk,this.OPEN);let o=new Event(`open`);if((t=Ok(this,Wk))==null||t.call(this,o),this.dispatchEvent(o),typeof n!=`object`||!n||!(`getReader`in n)){jk(this,Gk,Qk).call(this,`Invalid response body, expected a web ReadableStream`,i),this.close();return}let s=new TextDecoder,c=n.getReader(),l=!0;do{let{done:e,value:t}=await c.read();t&&Ok(this,Vk).feed(s.decode(t,{stream:!e})),e&&(l=!1,Ok(this,Vk).reset(),jk(this,Gk,$k).call(this))}while(l)}),kk(this,Jk,e=>{Ak(this,Bk,void 0),!(e.name===`AbortError`||e.type===`aborted`)&&jk(this,Gk,$k).call(this,Tk(e))}),kk(this,Xk,e=>{typeof e.id==`string`&&Ak(this,zk,e.id);let t=new MessageEvent(e.event||`message`,{data:e.data,origin:Ok(this,Pk)?Ok(this,Pk).origin:Ok(this,Nk).origin,lastEventId:e.id||``});Ok(this,Uk)&&(!e.event||e.event===`message`)&&Ok(this,Uk).call(this,t),this.dispatchEvent(t)}),kk(this,Zk,e=>{Ak(this,Lk,e)}),kk(this,eA,()=>{Ak(this,Rk,void 0),Ok(this,Mk)===this.CONNECTING&&jk(this,Gk,Kk).call(this)});try{if(e instanceof URL)Ak(this,Nk,e);else if(typeof e==`string`)Ak(this,Nk,new URL(e,Ife()));else throw Error(`Invalid URL`)}catch{throw Pfe(`An invalid or illegal string was specified`)}Ak(this,Vk,Ofe({onEvent:Ok(this,Xk),onRetry:Ok(this,Zk)})),Ak(this,Mk,this.CONNECTING),Ak(this,Lk,3e3),Ak(this,Ik,t?.fetch??globalThis.fetch),Ak(this,Fk,t?.withCredentials??!1),jk(this,Gk,Kk).call(this)}get readyState(){return Ok(this,Mk)}get url(){return Ok(this,Nk).href}get withCredentials(){return Ok(this,Fk)}get onerror(){return Ok(this,Hk)}set onerror(e){Ak(this,Hk,e)}get onmessage(){return Ok(this,Uk)}set onmessage(e){Ak(this,Uk,e)}get onopen(){return Ok(this,Wk)}set onopen(e){Ak(this,Wk,e)}addEventListener(e,t,n){let r=t;super.addEventListener(e,r,n)}removeEventListener(e,t,n){let r=t;super.removeEventListener(e,r,n)}close(){Ok(this,Rk)&&clearTimeout(Ok(this,Rk)),Ok(this,Mk)!==this.CLOSED&&(Ok(this,Bk)&&Ok(this,Bk).abort(),Ak(this,Mk,this.CLOSED),Ak(this,Bk,void 0))}};Mk=new WeakMap,Nk=new WeakMap,Pk=new WeakMap,Fk=new WeakMap,Ik=new WeakMap,Lk=new WeakMap,Rk=new WeakMap,zk=new WeakMap,Bk=new WeakMap,Vk=new WeakMap,Hk=new WeakMap,Uk=new WeakMap,Wk=new WeakMap,Gk=new WeakSet,Kk=function(){Ak(this,Mk,this.CONNECTING),Ak(this,Bk,new AbortController),Ok(this,Ik)(Ok(this,Nk),jk(this,Gk,Yk).call(this)).then(Ok(this,qk)).catch(Ok(this,Jk))},qk=new WeakMap,Jk=new WeakMap,Yk=function(){let e={mode:`cors`,redirect:`follow`,headers:{Accept:`text/event-stream`,...Ok(this,zk)?{"Last-Event-ID":Ok(this,zk)}:void 0},cache:`no-store`,signal:Ok(this,Bk)?.signal};return`window`in globalThis&&(e.credentials=this.withCredentials?`include`:`same-origin`),e},Xk=new WeakMap,Zk=new WeakMap,Qk=function(e,t){var n;Ok(this,Mk)!==this.CLOSED&&Ak(this,Mk,this.CLOSED);let r=new Nfe(`error`,{code:t,message:e});(n=Ok(this,Hk))==null||n.call(this,r),this.dispatchEvent(r)},$k=function(e,t){var n;if(Ok(this,Mk)===this.CLOSED)return;Ak(this,Mk,this.CONNECTING);let r=new Nfe(`error`,{code:t,message:e});(n=Ok(this,Hk))==null||n.call(this,r),this.dispatchEvent(r),Ak(this,Rk,setTimeout(Ok(this,eA),Ok(this,Lk)))},eA=new WeakMap,tA.CONNECTING=0,tA.OPEN=1,tA.CLOSED=2;function Ife(){let e=`document`in globalThis?globalThis.document:void 0;return e&&typeof e==`object`&&`baseURI`in e&&typeof e.baseURI==`string`?e.baseURI:void 0}var Lfe=class extends Error{constructor(e,t,n){super(`SSE error: ${t}`),this.code=e,this.event=n}},Rfe=class{constructor(e,t){this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._eventSourceInit=t?.eventSourceInit,this._requestInit=t?.requestInit,this._authProvider=t?.authProvider,this._fetch=t?.fetch,this._fetchWithInit=Hde(t?.fetch,t?.requestInit)}async _authThenStart(){if(!this._authProvider)throw new fk(`No auth provider`);let e;try{e=await hk(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(e){throw this.onerror?.(e),e}if(e!==`AUTHORIZED`)throw new fk;return await this._startOrAuth()}async _commonHeaders(){let e={};if(this._authProvider){let t=await this._authProvider.tokens();t&&(e.Authorization=`Bearer ${t.access_token}`)}this._protocolVersion&&(e[`mcp-protocol-version`]=this._protocolVersion);let t=KO(this._requestInit?.headers);return new Headers({...e,...t})}_startOrAuth(){let e=this?._eventSourceInit?.fetch??this._fetch??fetch;return new Promise((t,n)=>{this._eventSource=new tA(this._url.href,{...this._eventSourceInit,fetch:async(t,n)=>{let r=await this._commonHeaders();r.set(`Accept`,`text/event-stream`);let i=await e(t,{...n,headers:r});if(i.status===401&&i.headers.has(`www-authenticate`)){let{resourceMetadataUrl:e,scope:t}=_k(i);this._resourceMetadataUrl=e,this._scope=t}return i}}),this._abortController=new AbortController,this._eventSource.onerror=e=>{if(e.code===401&&this._authProvider){this._authThenStart().then(t,n);return}let r=new Lfe(e.code,e.message,e);n(r),this.onerror?.(r)},this._eventSource.onopen=()=>{},this._eventSource.addEventListener(`endpoint`,e=>{let r=e;try{if(this._endpoint=new URL(r.data,this._url),this._endpoint.origin!==this._url.origin)throw Error(`Endpoint origin does not match connection origin: ${this._endpoint.origin}`)}catch(e){n(e),this.onerror?.(e),this.close();return}t()}),this._eventSource.onmessage=e=>{let t=e,n;try{n=ig.parse(JSON.parse(t.data))}catch(e){this.onerror?.(e);return}this.onmessage?.(n)}})}async start(){if(this._eventSource)throw Error(`SSEClientTransport already started! If using Client class, note that connect() calls start() automatically.`);return await this._startOrAuth()}async finishAuth(e){if(!this._authProvider)throw new fk(`No auth provider`);if(await hk(this._authProvider,{serverUrl:this._url,authorizationCode:e,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new fk(`Failed to authorize`)}async close(){this._abortController?.abort(),this._eventSource?.close(),this.onclose?.()}async send(e){if(!this._endpoint)throw Error(`Not connected`);try{let t=await this._commonHeaders();t.set(`content-type`,`application/json`);let n={...this._requestInit,method:`POST`,headers:t,body:JSON.stringify(e),signal:this._abortController?.signal},r=await(this._fetch??fetch)(this._endpoint,n);if(!r.ok){let t=await r.text().catch(()=>null);if(r.status===401&&this._authProvider){let{resourceMetadataUrl:t,scope:n}=_k(r);if(this._resourceMetadataUrl=t,this._scope=n,await hk(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new fk;return this.send(e)}throw Error(`Error POSTing to endpoint (HTTP ${r.status}): ${t}`)}await r.body?.cancel()}catch(e){throw this.onerror?.(e),e}}setProtocolVersion(e){this._protocolVersion=e}},zfe=class extends Oue{static{a(this,`SseConnectionManager`)}url;opts;_transport=null;reinitializing=!1;constructor(e,t){super(),this.url=typeof e==`string`?new URL(e):e,this.opts=t}async establishConnection(){let e=new Rfe(this.url,this.opts),t=e.send.bind(e);return e.send=async n=>{let r=a(async e=>{if(Array.isArray(e))for(let n of e)await t(n);else await t(e)},`sendMessage`);try{await r(n)}catch(t){if(t?.code===404&&e.sessionId&&!this.reinitializing){l.warn(`[SSE] Session not found (404), re-initializing per MCP spec...`),this.reinitializing=!0;try{e.sessionId=void 0,await this.reinitialize(e),l.debug(`[SSE] Re-initialization successful, retrying request`),await r(n)}finally{this.reinitializing=!1}}else throw t}},this._transport=e,l.debug(`${this.constructor.name} connected successfully`),e}async reinitialize(e){l.debug(`[SSE] Re-initialization triggered`)}async closeConnection(e){if(this._transport)try{await this._transport.close()}catch(e){l.warn(`Error closing SSE transport: ${e}`)}finally{this._transport=null}}},nA=class extends Due{static{a(this,`HttpConnector`)}baseUrl;headers;timeout;sseReadTimeout;customFetch;clientInfo;preferSse;disableSseFallback;gatewayUrl;serverId;reconnectionOptions;transportType=null;streamableTransport=null;constructor(e,t={}){super(t);let n=e.replace(/\/$/,``);this.gatewayUrl=t.gatewayUrl,this.serverId=t.serverId,this.gatewayUrl?(this.baseUrl=this.gatewayUrl.replace(/\/$/,``),this.headers={...t.headers??{}},this.headers[`X-Target-URL`]=n,this.serverId&&(this.headers[`X-Server-Id`]=this.serverId)):(this.baseUrl=n,this.headers={...t.headers??{}}),t.authToken&&(this.headers.Authorization=`Bearer ${t.authToken}`),this.timeout=t.timeout??1e4,this.sseReadTimeout=t.sseReadTimeout??3e5,this.customFetch=t.fetch,this.clientInfo=t.clientInfo??{name:`http-connector`,version:`1.0.0`},this.preferSse=t.preferSse??!1,this.disableSseFallback=t.disableSseFallback??!1,this.reconnectionOptions=t.reconnectionOptions}buildClientOptions(){return{...this.opts.clientOptions||{},capabilities:{...this.opts.clientOptions?.capabilities||{},roots:{listChanged:!0},...this.opts.onSampling?{sampling:{}}:{},...this.opts.onElicitation??this.opts.elicitationCallback?{elicitation:{form:{},url:{}}}:{}}}}unwrapStreamableError(e){return e instanceof wk?e:e instanceof Error&&e.cause instanceof wk?e.cause:null}classifyStreamableHttpFailure(e){let t=`Unknown error`,n=!1,r,i=this.unwrapStreamableError(e);if(i)return n=i.code===401,r=i.code,i.code===400&&i.message.includes(`Missing session ID`)?(t=`Server requires session ID (FastMCP compatibility) - using SSE transport`,l.warn(`\u26A0\uFE0F ${t}`)):i.code===404||i.code===405?(t=`Server returned ${i.code} - server likely doesn't support streamable HTTP`,l.debug(t)):(t=`Server returned ${i.code}: ${i.message}`,l.debug(t)),{fallbackReason:t,is401Error:n,httpStatusCode:r};if(e instanceof Error){let r=e.toString(),i=e.message||``;n=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) - using SSE transport`,l.warn(`\u26A0\uFE0F ${t}`)):r.includes(`405 Method Not Allowed`)||r.includes(`404 Not Found`)?(t=`Server doesn't support streamable HTTP (405/404)`,l.debug(t)):(t=`Streamable HTTP failed: ${e.message}`,l.debug(t))}return{fallbackReason:t,is401Error:n,httpStatusCode:r}}async connect(){if(this.connected){l.debug(`Already connected to MCP implementation`);return}let e=this.baseUrl;if(this.preferSse){l.debug(`Connecting to MCP implementation via HTTP/SSE: ${e}`),await this.connectWithSse(e);return}l.debug(`Connecting to MCP implementation via HTTP: ${e}`);try{l.debug(`🔄 Attempting streamable HTTP transport...`),await this.connectWithStreamableHttp(e),l.debug(`✅ Successfully connected via streamable HTTP`)}catch(t){l.debug(`Streamable HTTP connect failed`,t);let{fallbackReason:n,is401Error:r,httpStatusCode:i}=this.classifyStreamableHttpFailure(t);if(r){l.info(`Authentication required - skipping SSE fallback`),await this.cleanupResources();let e=Error(`Authentication required`);throw e.code=401,e}if(this.disableSseFallback)throw l.info(`SSE fallback disabled - failing connection`),await this.cleanupResources(),Error(`Streamable HTTP connection failed: ${n}`);l.debug(`🔄 Falling back to SSE transport...`);try{await this.connectWithSse(e)}catch(e){if(l.error(`Failed to connect with both transports:`),l.error(` Streamable HTTP: ${n}`),l.error(` SSE: ${e}`),await this.cleanupResources(),e?.message?.includes(`401`)||e?.message?.includes(`Unauthorized`)){let e=Error(`Authentication required`);throw e.code=401,e}let t=Error(`Could not connect to server with any available transport. Streamable HTTP: ${n}`);throw i!==void 0&&(Object.defineProperty(t,`code`,{value:i,writable:!1,enumerable:!0,configurable:!0}),l.debug(`Preserving HTTP status code ${i} in error for proxy fallback detection`)),t}}}async connectWithStreamableHttp(e){try{l.debug(`[HttpConnector] Connecting with Streamable HTTP`,{baseUrl:e,originalUrl:this.baseUrl,gatewayUrl:this.gatewayUrl||`none`,authProviderUrl:this.opts.authProvider?.serverUrl||`none`,headers:this.headers});let t=new Mfe(new URL(e),{authProvider:this.opts.authProvider,fetch:this.customFetch,requestInit:{headers:this.headers},reconnectionOptions:{maxReconnectionDelay:3e4,initialReconnectionDelay:1e3,reconnectionDelayGrowFactor:1.5,maxRetries:2,...this.reconnectionOptions}}),n=t;if(this.opts.wrapTransport){let e=this.baseUrl;n=this.opts.wrapTransport(n,e)}let r=this.buildClientOptions();l.debug(`Creating Client with capabilities:`,JSON.stringify(r.capabilities,null,2)),this.client=new Vde(this.clientInfo,r),this.setupRootsHandler(),l.debug(`Roots handler registered before connect`);try{await this.client.connect(n,{timeout:this.timeout});let e=t.sessionId;e?l.debug(`Session ID obtained: ${e}`):l.warn(`Session ID not available after connect - this may cause issues with SSE stream`)}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=t,this.connectionManager={stop:a(async()=>{if(this.streamableTransport)try{await this.streamableTransport.close()}catch(e){l.warn(`Error closing Streamable HTTP transport: ${e}`)}finally{this.streamableTransport=null}},`stop`)},this.connected=!0,this.transportType=`streamable-http`,this.setupNotificationHandler(),this.setupSamplingHandler(),this.setupElicitationHandler(),l.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}}async connectWithSse(e){try{this.connectionManager=new zfe(e,{authProvider:this.opts.authProvider,requestInit:{headers:this.headers}});let t=await this.connectionManager.start();if(this.opts.wrapTransport){let e=this.baseUrl;t=this.opts.wrapTransport(t,e)}let n=this.buildClientOptions();l.debug(`Creating Client with capabilities (SSE):`,JSON.stringify(n.capabilities,null,2)),this.client=new Vde(this.clientInfo,n),this.setupRootsHandler(),l.debug(`Roots handler registered before connect (SSE)`),await this.client.connect(t),this.connected=!0,this.transportType=`sse`,this.setupNotificationHandler(),this.setupSamplingHandler(),this.setupElicitationHandler(),l.debug(`Successfully connected to MCP implementation via HTTP/SSE: ${e}`),this.trackConnectorInit({serverUrl:this.baseUrl,publicIdentifier:`${this.baseUrl} (sse)`})}catch(e){throw await this.cleanupResources(),e}}get publicIdentifier(){return{type:`http`,url:this.baseUrl,transport:this.transportType||`unknown`}}getTransportType(){return this.transportType}async cleanupResources(){if(this.streamableTransport)try{await this.streamableTransport.terminateSession()}catch(e){l.debug(`Error terminating Streamable HTTP session: ${e}`)}await super.cleanupResources()}};function rA(e,t){return{onSampling:e?.onSampling??e?.samplingCallback??t?.onSampling??t?.samplingCallback,onElicitation:e?.onElicitation??e?.elicitationCallback??t?.onElicitation??t?.elicitationCallback,onNotification:e?.onNotification??t?.onNotification}}a(rA,`resolveCallbacks`);function iA(){return{name:`mcp-use`,title:`mcp-use`,version:nO(),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`}}a(iA,`getDefaultClientInfo`);function aA(e){let t=iA();if(!e||typeof e!=`object`)return t;let n=e;return!n.name||!n.version?t:{...t,...n}}a(aA,`normalizeClientInfo`);function Bfe(e,t){let n=aA(e.clientInfo);if(`command`in e&&`args`in e)throw Error(`Stdio connector is not supported in this environment. Stdio connections require Node.js and are only available in the Node.js MCPClient.`);if(`url`in e){let r=e.transport||`http`;return new nA(e.url,{headers:e.headers,fetch:e.fetch,authToken:e.auth_token||e.authToken,authProvider:e.authProvider,preferSse:e.preferSse||r===`sse`,disableSseFallback:e.disableSseFallback,clientInfo:n,...t})}throw Error(`Cannot determine connector type from config`)}a(Bfe,`createConnectorFromConfig`);var Vfe=class{static{a(this,`MCPSession`)}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}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)}},Hfe=class{static{a(this,`BaseMCPClient`)}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,gO.getInstance().trackClientAddServer(e,t)}removeServer(e){this.config.mcpServers?.[e]&&(delete this.config.mcpServers[e],this.activeSessions=this.activeSessions.filter(t=>t!==e),gO.getInstance().trackClientRemoveServer(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&&l.warn(`No MCP servers defined in config`),!n[e])throw Error(`Server '${e}' not found in config`);let r=new Vfe(await Promise.resolve(this.createConnectorFromConfig(n[e])));return t&&await r.initialize(),this.sessions[e]=r,this.activeSessions.includes(e)||this.activeSessions.push(e),r}async createAllSessions(e=!0){let t=this.config.mcpServers??{};Object.keys(t).length===0&&l.warn(`No MCP servers defined in config`);for(let n of Object.keys(t))await this.createSession(n,e);return this.sessions}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){l.warn(`No session exists for server ${e}, nothing to close`);return}try{l.debug(`Closing session for server ${e}`),await t.disconnect()}catch(t){l.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{l.debug(`Closing session for server ${n}`),await this.closeSession(n)}catch(e){let r=`Failed to close session for server '${n}': ${e}`;l.error(r),t.push(r)}t.length?l.error(`Encountered ${t.length} errors while closing sessions`):l.debug(`All sessions closed successfully`)}};function oA(e){let t=Object.keys(e.mcpServers??{});gO.getInstance().trackMCPClientInit({codeMode:!1,sandbox:!1,allCallbacks:!1,verify:!1,servers:t,numServers:t.length,isBrowser:!0}).catch(e=>l.debug(`Failed to track BrowserMCPClient init: ${e}`))}a(oA,`trackBrowserClientInit`);var Ufe=class e extends Hfe{static{a(this,`BrowserMCPClient`)}static getPackageVersion(){return nO()}constructor(e){super(e),oA(this.config)}static fromDict(t){return new e(t)}createConnectorFromConfig(e){let{url:t,headers:n,fetch:r,authToken:i,authProvider:a,wrapTransport:o,clientOptions:s,disableSseFallback:c,preferSse:u,timeout:d,sseReadTimeout:f,gatewayUrl:p,serverId:m,reconnectionOptions:h}=e;if(!t)throw Error(`Server URL is required`);let g=this.config,_=rA(e,g),v=aA(e.clientInfo??this.config.clientInfo),y={headers:n,fetch:r,authToken:i,authProvider:a,wrapTransport:o,clientOptions:s,onSampling:_.onSampling,onElicitation:_.onElicitation,onNotification:_.onNotification,disableSseFallback:c,preferSse:u,timeout:d,sseReadTimeout:f,clientInfo:v,gatewayUrl:p,serverId:m,reconnectionOptions:h};return l.debug(`[BrowserMCPClient] Connector options prepared (clientOptions: ${s?`provided`:`none`})`),new nA(t,y)}};function sA(e){let t=a(()=>{throw Error(`Invalid url to pass to open(): ${e}`)},`abort`),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(cA).join(`&`),n.hash=n.hash.slice(0,1)+encodeURIComponent(n.hash.slice(1)),n.href}a(sA,`sanitizeUrl`);function cA([e,t]){return`${encodeURIComponent(e)}${t.length>0?`=${encodeURIComponent(t)}`:``}`}a(cA,`sanitizeParam`);var Wfe=class{static{a(this,`LocalStorageKVStore`)}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}},Gfe=class e{static{a(this,`OAuthSessionStore`)}serverUrl;storageKeyPrefix;serverUrlHash;clientName;clientUri;logoUri;callbackUrl;scope;store;_cachedAuthServerUrl=null;_cachedMetadata=null;_refreshPromise=null;constructor(t,n,r){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:``),this.logoUri=n.logoUri||`https://mcp-use.com/logo.png`,this.callbackUrl=sA(n.callbackUrl||(typeof window<`u`?new URL(`/oauth/callback`,window.location.origin).toString():`/oauth/callback`)),this.scope=n.scope,this.store=r}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}:{}}}async tokens(){let e=this.getKey(`tokens`),t=await this.store.get(e);if(t)try{let e=JSON.parse(t);if(e.access_token&&e.refresh_token)try{let t=JSON.parse(atob(e.access_token.split(`.`)[1]));if(t.exp&&Date.now()>=(t.exp-30)*1e3){console.log(`[tokens] Access token expiring soon, refreshing...`);let t=await this._dedupedRefresh(e);if(t)return console.log(`[tokens] Refreshed successfully`),t}}catch{}return e}catch(t){console.warn(`[${this.storageKeyPrefix}] Failed to parse tokens:`,t),await this.store.remove(e);return}}async saveTokens(e){await this.store.set(this.getKey(`tokens`),JSON.stringify(e)),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`))}async clientInformation(){let e=this.getKey(`client_info`),t=await this.store.get(e);if(t)try{let n=JSON.parse(t),r=Array.isArray(n.redirect_uris)?n.redirect_uris:[];if(!(r.length===0||r.includes(this.redirectUrl))){console.info(`[${this.storageKeyPrefix}] Invalidating cached OAuth client info due to redirect URI mismatch.`),await this.store.remove(e),await this.store.remove(this.getKey(`tokens`)),await this.store.remove(this.getKey(`last_auth_url`));return}return n}catch(t){console.warn(`[${this.storageKeyPrefix}] Failed to parse client information:`,t),await this.store.remove(e);return}}async saveClientInformation(e){let t=this.getKey(`client_info`);await this.store.set(t,JSON.stringify(e))}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){switch(e){case`all`:await this.store.remove(this.getKey(`tokens`)),await this.store.remove(this.getKey(`client_info`)),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`));break;case`client`:await this.store.remove(this.getKey(`client_info`));break;case`tokens`:await this.store.remove(this.getKey(`tokens`));break;case`verifier`:await this.store.remove(this.getKey(`code_verifier`));break;default:break}}async storeAuthorizationState(e,t={}){let n=globalThis.crypto.randomUUID(),r=`${this.storageKeyPrefix}:state_${n}`,i=await this.store.get(this.getKey(`code_verifier`)),a={serverUrlHash:this.serverUrlHash,expiry:Date.now()+1e3*60*10,codeVerifier:i||void 0,providerOptions:{serverUrl:this.serverUrl,storageKeyPrefix:this.storageKeyPrefix,clientName:this.clientName,clientUri:this.clientUri,callbackUrl:this.callbackUrl,...t.extraProviderOptions??{}},flowType:t.flowType,returnUrl:t.returnUrl};e.searchParams.set(`state`,n);let o=sA(e.toString());return await this.store.set(r,JSON.stringify(a)),await this.store.set(this.getKey(`last_auth_url`),o),o}async _refresh(e){try{if(!this._cachedAuthServerUrl||!this._cachedMetadata){let e=(await yk(this.serverUrl)).authorization_servers?.[0];if(!e)return null;let t=await xk(e);if(!t)return null;this._cachedAuthServerUrl=e,this._cachedMetadata=t}let t=await this.clientInformation();if(!t)return null;let n=await Sk(this._cachedAuthServerUrl,{metadata:this._cachedMetadata,clientInformation:t,refreshToken:e.refresh_token});return await this.saveTokens(n),n}catch{return null}}async _dedupedRefresh(e){if(this._refreshPromise)return this._refreshPromise;this._refreshPromise=this._refresh(e);try{return await this._refreshPromise}finally{this._refreshPromise=null}}async forceRefresh(){let e=await this.store.get(this.getKey(`tokens`));if(!e)return null;let t;try{t=JSON.parse(e)}catch{return null}return t.refresh_token?this._dedupedRefresh(t):null}async getClientCredentials(){try{let e=await this.clientInformation();return e?.client_id?{client_id:e.client_id,...e.client_secret?{client_secret:e.client_secret}:{}}:null}catch{return null}}async getTokenEndpoint(){if(this._cachedMetadata?.token_endpoint)return this._cachedMetadata.token_endpoint;try{let e=await this.store.get(this.getKey(`token_endpoint`));if(e)return e;let t=(await yk(this.serverUrl)).authorization_servers?.[0];if(!t)return null;let n=await xk(t);return n?.token_endpoint?(this._cachedAuthServerUrl=t,this._cachedMetadata=n,await this.store.set(this.getKey(`token_endpoint`),n.token_endpoint),n.token_endpoint):null}catch{return null}}};async function lA(e){return typeof e==`string`?e:e instanceof URLSearchParams||e instanceof FormData?Object.fromEntries(e.entries()):e instanceof Blob?await e.text():e}a(lA,`serializeBody`);var uA=class{static{a(this,`BrowserOAuthClientProvider`)}serverUrl;staticClientInfo;session;preventAutoAuth;useRedirectFlow;oauthProxyUrl;connectionUrl;originalFetch;_lastOriginalResource=null;onPopupWindow;constructor(e,t={}){this.serverUrl=e,this.session=new Gfe(e,t,new Wfe),this.preventAutoAuth=t.preventAutoAuth,this.useRedirectFlow=t.useRedirectFlow,this.oauthProxyUrl=t.oauthProxyUrl,this.connectionUrl=t.connectionUrl,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}getKey(e){return this.session.getKey(e)}installFetchInterceptor(){if(!this.oauthProxyUrl){console.warn(`[BrowserOAuthProvider] No OAuth proxy URL configured, skipping fetch interceptor installation`);return}if(!this.originalFetch)this.originalFetch=window.fetch;else{console.warn(`[BrowserOAuthProvider] Fetch interceptor already installed`);return}let e=this.oauthProxyUrl,t=this.connectionUrl,n=this.serverUrl,r=this.originalFetch;console.log(`[BrowserOAuthProvider] Installing fetch interceptor with proxy: ${e}`),window.fetch=async(i,a)=>{let o=typeof i==`string`?i:i instanceof URL?i.toString():i.url;if(!(o.includes(`/.well-known/`)||o.match(/\/(register|token|authorize)$/)))return await r(i,a);try{let t=new URL(o),n=new URL(e);if(t.origin===n.origin&&(t.pathname.startsWith(n.pathname)||o.includes(`/inspector/api/oauth`)))return await r(i,a)}catch{}try{let i=o.includes(`/.well-known/`),s=i?`${e}/metadata?url=${encodeURIComponent(o)}`:`${e}/proxy`;if(console.log(`[OAuth Proxy] Routing ${i?`metadata`:`request`} through: ${s}`),i){let e={...a?.headers?Object.fromEntries(new Headers(a.headers)):{}};t&&(e[`X-Connection-URL`]=t);let i=new URL(s);n&&i.searchParams.set(`mcp_url`,n);let o=await r(i.toString(),{...a,method:`GET`,headers:e});try{if((o.headers.get(`content-type`)||``).includes(`application/json`)){let e=await o.clone().json(),t=e&&typeof e==`object`&&typeof e._original_resource==`string`?e._original_resource:null;t&&(this._lastOriginalResource=t)}}catch{}return o}let c=a?.body?await lA(a.body):void 0,l=await(await r(s,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:o,method:a?.method||`POST`,headers:a?.headers?Object.fromEntries(new Headers(a.headers)):{},body:c})})).json();return new Response(JSON.stringify(l.body),{status:l.status,statusText:l.statusText,headers:new Headers(l.headers)})}catch(e){return console.error(`[OAuth Proxy] Request failed, falling back to direct fetch:`,e),await r(i,a)}}}restoreFetch(){this.originalFetch&&=(console.log(`[BrowserOAuthProvider] Restoring original fetch`),window.fetch=this.originalFetch,void 0)}get redirectUrl(){return this.session.redirectUrl}get clientMetadata(){return this.session.clientMetadata}tokens(){return this.session.tokens()}saveTokens(e){return this.session.saveTokens(e)}async clientInformation(){return this.staticClientInfo?this.staticClientInfo:this.session.clientInformation()}async saveClientInformation(e){if(!this.staticClientInfo)return this.session.saveClientInformation(e)}codeVerifier(){return this.session.codeVerifier()}saveCodeVerifier(e){return this.session.saveCodeVerifier(e)}invalidateCredentials(e){return this.session.invalidateCredentials(e)}getTokenEndpoint(){return this.session.getTokenEndpoint()}getClientCredentials(){return this.session.getClientCredentials()}async prepareAuthorizationUrl(e){return this.rewriteResourceIfLocalProxy(e),this.session.storeAuthorizationState(e,{extraProviderOptions:{oauthProxyUrl:this.oauthProxyUrl,connectionUrl:this.connectionUrl,...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)}}rewriteResourceIfLocalProxy(e){let t=e.searchParams.get(`resource`),n=!!(t&&(t.includes(`/inspector/api/proxy`)||t.includes(`/api/proxy`)||t.includes(`localhost:3000`))),r=!!(t&&this.connectionUrl&&t===this.connectionUrl),i=!!(t&&(this._lastOriginalResource||this.serverUrl)&&(r||n)),a=this._lastOriginalResource||this.serverUrl;i&&a&&e.searchParams.set(`resource`,a)}getLastAttemptedAuthUrl(){let e=localStorage.getItem(this.getKey(`last_auth_url`));return e?sA(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}},dA=`mcp_auth_callback`,Kfe=`mcp_auth_callback`;function fA(e){try{return typeof localStorage<`u`&&!!localStorage.getItem(e)}catch{return!1}}a(fA,`hasStoredTokens`);function pA({popup:e,state:t,tokensKey:n,timeoutMs:r=5*6e4,closePollMs:i=1e3,closeGraceMs:o=2e4,expectedOrigin:s=typeof window<`u`?window.location.origin:``}){return new Promise(c=>{let l=!1,u=null,d=null,f=null,p=null,m=a(()=>{if(u&&=(clearInterval(u),null),d&&=(clearTimeout(d),null),f&&=(clearTimeout(f),null),typeof window<`u`&&(window.removeEventListener(`message`,_),window.removeEventListener(`storage`,y)),p){try{p.removeEventListener(`message`,v),p.close()}catch{}p=null}},`cleanup`),h=a(e=>{l||(l=!0,m(),c(e))},`settle`),g=a(e=>{!e||e.type!==`mcp_auth_callback`||e.state&&t&&e.state!==t||(e.success?h({kind:`success`}):h({kind:`error`,error:e.error??`Authentication failed in callback.`}))},`handlePayload`),_=a(e=>{s&&e.origin!==s||g(e.data)},`messageHandler`),v=a(e=>{g(e.data)},`broadcastHandler`),y=a(e=>{e.key===n&&e.newValue&&h({kind:`success`})},`storageHandler`);if(typeof window<`u`&&(window.addEventListener(`message`,_),window.addEventListener(`storage`,y)),typeof BroadcastChannel<`u`)try{p=new BroadcastChannel(dA),p.addEventListener(`message`,v)}catch{p=null}e&&(u=setInterval(()=>{if(l)return;let t=!1;try{t=e.closed}catch{t=!1}if(t){if(u&&=(clearInterval(u),null),fA(n)){h({kind:`success`});return}f=setTimeout(()=>{h(fA(n)?{kind:`success`}:{kind:`cancelled`})},o)}},i)),d=setTimeout(()=>{h(fA(n)?{kind:`success`}:{kind:`timeout`})},r)})}a(pA,`runAuthPopup`);var mA=null;function hA(){if(typeof window>`u`)return!1;let e=window.name;return typeof e==`string`&&e.startsWith(`mcp_auth_`)}a(hA,`isMcpAuthPopupWindow`);function gA(e,t,n){return{type:Kfe,success:e,...e?{}:{error:t??`Unknown error`},...n?.state?{state:n.state}:{},...n?.serverUrlHash?{serverUrlHash:n.serverUrlHash}:{}}}a(gA,`buildCallbackPayload`);function _A(e,t,n){if(typeof BroadcastChannel>`u`)return;let r=null;try{r=new BroadcastChannel(dA),r.postMessage(gA(e,t,n))}catch(e){console.warn(`[mcp-callback] Failed to broadcast auth callback over BroadcastChannel:`,e)}finally{r&&setTimeout(()=>{try{r?.close()}catch{}},0)}}a(_A,`broadcastAuthCallback`);function vA(e,t,n=`success`,r){if(!(typeof document>`u`))try{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`);n===`error`&&(o.style.color=`red`,o.style.backgroundColor=`#ffebeb`,o.style.border=`1px solid red`,o.style.padding=`10px`,o.style.borderRadius=`4px`),o.textContent=t,i.appendChild(o);let s=document.createElement(`p`);s.textContent=`You can close this window or `;let c=document.createElement(`a`);if(c.href=`#`,c.textContent=`click here to close`,c.onclick=e=>(e.preventDefault(),window.close(),!1),s.appendChild(c),s.appendChild(document.createTextNode(`.`)),i.appendChild(s),r){let e=document.createElement(`p`),t=document.createElement(`a`);t.href=r,t.textContent=`Return to the app`,e.appendChild(t),i.appendChild(e)}document.body.appendChild(i)}catch{}}a(vA,`renderCloseWindowMessage`);function qfe(){return mA||(mA=yA(),mA)}a(qfe,`onMcpAuthorization`);async function yA(){let e=new URLSearchParams(window.location.search),t=e.get(`code`),n=e.get(`state`),r=e.get(`error`),i=e.get(`error_description`),o=`[mcp-callback]`;console.log(`${o} Handling callback...`,{code:t,state:n,error:r,errorDescription:i});let s=null,c=null,l=null;try{if(!n)throw Error(`State parameter not found or invalid in callback query parameters.`);console.log(`[mcp-callback] Looking for state: ${n}`),console.log(`[mcp-callback] All localStorage keys:`,Object.keys(localStorage));let e=`mcp:auth:state_${n}`;if(localStorage.getItem(e))l=e,console.log(`[mcp-callback] Found state with default key: ${e}`);else{let e=`:state_${n}`;for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);if(n&&n.endsWith(e)){l=n,console.log(`[mcp-callback] Found state with dynamic key: ${n}`);break}}}if(!l){let e=Object.keys(localStorage).filter(e=>e.includes(`state`));throw console.log(`[mcp-callback] State keys in storage:`,e),Error(`Invalid or expired state parameter "${n}". No matching state found in storage.`)}let u=localStorage.getItem(l);if(!u)throw Error(`Invalid or expired state parameter "${n}". No matching state found in storage.`);try{c=JSON.parse(u)}catch{throw Error(`Failed to parse stored OAuth state.`)}if(!c.expiry||c.expiry<Date.now())throw localStorage.removeItem(l),Error(`OAuth state has expired. Please try initiating authentication again.`);let d={state:n,serverUrlHash:c.serverUrlHash};if(r){console.log(`${o} OAuth error received: ${r} - ${i||`No description`}`);let e=c.flowType===`redirect`,t=window.opener&&!window.opener.closed,n=hA()||c.flowType===`popup`,s=a(e=>{console.log(`${o} Returning to: ${e}`),localStorage.removeItem(l);let t=new URL(e);t.searchParams.set(`auth_error`,r),i&&t.searchParams.set(`auth_error_description`,i),window.location.href=t.toString()},`redirectWithError`);if(t){window.opener.postMessage(gA(!1,`${r}${i?`: ${i}`:``}`,d),window.location.origin),localStorage.removeItem(l),window.close();return}if(c.returnUrl&&(e||!n)){s(c.returnUrl);return}if(n){_A(!1,`${r}${i?`: ${i}`:``}`,d),localStorage.removeItem(l),vA(`Authentication Error`,`${r}${i?`: ${i}`:``}`,`error`,c.returnUrl);try{window.close()}catch{}return}throw Error(`OAuth error: ${r}${i?` - ${i}`:``}`)}if(!t)throw Error(`Authorization code not found in callback query parameters.`);if(!c.providerOptions)throw Error(`Stored state is missing required provider options.`);let{serverUrl:f,...p}=c.providerOptions,m=p.connectionUrl,h=!!(m&&/run\.mcp-use\.com|mcp-use\.run/.test(m)),g=h?m:void 0,_=p.oauthProxyUrl,v=g;if(!_&&v)try{let e=new URL(window.location.href);if(e.pathname.includes(`/oauth/callback`)){let t=e.pathname.replace(/\/oauth\/callback.*$/,``);(!t||t===``)&&(/run\.mcp-use\.com|mcp-use\.run/.test(v)?console.log(`${o} Gateway connection detected; skipping default /inspector OAuth proxy inference`):(t=`/inspector`,console.log(`${o} Callback at root /oauth/callback, using /inspector as base path for OAuth proxy`))),t&&(_=`${e.origin}${t}/api/oauth`),console.log(`${o} Inferred OAuth proxy URL from callback: ${_}`)}}catch(e){console.warn(`${o} Could not infer OAuth proxy URL:`,e)}console.log(`${o} Re-instantiating provider for server: ${f}`),s=new uA(f,{...p,oauthProxyUrl:_,connectionUrl:v});let y=`${p.storageKeyPrefix}_${c.serverUrlHash}_code_verifier`,b=c.codeVerifier||localStorage.getItem(y);if(b)localStorage.setItem(y,b),localStorage.setItem(s.getKey(`code_verifier`),b);else throw Error(`[${p.storageKeyPrefix}] Code verifier missing for OAuth state ${n}. Please restart authentication.`);_&&(console.log(`${o} Installing fetch interceptor for token exchange (proxy: ${_})`),s.installFetchInterceptor()),console.log(`${o} Calling SDK auth() to exchange code...`);let x=h&&v?v:f;console.log(`${o} Using SDK serverUrl: ${x} (connectionUrl: ${v||`none`})`);let S=await hk(s,{serverUrl:x,authorizationCode:t});if(S===`AUTHORIZED`){console.log(`${o} Authorization successful via SDK auth().`);let e=c.flowType===`redirect`,t=hA()||c.flowType===`popup`;if(e&&c.returnUrl)console.log(`${o} Redirect flow complete. Returning to: ${c.returnUrl}`),localStorage.removeItem(l),window.location.href=c.returnUrl;else if(window.opener&&!window.opener.closed)console.log(`${o} Popup flow complete. Notifying opener...`),window.opener.postMessage(gA(!0,void 0,d),window.location.origin),localStorage.removeItem(l),window.close();else if(t){console.log(`${o} Popup flow complete but opener was lost; broadcasting success and rendering close-window message.`),_A(!0,void 0,d),localStorage.removeItem(l),vA(`Authentication Successful!`,`You're authenticated. You can close this window and return to the app.`,`success`,c.returnUrl);try{window.close()}catch{}}else if(c.returnUrl)console.log(`${o} Popup flow without opener (top-level nav). Returning to: ${c.returnUrl}`),localStorage.removeItem(l),window.location.href=c.returnUrl;else{console.warn(`${o} No opener window or return URL detected. Redirecting to root.`),localStorage.removeItem(l);let e=window.location.pathname.split(`/`).filter(Boolean),t=e.length>0&&e[e.length-1]===`callback`?`/`+e.slice(0,-2).join(`/`):`/`;window.location.href=t||`/`}}else throw console.warn(`${o} SDK auth() returned unexpected status: ${S}`),Error(`Unexpected result from authentication library: ${S}`)}catch(e){console.error(`${o} Error during OAuth callback handling:`,e);let t=e instanceof Error?e.message:String(e),r={state:n,serverUrlHash:c?.serverUrlHash};window.opener&&!window.opener.closed?window.opener.postMessage(gA(!1,t,r),window.location.origin):(hA()||c?.flowType===`popup`)&&_A(!1,t,r);try{document.body.innerHTML=``;let n=document.createElement(`div`);n.style.fontFamily=`sans-serif`,n.style.padding=`20px`;let r=document.createElement(`h1`);r.textContent=`Authentication Error`,n.appendChild(r);let i=document.createElement(`p`);i.style.color=`red`,i.style.backgroundColor=`#ffebeb`,i.style.border=`1px solid red`,i.style.padding=`10px`,i.style.borderRadius=`4px`,i.textContent=t,n.appendChild(i);let a=document.createElement(`p`);a.textContent=`You can close this window or `;let o=document.createElement(`a`);if(o.href=`#`,o.textContent=`click here to close`,o.onclick=e=>(e.preventDefault(),window.close(),!1),a.appendChild(o),a.appendChild(document.createTextNode(`.`)),n.appendChild(a),e instanceof Error&&e.stack){let t=document.createElement(`pre`);t.style.fontSize=`0.8em`,t.style.color=`#555`,t.style.marginTop=`20px`,t.style.whiteSpace=`pre-wrap`,t.textContent=e.stack,n.appendChild(t)}document.body.appendChild(n)}catch(e){console.error(`${o} Could not display error in callback window:`,e)}l&&localStorage.removeItem(l),s&&localStorage.removeItem(s.getKey(`last_auth_url`))}}a(yA,`doOnMcpAuthorization`);async function bA(e,t=fetch){let n=e.replace(/\/$/,``),r=await t(n.endsWith(`/mcp`)?n:`${n}/mcp`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({jsonrpc:`2.0`,method:`initialize`,id:1,params:{}})});if(r.status!==401)return{};let{resourceMetadataUrl:i,scope:a}=_k(r);return{resourceMetadataUrl:i,scope:a}}a(bA,`probeAuthParams`);function xA(e,t){if(!e)throw Error(t)}a(xA,`assert`);function SA(e){return e===`localhost`||e===`127.0.0.1`||e.startsWith(`127.`)||e.startsWith(`192.168.`)||e.startsWith(`10.`)||e.startsWith(`172.`)}a(SA,`isLocalServer`);function CA(e){let t=e.split(`.`),n=[];for(let e=0;e<t.length-1;e++)n.push(t.slice(e).join(`.`));return n}a(CA,`getSubdomainLevels`);function wA(e){return new Promise((t,n)=>{let r=new FileReader;r.onloadend=()=>{t(r.result)},r.onerror=n,r.readAsDataURL(e)})}a(wA,`blobToBase64`);async function TA(e){console.debug(`[favicon-detector] Starting favicon detection for:`,e);try{let t;if(t=e.startsWith(`http://`)||e.startsWith(`https://`)?new URL(e).hostname:e.includes(`://`)?e.split(`://`)[1].split(`/`)[0]:e.split(`/`)[0],console.debug(`[favicon-detector] Extracted domain:`,t),SA(t))return console.debug(`[favicon-detector] Skipping local server:`,t),null;let n=CA(t);console.debug(`[favicon-detector] Domains to try:`,n);for(let e of n)try{let t=`https://favicon.tools.mcp-use.com/${e}?response=json`;console.debug(`[favicon-detector] Attempting to fetch favicon metadata for:`,e,`from:`,t);let n=new AbortController,r=setTimeout(()=>n.abort(),2e3);try{let i=await fetch(t,{signal:n.signal});if(clearTimeout(r),!i.ok){console.debug(`[favicon-detector] Fetch failed for`,e,`with status:`,i.status);continue}let a=await i.json();console.debug(`[favicon-detector] Retrieved favicon metadata for:`,e,`source:`,a.source);let o=a.url.replace(/^http:\/\//,`https://`),s=await fetch(o);if(!s.ok){console.debug(`[favicon-detector] Failed to fetch favicon image for`,e,`status:`,s.status);continue}let c=await s.blob(),l=await wA(c);if(a.source===`default`){console.debug(`[favicon-detector] Found default favicon for:`,e,`skipping and continuing to search for non-default`);continue}return console.debug(`[favicon-detector] Successfully retrieved non-default favicon for:`,e,`source:`,a.source,`size:`,c.size,`bytes`),l}catch(t){clearTimeout(r),console.debug(`[favicon-detector] Fetch error for`,e,`:`,t instanceof Error?t.message:String(t));continue}}catch(t){console.debug(`[favicon-detector] Error processing domain`,e,`:`,t instanceof Error?t.message:String(t));continue}return console.debug(`[favicon-detector] No non-default favicon found for:`,e,`returning null to show gradient fallback`),null}catch(e){return console.warn(`[favicon-detector] Error detecting favicon:`,e),null}}a(TA,`detectFavicon`);function EA(e,t){let n=t?.headers??t?.customHeaders??{};if(t?.customHeaders&&!t?.headers&&console.warn(`[applyProxyConfig] The "customHeaders" option in proxyConfig is deprecated. Use "headers" instead.`),!t?.proxyAddress)return{url:e,headers:n};let r=new URL(t.proxyAddress),i=new URL(e);return{url:`${r.origin}${r.pathname}${i.pathname}${i.search}`,headers:{"X-Target-URL":e,...n}}}a(EA,`applyProxyConfig`);var DA=`inspector-server`;function OA(e,t){return t?`state=${e}`:`client disconnected (state=${e})`}a(OA,`formatMcpNotReadyReason`);function kA(e){return{name:e.name,version:e.version,uri:e.websiteUrl,logo_uri:e.icons?.[0]?.src}}a(kA,`deriveOAuthClientConfigFromClientInfo`);function AA(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`)}a(AA,`isOAuthDiscoveryFailure`);function jA(e){if(!e)return;let t=new URL(e),n=t.pathname.replace(/\/proxy\/?$/,``);return`${t.origin}${n}/oauth`}a(jA,`deriveOAuthProxyUrl`);function MA(e){let t=jA(e.gatewayUrl),n=new uA(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,staticClientInfo:e.staticClientInfo,scope:e.scope});return t&&e.installFetchInterceptor&&n.installFetchInterceptor(),{provider:n,oauthProxyUrl:t}}a(MA,`createBrowserOAuthProvider`);function NA(e){let t=null,n=Date.now(),r=e.healthCheckIntervalMs??1e4,i=e.healthCheckTimeoutMs??3e4;return t=setInterval(a(async()=>{if(!e.isMountedRef.current||e.stateRef.current!==`ready`){t&&=(clearInterval(t),null);return}try{let t=e.gatewayUrl||e.url;if(!t)return;let r=e.getAuthHeaders?await e.getAuthHeaders():{},i=await fetch(t,{method:`HEAD`,headers:{...e.allHeaders,...r},signal:AbortSignal.timeout(5e3)});if(i.ok||i.status<500)n=Date.now();else throw Error(`Server returned ${i.status}`)}catch{let r=Date.now()-n;r>i&&(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)))}},`checkConnectionHealth`),r),()=>{t&&=(clearInterval(t),null)}}a(NA,`startConnectionHealthMonitoring`);var PA=3e3,Jfe=5e3;function FA(e){let{url:t,enabled:n=!0,callbackUrl:r=typeof window<`u`?sA(new URL(`/oauth/callback`,window.location.origin).toString()):`/oauth/callback`,storageKeyPrefix:i=`mcp:auth`,clientConfig:o={},authProvider:s,headers:u,customHeaders:d,proxyConfig:f,autoProxyFallback:p=!0,debug:m=!1,logLevel:h,autoRetry:g=!1,autoReconnect:_=PA,reconnectionOptions:v,transportType:y=`auto`,preventAutoAuth:b=!0,useRedirectFlow:x=!1,onPopupWindow:S,timeout:C=3e4,sseReadTimeout:T=3e5,wrapTransport:E,fetch:D,clientOptions:O,onNotification:k,onSampling:A,samplingCallback:j,onElicitation:M,elicitationCallback:N,oauth:P}=e,F=P?.clientId?.trim()||void 0,I=P?.clientSecret?.trim()||void 0,L=P?.scope?.trim()||void 0,ee=(0,w.useMemo)(()=>F?{client_id:F,...I?{client_secret:I}:{}}:void 0,[F,I]),te=(0,w.useMemo)(()=>{let e=`useMcp:${t||`no-url`}`,n=c.get(e);return h?n.level=h:m&&(n.level=`debug`),n},[t,h,m]),ne=u??d??{};d&&!u&&te.warn(`[useMcp] The "customHeaders" option is deprecated. Use "headers" instead.`);let re=A??j;j&&!A&&te.warn(`[useMcp] The "samplingCallback" option is deprecated. Use "onSampling" instead.`);let R=M??N;N&&!M&&l.warn(`[useMcp] The "elicitationCallback" option is deprecated. Use "onElicitation" instead.`);let z=(0,w.useMemo)(()=>({name:`mcp-use`,title:`mcp-use`,version:nO(),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`}),[]),B=(0,w.useMemo)(()=>e.clientInfo?{...z,...e.clientInfo}:z,[e.clientInfo,z]),ie=(0,w.useMemo)(()=>kA(B),[B]),ae=(0,w.useMemo)(()=>o&&Object.keys(o).length>0?(te.warn(`[useMcp] The 'clientConfig' option is deprecated and will be removed in a future version. Use 'clientInfo' instead. The clientConfig will be automatically derived from clientInfo.`),{...ie,...o}):ie,[o,ie]),oe=(0,w.useMemo)(()=>p?typeof p==`boolean`?{enabled:p,proxyAddress:`https://inspector.mcp-use.com/inspector/api/proxy`}:{enabled:p.enabled!==!1,proxyAddress:p.proxyAddress||`https://inspector.mcp-use.com/inspector/api/proxy`}:{enabled:!1,proxyAddress:void 0},[p]),se=(0,w.useMemo)(()=>_===!1?{enabled:!1,initialDelay:0,healthCheckInterval:!1,healthCheckTimeout:3e4}:_===!0?{enabled:!0,initialDelay:PA,healthCheckInterval:1e4,healthCheckTimeout:3e4}:typeof _==`number`?{enabled:!0,initialDelay:_,healthCheckInterval:1e4,healthCheckTimeout:3e4}:{enabled:_.enabled!==!1,initialDelay:_.initialDelay??PA,healthCheckInterval:_.healthCheckInterval??1e4,healthCheckTimeout:_.healthCheckTimeout??3e4},[_]),ce=(0,w.useRef)(!1),[le,ue]=(0,w.useState)(f);(0,w.useEffect)(()=>{ue(f)},[f]);let{gatewayUrl:de,proxyHeaders:fe}=(0,w.useMemo)(()=>{let e=EA(t||``,f);return{gatewayUrl:f?.proxyAddress,proxyHeaders:e.headers}},[t,f]),pe=(0,w.useMemo)(()=>t||``,[t]),me=(0,w.useMemo)(()=>({...fe,...ne}),[fe,ne]),[he,ge]=(0,w.useState)(`discovering`),[_e,ve]=(0,w.useState)([]),[ye,be]=(0,w.useState)([]),[xe,Se]=(0,w.useState)([]),[Ce,we]=(0,w.useState)([]),[Te,Ee]=(0,w.useState)(e._initialServerInfo?.name?e._initialServerInfo:void 0),[De,Oe]=(0,w.useState)(),[ke,Ae]=(0,w.useState)(void 0),[je,Me]=(0,w.useState)([]),[Ne,Pe]=(0,w.useState)(void 0),[Fe,Ie]=(0,w.useState)(void 0),Le=(0,w.useRef)(null),Re=(0,w.useRef)(s??null),ze=(0,w.useRef)(null),Be=(0,w.useRef)(!1),Ve=(0,w.useRef)(!0),He=(0,w.useRef)(0),Ue=(0,w.useRef)(0),We=(0,w.useRef)(null),Ge=(0,w.useRef)(!1),Ke=(0,w.useRef)(!1),qe=(0,w.useRef)(he),Je=(0,w.useRef)(_),Ye=(0,w.useRef)(null),Xe=(0,w.useRef)(null),Ze=(0,w.useRef)(null);(0,w.useEffect)(()=>{qe.current=he,Je.current=_},[he,_]),(0,w.useEffect)(()=>{Re.current=s??null},[s]);let V=(0,w.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`:te.error(i);break;case`warn`:te.warn(i);break;case`info`:te.info(i);break;case`debug`:te.debug(i);break;default:te.info(i)}Ve.current&&Me(t=>[...t.slice(-100),{level:e,message:r,timestamp:Date.now()}])},[te]),Qe=(0,w.useCallback)(async(e=!1)=>{e||V(`info`,`Disconnecting...`),Be.current=!1,We.current&&clearTimeout(We.current),We.current=null;let t=Ue.current,n=Le.current;if(n)try{let e=DA,t=n.getSession(e);t&&t._healthCheckCleanup&&(t._healthCheckCleanup(),t._healthCheckCleanup=null),t&&await n.closeSession(e)}catch(t){e||V(`warn`,`Error closing session:`,t)}let r=Ue.current!==t;Le.current===n&&!r&&(Le.current=null),Ve.current&&!e&&!r&&(ge(`discovering`),ve([]),be([]),Se([]),we([]),Ae(void 0),Pe(void 0))},[V]),$e=(0,w.useCallback)((e,n)=>{V(`error`,e,n??``);let r=n&&`code`in n?n.code:void 0,i=oe.enabled&&!le?.proxyAddress,a=e.includes(`CORS`)||e.includes(`blocked by CORS policy`)||e.includes(`Failed to fetch`),o=r===400;if(i&&(a||o||typeof r==`number`&&r>=404&&r<500)&&!(r===401||r===403))return V(`info`,`Direct connection failed with ${a?`CORS error`:o?`HTTP 400 (Bad Request)`:`HTTP 4xx error`}. Trying with proxy...`),Le.current=null,s||(Re.current=null),V(`debug`,`Cleared client and auth provider for proxy fallback`),ue({proxyAddress:oe.proxyAddress}),Ve.current&&ge(`discovering`),setTimeout(()=>{Ve.current&&Xe.current?.()},1e3),!0;if(Ve.current){V(`info`,`Setting state to FAILED:`,e),ge(`failed`),Ae(e);let t=Re.current?.getLastAttemptedAuthUrl?.();t&&(Pe(t),V(`info`,`Manual authentication URL may be available.`,t))}return Be.current=!1,t&&gO.getInstance().trackUseMcpConnection({url:t,transportType:y,success:!1,errorType:n?.name||`UnknownError`,hasOAuth:!!Re.current,hasSampling:!!re,hasElicitation:!!R}).catch(()=>{}),!1},[V,t,y,re,R,oe,le,s]),et=(0,w.useCallback)(async()=>{if(!n||!t){V(`debug`,n?`No server URL provided, skipping connection.`:`Connection disabled via enabled flag.`);return}if(Be.current){V(`debug`,`Connection attempt already in progress.`);return}if(!Ve.current){V(`debug`,`Connect called after unmount, aborting.`);return}if(Be.current=!0,Ue.current+=1,He.current+=1,Ae(void 0),Pe(void 0),Ye.current=null,ge(`discovering`),V(`info`,`Connecting attempt #${He.current} to ${t}...`),!Re.current){let{provider:e,oauthProxyUrl:t}=MA({effectiveOAuthUrl:pe,storageKeyPrefix:i,oauthClientConfig:ae,callbackUrl:r,preventAutoAuth:b,useRedirectFlow:x,gatewayUrl:de,onPopupWindow:S,installFetchInterceptor:!0,staticClientInfo:ee,scope:L});Re.current=e,t&&V(`debug`,`OAuth proxy URL derived from gateway: ${t}`),V(`debug`,`BrowserOAuthClientProvider initialized with URL: ${pe}, proxy: ${t?`enabled`:`disabled`}, gateway: ${de?`enabled`:`disabled`}`)}Le.current?V(`debug`,`BrowserMCPClient already exists, reusing.`):(Le.current=new Ufe,V(`debug`,`BrowserMCPClient initialized in connect.`));let e=a(async n=>{if(!Ve.current)return V(`debug`,`Connection attempt aborted - component unmounted`),`failed`;V(`info`,`Attempting connection with transport: ${n}`),V(`debug`,`Client ref status at start of tryConnectWithTransport: ${Le.current?`initialized`:`NULL`}`);try{let e=DA,r={url:t,transport:n===`sse`?`http`:n,timeout:C,sseReadTimeout:T,disableSseFallback:y===`http`,preferSse:n===`sse`,clientInfo:B,...D&&{fetch:D},...O&&{clientOptions:O},...v?{reconnectionOptions:v}:_===!1?{reconnectionOptions:{maxRetries:0}}:{}};if(de&&(r.gatewayUrl=de,V(`debug`,`Using proxy gateway: ${de} for target: ${t}`)),me&&Object.keys(me).length>0&&(r.headers=me),!Le.current){if(!Ve.current)return V(`debug`,`Connection aborted - component unmounted, client cleaned up`),`failed`;let e=Error(`Client not initialized - this is a bug in the connection flow`);throw V(`error`,`Client ref is null in tryConnectWithTransport but component is still mounted`),e}Le.current.addServer(e,{...r,authProvider:Re.current,onSampling:re,onElicitation:R,wrapTransport:E?n=>(V(`debug`,`Applying transport wrapper for server:`,e,`url:`,t),E(n,t)):void 0});let i=await Le.current.createSession(e,!1);if(!Ve.current)return V(`debug`,`Connection aborted after session creation - component unmounted`),`failed`;if(i.on(`notification`,e=>{V(`debug`,`Notification received:`,e.method,e),k?.(e),e.method===`notifications/tools/list_changed`?(V(`info`,`Tools list changed, auto-refreshing...`),ct().catch(e=>{V(`warn`,`Auto-refresh tools failed:`,e)})):e.method===`notifications/resources/list_changed`?(V(`info`,`Resources list changed, auto-refreshing...`),lt().catch(e=>V(`warn`,`Auto-refresh resources failed:`,e))):e.method===`notifications/prompts/list_changed`&&(V(`info`,`Prompts list changed, auto-refreshing...`),ut().catch(e=>V(`warn`,`Auto-refresh prompts failed:`,e)))}),await i.initialize(),!Ve.current)return V(`debug`,`Connection completed but component unmounted, aborting`),`failed`;if(V(`info`,`✅ Successfully connected to MCP server`),V(`info`,`Server info:`,i.connector.serverInfo),V(`info`,`Server capabilities:`,i.connector.serverCapabilities),!Ve.current)return V(`debug`,`Skipping state update - component unmounted`),`failed`;ge(`ready`),Ye.current=n,se.enabled&&se.healthCheckInterval!==!1&&(i._healthCheckCleanup=NA({gatewayUrl:de,url:t,allHeaders:me,getAuthHeaders:a(async()=>{try{let e=await Re.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{}},`getAuthHeaders`),isMountedRef:Ve,stateRef:qe,autoReconnectRef:Je,setState:ge,addLog:V,connect:et,defaultReconnectDelay:se.initialDelay,healthCheckIntervalMs:se.healthCheckInterval,healthCheckTimeoutMs:se.healthCheckTimeout})),gO.getInstance().trackUseMcpConnection({url:t,transportType:n,success:!0,hasOAuth:!!Re.current,hasSampling:!!re,hasElicitation:!!R}).catch(()=>{}),ve(i.connector.tools||[]);let o=await i.connector.listAllResources();if(!Ve.current)return V(`debug`,`Connection aborted after listing resources - component unmounted`),`failed`;be(o.resources||[]);let s=await i.connector.listPrompts();if(!Ve.current)return V(`debug`,`Connection aborted after listing prompts - component unmounted`),`failed`;if(we(s.prompts||[]),i.connector.serverCapabilities?.resourceTemplates){let e=await i.connector.listResourceTemplates();if(!Ve.current)return V(`debug`,`Connection aborted after listing resource templates - component unmounted`),`failed`;Se(e.resourceTemplates||[])}else Se([]);let c=i.connector.serverInfo,l=i.connector.serverCapabilities;if(c){if(V(`debug`,`Server info:`,c),!Ve.current)return V(`debug`,`Skipping state update - component unmounted`),`failed`;Ee(c),ze.current=(async()=>{try{let e=c.icons;if(e&&Array.isArray(e)&&e.length>0){let t=e[0].src||e[0].url;if(t){V(`info`,`Server provided icon:`,t);let e=await(await fetch(t)).blob(),n=await new Promise((t,n)=>{let r=new FileReader;r.onloadend=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)});return Ve.current&&(Ee(e=>e?{...e,icon:n}:void 0),V(`debug`,`Server icon converted to base64`)),n}}if(t){let e=await TA(t);if(!Ve.current)return V(`debug`,`Connection aborted after favicon detection - component unmounted`),null;if(e)return Ee(t=>t?{...t,icon:e}:void 0),V(`debug`,`Favicon detected and added to serverInfo`),e}return null}catch(e){return V(`debug`,`Icon loading failed (non-critical):`,e),null}})()}if(l){if(V(`debug`,`Server capabilities:`,l),!Ve.current)return V(`debug`,`Skipping state update - component unmounted`),`failed`;Oe(l)}if(Re.current){let e=await Re.current.tokens?.();if(!Ve.current)return V(`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;try{n=await Re.current.getTokenEndpoint?.()??null}catch{n=null}try{r=await Re.current.getClientCredentials?.()??null}catch{r=null}if(!Ve.current)return V(`debug`,`Skipping state update - component unmounted`),`failed`;Ie({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?.client_id?{client_id:r.client_id}:{},...r?.client_secret?{client_secret:r.client_secret}:{}})}}return`success`}catch(r){let i=r,a=i?.message||String(r),o=AA(r),s=i.code===401||a.includes(`401`)||a.includes(`Unauthorized`);if(o&&ne&&Object.keys(ne).length>0)return $e(`Authentication failed (HTTP 401). Server does not support OAuth. Check your Authorization header value is correct.`),`failed`;if(o&&(!ne||Object.keys(ne).length===0))return $e(`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(s){if(o)return $e(`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(Re.current)if(V(`info`,`Authentication required. OAuth provider available.`),b){if(V(`info`,`Waiting for user to initiate authentication flow...`),Ve.current){ge(`pending_auth`);let e=Re.current?.getLastAttemptedAuthUrl?.();e&&(Pe(e),V(`info`,`Retrieved stored auth URL for manual authentication`))}return Be.current=!1,`auth_redirect`}else{V(`info`,`Triggering automatic OAuth authentication flow...`);try{let{resourceMetadataUrl:r,scope:i}=await bA(t);if(await hk(Re.current,{serverUrl:t,...r&&{resourceMetadataUrl:r},...i&&{scope:i}})===`REDIRECT`){let e=await Re.current.getAuthorizationCode?.();if(!e)throw Error(`Authorization code not captured by headless provider`);await hk(Re.current,{serverUrl:t,...r&&{resourceMetadataUrl:r},...i&&{scope:i},authorizationCode:e})}return V(`info`,`OAuth flow completed, reconnecting...`),await e(n)}catch(e){return $e(`Automatic OAuth authentication failed: ${e instanceof Error?e.message:String(e)}`,e instanceof Error?e:Error(String(e))),`failed`}}return ne&&Object.keys(ne).length>0?($e(`Authentication failed: Server returned 401 Unauthorized. Check your Authorization header value is correct.`),`failed`):($e(`Authentication required: Server returned 401 Unauthorized. Add an Authorization header in the Custom Headers section (e.g., Authorization: Bearer YOUR_API_KEY).`),`failed`)}return $e(a,i instanceof Error?i:Error(String(i)))?`auth_redirect`:`failed`}},`tryConnectWithTransport`),o=`failed`;if(y===`sse`)V(`debug`,`Using SSE-only transport mode`),o=await e(`sse`);else if(y===`http`)V(`debug`,`Using HTTP-only transport mode`),o=await e(`http`);else{V(`debug`,`Using auto transport mode (HTTP with SSE fallback)`);let t=await e(`http`);t===`fallback`&&Ve.current&&qe.current!==`authenticating`?(V(`info`,`HTTP failed, attempting SSE fallback...`),o=await e(`sse`)):o=t}(o===`success`||o===`failed`||o===`auth_redirect`)&&(Be.current=!1),V(`debug`,`Connection sequence finished with status: ${o}`)},[V,$e,Qe,t,i,r,ae.name,ae.version,ae.uri,ae.logo_uri,ee,L,ne,y,b,x,S,n,C,T,B,de,me,pe]);(0,w.useEffect)(()=>{Xe.current=et,Ze.current=$e},[et,$e]);let tt=(0,w.useCallback)(async(e,t,n)=>{if(qe.current!==`ready`||!Le.current)throw Error(`MCP client is not ready (${OA(qe.current,!!Le.current)}). Cannot call tool "${e}".`);V(`info`,`Calling tool: ${e}`,t);let r=Date.now();try{let i=DA,a=Le.current.getSession(i);if(!a)throw Error(`No active session found`);let o=await a.connector.callTool(e,t||{},n);return V(`info`,`Tool "${e}" call successful:`,o),gO.getInstance().trackUseMcpToolCall({toolName:e,success:!0,executionTimeMs:Date.now()-r}).catch(()=>{}),o}catch(t){throw V(`error`,`Tool "${e}" call failed:`,t),gO.getInstance().trackUseMcpToolCall({toolName:e,success:!1,errorType:t instanceof Error?t.name:`UnknownError`,executionTimeMs:Date.now()-r}).catch(()=>{}),t}},[he]),nt=(0,w.useCallback)(()=>{qe.current===`failed`?(V(`info`,`Retry requested...`),Xe.current?.()):V(`warn`,`Retry called but state is not 'failed' (state: ${qe.current}). Ignoring.`)},[V]),rt=(0,w.useCallback)(async()=>{V(`info`,`Manual authentication requested...`);let e=qe.current;if(e===`failed`)V(`info`,`Attempting to reconnect and authenticate via retry...`),nt();else if(e===`pending_auth`){V(`info`,`Proceeding with authentication from pending state...`);try{if(xA(Re.current,`Auth Provider not available for manual auth`),xA(t,`Server URL is required for authentication`),s){V(`info`,`Using provided authProvider for manual authentication`);let e=new URL(t),n=e.origin+e.pathname.replace(/\/+$/,``);await hk(Re.current,{serverUrl:n}),Xe.current?.();return}V(`info`,`Cleared ${Re.current.clearStorage?.()??0} OAuth storage item(s) for fresh authentication`),ge(`authenticating`);let e=null,n=null,{provider:o,oauthProxyUrl:c}=MA({effectiveOAuthUrl:pe,storageKeyPrefix:i,oauthClientConfig:ae,callbackUrl:r,preventAutoAuth:!1,useRedirectFlow:x,gatewayUrl:de,onPopupWindow:a((t,r,i)=>{e=i;try{n=new URL(t).searchParams.get(`state`)}catch{}S?.(t,r,i)},`captureOnPopupWindow`),installFetchInterceptor:!de,staticClientInfo:ee,scope:L});c&&!de?V(`info`,`Installed OAuth fetch interceptor for manual auth`):c&&de&&V(`info`,`Using MCP gateway proxy for OAuth (no fetch interceptor needed)`),Re.current=o,V(`info`,`Triggering fresh OAuth authorization...`);let l=new URL(t),u=l.origin+l.pathname.replace(/\/+$/,``);try{await hk(o,{serverUrl:u}),V(`info`,`OAuth flow completed (tokens obtained)`)}catch(e){V(`info`,`OAuth flow initiated (popup/redirect):`,e instanceof Error?e.message:`Redirecting...`)}let d=o.getLastAttemptedAuthUrl?.();if(d&&(Pe(d),V(`info`,`Updated auth URL for fallback:`,d),!n))try{n=new URL(d).searchParams.get(`state`)}catch{}if(x)return;let f=o.getKey?.(`tokens`);if(!f){V(`warn`,`Could not derive tokens storage key; relying on callback listener.`);return}Ke.current=!0;let p;try{p=await pA({popup:e,state:n,tokensKey:f})}finally{Ke.current=!1}if(!Ve.current)return;switch(p.kind){case`success`:V(`info`,`Authentication succeeded; reconnecting to MCP server...`),Be.current=!1,Xe.current?.();break;case`cancelled`:V(`warn`,`Authentication popup was closed before completing. Returning to pending_auth.`),ge(`pending_auth`);break;case`timeout`:V(`warn`,`Authentication timed out waiting for the popup. Returning to pending_auth.`),ge(`pending_auth`);break;case`error`:$e(`Authentication failed: ${p.error}`);break;default:break}}catch(e){if(!Ve.current)return;ge(`pending_auth`),V(`error`,`Manual authentication failed: ${e instanceof Error?e.message:String(e)}`)}}else if(e===`authenticating`){V(`warn`,`Already attempting authentication. Check for blocked popups or wait for timeout.`);let e=Re.current?.getLastAttemptedAuthUrl?.();e&&!Ne&&(Pe(e),V(`info`,`Manual authentication URL retrieved:`,e))}else V(`info`,`Client not in a state requiring manual authentication trigger (state: ${e}). If needed, try disconnecting and reconnecting.`)},[V,nt,$e,Ne,t,x,S,i,ae.name,ae.uri,ae.logo_uri,ee,L,r,B,s]),it=(0,w.useCallback)(()=>{Re.current?.clearStorage?(V(`info`,`Cleared ${Re.current.clearStorage()} item(s) from localStorage for ${t}.`),Pe(void 0),Qe()):V(`warn`,`Auth provider not initialized, cannot clear storage.`)},[t,V,Qe]),at=(0,w.useCallback)(async()=>{if(qe.current!==`ready`||!Le.current)throw Error(`MCP client is not ready (${OA(qe.current,!!Le.current)}). Cannot list resources.`);V(`info`,`Listing resources`);try{let e=DA,t=Le.current.getSession(e);if(!t)throw Error(`No active session found`);be((await t.connector.listAllResources()).resources||[]),V(`info`,`Resources listed successfully`)}catch(e){throw V(`error`,`List resources failed:`,e),e}},[he]),ot=(0,w.useCallback)(async e=>{if(qe.current!==`ready`||!Le.current)throw Error(`MCP client is not ready (${OA(qe.current,!!Le.current)}). Cannot read resource.`);V(`info`,`Reading resource: ${e}`);try{let t=DA,n=Le.current.getSession(t);if(!n)throw Error(`No active session found`);let r=await n.connector.readResource(e);return V(`info`,`Resource read successful:`,r),gO.getInstance().trackUseMcpResourceRead({resourceUri:e,success:!0}).catch(()=>{}),r}catch(t){throw V(`error`,`Resource read failed:`,t),gO.getInstance().trackUseMcpResourceRead({resourceUri:e,success:!1,errorType:t instanceof Error?t.name:`UnknownError`}).catch(()=>{}),t}},[he]),st=(0,w.useCallback)(async()=>{if(qe.current!==`ready`||!Le.current)throw Error(`MCP client is not ready (${OA(qe.current,!!Le.current)}). Cannot list prompts.`);V(`info`,`Listing prompts`);try{let e=DA,t=Le.current.getSession(e);if(!t)throw Error(`No active session found`);we((await t.connector.listPrompts()).prompts||[]),V(`info`,`Prompts listed successfully`)}catch(e){throw V(`error`,`List prompts failed:`,e),e}},[he]),ct=(0,w.useCallback)(async()=>{if(qe.current!==`ready`||!Le.current){V(`debug`,`Cannot refresh tools - client not ready. State:`,qe.current);return}V(`debug`,`Refreshing tools list`);try{let e=DA,t=Le.current.getSession(e);if(!t){V(`warn`,`No active session found for tools refresh`);return}V(`debug`,`Calling listTools...`);let n=await t.connector.listTools();V(`debug`,`listTools returned:`,n?.length,`tools`),ve(n||[]),V(`info`,`Tools list refreshed successfully`)}catch(e){V(`error`,`Failed to refresh tools:`,e)}},[V]),lt=(0,w.useCallback)(async()=>{if(qe.current!==`ready`||!Le.current){V(`debug`,`Cannot refresh resources - client not ready`);return}V(`debug`,`Refreshing resources list`);try{let e=DA,t=Le.current.getSession(e);if(!t){V(`warn`,`No active session found for resources refresh`);return}be((await t.connector.listAllResources()).resources||[]),V(`info`,`Resources list refreshed successfully`)}catch(e){V(`warn`,`Failed to refresh resources:`,e)}},[V]),ut=(0,w.useCallback)(async()=>{if(qe.current!==`ready`||!Le.current){V(`debug`,`Cannot refresh prompts - client not ready`);return}V(`debug`,`Refreshing prompts list`);try{let e=DA,t=Le.current.getSession(e);if(!t){V(`warn`,`No active session found for prompts refresh`);return}we((await t.connector.listPrompts()).prompts||[]),V(`info`,`Prompts list refreshed successfully`)}catch(e){V(`warn`,`Failed to refresh prompts:`,e)}},[V]),dt=(0,w.useCallback)(async()=>{if(qe.current!==`ready`||!Le.current){V(`debug`,`Cannot refresh resource templates - client not ready`);return}V(`debug`,`Refreshing resource templates list`);try{let e=DA,t=Le.current.getSession(e);if(!t)throw Error(`No active session found`);let n=await t.connector.listResourceTemplates();Ve.current&&(Se(n.resourceTemplates||[]),V(`info`,`Resource templates refreshed: ${n.resourceTemplates?.length||0} templates`))}catch(e){throw V(`error`,`Failed to refresh resource templates:`,e),e}},[V]),ft=(0,w.useCallback)(async()=>{V(`info`,`Refreshing all lists (tools, resources, resource templates, prompts)`),await Promise.all([ct(),lt(),dt(),ut()])},[ct,lt,dt,ut,V]),pt=(0,w.useCallback)(async(e,t)=>{if(qe.current!==`ready`||!Le.current)throw Error(`MCP client is not ready (${OA(qe.current,!!Le.current)}). Cannot get prompt.`);V(`info`,`Getting prompt: ${e}`,t);try{let n=DA,r=Le.current.getSession(n);if(!r)throw Error(`No active session found`);let i=await r.connector.getPrompt(e,t||{});return V(`info`,`Prompt "${e}" retrieved successfully:`,i),i}catch(t){throw V(`error`,`Prompt "${e}" retrieval failed:`,t),t}},[he,V]),mt=(0,w.useCallback)(async e=>{if(qe.current!==`ready`||!Le.current)throw Error(`MCP client is not ready (${OA(qe.current,!!Le.current)}). Cannot request completion.`);V(`info`,`Requesting completions for ${e.ref.type===`ref/prompt`?`prompt`:`resource template`} "${e.ref.type===`ref/prompt`?e.ref.name:e.ref.uri}"`);try{let t=DA,n=Le.current.getSession(t);if(!n)throw Error(`No active session found`);let r=await n.complete(e);return V(`info`,`Received ${r.completion.values.length} completion suggestions`),r}catch(e){throw V(`error`,`Completion request failed:`,e),e}},[he,V]);(0,w.useEffect)(()=>{let e=a((e,t)=>{if(Ke.current){V(`debug`,`Ignoring auth callback via ${t}; manual popup flow owns this result.`);return}let n=Re.current?.serverUrlHash;if(e?.serverUrlHash&&n&&e.serverUrlHash!==n){V(`debug`,`Ignoring auth callback via ${t} for a different server.`);return}if(V(`info`,`Received auth callback via ${t}.`,e),We.current&&clearTimeout(We.current),We.current=null,e?.success)V(`info`,`Authentication successful via popup. Reconnecting client...`),Be.current&&V(`debug`,`Connection attempt already in progress, resetting flag to allow reconnection.`),Be.current=!1,setTimeout(()=>{Ve.current&&(V(`debug`,`Initiating reconnection after successful auth callback.`),Xe.current?.())},100);else{if(qe.current!==`authenticating`&&qe.current!==`pending_auth`){V(`debug`,`Ignoring stale auth failure callback (state=${qe.current}).`);return}Ze.current?.(`Authentication failed in callback: ${e?.error||`Unknown reason.`}`)}},`handleCallbackPayload`),t=a(t=>{t.origin===window.location.origin&&t.data?.type===`mcp_auth_callback`&&e(t.data,`postMessage`)},`messageHandler`);window.addEventListener(`message`,t),V(`debug`,`Auth callback message listener added.`);let n=null,r=a(t=>{t.data?.type===`mcp_auth_callback`&&e(t.data,`BroadcastChannel`)},`broadcastHandler`);if(typeof BroadcastChannel<`u`)try{n=new BroadcastChannel(dA),n.addEventListener(`message`,r),V(`debug`,`Auth callback BroadcastChannel listener added.`)}catch(e){V(`warn`,`Failed to open auth callback BroadcastChannel; lost-opener popups will not reach this client.`,e),n=null}return()=>{if(window.removeEventListener(`message`,t),V(`debug`,`Auth callback message listener removed.`),n){try{n.removeEventListener(`message`,r),n.close()}catch{}V(`debug`,`Auth callback BroadcastChannel listener removed.`)}We.current&&clearTimeout(We.current)}},[V]),(0,w.useEffect)(()=>{ce.current=!1,ue(f)},[t,f]),(0,w.useEffect)(()=>{if(Ve.current=!0,!n||!t)return V(`debug`,n?`No server URL provided, skipping connection.`:`Connection disabled via enabled flag.`),ge(`discovering`),()=>{Ve.current=!1};if(V(`debug`,`useMcp mounted, initiating connection.`),He.current=0,s)Re.current=s,V(`debug`,`Using externally provided authProvider`);else if(!Re.current||Re.current.serverUrl!==pe){let{provider:e,oauthProxyUrl:t}=MA({effectiveOAuthUrl:pe,storageKeyPrefix:i,oauthClientConfig:ae,callbackUrl:r,preventAutoAuth:b,useRedirectFlow:x,gatewayUrl:de,onPopupWindow:S,installFetchInterceptor:!0,staticClientInfo:ee,scope:L});Re.current=e,t&&V(`debug`,`OAuth proxy URL derived from gateway: ${t}`),V(`debug`,`BrowserOAuthClientProvider initialized/updated with URL: ${pe}, proxy: ${t?`enabled`:`disabled`}, gateway: ${de?`enabled`:`disabled`}`)}return et(),()=>{Ve.current=!1,V(`debug`,`useMcp unmounting, disconnecting.`),Re.current?.restoreFetch?.(),Qe(!0)}},[t,n,i,r,ae.name,ae.version,ae.uri,ae.logo_uri,ee,L,x,B,pe,f,s]);let ht=(0,w.useRef)(nt),gt=(0,w.useRef)(V);(0,w.useEffect)(()=>{ht.current=nt,gt.current=V},[nt,V]),(0,w.useEffect)(()=>{let e=null;if(he===`failed`&&g&&He.current>0){if(!Ge.current){Ge.current=!0;let t=typeof g==`number`?g:Jfe;gt.current(`info`,`Connection failed, auto-retrying in ${t}ms...`),e=setTimeout(()=>{Ge.current=!1,Ve.current&&qe.current===`failed`&&ht.current()},t)}}else he!==`failed`&&(Ge.current=!1);return()=>{e&&(clearTimeout(e),Ge.current=!1)}},[he,g]);let _t=(0,w.useCallback)(async()=>qe.current===`ready`?Te?.icon?Te.icon:ze.current?(V(`debug`,`Waiting for icon to finish loading...`),await ze.current):(V(`debug`,`No icon available and no loading in progress`),null):(V(`warn`,`Cannot ensure icon loaded - not connected`),null),[Te,V]);return{state:he,name:Te?.name||t||``,tools:_e,resources:ye,resourceTemplates:xe,prompts:Ce,serverInfo:Te,capabilities:De,error:ke,log:je,authUrl:Ne,authTokens:Fe,client:Le.current,callTool:tt,readResource:ot,listResources:at,listPrompts:st,getPrompt:pt,complete:mt,refreshTools:ct,refreshResources:lt,refreshResourceTemplates:dt,refreshPrompts:ut,refreshAll:ft,retry:nt,disconnect:Qe,authenticate:rt,clearStorage:it,ensureIconLoaded:_t}}a(FA,`useMcp`);var IA=`__model_context`,LA=new Map;function RA(e){LA.set(e.id,e),VA()}a(RA,`setNode`);function zA(e){LA.delete(e),VA()}a(zA,`removeNode`);var BA=!1;function VA(){BA||(BA=!0,queueMicrotask(HA))}a(VA,`scheduleFlush`);function HA(){BA=!1,KA(UA())}a(HA,`flush`);function UA(){let e=new Map;for(let t of LA.values()){let n=t.parentId??null;e.has(n)||e.set(n,[]),e.get(n).push(t)}for(let t of e.values())t.sort((e,t)=>e.id.localeCompare(t.id));let t=[];function n(r,i){let a=e.get(r);if(a)for(let e of a)e.content.trim()&&t.push(`${` `.repeat(i)}- ${e.content.trim()}`),n(e.id,i+1)}return a(n,`traverseTree`),n(null,0),t.join(`
|
|
450
450
|
`)}a(UA,`buildDescriptionString`);var WA=null;function GA(e){return WA=e,e(UA()),()=>{WA===e&&(WA=null)}}a(GA,`registerModelContextFlush`);function KA(e){WA?.(e)}a(KA,`notifyHost`);var qA=(0,w.createContext)(null);function Yfe({content:e,children:t}){let n=(0,w.useContext)(qA),r=(0,w.useId)();return(0,w.useEffect)(()=>(e.trim()&&RA({id:r,parentId:n,content:e}),()=>{zA(r)}),[r,n,e]),t==null?null:w.createElement(qA.Provider,{value:r},t)}a(Yfe,`ModelContext`);var Xfe=c.get(`ErrorBoundary`),Zfe=class extends w.Component{static{a(this,`ErrorBoundary`)}constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,t){Xfe.error(`Widget Error:`,e,t),this.props.onError?.(e,t)}render(){return this.state.hasError&&this.state.error?this.props.fallback===void 0?w.createElement(`div`,{className:`p-4 border border-red-500 bg-red-50 text-red-900 rounded-md dark:bg-red-900/20 dark:text-red-100`},w.createElement(`h3`,{className:`font-bold mb-2`},`Widget Error`),w.createElement(`pre`,{className:`text-sm whitespace-pre-wrap`},this.state.error.message)):typeof this.props.fallback==`function`?this.props.fallback(this.state.error):this.props.fallback:this.props.children}};function JA(e,t){return{jsonrpc:`2.0`,method:e,...t&&{params:t}}}a(JA,`createNotification`);function YA(e,t,n){return{jsonrpc:`2.0`,id:e,method:t,...n&&{params:n}}}a(YA,`createRequest`);var Qfe={POLL_INTERVAL:100,MAX_TIMEOUT:5e3,MAX_HEIGHT:600,LOCALE:`en`},XA={REQUEST_TIMEOUT:3e4,APP_NAME:`mcp-use-widget`,APP_VERSION:`1.0.0`,PROTOCOL_VERSION:`2025-06-18`},$fe=class{static{a(this,`McpAppsBridge`)}connected=!1;connectPromise=null;requestId=1;pendingRequests=new Map;listeners=new Set;toolInput=null;partialToolInput=null;toolOutput=null;toolResponseMetadata=null;hostContext=null;hostInfo=null;hostCapabilities=null;initialized=!1;toolInputHandlers=new Set;toolInputPartialHandlers=new Set;toolResultHandlers=new Set;hostContextHandlers=new Set;constructor(){if(typeof window>`u`)return;let e=a(e=>{let t=e.data;if(!(!t||t.jsonrpc!==`2.0`)){if(`result`in t||`error`in t){let e=t;if(e.id!==null&&e.id!==void 0){let t=this.pendingRequests.get(e.id);t&&(this.pendingRequests.delete(e.id),`error`in e&&e.error?t.reject(Error(e.error.message)):t.resolve(e.result))}return}`method`in t&&!(`id`in t)&&this.handleNotification(t)}},`handleMessage`);window.addEventListener(`message`,e),this.listeners.add(e),this.interceptConsole()}interceptConsole(){if(typeof window>`u`||typeof console>`u`)return;let e={log:console.log.bind(console),warn:console.warn.bind(console),error:console.error.bind(console),info:console.info.bind(console),debug:console.debug.bind(console)},t={log:`info`,warn:`warning`,error:`error`,info:`info`,debug:`debug`},n=a((e,t=new WeakSet)=>{if(typeof e!=`object`||!e)return e;if(t.has(e))return`[Circular]`;if(e instanceof Response)return{__type:`Response`,status:e.status,statusText:e.statusText,ok:e.ok,url:e.url,headers:Object.fromEntries(e.headers.entries())};if(e instanceof Request)return{__type:`Request`,method:e.method,url:e.url,headers:Object.fromEntries(e.headers.entries())};if(e instanceof Error)return{__type:`Error`,name:e.name,message:e.message,stack:e.stack};if(e instanceof Event)return{__type:`Event`,type:e.type,target:e.target?.constructor?.name};if(typeof HTMLElement<`u`&&e instanceof HTMLElement)return{__type:`HTMLElement`,tagName:e.tagName,id:e.id,className:e.className};if(typeof e==`function`)return`[Function: ${e.name||`anonymous`}]`;if(Array.isArray(e))return t.add(e),e.map(e=>n(e,t));try{t.add(e);let r={};for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i))try{r[i]=n(e[i],t)}catch{r[i]=`[Unserializable]`}return r}catch{return`[Object]`}},`serializeForPostMessage`),r=a((r,i)=>{try{let e=i.map(e=>n(e));this.sendNotification(`notifications/message`,{level:t[r]||`info`,logger:`console`,data:e.length===1?e[0]:e})}catch(t){e.warn(`[MCP Apps Bridge] Failed to forward console message:`,t)}},`sendLog`);console.log=(...t)=>{r(`log`,t),e.log(...t)},console.warn=(...t)=>{r(`warn`,t),e.warn(...t)},console.error=(...t)=>{r(`error`,t),e.error(...t)},console.info=(...t)=>{r(`info`,t),e.info(...t)},console.debug=(...t)=>{r(`debug`,t),e.debug(...t)}}handleNotification(e){switch(console.log(`[MCP Apps Bridge] Received notification:`,e.method,e.params),e.method){case`ui/notifications/tool-input`:{let t=e.params;console.log(`[MCP Apps Bridge] Tool input received:`,t.arguments),this.toolInput=t.arguments,this.toolInputHandlers.forEach(e=>e(t.arguments));break}case`ui/notifications/tool-input-partial`:{let t=e.params;console.log(`[MCP Apps Bridge] Partial tool input received:`,t.arguments),this.partialToolInput=t.arguments,this.toolInputPartialHandlers.forEach(e=>e(t.arguments));break}case`ui/notifications/tool-result`:{let t=e.params,n=t.structuredContent||this.parseTextContent(t),r=t._meta||null;this.toolOutput=n,this.toolResponseMetadata=r,this.partialToolInput=null,this.toolResultHandlers.forEach(e=>e(n));break}case`ui/notifications/host-context-changed`:{let t=e.params;console.log(`[MCP Apps Bridge] Host context changed:`,t),this.hostContext={...this.hostContext,...t},console.log(`[MCP Apps Bridge] Merged hostContext:`,this.hostContext),console.log(`[MCP Apps Bridge] Calling handlers:`,this.hostContextHandlers.size),this.hostContextHandlers.forEach(e=>e(this.hostContext));break}case`ui/notifications/initialized`:this.initialized=!0;break;default:break}}parseTextContent(e){if(e.content&&Array.isArray(e.content)){for(let t of e.content)if(t.type===`text`&&t.text)try{let e=JSON.parse(t.text);if(e&&typeof e==`object`&&!Array.isArray(e))return e}catch{}}return{}}sendRequest(e,t){if(typeof window>`u`||!window.parent)return Promise.reject(Error(`Not in iframe context`));let n=this.requestId++,r=YA(n,e,t);return new Promise((t,i)=>{this.pendingRequests.set(n,{resolve:t,reject:i}),window.parent.postMessage(r,`*`),setTimeout(()=>{this.pendingRequests.has(n)&&(this.pendingRequests.delete(n),i(Error(`Request timeout: ${e}`)))},XA.REQUEST_TIMEOUT)})}sendNotification(e,t){if(typeof window>`u`||!window.parent)return;let n=JA(e,t);window.parent.postMessage(n,`*`)}async connect(){if(!this.connected){if(typeof window>`u`||window===window.parent){console.log(`[MCP Apps Bridge] Not in iframe, skipping connection`);return}return this.connectPromise||(this.connectPromise=this.doConnect(),this.connectPromise.catch(()=>{this.connectPromise=null})),this.connectPromise}}async doConnect(){console.log(`[MCP Apps Bridge] Connecting to MCP Apps host...`);try{let e=await this.sendRequest(`ui/initialize`,{appCapabilities:{},appInfo:{name:XA.APP_NAME,version:XA.APP_VERSION},protocolVersion:XA.PROTOCOL_VERSION});console.log(`[MCP Apps Bridge] Initialize result:`,e),e.hostContext&&(this.hostContext=e.hostContext,console.log(`[MCP Apps Bridge] Host context:`,this.hostContext)),e.hostInfo&&(this.hostInfo=e.hostInfo),e.hostCapabilities&&(this.hostCapabilities=e.hostCapabilities),this.sendNotification(`ui/notifications/initialized`,{}),this.connected=!0,console.log(`[MCP Apps Bridge] Successfully connected`)}catch(e){throw console.error(`[MCP Apps Bridge] Failed to connect:`,e),e}}isConnected(){return this.connected}getToolInput(){return this.toolInput}getPartialToolInput(){return this.partialToolInput}getToolOutput(){return this.toolOutput}getToolResponseMetadata(){return this.toolResponseMetadata}getHostContext(){return this.hostContext}getHostInfo(){return this.hostInfo}getHostCapabilities(){return this.hostCapabilities}onToolInput(e){return this.toolInputHandlers.add(e),()=>this.toolInputHandlers.delete(e)}onToolInputPartial(e){return this.toolInputPartialHandlers.add(e),()=>this.toolInputPartialHandlers.delete(e)}onToolResult(e){return this.toolResultHandlers.add(e),()=>this.toolResultHandlers.delete(e)}onHostContextChange(e){return this.hostContextHandlers.add(e),()=>this.hostContextHandlers.delete(e)}async callTool(e,t){return this.sendRequest(`tools/call`,{name:e,arguments:t})}async sendMessage(e){let t=Array.isArray(e)?e:[e];await this.sendRequest(`ui/message`,{role:`user`,content:t})}async openLink(e){await this.sendRequest(`ui/open-link`,{url:e})}async requestDisplayMode(e){return await this.sendRequest(`ui/request-display-mode`,{mode:e})}async updateModelContext(e){await this.sendRequest(`ui/update-model-context`,e)}sendSizeChanged(e){this.sendNotification(`ui/notifications/size-changed`,e)}disconnect(){this.listeners.forEach(e=>{typeof window<`u`&&window.removeEventListener(`message`,e)}),this.listeners.clear(),this.pendingRequests.clear(),this.toolInputHandlers.clear(),this.toolInputPartialHandlers.clear(),this.toolResultHandlers.clear(),this.hostContextHandlers.clear(),this.connected=!1,this.connectPromise=null}},ZA=null;function QA(){return ZA||=new $fe,ZA}a(QA,`getMcpAppsBridge`);function $A(e){if(e&&typeof e==`object`&&`result`in e)return e;let t=e?.content||[],n=e?.structuredContent||{},r=t.filter(e=>e.type===`text`&&e.text).map(e=>e.text).join(`
|
|
451
451
|
`);return{content:t,structuredContent:n,isError:e?.isError??!1,result:r,_meta:e?._meta}}a($A,`normalizeCallToolResponse`);var ej=`openai:set_globals`;function tj(e){return(0,w.useSyncExternalStore)(t=>{let n=typeof window<`u`&&window.openai?window.openai[e]:void 0,r=a(r=>{let i=r.detail.globals[e];i!==void 0&&i!==n&&(n=i,t())},`handleSetGlobal`);return typeof window<`u`&&window.addEventListener(ej,r),()=>{typeof window<`u`&&window.removeEventListener(ej,r)}},()=>typeof window<`u`&&window.openai?window.openai[e]:void 0)}a(tj,`useOpenAiGlobal`);function nj(e){let[t,n]=(0,w.useState)(()=>typeof window<`u`&&!!window.openai),[r,i]=(0,w.useState)(!1),[o,s]=(0,w.useState)(null),[c,l]=(0,w.useState)(null),[u,d]=(0,w.useState)(null),[f,p]=(0,w.useState)(null),[m,h]=(0,w.useState)(null),[g,_]=(0,w.useState)(null),[v,y]=(0,w.useState)(null);(0,w.useEffect)(()=>{if(typeof window<`u`&&window.openai){n(!0);return}let e=setInterval(()=>{typeof window<`u`&&window.openai&&(n(!0),clearInterval(e))},100),t=a(()=>{typeof window<`u`&&window.openai&&(n(!0),clearInterval(e))},`handleSetGlobals`);typeof window<`u`&&window.addEventListener(ej,t);let r=setTimeout(()=>{clearInterval(e),typeof window<`u`&&window.removeEventListener(ej,t)},5e3);return()=>{clearInterval(e),clearTimeout(r),typeof window<`u`&&window.removeEventListener(ej,t)}},[]),(0,w.useEffect)(()=>{if(typeof window>`u`||window.openai||window===window.parent)return;let e=QA();e.connect().then(()=>{i(!0);let t=e.getToolInput(),n=e.getToolOutput(),r=e.getToolResponseMetadata(),a=e.getHostContext(),o=e.getPartialToolInput();t&&s(t),n&&l(n),r&&d(r),o&&p(o),a&&h(a);let c=e.getHostInfo(),u=e.getHostCapabilities();c&&_(c),u&&y(u)}).catch(e=>{console.warn(`[useWidget] Failed to connect to MCP Apps host:`,e)});let t=e.onToolInput(e=>{s(e)}),n=e.onToolInputPartial(e=>{p(e)}),r=e.onToolResult(t=>{l(t),d(e.getToolResponseMetadata()),p(null)}),a=e.onHostContextChange(e=>{console.log(`[useWidget] Host context change received:`,e),h(e)});return()=>{t(),n(),r(),a()}},[]);let b=(0,w.useMemo)(()=>t?`openai`:r?`mcp-apps`:`mcp-ui`,[t,r]),x=typeof window<`u`?window.location.search:``,S=(0,w.useMemo)(()=>{let e=new URLSearchParams(x);return e.has(`mcpUseParams`)?JSON.parse(e.get(`mcpUseParams`)):{toolInput:{},toolOutput:{},toolId:``}},[x]),C=tj(`toolInput`),T=tj(`toolOutput`),E=tj(`toolResponseMetadata`),D=tj(`widgetState`),O=tj(`theme`),k=tj(`displayMode`),A=tj(`safeArea`),j=tj(`maxHeight`),M=tj(`userAgent`),N=tj(`locale`),P=(0,w.useMemo)(()=>b===`openai`?C:b===`mcp-apps`?o:S.toolInput,[b,C,o,S.toolInput]),F=(0,w.useMemo)(()=>{if(b===`openai`){let e=T;return e&&e.structuredContent&&typeof e.structuredContent==`object`?e.structuredContent:T}return b===`mcp-apps`?c:S.toolOutput},[b,T,c,S.toolOutput]),I=(0,w.useMemo)(()=>{let t=P||{},n=e||{},r;if(b===`openai`&&T){let e=T;r=e.structuredContent&&typeof e.structuredContent==`object`?e.structuredContent:e}else b===`mcp-apps`&&c?r=c:b===`mcp-ui`&&S.toolOutput&&(r=S.toolOutput);return{...n,...t,...r||{}}},[b,P,T,c,S.toolOutput,e]),L=(0,w.useMemo)(()=>{if(b===`openai`)return O;if(b===`mcp-apps`&&m)return m.theme},[b,O,m]),ee=(0,w.useMemo)(()=>{if(b===`openai`)return k;if(b===`mcp-apps`&&m)return m.displayMode},[b,k,m]),te=(0,w.useMemo)(()=>{if(b===`openai`)return A;if(b===`mcp-apps`&&m?.safeAreaInsets)return{insets:m.safeAreaInsets}},[b,A,m]),ne=(0,w.useMemo)(()=>{if(b===`openai`)return j;if(b===`mcp-apps`&&m?.containerDimensions)return m.containerDimensions.maxHeight},[b,j,m]),re=(0,w.useMemo)(()=>{if(b!==`openai`&&b===`mcp-apps`&&m?.containerDimensions)return m.containerDimensions.maxWidth},[b,m]),R=(0,w.useMemo)(()=>{if(b===`openai`)return M;if(b===`mcp-apps`&&m)return{device:{type:m.platform===`mobile`?`mobile`:`desktop`},capabilities:{hover:m.deviceCapabilities?.hover??!1,touch:m.deviceCapabilities?.touch??!1}}},[b,M,m]),z=(0,w.useMemo)(()=>{if(b===`openai`)return N;if(b===`mcp-apps`&&m)return m.locale},[b,N,m]),B=(0,w.useMemo)(()=>{if(b===`openai`)return typeof window<`u`?Intl.DateTimeFormat().resolvedOptions().timeZone:void 0;if(b===`mcp-apps`&&m)return m.timeZone},[b,m]),ie=(0,w.useMemo)(()=>typeof window<`u`&&window.__mcpPublicUrl?window.__mcpPublicUrl.replace(/\/mcp-use\/public$/,``):``,[]),[ae,oe]=(0,w.useState)(null);(0,w.useEffect)(()=>{D!==void 0&&oe(D)},[D]);let se=(0,w.useRef)(b);se.current=b;let ce=(0,w.useRef)(ae);ce.current=ae,(0,w.useEffect)(()=>GA(e=>{let t=se.current;if(t===`mcp-apps`){let t=QA();t.isConnected()&&t.updateModelContext({structuredContent:{[IA]:e},content:[{type:`text`,text:e}]}).catch(e=>{console.warn(`[ModelContext] Failed to update model context:`,e)});return}if(t===`openai`&&window.openai?.setWidgetState){let t=window.openai.widgetState??ce.current??{};window.openai.setWidgetState({...t,[IA]:e}).catch(e=>{console.warn(`[ModelContext] Failed to set widget state:`,e)})}}),[]);let le=(0,w.useCallback)(async(e,t)=>{if(b===`mcp-apps`)return $A(await QA().callTool(e,t));if(!window.openai?.callTool)throw Error(`window.openai.callTool is not available`);return $A(await window.openai.callTool(e,t))},[b]),ue=(0,w.useCallback)(async e=>{let t=typeof e==`string`?[{type:`text`,text:e}]:e;if(b===`mcp-apps`){await QA().sendMessage(t);return}if(!window.openai?.sendFollowUpMessage)throw Error(`window.openai.sendFollowUpMessage is not available`);let n=typeof e==`string`?e:t.filter(e=>e.type===`text`&&`text`in e).map(e=>e.text).join(`
|
|
452
452
|
`);return window.openai.sendFollowUpMessage({prompt:n})},[b]),de=(0,w.useCallback)(e=>{if(b===`mcp-apps`){QA().openLink(e).catch(e=>{console.error(`Failed to open link:`,e)});return}if(!window.openai?.openExternal)throw Error(`window.openai.openExternal is not available`);window.openai.openExternal({href:e})},[b]),fe=(0,w.useCallback)(async e=>{if(b===`mcp-apps`)return await QA().requestDisplayMode(e);if(!window.openai?.requestDisplayMode)throw Error(`window.openai.requestDisplayMode is not available`);return window.openai.requestDisplayMode({mode:e})},[b]),pe=(0,w.useCallback)(async e=>{if(b===`mcp-apps`){let t=typeof e==`function`?e(ae):e;oe(t);let n=QA(),r=t;n.updateModelContext({structuredContent:r,content:[{type:`text`,text:JSON.stringify(Object.fromEntries(Object.entries(r).filter(([e])=>e!==IA)))}]}).catch(e=>{console.warn(`[useWidget] Failed to update model context:`,e)});return}if(!window.openai?.setWidgetState)throw Error(`window.openai.setWidgetState is not available`);let t=typeof e==`function`?e(D===void 0?ae:D):e,n=(window.openai.widgetState??{})[IA];return oe(t),window.openai.setWidgetState(n===void 0?t:{...t,[IA]:n})},[b,D,ae]),me=(0,w.useMemo)(()=>b===`openai`?T===null&&E===null:b===`mcp-apps`?c===null:b===`mcp-ui`?typeof window<`u`&&window!==window.parent&&!S.toolId?!0:F==null:!1,[b,T,E,c,F,S.toolId]),he=(0,w.useMemo)(()=>b===`mcp-apps`&&f?f:null,[b,f]),ge=(0,w.useMemo)(()=>b===`mcp-apps`?f!==null:!1,[b,f]);return{props:I,toolInput:P||{},output:F??null,metadata:b===`mcp-apps`?u??null:E??null,state:ae?Object.fromEntries(Object.entries(ae).filter(([e])=>e!==IA)):null,setState:pe,theme:L||`light`,displayMode:ee||`inline`,safeArea:te||{insets:{top:0,bottom:0,left:0,right:0}},maxHeight:ne||600,maxWidth:re,userAgent:R||{device:{type:`desktop`},capabilities:{hover:!0,touch:!1}},locale:z||Qfe.LOCALE,timeZone:B||(typeof window<`u`?Intl.DateTimeFormat().resolvedOptions().timeZone:`UTC`),mcp_url:ie,callTool:le,sendFollowUpMessage:ue,openExternal:de,requestDisplayMode:fe,isAvailable:t||r,isPending:me,partialToolInput:he,isStreaming:ge,hostInfo:g??void 0,hostCapabilities:v??void 0}}a(nj,`useWidget`);function epe(e){let{props:t}=nj(e);return t}a(epe,`useWidgetProps`);function tpe(){let{theme:e}=nj();return e}a(tpe,`useWidgetTheme`);function npe(e){let{state:t,setState:n}=nj();return(0,w.useEffect)(()=>{t===null&&e!==void 0&&window.openai?.setWidgetState&&n(e)},[]),[t,n]}a(npe,`useWidgetState`);var rpe=a(({children:e,colorScheme:t=!1})=>{let{theme:n,isAvailable:r}=nj(),[i,o]=(0,w.useState)(()=>typeof window>`u`?`light`:window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`);(0,w.useEffect)(()=>{if(typeof window>`u`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`),t=a(e=>{o(e.matches?`dark`:`light`)},`handleChange`);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let s=r?n:i;return(0,w.useLayoutEffect)(()=>{if(typeof document>`u`)return;let e=document.documentElement;e.classList.remove(`light`,`dark`),e.classList.add(s===`dark`?`dark`:`light`),e.setAttribute(`data-theme`,s===`dark`?`dark`:`light`),t?e.style.colorScheme=s===`dark`?`dark`:`light`:e.style.colorScheme=``},[s,t]),w.createElement(w.Fragment,null,e)},`ThemeProvider`);function rj({children:e,className:t=``,position:n=`top-right`,attachTo:r,showLabels:i=!0,debugger:o=!1,viewControls:s=!1}){let{props:c,output:l,metadata:u,state:d,theme:f,displayMode:p,safeArea:m,maxHeight:h,userAgent:g,locale:_,isAvailable:v,callTool:y,sendFollowUpMessage:b,openExternal:x,requestDisplayMode:S,setState:C}=nj(),[T,E]=(0,w.useState)(!1),[D,O]=(0,w.useState)(!1),k=(0,w.useRef)(null),A=(0,w.useRef)(null),[j,M]=(0,w.useState)([]),[N,P]=(0,w.useState)(``),[F,I]=(0,w.useState)(`get-my-city`),[L,ee]=(0,w.useState)(`{}`),[te,ne]=(0,w.useState)(`Test follow-up message`),[re,R]=(0,w.useState)(`https://mcp-use.com/docs`),z=p===`fullscreen`&&v,B=p===`pip`&&v,ie=typeof window<`u`&&window.location.pathname.includes(`/inspector/api/`);(0,w.useEffect)(()=>{let e=setTimeout(()=>{if(typeof window<`u`&&window.openai)try{M(Object.keys(window.openai))}catch{M([])}else M([])},100);return()=>{clearTimeout(e)}},[]);let ae=f===`dark`,oe=a(()=>{let e=[`absolute`,`z-[1000]`,`flex`,`gap-2`,`transition-opacity`,`duration-200`,`ease-in-out`,T?`opacity-100`:`opacity-0`,T?`pointer-events-auto`:`pointer-events-none`];switch(n){case`top-left`:return[...e,`top-4`,`left-4`];case`top-center`:return[...e,`top-4`,`left-1/2`,`-translate-x-1/2`];case`top-right`:return[...e,`top-4`,`right-4`];case`center-left`:return[...e,`top-1/2`,`left-4`,`-translate-y-1/2`];case`center-right`:return[...e,`top-1/2`,`right-4`,`-translate-y-1/2`];case`bottom-left`:return[...e,`bottom-4`,`left-4`];case`bottom-center`:return[...e,`bottom-4`,`left-1/2`,`-translate-x-1/2`];case`bottom-right`:return[...e,`bottom-4`,`right-4`];default:return[...e,`top-4`,`right-4`]}},`getPositionClasses`),se=a(()=>{let e=m?.insets?.top?Math.max(16,m.insets.top+8):16,t=m?.insets?.right?Math.max(16,m.insets.right+8):16,r=m?.insets?.bottom?Math.max(16,m.insets.bottom+8):16,i=m?.insets?.left?Math.max(16,m.insets.left+8):16,a={};switch(n){case`top-left`:a.top=`${e}px`,a.left=`${i}px`;break;case`top-center`:a.top=`${e}px`;break;case`top-right`:a.top=`${e}px`,a.right=`${t}px`;break;case`center-left`:a.left=`${i}px`;break;case`center-right`:a.right=`${t}px`;break;case`bottom-left`:a.bottom=`${r}px`,a.left=`${i}px`;break;case`bottom-center`:a.bottom=`${r}px`;break;case`bottom-right`:a.bottom=`${r}px`,a.right=`${t}px`;break;default:a.top=`${e}px`,a.right=`${t}px`;break}return a},`getPositionOffsetStyles`);(0,w.useEffect)(()=>{if(!r)return;let e=a(()=>E(!0),`handleMouseEnter`),t=a(()=>E(!1),`handleMouseLeave`);return r.addEventListener(`mouseenter`,e),r.addEventListener(`mouseleave`,t),()=>{r.removeEventListener(`mouseenter`,e),r.removeEventListener(`mouseleave`,t)}},[r]),(0,w.useEffect)(()=>{if(!D)return;let e=a(e=>{A.current&&!A.current.contains(e.target)&&O(!1)},`handleClickOutside`);return document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[D]),(0,w.useEffect)(()=>(D?document.body.style.overflow=`hidden`:document.body.style.overflow=``,()=>{document.body.style.overflow=``}),[D]);let ce=a(()=>{O(!D)},`handleToggleOverlay`),le=a(async()=>{try{P(`Calling tool...`);let e=await y(F,L.trim()?JSON.parse(L):{});P(`Success: ${JSON.stringify(e,null,2)}`)}catch(e){P(`Error: ${e.message}`)}},`handleCallTool`),ue=a(async()=>{try{P(`Sending follow-up message...`),await b(te),P(`Follow-up message sent successfully`)}catch(e){P(`Error: ${e.message}`)}},`handleSendFollowUpMessage`),de=a(()=>{try{x(re),P(`Opened external link: ${re}`)}catch(e){P(`Error: ${e.message}`)}},`handleOpenExternal`),fe=a(async e=>{try{P(`Requesting display mode: ${e}...`),P(`Display mode granted: ${(await S(e)).mode}`)}catch(e){P(`Error: ${e.message}`)}},`handleRequestDisplayMode`),pe=a(async()=>{try{let e=d?{...d,debugTimestamp:new Date().toISOString()}:{debugTimestamp:new Date().toISOString()};P(`Setting state...`),await C(e),P(`State updated: ${JSON.stringify(e,null,2)}`)}catch(e){P(`Error: ${e.message}`)}},`handleSetState`),me=a(async()=>{try{await S(`fullscreen`)}catch(e){console.error(`Failed to go fullscreen:`,e)}},`handleFullscreen`),he=a(async()=>{try{await S(`pip`)}catch(e){console.error(`Failed to go pip:`,e)}},`handlePip`),ge=a(()=>{let e=[`absolute`,`px-2`,`py-1`,`bg-black/90`,`text-white`,`rounded`,`text-xs`,`whitespace-nowrap`,`pointer-events-none`,`transition-opacity`,`duration-200`,`ease-in-out`];switch(n){case`top-right`:return[...e,`top-full`,`right-0`,`mt-2`];case`top-left`:return[...e,`top-full`,`left-0`,`mt-2`];case`top-center`:return[...e,`top-full`,`left-1/2`,`-translate-x-1/2`,`mt-2`];case`bottom-right`:return[...e,`bottom-full`,`right-0`,`mb-2`];case`bottom-left`:return[...e,`bottom-full`,`left-0`,`mb-2`];case`bottom-center`:return[...e,`bottom-full`,`left-1/2`,`-translate-x-1/2`,`mb-2`];case`center-left`:return[...e,`left-full`,`top-1/2`,`-translate-y-1/2`,`ml-2`];case`center-right`:return[...e,`right-full`,`top-1/2`,`-translate-y-1/2`,`mr-2`];default:return[...e,`top-full`,`right-0`,`mt-2`]}},`getTooltipClasses`),_e=a(({onClick:e,label:t,children:n})=>{let[r,a]=(0,w.useState)(!1),o=ge();return w.createElement(`button`,{className:`p-2 ${ae?`bg-white/10 hover:bg-white/20`:`bg-black/70 hover:bg-black/90`} text-white border-none rounded-lg cursor-pointer flex items-center justify-center w-8 h-8 transition-colors duration-200 backdrop-blur-md ${ae?`shadow-[0_2px_8px_rgba(0,0,0,0.3)]`:`shadow-[0_2px_8px_rgba(0,0,0,0.2)]`} relative`,onMouseEnter:()=>a(!0),onMouseLeave:()=>a(!1),onClick:e,"aria-label":t},w.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,className:`block`},n),i&&w.createElement(`span`,{className:`${o.join(` `)} ${r?`opacity-100`:`opacity-0`}`},t))},`IconButton`),ve=a(e=>{if(e===null)return`null`;if(e===void 0)return`undefined`;if(typeof e==`object`)try{return JSON.stringify(e,null,2)}catch{return String(e)}return String(e)},`formatValue`),ye=a(e=>e?`${e.device?.type||`unknown`}`:`N/A`,`formatUserAgent`),be=a(e=>{if(!e?.insets)return`N/A`;let{top:t,bottom:n,left:r,right:i}=e.insets;return`T:${t} B:${n} L:${r} R:${i}`},`formatSafeArea`);return w.createElement(w.Fragment,null,w.createElement(`div`,{ref:k,className:`${t} relative h-fit`,onMouseEnter:()=>!r&&E(!0),onMouseLeave:()=>!r&&E(!1)},w.createElement(`div`,{className:oe().join(` `),style:se()},!ie&&w.createElement(w.Fragment,null,!z&&!B&&w.createElement(w.Fragment,null,(s===!0||s===`fullscreen`)&&w.createElement(_e,{onClick:me,label:`Fullscreen`},w.createElement(`path`,{d:`M15 3h6v6`}),w.createElement(`path`,{d:`m21 3-7 7`}),w.createElement(`path`,{d:`m3 21 7-7`}),w.createElement(`path`,{d:`M9 21H3v-6`})),(s===!0||s===`pip`)&&w.createElement(_e,{onClick:he,label:`Picture in Picture`},w.createElement(`path`,{d:`M21 9V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v10c0 1.1.9 2 2 2h4`}),w.createElement(`rect`,{width:`10`,height:`7`,x:`12`,y:`13`,rx:`2`}))),o&&w.createElement(_e,{onClick:ce,label:`Debug Info`},w.createElement(`path`,{d:`M12 20v-9`}),w.createElement(`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`}),w.createElement(`path`,{d:`M14.12 3.88 16 2`}),w.createElement(`path`,{d:`M21 21a4 4 0 0 0-3.81-4`}),w.createElement(`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`}),w.createElement(`path`,{d:`M22 13h-4`}),w.createElement(`path`,{d:`M3 21a4 4 0 0 1 3.81-4`}),w.createElement(`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`}),w.createElement(`path`,{d:`M6 13H2`}),w.createElement(`path`,{d:`m8 2 1.88 1.88`}),w.createElement(`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`})))),e),D&&o&&w.createElement(`div`,{ref:A,className:`fixed inset-0 bg-black text-white font-mono text-xs z-[10000] overflow-auto p-4`,onClick:e=>{e.target===A.current&&O(!1)}},w.createElement(`button`,{onClick:()=>O(!1),className:`absolute top-4 right-4 bg-white/10 text-white border-none rounded w-8 h-8 cursor-pointer flex items-center justify-center text-lg leading-none`,"aria-label":`Close`},`×`),w.createElement(`div`,{className:`max-w-[1200px] mx-auto pt-10`},w.createElement(`h1`,{className:`text-lg font-bold mb-4 border-b border-gray-700 pb-2`},`Debug Info`),w.createElement(`table`,{className:`w-full border-collapse border-spacing-0`},w.createElement(`tbody`,null,w.createElement(`tr`,{className:`border-b border-gray-700`},w.createElement(`td`,{className:`p-2 font-bold w-[200px] align-top`},`Props`),w.createElement(`td`,{className:`p-2 whitespace-pre-wrap break-all`},ve(c))),w.createElement(`tr`,{className:`border-b border-gray-700`},w.createElement(`td`,{className:`p-2 font-bold w-[200px] align-top`},`Output`),w.createElement(`td`,{className:`p-2 whitespace-pre-wrap break-all`},ve(l))),w.createElement(`tr`,{className:`border-b border-gray-700`},w.createElement(`td`,{className:`p-2 font-bold w-[200px] align-top`},`Metadata`),w.createElement(`td`,{className:`p-2 whitespace-pre-wrap break-all`},ve(u))),w.createElement(`tr`,{className:`border-b border-gray-700`},w.createElement(`td`,{className:`p-2 font-bold w-[200px] align-top`},`State`),w.createElement(`td`,{className:`p-2 whitespace-pre-wrap break-all`},ve(d))),w.createElement(`tr`,{className:`border-b border-gray-700`},w.createElement(`td`,{className:`p-2 font-bold w-[200px] align-top`},`Theme`),w.createElement(`td`,{className:`p-2`},f)),w.createElement(`tr`,{className:`border-b border-gray-700`},w.createElement(`td`,{className:`p-2 font-bold w-[200px] align-top`},`Display Mode`),w.createElement(`td`,{className:`p-2`},p)),w.createElement(`tr`,{className:`border-b border-gray-700`},w.createElement(`td`,{className:`p-2 font-bold w-[200px] align-top`},`Locale`),w.createElement(`td`,{className:`p-2`},_)),w.createElement(`tr`,{className:`border-b border-gray-700`},w.createElement(`td`,{className:`p-2 font-bold w-[200px] align-top`},`Max Height`),w.createElement(`td`,{className:`p-2`},h,`px`)),w.createElement(`tr`,{className:`border-b border-gray-700`},w.createElement(`td`,{className:`p-2 font-bold w-[200px] align-top`},`User Agent`),w.createElement(`td`,{className:`p-2`},ye(g))),w.createElement(`tr`,{className:`border-b border-gray-700`},w.createElement(`td`,{className:`p-2 font-bold w-[200px] align-top`},`Safe Area`),w.createElement(`td`,{className:`p-2`},be(m))),w.createElement(`tr`,{className:`border-b border-gray-700`},w.createElement(`td`,{className:`p-2 font-bold w-[200px] align-top`},`API Available`),w.createElement(`td`,{className:`p-2`},v?`Yes`:`No`)),w.createElement(`tr`,{className:`border-b border-gray-700`},w.createElement(`td`,{className:`p-2 font-bold w-[200px] align-top`},`window.openai Keys`),w.createElement(`td`,{className:`p-2`},j.length>0?j.join(`, `):`N/A`)))),w.createElement(`h2`,{className:`text-base font-bold mt-8 mb-4 border-b border-gray-700 pb-2`},`Actions`),w.createElement(`div`,{className:`flex flex-col gap-3`},w.createElement(`div`,{className:`flex gap-2 items-center`},w.createElement(`input`,{type:`text`,value:F,onChange:e=>I(e.target.value),placeholder:`Tool name`,className:`py-1.5 px-2 bg-[#1a1a1a] text-white border border-gray-700 rounded font-mono text-xs w-[150px]`}),w.createElement(`input`,{type:`text`,value:L,onChange:e=>ee(e.target.value),placeholder:`{"key": "value"}`,className:`py-1.5 px-2 bg-[#1a1a1a] text-white border border-gray-700 rounded font-mono text-xs flex-1`}),w.createElement(`button`,{onClick:le,className:`py-1.5 px-3 bg-gray-800 text-white border border-gray-600 rounded cursor-pointer font-mono text-xs`},`Call Tool`)),w.createElement(`div`,{className:`flex gap-2 items-center`},w.createElement(`input`,{type:`text`,value:te,onChange:e=>ne(e.target.value),placeholder:`Follow-up message`,className:`py-1.5 px-2 bg-[#1a1a1a] text-white border border-gray-700 rounded font-mono text-xs flex-1`}),w.createElement(`button`,{onClick:ue,className:`py-1.5 px-3 bg-gray-800 text-white border border-gray-600 rounded cursor-pointer font-mono text-xs`},`Send Follow-Up`)),w.createElement(`div`,{className:`flex gap-2 items-center`},w.createElement(`input`,{type:`text`,value:re,onChange:e=>R(e.target.value),placeholder:`External URL`,className:`py-1.5 px-2 bg-[#1a1a1a] text-white border border-gray-700 rounded font-mono text-xs flex-1`}),w.createElement(`button`,{onClick:de,className:`py-1.5 px-3 bg-gray-800 text-white border border-gray-600 rounded cursor-pointer font-mono text-xs`},`Open Link`)),w.createElement(`div`,{className:`flex gap-2 items-center`},w.createElement(`span`,{className:`w-[150px] text-xs`},`Display Mode:`),w.createElement(`button`,{onClick:()=>fe(`inline`),className:`py-1.5 px-3 bg-gray-800 text-white border border-gray-600 rounded cursor-pointer font-mono text-xs flex-1`},`Inline`),w.createElement(`button`,{onClick:()=>fe(`pip`),className:`py-1.5 px-3 bg-gray-800 text-white border border-gray-600 rounded cursor-pointer font-mono text-xs flex-1`},`PiP`),w.createElement(`button`,{onClick:()=>fe(`fullscreen`),className:`py-1.5 px-3 bg-gray-800 text-white border border-gray-600 rounded cursor-pointer font-mono text-xs flex-1`},`Fullscreen`)),w.createElement(`div`,{className:`flex gap-2 items-center`},w.createElement(`button`,{onClick:pe,className:`py-1.5 px-3 bg-gray-800 text-white border border-gray-600 rounded cursor-pointer font-mono text-xs`},`Set State (Add Timestamp)`)),N&&w.createElement(`div`,{className:`mt-2 p-2 bg-[#1a1a1a] border border-gray-700 rounded whitespace-pre-wrap break-all text-[11px] max-h-[200px] overflow-auto`},w.createElement(`div`,{className:`font-bold mb-1 text-gray-400`},`Result:`),N,w.createElement(`button`,{onClick:()=>P(``),className:`mt-2 py-1 px-2 bg-gray-800 text-white border border-gray-600 rounded cursor-pointer font-mono text-[11px]`},`Clear`))))))}a(rj,`WidgetControls`);var ipe=150,ape=5;function ope({children:e,debugger:t=!1,viewControls:n=!1,autoSize:r=!0,colorScheme:i=!1}){let[a,o]=(0,w.useState)(null),s=(0,w.useRef)(0),c=(0,w.useRef)(null),l=(0,w.useRef)(!1),u=(0,w.useCallback)(e=>{if(!(typeof window>`u`)){if(l.current=!0,window.openai?.notifyIntrinsicHeight){window.openai.notifyIntrinsicHeight(e).then(()=>{l.current=!1}).catch(e=>{l.current=!1,console.error(`[McpUseProvider] Failed to notify intrinsic height (ChatGPT):`,e)});return}try{QA().sendSizeChanged({height:e}),console.log(`[McpUseProvider] Sent size-changed notification:`,e),l.current=!1}catch(e){l.current=!1,console.error(`[McpUseProvider] Failed to notify size change (MCP Apps):`,e)}}},[]),d=(0,w.useCallback)(e=>{c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{let t=Math.abs(e-s.current);(e===0||t>=ape)&&(s.current=e,u(e))},ipe)},[u]);(0,w.useEffect)(()=>{if(!r){console.log(`[McpUseProvider] autoSize is disabled`);return}if(!a){console.log(`[McpUseProvider] No container element found for autoSize`);return}if(typeof ResizeObserver>`u`){console.log(`[McpUseProvider] ResizeObserver not available`);return}console.log(`[McpUseProvider] Setting up ResizeObserver for autoSize`);let e=new ResizeObserver(e=>{if(l.current){console.log(`[McpUseProvider] Skipping resize - notification in progress`);return}for(let t of e){let e=t.contentRect.height,n=t.target.scrollHeight,r=Math.max(e,n);console.log(`[McpUseProvider] ResizeObserver fired:`,{height:e,scrollHeight:n,intrinsicHeight:r}),d(r)}});e.observe(a);let t=Math.max(a.offsetHeight,a.scrollHeight);return console.log(`[McpUseProvider] Initial height measurement:`,t),t>0&&d(t),()=>{console.log(`[McpUseProvider] Cleaning up ResizeObserver`),e.disconnect(),c.current&&=(clearTimeout(c.current),null),l.current=!1}},[r,a,d]);let f=e;return f=w.createElement(Zfe,null,f),(t||n)&&(f=w.createElement(rj,{debugger:t,viewControls:n},f)),f=w.createElement(rpe,{colorScheme:i},f),r&&(f=w.createElement(`div`,{ref:o,style:{width:`100%`,minHeight:0}},f)),w.createElement(w.StrictMode,null,f)}a(ope,`McpUseProvider`);function spe(){let e=(0,w.useMemo)(()=>typeof window>`u`?!1:typeof window.openai?.uploadFile==`function`&&typeof window.openai?.getFileDownloadUrl==`function`,[]);return{isSupported:e,upload:(0,w.useMemo)(()=>async(t,n={})=>{if(!e)throw Error("[useFiles] File upload is not supported in this host. Check `isSupported` before calling `upload`. File operations are only available in the ChatGPT Apps SDK environment.");let r=await window.openai.uploadFile(t),{modelVisible:i=!0}=n;if(i&&window.openai?.setWidgetState){let e=window.openai.widgetState??{},t=[...e.imageIds??[],r.fileId];window.openai.setWidgetState({...e,imageIds:t}).catch(e=>{console.warn(`[useFiles] Failed to track imageId:`,e)})}return r},[e]),getDownloadUrl:(0,w.useMemo)(()=>async t=>{if(!e)throw Error("[useFiles] File download is not supported in this host. Check `isSupported` before calling `getDownloadUrl`. File operations are only available in the ChatGPT Apps SDK environment.");return window.openai.getFileDownloadUrl(t)},[e])}}a(spe,`useFiles`);function ij(e){let[{status:t,data:n,error:r},i]=(0,w.useState)({status:`idle`,data:void 0,error:void 0}),o=(0,w.useRef)(0),s=a(async t=>{let n=++o.current;i({status:`pending`,data:void 0,error:void 0});try{let r;if(typeof window<`u`)if(window.openai?.callTool)r=await window.openai.callTool(e,t);else if(window!==window.parent)r=await QA().callTool(e,t);else throw Error(`No tool calling interface available`);else throw Error(`useCallTool can only be used in browser environment`);let a=$A(r);return n===o.current&&i({status:`success`,data:a,error:void 0}),a}catch(e){throw n===o.current&&i({status:`error`,data:void 0,error:e}),e}},`execute`),c=(0,w.useCallback)((e=>s(e===void 0?null:e)),[e]),l=(0,w.useCallback)(((e,t)=>{let n;e&&typeof e==`object`&&(`onSuccess`in e||`onError`in e||`onSettled`in e)?(n=null,t=e):n=e===void 0?null:e,s(n).then(e=>{t?.onSuccess?.(e,n),t?.onSettled?.(e,void 0,n)}).catch(e=>{t?.onError?.(e,n),t?.onSettled?.(void 0,e,n)})}),[e]);return{status:t,data:n,error:r,isIdle:t===`idle`,isPending:t===`pending`,isSuccess:t===`success`,isError:t===`error`,callTool:l,callToolAsync:c}}a(ij,`useCallTool`);function cpe(){return{useCallTool:a(e=>ij(e),`useCallTool`),useToolInfo:a(()=>nj(),`useToolInfo`)}}a(cpe,`generateHelpers`);var aj=c.get(`McpClientProvider`),oj=(0,w.createContext)(null),sj=500;function cj({id:e,options:t,defaultCallbackUrl:n,defaultProxyConfig:r,defaultAutoProxyFallback:i,clientInfo:a,cachedMetadata:o,onUpdate:s,rpcWrapTransport:c,onGlobalSamplingRequest:l,onGlobalElicitationRequest:u}){let{name:d,onSamplingRequest:f,onElicitationRequest:p,onNotificationReceived:m,wrapTransport:h}=t,g=(0,w.useMemo)(()=>{let{name:e,onSamplingRequest:s,onElicitationRequest:c,onNotificationReceived:l,wrapTransport:u,...d}=t;return{...d,callbackUrl:d.callbackUrl||n,proxyConfig:d.proxyConfig||r,autoProxyFallback:d.autoProxyFallback===void 0?i:d.autoProxyFallback,clientInfo:d.clientInfo?a?{...a,...d.clientInfo}:d.clientInfo:a,_initialServerInfo:o}},[t,r,i,a,o]),_=(0,w.useMemo)(()=>{if(!(!c&&!h))return t=>{let n=t;return c&&(n=c(n,e)),h&&(n=h(n,e)),n}},[c,h,e]),[v,y]=(0,w.useState)([]),[b,x]=(0,w.useState)([]),S=(0,w.useRef)(0),[C,T]=(0,w.useState)([]),E=(0,w.useRef)(0),D=(0,w.useCallback)(e=>{y(t=>t.map(t=>t.id===e?{...t,read:!0}:t))},[]),O=(0,w.useCallback)(()=>{y(e=>e.map(e=>({...e,read:!0})))},[]),k=(0,w.useCallback)(()=>{y([])},[]),A=(0,w.useCallback)(e=>{let t={id:globalThis.crypto?.randomUUID?.()||`${Date.now()}-${Math.random()}`,method:e.method,params:e.params,timestamp:Date.now(),read:!1};y(e=>{let n=[t,...e];return n.length>sj?n.slice(0,sj):n}),m?.(t)},[m]),j=(0,w.useCallback)((e,t)=>{x(n=>{let r=n.find(t=>t.id===e);return r?(r.resolve(t),n.filter(t=>t.id!==e)):n})},[]),M=(0,w.useCallback)((e,t)=>{x(n=>{let r=n.find(t=>t.id===e);return r?(r.reject(Error(t||`User rejected sampling request`)),n.filter(t=>t.id!==e)):n})},[]),N=(0,w.useCallback)(async t=>new Promise((n,r)=>{let i={id:`sampling-${S.current++}`,request:{method:`sampling/createMessage`,params:t},timestamp:Date.now(),serverName:d||e},a={...i,resolve:n,reject:r};x(e=>[...e,a]),f?.(i),l?.(i,e,d||e,j,M)}),[e,d,f,l,j,M]),P=(0,w.useCallback)((e,t)=>{T(n=>{let r=n.find(t=>t.id===e);return r?(r.resolve(t),n.filter(t=>t.id!==e)):n})},[]),F=(0,w.useCallback)((e,t)=>{T(n=>{let r=n.find(t=>t.id===e);return r?(r.reject(Error(t||`User rejected elicitation request`)),n.filter(t=>t.id!==e)):n})},[]),I=(0,w.useCallback)(async t=>new Promise((n,r)=>{let i={id:`elicitation-${E.current++}`,request:t,timestamp:Date.now(),serverName:d||e},a={...i,resolve:n,reject:r};T(e=>[...e,a]),p?.(i),u?.(i,e,d||e,P,F)}),[e,d,p,u,P,F]),L=FA({...g,onNotification:A,onSampling:N,onElicitation:I,wrapTransport:_}),ee=(0,w.useMemo)(()=>b.map(e=>({id:e.id,request:e.request,timestamp:e.timestamp,serverName:e.serverName})),[b]),te=(0,w.useMemo)(()=>C.map(e=>({id:e.id,request:e.request,timestamp:e.timestamp,serverName:e.serverName})),[C]),ne=(0,w.useMemo)(()=>v.filter(e=>!e.read).length,[v]),re=(0,w.useMemo)(()=>JSON.stringify(L.tools.map(e=>({name:e.name,description:e.description,inputSchema:e.inputSchema,_meta:e._meta})).sort((e,t)=>e.name.localeCompare(t.name))),[L.tools,e]),R=(0,w.useMemo)(()=>JSON.stringify(L.resources.map(e=>({uri:e.uri,name:e.name,description:e.description,mimeType:e.mimeType})).sort((e,t)=>e.uri.localeCompare(t.uri))),[L.resources]),z=(0,w.useMemo)(()=>JSON.stringify(L.prompts.map(e=>({name:e.name,description:e.description,arguments:e.arguments})).sort((e,t)=>e.name.localeCompare(t.name))),[L.prompts]),B=(0,w.useRef)(s),ie=(0,w.useRef)(null),ae=(0,w.useRef)({tools:``,resources:``,prompts:``});return(0,w.useEffect)(()=>{B.current=s},[s]),(0,w.useEffect)(()=>{let n={...L,id:e,url:t.url||``,name:d||e,notifications:v,unreadNotificationCount:ne,markNotificationRead:D,markAllNotificationsRead:O,clearNotifications:k,pendingSamplingRequests:ee,approveSampling:j,rejectSampling:M,pendingElicitationRequests:te,approveElicitation:P,rejectElicitation:F},r=ie.current,i=ae.current,a=i.tools!==re,o=i.resources!==R,s=i.prompts!==z;!r||r.name!==n.name||r.state!==n.state||r.error!==n.error||r.authUrl!==n.authUrl||a||o||s||r.serverInfo!==n.serverInfo||r.capabilities!==n.capabilities||r.notifications.length!==n.notifications.length||r.unreadNotificationCount!==n.unreadNotificationCount||r.pendingSamplingRequests.length!==n.pendingSamplingRequests.length||r.pendingElicitationRequests.length!==n.pendingElicitationRequests.length||!r.client?(ie.current=n,ae.current={tools:re,resources:R,prompts:z},B.current(n)):aj.debug(`[McpServerWrapper ${e}] No meaningful changes detected, skipping onUpdate`)},[e,d,t.url,L.state,L.error,L.authUrl,re,R,z,L.serverInfo,L.capabilities,v.length,ne,ee.length,te.length,D,O,k,j,M,P,F]),null}a(cj,`McpServerWrapper`);function lj({children:e,mcpServers:t,defaultCallbackUrl:n,defaultProxyConfig:r,defaultAutoProxyFallback:i=!0,clientInfo:o,storageProvider:s,enableRpcLogging:c=!1,onServerAdded:l,onServerRemoved:u,onServerStateChange:d,onSamplingRequest:f,onElicitationRequest:p}){let[m,h]=(0,w.useState)([]),[g,_]=(0,w.useState)([]),[v,y]=(0,w.useState)(!1),b=(0,w.useRef)([]);(0,w.useEffect)(()=>{b.current=g},[g]);let x=(0,w.useRef)({}),[S,C]=(0,w.useState)(void 0),[T,E]=(0,w.useState)(!1);(0,w.useEffect)(()=>{if(!c||typeof window>`u`){C(void 0),E(!0);return}J(()=>import(`./rpc-logger-TPNV75J4-DSV4wgJB.js`).then(e=>{aj.debug(`[McpClientProvider] RPC logger loaded`),C(()=>e.wrapTransportForLogging),E(!0)}),__vite__mapDeps([0,1])).catch(e=>{aj.error(`[McpClientProvider] Failed to load RPC logger:`,e),C(void 0),E(!0)})},[c]),(0,w.useEffect)(()=>{if(!T){aj.debug(`[McpClientProvider] Waiting for RPC logging to be ready before loading servers`);return}a(async()=>{if(aj.debug(`[McpClientProvider] Loading servers, storageProvider:`,!!s,`mcpServers:`,t),!s){if(t){let e=Object.entries(t).map(([e,t])=>({id:e,options:t}));aj.debug(`[McpClientProvider] Loaded from mcpServers prop:`,e.length),h(e)}y(!0);return}try{let e=await Promise.resolve(s.getServers());if(aj.debug(`[McpClientProvider] Loaded from storage:`,Object.keys(e).length),s.getServerMetadata)try{let t=Object.keys(e).map(async e=>[e,await Promise.resolve(s.getServerMetadata(e))]),n=await Promise.all(t);x.current=Object.fromEntries(n.filter(e=>e[1]!==void 0)),aj.debug(`[McpClientProvider] Loaded cached metadata for`,Object.keys(x.current).length,`servers`)}catch(e){aj.warn(`[McpClientProvider] Failed to load cached metadata:`,e)}let n={...e,...t},r=Object.entries(n).map(([e,t])=>({id:e,options:t}));aj.debug(`[McpClientProvider] Total servers after merge:`,r.length),h(r),y(!0)}catch(e){aj.error(`[McpClientProvider] Failed to load from storage:`,e),t&&h(Object.entries(t).map(([e,t])=>({id:e,options:t}))),y(!0)}},`loadServers`)()},[s,t,T]),(0,w.useEffect)(()=>{!s||!v||a(async()=>{try{let e=m.reduce((e,t)=>(e[t.id]=t.options,e),{});await Promise.resolve(s.setServers(e))}catch(e){aj.error(`[McpClientProvider] Failed to save to storage:`,e)}},`saveServers`)()},[m,s,v]);let D=(0,w.useCallback)(e=>{aj.debug(`[McpClientProvider] handleServerUpdate called for server ${e.id}`,{toolCount:e.tools.length,state:e.state});let t=[];_(n=>{let r=n.findIndex(t=>t.id===e.id);if(r===-1)return aj.debug(`[McpClientProvider] Adding new server ${e.id} to state`),t.push(()=>l?.(e.id,e)),[...n,e];let i=n[r],a=i.state!==e.state,o=i.serverInfo!==e.serverInfo;if(aj.debug(`[McpClientProvider] Comparing server ${e.id}:`,{toolsChanged:i.tools!==e.tools,currentToolCount:i.tools.length,updatedToolCount:e.tools.length,stateChanged:a}),i.name===e.name&&i.url===e.url&&i.state===e.state&&i.tools===e.tools&&i.resources===e.resources&&i.prompts===e.prompts&&i.error===e.error&&i.serverInfo===e.serverInfo&&i.client===e.client&&i.notifications===e.notifications&&i.unreadNotificationCount===e.unreadNotificationCount&&i.pendingSamplingRequests.length===e.pendingSamplingRequests.length&&i.pendingElicitationRequests.length===e.pendingElicitationRequests.length)return aj.debug(`[McpClientProvider] No changes detected for server ${e.id}, skipping update`),n;if(aj.debug(`[McpClientProvider] Updating server ${e.id} in state`),a&&t.push(()=>d?.(e.id,e.state)),o&&e.serverInfo&&s?.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};x.current[e.id]=t,Promise.resolve(s.setServerMetadata(e.id,t)).catch(e=>{aj.error(`[McpClientProvider] Failed to save server metadata:`,e)})}let c=[...n];return c[r]=e,c}),t.length>0&&queueMicrotask(()=>{t.forEach(e=>e())})},[l,d,s]),O=(0,w.useCallback)((e,t)=>{h(n=>n.find(t=>t.id===e)?n:(aj.debug(`[McpClientProvider] Adding new server to configs:`,e),[...n,{id:e,options:t}]))},[]),k=(0,w.useCallback)((e,t)=>{let n=b.current.find(t=>t.id===e);_(t=>t.filter(t=>t.id!==e)),h(t=>t.filter(t=>t.id!==e)),n?.disconnect&&n.disconnect(),t?.clearCredentials&&n?.clearStorage&&n.clearStorage(),u?.(e)},[u]),A=(0,w.useCallback)(async(e,t)=>new Promise(n=>{let r=m.find(t=>t.id===e);if(!r){aj.warn(`[McpClientProvider] Cannot update server "${e}" - not found`),n();return}let i={...r.options,...t,_updateVersion:(r.options._updateVersion||0)+1},a=b.current.find(t=>t.id===e);_(t=>t.filter(t=>t.id!==e)),h(t=>{let r=t.map(t=>t.id===e?{id:e,options:i}:t);return setTimeout(()=>n(),0),r}),a?.disconnect&&a.disconnect()}),[m]),j=(0,w.useCallback)(async(e,t)=>new Promise(n=>{let r=m.find(t=>t.id===e);if(!r){aj.warn(`[McpClientProvider] Cannot update server metadata for "${e}" - not found`),n();return}let i={...r.options,...t};_(n=>n.map(n=>n.id===e?{...n,name:t.name}:n)),h(t=>{let r=t.map(t=>t.id===e?{id:e,options:i}:t);return setTimeout(()=>n(),0),r})}),[m]),M=(0,w.useCallback)(e=>g.find(t=>t.id===e),[g]),N=(0,w.useMemo)(()=>({servers:g,addServer:O,removeServer:k,updateServerMetadata:j,updateServer:A,getServer:M,storageLoaded:v}),[g,O,k,j,A,M,v]),{capabilities:P,...F}=o||{},I=(0,w.useMemo)(()=>Object.keys(F).length?F:void 0,[o]),L=(0,w.useMemo)(()=>m.map(e=>({id:e.id,options:P?{...e.options,clientOptions:{...e.options.clientOptions,capabilities:{...P,...e.options.clientOptions?.capabilities}}}:e.options})),[m,P]);return w.createElement(oj.Provider,{value:N},e,L.map(e=>w.createElement(cj,{key:`${e.id}-v${e.options._updateVersion||0}`,id:e.id,options:e.options,defaultCallbackUrl:n,defaultProxyConfig:r,defaultAutoProxyFallback:i,clientInfo:I,cachedMetadata:x.current[e.id],onUpdate:D,rpcWrapTransport:S,onGlobalSamplingRequest:f,onGlobalElicitationRequest:p})))}a(lj,`McpClientProvider`);function uj(){let e=(0,w.useContext)(oj);if(!e)throw Error(`useMcpClient must be used within a McpClientProvider`);return e}a(uj,`useMcpClient`);function lpe(e){let{getServer:t}=uj();return t(e)}a(lpe,`useMcpServer`);var upe=class{constructor(e=`mcp-client-servers`){this.storageKey=e,this.metadataKey=`${e}-metadata`}static{a(this,`LocalStorageProvider`)}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)}};(class{static{a(this,`MemoryStorageProvider`)}storage={};metadata={};getServers(){return{...this.storage}}setServers(e){this.storage={...e}}setServer(e,t){this.storage[e]=t}removeServer(e){delete this.storage[e],this.removeServerMetadata(e)}clear(){this.storage={},this.metadata={}}getServerMetadata(e){return this.metadata[e]}setServerMetadata(e,t){this.metadata[e]={...t,cachedAt:Date.now()}}removeServerMetadata(e){delete this.metadata[e]}});async function dj(e){if(navigator.clipboard?.writeText)return navigator.clipboard.writeText(e);let t=document.createElement(`textarea`);if(t.value=e,t.style.cssText=`position:fixed;top:-9999px;left:-9999px;opacity:0`,document.body.appendChild(t),t.focus(),t.select(),!document.execCommand(`copy`))throw Error(`execCommand copy failed`);document.body.removeChild(t)}function fj(e,t,n){let r=e.trim(),i=t.trim(),a=n.trim();if(!(!r&&!a))return{...r?{clientId:r}:{},...r&&i?{clientSecret:i}:{},...a?{scope:a}:{}}}function pj(e){try{let t=localStorage.getItem(`mcp-inspector-connections`);return t&&JSON.parse(t)[e]||null}catch{return null}}function dpe(e){let t=e.proxyConfig?.headers||e.proxyConfig?.customHeaders||e.headers||e.customHeaders||{};return Object.fromEntries(Object.entries(t).filter(([e,t])=>e&&t).map(([e,t])=>[e,String(t)]).sort(([e],[t])=>e.localeCompare(t)))}function mj(e){let t=e.url?.trim()||``;return{url:t,name:e.name?.trim()||t,transportType:e.transportType||`http`,proxyAddress:e.proxyConfig?.proxyAddress?.trim()||``,headers:dpe(e),oauthClientId:e.oauth?.clientId?.trim()||``,oauthClientSecret:e.oauth?.clientSecret?.trim()||``,oauthScope:e.oauth?.scope?.trim()||``}}function hj(e,t){let n=mj(e),r=mj(t);return n.url===r.url&&n.transportType===r.transportType&&n.proxyAddress===r.proxyAddress&&JSON.stringify(n.headers)===JSON.stringify(r.headers)&&n.oauthClientId===r.oauthClientId&&n.oauthClientSecret===r.oauthClientSecret&&n.oauthScope===r.oauthScope&&n.name!==r.name}function gj(e){let t=e.name?.trim(),n=e.url?.trim();return t?t===n?``:t:``}function _j(e){return gj(e)||e.serverInfo?.title?.trim()||e.serverInfo?.name?.trim()||e.name?.trim()||e.url?.trim()||`Unknown server`}var vj=`popstate`;function yj(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function fpe(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return Cj(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:wj(t)}return mpe(t,n,null,e)}function bj(e,t){if(e===!1||e==null)throw Error(t)}function xj(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function ppe(){return Math.random().toString(36).substring(2,10)}function Sj(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function Cj(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?Tj(t):t,state:n,key:t&&t.key||r||ppe(),mask:i}}function wj({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function Tj(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function mpe(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=yj(e)?e:Cj(h.location,e,t);n&&n(r,e),l=u()+1;let d=Sj(r,l),f=h.createHref(r.mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=yj(e)?e:Cj(h.location,e,t);n&&n(r,e),l=u();let i=Sj(r,l),d=h.createHref(r.mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return hpe(i,e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(vj,d),c=e,()=>{i.removeEventListener(vj,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function hpe(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),bj(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:wj(t);return i=i.replace(/ $/,`%20`),!n&&i.startsWith(`//`)&&(i=r+i),new URL(i,r)}function Ej(e,t,n=`/`){return gpe(e,t,n,!1)}function gpe(e,t,n,r,i){let a=jj((typeof t==`string`?Tj(t):t).pathname||`/`,n);if(a==null)return null;let o=i??vpe(e),s=null,c=Ape(a);for(let e=0;s==null&&e<o.length;++e)s=Ope(o[e],c,r);return s}function _pe(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function vpe(e){let t=Dj(e);return ype(t),t}function Dj(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;bj(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=Lj([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(bj(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),Dj(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:Epe(l,e.index),routesMeta:u})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of Oj(e.path))a(e,t,!0,n)}),t}function Oj(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=Oj(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function ype(e){e.sort((e,t)=>e.score===t.score?Dpe(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var bpe=/^:[\w-]+$/,xpe=3,Spe=2,Cpe=1,wpe=10,Tpe=-2,kj=e=>e===`*`;function Epe(e,t){let n=e.split(`/`),r=n.length;return n.some(kj)&&(r+=Tpe),t&&(r+=Spe),n.filter(e=>!kj(e)).reduce((e,t)=>e+(bpe.test(t)?xpe:t===``?Cpe:wpe),r)}function Dpe(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function Ope(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u=Aj({path:s.relativePath,caseSensitive:s.caseSensitive,end:c},l),d=s.route;if(!u&&c&&n&&!r[r.length-1].route.index&&(u=Aj({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!u)return null;Object.assign(i,u.params),o.push({params:i,pathname:Lj([a,u.pathname]),pathnameBase:Ppe(Lj([a,u.pathnameBase])),route:d}),u.pathnameBase!==`/`&&(a=Lj([a,u.pathnameBase]))}return o}function Aj(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=kpe(e.path,e.caseSensitive,e.end),i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,`$1`),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function kpe(e,t=!1,n=!0){xj(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function Ape(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return xj(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function jj(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}var jpe=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function Mpe(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?Tj(e):e,a;return n?(n=Ij(n),a=n.startsWith(`/`)?Mj(n.substring(1),`/`):Mj(n,t)):a=t,{pathname:a,search:Fpe(r),hash:Ipe(i)}}function Mj(e,t){let n=Rj(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function Nj(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function Npe(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function Pj(e){let t=Npe(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function Fj(e,t,n,r=!1){let i;typeof e==`string`?i=Tj(e):(i={...e},bj(!i.pathname||!i.pathname.includes(`?`),Nj(`?`,`pathname`,`search`,i)),bj(!i.pathname||!i.pathname.includes(`#`),Nj(`#`,`pathname`,`hash`,i)),bj(!i.search||!i.search.includes(`#`),Nj(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=Mpe(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var Ij=e=>e.replace(/\/\/+/g,`/`),Lj=e=>Ij(e.join(`/`)),Rj=e=>e.replace(/\/+$/,``),Ppe=e=>Rj(e).replace(/^\/*/,`/`),Fpe=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,Ipe=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,Lpe=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function Rpe(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function zpe(e){return Lj(e.map(e=>e.route.path).filter(Boolean))||`/`}var zj=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function Bj(e,t){let n=e;if(typeof n!=`string`||!jpe.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(zj)try{let e=new URL(window.location.href),r=n.startsWith(`//`)?new URL(e.protocol+n):new URL(n),a=jj(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{xj(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var Vj=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(Vj);var Bpe=[`GET`,...Vj];new Set(Bpe);var Hj=w.createContext(null);Hj.displayName=`DataRouter`;var Uj=w.createContext(null);Uj.displayName=`DataRouterState`;var Wj=w.createContext(!1);function Vpe(){return w.useContext(Wj)}var Gj=w.createContext({isTransitioning:!1});Gj.displayName=`ViewTransition`;var Hpe=w.createContext(new Map);Hpe.displayName=`Fetchers`;var Upe=w.createContext(null);Upe.displayName=`Await`;var Kj=w.createContext(null);Kj.displayName=`Navigation`;var qj=w.createContext(null);qj.displayName=`Location`;var Jj=w.createContext({outlet:null,matches:[],isDataRoute:!1});Jj.displayName=`Route`;var Yj=w.createContext(null);Yj.displayName=`RouteError`;var Xj=`REACT_ROUTER_ERROR`,Wpe=`REDIRECT`,Gpe=`ROUTE_ERROR_RESPONSE`;function Kpe(e){if(e.startsWith(`${Xj}:${Wpe}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function qpe(e){if(e.startsWith(`${Xj}:${Gpe}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new Lpe(t.status,t.statusText,t.data)}catch{}}function Jpe(e,{relative:t}={}){bj(Zj(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=w.useContext(Kj),{hash:i,pathname:a,search:o}=nM(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:Lj([n,a])),r.createHref({pathname:s,search:o,hash:i})}function Zj(){return w.useContext(qj)!=null}function Qj(){return bj(Zj(),`useLocation() may be used only in the context of a <Router> component.`),w.useContext(qj).location}var $j=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function eM(e){w.useContext(Kj).static||w.useLayoutEffect(e)}function tM(){let{isDataRoute:e}=w.useContext(Jj);return e?cme():Ype()}function Ype(){bj(Zj(),`useNavigate() may be used only in the context of a <Router> component.`);let e=w.useContext(Hj),{basename:t,navigator:n}=w.useContext(Kj),{matches:r}=w.useContext(Jj),{pathname:i}=Qj(),a=JSON.stringify(Pj(r)),o=w.useRef(!1);return eM(()=>{o.current=!0}),w.useCallback((r,s={})=>{if(xj(o.current,$j),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=Fj(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:Lj([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}w.createContext(null);function Xpe(){let{matches:e}=w.useContext(Jj);return e[e.length-1]?.params??{}}function nM(e,{relative:t}={}){let{matches:n}=w.useContext(Jj),{pathname:r}=Qj(),i=JSON.stringify(Pj(n));return w.useMemo(()=>Fj(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function Zpe(e,t){return rM(e,t)}function rM(e,t,n){bj(Zj(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=w.useContext(Kj),{matches:i}=w.useContext(Jj),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;dM(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${s}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
@@ -844,4 +844,4 @@ For more information, see https://radix-ui.com/primitives/docs/components/alert-
|
|
|
844
844
|
<pre>${JSON.stringify(t.result,null,2)}</pre>
|
|
845
845
|
</body>
|
|
846
846
|
</html>
|
|
847
|
-
`),e.document.close())}},[x]),Fe=(0,w.useCallback)(()=>{l&&(ne(``),ee(!0))},[l]),Ie=(0,w.useCallback)(()=>{if(!l)return;let e={id:`${Date.now()}-${Math.random()}`,name:te.trim()||`${l.name} - ${new Date().toLocaleString()}`,toolName:l.name,args:ke,savedAt:Date.now(),serverId:l._serverId,serverName:l._serverName};ve([...F,e]),ef.getInstance().capture(new Vd({toolName:l.name,serverId:i})).catch(()=>{}),ee(!1),ne(``)},[l,te,ke,F,ve,i]),Le=(0,w.useCallback)(e=>{ve(F.filter(t=>t.id!==e)),d?.id===e&&f(null)},[F,ve,d]);return ae?(0,S.jsxs)(`div`,{className:`h-full flex flex-col overflow-hidden relative bg-background`,children:[se!==`list`&&(0,S.jsxs)(`div`,{className:`flex items-center gap-2 p-2 border-b shrink-0 bg-background z-10`,children:[(0,S.jsx)(U,{variant:`ghost`,size:`sm`,onClick:()=>{se===`response`?ce(`detail`):(u(null),ce(`list`))},className:`p-0 h-8 w-8`,children:(0,S.jsx)(bf,{className:`h-4 w-4`})}),(0,S.jsxs)(`div`,{className:`flex items-center text-sm font-medium`,children:[(0,S.jsx)(`button`,{onClick:()=>{u(null),ce(`list`)},className:`text-muted-foreground hover:text-foreground hover:underline cursor-pointer`,children:`Tools`}),se===`detail`&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`span`,{className:`mx-2 text-muted-foreground`,children:`/`}),(0,S.jsx)(`button`,{onClick:()=>{ce(`response`)},className:se===`detail`?`text-foreground hover:underline`:se===`response`?`text-muted-foreground hover:text-foreground hover:underline cursor-pointer`:`text-muted-foreground`,children:`Execute`})]}),se===`response`&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`span`,{className:`mx-2 text-muted-foreground`,children:`/`}),(0,S.jsx)(`span`,{className:`text-foreground`,children:`Response`})]})]})]}),(0,S.jsx)(`div`,{className:`flex-1 relative overflow-hidden`,children:(0,S.jsxs)($K,{initial:!1,mode:`popLayout`,children:[se===`list`&&(0,S.jsxs)(Hq.div,{initial:{x:`-100%`},animate:{x:0},exit:{x:`-100%`},transition:{type:`spring`,stiffness:300,damping:30},className:`absolute inset-0 flex flex-col bg-background z-0`,children:[(0,S.jsx)(VIe,{activeTab:N,isSearchExpanded:re,searchQuery:j,filteredToolsCount:ye.length,savedRequestsCount:F.length,onSearchExpand:()=>R(!0),onSearchChange:M,onSearchBlur:Se,onTabSwitch:()=>P(N===`tools`?`saved`:`tools`),searchInputRef:ie,onRefresh:o?Ce:void 0,isRefreshing:s}),N===`tools`?(0,S.jsx)(BIe,{tools:ye,selectedTool:l,onToolSelect:be,focusedIndex:z}):(0,S.jsx)(CIe,{savedRequests:F,selectedRequest:d,onLoadRequest:xe,onDeleteRequest:Le,focusedIndex:z})]},`list`),se===`detail`&&(0,S.jsx)(Hq.div,{initial:{x:`100%`},animate:{x:0},exit:{x:`-100%`},transition:{type:`spring`,stiffness:300,damping:30},className:`absolute inset-0 bg-background z-10`,children:(0,S.jsx)(PIe,{selectedTool:l,toolArgs:h,payloadToSend:ke,isExecuting:T,isConnected:a,onArgChange:we,onExecute:Ae,onSave:Fe,onBulkPaste:Ee,autoFilledFields:pe,setFields:_,sendEmptyFields:y,onToggleEmpty:Te})},`detail`),se===`response`&&(0,S.jsx)(Hq.div,{initial:{x:`100%`},animate:{x:0},exit:{x:`100%`},transition:{type:`spring`,stiffness:300,damping:30},className:`absolute inset-0 bg-background z-20`,children:(0,S.jsx)(zIe,{results:Ne,copiedResult:D,serverId:i,readResource:r,onCopy:je,onDelete:Me,onFullscreen:Pe,onRerunTool:Ae})},`response`)]})}),(0,S.jsx)(wIe,{isOpen:L,requestName:te,defaultPlaceholder:`${l?.name} - ${new Date().toLocaleString()}`,onRequestNameChange:ne,onSave:Ie,onCancel:()=>ee(!1)}),(0,S.jsx)(yLe,{open:de.open,onOpenChange:e=>{e||Oe()},children:(0,S.jsxs)(SLe,{children:[(0,S.jsxs)(CLe,{children:[(0,S.jsx)(TLe,{children:`Auto-fill fields from pasted object?`}),(0,S.jsxs)(ELe,{children:[de.fieldsToUpdate.length>0&&(0,S.jsxs)(`div`,{className:`mb-3`,children:[(0,S.jsx)(`p`,{className:`font-medium mb-2`,children:`The following fields will be updated:`}),(0,S.jsx)(`ul`,{className:`text-sm space-y-1 max-h-[200px] overflow-y-auto`,children:de.fieldsToUpdate.map(({key:e,oldValue:t,newValue:n})=>(0,S.jsxs)(`li`,{className:`font-mono`,children:[(0,S.jsxs)(`span`,{className:`font-semibold`,children:[e,`:`]}),` `,(0,S.jsx)(`span`,{className:`text-red-600 dark:text-red-400 line-through`,children:typeof t==`object`?JSON.stringify(t).substring(0,30)+`...`:String(t).substring(0,30)}),` `,`→`,` `,(0,S.jsx)(`span`,{className:`text-green-600 dark:text-green-400`,children:typeof n==`string`&&n.length>30?n.substring(0,30)+`...`:String(n).substring(0,30)})]},e))})]}),de.newFields.length>0&&(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`p`,{className:`font-medium mb-1`,children:`New fields to be filled:`}),(0,S.jsx)(`p`,{className:`text-sm font-mono`,children:de.newFields.join(`, `)})]})]})]}),(0,S.jsxs)(wLe,{children:[(0,S.jsx)(OLe,{onClick:Oe,children:`Cancel`}),(0,S.jsx)(DLe,{onClick:De,children:`Auto-fill`})]})]})})]}):(0,S.jsxs)(T9,{orientation:`horizontal`,className:`h-full`,children:[(0,S.jsx)(E9,{id:`left-panel`,defaultSize:`33%`,minSize:`20%`,collapsible:!0,className:`flex flex-col h-full relative`,panelRef:he,children:(0,S.jsxs)(T9,{orientation:`vertical`,className:`h-full border-r dark:border-zinc-700`,children:[(0,S.jsx)(E9,{minSize:`30%`,children:(0,S.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,S.jsx)(VIe,{activeTab:N,isSearchExpanded:re,searchQuery:j,filteredToolsCount:ye.length,savedRequestsCount:F.length,onSearchExpand:()=>R(!0),onSearchChange:M,onSearchBlur:Se,onTabSwitch:()=>P(N===`tools`?`saved`:`tools`),searchInputRef:ie,onRefresh:o?Ce:void 0,isRefreshing:s}),N===`tools`?(0,S.jsx)(BIe,{tools:ye,selectedTool:l,onToolSelect:be,focusedIndex:z}):(0,S.jsx)(CIe,{savedRequests:F,selectedRequest:d,onLoadRequest:xe,onDeleteRequest:Le,focusedIndex:z})]})}),(0,S.jsx)(D9,{withHandle:!0}),(0,S.jsx)(j9,{serverId:i})]})}),(0,S.jsx)(D9,{withHandle:!0}),(0,S.jsx)(E9,{defaultSize:`67%`,children:(0,S.jsxs)(T9,{orientation:`vertical`,children:[(0,S.jsx)(E9,{defaultSize:`40%`,collapsible:!0,panelRef:ge,children:(0,S.jsx)(PIe,{selectedTool:l,toolArgs:h,payloadToSend:ke,isExecuting:T,isConnected:a,onArgChange:we,onExecute:Ae,onSave:Fe,onCancel:()=>{k&&k.abort()},onBulkPaste:Ee,autoFilledFields:pe,setFields:_,sendEmptyFields:y,onToggleEmpty:Te})}),(0,S.jsx)(D9,{withHandle:!0}),(0,S.jsx)(E9,{defaultSize:`60%`,children:(0,S.jsx)(`div`,{className:`flex flex-col h-full`,children:(0,S.jsx)(zIe,{results:Ne,copiedResult:D,serverId:i,readResource:r,onCopy:je,onDelete:Me,onFullscreen:Pe,onMaximize:_e,isMaximized:le,onRerunTool:Ae})})})]})}),(0,S.jsx)(wIe,{isOpen:L,requestName:te,defaultPlaceholder:`${l?.name} - ${new Date().toLocaleString()}`,onRequestNameChange:ne,onSave:Ie,onCancel:()=>ee(!1)}),(0,S.jsx)(yLe,{open:de.open,onOpenChange:e=>{e||Oe()},children:(0,S.jsxs)(SLe,{children:[(0,S.jsxs)(CLe,{children:[(0,S.jsx)(TLe,{children:`Auto-fill fields from pasted object?`}),(0,S.jsxs)(ELe,{children:[de.fieldsToUpdate.length>0&&(0,S.jsxs)(`div`,{className:`mb-3`,children:[(0,S.jsx)(`p`,{className:`font-medium mb-2`,children:`The following fields will be updated:`}),(0,S.jsx)(`ul`,{className:`text-sm space-y-1 max-h-[200px] overflow-y-auto`,children:de.fieldsToUpdate.map(({key:e,oldValue:t,newValue:n})=>(0,S.jsxs)(`li`,{className:`font-mono`,children:[(0,S.jsxs)(`span`,{className:`font-semibold`,children:[e,`:`]}),` `,(0,S.jsx)(`span`,{className:`text-red-600 dark:text-red-400 line-through`,children:typeof t==`object`?JSON.stringify(t).substring(0,30)+`...`:String(t).substring(0,30)}),` `,`→`,` `,(0,S.jsx)(`span`,{className:`text-green-600 dark:text-green-400`,children:typeof n==`string`&&n.length>30?n.substring(0,30)+`...`:String(n).substring(0,30)})]},e))})]}),de.newFields.length>0&&(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`p`,{className:`font-medium mb-1`,children:`New fields to be filled:`}),(0,S.jsx)(`p`,{className:`text-sm font-mono`,children:de.newFields.join(`, `)})]})]})]}),(0,S.jsxs)(wLe,{children:[(0,S.jsx)(OLe,{onClick:Oe,children:`Cancel`}),(0,S.jsx)(DLe,{onClick:De,children:`Auto-fill`})]})]})})]})}ALe.displayName=`ToolsTab`;function jLe({selectedServer:e,activeTab:t,toolsSearchRef:n,promptsSearchRef:r,resourcesSearchRef:i,children:a}){let{embeddedConfig:o}=Jq();if(!e&&o.forceConnected)return o.chatApiUrl?(0,S.jsx)(kPe,{connection:{id:`force-connected`,url:``,name:``,state:`ready`,tools:[],prompts:[],resources:[]},isConnected:!0,prompts:[],serverId:`force-connected`,callPrompt:async()=>({messages:[]}),readResource:async()=>({contents:[]}),useClientSide:!1,chatApiUrl:o.chatApiUrl,managedLlmConfig:o.managedLlmConfig??{provider:`anthropic`,model:`claude-haiku-4-5`,apiKey:`server-managed`},enableFreeTierUpgrade:o.chatEnableFreeTierUpgrade,hideTitle:o.chatHideTitle,hideModelBadge:o.chatHideModelBadge??!0,hideServerUrl:o.chatHideServerUrl??!0,clearButtonLabel:o.chatClearButtonLabel,clearButtonHideIcon:o.chatClearButtonHideIcon,clearButtonHideShortcut:o.chatClearButtonHideShortcut,clearButtonVariant:o.chatClearButtonVariant,chatQuickQuestions:o.chatQuickQuestions,chatFollowups:o.chatFollowups,hideClearButton:o.chatHideClearButton,hideToolSelector:o.chatHideToolSelector,enableKeyboardShortcuts:!1},`chat-force-connected`):(0,S.jsx)(S.Fragment,{children:a});if(!e)return(0,S.jsx)(S.Fragment,{children:a});let s=e=>o.visibleTabs?o.visibleTabs.includes(e):!0;return(0,S.jsxs)(S.Fragment,{children:[s(`tools`)&&(0,S.jsx)(`div`,{style:{display:t===`tools`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(ALe,{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`)&&(0,S.jsx)(`div`,{style:{display:t===`prompts`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(uIe,{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`)&&(0,S.jsx)(`div`,{style:{display:t===`resources`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(_Ie,{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`)&&(0,S.jsx)(`div`,{style:{display:t===`chat`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(kPe,{connection:e,isConnected:o.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:!o.chatApiUrl,chatApiUrl:o.chatApiUrl,managedLlmConfig:o.managedLlmConfig??(o.chatApiUrl?{provider:`anthropic`,model:`claude-haiku-4-5`,apiKey:`server-managed`}:void 0),enableFreeTierUpgrade:o.chatEnableFreeTierUpgrade,hideTitle:o.chatHideTitle,hideModelBadge:o.chatHideModelBadge??!!o.chatApiUrl,hideServerUrl:o.chatHideServerUrl??!!o.chatApiUrl,clearButtonLabel:o.chatClearButtonLabel,clearButtonHideIcon:o.chatClearButtonHideIcon,clearButtonHideShortcut:o.chatClearButtonHideShortcut,clearButtonVariant:o.chatClearButtonVariant,chatQuickQuestions:o.chatQuickQuestions,chatFollowups:o.chatFollowups,hideClearButton:o.chatHideClearButton,hideToolSelector:o.chatHideToolSelector,streamProtocol:o.chatStreamProtocol,credentials:o.chatCredentials},`chat-${e.id}`)}),s(`sampling`)&&(0,S.jsx)(`div`,{style:{display:t===`sampling`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(SIe,{pendingRequests:e.pendingSamplingRequests,onApprove:e.approveSampling,onReject:e.rejectSampling,serverId:e.id,isConnected:e.state===`ready`,mcpServerUrl:e.url},`sampling-${e.id}`)}),s(`elicitation`)&&(0,S.jsx)(`div`,{style:{display:t===`elicitation`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(WFe,{pendingRequests:e.pendingElicitationRequests,onApprove:e.approveElicitation,onReject:e.rejectElicitation,serverId:e.id,isConnected:e.state===`ready`},`elicitation-${e.id}`)}),s(`notifications`)&&(0,S.jsx)(`div`,{style:{display:t===`notifications`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(JFe,{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}`)}),![`tools`,`prompts`,`resources`,`chat`,`sampling`,`elicitation`,`notifications`].includes(t)&&(0,S.jsx)(S.Fragment,{children:a})]})}function MLe({className:e}){return(0,S.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,S.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,S.jsx)(`path`,{d:`M9 18c-4.51 2-5-2-7-2`})]})}var NLe=w.createContext(void 0);function R9(){let e=w.use(NLe);if(!e)throw Error(`useTabs must be used within a TabsProvider`);return e}var PLe=w.createContext(void 0);function FLe(){return w.use(PLe)}function z9({ref:e,children:t,defaultValue:n,value:r,onValueChange:i,className:a,collapsed:o,onCollapsedChange:s,...c}){let[l,u]=w.useState(n||``),d=r!==void 0,f=o!==void 0,[p,m]=w.useState(!1),h=w.useCallback(e=>{d||u(e),i?.(e)},[d,i]);return(0,S.jsx)(NLe,{value:{activeValue:d?r:l,handleValueChange:h,collapsed:f?o:p,handleCollapsedChange:w.useCallback(e=>{f||m(e),s?.(e)},[f,s])},children:(0,S.jsx)(`div`,{ref:e,className:H(`flex flex-col gap-2`,a),...c,children:t})})}z9.displayName=`Tabs`;function B9({ref:e,children:t,className:n,variant:r=`default`,collapsible:i=!1,...a}){let{activeValue:o,collapsed:s,handleCollapsedChange:c}=R9(),[l,u]=w.useState({width:0,left:0}),d=w.useRef(null),f=w.useRef(null),p=w.useRef(null),m=w.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=w.useCallback(()=>{p.current&&clearTimeout(p.current),p.current=setTimeout(m,16)},[m]);w.useEffect(()=>{let e=setTimeout(m,10);return()=>clearTimeout(e)},[m,s]),w.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]),w.useEffect(()=>{let e=()=>{h()};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[h]);let g=w.useRef(null);return w.useEffect(()=>{g.current&&(g.current.style.width=`${l.width}px`,g.current.style.left=`${l.left}px`)},[l]),(0,S.jsx)(PLe,{value:{variant:r,collapsed:s,handleCollapsedChange:c},children:(0,S.jsx)(`div`,{ref:d,className:H(`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,S.jsxs)(`div`,{role:`tablist`,className:`flex-1 flex items-center relative`,children:[t,(0,S.jsx)(`span`,{ref:g,className:H(`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`)})]})})})}B9.displayName=`TabsList`;var ILe=({children:e,title:t,collapsed:n})=>!t||!n?e:(0,S.jsx)(Od,{children:(0,S.jsxs)(kd,{children:[(0,S.jsx)(Ad,{children:e}),(0,S.jsx)(jd,{children:t})]})}),V9=w.forwardRef(({children:e,value:t,className:n,disabled:r,icon:i,title:a,showDot:o=!1,alwaysExpanded:s=!1,badge:c,...l},u)=>{let{activeValue:d,handleValueChange:f,collapsed:p}=R9(),m=FLe()?.variant||`default`,h=d===t,g=!p||h||s;return(0,S.jsx)(ILe,{title:a,collapsed:p&&!g,children:(0,S.jsxs)(`button`,{ref:u,disabled:r,onClick:()=>f(t),"data-tab-value":t,"data-tab-active":h,role:`tab`,"aria-selected":h?`true`:`false`,title:p&&!g&&a?a:void 0,className:H(`relative z-10 flex-1 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`,m===`default`&&`py-2.5`,m===`default`&&`rounded-md px-4`,m===`underline`&&`px-6 py-3 border-b-2 border-transparent`,h&&`text-foreground`,!h&&`text-muted-foreground hover:text-foreground`,n),...l,children:[i&&(0,S.jsx)(i,{className:H(`h-4 w-4 shrink-0 transition-all duration-[250ms] ease-in-out`,g&&`mr-2`,!g&&`mr-0!`)}),o&&(0,S.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,S.jsx)(`span`,{className:H(`min-w-0 transition-all duration-[250ms] ease-in-out overflow-hidden`,g?`w-auto opacity-100`:`w-0 opacity-0`),children:e}),c]})})});V9.displayName=`TabsTrigger`;function LLe(e,t=[]){let n=[];function r(t,r){let i=w.createContext(r);i.displayName=t+`Context`;let a=n.length;n=[...n,r];let o=t=>{let{scope:n,children:r,...o}=t,s=n?.[e]?.[a]||i,c=w.useMemo(()=>o,Object.values(o));return(0,S.jsx)(s.Provider,{value:c,children:r})};o.displayName=t+`Provider`;function s(n,o){let s=o?.[e]?.[a]||i,c=w.useContext(s);if(c)return c;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,s]}let i=()=>{let t=n.map(e=>w.createContext(e));return function(n){let r=n?.[e]||t;return w.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,RLe(i,...t)]}function RLe(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return w.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}var zLe=i((e=>{var t=m();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),BLe=i(((e,t)=>{t.exports=zLe()}))();function VLe(){return(0,BLe.useSyncExternalStore)(HLe,()=>!0,()=>!1)}function HLe(){return()=>{}}var H9=`Avatar`,[ULe,WLe]=LLe(H9),[GLe,KLe]=ULe(H9),qLe=w.forwardRef((e,t)=>{let{__scopeAvatar:n,...r}=e,[i,a]=w.useState(`idle`);return(0,S.jsx)(GLe,{scope:n,imageLoadingStatus:i,onImageLoadingStatusChange:a,children:(0,S.jsx)(jN.span,{...r,ref:t})})});qLe.displayName=H9;var JLe=`AvatarImage`,YLe=w.forwardRef((e,t)=>{let{__scopeAvatar:n,src:r,onLoadingStatusChange:i=()=>{},...a}=e,o=KLe(JLe,n),s=$Le(r,a),c=$t(e=>{i(e),o.onImageLoadingStatusChange(e)});return Ft(()=>{s!==`idle`&&c(s)},[s,c]),s===`loaded`?(0,S.jsx)(jN.img,{...a,ref:t,src:r}):null});YLe.displayName=JLe;var XLe=`AvatarFallback`,ZLe=w.forwardRef((e,t)=>{let{__scopeAvatar:n,delayMs:r,...i}=e,a=KLe(XLe,n),[o,s]=w.useState(r===void 0);return w.useEffect(()=>{if(r!==void 0){let e=window.setTimeout(()=>s(!0),r);return()=>window.clearTimeout(e)}},[r]),o&&a.imageLoadingStatus!==`loaded`?(0,S.jsx)(jN.span,{...i,ref:t}):null});ZLe.displayName=XLe;function QLe(e,t){return e?t?(e.src!==t&&(e.src=t),e.complete&&e.naturalWidth>0?`loaded`:`loading`):`error`:`idle`}function $Le(e,{referrerPolicy:t,crossOrigin:n}){let r=VLe(),i=w.useRef(null),a=r?(i.current||=new window.Image,i.current):null,[o,s]=w.useState(()=>QLe(a,e));return Ft(()=>{s(QLe(a,e))},[a,e]),Ft(()=>{let e=e=>()=>{s(e)};if(!a)return;let r=e(`loaded`),i=e(`error`);return a.addEventListener(`load`,r),a.addEventListener(`error`,i),t&&(a.referrerPolicy=t),typeof n==`string`&&(a.crossOrigin=n),()=>{a.removeEventListener(`load`,r),a.removeEventListener(`error`,i)}},[a,n,t]),o}var eRe=qLe,tRe=YLe,nRe=ZLe;function rRe({className:e,...t}){return(0,S.jsx)(eRe,{"data-slot":`avatar`,className:H(`relative flex size-8 shrink-0 overflow-hidden rounded-full`,e),...t})}function iRe({className:e,...t}){return(0,S.jsx)(tRe,{"data-slot":`avatar-image`,className:H(`aspect-square size-full`,e),...t})}function aRe({className:e,...t}){return(0,S.jsx)(nRe,{"data-slot":`avatar-fallback`,className:H(`flex size-full items-center justify-center rounded-full bg-zinc-200 dark:bg-zinc-700 text-muted-foreground font-medium`,e),...t})}function oRe(e,t){return e?.[0]?e[0].toUpperCase():t?.[0]?t[0].toUpperCase():`U`}function sRe({chatApiUrl:e,dashboardUrl:t=`https://manufact.com/cloud`,fallback:n=null,onUserResolved:r}){let[i,a]=(0,w.useState)(null),[o,s]=(0,w.useState)(!1),c=(0,w.useCallback)(()=>{let t=!1,n=`${new URL(e).origin}/api/auth/get-session`;return fetch(n,{credentials:`include`}).then(e=>e.ok?e.json():null).then(e=>{if(!t){let t=e?.user??null;a(t),s(!0),r?.(t)}}).catch(()=>{t||(s(!0),r?.(null))}),()=>{t=!0}},[e]);if((0,w.useEffect)(()=>c(),[c]),(0,w.useEffect)(()=>{let e=()=>{c()};return window.addEventListener(`manufact:session-changed`,e),()=>window.removeEventListener(`manufact:session-changed`,e)},[c]),!o)return null;if(!i)return(0,S.jsx)(S.Fragment,{children:n});let l=oRe(i.name,i.email),u=i.name??i.email??`User`;return(0,S.jsxs)(ql,{children:[(0,S.jsx)(Jl,{asChild:!0,children:(0,S.jsx)(U,{variant:`ghost`,className:`relative h-8 w-8 shrink-0 rounded-full p-0 mr-2`,"aria-label":`User menu`,children:(0,S.jsxs)(rRe,{className:`h-8 w-8 border border-zinc-300 dark:border-zinc-600`,children:[(0,S.jsx)(iRe,{src:i.image??``,alt:u}),(0,S.jsx)(aRe,{className:`text-sm`,children:l})]})})}),(0,S.jsxs)($l,{className:`w-56`,align:`end`,forceMount:!0,children:[(0,S.jsx)(nu,{className:`font-normal`,children:(0,S.jsxs)(`div`,{className:`flex flex-col space-y-1`,children:[(0,S.jsx)(`p`,{className:`text-sm font-medium leading-none truncate`,children:u}),i.email&&i.email!==u&&(0,S.jsx)(`p`,{className:`text-xs leading-none text-muted-foreground truncate`,children:i.email})]})}),(0,S.jsx)(ru,{}),(0,S.jsx)(eu,{asChild:!0,children:(0,S.jsxs)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,children:[(0,S.jsx)(Xf,{className:`mr-2 h-4 w-4`}),`Go to dashboard`]})})]})]})}function cRe({count:e,isActive:t,size:n=`md`}){return e<=0?null:(0,S.jsx)(`span`,{className:H(t?`dark:bg-black`:`dark:bg-zinc-700`,`shrink-0 ml-1 bg-zinc-200 text-zinc-700 dark:text-zinc-300 rounded-full font-medium`,n===`sm`&&`text-[10px] px-1.5 py-0.5`,n===`md`&&`text-xs px-2 py-0.5`),children:e})}function lRe({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,w.useState)(!1),[l,u]=(0,w.useState)(null),[d,f]=(0,w.useState)(!1),{url:p,name:m,headers:h}=e,g=e=>{try{ef.getInstance().capture(new Kd({client:e})).catch(()=>{})}catch{}},_=()=>{g(`cursor`);try{let e=TJ(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=EJ(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=DJ(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{OJ(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)},C=()=>{g(`gemini-cli`),u(`gemini-cli`),c(!0)},T=()=>{g(`codex-cli`),u(`codex-cli`),c(!0)},E=async e=>{try{await dj(e),f(!0),setTimeout(()=>f(!1),2e3)}catch(e){console.error(`Failed to copy:`,e),a?.(e)}},D=()=>{if(l===`claude-code`){let{command:e,envVars:t}=kJ(p,m,h),n=MJ(t);return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(DN,{children:[(0,S.jsx)(ON,{children:`Add to Claude Code`}),(0,S.jsx)(kN,{children:`Execute the following command in your shell to add this server to Claude Code.`})]}),(0,S.jsxs)(`div`,{className:`space-y-4`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,S.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,S.jsx)(`span`,{children:`Ensure the Claude Code executable is available in your path`})]}),(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,S.jsx)(`span`,{children:`Execute the following snippet in your shell:`})]})]})]}),(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:()=>E(e),children:d?(0,S.jsx)(vf,{className:`size-3.5 text-green-600`}):(0,S.jsx)(jf,{className:`size-3.5`})})}),(0,S.jsx)(`pre`,{className:`bg-muted p-3 pr-14 rounded-md text-xs overflow-x-auto`,children:(0,S.jsx)(`code`,{children:e})})]}),n&&(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Environment Variables`}),(0,S.jsx)(`p`,{className:`text-xs text-muted-foreground mb-2`,children:`After installation, set these environment variables in your shell:`}),(0,S.jsx)(`pre`,{className:`bg-muted p-3 rounded-md text-xs overflow-x-auto`,children:(0,S.jsx)(`code`,{children:n})})]}),(0,S.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`The MCP configuration supports environment variable expansion using `,(0,S.jsx)(`code`,{className:`text-foreground`,children:"${VAR}"}),` `,`syntax.`]})]})]})}if(l===`gemini-cli`){let{command:e,envVars:t}=AJ(p,m,h),n=MJ(t);return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(DN,{children:[(0,S.jsx)(ON,{children:`Add to Gemini CLI`}),(0,S.jsx)(kN,{children:`Execute the following command in your shell to add this server to Gemini CLI.`})]}),(0,S.jsxs)(`div`,{className:`space-y-4`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,S.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,S.jsx)(`span`,{children:`Ensure the Gemini CLI executable is available in your path`})]}),n&&(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,S.jsx)(`span`,{children:`Set these environment variables in your shell before running the command:`})]}),(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:n?`3.`:`2.`}),(0,S.jsx)(`span`,{children:`Execute the following snippet in your shell:`})]})]})]}),n&&(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Environment Variables`}),(0,S.jsx)(`pre`,{className:`bg-muted p-3 rounded-md text-xs overflow-x-auto`,children:(0,S.jsx)(`code`,{children:n})})]}),(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:()=>E(e),children:d?(0,S.jsx)(vf,{className:`size-3.5 text-green-600`}):(0,S.jsx)(jf,{className:`size-3.5`})})}),(0,S.jsx)(`pre`,{className:`bg-muted p-3 pr-14 rounded-md text-xs overflow-x-auto`,children:(0,S.jsx)(`code`,{children:e})})]}),(0,S.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}=jJ(p,m,h);return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(DN,{children:[(0,S.jsx)(ON,{children:`Add to Codex CLI`}),(0,S.jsxs)(kN,{children:[`Add this configuration to your`,` `,(0,S.jsx)(`code`,{className:`text-foreground`,children:`~/.codex/config.toml`}),` `,`file.`]})]}),(0,S.jsxs)(`div`,{className:`space-y-4`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,S.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Add this configuration to your`,` `,(0,S.jsx)(`code`,{className:`text-foreground`,children:`~/.codex/config.toml`}),`:`]})]}),(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:()=>E(e),children:d?(0,S.jsx)(vf,{className:`size-3.5 text-green-600`}):(0,S.jsx)(jf,{className:`size-3.5`})})}),(0,S.jsx)(`pre`,{className:`bg-muted p-3 pr-14 rounded-md text-xs overflow-x-auto`,children:(0,S.jsx)(`code`,{children:e})})]}),t.length>0&&(0,S.jsx)(`div`,{children:(0,S.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`(optional) If you would rather use variables from your system's environment, replace the`,` `,(0,S.jsx)(`code`,{className:`text-foreground`,children:`http_headers`}),` key with the `,(0,S.jsx)(`code`,{className:`text-foreground`,children:`env_http_headers`}),` `,`key as shown in the commented section above.`]})}),(0,S.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Restart Codex CLI to load the new configuration.`})]})]})}return null},O=(0,S.jsxs)(U,{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,S.jsxs)(`span`,{className:`xl:hidden hidden sm:flex items-center gap-1`,children:[(0,S.jsx)(cp,{className:`size-3`}),`Client`]}),(0,S.jsxs)(`span`,{className:`hidden xl:flex items-center gap-1`,children:[`Add to Client`,(0,S.jsx)(yf,{className:`size-3`})]})]});return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(ql,{children:[(0,S.jsx)(Jl,{asChild:!0,children:o?typeof o==`function`?o({isOpen:!1,onClick:()=>{}}):o:O}),(0,S.jsxs)($l,{align:`end`,className:`w-auto min-w-[300px]`,children:[t.map(e=>(0,S.jsxs)(eu,{onClick:async()=>{await e.onClick()},className:`flex items-center gap-2`,children:[e.icon,(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:e.label})]},e.id)),t.length>0&&(0,S.jsx)(ru,{}),n.cursor&&(0,S.jsxs)(eu,{onClick:_,className:`flex items-center gap-2`,children:[(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/cursor`,alt:`Cursor`,className:`h-4 w-4`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Cursor`})]}),n.claudeCode&&(0,S.jsxs)(eu,{onClick:x,className:`flex items-center gap-2`,children:[(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/claude`,alt:`Claude`,className:`h-4 w-4`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Claude Code`})]}),n.claudeDesktop&&(0,S.jsxs)(eu,{onClick:b,className:`flex items-center gap-2`,children:[(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/claude`,alt:`Claude`,className:`h-4 w-4`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Claude Desktop`})]}),n.vsCode&&(0,S.jsxs)(eu,{onClick:v,className:`flex items-center gap-2`,children:[(0,S.jsx)(NJ,{className:`h-4 w-4 text-blue-500`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`VS Code`})]}),n.vsCodeInsiders&&(0,S.jsxs)(eu,{onClick:y,className:`flex items-center gap-2`,children:[(0,S.jsx)(NJ,{className:`h-4 w-4 text-teal-400`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`VS Code Insiders`})]}),n.geminiCli&&(0,S.jsxs)(eu,{onClick:C,className:`flex items-center gap-2`,children:[(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/googlegemini`,alt:`Gemini`,className:`h-4 w-4`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Gemini CLI`})]}),n.codexCli&&(0,S.jsxs)(eu,{onClick:T,className:`flex items-center gap-2`,children:[(0,S.jsx)(`img`,{src:`https://inspector-cdn.mcp-use.com/providers/openai.png`,alt:`Codex`,className:`h-4 w-4`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Codex CLI`})]})]})]}),(0,S.jsx)(wN,{open:s,onOpenChange:c,children:(0,S.jsx)(EN,{className:`max-w-3xl max-h-[80vh] overflow-y-auto`,children:D()})})]})}function U9({className:e,state:t=`collapsed`,href:n=`https://mcp-use.com`}){let[r,i]=(0,w.useState)(!1),a=.2,o=.7,s=a+o+.6,c=a/s,l=(a+o)/s;return(0,S.jsxs)(`a`,{href:n,target:`_blank`,rel:`noopener noreferrer`,className:H(`flex items-center transition-opacity -my-3`,t===`expanded`?`space-x-2`:``,e),onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),children:[(0,S.jsx)(`div`,{className:`relative`,children:(0,S.jsxs)(Hq.svg,{viewBox:`0 0 303 303`,initial:`rest`,animate:r?`hover`:`rest`,className:H(`text-foreground`,t===`expanded`?`size-[40px]`:`size-[20px]`),children:[(0,S.jsxs)(Hq.g,{variants:{rest:{opacity:1},hover:{opacity:[1,0,0,1],transition:{duration:s,times:[0,c,l,1],ease:`easeInOut`}}},fill:`currentColor`,fillRule:`nonzero`,stroke:`currentColor`,strokeWidth:4,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,S.jsx)(`path`,{d:`m105.5 34.8.6.6c9.5 9.5 14.4 21.9 14.6 34.4a112.6 112.6 0 0 0 112.2 112.1h.6c12 .4 24 5.1 33.2 14.1l.6.6a50 50 0 0 1-70.1 71.3l-.6-.6A49.9 49.9 0 0 1 182 230 112.6 112.6 0 0 0 73.4 120.7h-.8a49.9 49.9 0 0 1-36.7-14l-.5-.6a50 50 0 0 1-.6-70.2l.6-.5a50 50 0 0 1 69.5-1.2l.6.6Z`}),(0,S.jsx)(`circle`,{cx:`70.3`,cy:`232.3`,r:`50`}),(0,S.jsx)(`circle`,{cx:`232.3`,cy:`70.3`,r:`50`})]}),(0,S.jsxs)(`g`,{fill:`none`,stroke:`currentColor`,strokeWidth:4,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,S.jsx)(uRe,{d:`m105.5 34.8.6.6c9.5 9.5 14.4 21.9 14.6 34.4a112.6 112.6 0 0 0 112.2 112.1h.6c12 .4 24 5.1 33.2 14.1l.6.6a50 50 0 0 1-70.1 71.3l-.6-.6A49.9 49.9 0 0 1 182 230 112.6 112.6 0 0 0 73.4 120.7h-.8a49.9 49.9 0 0 1-36.7-14l-.5-.6a50 50 0 0 1-.6-70.2l.6-.5a50 50 0 0 1 69.5-1.2l.6.6Z`,times:{T0:0,T1:c,T2:l,T3:1},total:s}),(0,S.jsx)(dRe,{cx:70.3,cy:232.3,r:50,times:{T0:0,T1:c,T2:l,T3:1},total:s}),(0,S.jsx)(dRe,{cx:232.3,cy:70.3,r:50,times:{T0:0,T1:c,T2:l,T3:1},total:s})]})]})}),t===`expanded`&&(0,S.jsxs)(`div`,{className:`font-ubuntu flex-col items-start -space-y-1 mr-3 hidden xl:flex`,children:[(0,S.jsx)(`h1`,{className:`text-xl font-medium`,children:`mcp-use`}),(0,S.jsx)(`span`,{className:`text-lg text-muted-foreground tracking-wide font-sans font-light`,children:`Inspector`})]})]})}function uRe({d:e,times:t,total:n}){let{T0:r,T1:i,T2:a,T3:o}=t;return(0,S.jsx)(Hq.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 dRe({cx:e,cy:t,r:n,times:r,total:i}){let{T0:a,T1:o,T2:s,T3:c}=r;return(0,S.jsx)(Hq.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`}}}})}function W9({open:e,onOpenChange:t,serverUrl:n,serverName:r,serverId:i,headers:a,language:o}){let{prismStyle:s}=HP(),[c,l]=(0,w.useState)(!1),u=o===`typescript`?oTe(n,r,i,a):sTe(n,r,i,a),d=async()=>{await dj(u),l(!0),setTimeout(()=>l(!1),2e3)},f=o===`typescript`?`TypeScript`:`Python`;return(0,S.jsx)(wN,{open:e,onOpenChange:t,children:(0,S.jsxs)(EN,{className:`max-w-[90vw] max-h-[90vh] overflow-hidden flex flex-col`,children:[(0,S.jsxs)(DN,{children:[(0,S.jsxs)(ON,{children:[`Add to `,f,` SDK`]}),(0,S.jsxs)(kN,{children:[`Copy the following code to integrate this server into your`,` `,f,` application using the mcp-use SDK.`]})]}),(0,S.jsxs)(`div`,{className:`space-y-4 overflow-y-auto flex-1 min-h-0`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,S.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,S.jsxs)(`span`,{children:[`Install the mcp-use package:`,` `,(0,S.jsx)(`code`,{className:`text-foreground`,children:o===`typescript`?`npm install mcp-use`:`pip install mcp-use`})]})]}),(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,S.jsxs)(`span`,{children:[`Copy the following code into your `,f,` project:`]})]})]})]}),(0,S.jsxs)(`div`,{className:`relative w-full overflow-x-auto overflow-y-auto max-h-[60vh]`,children:[(0,S.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:d,children:c?(0,S.jsx)(vf,{className:`size-3.5 text-green-600`}):(0,S.jsx)(jf,{className:`size-3.5`})})}),(0,S.jsx)(HV,{language:o,style:s,customStyle:{margin:0,padding:`1rem`,paddingRight:`3rem`,borderRadius:`0.5rem`,fontSize:`0.75rem`,background:`var(--muted)`,width:`100%`,maxWidth:`100%`,overflow:`auto`},wrapLines:!0,wrapLongLines:!0,PreTag:`div`,children:u})]})]})]})})}function fRe({ref:e,shimmerColor:t,shimmerSize:n=`0.05em`,shimmerDuration:r=`3s`,borderRadius:i=`100px`,background:a,className:o,children:s,...c}){let{theme:l}=BP();return(0,S.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:H(`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,S.jsx)(`div`,{className:H(`-z-30 blur-[2px]`,`@container-[size] absolute inset-0 overflow-visible`),children:(0,S.jsx)(`div`,{className:`animate-shimmer-slide absolute inset-0 aspect-[1] h-[100cqh] rounded-none mask-none`,children:(0,S.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,S.jsx)(`div`,{className:H(`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,S.jsx)(`div`,{className:H(`absolute [inset:var(--cut)] -z-20 [border-radius:var(--radius)] bg-black dark:bg-white`)})]})}fRe.displayName=`ShimmerButton`;function pRe({status:e}){let{color:t,ringColor:n,tooltip:r}=(e=>{switch(e){case`ready`:return{color:`bg-emerald-500`,ringColor:`ring-emerald-500`,tooltip:`Connected`};case`failed`:return{color:`bg-red-500`,ringColor:`ring-red-500`,tooltip:`Failed`};default:return{color:`bg-yellow-500`,ringColor:`ring-yellow-500`,tooltip:e}}})(e);return(0,S.jsxs)(kd,{children:[(0,S.jsx)(Ad,{asChild:!0,children:(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(`div`,{className:`absolute w-2 h-2 rounded-full ${n} animate-ping`}),(0,S.jsx)(`div`,{className:`relative w-2 h-2 rounded-full ${t}`})]})}),(0,S.jsx)(jd,{children:(0,S.jsx)(`p`,{children:r})})]})}function mRe({connections:e,selectedServer:t,onServerSelect:n,onOpenConnectionOptions:r,mobileMode:i=!1}){let a=tM(),[o,s]=(0,w.useState)(!1),[c,l]=(0,w.useState)(null),u=t=>{let r=e.find(e=>e.id===t);if(!r||r.state!==`ready`){zM.error(`Server is not connected and cannot be inspected`);return}n(t)};return i?(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(`div`,{className:`relative`,children:(0,S.jsxs)(ql,{children:[(0,S.jsx)(Jl,{asChild:!0,children:(0,S.jsxs)(U,{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,S.jsx)(Gq,{server:t,size:`md`}):(0,S.jsx)(gp,{className:`h-5 w-5`}),(0,S.jsx)(yf,{className:`h-4 w-4`})]})}),(0,S.jsxs)($l,{className:`w-[calc(100vw-2rem)] sm:w-[300px]`,align:`start`,children:[(0,S.jsx)(nu,{className:`cursor-pointer hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:()=>a(`/`),children:`MCP Servers`}),(0,S.jsx)(ru,{}),e.length===0?(0,S.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,S.jsxs)(eu,{onClick:()=>u(e.id),className:`flex items-center gap-3`,children:[(0,S.jsx)(Gq,{server:e,size:`sm`}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2 flex-1`,children:[(0,S.jsx)(`div`,{className:`font-medium`,children:_j(e)}),(0,S.jsx)(pRe,{status:e.state})]}),(0,S.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:t=>{t.stopPropagation(),l(e),s(!0)},children:(0,S.jsx)(Jf,{className:`h-3 w-3`})}),(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:t=>{t.stopPropagation(),r(e.id)},children:(0,S.jsx)(_p,{className:`h-3 w-3`})})]})]},e.id)),(0,S.jsx)(ru,{}),(0,S.jsx)(eu,{onClick:()=>a(`/`),children:(0,S.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:`+ Add new server`})})]})]})}),(0,S.jsx)(WV,{open:o,onOpenChange:s,connection:c})]}):(0,S.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsxs)(ql,{children:[(0,S.jsx)(Jl,{asChild:!0,children:(0,S.jsxs)(fRe,{className:H(`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`,t&&`pr-20`),children:[t&&(0,S.jsx)(Gq,{server:t,size:`md`,className:`mr-2`}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2 flex-1`,children:[(0,S.jsx)(`span`,{className:`truncate lg:max-w-[120px] xl:max-w-none`,children:t?_j(t):`Select server to inspect`}),t&&(0,S.jsx)(`div`,{className:`flex items-center gap-2`,children:t.error&&t.state!==`ready`?(0,S.jsxs)(kd,{children:[(0,S.jsx)(Ad,{asChild:!0,children:(0,S.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`})}),(0,S.jsx)(jd,{children:(0,S.jsx)(`p`,{className:`max-w-xs`,children:t.error})})]}):(0,S.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`}`})})]})]})}),t&&(0,S.jsxs)(`div`,{className:`absolute right-2 top-1/2 -translate-y-1/2 flex items-center gap-1`,children:[(0,S.jsxs)(kd,{children:[(0,S.jsx)(Ad,{asChild:!0,children:(0,S.jsx)(`button`,{type:`button`,onClick:()=>{l(t),s(!0)},className:`p-1.5 hover:bg-white/10 dark:hover:bg-black/10 rounded-full transition-colors text-white dark:text-black`,"aria-label":`View server info`,children:(0,S.jsx)(Jf,{className:`h-4 w-4`})})}),(0,S.jsx)(jd,{children:(0,S.jsx)(`p`,{children:`View server info`})})]}),(0,S.jsxs)(kd,{children:[(0,S.jsx)(Ad,{asChild:!0,children:(0,S.jsx)(`button`,{type:`button`,onClick:()=>{r(t.id)},className:`p-1.5 hover:bg-white/10 dark:hover:bg-black/10 rounded-full transition-colors text-white dark:text-black`,"aria-label":`Edit connection settings`,children:(0,S.jsx)(_p,{className:`h-4 w-4`})})}),(0,S.jsx)(jd,{children:(0,S.jsx)(`p`,{children:`Edit connection settings`})})]})]}),(0,S.jsxs)($l,{className:`w-[calc(100vw-2rem)] sm:w-[300px]`,align:`start`,children:[(0,S.jsx)(nu,{className:`cursor-pointer hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:()=>a(`/`),children:`MCP Servers`}),(0,S.jsx)(ru,{}),e.length===0?(0,S.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,S.jsxs)(eu,{onClick:()=>u(e.id),className:`flex items-center gap-3`,children:[(0,S.jsx)(Gq,{server:e,size:`sm`}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2 flex-1`,children:[(0,S.jsx)(`div`,{className:`font-medium`,children:_j(e)}),(0,S.jsx)(pRe,{status:e.state})]}),(0,S.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:t=>{t.stopPropagation(),l(e),s(!0)},children:(0,S.jsx)(Jf,{className:`h-3 w-3`})}),(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:t=>{t.stopPropagation(),r(e.id)},children:(0,S.jsx)(_p,{className:`h-3 w-3`})})]})]},e.id)),(0,S.jsx)(ru,{}),(0,S.jsx)(eu,{onClick:()=>a(`/`),children:(0,S.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:`+ Add new server`})})]})]}),(0,S.jsx)(WV,{open:o,onOpenChange:s,connection:c})]})})}var hRe=[{id:`chat`,label:`Chat`,icon:ep,alwaysExpanded:!0},{id:`separator`},{id:`tools`,label:`Tools`,icon:Np},{id:`prompts`,label:`Prompts`,icon:tp},{id:`resources`,label:`Resources`,icon:Hf},{id:`sampling`,label:`Sampling`,icon:Gf},{id:`elicitation`,label:`Elicitation`,icon:Cp},{id:`notifications`,label:`Notifications`,icon:pf}];function gRe(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 _Re(e,t,n){return n&&t>0&&[`sampling`,`elicitation`,`notifications`].includes(e)}function vRe({collapsed:e,onToggle:t}){return(0,S.jsxs)(kd,{children:[(0,S.jsx)(Ad,{asChild:!0,children:(0,S.jsx)(`button`,{onClick:t,className:H(`shrink-0 p-1.5 rounded-md transition-all duration-500 ease-in-out cursor-pointer`,`text-muted-foreground hover:text-foreground`,`hover:bg-zinc-100 dark:hover:bg-zinc-800`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`),"aria-label":e?`Expand tabs`:`Collapse tabs`,type:`button`,children:e?(0,S.jsx)(xf,{className:`h-4 w-4 transition-transform duration-500 ease-in-out`}):(0,S.jsx)(bf,{className:`h-4 w-4 transition-transform duration-500 ease-in-out`})})}),(0,S.jsx)(jd,{children:(0,S.jsx)(`p`,{children:e?`Expand tabs`:`Collapse tabs`})})]})}function yRe(e){try{let t=new URL(e).hostname.toLowerCase();return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`0.0.0.0`}catch{return!1}}function bRe(e){try{return new URL(e).hostname.endsWith(`.mcp-use.run`)}catch{return!1}}function xRe(e){if(!e)return null;try{let t=new URL(e);if(t.protocol===`https:`)return t.origin}catch{}return null}var G9={starting:`Starting tunnel…`,stopping:`Stopping tunnel…`,reconnecting:`Reconnecting…`};function SRe({tunnelUrl:e,isTunnelStarting:t,setTunnelUrl:n,setIsTunnelStarting:r,copied:i,setCopied:a,handleCopy:o}){let[s,c]=(0,w.useState)(!1),[l,u]=(0,w.useState)(null),[d,f]=(0,w.useState)(0),[p,m]=(0,w.useState)(G9.starting);(0,w.useEffect)(()=>{if(!t){f(20);return}f(20);let e=setInterval(()=>f(e=>e>0?e-1:0),1e3);return()=>clearInterval(e)},[t]),(0,w.useEffect)(()=>{if(!e)return;c(!0);let t=new URLSearchParams(window.location.search);if(t.has(`openTunnelPopover`)){t.delete(`openTunnelPopover`);let e=t.toString();window.history.replaceState({},``,`${window.location.pathname}${e?`?${e}`:``}`)}},[e]),(0,w.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await fetch(`/inspector/api/dev/info`);if(!t.ok||e)return;let r=await t.json();if(e)return;if(u(!!r.fromCli),r.tunnelUrl)n(new URL(r.tunnelUrl).origin);else{let e=xRe(r.mcpUrl??null);e&&n(e)}}catch{e||u(!1)}})(),()=>{e=!0}},[n]);let h=async e=>{let t=window.location.port||`3000`,i=`http://localhost:${t}/inspector/api/dev/info`,a=Date.now()+9e4;for(m(e?`Restarting with tunnel…`:`Restarting…`),await new Promise(e=>setTimeout(e,1500));Date.now()<a;){try{let r=await fetch(i,{cache:`no-store`});if(r.ok){let i=await r.json();if(!!i.tunnelUrl===e){let r=(i.tunnelUrl||i.mcpUrl||`http://localhost:${t}`).replace(/\/+$/,``)+`/mcp`;i.tunnelUrl?n(new URL(i.tunnelUrl).origin):n(null),sessionStorage.setItem(WM,JSON.stringify({url:r,name:`Local MCP Server`,transportType:`http`,connectionType:`Direct`})),zM.success(e?`Tunnel ready — reconnecting…`:`Tunnel stopped — reconnecting…`),m(G9.reconnecting);let a=new URL(window.location.href);a.searchParams.delete(`server`),a.searchParams.delete(`tunnelUrl`),a.searchParams.delete(`autoConnect`),e&&a.searchParams.set(`openTunnelPopover`,`1`),window.location.assign(a.toString());return}}}catch{}await new Promise(e=>setTimeout(e,1500))}zM.error(`Timeout waiting for server to restart`),r(!1)},g=async()=>{if(l===!1){zM.error("Start Tunnel requires `mcp-use dev` from your project directory.");return}m(G9.starting),r(!0);let e=!1;try{let t=await fetch(`/inspector/api/dev/start-tunnel`,{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({}));zM.error(e.error||`Failed to start tunnel`),r(!1);return}await h(!0),e=!0}catch{zM.error(`Failed to start tunnel`),r(!1)}try{ef.getInstance().capture(new Hd({action:`start`,success:e})).catch(()=>{})}catch{}},_=async()=>{m(G9.stopping),r(!0);let t=!1;try{let e=await fetch(`/inspector/api/dev/stop-tunnel`,{method:`POST`});if(!e.ok){let t=await e.json().catch(()=>({}));zM.error(t.error||`Failed to stop tunnel`),r(!1);return}a(!1),c(!1),await h(!1),t=!0}catch{zM.error(`Failed to stop tunnel`),r(!1)}try{ef.getInstance().capture(new Hd({action:`stop`,success:t,tunnelUrl:e})).catch(()=>{})}catch{}};if(t)return(0,S.jsxs)(`button`,{disabled:!0,className:`flex items-center gap-2 h-9 px-3 bg-violet-50 dark:bg-violet-950/40 border border-violet-200 dark:border-violet-800 rounded-full opacity-75 cursor-wait`,children:[(0,S.jsx)(Zf,{className:`size-4 text-violet-500 dark:text-violet-400 animate-spin`}),(0,S.jsxs)(`span`,{className:`text-sm font-medium text-violet-600 dark:text-violet-300 hidden lg:inline`,children:[`Start Tunnel `,(0,S.jsxs)(`span`,{className:`tabular-nums`,children:[d,`s`]})]})]});if(!e){let e=l===!0,t=l===null;return(0,S.jsxs)(`button`,{type:`button`,onClick:g,disabled:!e||t,title:l===!1?"Run `mcp-use dev` from your project to enable tunneling.":t?`Checking dev server…`:void 0,className:H(`flex items-center gap-2 h-9 px-3 border rounded-full transition-colors`,e&&!t?`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:[t?(0,S.jsx)(Zf,{className:`size-4 text-violet-500 dark:text-violet-400 animate-spin`}):(0,S.jsx)(Cf,{className:`size-4 text-violet-500 dark:text-violet-400`}),(0,S.jsx)(`span`,{className:`text-sm font-medium text-violet-600 dark:text-violet-300 hidden lg:inline`,children:`Start Tunnel`})]})}return(0,S.jsxs)(rY,{open:s,onOpenChange:c,children:[(0,S.jsx)(iY,{asChild:!0,children:(0,S.jsxs)(`button`,{className:`flex items-center gap-2 h-9 px-3 bg-gradient-to-r from-purple-500/10 to-pink-500/10 dark:from-purple-500/20 dark:to-pink-500/20 border border-purple-500/30 dark:border-purple-500/40 rounded-full hover:from-purple-500/20 hover:to-pink-500/20 dark:hover:from-purple-500/30 dark:hover:to-pink-500/30 transition-colors cursor-pointer`,children:[(0,S.jsx)(Cf,{className:`size-4 text-purple-600 dark:text-purple-400`}),(0,S.jsx)(`span`,{className:`text-sm font-medium text-purple-700 dark:text-purple-300 hidden lg:inline`,children:`Tunnel`})]})}),(0,S.jsx)(aY,{className:`w-[calc(100vw-2rem)] sm:w-96 overflow-hidden`,align:`end`,children:(0,S.jsxs)(`div`,{className:`space-y-4`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,S.jsx)(`h4`,{className:`font-semibold text-sm`,children:`Tunnel URL`}),(0,S.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,S.jsx)(ff,{className:`size-3`})]})]}),(0,S.jsxs)(`button`,{onClick:o,className:`-mx-4 px-4 py-3 bg-muted hover:bg-accent transition-colors cursor-pointer flex items-center gap-3 w-[calc(100%+2rem)]`,children:[(0,S.jsxs)(`code`,{className:`flex-1 text-[10px] font-mono truncate text-left`,children:[e,`/mcp`]}),i?(0,S.jsx)(vf,{className:`size-3.5 text-green-600 shrink-0`}):(0,S.jsx)(jf,{className:`size-3.5 shrink-0 text-muted-foreground`})]})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Use in ChatGPT`}),(0,S.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,S.jsxs)(`span`,{children:[`Enable`,` `,(0,S.jsx)(`span`,{className:`font-medium text-foreground`,children:`dev mode`}),` `,`from settings`]})]}),(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,S.jsxs)(`span`,{children:[`In`,` `,(0,S.jsx)(`span`,{className:`font-medium text-foreground`,children:`App & Connectors`}),` `,`click on`,` `,(0,S.jsx)(`span`,{className:`font-medium text-foreground`,children:`create`})]})]}),(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`3.`}),(0,S.jsx)(`span`,{children:`Use the tunnel URL in the input`})]})]})]}),(0,S.jsxs)(`button`,{onClick:_,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,S.jsx)(Ep,{className:`size-3 fill-current`}),`Stop Tunnel`]})]})})]})}function CRe({connections:e,selectedServer:t,activeTab:n,onServerSelect:r,onTabChange:i,onCommandPaletteOpen:a,onOpenConnectionOptions:o,embedded:s=!1}){let{tunnelUrl:c,isTunnelStarting:l,setTunnelUrl:u,setIsTunnelStarting:d,embeddedConfig:f}=Jq(),{theme:p,setTheme:m}=BP(),h=!!t&&(yRe(t.url)||bRe(t.url)||!!c),[g,_]=(0,w.useState)(!1),[v,y]=(0,w.useState)(!1),[b,x]=(0,w.useState)(!1),[C,T]=(0,w.useState)(!0),[E,D]=(0,w.useState)(!1);if(f.singleTab)return null;let O=f.visibleTabs?hRe.filter(e=>e.id===`separator`||f.visibleTabs.includes(e.id)):hRe,k=async()=>{if(c)try{await dj(`${c}/mcp`),_(!0),zM.success(`Tunnel URL copied to clipboard`),setTimeout(()=>_(!1),2e3)}catch{zM.error(`Failed to copy URL`)}};return(0,S.jsxs)(`header`,{className:`w-full mx-auto`,children:[(0,S.jsxs)(`div`,{className:`flex lg:hidden flex-col gap-3`,children:[(0,S.jsxs)(`div`,{className:`flex items-center justify-between w-full`,children:[!s&&(0,S.jsx)(`div`,{className:`flex-1 flex justify-start`,children:(0,S.jsx)(mRe,{connections:e,selectedServer:t,onServerSelect:r,onOpenConnectionOptions:o,mobileMode:!0})}),!s&&(0,S.jsx)(`div`,{className:`flex-shrink-0 flex justify-center`,children:(0,S.jsx)(`div`,{className:`scale-150`,children:(0,S.jsx)(U9,{state:`collapsed`})})}),!s&&(0,S.jsxs)(`div`,{className:`flex-1 flex justify-end items-center gap-2`,children:[t&&(()=>{let e=_j(t);return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(lRe,{serverConfig:{url:c?`${c}/mcp`:t.url,name:e,headers:t.customHeaders,serverId:t.id},onSuccess:e=>zM.success(`Opening in ${e}...`),onError:e=>zM.error(`Failed: ${e.message}`),additionalItems:[{id:`ts-sdk`,label:`TypeScript SDK`,icon:(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/typescript`,alt:`TypeScript`,className:`h-4 w-4`}),onClick:()=>y(!0)},{id:`py-sdk`,label:`Python SDK`,icon:(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/python`,alt:`Python`,className:`h-4 w-4`}),onClick:()=>x(!0)}],trigger:(0,S.jsxs)(U,{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 p-2`,"aria-label":`Add to Client`,children:[(0,S.jsxs)(`span`,{className:`xl:hidden hidden sm:flex items-center gap-1`,children:[(0,S.jsx)(cp,{className:`size-3`}),`Client`]}),(0,S.jsxs)(`span`,{className:`hidden xl:flex items-center gap-1`,children:[`Add to Client`,(0,S.jsx)(yf,{className:`size-3`})]})]})}),(0,S.jsx)(W9,{open:v,onOpenChange:y,serverUrl:c?`${c}/mcp`:t.url,serverName:e,serverId:void 0,headers:t.customHeaders,language:`typescript`}),(0,S.jsx)(W9,{open:b,onOpenChange:x,serverUrl:c?`${c}/mcp`:t.url,serverName:e,serverId:void 0,headers:t.customHeaders,language:`python`})]})})(),h&&(0,S.jsx)(SRe,{tunnelUrl:c,isTunnelStarting:l,setTunnelUrl:u,setIsTunnelStarting:d,copied:g,setCopied:_,handleCopy:k}),(0,S.jsx)(U,{asChild:!0,size:`sm`,className:`rounded-full bg-blue-600 hover:bg-blue-700 text-white px-3`,children:(0,S.jsx)(`a`,{href:E?`https://manufact.com/cloud?ref=mcp-use-inspector`:`https://manufact.com/signup?ref=mcp-use-inspector`,target:`_blank`,rel:`noopener noreferrer`,onClick:()=>{try{ef.getInstance().capture(new Ud({referrer:`mcp-use-inspector`})).catch(()=>{})}catch{}},children:(0,S.jsx)(dp,{className:`size-4`})})}),(0,S.jsxs)(ql,{children:[(0,S.jsx)(Jl,{asChild:!0,children:(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`p-2 hover:bg-zinc-200 dark:hover:bg-zinc-800 rounded-full transition-colors`,"aria-label":`Settings`,children:(0,S.jsx)(_p,{className:`size-4`})})}),(0,S.jsxs)($l,{align:`end`,className:`w-48`,children:[(0,S.jsxs)(Yl,{children:[(0,S.jsxs)(Zl,{children:[p===`light`?(0,S.jsx)(Dp,{className:`size-4 mr-2`}):p===`dark`?(0,S.jsx)(ip,{className:`size-4 mr-2`}):(0,S.jsx)(rp,{className:`size-4 mr-2`}),`Theme`]}),(0,S.jsx)(Ql,{children:(0,S.jsxs)(Xl,{value:p,onValueChange:e=>m(e),children:[(0,S.jsxs)(tu,{value:`light`,children:[(0,S.jsx)(Dp,{className:`size-4 mr-2`}),`Light`]}),(0,S.jsxs)(tu,{value:`dark`,children:[(0,S.jsx)(ip,{className:`size-4 mr-2`}),`Dark`]}),(0,S.jsxs)(tu,{value:`system`,children:[(0,S.jsx)(rp,{className:`size-4 mr-2`}),`System`]})]})})]}),(0,S.jsx)(ru,{}),(0,S.jsx)(eu,{asChild:!0,children:(0,S.jsxs)(`a`,{href:`https://github.com/mcp-use/mcp-use`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,S.jsx)(MLe,{className:`h-4 w-4 mr-2`}),`GitHub`]})}),(0,S.jsx)(eu,{asChild:!0,children:(0,S.jsxs)(`a`,{href:`https://github.com/mcp-use/mcp-use/issues/new?labels=inspector&template=bug_report.md&title=%5BInspector%5D+`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,S.jsx)(_f,{className:`size-4 mr-2`}),`Report a Bug`]})})]})]})]})]}),t&&(0,S.jsx)(`div`,{className:`w-full`,children:(0,S.jsx)(z9,{value:n,onValueChange:e=>i(e),collapsed:C,onCollapsedChange:T,children:(0,S.jsx)(B9,{className:`w-full justify-center`,children:O.map(e=>{if(e.id===`separator`)return(0,S.jsx)(`div`,{className:`h-5 w-px bg-zinc-300 dark:bg-zinc-600 mx-1 shrink-0`},`separator`);let r=gRe(e.id,t),i=_Re(e.id,r,C);return(0,S.jsx)(V9,{value:e.id,"data-testid":`tab-${e.id}`,icon:e.icon,showDot:i,badge:(0,S.jsx)(cRe,{count:r,isActive:n===e.id,size:`sm`}),alwaysExpanded:`alwaysExpanded`in e&&e.alwaysExpanded,className:H(`[&>svg]:mr-0 flex-1 flex-row gap-2 relative`,C&&`pl-2`),children:(0,S.jsx)(`span`,{className:`sr-only`,children:e.label})},e.id)})})})})]}),(0,S.jsxs)(`div`,{className:`hidden lg:flex items-center justify-between gap-3`,children:[(0,S.jsxs)(`div`,{className:`flex items-center flex-wrap gap-2 md:space-x-6 space-x-2`,children:[!s&&(0,S.jsx)(mRe,{connections:e,selectedServer:t,onServerSelect:r,onOpenConnectionOptions:o}),t&&(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(z9,{value:n,onValueChange:e=>i(e),collapsed:C,onCollapsedChange:T,children:(0,S.jsx)(B9,{className:`overflow-x-auto`,collapsible:!0,children:O.map(e=>{if(e.id===`separator`)return(0,S.jsx)(`div`,{className:`h-5 w-px bg-zinc-300 dark:bg-zinc-600 mx-1 shrink-0`},`separator`);let r=gRe(e.id,t),i=r>0?`${e.label} (${r})`:e.label,a=_Re(e.id,r,C);return(0,S.jsx)(V9,{value:e.id,"data-testid":`tab-${e.id}`,icon:e.icon,showDot:a,badge:(0,S.jsx)(cRe,{count:r,isActive:n===e.id}),alwaysExpanded:`alwaysExpanded`in e&&e.alwaysExpanded,className:H(`[&>svg]:mr-0 lg:[&>svg]:mr-2 relative`,C&&`pl-4`),title:i,children:(0,S.jsx)(`span`,{className:`items-center gap-2 hidden lg:flex`,children:e.label})},e.id)})})}),(0,S.jsx)(vRe,{collapsed:C,onToggle:()=>T(!C)})]})]}),!s&&(0,S.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-4 flex-shrink-0`,children:[t&&(()=>{let e=_j(t);return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(lRe,{serverConfig:{url:c?`${c}/mcp`:t.url,name:e,headers:t.customHeaders,serverId:t.id},onSuccess:e=>zM.success(`Opening in ${e}...`),onError:e=>zM.error(`Failed: ${e.message}`),additionalItems:[{id:`ts-sdk`,label:`TypeScript SDK`,icon:(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/typescript`,alt:`TypeScript`,className:`h-4 w-4`}),onClick:()=>y(!0)},{id:`py-sdk`,label:`Python SDK`,icon:(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/python`,alt:`Python`,className:`h-4 w-4`}),onClick:()=>x(!0)}],trigger:(0,S.jsxs)(U,{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,S.jsxs)(`span`,{className:`xl:hidden hidden sm:flex items-center gap-1`,children:[(0,S.jsx)(cp,{className:`size-3`}),`Client`]}),(0,S.jsxs)(`span`,{className:`hidden xl:flex items-center gap-1`,children:[`Add to Client`,(0,S.jsx)(yf,{className:`size-3`})]})]})}),(0,S.jsx)(W9,{open:v,onOpenChange:y,serverUrl:c?`${c}/mcp`:t.url,serverName:e,serverId:void 0,headers:t.customHeaders,language:`typescript`}),(0,S.jsx)(W9,{open:b,onOpenChange:x,serverUrl:c?`${c}/mcp`:t.url,serverName:e,serverId:void 0,headers:t.customHeaders,language:`python`})]})})(),h&&(0,S.jsx)(SRe,{tunnelUrl:c,isTunnelStarting:l,setTunnelUrl:u,setIsTunnelStarting:d,copied:g,setCopied:_,handleCopy:k}),(0,S.jsx)(U,{asChild:!0,className:`rounded-full bg-blue-600 hover:bg-blue-700 text-white px-4`,children:(0,S.jsxs)(`a`,{href:E?`https://manufact.com/cloud?ref=mcp-use-inspector`:`https://manufact.com/signup?ref=mcp-use-inspector`,target:`_blank`,rel:`noopener noreferrer`,onClick:()=>{try{ef.getInstance().capture(new Ud({referrer:`mcp-use-inspector`})).catch(()=>{})}catch{}},children:[(0,S.jsx)(dp,{className:`size-4`}),(0,S.jsx)(`span`,{className:`hidden sm:inline`,children:`Deploy`})]})}),(0,S.jsxs)(ql,{children:[(0,S.jsx)(Jl,{asChild:!0,children:(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`p-2 hover:bg-zinc-200 dark:hover:bg-zinc-800 rounded-full transition-colors`,"aria-label":`Settings`,children:(0,S.jsx)(_p,{className:`size-4`})})}),(0,S.jsxs)($l,{align:`end`,className:`w-48`,children:[(0,S.jsxs)(eu,{onClick:a,"data-testid":`command-palette-trigger-button`,children:[(0,S.jsx)(Af,{className:`size-4 mr-2`}),`Command Palette`,(0,S.jsxs)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:[`⌘`,`K`]})]}),(0,S.jsxs)(Yl,{children:[(0,S.jsxs)(Zl,{children:[p===`light`?(0,S.jsx)(Dp,{className:`size-4 mr-2`}):p===`dark`?(0,S.jsx)(ip,{className:`size-4 mr-2`}):(0,S.jsx)(rp,{className:`size-4 mr-2`}),`Theme`]}),(0,S.jsx)(Ql,{children:(0,S.jsxs)(Xl,{value:p,onValueChange:e=>m(e),children:[(0,S.jsxs)(tu,{value:`light`,children:[(0,S.jsx)(Dp,{className:`size-4 mr-2`}),`Light`]}),(0,S.jsxs)(tu,{value:`dark`,children:[(0,S.jsx)(ip,{className:`size-4 mr-2`}),`Dark`]}),(0,S.jsxs)(tu,{value:`system`,children:[(0,S.jsx)(rp,{className:`size-4 mr-2`}),`System`]})]})})]}),(0,S.jsx)(ru,{}),(0,S.jsx)(eu,{asChild:!0,children:(0,S.jsxs)(`a`,{href:`https://github.com/mcp-use/mcp-use`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,S.jsx)(MLe,{className:`h-4 w-4 mr-2`}),`GitHub`]})}),(0,S.jsx)(eu,{asChild:!0,children:(0,S.jsxs)(`a`,{href:`https://github.com/mcp-use/mcp-use/issues/new?labels=inspector&template=bug_report.md&title=%5BInspector%5D+`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,S.jsx)(_f,{className:`size-4 mr-2`}),`Report a Bug`]})})]})]}),f.chatApiUrl?(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(sRe,{chatApiUrl:f.chatApiUrl,onUserResolved:e=>D(!!e),fallback:(0,S.jsx)(`span`,{className:`[@media(min-width:1400px)]:hidden`,children:(0,S.jsx)(U9,{state:`expanded`})})}),(0,S.jsx)(`span`,{className:`hidden [@media(min-width:1400px)]:block`,children:(0,S.jsx)(U9,{state:`expanded`})})]}):(0,S.jsx)(U9,{state:`expanded`})]})]})]})}function wRe({children:e}){let t=tM(),n=Qj(),{servers:r,addServer:i,removeServer:a,updateServerMetadata:o,updateServer:s,storageLoaded:c}=uj(),l=(0,w.useCallback)((e,t,n,r,a)=>{i(e,{url:e,name:t,proxyConfig:n,transportType:r,preventAutoAuth:!0,useRedirectFlow:!0,clientOptions:{capabilities:{extensions:{"io.modelcontextprotocol/ui":{mimeTypes:[`text/html;profile=mcp-app`]}}}},...a?{oauth:a}:{}})},[i]),u=(0,w.useCallback)(async(e,t)=>{try{await s(e,t)}catch(t){console.error(`[Layout] Failed to update connection ${e}:`,t)}},[s]),d=(0,w.useCallback)(async(e,t)=>{try{await o(e,t)}catch(t){console.error(`[Layout] Failed to update connection metadata for ${e}:`,t)}},[o]),{selectedServerId:f,setSelectedServerId:p,activeTab:m,setActiveTab:h,navigateToItem:g,setTunnelUrl:_,tunnelUrl:v,isEmbedded:y,embeddedConfig:b,setEmbeddedMode:x}=Jq(),[C,T]=(0,w.useState)(!1),[E,D]=(0,w.useState)(null),O=Pwe();(0,w.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)}x(!0,e),e.defaultTab&&h(e.defaultTab)}},[]),(0,w.useEffect)(()=>{_(new URLSearchParams(n.search).get(`tunnelUrl`))},[n.search,_]),(0,w.useEffect)(()=>{let e=new URLSearchParams(n.search).get(`tab`);e&&[`tools`,`prompts`,`resources`,`chat`,`sampling`,`elicitation`,`notifications`].includes(e)&&h(e)},[n.search,h]);let k=(0,w.useRef)(null),A=(0,w.useRef)(Date.now()),j=(0,w.useRef)(new Set),M=(0,w.useRef)(0);(0,w.useEffect)(()=>{let e=()=>{M.current++};return window.addEventListener(`mcp-tool-executed`,e),()=>window.removeEventListener(`mcp-tool-executed`,e)},[]),(0,w.useEffect)(()=>{let e=()=>{try{let e=Math.round((Date.now()-A.current)/1e3);ef.getInstance().capture(new qd({durationSeconds:e,tabsVisited:j.current.size,toolsExecuted:M.current})).catch(()=>{})}catch{}};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[]);let N=(0,w.useCallback)(e=>{try{ef.getInstance().capture(new Gd({tab:e,previousTab:k.current})).catch(()=>{})}catch{}k.current=e,j.current.add(e),h(e);let r=new URLSearchParams(n.search);r.set(`tab`,e),t(`/?${r.toString()}`,{replace:!0})},[h,t,n.search]);(0,w.useEffect)(()=>{let e=e=>{let t=e.detail.requestId;f&&g(f,`sampling`,t)},t=e=>{let t=e.detail.requestId;f&&g(f,`elicitation`,t)},n=e=>{let t=e.detail.toolName;f&&t?g(f,`tools`,t):f&&N(`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)}},[f,N,g]);let P=(0,w.useRef)(null),F=(0,w.useRef)(null),I=(0,w.useRef)(null),{isAutoConnecting:L}=xhe({connections:r,addConnection:l,removeConnection:a,configLoaded:c,embedded:y}),ee=(0,w.useCallback)(e=>{ef.getInstance().capture(new Bd({trigger:e})).catch(()=>{}),T(!0)},[]),te=e=>{let i=r.find(t=>t.id===e);if(!i||i.state!==`ready`){zM.error(`Server is not connected and cannot be inspected`);return}p(e);let a=new URLSearchParams(n.search),o=a.get(`tunnelUrl`),s=a.get(`tab`),c=new URLSearchParams;c.set(`server`,e),o&&c.set(`tunnelUrl`,o),s&&c.set(`tab`,s),t(`/?${c.toString()}`)},ne=(0,w.useCallback)(e=>{D(e)},[]),re=(0,w.useCallback)(e=>{if(!E)return;let t=pj(E)||r.find(e=>e.id===E);e.url===E?t&&hj(t,e)?d(E,{name:e.name||e.url}):u(E,{name:e.name,proxyConfig:e.proxyConfig,transportType:e.transportType,oauth:e.oauth}):(a(E),l(e.url,e.name,e.proxyConfig,e.transportType,e.oauth)),D(null),zM.success(`Connection settings updated`)},[E,r,a,l,d,u]),R=(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`),zM.error(`Server is not connected and cannot be inspected`);return}console.warn(`[Layout] Calling navigateToItem:`,{serverId:a,tab:e,itemName:i}),g(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),N(e)},z=r.find(e=>e.id===f),B=z?z.tools.map(e=>({...e,_serverId:z.id})):r.flatMap(e=>e.state===`ready`?e.tools.map(t=>({...t,_serverId:e.id,_serverName:e.name})):[]),ie=z?z.prompts.map(e=>({...e,_serverId:z.id})):r.flatMap(e=>e.state===`ready`?e.prompts.map(t=>({...t,_serverId:e.id,_serverName:e.name})):[]),ae=z?z.resources.map(e=>({...e,_serverId:z.id})):r.flatMap(e=>e.state===`ready`?e.resources.map(t=>({...t,_serverId:e.id,_serverName:e.name})):[]);(0,w.useEffect)(()=>{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!==f&&p(i)},[n.search,f,p,r,t]),(0,w.useEffect)(()=>{let e=new URLSearchParams(n.search).get(`server`);if(!e)return;let i=r.find(t=>t.id===e);if(!i){let e=setTimeout(()=>t(`/`),3e3);return()=>clearTimeout(e)}if(i.state===`failed`){let e=setTimeout(()=>t(`/`),2e3);return()=>clearTimeout(e)}},[n.search,t,r]),(0,w.useEffect)(()=>{if(!y)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,i=e.name??`Server`,a=e.transportType??`http`,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={proxyAddress:`${window.location.origin}/inspector/api/proxy`,...Object.keys(o).length>0&&{headers:o}};r.find(e=>e.url===t)||l(t,i,s,a),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)},[y,r,l]);let oe=(0,w.useRef)(!1);if((0,w.useEffect)(()=>{if(!y||oe.current||f)return;let e=r.find(e=>e.state===`ready`);if(e){oe.current=!0,p(e.id);let r=new URLSearchParams(n.search);r.set(`server`,e.id),t(`/?${r.toString()}`,{replace:!0})}},[y,r,f,p,t,n.search]),Yq({onCommandPalette:()=>ee(`keyboard`),onToolsTab:()=>{z&&N(`tools`)},onPromptsTab:()=>{z&&N(`prompts`)},onResourcesTab:()=>{z&&N(`resources`)},onChatTab:()=>{z&&N(`chat`)},onHome:()=>{t(`/`)},onFocusSearch:()=>{m===`tools`&&P.current?P.current.focusSearch():m===`prompts`&&F.current?F.current.focusSearch():m===`resources`&&I.current&&I.current.focusSearch()},onBlurSearch:()=>{m===`tools`&&P.current?P.current.blurSearch():m===`prompts`&&F.current?F.current.blurSearch():m===`resources`&&I.current&&I.current.blurSearch()}}),L)return(0,S.jsx)(`div`,{className:`h-screen bg-white dark:bg-zinc-900 flex items-center justify-center`,children:(0,S.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,S.jsx)(Wq,{className:`h-8 w-8 text-zinc-600 dark:text-zinc-400`}),(0,S.jsx)(`p`,{className:`text-sm text-zinc-600 dark:text-zinc-400`,children:`Connecting to MCP server...`})]})});let se=y&&b.singleTab,ce=y?{backgroundColor:b.backgroundColor||`#f3f3f3`,padding:se?`0`:b.padding||`0.5rem`}:{};return(0,S.jsx)(Od,{children:(0,S.jsxs)(`div`,{className:y?se?`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 px-2 py-2 sm:px-4 sm:py-4 gap-2 sm:gap-4`,style:ce,children:[!se&&(0,S.jsx)(CRe,{connections:r,selectedServer:z,activeTab:m,onServerSelect:te,onTabChange:N,onCommandPaletteOpen:()=>ee(`button`),onOpenConnectionOptions:ne,embedded:y}),(0,S.jsx)(`main`,{className:se?`flex-1 w-full bg-white dark:bg-black p-0 overflow-auto`:`flex-1 w-full mx-auto bg-white dark:bg-black rounded-2xl border border-zinc-200 dark:border-zinc-700 p-0 overflow-auto`,children:(0,S.jsx)(jLe,{selectedServer:z,activeTab:m,toolsSearchRef:P,promptsSearchRef:F,resourcesSearchRef:I,children:e})}),(0,S.jsx)(fTe,{isOpen:C,onOpenChange:T,tools:B,prompts:ie,resources:ae,savedRequests:O,connections:r,selectedServer:z,tunnelUrl:v,onNavigate:R,onServerSelect:te}),(0,S.jsx)(GV,{connection:E&&r.find(e=>e.id===E)||null,open:E!==null,onOpenChange:e=>{e||D(null)},onConnect:re})]})})}function K9(e){let t=a(()=>{throw Error(`Invalid url to pass to open(): ${e}`)},`abort`),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(TRe).join(`&`),n.hash=n.hash.slice(0,1)+encodeURIComponent(n.hash.slice(1)),n.href}a(K9,`sanitizeUrl`);function TRe([e,t]){return`${encodeURIComponent(e)}${t.length>0?`=${encodeURIComponent(t)}`:``}`}a(TRe,`sanitizeParam`);var ERe=class e{static{a(this,`OAuthSessionStore`)}serverUrl;storageKeyPrefix;serverUrlHash;clientName;clientUri;logoUri;callbackUrl;scope;store;_cachedAuthServerUrl=null;_cachedMetadata=null;_refreshPromise=null;constructor(t,n,r){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:``),this.logoUri=n.logoUri||`https://mcp-use.com/logo.png`,this.callbackUrl=K9(n.callbackUrl||(typeof window<`u`?new URL(`/oauth/callback`,window.location.origin).toString():`/oauth/callback`)),this.scope=n.scope,this.store=r}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}:{}}}async tokens(){let e=this.getKey(`tokens`),t=await this.store.get(e);if(t)try{let e=JSON.parse(t);if(e.access_token&&e.refresh_token)try{let t=JSON.parse(atob(e.access_token.split(`.`)[1]));if(t.exp&&Date.now()>=(t.exp-30)*1e3){console.log(`[tokens] Access token expiring soon, refreshing...`);let t=await this._dedupedRefresh(e);if(t)return console.log(`[tokens] Refreshed successfully`),t}}catch{}return e}catch(t){console.warn(`[${this.storageKeyPrefix}] Failed to parse tokens:`,t),await this.store.remove(e);return}}async saveTokens(e){await this.store.set(this.getKey(`tokens`),JSON.stringify(e)),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`))}async clientInformation(){let e=this.getKey(`client_info`),t=await this.store.get(e);if(t)try{let n=JSON.parse(t),r=Array.isArray(n.redirect_uris)?n.redirect_uris:[];if(!(r.length===0||r.includes(this.redirectUrl))){console.info(`[${this.storageKeyPrefix}] Invalidating cached OAuth client info due to redirect URI mismatch.`),await this.store.remove(e),await this.store.remove(this.getKey(`tokens`)),await this.store.remove(this.getKey(`last_auth_url`));return}return n}catch(t){console.warn(`[${this.storageKeyPrefix}] Failed to parse client information:`,t),await this.store.remove(e);return}}async saveClientInformation(e){let t=this.getKey(`client_info`);await this.store.set(t,JSON.stringify(e))}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){switch(e){case`all`:await this.store.remove(this.getKey(`tokens`)),await this.store.remove(this.getKey(`client_info`)),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`));break;case`client`:await this.store.remove(this.getKey(`client_info`));break;case`tokens`:await this.store.remove(this.getKey(`tokens`));break;case`verifier`:await this.store.remove(this.getKey(`code_verifier`));break;default:break}}async storeAuthorizationState(e,t={}){let n=globalThis.crypto.randomUUID(),r=`${this.storageKeyPrefix}:state_${n}`,i=await this.store.get(this.getKey(`code_verifier`)),a={serverUrlHash:this.serverUrlHash,expiry:Date.now()+1e3*60*10,codeVerifier:i||void 0,providerOptions:{serverUrl:this.serverUrl,storageKeyPrefix:this.storageKeyPrefix,clientName:this.clientName,clientUri:this.clientUri,callbackUrl:this.callbackUrl,...t.extraProviderOptions??{}},flowType:t.flowType,returnUrl:t.returnUrl};e.searchParams.set(`state`,n);let o=K9(e.toString());return await this.store.set(r,JSON.stringify(a)),await this.store.set(this.getKey(`last_auth_url`),o),o}async _refresh(e){try{if(!this._cachedAuthServerUrl||!this._cachedMetadata){let e=(await yk(this.serverUrl)).authorization_servers?.[0];if(!e)return null;let t=await xk(e);if(!t)return null;this._cachedAuthServerUrl=e,this._cachedMetadata=t}let t=await this.clientInformation();if(!t)return null;let n=await Sk(this._cachedAuthServerUrl,{metadata:this._cachedMetadata,clientInformation:t,refreshToken:e.refresh_token});return await this.saveTokens(n),n}catch{return null}}async _dedupedRefresh(e){if(this._refreshPromise)return this._refreshPromise;this._refreshPromise=this._refresh(e);try{return await this._refreshPromise}finally{this._refreshPromise=null}}async forceRefresh(){let e=await this.store.get(this.getKey(`tokens`));if(!e)return null;let t;try{t=JSON.parse(e)}catch{return null}return t.refresh_token?this._dedupedRefresh(t):null}},DRe=class{static{a(this,`LocalStorageKVStore`)}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}};async function ORe(e){return typeof e==`string`?e:e instanceof URLSearchParams||e instanceof FormData?Object.fromEntries(e.entries()):e instanceof Blob?await e.text():e}a(ORe,`serializeBody`);var kRe=class{static{a(this,`BrowserOAuthClientProvider`)}serverUrl;staticClientInfo;session;preventAutoAuth;useRedirectFlow;oauthProxyUrl;connectionUrl;originalFetch;_lastOriginalResource=null;onPopupWindow;constructor(e,t={}){this.serverUrl=e,this.session=new ERe(e,t,new DRe),this.preventAutoAuth=t.preventAutoAuth,this.useRedirectFlow=t.useRedirectFlow,this.oauthProxyUrl=t.oauthProxyUrl,this.connectionUrl=t.connectionUrl,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}getKey(e){return this.session.getKey(e)}installFetchInterceptor(){if(!this.oauthProxyUrl){console.warn(`[BrowserOAuthProvider] No OAuth proxy URL configured, skipping fetch interceptor installation`);return}if(!this.originalFetch)this.originalFetch=window.fetch;else{console.warn(`[BrowserOAuthProvider] Fetch interceptor already installed`);return}let e=this.oauthProxyUrl,t=this.connectionUrl,n=this.serverUrl,r=this.originalFetch;console.log(`[BrowserOAuthProvider] Installing fetch interceptor with proxy: ${e}`),window.fetch=async(i,a)=>{let o=typeof i==`string`?i:i instanceof URL?i.toString():i.url;if(!(o.includes(`/.well-known/`)||o.match(/\/(register|token|authorize)$/)))return await r(i,a);try{let t=new URL(o),n=new URL(e);if(t.origin===n.origin&&(t.pathname.startsWith(n.pathname)||o.includes(`/inspector/api/oauth`)))return await r(i,a)}catch{}try{let i=o.includes(`/.well-known/`),s=i?`${e}/metadata?url=${encodeURIComponent(o)}`:`${e}/proxy`;if(console.log(`[OAuth Proxy] Routing ${i?`metadata`:`request`} through: ${s}`),i){let e={...a?.headers?Object.fromEntries(new Headers(a.headers)):{}};t&&(e[`X-Connection-URL`]=t);let i=new URL(s);n&&i.searchParams.set(`mcp_url`,n);let o=await r(i.toString(),{...a,method:`GET`,headers:e});try{if((o.headers.get(`content-type`)||``).includes(`application/json`)){let e=await o.clone().json(),t=e&&typeof e==`object`&&typeof e._original_resource==`string`?e._original_resource:null;t&&(this._lastOriginalResource=t)}}catch{}return o}let c=a?.body?await ORe(a.body):void 0,l=await(await r(s,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:o,method:a?.method||`POST`,headers:a?.headers?Object.fromEntries(new Headers(a.headers)):{},body:c})})).json();return new Response(JSON.stringify(l.body),{status:l.status,statusText:l.statusText,headers:new Headers(l.headers)})}catch(e){return console.error(`[OAuth Proxy] Request failed, falling back to direct fetch:`,e),await r(i,a)}}}restoreFetch(){this.originalFetch&&=(console.log(`[BrowserOAuthProvider] Restoring original fetch`),window.fetch=this.originalFetch,void 0)}get redirectUrl(){return this.session.redirectUrl}get clientMetadata(){return this.session.clientMetadata}tokens(){return this.session.tokens()}saveTokens(e){return this.session.saveTokens(e)}async clientInformation(){return this.staticClientInfo?this.staticClientInfo:this.session.clientInformation()}async saveClientInformation(e){if(!this.staticClientInfo)return this.session.saveClientInformation(e)}codeVerifier(){return this.session.codeVerifier()}saveCodeVerifier(e){return this.session.saveCodeVerifier(e)}invalidateCredentials(e){return this.session.invalidateCredentials(e)}async prepareAuthorizationUrl(e){return this.rewriteResourceIfLocalProxy(e),this.session.storeAuthorizationState(e,{extraProviderOptions:{oauthProxyUrl:this.oauthProxyUrl,connectionUrl:this.connectionUrl,...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)}}rewriteResourceIfLocalProxy(e){let t=e.searchParams.get(`resource`),n=!!(t&&(t.includes(`/inspector/api/proxy`)||t.includes(`/api/proxy`)||t.includes(`localhost:3000`))),r=!!(t&&this.connectionUrl&&t===this.connectionUrl),i=!!(t&&(this._lastOriginalResource||this.serverUrl)&&(r||n)),a=this._lastOriginalResource||this.serverUrl;i&&a&&e.searchParams.set(`resource`,a)}getLastAttemptedAuthUrl(){let e=localStorage.getItem(this.getKey(`last_auth_url`));return e?K9(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}},ARe=`mcp_auth_callback`,jRe=`mcp_auth_callback`;function q9(e){try{return typeof localStorage<`u`&&!!localStorage.getItem(e)}catch{return!1}}a(q9,`hasStoredTokens`);function MRe({popup:e,state:t,tokensKey:n,timeoutMs:r=5*6e4,closePollMs:i=1e3,closeGraceMs:o=2e4,expectedOrigin:s=typeof window<`u`?window.location.origin:``}){return new Promise(c=>{let l=!1,u=null,d=null,f=null,p=null,m=a(()=>{if(u&&=(clearInterval(u),null),d&&=(clearTimeout(d),null),f&&=(clearTimeout(f),null),typeof window<`u`&&(window.removeEventListener(`message`,_),window.removeEventListener(`storage`,y)),p){try{p.removeEventListener(`message`,v),p.close()}catch{}p=null}},`cleanup`),h=a(e=>{l||(l=!0,m(),c(e))},`settle`),g=a(e=>{!e||e.type!==`mcp_auth_callback`||e.state&&t&&e.state!==t||(e.success?h({kind:`success`}):h({kind:`error`,error:e.error??`Authentication failed in callback.`}))},`handlePayload`),_=a(e=>{s&&e.origin!==s||g(e.data)},`messageHandler`),v=a(e=>{g(e.data)},`broadcastHandler`),y=a(e=>{e.key===n&&e.newValue&&h({kind:`success`})},`storageHandler`);if(typeof window<`u`&&(window.addEventListener(`message`,_),window.addEventListener(`storage`,y)),typeof BroadcastChannel<`u`)try{p=new BroadcastChannel(ARe),p.addEventListener(`message`,v)}catch{p=null}e&&(u=setInterval(()=>{if(l)return;let t=!1;try{t=e.closed}catch{t=!1}if(t){if(u&&=(clearInterval(u),null),q9(n)){h({kind:`success`});return}f=setTimeout(()=>{h(q9(n)?{kind:`success`}:{kind:`cancelled`})},o)}},i)),d=setTimeout(()=>{h(q9(n)?{kind:`success`}:{kind:`timeout`})},r)})}a(MRe,`runAuthPopup`);var J9=null;function Y9(){if(typeof window>`u`)return!1;let e=window.name;return typeof e==`string`&&e.startsWith(`mcp_auth_`)}a(Y9,`isMcpAuthPopupWindow`);function X9(e,t,n){return{type:jRe,success:e,...e?{}:{error:t??`Unknown error`},...n?.state?{state:n.state}:{},...n?.serverUrlHash?{serverUrlHash:n.serverUrlHash}:{}}}a(X9,`buildCallbackPayload`);function Z9(e,t,n){if(typeof BroadcastChannel>`u`)return;let r=null;try{r=new BroadcastChannel(ARe),r.postMessage(X9(e,t,n))}catch(e){console.warn(`[mcp-callback] Failed to broadcast auth callback over BroadcastChannel:`,e)}finally{r&&setTimeout(()=>{try{r?.close()}catch{}},0)}}a(Z9,`broadcastAuthCallback`);function Q9(e,t,n=`success`,r){if(!(typeof document>`u`))try{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`);n===`error`&&(o.style.color=`red`,o.style.backgroundColor=`#ffebeb`,o.style.border=`1px solid red`,o.style.padding=`10px`,o.style.borderRadius=`4px`),o.textContent=t,i.appendChild(o);let s=document.createElement(`p`);s.textContent=`You can close this window or `;let c=document.createElement(`a`);if(c.href=`#`,c.textContent=`click here to close`,c.onclick=e=>(e.preventDefault(),window.close(),!1),s.appendChild(c),s.appendChild(document.createTextNode(`.`)),i.appendChild(s),r){let e=document.createElement(`p`),t=document.createElement(`a`);t.href=r,t.textContent=`Return to the app`,e.appendChild(t),i.appendChild(e)}document.body.appendChild(i)}catch{}}a(Q9,`renderCloseWindowMessage`);function NRe(){return J9||(J9=PRe(),J9)}a(NRe,`onMcpAuthorization`);async function PRe(){let e=new URLSearchParams(window.location.search),t=e.get(`code`),n=e.get(`state`),r=e.get(`error`),i=e.get(`error_description`),o=`[mcp-callback]`;console.log(`${o} Handling callback...`,{code:t,state:n,error:r,errorDescription:i});let s=null,c=null,l=null;try{if(!n)throw Error(`State parameter not found or invalid in callback query parameters.`);console.log(`[mcp-callback] Looking for state: ${n}`),console.log(`[mcp-callback] All localStorage keys:`,Object.keys(localStorage));let e=`mcp:auth:state_${n}`;if(localStorage.getItem(e))l=e,console.log(`[mcp-callback] Found state with default key: ${e}`);else{let e=`:state_${n}`;for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);if(n&&n.endsWith(e)){l=n,console.log(`[mcp-callback] Found state with dynamic key: ${n}`);break}}}if(!l){let e=Object.keys(localStorage).filter(e=>e.includes(`state`));throw console.log(`[mcp-callback] State keys in storage:`,e),Error(`Invalid or expired state parameter "${n}". No matching state found in storage.`)}let u=localStorage.getItem(l);if(!u)throw Error(`Invalid or expired state parameter "${n}". No matching state found in storage.`);try{c=JSON.parse(u)}catch{throw Error(`Failed to parse stored OAuth state.`)}if(!c.expiry||c.expiry<Date.now())throw localStorage.removeItem(l),Error(`OAuth state has expired. Please try initiating authentication again.`);let d={state:n,serverUrlHash:c.serverUrlHash};if(r){console.log(`${o} OAuth error received: ${r} - ${i||`No description`}`);let e=c.flowType===`redirect`,t=window.opener&&!window.opener.closed,n=Y9()||c.flowType===`popup`,s=a(e=>{console.log(`${o} Returning to: ${e}`),localStorage.removeItem(l);let t=new URL(e);t.searchParams.set(`auth_error`,r),i&&t.searchParams.set(`auth_error_description`,i),window.location.href=t.toString()},`redirectWithError`);if(t){window.opener.postMessage(X9(!1,`${r}${i?`: ${i}`:``}`,d),window.location.origin),localStorage.removeItem(l),window.close();return}if(c.returnUrl&&(e||!n)){s(c.returnUrl);return}if(n){Z9(!1,`${r}${i?`: ${i}`:``}`,d),localStorage.removeItem(l),Q9(`Authentication Error`,`${r}${i?`: ${i}`:``}`,`error`,c.returnUrl);try{window.close()}catch{}return}throw Error(`OAuth error: ${r}${i?` - ${i}`:``}`)}if(!t)throw Error(`Authorization code not found in callback query parameters.`);if(!c.providerOptions)throw Error(`Stored state is missing required provider options.`);let{serverUrl:f,...p}=c.providerOptions,m=p.connectionUrl,h=!!(m&&/run\.mcp-use\.com|mcp-use\.run/.test(m)),g=h?m:void 0,_=p.oauthProxyUrl,v=g;if(!_&&v)try{let e=new URL(window.location.href);if(e.pathname.includes(`/oauth/callback`)){let t=e.pathname.replace(/\/oauth\/callback.*$/,``);(!t||t===``)&&(/run\.mcp-use\.com|mcp-use\.run/.test(v)?console.log(`${o} Gateway connection detected; skipping default /inspector OAuth proxy inference`):(t=`/inspector`,console.log(`${o} Callback at root /oauth/callback, using /inspector as base path for OAuth proxy`))),t&&(_=`${e.origin}${t}/api/oauth`),console.log(`${o} Inferred OAuth proxy URL from callback: ${_}`)}}catch(e){console.warn(`${o} Could not infer OAuth proxy URL:`,e)}console.log(`${o} Re-instantiating provider for server: ${f}`),s=new kRe(f,{...p,oauthProxyUrl:_,connectionUrl:v});let y=`${p.storageKeyPrefix}_${c.serverUrlHash}_code_verifier`,b=c.codeVerifier||localStorage.getItem(y);if(b)localStorage.setItem(y,b),localStorage.setItem(s.getKey(`code_verifier`),b);else throw Error(`[${p.storageKeyPrefix}] Code verifier missing for OAuth state ${n}. Please restart authentication.`);_&&(console.log(`${o} Installing fetch interceptor for token exchange (proxy: ${_})`),s.installFetchInterceptor()),console.log(`${o} Calling SDK auth() to exchange code...`);let x=h&&v?v:f;console.log(`${o} Using SDK serverUrl: ${x} (connectionUrl: ${v||`none`})`);let S=await hk(s,{serverUrl:x,authorizationCode:t});if(S===`AUTHORIZED`){console.log(`${o} Authorization successful via SDK auth().`);let e=c.flowType===`redirect`,t=Y9()||c.flowType===`popup`;if(e&&c.returnUrl)console.log(`${o} Redirect flow complete. Returning to: ${c.returnUrl}`),localStorage.removeItem(l),window.location.href=c.returnUrl;else if(window.opener&&!window.opener.closed)console.log(`${o} Popup flow complete. Notifying opener...`),window.opener.postMessage(X9(!0,void 0,d),window.location.origin),localStorage.removeItem(l),window.close();else if(t){console.log(`${o} Popup flow complete but opener was lost; broadcasting success and rendering close-window message.`),Z9(!0,void 0,d),localStorage.removeItem(l),Q9(`Authentication Successful!`,`You're authenticated. You can close this window and return to the app.`,`success`,c.returnUrl);try{window.close()}catch{}}else if(c.returnUrl)console.log(`${o} Popup flow without opener (top-level nav). Returning to: ${c.returnUrl}`),localStorage.removeItem(l),window.location.href=c.returnUrl;else{console.warn(`${o} No opener window or return URL detected. Redirecting to root.`),localStorage.removeItem(l);let e=window.location.pathname.split(`/`).filter(Boolean),t=e.length>0&&e[e.length-1]===`callback`?`/`+e.slice(0,-2).join(`/`):`/`;window.location.href=t||`/`}}else throw console.warn(`${o} SDK auth() returned unexpected status: ${S}`),Error(`Unexpected result from authentication library: ${S}`)}catch(e){console.error(`${o} Error during OAuth callback handling:`,e);let t=e instanceof Error?e.message:String(e),r={state:n,serverUrlHash:c?.serverUrlHash};window.opener&&!window.opener.closed?window.opener.postMessage(X9(!1,t,r),window.location.origin):(Y9()||c?.flowType===`popup`)&&Z9(!1,t,r);try{document.body.innerHTML=``;let n=document.createElement(`div`);n.style.fontFamily=`sans-serif`,n.style.padding=`20px`;let r=document.createElement(`h1`);r.textContent=`Authentication Error`,n.appendChild(r);let i=document.createElement(`p`);i.style.color=`red`,i.style.backgroundColor=`#ffebeb`,i.style.border=`1px solid red`,i.style.padding=`10px`,i.style.borderRadius=`4px`,i.textContent=t,n.appendChild(i);let a=document.createElement(`p`);a.textContent=`You can close this window or `;let o=document.createElement(`a`);if(o.href=`#`,o.textContent=`click here to close`,o.onclick=e=>(e.preventDefault(),window.close(),!1),a.appendChild(o),a.appendChild(document.createTextNode(`.`)),n.appendChild(a),e instanceof Error&&e.stack){let t=document.createElement(`pre`);t.style.fontSize=`0.8em`,t.style.color=`#555`,t.style.marginTop=`20px`,t.style.whiteSpace=`pre-wrap`,t.textContent=e.stack,n.appendChild(t)}document.body.appendChild(n)}catch(e){console.error(`${o} Could not display error in callback window:`,e)}l&&localStorage.removeItem(l),s&&localStorage.removeItem(s.getKey(`last_auth_url`))}}a(PRe,`doOnMcpAuthorization`);async function FRe(e,t=fetch){let n=e.replace(/\/$/,``),r=await t(n.endsWith(`/mcp`)?n:`${n}/mcp`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({jsonrpc:`2.0`,method:`initialize`,id:1,params:{}})});if(r.status!==401)return{};let{resourceMetadataUrl:i,scope:a}=_k(r);return{resourceMetadataUrl:i,scope:a}}a(FRe,`probeAuthParams`);function IRe(){let[e,t]=(0,w.useState)(`processing`),[n,r]=(0,w.useState)(``);return(0,w.useEffect)(()=>{console.log(`[OAuthCallback] Component mounted, handling authorization...`),console.log(`[OAuthCallback] Current URL:`,window.location.href),NRe().then(()=>{console.log(`[OAuthCallback] Authorization successful`),t(`success`)}).catch(e=>{console.error(`[OAuthCallback] Authorization failed:`,e),t(`error`),r(e instanceof Error?e.message:String(e))})},[]),e===`processing`?(0,S.jsx)(`div`,{className:`h-screen w-full flex items-center justify-center bg-white dark:bg-zinc-900`,children:(0,S.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,S.jsx)(Zf,{className:`h-8 w-8 animate-spin text-zinc-600 dark:text-zinc-400`}),(0,S.jsx)(`p`,{className:`text-sm text-zinc-600 dark:text-zinc-400`,children:`Completing authentication...`})]})}):e===`error`?(0,S.jsx)(`div`,{className:`h-screen w-full flex items-center justify-center bg-white dark:bg-zinc-900`,children:(0,S.jsxs)(`div`,{className:`max-w-md p-6`,children:[(0,S.jsx)(`h1`,{className:`text-xl font-semibold text-red-600 dark:text-red-400 mb-2`,children:`Authentication Error`}),(0,S.jsx)(`p`,{className:`text-sm text-zinc-600 dark:text-zinc-400 mb-4`,children:n}),(0,S.jsx)(`p`,{className:`text-xs text-zinc-500 dark:text-zinc-500`,children:`You can close this window and try again.`})]})}):(0,S.jsx)(`div`,{className:`h-screen w-full flex items-center justify-center bg-white dark:bg-zinc-900`,children:(0,S.jsxs)(`div`,{className:`max-w-md p-6`,children:[(0,S.jsx)(`h1`,{className:`text-xl font-semibold text-green-600 dark:text-green-400 mb-2`,children:`Authentication Successful!`}),(0,S.jsx)(`p`,{className:`text-sm text-zinc-600 dark:text-zinc-400`,children:`Redirecting you back...`})]})})}var LRe={model:`stub-model`,stopReason:`endTurn`,role:`assistant`,content:{type:`text`,text:`positive`}};function RRe({requestId:e,serverName:t,onViewDetails:n,onApprove:r,onDeny:i}){return(0,S.jsxs)(`div`,{className:`space-y-3`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`strong`,{children:`Sampling Request Received`}),(0,S.jsxs)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:[`New request from `,t]})]}),(0,S.jsxs)(`div`,{className:`flex gap-2`,children:[(0,S.jsx)(`button`,{"data-testid":`sampling-toast-view-details`,className:`px-3 py-1.5 text-xs font-medium rounded-md hover:bg-accent hover:text-accent-foreground`,onClick:e=>{e.stopPropagation(),n()},children:`View Details`}),(0,S.jsx)(`button`,{"data-testid":`sampling-toast-approve`,className:`px-3 py-1.5 text-xs font-medium rounded-md hover:bg-accent hover:text-accent-foreground`,onClick:e=>{e.stopPropagation(),r(LRe)},children:`Approve`}),(0,S.jsx)(`button`,{"data-testid":`sampling-toast-deny`,className:`px-3 py-1.5 text-xs font-medium rounded-md hover:bg-accent hover:text-accent-foreground`,onClick:e=>{e.stopPropagation(),i()},children:`Deny`})]})]})}var $9=`preview-default`,zRe=`preview-bundle`;function BRe(e){if(!e)return{};try{let t=atob(e),n=JSON.parse(t);if(n&&typeof n==`object`)return n}catch{}return{}}function VRe(e,t){let n=`ui://widget/${t}`,r=e.find(e=>e.uri.startsWith(`${n}.`)&&e.uri.endsWith(`.html`));return r?r.uri:e.find(e=>e.name===t)?.uri}function HRe(){let e=globalThis.__mcpUsePreviewBundle;if(!e||typeof e!=`object`)return;let t=e;if(typeof t.resourceUri==`string`)return t}function URe(){(0,w.useEffect)(()=>{let e=document.documentElement,t=document.body,n=e.style.margin,r=t.style.margin,i=t.style.overflow;return e.style.margin=`0`,t.style.margin=`0`,t.style.overflow=`hidden`,()=>{e.style.margin=n,t.style.margin=r,t.style.overflow=i}},[])}function WRe(e){(0,w.useEffect)(()=>{if(!e)return;let t=!1;return(async()=>{try{await document.fonts.ready}catch{}t||(await new Promise(e=>requestAnimationFrame(()=>e(void 0))),await new Promise(e=>requestAnimationFrame(()=>e(void 0))),!t&&document.body.setAttribute(`data-view-ready`,`true`))})(),()=>{t=!0,document.body.removeAttribute(`data-view-ready`)}},[e])}function GRe(e,t){(0,w.useEffect)(()=>{if(!e)return;let n=!1,r,i,a=e=>{n||(e&&(document.body.dataset.viewX=String(Math.round(e.left)),document.body.dataset.viewY=String(Math.round(e.top)),document.body.dataset.viewWidth=String(Math.round(e.width)),document.body.dataset.viewHeight=String(Math.round(e.height))),document.body.setAttribute(`data-view-ready`,`true`))};return(async()=>{try{await document.fonts.ready}catch{}if(n||(await new Promise(e=>requestAnimationFrame(()=>e(void 0))),await new Promise(e=>requestAnimationFrame(()=>e(void 0))),n))return;let e=t.current?.querySelector(`iframe`);if(!e){a(null);return}let o=()=>{r&&clearTimeout(r),r=setTimeout(()=>{n||(i?.disconnect(),a(e.getBoundingClientRect()))},250)};i=new ResizeObserver(o),i.observe(e),o()})(),()=>{n=!0,r&&clearTimeout(r),i?.disconnect(),document.body.removeAttribute(`data-view-ready`),delete document.body.dataset.viewX,delete document.body.dataset.viewY,delete document.body.dataset.viewWidth,delete document.body.dataset.viewHeight}},[e,t])}function KRe({view:e,bundle:t,widthOverride:n}){let[r,i]=(0,w.useState)(!1),a=(0,w.useRef)(null);URe(),GRe(r,a);let o=(0,w.useMemo)(()=>async e=>{if(e===t.resourceUri)return t.resourceContents;throw Error(`Resource ${e} not in screenshot bundle`)},[t]);return(0,S.jsx)(`div`,{ref:a,style:{width:`100vw`,height:`100vh`},children:(0,S.jsx)(A7,{serverId:zRe,toolCallId:(0,w.useMemo)(()=>`preview-bundle-${e}-${Date.now().toString(36)}`,[e]),toolName:e,toolInput:t.toolInput,toolOutput:t.toolOutput,resourceUri:t.resourceUri,readResource:o,displayMode:`inline`,inlineWidthOverride:n,noWrapper:!0,chromeless:!0,onReady:()=>i(!0)})})}function qRe({view:e}){let[t]=NM(),n=(0,w.useMemo)(()=>BRe(t.get(`props`)),[t]),r=(0,w.useMemo)(()=>t.get(`server`)||`${window.location.origin}/mcp`,[t]),i=(0,w.useMemo)(()=>{let e=t.get(`headers`);if(e)try{let t=JSON.parse(atob(e));if(t&&typeof t==`object`)return t}catch{}},[t]),{servers:a,addServer:o,storageLoaded:s}=uj(),c=a.find(e=>e.id===$9);(0,w.useEffect)(()=>{s&&o($9,{url:r,name:`Preview`,...i?{headers:i}:{}})},[s,r,i,o]);let l=c?.state===`ready`,u=c?.state===`failed`,d=(0,w.useMemo)(()=>{if(l)return VRe(c.resources,e)},[l,c?.resources,e]),f=(0,w.useMemo)(()=>`preview-${e}-${Date.now().toString(36)}`,[e]),p=(0,w.useMemo)(()=>async e=>{if(!c?.readResource)throw Error(`Server not ready`);return c.readResource(e)},[c]),[m,h]=(0,w.useState)(!1);return WRe(m),URe(),u?(0,S.jsxs)(`div`,{style:{padding:16,fontFamily:`monospace`,color:`#b00`},children:[`Failed to connect to MCP server at `,r,`.`]}):!l||!d?l&&!d?(0,S.jsxs)(`div`,{style:{padding:16,fontFamily:`monospace`,color:`#b00`},children:[`View "`,e,`" not found on `,r,`.`]}):(0,S.jsx)(`div`,{style:{width:`100vw`,height:`100vh`,display:`flex`,alignItems:`center`,justifyContent:`center`,fontFamily:`monospace`,color:`var(--muted-foreground, #888)`},children:`Loading…`}):(0,S.jsx)(`div`,{style:{width:`100vw`,height:`100vh`},children:(0,S.jsx)(A7,{serverId:$9,toolCallId:f,toolName:e,toolInput:n.toolInput,toolOutput:n.toolOutput,resourceUri:d,readResource:p,displayMode:`fullscreen`,noWrapper:!0,chromeless:!0,onReady:()=>h(!0)})})}function JRe(){let e=Xpe(),[t]=NM(),n=e.view??``,r=(0,w.useMemo)(()=>HRe(),[]),i=(0,w.useMemo)(()=>{let e=t.get(`width`);if(!e)return;let n=parseInt(e,10);return Number.isFinite(n)&&n>0?n:void 0},[t]);return r?(0,S.jsx)(KRe,{view:n,bundle:r,widthOverride:i}):(0,S.jsx)(qRe,{view:n})}var YRe=(e,t,n,r,i,a,o,s)=>{let c=document.documentElement,l=[`light`,`dark`];function u(t){(Array.isArray(e)?e:[e]).forEach(e=>{let n=e===`class`,r=n&&a?i.map(e=>a[e]||e):i;n?(c.classList.remove(...r),c.classList.add(a&&a[t]?a[t]:t)):c.setAttribute(e,t)}),d(t)}function d(e){s&&l.includes(e)&&(c.style.colorScheme=e)}function f(){return window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}if(r)u(r);else try{let e=localStorage.getItem(t)||n;u(o&&e===`system`?f():e)}catch{}},XRe=w.createContext(void 0),ZRe={setTheme:e=>{},themes:[]},QRe=()=>w.useContext(XRe)??ZRe;w.memo(({forcedTheme:e,storageKey:t,attribute:n,enableSystem:r,enableColorScheme:i,defaultTheme:a,value:o,themes:s,nonce:c,scriptProps:l})=>{let u=JSON.stringify([n,t,a,e,s,o,r,i]).slice(1,-1);return w.createElement(`script`,{...l,suppressHydrationWarning:!0,nonce:typeof window>`u`?c:``,dangerouslySetInnerHTML:{__html:`(${YRe.toString()})(${u})`}})});function $Re({...e}){let{theme:t=`system`}=QRe();return(0,S.jsx)(bhe,{theme:t,className:`toaster group`,style:{"--normal-bg":`var(--popover)`,"--normal-text":`var(--popover-foreground)`,"--normal-border":`var(--border)`},...e})}function eze({activeTabRef:e}){let{activeTab:t}=Jq();return(0,w.useEffect)(()=>{e.current=t},[t,e]),null}function tze(){let e=(0,w.useRef)(`tools`),t=new URLSearchParams(window.location.search),n=t.get(`embedded`)===`true`,r=t.get(`theme`),i=(0,w.useMemo)(()=>n?void 0:new upe(`mcp-inspector-connections`),[n]),a=window.__MCP_PROXY_URL__,o=a?`${window.location.origin}${a}`:void 0;return(0,w.useEffect)(()=>{let e=t.get(`auth_error`);if(!e)return;let n=t.get(`auth_error_description`);zM.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,S.jsx)(Oge,{forcedTheme:r||void 0,children:(0,S.jsx)(_De,{children:(0,S.jsx)(lj,{storageProvider:i,enableRpcLogging:!0,defaultCallbackUrl:`${window.location.origin}/inspector/oauth/callback`,defaultAutoProxyFallback:o?{enabled:!0,proxyAddress:o}:!1,clientInfo:{name:`mcp-use Inspector`,version:window.__INSPECTOR_VERSION__,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=zM((0,S.jsx)(RRe,{requestId:e.id,serverName:n,onViewDetails:()=>{let t=new CustomEvent(`navigate-to-sampling`,{detail:{requestId:e.id}});window.dispatchEvent(t),zM.dismiss(a)},onApprove:t=>{r(e.id,t),zM.success(`Sampling request approved`),zM.dismiss(a)},onDeny:()=>{i(e.id,`User denied from toast`),zM.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=zM((0,S.jsx)(C,{requestId:t.id,serverName:r,mode:o,message:s,url:c,onViewDetails:()=>{let e=new CustomEvent(`navigate-to-elicitation`,{detail:{requestId:t.id}});window.dispatchEvent(e),zM.dismiss(l)},onOpenUrl:o===`url`&&c?()=>{window.open(c,`_blank`),zM.dismiss(l)}:void 0,onCancel:()=>{a(t.id,`User cancelled from toast`),zM.dismiss(l)}}),{duration:1/0})},children:(0,S.jsxs)(Nwe,{children:[(0,S.jsx)(eze,{activeTabRef:e}),(0,S.jsx)(Rme,{basename:`/inspector`,children:(0,S.jsxs)(ume,{children:[(0,S.jsx)(fM,{path:`/oauth/callback`,element:(0,S.jsx)(IRe,{})}),(0,S.jsx)(fM,{path:`/preview/:view`,element:(0,S.jsx)(JRe,{})}),(0,S.jsx)(fM,{path:`/`,element:(0,S.jsx)(wRe,{children:(0,S.jsx)(Mwe,{})})})]})}),(0,S.jsx)($Re,{position:`top-center`})]})})})})}var nze=document.getElementById(`root`);nze?x.createRoot(nze).render((0,S.jsx)(tze,{})):console.error(`[inspector] Root element not found`);
|
|
847
|
+
`),e.document.close())}},[x]),Fe=(0,w.useCallback)(()=>{l&&(ne(``),ee(!0))},[l]),Ie=(0,w.useCallback)(()=>{if(!l)return;let e={id:`${Date.now()}-${Math.random()}`,name:te.trim()||`${l.name} - ${new Date().toLocaleString()}`,toolName:l.name,args:ke,savedAt:Date.now(),serverId:l._serverId,serverName:l._serverName};ve([...F,e]),ef.getInstance().capture(new Vd({toolName:l.name,serverId:i})).catch(()=>{}),ee(!1),ne(``)},[l,te,ke,F,ve,i]),Le=(0,w.useCallback)(e=>{ve(F.filter(t=>t.id!==e)),d?.id===e&&f(null)},[F,ve,d]);return ae?(0,S.jsxs)(`div`,{className:`h-full flex flex-col overflow-hidden relative bg-background`,children:[se!==`list`&&(0,S.jsxs)(`div`,{className:`flex items-center gap-2 p-2 border-b shrink-0 bg-background z-10`,children:[(0,S.jsx)(U,{variant:`ghost`,size:`sm`,onClick:()=>{se===`response`?ce(`detail`):(u(null),ce(`list`))},className:`p-0 h-8 w-8`,children:(0,S.jsx)(bf,{className:`h-4 w-4`})}),(0,S.jsxs)(`div`,{className:`flex items-center text-sm font-medium`,children:[(0,S.jsx)(`button`,{onClick:()=>{u(null),ce(`list`)},className:`text-muted-foreground hover:text-foreground hover:underline cursor-pointer`,children:`Tools`}),se===`detail`&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`span`,{className:`mx-2 text-muted-foreground`,children:`/`}),(0,S.jsx)(`button`,{onClick:()=>{ce(`response`)},className:se===`detail`?`text-foreground hover:underline`:se===`response`?`text-muted-foreground hover:text-foreground hover:underline cursor-pointer`:`text-muted-foreground`,children:`Execute`})]}),se===`response`&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(`span`,{className:`mx-2 text-muted-foreground`,children:`/`}),(0,S.jsx)(`span`,{className:`text-foreground`,children:`Response`})]})]})]}),(0,S.jsx)(`div`,{className:`flex-1 relative overflow-hidden`,children:(0,S.jsxs)($K,{initial:!1,mode:`popLayout`,children:[se===`list`&&(0,S.jsxs)(Hq.div,{initial:{x:`-100%`},animate:{x:0},exit:{x:`-100%`},transition:{type:`spring`,stiffness:300,damping:30},className:`absolute inset-0 flex flex-col bg-background z-0`,children:[(0,S.jsx)(VIe,{activeTab:N,isSearchExpanded:re,searchQuery:j,filteredToolsCount:ye.length,savedRequestsCount:F.length,onSearchExpand:()=>R(!0),onSearchChange:M,onSearchBlur:Se,onTabSwitch:()=>P(N===`tools`?`saved`:`tools`),searchInputRef:ie,onRefresh:o?Ce:void 0,isRefreshing:s}),N===`tools`?(0,S.jsx)(BIe,{tools:ye,selectedTool:l,onToolSelect:be,focusedIndex:z}):(0,S.jsx)(CIe,{savedRequests:F,selectedRequest:d,onLoadRequest:xe,onDeleteRequest:Le,focusedIndex:z})]},`list`),se===`detail`&&(0,S.jsx)(Hq.div,{initial:{x:`100%`},animate:{x:0},exit:{x:`-100%`},transition:{type:`spring`,stiffness:300,damping:30},className:`absolute inset-0 bg-background z-10`,children:(0,S.jsx)(PIe,{selectedTool:l,toolArgs:h,payloadToSend:ke,isExecuting:T,isConnected:a,onArgChange:we,onExecute:Ae,onSave:Fe,onBulkPaste:Ee,autoFilledFields:pe,setFields:_,sendEmptyFields:y,onToggleEmpty:Te})},`detail`),se===`response`&&(0,S.jsx)(Hq.div,{initial:{x:`100%`},animate:{x:0},exit:{x:`100%`},transition:{type:`spring`,stiffness:300,damping:30},className:`absolute inset-0 bg-background z-20`,children:(0,S.jsx)(zIe,{results:Ne,copiedResult:D,serverId:i,readResource:r,onCopy:je,onDelete:Me,onFullscreen:Pe,onRerunTool:Ae})},`response`)]})}),(0,S.jsx)(wIe,{isOpen:L,requestName:te,defaultPlaceholder:`${l?.name} - ${new Date().toLocaleString()}`,onRequestNameChange:ne,onSave:Ie,onCancel:()=>ee(!1)}),(0,S.jsx)(yLe,{open:de.open,onOpenChange:e=>{e||Oe()},children:(0,S.jsxs)(SLe,{children:[(0,S.jsxs)(CLe,{children:[(0,S.jsx)(TLe,{children:`Auto-fill fields from pasted object?`}),(0,S.jsxs)(ELe,{children:[de.fieldsToUpdate.length>0&&(0,S.jsxs)(`div`,{className:`mb-3`,children:[(0,S.jsx)(`p`,{className:`font-medium mb-2`,children:`The following fields will be updated:`}),(0,S.jsx)(`ul`,{className:`text-sm space-y-1 max-h-[200px] overflow-y-auto`,children:de.fieldsToUpdate.map(({key:e,oldValue:t,newValue:n})=>(0,S.jsxs)(`li`,{className:`font-mono`,children:[(0,S.jsxs)(`span`,{className:`font-semibold`,children:[e,`:`]}),` `,(0,S.jsx)(`span`,{className:`text-red-600 dark:text-red-400 line-through`,children:typeof t==`object`?JSON.stringify(t).substring(0,30)+`...`:String(t).substring(0,30)}),` `,`→`,` `,(0,S.jsx)(`span`,{className:`text-green-600 dark:text-green-400`,children:typeof n==`string`&&n.length>30?n.substring(0,30)+`...`:String(n).substring(0,30)})]},e))})]}),de.newFields.length>0&&(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`p`,{className:`font-medium mb-1`,children:`New fields to be filled:`}),(0,S.jsx)(`p`,{className:`text-sm font-mono`,children:de.newFields.join(`, `)})]})]})]}),(0,S.jsxs)(wLe,{children:[(0,S.jsx)(OLe,{onClick:Oe,children:`Cancel`}),(0,S.jsx)(DLe,{onClick:De,children:`Auto-fill`})]})]})})]}):(0,S.jsxs)(T9,{orientation:`horizontal`,className:`h-full`,children:[(0,S.jsx)(E9,{id:`left-panel`,defaultSize:`33%`,minSize:`20%`,collapsible:!0,className:`flex flex-col h-full relative`,panelRef:he,children:(0,S.jsxs)(T9,{orientation:`vertical`,className:`h-full border-r dark:border-zinc-700`,children:[(0,S.jsx)(E9,{minSize:`30%`,children:(0,S.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,S.jsx)(VIe,{activeTab:N,isSearchExpanded:re,searchQuery:j,filteredToolsCount:ye.length,savedRequestsCount:F.length,onSearchExpand:()=>R(!0),onSearchChange:M,onSearchBlur:Se,onTabSwitch:()=>P(N===`tools`?`saved`:`tools`),searchInputRef:ie,onRefresh:o?Ce:void 0,isRefreshing:s}),N===`tools`?(0,S.jsx)(BIe,{tools:ye,selectedTool:l,onToolSelect:be,focusedIndex:z}):(0,S.jsx)(CIe,{savedRequests:F,selectedRequest:d,onLoadRequest:xe,onDeleteRequest:Le,focusedIndex:z})]})}),(0,S.jsx)(D9,{withHandle:!0}),(0,S.jsx)(j9,{serverId:i})]})}),(0,S.jsx)(D9,{withHandle:!0}),(0,S.jsx)(E9,{defaultSize:`67%`,children:(0,S.jsxs)(T9,{orientation:`vertical`,children:[(0,S.jsx)(E9,{defaultSize:`40%`,collapsible:!0,panelRef:ge,children:(0,S.jsx)(PIe,{selectedTool:l,toolArgs:h,payloadToSend:ke,isExecuting:T,isConnected:a,onArgChange:we,onExecute:Ae,onSave:Fe,onCancel:()=>{k&&k.abort()},onBulkPaste:Ee,autoFilledFields:pe,setFields:_,sendEmptyFields:y,onToggleEmpty:Te})}),(0,S.jsx)(D9,{withHandle:!0}),(0,S.jsx)(E9,{defaultSize:`60%`,children:(0,S.jsx)(`div`,{className:`flex flex-col h-full`,children:(0,S.jsx)(zIe,{results:Ne,copiedResult:D,serverId:i,readResource:r,onCopy:je,onDelete:Me,onFullscreen:Pe,onMaximize:_e,isMaximized:le,onRerunTool:Ae})})})]})}),(0,S.jsx)(wIe,{isOpen:L,requestName:te,defaultPlaceholder:`${l?.name} - ${new Date().toLocaleString()}`,onRequestNameChange:ne,onSave:Ie,onCancel:()=>ee(!1)}),(0,S.jsx)(yLe,{open:de.open,onOpenChange:e=>{e||Oe()},children:(0,S.jsxs)(SLe,{children:[(0,S.jsxs)(CLe,{children:[(0,S.jsx)(TLe,{children:`Auto-fill fields from pasted object?`}),(0,S.jsxs)(ELe,{children:[de.fieldsToUpdate.length>0&&(0,S.jsxs)(`div`,{className:`mb-3`,children:[(0,S.jsx)(`p`,{className:`font-medium mb-2`,children:`The following fields will be updated:`}),(0,S.jsx)(`ul`,{className:`text-sm space-y-1 max-h-[200px] overflow-y-auto`,children:de.fieldsToUpdate.map(({key:e,oldValue:t,newValue:n})=>(0,S.jsxs)(`li`,{className:`font-mono`,children:[(0,S.jsxs)(`span`,{className:`font-semibold`,children:[e,`:`]}),` `,(0,S.jsx)(`span`,{className:`text-red-600 dark:text-red-400 line-through`,children:typeof t==`object`?JSON.stringify(t).substring(0,30)+`...`:String(t).substring(0,30)}),` `,`→`,` `,(0,S.jsx)(`span`,{className:`text-green-600 dark:text-green-400`,children:typeof n==`string`&&n.length>30?n.substring(0,30)+`...`:String(n).substring(0,30)})]},e))})]}),de.newFields.length>0&&(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`p`,{className:`font-medium mb-1`,children:`New fields to be filled:`}),(0,S.jsx)(`p`,{className:`text-sm font-mono`,children:de.newFields.join(`, `)})]})]})]}),(0,S.jsxs)(wLe,{children:[(0,S.jsx)(OLe,{onClick:Oe,children:`Cancel`}),(0,S.jsx)(DLe,{onClick:De,children:`Auto-fill`})]})]})})]})}ALe.displayName=`ToolsTab`;function jLe({selectedServer:e,activeTab:t,toolsSearchRef:n,promptsSearchRef:r,resourcesSearchRef:i,children:a}){let{embeddedConfig:o}=Jq();if(!e&&o.forceConnected)return o.chatApiUrl?(0,S.jsx)(kPe,{connection:{id:`force-connected`,url:``,name:``,state:`ready`,tools:[],prompts:[],resources:[]},isConnected:!0,prompts:[],serverId:`force-connected`,callPrompt:async()=>({messages:[]}),readResource:async()=>({contents:[]}),useClientSide:!1,chatApiUrl:o.chatApiUrl,managedLlmConfig:o.managedLlmConfig??{provider:`anthropic`,model:`claude-haiku-4-5`,apiKey:`server-managed`},enableFreeTierUpgrade:o.chatEnableFreeTierUpgrade,hideTitle:o.chatHideTitle,hideModelBadge:o.chatHideModelBadge??!0,hideServerUrl:o.chatHideServerUrl??!0,clearButtonLabel:o.chatClearButtonLabel,clearButtonHideIcon:o.chatClearButtonHideIcon,clearButtonHideShortcut:o.chatClearButtonHideShortcut,clearButtonVariant:o.chatClearButtonVariant,chatQuickQuestions:o.chatQuickQuestions,chatFollowups:o.chatFollowups,hideClearButton:o.chatHideClearButton,hideToolSelector:o.chatHideToolSelector,enableKeyboardShortcuts:!1},`chat-force-connected`):(0,S.jsx)(S.Fragment,{children:a});if(!e)return(0,S.jsx)(S.Fragment,{children:a});let s=e=>o.visibleTabs?o.visibleTabs.includes(e):!0;return(0,S.jsxs)(S.Fragment,{children:[s(`tools`)&&(0,S.jsx)(`div`,{style:{display:t===`tools`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(ALe,{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`)&&(0,S.jsx)(`div`,{style:{display:t===`prompts`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(uIe,{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`)&&(0,S.jsx)(`div`,{style:{display:t===`resources`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(_Ie,{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`)&&(0,S.jsx)(`div`,{style:{display:t===`chat`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(kPe,{connection:e,isConnected:o.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:!o.chatApiUrl,chatApiUrl:o.chatApiUrl,managedLlmConfig:o.managedLlmConfig??(o.chatApiUrl?{provider:`anthropic`,model:`claude-haiku-4-5`,apiKey:`server-managed`}:void 0),enableFreeTierUpgrade:o.chatEnableFreeTierUpgrade,hideTitle:o.chatHideTitle,hideModelBadge:o.chatHideModelBadge??!!o.chatApiUrl,hideServerUrl:o.chatHideServerUrl??!!o.chatApiUrl,clearButtonLabel:o.chatClearButtonLabel,clearButtonHideIcon:o.chatClearButtonHideIcon,clearButtonHideShortcut:o.chatClearButtonHideShortcut,clearButtonVariant:o.chatClearButtonVariant,chatQuickQuestions:o.chatQuickQuestions,chatFollowups:o.chatFollowups,hideClearButton:o.chatHideClearButton,hideToolSelector:o.chatHideToolSelector,streamProtocol:o.chatStreamProtocol,credentials:o.chatCredentials},`chat-${e.id}`)}),s(`sampling`)&&(0,S.jsx)(`div`,{style:{display:t===`sampling`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(SIe,{pendingRequests:e.pendingSamplingRequests,onApprove:e.approveSampling,onReject:e.rejectSampling,serverId:e.id,isConnected:e.state===`ready`,mcpServerUrl:e.url},`sampling-${e.id}`)}),s(`elicitation`)&&(0,S.jsx)(`div`,{style:{display:t===`elicitation`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(WFe,{pendingRequests:e.pendingElicitationRequests,onApprove:e.approveElicitation,onReject:e.rejectElicitation,serverId:e.id,isConnected:e.state===`ready`},`elicitation-${e.id}`)}),s(`notifications`)&&(0,S.jsx)(`div`,{style:{display:t===`notifications`?`block`:`none`},className:`h-full`,children:(0,S.jsx)(JFe,{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}`)}),![`tools`,`prompts`,`resources`,`chat`,`sampling`,`elicitation`,`notifications`].includes(t)&&(0,S.jsx)(S.Fragment,{children:a})]})}function MLe({className:e}){return(0,S.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,S.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,S.jsx)(`path`,{d:`M9 18c-4.51 2-5-2-7-2`})]})}var NLe=w.createContext(void 0);function R9(){let e=w.use(NLe);if(!e)throw Error(`useTabs must be used within a TabsProvider`);return e}var PLe=w.createContext(void 0);function FLe(){return w.use(PLe)}function z9({ref:e,children:t,defaultValue:n,value:r,onValueChange:i,className:a,collapsed:o,onCollapsedChange:s,...c}){let[l,u]=w.useState(n||``),d=r!==void 0,f=o!==void 0,[p,m]=w.useState(!1),h=w.useCallback(e=>{d||u(e),i?.(e)},[d,i]);return(0,S.jsx)(NLe,{value:{activeValue:d?r:l,handleValueChange:h,collapsed:f?o:p,handleCollapsedChange:w.useCallback(e=>{f||m(e),s?.(e)},[f,s])},children:(0,S.jsx)(`div`,{ref:e,className:H(`flex flex-col gap-2`,a),...c,children:t})})}z9.displayName=`Tabs`;function B9({ref:e,children:t,className:n,variant:r=`default`,collapsible:i=!1,...a}){let{activeValue:o,collapsed:s,handleCollapsedChange:c}=R9(),[l,u]=w.useState({width:0,left:0}),d=w.useRef(null),f=w.useRef(null),p=w.useRef(null),m=w.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=w.useCallback(()=>{p.current&&clearTimeout(p.current),p.current=setTimeout(m,16)},[m]);w.useEffect(()=>{let e=setTimeout(m,10);return()=>clearTimeout(e)},[m,s]),w.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]),w.useEffect(()=>{let e=()=>{h()};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[h]);let g=w.useRef(null);return w.useEffect(()=>{g.current&&(g.current.style.width=`${l.width}px`,g.current.style.left=`${l.left}px`)},[l]),(0,S.jsx)(PLe,{value:{variant:r,collapsed:s,handleCollapsedChange:c},children:(0,S.jsx)(`div`,{ref:d,className:H(`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,S.jsxs)(`div`,{role:`tablist`,className:`flex-1 flex items-center relative`,children:[t,(0,S.jsx)(`span`,{ref:g,className:H(`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`)})]})})})}B9.displayName=`TabsList`;var ILe=({children:e,title:t,collapsed:n})=>!t||!n?e:(0,S.jsx)(Od,{children:(0,S.jsxs)(kd,{children:[(0,S.jsx)(Ad,{children:e}),(0,S.jsx)(jd,{children:t})]})}),V9=w.forwardRef(({children:e,value:t,className:n,disabled:r,icon:i,title:a,showDot:o=!1,alwaysExpanded:s=!1,badge:c,...l},u)=>{let{activeValue:d,handleValueChange:f,collapsed:p}=R9(),m=FLe()?.variant||`default`,h=d===t,g=!p||h||s;return(0,S.jsx)(ILe,{title:a,collapsed:p&&!g,children:(0,S.jsxs)(`button`,{ref:u,disabled:r,onClick:()=>f(t),"data-tab-value":t,"data-tab-active":h,role:`tab`,"aria-selected":h?`true`:`false`,title:p&&!g&&a?a:void 0,className:H(`relative z-10 flex-1 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`,m===`default`&&`py-2.5`,m===`default`&&`rounded-md px-4`,m===`underline`&&`px-6 py-3 border-b-2 border-transparent`,h&&`text-foreground`,!h&&`text-muted-foreground hover:text-foreground`,n),...l,children:[i&&(0,S.jsx)(i,{className:H(`h-4 w-4 shrink-0 transition-all duration-[250ms] ease-in-out`,g&&`mr-2`,!g&&`mr-0!`)}),o&&(0,S.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,S.jsx)(`span`,{className:H(`min-w-0 transition-all duration-[250ms] ease-in-out overflow-hidden`,g?`w-auto opacity-100`:`w-0 opacity-0`),children:e}),c]})})});V9.displayName=`TabsTrigger`;function LLe(e,t=[]){let n=[];function r(t,r){let i=w.createContext(r);i.displayName=t+`Context`;let a=n.length;n=[...n,r];let o=t=>{let{scope:n,children:r,...o}=t,s=n?.[e]?.[a]||i,c=w.useMemo(()=>o,Object.values(o));return(0,S.jsx)(s.Provider,{value:c,children:r})};o.displayName=t+`Provider`;function s(n,o){let s=o?.[e]?.[a]||i,c=w.useContext(s);if(c)return c;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,s]}let i=()=>{let t=n.map(e=>w.createContext(e));return function(n){let r=n?.[e]||t;return w.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,RLe(i,...t)]}function RLe(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return w.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}var zLe=i((e=>{var t=m();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),BLe=i(((e,t)=>{t.exports=zLe()}))();function VLe(){return(0,BLe.useSyncExternalStore)(HLe,()=>!0,()=>!1)}function HLe(){return()=>{}}var H9=`Avatar`,[ULe,WLe]=LLe(H9),[GLe,KLe]=ULe(H9),qLe=w.forwardRef((e,t)=>{let{__scopeAvatar:n,...r}=e,[i,a]=w.useState(`idle`);return(0,S.jsx)(GLe,{scope:n,imageLoadingStatus:i,onImageLoadingStatusChange:a,children:(0,S.jsx)(jN.span,{...r,ref:t})})});qLe.displayName=H9;var JLe=`AvatarImage`,YLe=w.forwardRef((e,t)=>{let{__scopeAvatar:n,src:r,onLoadingStatusChange:i=()=>{},...a}=e,o=KLe(JLe,n),s=$Le(r,a),c=$t(e=>{i(e),o.onImageLoadingStatusChange(e)});return Ft(()=>{s!==`idle`&&c(s)},[s,c]),s===`loaded`?(0,S.jsx)(jN.img,{...a,ref:t,src:r}):null});YLe.displayName=JLe;var XLe=`AvatarFallback`,ZLe=w.forwardRef((e,t)=>{let{__scopeAvatar:n,delayMs:r,...i}=e,a=KLe(XLe,n),[o,s]=w.useState(r===void 0);return w.useEffect(()=>{if(r!==void 0){let e=window.setTimeout(()=>s(!0),r);return()=>window.clearTimeout(e)}},[r]),o&&a.imageLoadingStatus!==`loaded`?(0,S.jsx)(jN.span,{...i,ref:t}):null});ZLe.displayName=XLe;function QLe(e,t){return e?t?(e.src!==t&&(e.src=t),e.complete&&e.naturalWidth>0?`loaded`:`loading`):`error`:`idle`}function $Le(e,{referrerPolicy:t,crossOrigin:n}){let r=VLe(),i=w.useRef(null),a=r?(i.current||=new window.Image,i.current):null,[o,s]=w.useState(()=>QLe(a,e));return Ft(()=>{s(QLe(a,e))},[a,e]),Ft(()=>{let e=e=>()=>{s(e)};if(!a)return;let r=e(`loaded`),i=e(`error`);return a.addEventListener(`load`,r),a.addEventListener(`error`,i),t&&(a.referrerPolicy=t),typeof n==`string`&&(a.crossOrigin=n),()=>{a.removeEventListener(`load`,r),a.removeEventListener(`error`,i)}},[a,n,t]),o}var eRe=qLe,tRe=YLe,nRe=ZLe;function rRe({className:e,...t}){return(0,S.jsx)(eRe,{"data-slot":`avatar`,className:H(`relative flex size-8 shrink-0 overflow-hidden rounded-full`,e),...t})}function iRe({className:e,...t}){return(0,S.jsx)(tRe,{"data-slot":`avatar-image`,className:H(`aspect-square size-full`,e),...t})}function aRe({className:e,...t}){return(0,S.jsx)(nRe,{"data-slot":`avatar-fallback`,className:H(`flex size-full items-center justify-center rounded-full bg-zinc-200 dark:bg-zinc-700 text-muted-foreground font-medium`,e),...t})}function oRe(e,t){return e?.[0]?e[0].toUpperCase():t?.[0]?t[0].toUpperCase():`U`}function sRe({chatApiUrl:e,dashboardUrl:t=`https://manufact.com/cloud`,fallback:n=null,onUserResolved:r}){let[i,a]=(0,w.useState)(null),[o,s]=(0,w.useState)(!1),c=(0,w.useCallback)(()=>{let t=!1,n=`${new URL(e).origin}/api/auth/get-session`;return fetch(n,{credentials:`include`}).then(e=>e.ok?e.json():null).then(e=>{if(!t){let t=e?.user??null;a(t),s(!0),r?.(t)}}).catch(()=>{t||(s(!0),r?.(null))}),()=>{t=!0}},[e]);if((0,w.useEffect)(()=>c(),[c]),(0,w.useEffect)(()=>{let e=()=>{c()};return window.addEventListener(`manufact:session-changed`,e),()=>window.removeEventListener(`manufact:session-changed`,e)},[c]),!o)return null;if(!i)return(0,S.jsx)(S.Fragment,{children:n});let l=oRe(i.name,i.email),u=i.name??i.email??`User`;return(0,S.jsxs)(ql,{children:[(0,S.jsx)(Jl,{asChild:!0,children:(0,S.jsx)(U,{variant:`ghost`,className:`relative h-8 w-8 shrink-0 rounded-full p-0 mr-2`,"aria-label":`User menu`,children:(0,S.jsxs)(rRe,{className:`h-8 w-8 border border-zinc-300 dark:border-zinc-600`,children:[(0,S.jsx)(iRe,{src:i.image??``,alt:u}),(0,S.jsx)(aRe,{className:`text-sm`,children:l})]})})}),(0,S.jsxs)($l,{className:`w-56`,align:`end`,forceMount:!0,children:[(0,S.jsx)(nu,{className:`font-normal`,children:(0,S.jsxs)(`div`,{className:`flex flex-col space-y-1`,children:[(0,S.jsx)(`p`,{className:`text-sm font-medium leading-none truncate`,children:u}),i.email&&i.email!==u&&(0,S.jsx)(`p`,{className:`text-xs leading-none text-muted-foreground truncate`,children:i.email})]})}),(0,S.jsx)(ru,{}),(0,S.jsx)(eu,{asChild:!0,children:(0,S.jsxs)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,children:[(0,S.jsx)(Xf,{className:`mr-2 h-4 w-4`}),`Go to dashboard`]})})]})]})}function cRe({count:e,isActive:t,size:n=`md`}){return e<=0?null:(0,S.jsx)(`span`,{className:H(t?`dark:bg-black`:`dark:bg-zinc-700`,`shrink-0 ml-1 bg-zinc-200 text-zinc-700 dark:text-zinc-300 rounded-full font-medium`,n===`sm`&&`text-[10px] px-1.5 py-0.5`,n===`md`&&`text-xs px-2 py-0.5`),children:e})}function lRe({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,w.useState)(!1),[l,u]=(0,w.useState)(null),[d,f]=(0,w.useState)(!1),{url:p,name:m,headers:h}=e,g=e=>{try{ef.getInstance().capture(new Kd({client:e})).catch(()=>{})}catch{}},_=()=>{g(`cursor`);try{let e=TJ(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=EJ(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=DJ(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{OJ(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)},C=()=>{g(`gemini-cli`),u(`gemini-cli`),c(!0)},T=()=>{g(`codex-cli`),u(`codex-cli`),c(!0)},E=async e=>{try{await dj(e),f(!0),setTimeout(()=>f(!1),2e3)}catch(e){console.error(`Failed to copy:`,e),a?.(e)}},D=()=>{if(l===`claude-code`){let{command:e,envVars:t}=kJ(p,m,h),n=MJ(t);return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(DN,{children:[(0,S.jsx)(ON,{children:`Add to Claude Code`}),(0,S.jsx)(kN,{children:`Execute the following command in your shell to add this server to Claude Code.`})]}),(0,S.jsxs)(`div`,{className:`space-y-4`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,S.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,S.jsx)(`span`,{children:`Ensure the Claude Code executable is available in your path`})]}),(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,S.jsx)(`span`,{children:`Execute the following snippet in your shell:`})]})]})]}),(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:()=>E(e),children:d?(0,S.jsx)(vf,{className:`size-3.5 text-green-600`}):(0,S.jsx)(jf,{className:`size-3.5`})})}),(0,S.jsx)(`pre`,{className:`bg-muted p-3 pr-14 rounded-md text-xs overflow-x-auto`,children:(0,S.jsx)(`code`,{children:e})})]}),n&&(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Environment Variables`}),(0,S.jsx)(`p`,{className:`text-xs text-muted-foreground mb-2`,children:`After installation, set these environment variables in your shell:`}),(0,S.jsx)(`pre`,{className:`bg-muted p-3 rounded-md text-xs overflow-x-auto`,children:(0,S.jsx)(`code`,{children:n})})]}),(0,S.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`The MCP configuration supports environment variable expansion using `,(0,S.jsx)(`code`,{className:`text-foreground`,children:"${VAR}"}),` `,`syntax.`]})]})]})}if(l===`gemini-cli`){let{command:e,envVars:t}=AJ(p,m,h),n=MJ(t);return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(DN,{children:[(0,S.jsx)(ON,{children:`Add to Gemini CLI`}),(0,S.jsx)(kN,{children:`Execute the following command in your shell to add this server to Gemini CLI.`})]}),(0,S.jsxs)(`div`,{className:`space-y-4`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,S.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,S.jsx)(`span`,{children:`Ensure the Gemini CLI executable is available in your path`})]}),n&&(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,S.jsx)(`span`,{children:`Set these environment variables in your shell before running the command:`})]}),(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:n?`3.`:`2.`}),(0,S.jsx)(`span`,{children:`Execute the following snippet in your shell:`})]})]})]}),n&&(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Environment Variables`}),(0,S.jsx)(`pre`,{className:`bg-muted p-3 rounded-md text-xs overflow-x-auto`,children:(0,S.jsx)(`code`,{children:n})})]}),(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:()=>E(e),children:d?(0,S.jsx)(vf,{className:`size-3.5 text-green-600`}):(0,S.jsx)(jf,{className:`size-3.5`})})}),(0,S.jsx)(`pre`,{className:`bg-muted p-3 pr-14 rounded-md text-xs overflow-x-auto`,children:(0,S.jsx)(`code`,{children:e})})]}),(0,S.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}=jJ(p,m,h);return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(DN,{children:[(0,S.jsx)(ON,{children:`Add to Codex CLI`}),(0,S.jsxs)(kN,{children:[`Add this configuration to your`,` `,(0,S.jsx)(`code`,{className:`text-foreground`,children:`~/.codex/config.toml`}),` `,`file.`]})]}),(0,S.jsxs)(`div`,{className:`space-y-4`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,S.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Add this configuration to your`,` `,(0,S.jsx)(`code`,{className:`text-foreground`,children:`~/.codex/config.toml`}),`:`]})]}),(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:()=>E(e),children:d?(0,S.jsx)(vf,{className:`size-3.5 text-green-600`}):(0,S.jsx)(jf,{className:`size-3.5`})})}),(0,S.jsx)(`pre`,{className:`bg-muted p-3 pr-14 rounded-md text-xs overflow-x-auto`,children:(0,S.jsx)(`code`,{children:e})})]}),t.length>0&&(0,S.jsx)(`div`,{children:(0,S.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`(optional) If you would rather use variables from your system's environment, replace the`,` `,(0,S.jsx)(`code`,{className:`text-foreground`,children:`http_headers`}),` key with the `,(0,S.jsx)(`code`,{className:`text-foreground`,children:`env_http_headers`}),` `,`key as shown in the commented section above.`]})}),(0,S.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Restart Codex CLI to load the new configuration.`})]})]})}return null},O=(0,S.jsxs)(U,{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,S.jsxs)(`span`,{className:`xl:hidden hidden sm:flex items-center gap-1`,children:[(0,S.jsx)(cp,{className:`size-3`}),`Client`]}),(0,S.jsxs)(`span`,{className:`hidden xl:flex items-center gap-1`,children:[`Add to Client`,(0,S.jsx)(yf,{className:`size-3`})]})]});return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(ql,{children:[(0,S.jsx)(Jl,{asChild:!0,children:o?typeof o==`function`?o({isOpen:!1,onClick:()=>{}}):o:O}),(0,S.jsxs)($l,{align:`end`,className:`w-auto min-w-[300px]`,children:[t.map(e=>(0,S.jsxs)(eu,{onClick:async()=>{await e.onClick()},className:`flex items-center gap-2`,children:[e.icon,(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:e.label})]},e.id)),t.length>0&&(0,S.jsx)(ru,{}),n.cursor&&(0,S.jsxs)(eu,{onClick:_,className:`flex items-center gap-2`,children:[(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/cursor`,alt:`Cursor`,className:`h-4 w-4`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Cursor`})]}),n.claudeCode&&(0,S.jsxs)(eu,{onClick:x,className:`flex items-center gap-2`,children:[(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/claude`,alt:`Claude`,className:`h-4 w-4`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Claude Code`})]}),n.claudeDesktop&&(0,S.jsxs)(eu,{onClick:b,className:`flex items-center gap-2`,children:[(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/claude`,alt:`Claude`,className:`h-4 w-4`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Claude Desktop`})]}),n.vsCode&&(0,S.jsxs)(eu,{onClick:v,className:`flex items-center gap-2`,children:[(0,S.jsx)(NJ,{className:`h-4 w-4 text-blue-500`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`VS Code`})]}),n.vsCodeInsiders&&(0,S.jsxs)(eu,{onClick:y,className:`flex items-center gap-2`,children:[(0,S.jsx)(NJ,{className:`h-4 w-4 text-teal-400`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`VS Code Insiders`})]}),n.geminiCli&&(0,S.jsxs)(eu,{onClick:C,className:`flex items-center gap-2`,children:[(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/googlegemini`,alt:`Gemini`,className:`h-4 w-4`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Gemini CLI`})]}),n.codexCli&&(0,S.jsxs)(eu,{onClick:T,className:`flex items-center gap-2`,children:[(0,S.jsx)(`img`,{src:`https://inspector-cdn.mcp-use.com/providers/openai.png`,alt:`Codex`,className:`h-4 w-4`}),(0,S.jsx)(`span`,{className:`min-w-0 max-w-full whitespace-nowrap`,children:`Codex CLI`})]})]})]}),(0,S.jsx)(wN,{open:s,onOpenChange:c,children:(0,S.jsx)(EN,{className:`max-w-3xl max-h-[80vh] overflow-y-auto`,children:D()})})]})}function U9({className:e,state:t=`collapsed`,href:n=`https://mcp-use.com`}){let[r,i]=(0,w.useState)(!1),a=.2,o=.7,s=a+o+.6,c=a/s,l=(a+o)/s;return(0,S.jsxs)(`a`,{href:n,target:`_blank`,rel:`noopener noreferrer`,className:H(`flex items-center transition-opacity -my-3`,t===`expanded`?`space-x-2`:``,e),onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),children:[(0,S.jsx)(`div`,{className:`relative`,children:(0,S.jsxs)(Hq.svg,{viewBox:`0 0 303 303`,initial:`rest`,animate:r?`hover`:`rest`,className:H(`text-foreground`,t===`expanded`?`size-[40px]`:`size-[20px]`),children:[(0,S.jsxs)(Hq.g,{variants:{rest:{opacity:1},hover:{opacity:[1,0,0,1],transition:{duration:s,times:[0,c,l,1],ease:`easeInOut`}}},fill:`currentColor`,fillRule:`nonzero`,stroke:`currentColor`,strokeWidth:4,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,S.jsx)(`path`,{d:`m105.5 34.8.6.6c9.5 9.5 14.4 21.9 14.6 34.4a112.6 112.6 0 0 0 112.2 112.1h.6c12 .4 24 5.1 33.2 14.1l.6.6a50 50 0 0 1-70.1 71.3l-.6-.6A49.9 49.9 0 0 1 182 230 112.6 112.6 0 0 0 73.4 120.7h-.8a49.9 49.9 0 0 1-36.7-14l-.5-.6a50 50 0 0 1-.6-70.2l.6-.5a50 50 0 0 1 69.5-1.2l.6.6Z`}),(0,S.jsx)(`circle`,{cx:`70.3`,cy:`232.3`,r:`50`}),(0,S.jsx)(`circle`,{cx:`232.3`,cy:`70.3`,r:`50`})]}),(0,S.jsxs)(`g`,{fill:`none`,stroke:`currentColor`,strokeWidth:4,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,S.jsx)(uRe,{d:`m105.5 34.8.6.6c9.5 9.5 14.4 21.9 14.6 34.4a112.6 112.6 0 0 0 112.2 112.1h.6c12 .4 24 5.1 33.2 14.1l.6.6a50 50 0 0 1-70.1 71.3l-.6-.6A49.9 49.9 0 0 1 182 230 112.6 112.6 0 0 0 73.4 120.7h-.8a49.9 49.9 0 0 1-36.7-14l-.5-.6a50 50 0 0 1-.6-70.2l.6-.5a50 50 0 0 1 69.5-1.2l.6.6Z`,times:{T0:0,T1:c,T2:l,T3:1},total:s}),(0,S.jsx)(dRe,{cx:70.3,cy:232.3,r:50,times:{T0:0,T1:c,T2:l,T3:1},total:s}),(0,S.jsx)(dRe,{cx:232.3,cy:70.3,r:50,times:{T0:0,T1:c,T2:l,T3:1},total:s})]})]})}),t===`expanded`&&(0,S.jsxs)(`div`,{className:`font-ubuntu flex-col items-start -space-y-1 mr-3 hidden xl:flex`,children:[(0,S.jsx)(`h1`,{className:`text-xl font-medium`,children:`mcp-use`}),(0,S.jsx)(`span`,{className:`text-lg text-muted-foreground tracking-wide font-sans font-light`,children:`Inspector`})]})]})}function uRe({d:e,times:t,total:n}){let{T0:r,T1:i,T2:a,T3:o}=t;return(0,S.jsx)(Hq.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 dRe({cx:e,cy:t,r:n,times:r,total:i}){let{T0:a,T1:o,T2:s,T3:c}=r;return(0,S.jsx)(Hq.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`}}}})}function W9({open:e,onOpenChange:t,serverUrl:n,serverName:r,serverId:i,headers:a,language:o}){let{prismStyle:s}=HP(),[c,l]=(0,w.useState)(!1),u=o===`typescript`?oTe(n,r,i,a):sTe(n,r,i,a),d=async()=>{await dj(u),l(!0),setTimeout(()=>l(!1),2e3)},f=o===`typescript`?`TypeScript`:`Python`;return(0,S.jsx)(wN,{open:e,onOpenChange:t,children:(0,S.jsxs)(EN,{className:`max-w-[90vw] max-h-[90vh] overflow-hidden flex flex-col`,children:[(0,S.jsxs)(DN,{children:[(0,S.jsxs)(ON,{children:[`Add to `,f,` SDK`]}),(0,S.jsxs)(kN,{children:[`Copy the following code to integrate this server into your`,` `,f,` application using the mcp-use SDK.`]})]}),(0,S.jsxs)(`div`,{className:`space-y-4 overflow-y-auto flex-1 min-h-0`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Instructions`}),(0,S.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,S.jsxs)(`span`,{children:[`Install the mcp-use package:`,` `,(0,S.jsx)(`code`,{className:`text-foreground`,children:o===`typescript`?`npm install mcp-use`:`pip install mcp-use`})]})]}),(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,S.jsxs)(`span`,{children:[`Copy the following code into your `,f,` project:`]})]})]})]}),(0,S.jsxs)(`div`,{className:`relative w-full overflow-x-auto overflow-y-auto max-h-[60vh]`,children:[(0,S.jsx)(`div`,{className:`absolute top-2 right-2 z-10`,children:(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-7 px-2 bg-background hover:bg-accent border border-border`,onClick:d,children:c?(0,S.jsx)(vf,{className:`size-3.5 text-green-600`}):(0,S.jsx)(jf,{className:`size-3.5`})})}),(0,S.jsx)(HV,{language:o,style:s,customStyle:{margin:0,padding:`1rem`,paddingRight:`3rem`,borderRadius:`0.5rem`,fontSize:`0.75rem`,background:`var(--muted)`,width:`100%`,maxWidth:`100%`,overflow:`auto`},wrapLines:!0,wrapLongLines:!0,PreTag:`div`,children:u})]})]})]})})}function fRe({ref:e,shimmerColor:t,shimmerSize:n=`0.05em`,shimmerDuration:r=`3s`,borderRadius:i=`100px`,background:a,className:o,children:s,...c}){let{theme:l}=BP();return(0,S.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:H(`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,S.jsx)(`div`,{className:H(`-z-30 blur-[2px]`,`@container-[size] absolute inset-0 overflow-visible`),children:(0,S.jsx)(`div`,{className:`animate-shimmer-slide absolute inset-0 aspect-[1] h-[100cqh] rounded-none mask-none`,children:(0,S.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,S.jsx)(`div`,{className:H(`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,S.jsx)(`div`,{className:H(`absolute [inset:var(--cut)] -z-20 [border-radius:var(--radius)] bg-black dark:bg-white`)})]})}fRe.displayName=`ShimmerButton`;function pRe({status:e}){let{color:t,ringColor:n,tooltip:r}=(e=>{switch(e){case`ready`:return{color:`bg-emerald-500`,ringColor:`ring-emerald-500`,tooltip:`Connected`};case`failed`:return{color:`bg-red-500`,ringColor:`ring-red-500`,tooltip:`Failed`};default:return{color:`bg-yellow-500`,ringColor:`ring-yellow-500`,tooltip:e}}})(e);return(0,S.jsxs)(kd,{children:[(0,S.jsx)(Ad,{asChild:!0,children:(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(`div`,{className:`absolute w-2 h-2 rounded-full ${n} animate-ping`}),(0,S.jsx)(`div`,{className:`relative w-2 h-2 rounded-full ${t}`})]})}),(0,S.jsx)(jd,{children:(0,S.jsx)(`p`,{children:r})})]})}function mRe({connections:e,selectedServer:t,onServerSelect:n,onOpenConnectionOptions:r,mobileMode:i=!1}){let a=tM(),[o,s]=(0,w.useState)(!1),[c,l]=(0,w.useState)(null),u=t=>{let r=e.find(e=>e.id===t);if(!r||r.state!==`ready`){zM.error(`Server is not connected and cannot be inspected`);return}n(t)};return i?(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(`div`,{className:`relative`,children:(0,S.jsxs)(ql,{children:[(0,S.jsx)(Jl,{asChild:!0,children:(0,S.jsxs)(U,{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,S.jsx)(Gq,{server:t,size:`md`}):(0,S.jsx)(gp,{className:`h-5 w-5`}),(0,S.jsx)(yf,{className:`h-4 w-4`})]})}),(0,S.jsxs)($l,{className:`w-[calc(100vw-2rem)] sm:w-[300px]`,align:`start`,children:[(0,S.jsx)(nu,{className:`cursor-pointer hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:()=>a(`/`),children:`MCP Servers`}),(0,S.jsx)(ru,{}),e.length===0?(0,S.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,S.jsxs)(eu,{onClick:()=>u(e.id),className:`flex items-center gap-3`,children:[(0,S.jsx)(Gq,{server:e,size:`sm`}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2 flex-1`,children:[(0,S.jsx)(`div`,{className:`font-medium`,children:_j(e)}),(0,S.jsx)(pRe,{status:e.state})]}),(0,S.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:t=>{t.stopPropagation(),l(e),s(!0)},children:(0,S.jsx)(Jf,{className:`h-3 w-3`})}),(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:t=>{t.stopPropagation(),r(e.id)},children:(0,S.jsx)(_p,{className:`h-3 w-3`})})]})]},e.id)),(0,S.jsx)(ru,{}),(0,S.jsx)(eu,{onClick:()=>a(`/`),children:(0,S.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:`+ Add new server`})})]})]})}),(0,S.jsx)(WV,{open:o,onOpenChange:s,connection:c})]}):(0,S.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsxs)(ql,{children:[(0,S.jsx)(Jl,{asChild:!0,children:(0,S.jsxs)(fRe,{className:H(`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`,t&&`pr-20`),children:[t&&(0,S.jsx)(Gq,{server:t,size:`md`,className:`mr-2`}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2 flex-1`,children:[(0,S.jsx)(`span`,{className:`truncate lg:max-w-[120px] xl:max-w-none`,children:t?_j(t):`Select server to inspect`}),t&&(0,S.jsx)(`div`,{className:`flex items-center gap-2`,children:t.error&&t.state!==`ready`?(0,S.jsxs)(kd,{children:[(0,S.jsx)(Ad,{asChild:!0,children:(0,S.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`})}),(0,S.jsx)(jd,{children:(0,S.jsx)(`p`,{className:`max-w-xs`,children:t.error})})]}):(0,S.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`}`})})]})]})}),t&&(0,S.jsxs)(`div`,{className:`absolute right-2 top-1/2 -translate-y-1/2 flex items-center gap-1`,children:[(0,S.jsxs)(kd,{children:[(0,S.jsx)(Ad,{asChild:!0,children:(0,S.jsx)(`button`,{type:`button`,onClick:()=>{l(t),s(!0)},className:`p-1.5 hover:bg-white/10 dark:hover:bg-black/10 rounded-full transition-colors text-white dark:text-black`,"aria-label":`View server info`,children:(0,S.jsx)(Jf,{className:`h-4 w-4`})})}),(0,S.jsx)(jd,{children:(0,S.jsx)(`p`,{children:`View server info`})})]}),(0,S.jsxs)(kd,{children:[(0,S.jsx)(Ad,{asChild:!0,children:(0,S.jsx)(`button`,{type:`button`,onClick:()=>{r(t.id)},className:`p-1.5 hover:bg-white/10 dark:hover:bg-black/10 rounded-full transition-colors text-white dark:text-black`,"aria-label":`Edit connection settings`,children:(0,S.jsx)(_p,{className:`h-4 w-4`})})}),(0,S.jsx)(jd,{children:(0,S.jsx)(`p`,{children:`Edit connection settings`})})]})]}),(0,S.jsxs)($l,{className:`w-[calc(100vw-2rem)] sm:w-[300px]`,align:`start`,children:[(0,S.jsx)(nu,{className:`cursor-pointer hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:()=>a(`/`),children:`MCP Servers`}),(0,S.jsx)(ru,{}),e.length===0?(0,S.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,S.jsxs)(eu,{onClick:()=>u(e.id),className:`flex items-center gap-3`,children:[(0,S.jsx)(Gq,{server:e,size:`sm`}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2 flex-1`,children:[(0,S.jsx)(`div`,{className:`font-medium`,children:_j(e)}),(0,S.jsx)(pRe,{status:e.state})]}),(0,S.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:t=>{t.stopPropagation(),l(e),s(!0)},children:(0,S.jsx)(Jf,{className:`h-3 w-3`})}),(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 hover:bg-zinc-100 dark:hover:bg-zinc-800`,onClick:t=>{t.stopPropagation(),r(e.id)},children:(0,S.jsx)(_p,{className:`h-3 w-3`})})]})]},e.id)),(0,S.jsx)(ru,{}),(0,S.jsx)(eu,{onClick:()=>a(`/`),children:(0,S.jsx)(`span`,{className:`text-blue-600 dark:text-blue-400`,children:`+ Add new server`})})]})]}),(0,S.jsx)(WV,{open:o,onOpenChange:s,connection:c})]})})}var hRe=[{id:`chat`,label:`Chat`,icon:ep,alwaysExpanded:!0},{id:`separator`},{id:`tools`,label:`Tools`,icon:Np},{id:`prompts`,label:`Prompts`,icon:tp},{id:`resources`,label:`Resources`,icon:Hf},{id:`sampling`,label:`Sampling`,icon:Gf},{id:`elicitation`,label:`Elicitation`,icon:Cp},{id:`notifications`,label:`Notifications`,icon:pf}];function gRe(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 _Re(e,t,n){return n&&t>0&&[`sampling`,`elicitation`,`notifications`].includes(e)}function vRe({collapsed:e,onToggle:t}){return(0,S.jsxs)(kd,{children:[(0,S.jsx)(Ad,{asChild:!0,children:(0,S.jsx)(`button`,{onClick:t,className:H(`shrink-0 p-1.5 rounded-md transition-all duration-500 ease-in-out cursor-pointer`,`text-muted-foreground hover:text-foreground`,`hover:bg-zinc-100 dark:hover:bg-zinc-800`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`),"aria-label":e?`Expand tabs`:`Collapse tabs`,type:`button`,children:e?(0,S.jsx)(xf,{className:`h-4 w-4 transition-transform duration-500 ease-in-out`}):(0,S.jsx)(bf,{className:`h-4 w-4 transition-transform duration-500 ease-in-out`})})}),(0,S.jsx)(jd,{children:(0,S.jsx)(`p`,{children:e?`Expand tabs`:`Collapse tabs`})})]})}function yRe(e){try{let t=new URL(e).hostname.toLowerCase();return t===`localhost`||t===`127.0.0.1`||t===`::1`||t===`0.0.0.0`}catch{return!1}}function bRe(e){try{return new URL(e).hostname.endsWith(`.mcp-use.run`)}catch{return!1}}function xRe(e){if(!e)return null;try{let t=new URL(e);if(t.protocol===`https:`)return t.origin}catch{}return null}var G9={starting:`Starting tunnel…`,stopping:`Stopping tunnel…`,reconnecting:`Reconnecting…`};function SRe({tunnelUrl:e,isTunnelStarting:t,setTunnelUrl:n,setIsTunnelStarting:r,copied:i,setCopied:a,handleCopy:o}){let[s,c]=(0,w.useState)(!1),[l,u]=(0,w.useState)(null),[d,f]=(0,w.useState)(0),[p,m]=(0,w.useState)(G9.starting);(0,w.useEffect)(()=>{if(!t){f(20);return}f(20);let e=setInterval(()=>f(e=>e>0?e-1:0),1e3);return()=>clearInterval(e)},[t]),(0,w.useEffect)(()=>{if(!e)return;c(!0);let t=new URLSearchParams(window.location.search);if(t.has(`openTunnelPopover`)){t.delete(`openTunnelPopover`);let e=t.toString();window.history.replaceState({},``,`${window.location.pathname}${e?`?${e}`:``}`)}},[e]),(0,w.useEffect)(()=>{let e=!1;return(async()=>{try{let t=await fetch(`/inspector/api/dev/info`);if(!t.ok||e)return;let r=await t.json();if(e)return;if(u(!!r.fromCli),r.tunnelUrl)n(new URL(r.tunnelUrl).origin);else{let e=xRe(r.mcpUrl??null);e&&n(e)}}catch{e||u(!1)}})(),()=>{e=!0}},[n]);let h=async e=>{let t=window.location.port||`3000`,i=`http://localhost:${t}/inspector/api/dev/info`,a=Date.now()+9e4;for(m(e?`Restarting with tunnel…`:`Restarting…`),await new Promise(e=>setTimeout(e,1500));Date.now()<a;){try{let r=await fetch(i,{cache:`no-store`});if(r.ok){let i=await r.json();if(!!i.tunnelUrl===e){let r=(i.tunnelUrl||i.mcpUrl||`http://localhost:${t}`).replace(/\/+$/,``)+`/mcp`;i.tunnelUrl?n(new URL(i.tunnelUrl).origin):n(null),sessionStorage.setItem(WM,JSON.stringify({url:r,name:`Local MCP Server`,transportType:`http`,connectionType:`Direct`})),zM.success(e?`Tunnel ready — reconnecting…`:`Tunnel stopped — reconnecting…`),m(G9.reconnecting);let a=new URL(window.location.href);a.searchParams.delete(`server`),a.searchParams.delete(`tunnelUrl`),a.searchParams.delete(`autoConnect`),e&&a.searchParams.set(`openTunnelPopover`,`1`),window.location.assign(a.toString());return}}}catch{}await new Promise(e=>setTimeout(e,1500))}zM.error(`Timeout waiting for server to restart`),r(!1)},g=async()=>{if(l===!1){zM.error("Start Tunnel requires `mcp-use dev` from your project directory.");return}m(G9.starting),r(!0);let e=!1;try{let t=await fetch(`/inspector/api/dev/start-tunnel`,{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({}));zM.error(e.error||`Failed to start tunnel`),r(!1);return}await h(!0),e=!0}catch{zM.error(`Failed to start tunnel`),r(!1)}try{ef.getInstance().capture(new Hd({action:`start`,success:e})).catch(()=>{})}catch{}},_=async()=>{m(G9.stopping),r(!0);let t=!1;try{let e=await fetch(`/inspector/api/dev/stop-tunnel`,{method:`POST`});if(!e.ok){let t=await e.json().catch(()=>({}));zM.error(t.error||`Failed to stop tunnel`),r(!1);return}a(!1),c(!1),await h(!1),t=!0}catch{zM.error(`Failed to stop tunnel`),r(!1)}try{ef.getInstance().capture(new Hd({action:`stop`,success:t,tunnelUrl:e})).catch(()=>{})}catch{}};if(t)return(0,S.jsxs)(`button`,{disabled:!0,className:`flex items-center gap-2 h-9 px-3 bg-violet-50 dark:bg-violet-950/40 border border-violet-200 dark:border-violet-800 rounded-full opacity-75 cursor-wait`,children:[(0,S.jsx)(Zf,{className:`size-4 text-violet-500 dark:text-violet-400 animate-spin`}),(0,S.jsxs)(`span`,{className:`text-sm font-medium text-violet-600 dark:text-violet-300 hidden lg:inline`,children:[`Start Tunnel `,(0,S.jsxs)(`span`,{className:`tabular-nums`,children:[d,`s`]})]})]});if(!e){let e=l===!0,t=l===null;return(0,S.jsxs)(`button`,{type:`button`,onClick:g,disabled:!e||t,title:l===!1?"Run `mcp-use dev` from your project to enable tunneling.":t?`Checking dev server…`:void 0,className:H(`flex items-center gap-2 h-9 px-3 border rounded-full transition-colors`,e&&!t?`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:[t?(0,S.jsx)(Zf,{className:`size-4 text-violet-500 dark:text-violet-400 animate-spin`}):(0,S.jsx)(Cf,{className:`size-4 text-violet-500 dark:text-violet-400`}),(0,S.jsx)(`span`,{className:`text-sm font-medium text-violet-600 dark:text-violet-300 hidden lg:inline`,children:`Start Tunnel`})]})}return(0,S.jsxs)(rY,{open:s,onOpenChange:c,children:[(0,S.jsx)(iY,{asChild:!0,children:(0,S.jsxs)(`button`,{className:`flex items-center gap-2 h-9 px-3 bg-gradient-to-r from-purple-500/10 to-pink-500/10 dark:from-purple-500/20 dark:to-pink-500/20 border border-purple-500/30 dark:border-purple-500/40 rounded-full hover:from-purple-500/20 hover:to-pink-500/20 dark:hover:from-purple-500/30 dark:hover:to-pink-500/30 transition-colors cursor-pointer`,children:[(0,S.jsx)(Cf,{className:`size-4 text-purple-600 dark:text-purple-400`}),(0,S.jsx)(`span`,{className:`text-sm font-medium text-purple-700 dark:text-purple-300 hidden lg:inline`,children:`Tunnel`})]})}),(0,S.jsx)(aY,{className:`w-[calc(100vw-2rem)] sm:w-96 overflow-hidden`,align:`end`,children:(0,S.jsxs)(`div`,{className:`space-y-4`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,S.jsx)(`h4`,{className:`font-semibold text-sm`,children:`Tunnel URL`}),(0,S.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,S.jsx)(ff,{className:`size-3`})]})]}),(0,S.jsxs)(`button`,{onClick:o,className:`-mx-4 px-4 py-3 bg-muted hover:bg-accent transition-colors cursor-pointer flex items-center gap-3 w-[calc(100%+2rem)]`,children:[(0,S.jsxs)(`code`,{className:`flex-1 text-[10px] font-mono truncate text-left`,children:[e,`/mcp`]}),i?(0,S.jsx)(vf,{className:`size-3.5 text-green-600 shrink-0`}):(0,S.jsx)(jf,{className:`size-3.5 shrink-0 text-muted-foreground`})]})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h5`,{className:`font-semibold text-sm mb-2`,children:`Use in ChatGPT`}),(0,S.jsxs)(`ol`,{className:`space-y-2 text-xs text-muted-foreground`,children:[(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`1.`}),(0,S.jsxs)(`span`,{children:[`Enable`,` `,(0,S.jsx)(`span`,{className:`font-medium text-foreground`,children:`dev mode`}),` `,`from settings`]})]}),(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`2.`}),(0,S.jsxs)(`span`,{children:[`In`,` `,(0,S.jsx)(`span`,{className:`font-medium text-foreground`,children:`App & Connectors`}),` `,`click on`,` `,(0,S.jsx)(`span`,{className:`font-medium text-foreground`,children:`create`})]})]}),(0,S.jsxs)(`li`,{className:`flex gap-2`,children:[(0,S.jsx)(`span`,{className:`font-semibold text-foreground`,children:`3.`}),(0,S.jsx)(`span`,{children:`Use the tunnel URL in the input`})]})]})]}),(0,S.jsxs)(`button`,{onClick:_,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,S.jsx)(Ep,{className:`size-3 fill-current`}),`Stop Tunnel`]})]})})]})}function CRe({connections:e,selectedServer:t,activeTab:n,onServerSelect:r,onTabChange:i,onCommandPaletteOpen:a,onOpenConnectionOptions:o,embedded:s=!1}){let{tunnelUrl:c,isTunnelStarting:l,setTunnelUrl:u,setIsTunnelStarting:d,embeddedConfig:f}=Jq(),{theme:p,setTheme:m}=BP(),h=!!t&&(yRe(t.url)||bRe(t.url)||!!c),[g,_]=(0,w.useState)(!1),[v,y]=(0,w.useState)(!1),[b,x]=(0,w.useState)(!1),[C,T]=(0,w.useState)(!0),[E,D]=(0,w.useState)(!1);if(f.singleTab)return null;let O=f.visibleTabs?hRe.filter(e=>e.id===`separator`||f.visibleTabs.includes(e.id)):hRe,k=async()=>{if(c)try{await dj(`${c}/mcp`),_(!0),zM.success(`Tunnel URL copied to clipboard`),setTimeout(()=>_(!1),2e3)}catch{zM.error(`Failed to copy URL`)}};return(0,S.jsxs)(`header`,{className:`w-full mx-auto`,children:[(0,S.jsxs)(`div`,{className:`flex lg:hidden flex-col gap-3`,children:[(0,S.jsxs)(`div`,{className:`flex items-center justify-between w-full`,children:[!s&&(0,S.jsx)(`div`,{className:`flex-1 flex justify-start`,children:(0,S.jsx)(mRe,{connections:e,selectedServer:t,onServerSelect:r,onOpenConnectionOptions:o,mobileMode:!0})}),!s&&(0,S.jsx)(`div`,{className:`flex-shrink-0 flex justify-center`,children:(0,S.jsx)(`div`,{className:`scale-150`,children:(0,S.jsx)(U9,{state:`collapsed`})})}),!s&&(0,S.jsxs)(`div`,{className:`flex-1 flex justify-end items-center gap-2`,children:[t&&(()=>{let e=_j(t);return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(lRe,{serverConfig:{url:c?`${c}/mcp`:t.url,name:e,headers:t.customHeaders,serverId:t.id},onSuccess:e=>zM.success(`Opening in ${e}...`),onError:e=>zM.error(`Failed: ${e.message}`),additionalItems:[{id:`ts-sdk`,label:`TypeScript SDK`,icon:(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/typescript`,alt:`TypeScript`,className:`h-4 w-4`}),onClick:()=>y(!0)},{id:`py-sdk`,label:`Python SDK`,icon:(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/python`,alt:`Python`,className:`h-4 w-4`}),onClick:()=>x(!0)}],trigger:(0,S.jsxs)(U,{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 p-2`,"aria-label":`Add to Client`,children:[(0,S.jsxs)(`span`,{className:`xl:hidden hidden sm:flex items-center gap-1`,children:[(0,S.jsx)(cp,{className:`size-3`}),`Client`]}),(0,S.jsxs)(`span`,{className:`hidden xl:flex items-center gap-1`,children:[`Add to Client`,(0,S.jsx)(yf,{className:`size-3`})]})]})}),(0,S.jsx)(W9,{open:v,onOpenChange:y,serverUrl:c?`${c}/mcp`:t.url,serverName:e,serverId:void 0,headers:t.customHeaders,language:`typescript`}),(0,S.jsx)(W9,{open:b,onOpenChange:x,serverUrl:c?`${c}/mcp`:t.url,serverName:e,serverId:void 0,headers:t.customHeaders,language:`python`})]})})(),h&&(0,S.jsx)(SRe,{tunnelUrl:c,isTunnelStarting:l,setTunnelUrl:u,setIsTunnelStarting:d,copied:g,setCopied:_,handleCopy:k}),(0,S.jsx)(U,{asChild:!0,size:`sm`,className:`rounded-full bg-blue-600 hover:bg-blue-700 text-white px-3`,children:(0,S.jsx)(`a`,{href:E?`https://manufact.com/cloud?ref=mcp-use-inspector`:`https://manufact.com/signup?ref=mcp-use-inspector`,target:`_blank`,rel:`noopener noreferrer`,onClick:()=>{try{ef.getInstance().capture(new Ud({referrer:`mcp-use-inspector`})).catch(()=>{})}catch{}},children:(0,S.jsx)(dp,{className:`size-4`})})}),(0,S.jsxs)(ql,{children:[(0,S.jsx)(Jl,{asChild:!0,children:(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`p-2 hover:bg-zinc-200 dark:hover:bg-zinc-800 rounded-full transition-colors`,"aria-label":`Settings`,children:(0,S.jsx)(_p,{className:`size-4`})})}),(0,S.jsxs)($l,{align:`end`,className:`w-48`,children:[(0,S.jsxs)(Yl,{children:[(0,S.jsxs)(Zl,{children:[p===`light`?(0,S.jsx)(Dp,{className:`size-4 mr-2`}):p===`dark`?(0,S.jsx)(ip,{className:`size-4 mr-2`}):(0,S.jsx)(rp,{className:`size-4 mr-2`}),`Theme`]}),(0,S.jsx)(Ql,{children:(0,S.jsxs)(Xl,{value:p,onValueChange:e=>m(e),children:[(0,S.jsxs)(tu,{value:`light`,children:[(0,S.jsx)(Dp,{className:`size-4 mr-2`}),`Light`]}),(0,S.jsxs)(tu,{value:`dark`,children:[(0,S.jsx)(ip,{className:`size-4 mr-2`}),`Dark`]}),(0,S.jsxs)(tu,{value:`system`,children:[(0,S.jsx)(rp,{className:`size-4 mr-2`}),`System`]})]})})]}),(0,S.jsx)(ru,{}),(0,S.jsx)(eu,{asChild:!0,children:(0,S.jsxs)(`a`,{href:`https://github.com/mcp-use/mcp-use`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,S.jsx)(MLe,{className:`h-4 w-4 mr-2`}),`GitHub`]})}),(0,S.jsx)(eu,{asChild:!0,children:(0,S.jsxs)(`a`,{href:`https://github.com/mcp-use/mcp-use/issues/new?labels=inspector&template=bug_report.md&title=%5BInspector%5D+`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,S.jsx)(_f,{className:`size-4 mr-2`}),`Report a Bug`]})})]})]})]})]}),t&&(0,S.jsx)(`div`,{className:`w-full`,children:(0,S.jsx)(z9,{value:n,onValueChange:e=>i(e),collapsed:C,onCollapsedChange:T,children:(0,S.jsx)(B9,{className:`w-full justify-center`,children:O.map(e=>{if(e.id===`separator`)return(0,S.jsx)(`div`,{className:`h-5 w-px bg-zinc-300 dark:bg-zinc-600 mx-1 shrink-0`},`separator`);let r=gRe(e.id,t),i=_Re(e.id,r,C);return(0,S.jsx)(V9,{value:e.id,"data-testid":`tab-${e.id}`,icon:e.icon,showDot:i,badge:(0,S.jsx)(cRe,{count:r,isActive:n===e.id,size:`sm`}),alwaysExpanded:`alwaysExpanded`in e&&e.alwaysExpanded,className:H(`[&>svg]:mr-0 flex-1 flex-row gap-2 relative`,C&&`pl-2`),children:(0,S.jsx)(`span`,{className:`sr-only`,children:e.label})},e.id)})})})})]}),(0,S.jsxs)(`div`,{className:`hidden lg:flex items-center justify-between gap-3`,children:[(0,S.jsxs)(`div`,{className:`flex items-center flex-wrap gap-2 md:space-x-6 space-x-2`,children:[!s&&(0,S.jsx)(mRe,{connections:e,selectedServer:t,onServerSelect:r,onOpenConnectionOptions:o}),t&&(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(z9,{value:n,onValueChange:e=>i(e),collapsed:C,onCollapsedChange:T,children:(0,S.jsx)(B9,{className:`overflow-x-auto`,collapsible:!0,children:O.map(e=>{if(e.id===`separator`)return(0,S.jsx)(`div`,{className:`h-5 w-px bg-zinc-300 dark:bg-zinc-600 mx-1 shrink-0`},`separator`);let r=gRe(e.id,t),i=r>0?`${e.label} (${r})`:e.label,a=_Re(e.id,r,C);return(0,S.jsx)(V9,{value:e.id,"data-testid":`tab-${e.id}`,icon:e.icon,showDot:a,badge:(0,S.jsx)(cRe,{count:r,isActive:n===e.id}),alwaysExpanded:`alwaysExpanded`in e&&e.alwaysExpanded,className:H(`[&>svg]:mr-0 lg:[&>svg]:mr-2 relative`,C&&`pl-4`),title:i,children:(0,S.jsx)(`span`,{className:`items-center gap-2 hidden lg:flex`,children:e.label})},e.id)})})}),(0,S.jsx)(vRe,{collapsed:C,onToggle:()=>T(!C)})]})]}),!s&&(0,S.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-4 flex-shrink-0`,children:[t&&(()=>{let e=_j(t);return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(lRe,{serverConfig:{url:c?`${c}/mcp`:t.url,name:e,headers:t.customHeaders,serverId:t.id},onSuccess:e=>zM.success(`Opening in ${e}...`),onError:e=>zM.error(`Failed: ${e.message}`),additionalItems:[{id:`ts-sdk`,label:`TypeScript SDK`,icon:(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/typescript`,alt:`TypeScript`,className:`h-4 w-4`}),onClick:()=>y(!0)},{id:`py-sdk`,label:`Python SDK`,icon:(0,S.jsx)(`img`,{src:`https://cdn.simpleicons.org/python`,alt:`Python`,className:`h-4 w-4`}),onClick:()=>x(!0)}],trigger:(0,S.jsxs)(U,{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,S.jsxs)(`span`,{className:`xl:hidden hidden sm:flex items-center gap-1`,children:[(0,S.jsx)(cp,{className:`size-3`}),`Client`]}),(0,S.jsxs)(`span`,{className:`hidden xl:flex items-center gap-1`,children:[`Add to Client`,(0,S.jsx)(yf,{className:`size-3`})]})]})}),(0,S.jsx)(W9,{open:v,onOpenChange:y,serverUrl:c?`${c}/mcp`:t.url,serverName:e,serverId:void 0,headers:t.customHeaders,language:`typescript`}),(0,S.jsx)(W9,{open:b,onOpenChange:x,serverUrl:c?`${c}/mcp`:t.url,serverName:e,serverId:void 0,headers:t.customHeaders,language:`python`})]})})(),h&&(0,S.jsx)(SRe,{tunnelUrl:c,isTunnelStarting:l,setTunnelUrl:u,setIsTunnelStarting:d,copied:g,setCopied:_,handleCopy:k}),(0,S.jsx)(U,{asChild:!0,className:`rounded-full bg-blue-600 hover:bg-blue-700 text-white px-4`,children:(0,S.jsxs)(`a`,{href:E?`https://manufact.com/cloud?ref=mcp-use-inspector`:`https://manufact.com/signup?ref=mcp-use-inspector`,target:`_blank`,rel:`noopener noreferrer`,onClick:()=>{try{ef.getInstance().capture(new Ud({referrer:`mcp-use-inspector`})).catch(()=>{})}catch{}},children:[(0,S.jsx)(dp,{className:`size-4`}),(0,S.jsx)(`span`,{className:`hidden sm:inline`,children:`Deploy`})]})}),(0,S.jsxs)(ql,{children:[(0,S.jsx)(Jl,{asChild:!0,children:(0,S.jsx)(U,{variant:`ghost`,size:`sm`,className:`p-2 hover:bg-zinc-200 dark:hover:bg-zinc-800 rounded-full transition-colors`,"aria-label":`Settings`,children:(0,S.jsx)(_p,{className:`size-4`})})}),(0,S.jsxs)($l,{align:`end`,className:`w-48`,children:[(0,S.jsxs)(eu,{onClick:a,"data-testid":`command-palette-trigger-button`,children:[(0,S.jsx)(Af,{className:`size-4 mr-2`}),`Command Palette`,(0,S.jsxs)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:[`⌘`,`K`]})]}),(0,S.jsxs)(Yl,{children:[(0,S.jsxs)(Zl,{children:[p===`light`?(0,S.jsx)(Dp,{className:`size-4 mr-2`}):p===`dark`?(0,S.jsx)(ip,{className:`size-4 mr-2`}):(0,S.jsx)(rp,{className:`size-4 mr-2`}),`Theme`]}),(0,S.jsx)(Ql,{children:(0,S.jsxs)(Xl,{value:p,onValueChange:e=>m(e),children:[(0,S.jsxs)(tu,{value:`light`,children:[(0,S.jsx)(Dp,{className:`size-4 mr-2`}),`Light`]}),(0,S.jsxs)(tu,{value:`dark`,children:[(0,S.jsx)(ip,{className:`size-4 mr-2`}),`Dark`]}),(0,S.jsxs)(tu,{value:`system`,children:[(0,S.jsx)(rp,{className:`size-4 mr-2`}),`System`]})]})})]}),(0,S.jsx)(ru,{}),(0,S.jsx)(eu,{asChild:!0,children:(0,S.jsxs)(`a`,{href:`https://github.com/mcp-use/mcp-use`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,S.jsx)(MLe,{className:`h-4 w-4 mr-2`}),`GitHub`]})}),(0,S.jsx)(eu,{asChild:!0,children:(0,S.jsxs)(`a`,{href:`https://github.com/mcp-use/mcp-use/issues/new?labels=inspector&template=bug_report.md&title=%5BInspector%5D+`,target:`_blank`,rel:`noopener noreferrer`,children:[(0,S.jsx)(_f,{className:`size-4 mr-2`}),`Report a Bug`]})})]})]}),f.chatApiUrl?(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(sRe,{chatApiUrl:f.chatApiUrl,onUserResolved:e=>D(!!e),fallback:(0,S.jsx)(`span`,{className:`[@media(min-width:1400px)]:hidden`,children:(0,S.jsx)(U9,{state:`expanded`})})}),(0,S.jsx)(`span`,{className:`hidden [@media(min-width:1400px)]:block`,children:(0,S.jsx)(U9,{state:`expanded`})})]}):(0,S.jsx)(U9,{state:`expanded`})]})]})]})}function wRe({children:e}){let t=tM(),n=Qj(),{servers:r,addServer:i,removeServer:a,updateServerMetadata:o,updateServer:s,storageLoaded:c}=uj(),l=(0,w.useCallback)((e,t,n,r,a)=>{i(e,{url:e,name:t,proxyConfig:n,transportType:r,preventAutoAuth:!0,useRedirectFlow:!0,clientOptions:{capabilities:{extensions:{"io.modelcontextprotocol/ui":{mimeTypes:[`text/html;profile=mcp-app`]}}}},...a?{oauth:a}:{}})},[i]),u=(0,w.useCallback)(async(e,t)=>{try{await s(e,t)}catch(t){console.error(`[Layout] Failed to update connection ${e}:`,t)}},[s]),d=(0,w.useCallback)(async(e,t)=>{try{await o(e,t)}catch(t){console.error(`[Layout] Failed to update connection metadata for ${e}:`,t)}},[o]),{selectedServerId:f,setSelectedServerId:p,activeTab:m,setActiveTab:h,navigateToItem:g,setTunnelUrl:_,tunnelUrl:v,isEmbedded:y,embeddedConfig:b,setEmbeddedMode:x}=Jq(),[C,T]=(0,w.useState)(!1),[E,D]=(0,w.useState)(null),O=Pwe();(0,w.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)}x(!0,e),e.defaultTab&&h(e.defaultTab)}},[]),(0,w.useEffect)(()=>{_(new URLSearchParams(n.search).get(`tunnelUrl`))},[n.search,_]),(0,w.useEffect)(()=>{let e=new URLSearchParams(n.search).get(`tab`);e&&[`tools`,`prompts`,`resources`,`chat`,`sampling`,`elicitation`,`notifications`].includes(e)&&h(e)},[n.search,h]);let k=(0,w.useRef)(null),A=(0,w.useRef)(Date.now()),j=(0,w.useRef)(new Set),M=(0,w.useRef)(0);(0,w.useEffect)(()=>{let e=()=>{M.current++};return window.addEventListener(`mcp-tool-executed`,e),()=>window.removeEventListener(`mcp-tool-executed`,e)},[]),(0,w.useEffect)(()=>{let e=()=>{try{let e=Math.round((Date.now()-A.current)/1e3);ef.getInstance().capture(new qd({durationSeconds:e,tabsVisited:j.current.size,toolsExecuted:M.current})).catch(()=>{})}catch{}};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[]);let N=(0,w.useCallback)(e=>{try{ef.getInstance().capture(new Gd({tab:e,previousTab:k.current})).catch(()=>{})}catch{}k.current=e,j.current.add(e),h(e);let r=new URLSearchParams(n.search);r.set(`tab`,e),t(`/?${r.toString()}`,{replace:!0})},[h,t,n.search]);(0,w.useEffect)(()=>{let e=e=>{let t=e.detail.requestId;f&&g(f,`sampling`,t)},t=e=>{let t=e.detail.requestId;f&&g(f,`elicitation`,t)},n=e=>{let t=e.detail.toolName;f&&t?g(f,`tools`,t):f&&N(`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)}},[f,N,g]);let P=(0,w.useRef)(null),F=(0,w.useRef)(null),I=(0,w.useRef)(null),{isAutoConnecting:L}=xhe({connections:r,addConnection:l,removeConnection:a,configLoaded:c,embedded:y}),ee=(0,w.useCallback)(e=>{ef.getInstance().capture(new Bd({trigger:e})).catch(()=>{}),T(!0)},[]),te=e=>{let i=r.find(t=>t.id===e);if(!i||i.state!==`ready`){zM.error(`Server is not connected and cannot be inspected`);return}p(e);let a=new URLSearchParams(n.search),o=a.get(`tunnelUrl`),s=a.get(`tab`),c=new URLSearchParams;c.set(`server`,e),o&&c.set(`tunnelUrl`,o),s&&c.set(`tab`,s),t(`/?${c.toString()}`)},ne=(0,w.useCallback)(e=>{D(e)},[]),re=(0,w.useCallback)(e=>{if(!E)return;let t=pj(E)||r.find(e=>e.id===E);e.url===E?t&&hj(t,e)?d(E,{name:e.name||e.url}):u(E,{name:e.name,proxyConfig:e.proxyConfig,transportType:e.transportType,oauth:e.oauth}):(a(E),l(e.url,e.name,e.proxyConfig,e.transportType,e.oauth)),D(null),zM.success(`Connection settings updated`)},[E,r,a,l,d,u]),R=(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`),zM.error(`Server is not connected and cannot be inspected`);return}console.warn(`[Layout] Calling navigateToItem:`,{serverId:a,tab:e,itemName:i}),g(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),N(e)},z=r.find(e=>e.id===f),B=z?z.tools.map(e=>({...e,_serverId:z.id})):r.flatMap(e=>e.state===`ready`?e.tools.map(t=>({...t,_serverId:e.id,_serverName:e.name})):[]),ie=z?z.prompts.map(e=>({...e,_serverId:z.id})):r.flatMap(e=>e.state===`ready`?e.prompts.map(t=>({...t,_serverId:e.id,_serverName:e.name})):[]),ae=z?z.resources.map(e=>({...e,_serverId:z.id})):r.flatMap(e=>e.state===`ready`?e.resources.map(t=>({...t,_serverId:e.id,_serverName:e.name})):[]);(0,w.useEffect)(()=>{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!==f&&p(i)},[n.search,f,p,r,t]),(0,w.useEffect)(()=>{let e=new URLSearchParams(n.search).get(`server`);if(!e)return;let i=r.find(t=>t.id===e);if(!i){let e=setTimeout(()=>t(`/`),3e3);return()=>clearTimeout(e)}if(i.state===`failed`){let e=setTimeout(()=>t(`/`),2e3);return()=>clearTimeout(e)}},[n.search,t,r]),(0,w.useEffect)(()=>{if(!y)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,i=e.name??`Server`,a=e.transportType??`http`,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={proxyAddress:`${window.location.origin}/inspector/api/proxy`,...Object.keys(o).length>0&&{headers:o}};r.find(e=>e.url===t)||l(t,i,s,a),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)},[y,r,l]);let oe=(0,w.useRef)(!1);if((0,w.useEffect)(()=>{if(!y||oe.current||f)return;let e=r.find(e=>e.state===`ready`);if(e){oe.current=!0,p(e.id);let r=new URLSearchParams(n.search);r.set(`server`,e.id),t(`/?${r.toString()}`,{replace:!0})}},[y,r,f,p,t,n.search]),Yq({onCommandPalette:()=>ee(`keyboard`),onToolsTab:()=>{z&&N(`tools`)},onPromptsTab:()=>{z&&N(`prompts`)},onResourcesTab:()=>{z&&N(`resources`)},onChatTab:()=>{z&&N(`chat`)},onHome:()=>{t(`/`)},onFocusSearch:()=>{m===`tools`&&P.current?P.current.focusSearch():m===`prompts`&&F.current?F.current.focusSearch():m===`resources`&&I.current&&I.current.focusSearch()},onBlurSearch:()=>{m===`tools`&&P.current?P.current.blurSearch():m===`prompts`&&F.current?F.current.blurSearch():m===`resources`&&I.current&&I.current.blurSearch()}}),L)return(0,S.jsx)(`div`,{className:`h-screen bg-white dark:bg-zinc-900 flex items-center justify-center`,children:(0,S.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,S.jsx)(Wq,{className:`h-8 w-8 text-zinc-600 dark:text-zinc-400`}),(0,S.jsx)(`p`,{className:`text-sm text-zinc-600 dark:text-zinc-400`,children:`Connecting to MCP server...`})]})});let se=y&&b.singleTab,ce=y?{backgroundColor:b.backgroundColor||`#f3f3f3`,padding:se?`0`:b.padding||`0.5rem`}:{};return(0,S.jsx)(Od,{children:(0,S.jsxs)(`div`,{className:y?se?`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 px-2 py-2 sm:px-4 sm:py-4 gap-2 sm:gap-4`,style:ce,children:[!se&&(0,S.jsx)(CRe,{connections:r,selectedServer:z,activeTab:m,onServerSelect:te,onTabChange:N,onCommandPaletteOpen:()=>ee(`button`),onOpenConnectionOptions:ne,embedded:y}),(0,S.jsx)(`main`,{className:se?`flex-1 w-full bg-white dark:bg-black p-0 overflow-auto`:`flex-1 w-full mx-auto bg-white dark:bg-black rounded-2xl border border-zinc-200 dark:border-zinc-700 p-0 overflow-auto`,children:(0,S.jsx)(jLe,{selectedServer:z,activeTab:m,toolsSearchRef:P,promptsSearchRef:F,resourcesSearchRef:I,children:e})}),(0,S.jsx)(fTe,{isOpen:C,onOpenChange:T,tools:B,prompts:ie,resources:ae,savedRequests:O,connections:r,selectedServer:z,tunnelUrl:v,onNavigate:R,onServerSelect:te}),(0,S.jsx)(GV,{connection:E&&r.find(e=>e.id===E)||null,open:E!==null,onOpenChange:e=>{e||D(null)},onConnect:re})]})})}function K9(e){let t=a(()=>{throw Error(`Invalid url to pass to open(): ${e}`)},`abort`),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(TRe).join(`&`),n.hash=n.hash.slice(0,1)+encodeURIComponent(n.hash.slice(1)),n.href}a(K9,`sanitizeUrl`);function TRe([e,t]){return`${encodeURIComponent(e)}${t.length>0?`=${encodeURIComponent(t)}`:``}`}a(TRe,`sanitizeParam`);var ERe=class e{static{a(this,`OAuthSessionStore`)}serverUrl;storageKeyPrefix;serverUrlHash;clientName;clientUri;logoUri;callbackUrl;scope;store;_cachedAuthServerUrl=null;_cachedMetadata=null;_refreshPromise=null;constructor(t,n,r){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:``),this.logoUri=n.logoUri||`https://mcp-use.com/logo.png`,this.callbackUrl=K9(n.callbackUrl||(typeof window<`u`?new URL(`/oauth/callback`,window.location.origin).toString():`/oauth/callback`)),this.scope=n.scope,this.store=r}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}:{}}}async tokens(){let e=this.getKey(`tokens`),t=await this.store.get(e);if(t)try{let e=JSON.parse(t);if(e.access_token&&e.refresh_token)try{let t=JSON.parse(atob(e.access_token.split(`.`)[1]));if(t.exp&&Date.now()>=(t.exp-30)*1e3){console.log(`[tokens] Access token expiring soon, refreshing...`);let t=await this._dedupedRefresh(e);if(t)return console.log(`[tokens] Refreshed successfully`),t}}catch{}return e}catch(t){console.warn(`[${this.storageKeyPrefix}] Failed to parse tokens:`,t),await this.store.remove(e);return}}async saveTokens(e){await this.store.set(this.getKey(`tokens`),JSON.stringify(e)),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`))}async clientInformation(){let e=this.getKey(`client_info`),t=await this.store.get(e);if(t)try{let n=JSON.parse(t),r=Array.isArray(n.redirect_uris)?n.redirect_uris:[];if(!(r.length===0||r.includes(this.redirectUrl))){console.info(`[${this.storageKeyPrefix}] Invalidating cached OAuth client info due to redirect URI mismatch.`),await this.store.remove(e),await this.store.remove(this.getKey(`tokens`)),await this.store.remove(this.getKey(`last_auth_url`));return}return n}catch(t){console.warn(`[${this.storageKeyPrefix}] Failed to parse client information:`,t),await this.store.remove(e);return}}async saveClientInformation(e){let t=this.getKey(`client_info`);await this.store.set(t,JSON.stringify(e))}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){switch(e){case`all`:await this.store.remove(this.getKey(`tokens`)),await this.store.remove(this.getKey(`client_info`)),await this.store.remove(this.getKey(`code_verifier`)),await this.store.remove(this.getKey(`last_auth_url`));break;case`client`:await this.store.remove(this.getKey(`client_info`));break;case`tokens`:await this.store.remove(this.getKey(`tokens`));break;case`verifier`:await this.store.remove(this.getKey(`code_verifier`));break;default:break}}async storeAuthorizationState(e,t={}){let n=globalThis.crypto.randomUUID(),r=`${this.storageKeyPrefix}:state_${n}`,i=await this.store.get(this.getKey(`code_verifier`)),a={serverUrlHash:this.serverUrlHash,expiry:Date.now()+1e3*60*10,codeVerifier:i||void 0,providerOptions:{serverUrl:this.serverUrl,storageKeyPrefix:this.storageKeyPrefix,clientName:this.clientName,clientUri:this.clientUri,callbackUrl:this.callbackUrl,...t.extraProviderOptions??{}},flowType:t.flowType,returnUrl:t.returnUrl};e.searchParams.set(`state`,n);let o=K9(e.toString());return await this.store.set(r,JSON.stringify(a)),await this.store.set(this.getKey(`last_auth_url`),o),o}async _refresh(e){try{if(!this._cachedAuthServerUrl||!this._cachedMetadata){let e=(await yk(this.serverUrl)).authorization_servers?.[0];if(!e)return null;let t=await xk(e);if(!t)return null;this._cachedAuthServerUrl=e,this._cachedMetadata=t}let t=await this.clientInformation();if(!t)return null;let n=await Sk(this._cachedAuthServerUrl,{metadata:this._cachedMetadata,clientInformation:t,refreshToken:e.refresh_token});return await this.saveTokens(n),n}catch{return null}}async _dedupedRefresh(e){if(this._refreshPromise)return this._refreshPromise;this._refreshPromise=this._refresh(e);try{return await this._refreshPromise}finally{this._refreshPromise=null}}async forceRefresh(){let e=await this.store.get(this.getKey(`tokens`));if(!e)return null;let t;try{t=JSON.parse(e)}catch{return null}return t.refresh_token?this._dedupedRefresh(t):null}async getClientCredentials(){try{let e=await this.clientInformation();return e?.client_id?{client_id:e.client_id,...e.client_secret?{client_secret:e.client_secret}:{}}:null}catch{return null}}async getTokenEndpoint(){if(this._cachedMetadata?.token_endpoint)return this._cachedMetadata.token_endpoint;try{let e=await this.store.get(this.getKey(`token_endpoint`));if(e)return e;let t=(await yk(this.serverUrl)).authorization_servers?.[0];if(!t)return null;let n=await xk(t);return n?.token_endpoint?(this._cachedAuthServerUrl=t,this._cachedMetadata=n,await this.store.set(this.getKey(`token_endpoint`),n.token_endpoint),n.token_endpoint):null}catch{return null}}},DRe=class{static{a(this,`LocalStorageKVStore`)}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}};async function ORe(e){return typeof e==`string`?e:e instanceof URLSearchParams||e instanceof FormData?Object.fromEntries(e.entries()):e instanceof Blob?await e.text():e}a(ORe,`serializeBody`);var kRe=class{static{a(this,`BrowserOAuthClientProvider`)}serverUrl;staticClientInfo;session;preventAutoAuth;useRedirectFlow;oauthProxyUrl;connectionUrl;originalFetch;_lastOriginalResource=null;onPopupWindow;constructor(e,t={}){this.serverUrl=e,this.session=new ERe(e,t,new DRe),this.preventAutoAuth=t.preventAutoAuth,this.useRedirectFlow=t.useRedirectFlow,this.oauthProxyUrl=t.oauthProxyUrl,this.connectionUrl=t.connectionUrl,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}getKey(e){return this.session.getKey(e)}installFetchInterceptor(){if(!this.oauthProxyUrl){console.warn(`[BrowserOAuthProvider] No OAuth proxy URL configured, skipping fetch interceptor installation`);return}if(!this.originalFetch)this.originalFetch=window.fetch;else{console.warn(`[BrowserOAuthProvider] Fetch interceptor already installed`);return}let e=this.oauthProxyUrl,t=this.connectionUrl,n=this.serverUrl,r=this.originalFetch;console.log(`[BrowserOAuthProvider] Installing fetch interceptor with proxy: ${e}`),window.fetch=async(i,a)=>{let o=typeof i==`string`?i:i instanceof URL?i.toString():i.url;if(!(o.includes(`/.well-known/`)||o.match(/\/(register|token|authorize)$/)))return await r(i,a);try{let t=new URL(o),n=new URL(e);if(t.origin===n.origin&&(t.pathname.startsWith(n.pathname)||o.includes(`/inspector/api/oauth`)))return await r(i,a)}catch{}try{let i=o.includes(`/.well-known/`),s=i?`${e}/metadata?url=${encodeURIComponent(o)}`:`${e}/proxy`;if(console.log(`[OAuth Proxy] Routing ${i?`metadata`:`request`} through: ${s}`),i){let e={...a?.headers?Object.fromEntries(new Headers(a.headers)):{}};t&&(e[`X-Connection-URL`]=t);let i=new URL(s);n&&i.searchParams.set(`mcp_url`,n);let o=await r(i.toString(),{...a,method:`GET`,headers:e});try{if((o.headers.get(`content-type`)||``).includes(`application/json`)){let e=await o.clone().json(),t=e&&typeof e==`object`&&typeof e._original_resource==`string`?e._original_resource:null;t&&(this._lastOriginalResource=t)}}catch{}return o}let c=a?.body?await ORe(a.body):void 0,l=await(await r(s,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:o,method:a?.method||`POST`,headers:a?.headers?Object.fromEntries(new Headers(a.headers)):{},body:c})})).json();return new Response(JSON.stringify(l.body),{status:l.status,statusText:l.statusText,headers:new Headers(l.headers)})}catch(e){return console.error(`[OAuth Proxy] Request failed, falling back to direct fetch:`,e),await r(i,a)}}}restoreFetch(){this.originalFetch&&=(console.log(`[BrowserOAuthProvider] Restoring original fetch`),window.fetch=this.originalFetch,void 0)}get redirectUrl(){return this.session.redirectUrl}get clientMetadata(){return this.session.clientMetadata}tokens(){return this.session.tokens()}saveTokens(e){return this.session.saveTokens(e)}async clientInformation(){return this.staticClientInfo?this.staticClientInfo:this.session.clientInformation()}async saveClientInformation(e){if(!this.staticClientInfo)return this.session.saveClientInformation(e)}codeVerifier(){return this.session.codeVerifier()}saveCodeVerifier(e){return this.session.saveCodeVerifier(e)}invalidateCredentials(e){return this.session.invalidateCredentials(e)}getTokenEndpoint(){return this.session.getTokenEndpoint()}getClientCredentials(){return this.session.getClientCredentials()}async prepareAuthorizationUrl(e){return this.rewriteResourceIfLocalProxy(e),this.session.storeAuthorizationState(e,{extraProviderOptions:{oauthProxyUrl:this.oauthProxyUrl,connectionUrl:this.connectionUrl,...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)}}rewriteResourceIfLocalProxy(e){let t=e.searchParams.get(`resource`),n=!!(t&&(t.includes(`/inspector/api/proxy`)||t.includes(`/api/proxy`)||t.includes(`localhost:3000`))),r=!!(t&&this.connectionUrl&&t===this.connectionUrl),i=!!(t&&(this._lastOriginalResource||this.serverUrl)&&(r||n)),a=this._lastOriginalResource||this.serverUrl;i&&a&&e.searchParams.set(`resource`,a)}getLastAttemptedAuthUrl(){let e=localStorage.getItem(this.getKey(`last_auth_url`));return e?K9(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}},ARe=`mcp_auth_callback`,jRe=`mcp_auth_callback`;function q9(e){try{return typeof localStorage<`u`&&!!localStorage.getItem(e)}catch{return!1}}a(q9,`hasStoredTokens`);function MRe({popup:e,state:t,tokensKey:n,timeoutMs:r=5*6e4,closePollMs:i=1e3,closeGraceMs:o=2e4,expectedOrigin:s=typeof window<`u`?window.location.origin:``}){return new Promise(c=>{let l=!1,u=null,d=null,f=null,p=null,m=a(()=>{if(u&&=(clearInterval(u),null),d&&=(clearTimeout(d),null),f&&=(clearTimeout(f),null),typeof window<`u`&&(window.removeEventListener(`message`,_),window.removeEventListener(`storage`,y)),p){try{p.removeEventListener(`message`,v),p.close()}catch{}p=null}},`cleanup`),h=a(e=>{l||(l=!0,m(),c(e))},`settle`),g=a(e=>{!e||e.type!==`mcp_auth_callback`||e.state&&t&&e.state!==t||(e.success?h({kind:`success`}):h({kind:`error`,error:e.error??`Authentication failed in callback.`}))},`handlePayload`),_=a(e=>{s&&e.origin!==s||g(e.data)},`messageHandler`),v=a(e=>{g(e.data)},`broadcastHandler`),y=a(e=>{e.key===n&&e.newValue&&h({kind:`success`})},`storageHandler`);if(typeof window<`u`&&(window.addEventListener(`message`,_),window.addEventListener(`storage`,y)),typeof BroadcastChannel<`u`)try{p=new BroadcastChannel(ARe),p.addEventListener(`message`,v)}catch{p=null}e&&(u=setInterval(()=>{if(l)return;let t=!1;try{t=e.closed}catch{t=!1}if(t){if(u&&=(clearInterval(u),null),q9(n)){h({kind:`success`});return}f=setTimeout(()=>{h(q9(n)?{kind:`success`}:{kind:`cancelled`})},o)}},i)),d=setTimeout(()=>{h(q9(n)?{kind:`success`}:{kind:`timeout`})},r)})}a(MRe,`runAuthPopup`);var J9=null;function Y9(){if(typeof window>`u`)return!1;let e=window.name;return typeof e==`string`&&e.startsWith(`mcp_auth_`)}a(Y9,`isMcpAuthPopupWindow`);function X9(e,t,n){return{type:jRe,success:e,...e?{}:{error:t??`Unknown error`},...n?.state?{state:n.state}:{},...n?.serverUrlHash?{serverUrlHash:n.serverUrlHash}:{}}}a(X9,`buildCallbackPayload`);function Z9(e,t,n){if(typeof BroadcastChannel>`u`)return;let r=null;try{r=new BroadcastChannel(ARe),r.postMessage(X9(e,t,n))}catch(e){console.warn(`[mcp-callback] Failed to broadcast auth callback over BroadcastChannel:`,e)}finally{r&&setTimeout(()=>{try{r?.close()}catch{}},0)}}a(Z9,`broadcastAuthCallback`);function Q9(e,t,n=`success`,r){if(!(typeof document>`u`))try{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`);n===`error`&&(o.style.color=`red`,o.style.backgroundColor=`#ffebeb`,o.style.border=`1px solid red`,o.style.padding=`10px`,o.style.borderRadius=`4px`),o.textContent=t,i.appendChild(o);let s=document.createElement(`p`);s.textContent=`You can close this window or `;let c=document.createElement(`a`);if(c.href=`#`,c.textContent=`click here to close`,c.onclick=e=>(e.preventDefault(),window.close(),!1),s.appendChild(c),s.appendChild(document.createTextNode(`.`)),i.appendChild(s),r){let e=document.createElement(`p`),t=document.createElement(`a`);t.href=r,t.textContent=`Return to the app`,e.appendChild(t),i.appendChild(e)}document.body.appendChild(i)}catch{}}a(Q9,`renderCloseWindowMessage`);function NRe(){return J9||(J9=PRe(),J9)}a(NRe,`onMcpAuthorization`);async function PRe(){let e=new URLSearchParams(window.location.search),t=e.get(`code`),n=e.get(`state`),r=e.get(`error`),i=e.get(`error_description`),o=`[mcp-callback]`;console.log(`${o} Handling callback...`,{code:t,state:n,error:r,errorDescription:i});let s=null,c=null,l=null;try{if(!n)throw Error(`State parameter not found or invalid in callback query parameters.`);console.log(`[mcp-callback] Looking for state: ${n}`),console.log(`[mcp-callback] All localStorage keys:`,Object.keys(localStorage));let e=`mcp:auth:state_${n}`;if(localStorage.getItem(e))l=e,console.log(`[mcp-callback] Found state with default key: ${e}`);else{let e=`:state_${n}`;for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);if(n&&n.endsWith(e)){l=n,console.log(`[mcp-callback] Found state with dynamic key: ${n}`);break}}}if(!l){let e=Object.keys(localStorage).filter(e=>e.includes(`state`));throw console.log(`[mcp-callback] State keys in storage:`,e),Error(`Invalid or expired state parameter "${n}". No matching state found in storage.`)}let u=localStorage.getItem(l);if(!u)throw Error(`Invalid or expired state parameter "${n}". No matching state found in storage.`);try{c=JSON.parse(u)}catch{throw Error(`Failed to parse stored OAuth state.`)}if(!c.expiry||c.expiry<Date.now())throw localStorage.removeItem(l),Error(`OAuth state has expired. Please try initiating authentication again.`);let d={state:n,serverUrlHash:c.serverUrlHash};if(r){console.log(`${o} OAuth error received: ${r} - ${i||`No description`}`);let e=c.flowType===`redirect`,t=window.opener&&!window.opener.closed,n=Y9()||c.flowType===`popup`,s=a(e=>{console.log(`${o} Returning to: ${e}`),localStorage.removeItem(l);let t=new URL(e);t.searchParams.set(`auth_error`,r),i&&t.searchParams.set(`auth_error_description`,i),window.location.href=t.toString()},`redirectWithError`);if(t){window.opener.postMessage(X9(!1,`${r}${i?`: ${i}`:``}`,d),window.location.origin),localStorage.removeItem(l),window.close();return}if(c.returnUrl&&(e||!n)){s(c.returnUrl);return}if(n){Z9(!1,`${r}${i?`: ${i}`:``}`,d),localStorage.removeItem(l),Q9(`Authentication Error`,`${r}${i?`: ${i}`:``}`,`error`,c.returnUrl);try{window.close()}catch{}return}throw Error(`OAuth error: ${r}${i?` - ${i}`:``}`)}if(!t)throw Error(`Authorization code not found in callback query parameters.`);if(!c.providerOptions)throw Error(`Stored state is missing required provider options.`);let{serverUrl:f,...p}=c.providerOptions,m=p.connectionUrl,h=!!(m&&/run\.mcp-use\.com|mcp-use\.run/.test(m)),g=h?m:void 0,_=p.oauthProxyUrl,v=g;if(!_&&v)try{let e=new URL(window.location.href);if(e.pathname.includes(`/oauth/callback`)){let t=e.pathname.replace(/\/oauth\/callback.*$/,``);(!t||t===``)&&(/run\.mcp-use\.com|mcp-use\.run/.test(v)?console.log(`${o} Gateway connection detected; skipping default /inspector OAuth proxy inference`):(t=`/inspector`,console.log(`${o} Callback at root /oauth/callback, using /inspector as base path for OAuth proxy`))),t&&(_=`${e.origin}${t}/api/oauth`),console.log(`${o} Inferred OAuth proxy URL from callback: ${_}`)}}catch(e){console.warn(`${o} Could not infer OAuth proxy URL:`,e)}console.log(`${o} Re-instantiating provider for server: ${f}`),s=new kRe(f,{...p,oauthProxyUrl:_,connectionUrl:v});let y=`${p.storageKeyPrefix}_${c.serverUrlHash}_code_verifier`,b=c.codeVerifier||localStorage.getItem(y);if(b)localStorage.setItem(y,b),localStorage.setItem(s.getKey(`code_verifier`),b);else throw Error(`[${p.storageKeyPrefix}] Code verifier missing for OAuth state ${n}. Please restart authentication.`);_&&(console.log(`${o} Installing fetch interceptor for token exchange (proxy: ${_})`),s.installFetchInterceptor()),console.log(`${o} Calling SDK auth() to exchange code...`);let x=h&&v?v:f;console.log(`${o} Using SDK serverUrl: ${x} (connectionUrl: ${v||`none`})`);let S=await hk(s,{serverUrl:x,authorizationCode:t});if(S===`AUTHORIZED`){console.log(`${o} Authorization successful via SDK auth().`);let e=c.flowType===`redirect`,t=Y9()||c.flowType===`popup`;if(e&&c.returnUrl)console.log(`${o} Redirect flow complete. Returning to: ${c.returnUrl}`),localStorage.removeItem(l),window.location.href=c.returnUrl;else if(window.opener&&!window.opener.closed)console.log(`${o} Popup flow complete. Notifying opener...`),window.opener.postMessage(X9(!0,void 0,d),window.location.origin),localStorage.removeItem(l),window.close();else if(t){console.log(`${o} Popup flow complete but opener was lost; broadcasting success and rendering close-window message.`),Z9(!0,void 0,d),localStorage.removeItem(l),Q9(`Authentication Successful!`,`You're authenticated. You can close this window and return to the app.`,`success`,c.returnUrl);try{window.close()}catch{}}else if(c.returnUrl)console.log(`${o} Popup flow without opener (top-level nav). Returning to: ${c.returnUrl}`),localStorage.removeItem(l),window.location.href=c.returnUrl;else{console.warn(`${o} No opener window or return URL detected. Redirecting to root.`),localStorage.removeItem(l);let e=window.location.pathname.split(`/`).filter(Boolean),t=e.length>0&&e[e.length-1]===`callback`?`/`+e.slice(0,-2).join(`/`):`/`;window.location.href=t||`/`}}else throw console.warn(`${o} SDK auth() returned unexpected status: ${S}`),Error(`Unexpected result from authentication library: ${S}`)}catch(e){console.error(`${o} Error during OAuth callback handling:`,e);let t=e instanceof Error?e.message:String(e),r={state:n,serverUrlHash:c?.serverUrlHash};window.opener&&!window.opener.closed?window.opener.postMessage(X9(!1,t,r),window.location.origin):(Y9()||c?.flowType===`popup`)&&Z9(!1,t,r);try{document.body.innerHTML=``;let n=document.createElement(`div`);n.style.fontFamily=`sans-serif`,n.style.padding=`20px`;let r=document.createElement(`h1`);r.textContent=`Authentication Error`,n.appendChild(r);let i=document.createElement(`p`);i.style.color=`red`,i.style.backgroundColor=`#ffebeb`,i.style.border=`1px solid red`,i.style.padding=`10px`,i.style.borderRadius=`4px`,i.textContent=t,n.appendChild(i);let a=document.createElement(`p`);a.textContent=`You can close this window or `;let o=document.createElement(`a`);if(o.href=`#`,o.textContent=`click here to close`,o.onclick=e=>(e.preventDefault(),window.close(),!1),a.appendChild(o),a.appendChild(document.createTextNode(`.`)),n.appendChild(a),e instanceof Error&&e.stack){let t=document.createElement(`pre`);t.style.fontSize=`0.8em`,t.style.color=`#555`,t.style.marginTop=`20px`,t.style.whiteSpace=`pre-wrap`,t.textContent=e.stack,n.appendChild(t)}document.body.appendChild(n)}catch(e){console.error(`${o} Could not display error in callback window:`,e)}l&&localStorage.removeItem(l),s&&localStorage.removeItem(s.getKey(`last_auth_url`))}}a(PRe,`doOnMcpAuthorization`);async function FRe(e,t=fetch){let n=e.replace(/\/$/,``),r=await t(n.endsWith(`/mcp`)?n:`${n}/mcp`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({jsonrpc:`2.0`,method:`initialize`,id:1,params:{}})});if(r.status!==401)return{};let{resourceMetadataUrl:i,scope:a}=_k(r);return{resourceMetadataUrl:i,scope:a}}a(FRe,`probeAuthParams`);function IRe(){let[e,t]=(0,w.useState)(`processing`),[n,r]=(0,w.useState)(``);return(0,w.useEffect)(()=>{console.log(`[OAuthCallback] Component mounted, handling authorization...`),console.log(`[OAuthCallback] Current URL:`,window.location.href),NRe().then(()=>{console.log(`[OAuthCallback] Authorization successful`),t(`success`)}).catch(e=>{console.error(`[OAuthCallback] Authorization failed:`,e),t(`error`),r(e instanceof Error?e.message:String(e))})},[]),e===`processing`?(0,S.jsx)(`div`,{className:`h-screen w-full flex items-center justify-center bg-white dark:bg-zinc-900`,children:(0,S.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,S.jsx)(Zf,{className:`h-8 w-8 animate-spin text-zinc-600 dark:text-zinc-400`}),(0,S.jsx)(`p`,{className:`text-sm text-zinc-600 dark:text-zinc-400`,children:`Completing authentication...`})]})}):e===`error`?(0,S.jsx)(`div`,{className:`h-screen w-full flex items-center justify-center bg-white dark:bg-zinc-900`,children:(0,S.jsxs)(`div`,{className:`max-w-md p-6`,children:[(0,S.jsx)(`h1`,{className:`text-xl font-semibold text-red-600 dark:text-red-400 mb-2`,children:`Authentication Error`}),(0,S.jsx)(`p`,{className:`text-sm text-zinc-600 dark:text-zinc-400 mb-4`,children:n}),(0,S.jsx)(`p`,{className:`text-xs text-zinc-500 dark:text-zinc-500`,children:`You can close this window and try again.`})]})}):(0,S.jsx)(`div`,{className:`h-screen w-full flex items-center justify-center bg-white dark:bg-zinc-900`,children:(0,S.jsxs)(`div`,{className:`max-w-md p-6`,children:[(0,S.jsx)(`h1`,{className:`text-xl font-semibold text-green-600 dark:text-green-400 mb-2`,children:`Authentication Successful!`}),(0,S.jsx)(`p`,{className:`text-sm text-zinc-600 dark:text-zinc-400`,children:`Redirecting you back...`})]})})}var LRe={model:`stub-model`,stopReason:`endTurn`,role:`assistant`,content:{type:`text`,text:`positive`}};function RRe({requestId:e,serverName:t,onViewDetails:n,onApprove:r,onDeny:i}){return(0,S.jsxs)(`div`,{className:`space-y-3`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`strong`,{children:`Sampling Request Received`}),(0,S.jsxs)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:[`New request from `,t]})]}),(0,S.jsxs)(`div`,{className:`flex gap-2`,children:[(0,S.jsx)(`button`,{"data-testid":`sampling-toast-view-details`,className:`px-3 py-1.5 text-xs font-medium rounded-md hover:bg-accent hover:text-accent-foreground`,onClick:e=>{e.stopPropagation(),n()},children:`View Details`}),(0,S.jsx)(`button`,{"data-testid":`sampling-toast-approve`,className:`px-3 py-1.5 text-xs font-medium rounded-md hover:bg-accent hover:text-accent-foreground`,onClick:e=>{e.stopPropagation(),r(LRe)},children:`Approve`}),(0,S.jsx)(`button`,{"data-testid":`sampling-toast-deny`,className:`px-3 py-1.5 text-xs font-medium rounded-md hover:bg-accent hover:text-accent-foreground`,onClick:e=>{e.stopPropagation(),i()},children:`Deny`})]})]})}var $9=`preview-default`,zRe=`preview-bundle`;function BRe(e){if(!e)return{};try{let t=atob(e),n=JSON.parse(t);if(n&&typeof n==`object`)return n}catch{}return{}}function VRe(e,t){let n=`ui://widget/${t}`,r=e.find(e=>e.uri.startsWith(`${n}.`)&&e.uri.endsWith(`.html`));return r?r.uri:e.find(e=>e.name===t)?.uri}function HRe(){let e=globalThis.__mcpUsePreviewBundle;if(!e||typeof e!=`object`)return;let t=e;if(typeof t.resourceUri==`string`)return t}function URe(){(0,w.useEffect)(()=>{let e=document.documentElement,t=document.body,n=e.style.margin,r=t.style.margin,i=t.style.overflow;return e.style.margin=`0`,t.style.margin=`0`,t.style.overflow=`hidden`,()=>{e.style.margin=n,t.style.margin=r,t.style.overflow=i}},[])}function WRe(e){(0,w.useEffect)(()=>{if(!e)return;let t=!1;return(async()=>{try{await document.fonts.ready}catch{}t||(await new Promise(e=>requestAnimationFrame(()=>e(void 0))),await new Promise(e=>requestAnimationFrame(()=>e(void 0))),!t&&document.body.setAttribute(`data-view-ready`,`true`))})(),()=>{t=!0,document.body.removeAttribute(`data-view-ready`)}},[e])}function GRe(e,t){(0,w.useEffect)(()=>{if(!e)return;let n=!1,r,i,a=e=>{n||(e&&(document.body.dataset.viewX=String(Math.round(e.left)),document.body.dataset.viewY=String(Math.round(e.top)),document.body.dataset.viewWidth=String(Math.round(e.width)),document.body.dataset.viewHeight=String(Math.round(e.height))),document.body.setAttribute(`data-view-ready`,`true`))};return(async()=>{try{await document.fonts.ready}catch{}if(n||(await new Promise(e=>requestAnimationFrame(()=>e(void 0))),await new Promise(e=>requestAnimationFrame(()=>e(void 0))),n))return;let e=t.current?.querySelector(`iframe`);if(!e){a(null);return}let o=()=>{r&&clearTimeout(r),r=setTimeout(()=>{n||(i?.disconnect(),a(e.getBoundingClientRect()))},250)};i=new ResizeObserver(o),i.observe(e),o()})(),()=>{n=!0,r&&clearTimeout(r),i?.disconnect(),document.body.removeAttribute(`data-view-ready`),delete document.body.dataset.viewX,delete document.body.dataset.viewY,delete document.body.dataset.viewWidth,delete document.body.dataset.viewHeight}},[e,t])}function KRe({view:e,bundle:t,widthOverride:n}){let[r,i]=(0,w.useState)(!1),a=(0,w.useRef)(null);URe(),GRe(r,a);let o=(0,w.useMemo)(()=>async e=>{if(e===t.resourceUri)return t.resourceContents;throw Error(`Resource ${e} not in screenshot bundle`)},[t]);return(0,S.jsx)(`div`,{ref:a,style:{width:`100vw`,height:`100vh`},children:(0,S.jsx)(A7,{serverId:zRe,toolCallId:(0,w.useMemo)(()=>`preview-bundle-${e}-${Date.now().toString(36)}`,[e]),toolName:e,toolInput:t.toolInput,toolOutput:t.toolOutput,resourceUri:t.resourceUri,readResource:o,displayMode:`inline`,inlineWidthOverride:n,noWrapper:!0,chromeless:!0,onReady:()=>i(!0)})})}function qRe({view:e}){let[t]=NM(),n=(0,w.useMemo)(()=>BRe(t.get(`props`)),[t]),r=(0,w.useMemo)(()=>t.get(`server`)||`${window.location.origin}/mcp`,[t]),i=(0,w.useMemo)(()=>{let e=t.get(`headers`);if(e)try{let t=JSON.parse(atob(e));if(t&&typeof t==`object`)return t}catch{}},[t]),{servers:a,addServer:o,storageLoaded:s}=uj(),c=a.find(e=>e.id===$9);(0,w.useEffect)(()=>{s&&o($9,{url:r,name:`Preview`,...i?{headers:i}:{}})},[s,r,i,o]);let l=c?.state===`ready`,u=c?.state===`failed`,d=(0,w.useMemo)(()=>{if(l)return VRe(c.resources,e)},[l,c?.resources,e]),f=(0,w.useMemo)(()=>`preview-${e}-${Date.now().toString(36)}`,[e]),p=(0,w.useMemo)(()=>async e=>{if(!c?.readResource)throw Error(`Server not ready`);return c.readResource(e)},[c]),[m,h]=(0,w.useState)(!1);return WRe(m),URe(),u?(0,S.jsxs)(`div`,{style:{padding:16,fontFamily:`monospace`,color:`#b00`},children:[`Failed to connect to MCP server at `,r,`.`]}):!l||!d?l&&!d?(0,S.jsxs)(`div`,{style:{padding:16,fontFamily:`monospace`,color:`#b00`},children:[`View "`,e,`" not found on `,r,`.`]}):(0,S.jsx)(`div`,{style:{width:`100vw`,height:`100vh`,display:`flex`,alignItems:`center`,justifyContent:`center`,fontFamily:`monospace`,color:`var(--muted-foreground, #888)`},children:`Loading…`}):(0,S.jsx)(`div`,{style:{width:`100vw`,height:`100vh`},children:(0,S.jsx)(A7,{serverId:$9,toolCallId:f,toolName:e,toolInput:n.toolInput,toolOutput:n.toolOutput,resourceUri:d,readResource:p,displayMode:`fullscreen`,noWrapper:!0,chromeless:!0,onReady:()=>h(!0)})})}function JRe(){let e=Xpe(),[t]=NM(),n=e.view??``,r=(0,w.useMemo)(()=>HRe(),[]),i=(0,w.useMemo)(()=>{let e=t.get(`width`);if(!e)return;let n=parseInt(e,10);return Number.isFinite(n)&&n>0?n:void 0},[t]);return r?(0,S.jsx)(KRe,{view:n,bundle:r,widthOverride:i}):(0,S.jsx)(qRe,{view:n})}var YRe=(e,t,n,r,i,a,o,s)=>{let c=document.documentElement,l=[`light`,`dark`];function u(t){(Array.isArray(e)?e:[e]).forEach(e=>{let n=e===`class`,r=n&&a?i.map(e=>a[e]||e):i;n?(c.classList.remove(...r),c.classList.add(a&&a[t]?a[t]:t)):c.setAttribute(e,t)}),d(t)}function d(e){s&&l.includes(e)&&(c.style.colorScheme=e)}function f(){return window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}if(r)u(r);else try{let e=localStorage.getItem(t)||n;u(o&&e===`system`?f():e)}catch{}},XRe=w.createContext(void 0),ZRe={setTheme:e=>{},themes:[]},QRe=()=>w.useContext(XRe)??ZRe;w.memo(({forcedTheme:e,storageKey:t,attribute:n,enableSystem:r,enableColorScheme:i,defaultTheme:a,value:o,themes:s,nonce:c,scriptProps:l})=>{let u=JSON.stringify([n,t,a,e,s,o,r,i]).slice(1,-1);return w.createElement(`script`,{...l,suppressHydrationWarning:!0,nonce:typeof window>`u`?c:``,dangerouslySetInnerHTML:{__html:`(${YRe.toString()})(${u})`}})});function $Re({...e}){let{theme:t=`system`}=QRe();return(0,S.jsx)(bhe,{theme:t,className:`toaster group`,style:{"--normal-bg":`var(--popover)`,"--normal-text":`var(--popover-foreground)`,"--normal-border":`var(--border)`},...e})}function eze({activeTabRef:e}){let{activeTab:t}=Jq();return(0,w.useEffect)(()=>{e.current=t},[t,e]),null}function tze(){let e=(0,w.useRef)(`tools`),t=new URLSearchParams(window.location.search),n=t.get(`embedded`)===`true`,r=t.get(`theme`),i=(0,w.useMemo)(()=>n?void 0:new upe(`mcp-inspector-connections`),[n]),a=window.__MCP_PROXY_URL__,o=a?`${window.location.origin}${a}`:void 0;return(0,w.useEffect)(()=>{let e=t.get(`auth_error`);if(!e)return;let n=t.get(`auth_error_description`);zM.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,S.jsx)(Oge,{forcedTheme:r||void 0,children:(0,S.jsx)(_De,{children:(0,S.jsx)(lj,{storageProvider:i,enableRpcLogging:!0,defaultCallbackUrl:`${window.location.origin}/inspector/oauth/callback`,defaultAutoProxyFallback:o?{enabled:!0,proxyAddress:o}:!1,clientInfo:{name:`mcp-use Inspector`,version:window.__INSPECTOR_VERSION__,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=zM((0,S.jsx)(RRe,{requestId:e.id,serverName:n,onViewDetails:()=>{let t=new CustomEvent(`navigate-to-sampling`,{detail:{requestId:e.id}});window.dispatchEvent(t),zM.dismiss(a)},onApprove:t=>{r(e.id,t),zM.success(`Sampling request approved`),zM.dismiss(a)},onDeny:()=>{i(e.id,`User denied from toast`),zM.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=zM((0,S.jsx)(C,{requestId:t.id,serverName:r,mode:o,message:s,url:c,onViewDetails:()=>{let e=new CustomEvent(`navigate-to-elicitation`,{detail:{requestId:t.id}});window.dispatchEvent(e),zM.dismiss(l)},onOpenUrl:o===`url`&&c?()=>{window.open(c,`_blank`),zM.dismiss(l)}:void 0,onCancel:()=>{a(t.id,`User cancelled from toast`),zM.dismiss(l)}}),{duration:1/0})},children:(0,S.jsxs)(Nwe,{children:[(0,S.jsx)(eze,{activeTabRef:e}),(0,S.jsx)(Rme,{basename:`/inspector`,children:(0,S.jsxs)(ume,{children:[(0,S.jsx)(fM,{path:`/oauth/callback`,element:(0,S.jsx)(IRe,{})}),(0,S.jsx)(fM,{path:`/preview/:view`,element:(0,S.jsx)(JRe,{})}),(0,S.jsx)(fM,{path:`/`,element:(0,S.jsx)(wRe,{children:(0,S.jsx)(Mwe,{})})})]})}),(0,S.jsx)($Re,{position:`top-center`})]})})})})}var nze=document.getElementById(`root`);nze?x.createRoot(nze).render((0,S.jsx)(tze,{})):console.error(`[inspector] Root element not found`);
|