@mcp-use/inspector 20.2.5 → 20.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/inspector.js.gz +0 -0
- package/dist/cli.js +1 -1
- package/dist/client/index.d.ts +142 -4
- package/dist/client/index.js +45 -45
- package/dist/server/index.js +1 -1
- package/package.json +2 -2
package/dist/app/inspector.js.gz
CHANGED
|
Binary file
|
package/dist/cli.js
CHANGED
|
@@ -5,7 +5,7 @@ ${n.join(`\r
|
|
|
5
5
|
\r
|
|
6
6
|
`)},Bo=e=>{let t=e.socket.encrypted?"https":"http",r=new URL(e.url??"/",`${t}://${e.headers.host??"localhost"}`),n=new Headers;for(let o in e.headers){let s=e.headers[o];s&&n.append(o,Array.isArray(s)?s[0]:s)}return new Request(r,{headers:n})},Ho=e=>{let{server:t,fetchCallback:r,wss:n}=e,o=new Map;n.on("connection",(a,c)=>{let l=o.get(c);l&&(l.resolve(a),o.delete(c))});let s=a=>{let c=o.get(a);c&&(o.delete(a),c.reject(new Error("WebSocket handshake aborted")))},i=(a,c)=>new Promise((l,u)=>{o.set(a,{resolve:l,reject:u,connectionSymbol:c})});t.on("upgrade",async(a,c,l)=>{if(a.headers.upgrade?.toLowerCase()!=="websocket")return;let u={incoming:a,outgoing:void 0,wss:n,[ur]:i},d=400,p;try{let y=await r(Bo(a),u);y instanceof Response&&(d=y.status,p=y.headers)}catch{t.listenerCount("upgrade")===1&&Jt(c,500);return}let m=o.get(a);if(!m||m.connectionSymbol!==u[lr]){s(a),t.listenerCount("upgrade")===1&&Jt(c,d,p);return}let g=y=>{dr(y,p)},h=()=>s(a);c.once("close",h),n.on("headers",g);try{n.handleUpgrade(a,c,l,y=>{c.off("close",h),n.emit("connection",y,a)})}finally{n.off("headers",g)}}),t.on("close",()=>{n.close()})},Hi=Wt(async(e,t,r)=>{if(e.req.header("upgrade")?.toLowerCase()!=="websocket")return;let n=e.env,o=n[ur];if(!o||!n.incoming)return new Response(null,{status:500});let s=Uo();return n[lr]=s,(async()=>{let i;try{i=await o(n.incoming,s)}catch{return}let a=[],c=(d,p)=>{a.push([d,p])};i.on("message",c);let l={binaryType:"arraybuffer",close(d,p){i.close(d,p)},protocol:i.protocol,raw:i,get readyState(){return i.readyState},send(d,p){i.send(d,{compress:p?.compress})},url:new URL(e.req.url)};try{t?.onOpen?.(new Event("open"),l)}catch(d){(r?.onError??console.error)(d)}let u=(d,p)=>{let m=Array.isArray(d)?d:[d];for(let g of m)try{t?.onMessage?.(new MessageEvent("message",{data:p?g instanceof ArrayBuffer?g:g.buffer.slice(g.byteOffset,g.byteOffset+g.byteLength):typeof g=="string"?g:Buffer.from(g).toString("utf-8")}),l)}catch(h){(r?.onError??console.error)(h)}};i.off("message",c);for(let d of a)u(...d);i.on("message",(d,p)=>{u(d,p)}),i.on("close",(d,p)=>{try{t?.onClose?.(new Do("close",{code:d,reason:p.toString()}),l)}catch(m){(r?.onError??console.error)(m)}}),i.on("error",d=>{try{t?.onError?.(new No("error",{error:d}),l)}catch(p){(r?.onError??console.error)(p)}})})(),new Response}),$o=e=>{let t=e.fetch,r=Io(t,{hostname:e.hostname,overrideGlobalObjects:e.overrideGlobalObjects,autoCleanupIncoming:e.autoCleanupIncoming}),n=(e.createServer||ro)(e.serverOptions||{},r);if(e.websocket&&e.websocket.server){if(e.websocket.server.options.noServer!==!0)throw new Error("WebSocket server must be created with { noServer: true } option");Ho({server:n,fetchCallback:t,wss:e.websocket.server})}return n},fr=(e,t)=>{let r=$o(e);return r.listen(e?.port??3e3,e.hostname,()=>{let n=r.address();t&&t(n)}),r};var nt=(e,t,r)=>(n,o)=>{let s=-1;return i(0);async function i(a){if(a<=s)throw new Error("next() called multiple times");s=a;let c,l=!1,u;if(e[a]?(u=e[a][0][0],n.req.routeIndex=a):u=a===e.length&&o||void 0,u)try{c=await u(n,()=>i(a+1))}catch(d){if(d instanceof Error&&t)n.error=d,c=await t(d,n),l=!0;else throw d}else n.finalized===!1&&r&&(c=await r(n));return c&&(n.finalized===!1||l)&&(n.res=c),n}};var pr=Symbol();var hr=(e,t)=>new Response(e,{headers:{"Content-Type":t.replace(/^[^;]+/,n=>n.toLowerCase())}}).formData();var Oe=e=>"headers"in e,gr=async(e,t=Object.create(null))=>{let{all:r=!1,dot:n=!1}=t,i=(Oe(e)?e.headers:e.raw.headers).get("Content-Type")?.split(";")[0].trim().toLowerCase();return i==="multipart/form-data"||i==="application/x-www-form-urlencoded"?Fo(e,{all:r,dot:n}):{}};async function Fo(e,t){if(!Oe(e)&&e.bodyCache.formData)return mr(await e.bodyCache.formData,t);let r=Oe(e)?e.headers:e.raw.headers,n=await e.arrayBuffer(),o=hr(n,r.get("Content-Type")||"");Oe(e)||(e.bodyCache.formData=o);let s=await o;return s?mr(s,t):{}}function mr(e,t){let r=Object.create(null);return e.forEach((n,o)=>{t.all||o.endsWith("[]")?Wo(r,o,n):r[o]=n}),t.dot&&Object.entries(r).forEach(([n,o])=>{n.includes(".")&&(zo(r,n,o),delete r[n])}),r}var Wo=(e,t,r)=>{e[t]!==void 0?Array.isArray(e[t])?e[t].push(r):e[t]=[e[t],r]:t.endsWith("[]")?e[t]=[r]:e[t]=r},zo=(e,t,r)=>{if(/(?:^|\.)__proto__\./.test(t))return;let n=e,o=t.split(".");o.forEach((s,i)=>{i===o.length-1?n[s]=r:((!n[s]||typeof n[s]!="object"||Array.isArray(n[s])||n[s]instanceof File)&&(n[s]=Object.create(null)),n=n[s])})};var st=e=>{let t=e.split("/");return t[0]===""&&t.shift(),t},yr=e=>{let{groups:t,path:r}=qo(e),n=st(r);return Ko(n,t)},qo=e=>{let t=[];return e=e.replace(/\{[^}]+\}/g,(r,n)=>{let o=`@${n}`;return t.push([o,r]),o}),{groups:t,path:e}},Ko=(e,t)=>{for(let r=t.length-1;r>=0;r--){let[n]=t[r];for(let o=e.length-1;o>=0;o--)if(e[o].includes(n)){e[o]=e[o].replace(n,t[r][1]);break}}return e},Te={},wr=(e,t)=>{if(e==="*")return"*";let r=e.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(r){let n=`${e}#${t}`;return Te[n]||(r[2]?Te[n]=t&&t[0]!==":"&&t[0]!=="*"?[n,r[1],new RegExp(`^${r[2]}(?=/${t})`)]:[e,r[1],new RegExp(`^${r[2]}$`)]:Te[n]=[e,r[1],!0]),Te[n]}return null},Le=(e,t)=>{try{return t(e)}catch{return e.replace(/(?:%[0-9A-Fa-f]{2})+/g,r=>{try{return t(r)}catch{return r}})}},Vo=e=>Le(e,decodeURI),it=e=>{let t=e.url,r=t.indexOf("/",t.indexOf(":")+4),n=r;for(;n<t.length;n++){let o=t.charCodeAt(n);if(o===37){let s=t.indexOf("?",n),i=t.indexOf("#",n),a=s===-1?i===-1?void 0:i:i===-1?s:Math.min(s,i),c=t.slice(r,a);return Vo(c.includes("%25")?c.replace(/%25/g,"%2525"):c)}else if(o===63||o===35)break}return t.slice(r,n)};var br=e=>{let t=it(e);return t.length>1&&t.at(-1)==="/"?t.slice(0,-1):t},K=(e,t,...r)=>(r.length&&(t=K(t,...r)),`${e?.[0]==="/"?"":"/"}${e}${t==="/"?"":`${e?.at(-1)==="/"?"":"/"}${t?.[0]==="/"?t.slice(1):t}`}`),ke=e=>{if(e.charCodeAt(e.length-1)!==63||!e.includes(":"))return null;let t=e.split("/"),r=[],n="";return t.forEach(o=>{if(o!==""&&!/\:/.test(o))n+="/"+o;else if(/\:/.test(o))if(/\?/.test(o)){r.length===0&&n===""?r.push("/"):r.push(n);let s=o.replace("?","");n+="/"+s,r.push(n)}else n+="/"+o}),r.filter((o,s,i)=>i.indexOf(o)===s)},ot=e=>/[%+]/.test(e)?(e.indexOf("+")!==-1&&(e=e.replace(/\+/g," ")),e.indexOf("%")!==-1?Le(e,at):e):e,vr=(e,t,r)=>{let n;if(!r&&t&&!/[%+]/.test(t)){let i=e.indexOf("?",8);if(i===-1)return;for(e.startsWith(t,i+1)||(i=e.indexOf(`&${t}`,i+1));i!==-1;){let a=e.charCodeAt(i+t.length+1);if(a===61){let c=i+t.length+2,l=e.indexOf("&",c);return ot(e.slice(c,l===-1?void 0:l))}else if(a==38||isNaN(a))return"";i=e.indexOf(`&${t}`,i+1)}if(n=/[%+]/.test(e),!n)return}let o=Object.create(null);n??=/[%+]/.test(e);let s=e.indexOf("?",8);for(;s!==-1;){let i=e.indexOf("&",s+1),a=e.indexOf("=",s);a>i&&i!==-1&&(a=-1);let c=e.slice(s+1,a===-1?i===-1?void 0:i:a);if(n&&(c=ot(c)),s=i,c==="")continue;let l;a===-1?l="":(l=e.slice(a+1,i===-1?void 0:i),n&&(l=ot(l))),r?(o[c]&&Array.isArray(o[c])||(o[c]=[]),o[c].push(l)):o[c]??=l}return t?o[t]:o},xr=vr,Er=(e,t)=>vr(e,t,!0),at=decodeURIComponent;var Sr=e=>Le(e,at),Rr=class{raw;#e;#t;routeIndex=0;path;bodyCache={};constructor(e,t="/",r=[[]]){this.raw=e,this.path=t,this.#t=r,this.#e={}}param(e){return e?this.#r(e):this.#s()}#r(e){let t=this.#t[0][this.routeIndex][1][e],r=this.#o(t);return r&&/\%/.test(r)?Sr(r):r}#s(){let e={},t=Object.keys(this.#t[0][this.routeIndex][1]);for(let r of t){let n=this.#o(this.#t[0][this.routeIndex][1][r]);n!==void 0&&(e[r]=/\%/.test(n)?Sr(n):n)}return e}#o(e){return this.#t[1]?this.#t[1][e]:e}query(e){return xr(this.url,e)}queries(e){return Er(this.url,e)}header(e){if(e)return this.raw.headers.get(e)??void 0;let t=Object.create(null);return this.raw.headers.forEach((r,n)=>{t[n]=r}),t}async parseBody(e){return gr(this,e)}#n=e=>{let{bodyCache:t,raw:r}=this,n=t[e];if(n)return n;let o=Object.keys(t)[0];return o?t[o].then(s=>(o==="json"&&(s=JSON.stringify(s)),new Response(s)[e]())):t[e]=r[e]()};json(){return this.#n("text").then(e=>JSON.parse(e))}text(){return this.#n("text")}arrayBuffer(){return this.#n("arrayBuffer")}bytes(){return this.#n("arrayBuffer").then(e=>new Uint8Array(e))}blob(){return this.#n("blob")}formData(){return this.#n("formData")}addValidatedData(e,t){this.#e[e]=t}valid(e){return this.#e[e]}get url(){return this.raw.url}get method(){return this.raw.method}get[pr](){return this.#t}get matchedRoutes(){return this.#t[0].map(([[,e]])=>e)}get routePath(){return this.#t[0].map(([[,e]])=>e)[this.routeIndex].path}};var Pr={Stringify:1,BeforeStream:2,Stream:3},Go=(e,t)=>{let r=new String(e);return r.isEscaped=!0,r.callbacks=t,r};var ct=async(e,t,r,n,o)=>{typeof e=="object"&&!(e instanceof String)&&(e instanceof Promise||(e=e.toString()),e instanceof Promise&&(e=await e));let s=e.callbacks;if(!s?.length)return Promise.resolve(e);o?o[0]+=e:o=[e];let i=Promise.all(s.map(a=>a({phase:t,buffer:o,context:n}))).then(a=>Promise.all(a.filter(Boolean).map(c=>ct(c,t,!1,n,o))).then(()=>o[0]));return r?Go(await i,s):i};var Yo="text/plain; charset=UTF-8",lt=(e,t)=>({"Content-Type":e,...t}),me=(e,t)=>new Response(e,t),ut=class{#e;#t;env={};#r;finalized=!1;error;#s;#o;#n;#u;#c;#l;#a;#d;#f;constructor(e,t){this.#e=e,t&&(this.#o=t.executionCtx,this.env=t.env,this.#l=t.notFoundHandler,this.#f=t.path,this.#d=t.matchResult)}get req(){return this.#t??=new Rr(this.#e,this.#f,this.#d),this.#t}get event(){if(this.#o&&"respondWith"in this.#o)return this.#o;throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#o)return this.#o;throw Error("This context has no ExecutionContext")}get res(){return this.#n||=me(null,{headers:this.#a??=new Headers})}set res(e){if(this.#n&&e){e=me(e.body,e);for(let[t,r]of this.#n.headers.entries())if(t!=="content-type")if(t==="set-cookie"){let n=this.#n.headers.getSetCookie();e.headers.delete("set-cookie");for(let o of n)e.headers.append("set-cookie",o)}else e.headers.set(t,r)}this.#n=e,this.finalized=!0}render=(...e)=>(this.#c??=t=>this.html(t),this.#c(...e));setLayout=e=>this.#u=e;getLayout=()=>this.#u;setRenderer=e=>{this.#c=e};header=(e,t,r)=>{this.finalized&&(this.#n=me(this.#n.body,this.#n));let n=this.#n?this.#n.headers:this.#a??=new Headers;t===void 0?n.delete(e):r?.append?n.append(e,t):n.set(e,t)};status=e=>{this.#s=e};set=(e,t)=>{this.#r??=new Map,this.#r.set(e,t)};get=e=>this.#r?this.#r.get(e):void 0;get var(){return this.#r?Object.fromEntries(this.#r):{}}#i(e,t,r){let n=this.#n?new Headers(this.#n.headers):this.#a??new Headers;if(typeof t=="object"&&"headers"in t){let s=t.headers instanceof Headers?t.headers:new Headers(t.headers);for(let[i,a]of s)i.toLowerCase()==="set-cookie"?n.append(i,a):n.set(i,a)}if(r)for(let[s,i]of Object.entries(r))if(typeof i=="string")n.set(s,i);else{n.delete(s);for(let a of i)n.append(s,a)}let o=typeof t=="number"?t:t?.status??this.#s;return me(e,{status:o,headers:n})}newResponse=(...e)=>this.#i(...e);body=(e,t,r)=>this.#i(e,t,r);text=(e,t,r)=>!this.#a&&!this.#s&&!t&&!r&&!this.finalized?new Response(e):this.#i(e,t,lt(Yo,r));json=(e,t,r)=>this.#i(JSON.stringify(e),t,lt("application/json",r));html=(e,t,r)=>{let n=o=>this.#i(o,t,lt("text/html; charset=UTF-8",r));return typeof e=="object"?ct(e,Pr.Stringify,!1,{}).then(n):n(e)};redirect=(e,t)=>{let r=String(e);return this.header("Location",/[^\x00-\xFF]/.test(r)?encodeURI(r):r),this.newResponse(null,t??302)};notFound=()=>(this.#l??=()=>me(),this.#l(this))};var x="ALL",Ar="all",Cr=["get","post","put","delete","options","patch"],Me="Can not add a route since the matcher is already built.",Ie=class extends Error{};var _r="__COMPOSED_HANDLER";var Xo=e=>e.text("404 Not Found",404),Or=(e,t)=>{if("getResponse"in e){let r=e.getResponse();return t.newResponse(r.body,r)}return console.error(e),t.text("Internal Server Error",500)},Tr=class Lr{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#e="/";routes=[];constructor(t={}){[...Cr,Ar].forEach(s=>{this[s]=(i,...a)=>(typeof i=="string"?this.#e=i:this.#s(s,this.#e,i),a.forEach(c=>{this.#s(s,this.#e,c)}),this)}),this.on=(s,i,...a)=>{for(let c of[i].flat()){this.#e=c;for(let l of[s].flat())a.map(u=>{this.#s(l.toUpperCase(),this.#e,u)})}return this},this.use=(s,...i)=>(typeof s=="string"?this.#e=s:(this.#e="*",i.unshift(s)),i.forEach(a=>{this.#s(x,this.#e,a)}),this);let{strict:n,...o}=t;Object.assign(this,o),this.getPath=n??!0?t.getPath??it:br}#t(){let t=new Lr({router:this.router,getPath:this.getPath});return t.errorHandler=this.errorHandler,t.#r=this.#r,t.routes=this.routes,t}#r=Xo;errorHandler=Or;route(t,r){let n=this.basePath(t);return r.routes.map(o=>{let s;r.errorHandler===Or?s=o.handler:(s=async(i,a)=>(await nt([],r.errorHandler)(i,()=>o.handler(i,a))).res,s[_r]=o.handler),n.#s(o.method,o.path,s,o.basePath)}),this}basePath(t){let r=this.#t();return r._basePath=K(this._basePath,t),r}onError=t=>(this.errorHandler=t,this);notFound=t=>(this.#r=t,this);mount(t,r,n){let o,s;n&&(typeof n=="function"?s=n:(s=n.optionHandler,n.replaceRequest===!1?o=c=>c:o=n.replaceRequest));let i=s?c=>{let l=s(c);return Array.isArray(l)?l:[l]}:c=>{let l;try{l=c.executionCtx}catch{}return[c.env,l]};o||=(()=>{let c=K(this._basePath,t),l=c==="/"?0:c.length;return u=>{let d=new URL(u.url);return d.pathname=this.getPath(u).slice(l)||"/",new Request(d,u)}})();let a=async(c,l)=>{let u=await r(o(c.req.raw),...i(c));if(u)return u;await l()};return this.#s(x,K(t,"*"),a),this}#s(t,r,n,o){t=t.toUpperCase(),r=K(this._basePath,r);let s={basePath:o!==void 0?K(this._basePath,o):this._basePath,path:r,method:t,handler:n};this.router.add(t,r,[n,s]),this.routes.push(s)}#o(t,r){if(t instanceof Error)return this.errorHandler(t,r);throw t}#n(t,r,n,o){if(o==="HEAD")return(async()=>new Response(null,await this.#n(t,r,n,"GET")))();let s=this.getPath(t,{env:n}),i=this.router.match(o,s),a=new ut(t,{path:s,matchResult:i,env:n,executionCtx:r,notFoundHandler:this.#r});if(i[0].length===1){let l;try{l=i[0][0][0][0](a,async()=>{a.res=await this.#r(a)})}catch(u){return this.#o(u,a)}return l instanceof Promise?l.then(u=>u||(a.finalized?a.res:this.#r(a))).catch(u=>this.#o(u,a)):l??this.#r(a)}let c=nt(i[0],this.errorHandler,this.#r);return(async()=>{try{let l=await c(a);if(!l.finalized)throw new Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return l.res}catch(l){return this.#o(l,a)}})()}fetch=(t,...r)=>this.#n(t,r[1],r[0],t.method);request=(t,r,n,o)=>t instanceof Request?this.fetch(r?new Request(t,r):t,n,o):(t=t.toString(),this.fetch(new Request(/^https?:\/\//.test(t)?t:`http://localhost${K("/",t)}`,r),n,o));fire=()=>{addEventListener("fetch",t=>{t.respondWith(this.#n(t.request,t,void 0,t.request.method))})}};var De=[];function dt(e,t){let r=this.buildAllMatchers(),n=((o,s)=>{let i=r[o]||r[x],a=i[2][s];if(a)return a;let c=s.match(i[0]);if(!c)return[[],De];let l=c.indexOf("",1);return[i[1][l],c]});return this.match=n,n(e,t)}var Ne="[^/]+",ge=".*",ye="(?:|/.*)",J=Symbol(),Jo=new Set(".\\+*[^]$()");function Qo(e,t){return e.length===1?t.length===1?e<t?-1:1:-1:t.length===1||e===ge||e===ye?1:t===ge||t===ye?-1:e===Ne?1:t===Ne?-1:e.length===t.length?e<t?-1:1:t.length-e.length}var kr=class ft{#e;#t;#r=Object.create(null);insert(t,r,n,o,s){if(t.length===0){if(this.#e!==void 0)throw J;if(s)return;this.#e=r;return}let[i,...a]=t,c=i==="*"?a.length===0?["","",ge]:["","",Ne]:i==="/*"?["","",ye]:i.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),l;if(c){let u=c[1],d=c[2]||Ne;if(u&&c[2]&&(d===".*"||(d=d.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(d))))throw J;if(l=this.#r[d],!l){if(Object.keys(this.#r).some(p=>p!==ge&&p!==ye))throw J;if(s)return;l=this.#r[d]=new ft,u!==""&&(l.#t=o.varIndex++)}!s&&u!==""&&n.push([u,l.#t])}else if(l=this.#r[i],!l){if(Object.keys(this.#r).some(u=>u.length>1&&u!==ge&&u!==ye))throw J;if(s)return;l=this.#r[i]=new ft}l.insert(a,r,n,o,s)}buildRegExpStr(){let r=Object.keys(this.#r).sort(Qo).map(n=>{let o=this.#r[n];return(typeof o.#t=="number"?`(${n})@${o.#t}`:Jo.has(n)?`\\${n}`:n)+o.buildRegExpStr()});return typeof this.#e=="number"&&r.unshift(`#${this.#e}`),r.length===0?"":r.length===1?r[0]:"(?:"+r.join("|")+")"}};var Mr=class{#e={varIndex:0};#t=new kr;insert(e,t,r){let n=[],o=[];for(let i=0;;){let a=!1;if(e=e.replace(/\{[^}]+\}/g,c=>{let l=`@\\${i}`;return o[i]=[l,c],i++,a=!0,l}),!a)break}let s=e.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let i=o.length-1;i>=0;i--){let[a]=o[i];for(let c=s.length-1;c>=0;c--)if(s[c].indexOf(a)!==-1){s[c]=s[c].replace(a,o[i][1]);break}}return this.#t.insert(s,t,n,this.#e,r),n}buildRegExp(){let e=this.#t.buildRegExpStr();if(e==="")return[/^$/,[],[]];let t=0,r=[],n=[];return e=e.replace(/#(\d+)|@(\d+)|\.\*\$/g,(o,s,i)=>s!==void 0?(r[++t]=Number(s),"$()"):(i!==void 0&&(n[Number(i)]=++t),"")),[new RegExp(`^${e}`),r,n]}};var Zo=[/^$/,[],Object.create(null)],Ir=Object.create(null);function Dr(e){return Ir[e]??=new RegExp(e==="*"?"":`^${e.replace(/\/\*$|([.\\+*[^\]$()])/g,(t,r)=>r?`\\${r}`:"(?:|/.*)")}$`)}function es(){Ir=Object.create(null)}function ts(e){let t=new Mr,r=[];if(e.length===0)return Zo;let n=e.map(l=>[!/\*|\/:/.test(l[0]),...l]).sort(([l,u],[d,p])=>l?1:d?-1:u.length-p.length),o=Object.create(null);for(let l=0,u=-1,d=n.length;l<d;l++){let[p,m,g]=n[l];p?o[m]=[g.map(([y])=>[y,Object.create(null)]),De]:u++;let h;try{h=t.insert(m,u,p)}catch(y){throw y===J?new Ie(m):y}p||(r[u]=g.map(([y,f])=>{let w=Object.create(null);for(f-=1;f>=0;f--){let[v,L]=h[f];w[v]=L}return[y,w]}))}let[s,i,a]=t.buildRegExp();for(let l=0,u=r.length;l<u;l++)for(let d=0,p=r[l].length;d<p;d++){let m=r[l][d]?.[1];if(!m)continue;let g=Object.keys(m);for(let h=0,y=g.length;h<y;h++)m[g[h]]=a[m[g[h]]]}let c=[];for(let l in i)c[l]=r[i[l]];return[s,c,o]}function se(e,t){if(e){for(let r of Object.keys(e).sort((n,o)=>o.length-n.length))if(Dr(r).test(t))return[...e[r]]}}var Ue=class{name="RegExpRouter";#e;#t;constructor(){this.#e={[x]:Object.create(null)},this.#t={[x]:Object.create(null)}}add(e,t,r){let n=this.#e,o=this.#t;if(!n||!o)throw new Error(Me);n[e]||[n,o].forEach(a=>{a[e]=Object.create(null),Object.keys(a[x]).forEach(c=>{a[e][c]=[...a[x][c]]})}),t==="/*"&&(t="*");let s=(t.match(/\/:/g)||[]).length;if(/\*$/.test(t)){let a=Dr(t);e===x?Object.keys(n).forEach(c=>{n[c][t]||=se(n[c],t)||se(n[x],t)||[]}):n[e][t]||=se(n[e],t)||se(n[x],t)||[],Object.keys(n).forEach(c=>{(e===x||e===c)&&Object.keys(n[c]).forEach(l=>{a.test(l)&&n[c][l].push([r,s])})}),Object.keys(o).forEach(c=>{(e===x||e===c)&&Object.keys(o[c]).forEach(l=>a.test(l)&&o[c][l].push([r,s]))});return}let i=ke(t)||[t];for(let a=0,c=i.length;a<c;a++){let l=i[a];Object.keys(o).forEach(u=>{(e===x||e===u)&&(o[u][l]||=[...se(n[u],l)||se(n[x],l)||[]],o[u][l].push([r,s-c+a+1]))})}}match=dt;buildAllMatchers(){let e=Object.create(null);return Object.keys(this.#t).concat(Object.keys(this.#e)).forEach(t=>{e[t]||=this.#r(t)}),this.#e=this.#t=void 0,es(),e}#r(e){let t=[],r=e===x;return[this.#e,this.#t].forEach(n=>{let o=n[e]?Object.keys(n[e]).map(s=>[s,n[e][s]]):[];o.length!==0?(r||=!0,t.push(...o)):e!==x&&t.push(...Object.keys(n[x]).map(s=>[s,n[x][s]]))}),r?ts(t):null}};var pt=class{name="SmartRouter";#e=[];#t=[];constructor(e){this.#e=e.routers}add(e,t,r){if(!this.#t)throw new Error(Me);this.#t.push([e,t,r])}match(e,t){if(!this.#t)throw new Error("Fatal error");let r=this.#e,n=this.#t,o=r.length,s=0,i;for(;s<o;s++){let a=r[s];try{for(let c=0,l=n.length;c<l;c++)a.add(...n[c]);i=a.match(e,t)}catch(c){if(c instanceof Ie)continue;throw c}this.match=a.match.bind(a),this.#e=[a],this.#t=void 0;break}if(s===o)throw new Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,i}get activeRouter(){if(this.#t||this.#e.length!==1)throw new Error("No active router has been determined yet.");return this.#e[0]}};var we=Object.create(null),rs=e=>{for(let t in e)return!0;return!1},Nr=class Ur{#e;#t;#r;#s=0;#o=we;constructor(t,r,n){if(this.#t=n||Object.create(null),this.#e=[],t&&r){let o=Object.create(null);o[t]={handler:r,possibleKeys:[],score:0},this.#e=[o]}this.#r=[]}insert(t,r,n){this.#s=++this.#s;let o=this,s=yr(r),i=[];for(let a=0,c=s.length;a<c;a++){let l=s[a],u=s[a+1],d=wr(l,u),p=Array.isArray(d)?d[0]:l;if(p in o.#t){o=o.#t[p],d&&i.push(d[1]);continue}o.#t[p]=new Ur,d&&(o.#r.push(d),i.push(d[1])),o=o.#t[p]}return o.#e.push({[t]:{handler:n,possibleKeys:i.filter((a,c,l)=>l.indexOf(a)===c),score:this.#s}}),o}#n(t,r,n,o,s){for(let i=0,a=r.#e.length;i<a;i++){let c=r.#e[i],l=c[n]||c[x],u={};if(l!==void 0&&(l.params=Object.create(null),t.push(l),o!==we||s&&s!==we))for(let d=0,p=l.possibleKeys.length;d<p;d++){let m=l.possibleKeys[d],g=u[l.score];l.params[m]=s?.[m]&&!g?s[m]:o[m]??s?.[m],u[l.score]=!0}}}search(t,r){let n=[];this.#o=we;let s=[this],i=st(r),a=[],c=i.length,l=null;for(let u=0;u<c;u++){let d=i[u],p=u===c-1,m=[];for(let h=0,y=s.length;h<y;h++){let f=s[h],w=f.#t[d];w&&(w.#o=f.#o,p?(w.#t["*"]&&this.#n(n,w.#t["*"],t,f.#o),this.#n(n,w,t,f.#o)):m.push(w));for(let v=0,L=f.#r.length;v<L;v++){let k=f.#r[v],S=f.#o===we?{}:{...f.#o};if(k==="*"){let R=f.#t["*"];R&&(this.#n(n,R,t,f.#o),R.#o=S,m.push(R));continue}let[P,A,E]=k;if(!d&&!(E instanceof RegExp))continue;let b=f.#t[P];if(E instanceof RegExp){if(l===null){l=new Array(c);let G=r[0]==="/"?1:0;for(let Y=0;Y<c;Y++)l[Y]=G,G+=i[Y].length+1}let R=r.substring(l[u]),T=E.exec(R);if(T){if(S[A]=T[0],this.#n(n,b,t,f.#o,S),T[0].length===R.length&&b.#t["*"]&&this.#n(n,b.#t["*"],t,f.#o,S),rs(b.#t)){b.#o=S;let G=T[0].match(/\//)?.length??0;(a[G]||=[]).push(b)}continue}}(E===!0||E.test(d))&&(S[A]=d,p?(this.#n(n,b,t,S,f.#o),b.#t["*"]&&this.#n(n,b.#t["*"],t,S,f.#o)):(b.#o=S,m.push(b)))}}let g=a.shift();s=g?m.concat(g):m}return n.length>1&&n.sort((u,d)=>u.score-d.score),[n.map(({handler:u,params:d})=>[u,d])]}};var ht=class{name="TrieRouter";#e;constructor(){this.#e=new Nr}add(e,t,r){let n=ke(t);if(n){for(let o=0,s=n.length;o<s;o++)this.#e.insert(e,n[o],r);return}this.#e.insert(e,t,r)}match(e,t){return this.#e.search(e,t)}};var mt=class extends Tr{constructor(e={}){super(e),this.router=e.router??new pt({routers:[new Ue,new ht]})}};var je=e=>{let t={origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[],...e},r=(o=>typeof o=="string"?o==="*"?()=>o:s=>o===s?s:null:typeof o=="function"?o:s=>o.includes(s)?s:null)(t.origin),n=(o=>typeof o=="function"?o:Array.isArray(o)?()=>o:()=>[])(t.allowMethods);return async function(s,i){function a(l,u){s.res.headers.set(l,u)}let c=await r(s.req.header("origin")||"",s);if(c&&a("Access-Control-Allow-Origin",c),t.credentials&&a("Access-Control-Allow-Credentials","true"),t.exposeHeaders?.length&&a("Access-Control-Expose-Headers",t.exposeHeaders.join(",")),s.req.method==="OPTIONS"){t.origin!=="*"&&a("Vary","Origin"),t.maxAge!=null&&a("Access-Control-Max-Age",t.maxAge.toString());let l=await n(s.req.header("origin")||"",s);l.length&&a("Access-Control-Allow-Methods",l.join(","));let u=t.allowHeaders;if(!u?.length){let d=s.req.header("Access-Control-Request-Headers");d&&(u=d.split(",").map(p=>p.trim()))}return u?.length&&(a("Access-Control-Allow-Headers",u.join(",")),s.res.headers.append("Vary","Access-Control-Request-Headers")),s.res.headers.delete("Content-Length"),s.res.headers.delete("Content-Type"),new Response(null,{headers:s.res.headers,status:204,statusText:"No Content"})}await i(),t.origin!=="*"&&s.header("Vary","Origin",{append:!0})}};import en from"process";import tn from"path";import{fileURLToPath as Is}from"url";import Ds from"child_process";import Ns,{constants as Us}from"fs/promises";import{promisify as ps}from"util";import hs from"child_process";import vt,{constants as zr}from"fs/promises";import Hr from"process";import as from"os";import cs from"fs";import ss from"fs";import jr from"fs";var gt;function ns(){try{return jr.statSync("/.dockerenv"),!0}catch{return!1}}function os(){try{return jr.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function yt(){return gt===void 0&&(gt=ns()||os()),gt}var wt,is=()=>{try{return ss.statSync("/run/.containerenv"),!0}catch{return!1}};function ie(){return wt===void 0&&(wt=is()||yt()),wt}var Br=()=>{if(Hr.platform!=="linux")return!1;if(as.release().toLowerCase().includes("microsoft"))return!ie();try{return cs.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!ie():!1}catch{return!1}},H=Hr.env.__IS_WSL_TEST__?Br:Br();import $r from"process";import{Buffer as ls}from"buffer";import{promisify as us}from"util";import ds from"child_process";import Lc,{constants as kc}from"fs/promises";var fs=us(ds.execFile),bt=()=>`${$r.env.SYSTEMROOT||$r.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`;var O=async(e,t={})=>{let{powerShellPath:r,...n}=t,o=O.encodeCommand(e);return fs(r??bt(),[...O.argumentsPrefix,o],{encoding:"utf8",...n})};O.argumentsPrefix=["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"];O.encodeCommand=e=>ls.from(e,"utf16le").toString("base64");O.escapeArgument=e=>`'${String(e).replaceAll("'","''")}'`;function Fr(e){for(let t of e.split(`
|
|
7
7
|
`)){if(/^\s*#/.test(t))continue;let r=/^\s*root\s*=\s*(?<mountPoint>"[^"]*"|'[^']*'|[^#]*)/.exec(t);if(r)return r.groups.mountPoint.trim().replaceAll(/^["']|["']$/g,"")}}var ms=ps(hs.execFile),gs=(()=>{let e="/mnt/",t;return async function(){if(t)return t;let r="/etc/wsl.conf",n=!1;try{await vt.access(r,zr.F_OK),n=!0}catch{}if(!n)return e;let o=await vt.readFile(r,{encoding:"utf8"}),s=Fr(o);return s===void 0?e:(t=s,t=t.endsWith("/")?t:`${t}/`,t)}})(),ys=async()=>`${await gs()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,Be=H?ys:bt,Wr,qr=async()=>(Wr??=(async()=>{try{let e=await Be();return await vt.access(e,zr.X_OK),!0}catch{return!1}})(),Wr),Kr=async()=>{let e=await Be(),t=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:r}=await O(t,{powerShellPath:e});return r.trim()},Vr=async e=>{if(/^[a-z]+:\/\//i.test(e))return e;try{let{stdout:t}=await ms("wslpath",["-aw",e],{encoding:"utf8"});return t.trim()}catch{return e}};function Q(e,t,r){let n=o=>Object.defineProperty(e,t,{value:o,enumerable:!0,writable:!0});return Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get(){let o=r();return n(o),o},set(o){n(o)}}),e}import{promisify as Os}from"util";import At from"process";import{execFile as Ts}from"child_process";import{promisify as ws}from"util";import bs from"process";import{execFile as vs}from"child_process";var xs=ws(vs);async function xt(){if(bs.platform!=="darwin")throw new Error("macOS only");let{stdout:e}=await xs("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),r=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(e)?.groups.id??"com.apple.Safari";return r==="com.apple.safari"?"com.apple.Safari":r}import Es from"process";import{promisify as Ss}from"util";import{execFile as Rs,execFileSync as Jc}from"child_process";var Ps=Ss(Rs);async function Gr(e,{humanReadableOutput:t=!0,signal:r}={}){if(Es.platform!=="darwin")throw new Error("macOS only");let n=t?[]:["-ss"],o={};r&&(o.signal=r);let{stdout:s}=await Ps("osascript",["-e",e,n],o);return s.trim()}async function Et(e){return Gr(`tell application "Finder" to set app_path to application file id "${e}" as string
|
|
8
|
-
tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}import{promisify as As}from"util";import{execFile as Cs}from"child_process";var _s=As(Cs),He={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}},Rt=new Map(Object.entries(He)),St=class extends Error{};async function Pt(e=_s){let{stdout:t}=await e("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),r=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(t);if(!r)throw new St(`Cannot find Windows browser in stdout: ${JSON.stringify(t)}`);let{id:n}=r.groups,o=n.lastIndexOf("."),s=n.lastIndexOf("-"),i=o===-1?void 0:n.slice(0,o),a=s===-1?void 0:n.slice(0,s);return He[n]??He[i]??He[a]??{name:n,id:n}}var Ls=Os(Ts),ks=e=>e.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,t=>t.toUpperCase());async function Ct(){if(At.platform==="darwin"){let e=await xt();return{name:await Et(e),id:e}}if(At.platform==="linux"){let{stdout:e}=await Ls("xdg-mime",["query","default","x-scheme-handler/http"]),t=e.trim();return{name:ks(t.replace(/.desktop$/,"").replace("-"," ")),id:t}}if(At.platform==="win32")return Pt();throw new Error("Only macOS, Linux, and Windows are supported")}import _t from"process";var Ms=!!(_t.env.SSH_CONNECTION||_t.env.SSH_CLIENT||_t.env.SSH_TTY),Yr=Ms;var $e=Symbol("fallbackAttempt"),Ot=import.meta.url?tn.dirname(Is(import.meta.url)):"",Xr=tn.join(Ot,"xdg-open"),{platform:ae,arch:Jr}=en,Qr=async(e,t)=>{if(e.length===0)return;let r=[];for(let n of e)try{return await t(n)}catch(o){r.push(o)}throw new AggregateError(r,"Failed to open in all supported apps")},Fe=async e=>{e={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...e};let t=e[$e]===!0;if(delete e[$e],Array.isArray(e.app))return Qr(e.app,l=>Fe({...e,app:l,[$e]:!0}));let{name:r,arguments:n=[]}=e.app??{};if(n=[...n],Array.isArray(r))return Qr(r,l=>Fe({...e,app:{name:l,arguments:n},[$e]:!0}));if(r==="browser"||r==="browserPrivate"){let l={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge","com.apple.safari":"safari"},u={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},d;if(H){let p=await Kr();d=Rt.get(p)??{}}else d=await Ct();if(d.id in l){let p=l[d.id.toLowerCase()];if(r==="browserPrivate"){if(p==="safari")throw new Error("Safari doesn't support opening in private mode via command line");n.push(u[p])}return Fe({...e,app:{name:ce[p],arguments:n}})}throw new Error(`${d.name} is not supported as a default browser`)}let o,s=[],i={},a=!1;if(H&&!ie()&&!Yr&&!r&&(a=await qr()),ae==="darwin")o="open",e.wait&&s.push("--wait-apps"),e.background&&s.push("--background"),e.newInstance&&s.push("--new"),r&&s.push("-a",r);else if(ae==="win32"||a){o=await Be(),s.push(...O.argumentsPrefix),H||(i.windowsVerbatimArguments=!0),H&&e.target&&(e.target=await Vr(e.target));let l=["$ProgressPreference = 'SilentlyContinue';","Start"];e.wait&&l.push("-Wait"),r?(l.push(O.escapeArgument(r)),e.target&&n.push(e.target)):e.target&&l.push(O.escapeArgument(e.target)),n.length>0&&(n=n.map(u=>O.escapeArgument(u)),l.push("-ArgumentList",n.join(","))),e.target=O.encodeCommand(l.join(" ")),e.wait||(i.stdio="ignore")}else{if(r)o=r;else{let l=!Ot||Ot==="/",u=!1;try{await Ns.access(Xr,Us.X_OK),u=!0}catch{}o=en.versions.electron??(ae==="android"||l||!u)?"xdg-open":Xr}n.length>0&&s.push(...n),e.wait||(i.stdio="ignore",i.detached=!0)}ae==="darwin"&&n.length>0&&s.push("--args",...n),e.target&&s.push(e.target);let c=Ds.spawn(o,s,i);return e.wait?new Promise((l,u)=>{c.once("error",u),c.once("close",d=>{if(!e.allowNonzeroExitCode&&d!==0){u(new Error(`Exited with code ${d}`));return}l(c)})}):t?new Promise((l,u)=>{c.once("error",u),c.once("spawn",()=>{c.once("close",d=>{if(c.off("error",u),d!==0){u(new Error(`Exited with code ${d}`));return}c.unref(),l(c)})})}):(c.unref(),new Promise((l,u)=>{c.once("error",u),c.once("spawn",()=>{c.off("error",u),l(c)})}))},js=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a `target`");return Fe({...t,target:e})};function Zr(e){if(typeof e=="string"||Array.isArray(e))return e;let{[Jr]:t}=e;if(!t)throw new Error(`${Jr} is not supported`);return t}function be({[ae]:e},{wsl:t}={}){if(t&&H)return Zr(t);if(!e)throw new Error(`${ae} is not supported`);return Zr(e)}var ce={browser:"browser",browserPrivate:"browserPrivate"};Q(ce,"chrome",()=>be({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium","chromium-browser"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));Q(ce,"brave",()=>be({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}}));Q(ce,"firefox",()=>be({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));Q(ce,"edge",()=>be({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));Q(ce,"safari",()=>be({darwin:"Safari"}));var rn=js;function nn(e=""){return`<link rel="icon" type="image/svg+xml" href="${`${e.replace(/\/$/,"")}/favicon-black.svg?v=4`}" />`}import{existsSync as gn,readFileSync as Ws}from"fs";import F from"path";import{fileURLToPath as zs}from"url";import{gunzipSync as qs}from"zlib";var $=eo(mn(),1);function le(e,t){return e.header("Retry-After",String($s(t))),e.json({error:"Too Many Requests"},429)}function $s(e){return e&&typeof e=="object"&&"msBeforeNext"in e&&typeof e.msBeforeNext=="number"&&Number.isFinite(e.msBeforeNext)?Math.max(1,Math.ceil(e.msBeforeNext/1e3)):60}var Ks={".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".png":"image/png",".ico":"image/x-icon",".webmanifest":"application/manifest+json"};function Vs(){let e=F.dirname(zs(import.meta.url));for(let t of[F.resolve(e,"app"),F.resolve(e,"../app"),F.resolve(e,"../../dist/app")])if(gn(F.join(t,"inspector.js.gz")))return t;throw new Error("Inspector bundle not found (expected dist/app/inspector.js.gz)")}function yn(e,t="/inspector/assets"){let r=Vs(),n=new Map,o=new $.default({points:600,duration:60}),s=async(i,a)=>{try{await o.consume(i.req)}catch(c){return le(i,c)}return a()};e.use(`${t}/*`,s),e.get(`${t}/*`,async i=>{let a=i.req.path.slice(t.length),c=a.startsWith("/")?a.slice(1):a;if(!c||c.includes(".."))return i.notFound();let l=c==="inspector.js"||c==="inspector.css"?`${c}.gz`:c,u=F.resolve(r,l),d=r.endsWith(F.sep)?r:`${r}${F.sep}`;if(!u.startsWith(d)||!gn(u))return i.notFound();let p=F.extname(c),m=l.endsWith(".gz"),g=/(?:^|,)\s*gzip\s*(?:,|$)/i.test(i.req.header("accept-encoding")??""),h=Ws(u),y=m&&!g?n.get(u)??Gs(n,u,h):h,f=y.buffer.slice(y.byteOffset,y.byteOffset+y.byteLength);return i.body(f,200,{"Content-Type":Ks[p]??"application/octet-stream",...m&&g?{"Content-Encoding":"gzip"}:{},...m?{Vary:"Accept-Encoding"}:{},"Cache-Control":"no-cache"})})}function Gs(e,t,r){let n=qs(r);return e.set(t,n),n}var wn={name:"@mcp-use/inspector",type:"module",version:"20.2.5",description:"MCP Inspector - A tool for inspecting and debugging MCP servers",author:"",license:"MIT",homepage:"https://github.com/mcp-use/mcp-use#readme",repository:{type:"git",url:"git+https://github.com/mcp-use/mcp-use.git",directory:"libraries/typescript/packages/inspector"},bugs:{url:"https://github.com/mcp-use/mcp-use/issues"},keywords:["mcp","inspector","debug","tools"],exports:{".":{types:"./dist/server/index.d.ts",import:"./dist/server/index.js"},"./client":{types:"./dist/client/index.d.ts",import:"./dist/client/index.js"},"./client/styles.css":{default:"./dist/client/styles.css"}},main:"./dist/server/index.js",types:"./dist/server/index.d.ts",bin:{"mcp-inspect":"./dist/cli.js"},files:["dist"],scripts:{dev:"rimraf node_modules/.vite && vite --strictPort","dev:client":"pnpm run dev","dev:server":"VITE_DEV=true tsx watch src/server/server.ts","dev:standalone":"tsx watch src/server/server.ts",clean:"rimraf dist",build:"pnpm run clean && pnpm run build:client-exports && pnpm run build:server && pnpm run build:app && pnpm run verify:package","build:app":"vite build --config vite.app.config.ts && node scripts/compress-app.mjs","watch:app":"vite build --watch --config vite.app.config.ts","preview:app":"vite preview --config vite.app.config.ts --host 127.0.0.1","serve:app":"pnpm build:app && pnpm preview:app","analyze:app":"ANALYZE=true vite build --config vite.app.config.ts","build:client-exports":"tsup --config tsup.client.ts && node scripts/copy-client-styles.mjs","build:server":"tsup --config tsup.server.ts","verify:package":"node scripts/verify-package.mjs",prepublishOnly:"pnpm --filter @mcp-use/client build && pnpm build",start:"node dist/cli.js --port 3000",preview:"vite preview","type-check":"tsc --noEmit",lint:"eslint .","lint:fix":"eslint . --fix","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","test:e2e:debug":"playwright test --debug","test:e2e:builtin":"node tests/e2e/scripts/run-test-matrix.mjs builtin","test:e2e:prod":"node tests/e2e/scripts/run-test-matrix.mjs prod","test:e2e:mix":"node tests/e2e/scripts/run-test-matrix.mjs mix","test:e2e:prod:ui":"TEST_MODE=production playwright test --ui","test:e2e:codegen":"playwright codegen http://localhost:3000/inspector","test:e2e:report":"playwright show-report","test:e2e:python":"node tests/e2e/scripts/run-python-e2e.mjs",test:"vitest run","test:unit":"vitest run","test:unit:watch":"vitest","test:e2e:tunnel":"node tests/e2e/scripts/run-tunnel-test.mjs","install:pnpm":"pnpm install","install:npm":"npm install","lint:npm":"npm run lint:fix","lint:pnpm":"pnpm lint:fix"},engines:{node:">=22.22.2"},peerDependencies:{"@base-ui/react":"^1.6.0","@mcp-use/agent":"^2.0.7 || ^2.0.8","@mcp-use/client":"^2.0.1 || ^2.1.0 || ^2.1.1 || ^2.1.2 || ^2.1.3 || ^2.1.4 || ^2.1.5","class-variance-authority":"^0.7.1",clsx:"^2.1.1",express:"^4.21.2 || ^5.0.0","lucide-react":"^0.562.0","markdown-to-jsx":"^9.7.4","mcp-use":"^2.2.4 || ^2.2.5 || ^2.3.0",motion:"^12.34.2",react:"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","react-resizable-panels":"^4.6.4",sonner:"^2.0.7","tailwind-merge":"^3.5.0"},peerDependenciesMeta:{"@base-ui/react":{optional:!0},"@mcp-use/agent":{optional:!0},"@mcp-use/client":{optional:!0},"class-variance-authority":{optional:!0},clsx:{optional:!0},express:{optional:!0},"lucide-react":{optional:!0},"markdown-to-jsx":{optional:!0},"mcp-use":{optional:!0},motion:{optional:!0},react:{optional:!0},"react-dom":{optional:!0},"react-resizable-panels":{optional:!0},sonner:{optional:!0},"tailwind-merge":{optional:!0}},dependencies:{},publishConfig:{access:"public"},devDependencies:{"@base-ui/react":"^1.6.0","@hono/node-server":"^2.0.5","@mcp-use/agent":"workspace:*","@mcp-use/client":"workspace:*","@playwright/test":"^1.58.2","@tailwindcss/vite":"^4.2.0","@types/express":"^5.0.6","@vitejs/plugin-react":"^6.0.0","class-variance-authority":"^0.7.1",clsx:"^2.1.1",emulate:"0.5.0",eslint:"^9.39.2",express:"^5.2.1",hono:"^4.12.34",jsdom:"^27.0.0","lucide-react":"^0.562.0","markdown-to-jsx":"^9.7.4",motion:"^12.34.2","oauth2-mock-server":"^8.2.2",open:"^11.0.0",react:"^19.2.3","react-dom":"^19.2.3","react-router":"^8.3.0","react-resizable-panels":"^4.6.4","rate-limiter-flexible":"^11.2.0","rollup-plugin-visualizer":"^6.0.3",sonner:"^2.0.7","tailwind-merge":"^3.5.0",tailwindcss:"^4.2.0",tsup:"^8.5.1",tsx:"^4.21.0","tw-animate-css":"^1.4.0",typescript:"^5.9.3",vite:"^8.0.16",vitest:"^4.1.0","wait-on":"^9.0.4",yaml:"^2.8.3",zod:"^4.2.0"}};var Xs=wn.version;function We(){return Xs}var Js=`<!doctype html>
|
|
8
|
+
tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}import{promisify as As}from"util";import{execFile as Cs}from"child_process";var _s=As(Cs),He={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}},Rt=new Map(Object.entries(He)),St=class extends Error{};async function Pt(e=_s){let{stdout:t}=await e("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),r=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(t);if(!r)throw new St(`Cannot find Windows browser in stdout: ${JSON.stringify(t)}`);let{id:n}=r.groups,o=n.lastIndexOf("."),s=n.lastIndexOf("-"),i=o===-1?void 0:n.slice(0,o),a=s===-1?void 0:n.slice(0,s);return He[n]??He[i]??He[a]??{name:n,id:n}}var Ls=Os(Ts),ks=e=>e.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,t=>t.toUpperCase());async function Ct(){if(At.platform==="darwin"){let e=await xt();return{name:await Et(e),id:e}}if(At.platform==="linux"){let{stdout:e}=await Ls("xdg-mime",["query","default","x-scheme-handler/http"]),t=e.trim();return{name:ks(t.replace(/.desktop$/,"").replace("-"," ")),id:t}}if(At.platform==="win32")return Pt();throw new Error("Only macOS, Linux, and Windows are supported")}import _t from"process";var Ms=!!(_t.env.SSH_CONNECTION||_t.env.SSH_CLIENT||_t.env.SSH_TTY),Yr=Ms;var $e=Symbol("fallbackAttempt"),Ot=import.meta.url?tn.dirname(Is(import.meta.url)):"",Xr=tn.join(Ot,"xdg-open"),{platform:ae,arch:Jr}=en,Qr=async(e,t)=>{if(e.length===0)return;let r=[];for(let n of e)try{return await t(n)}catch(o){r.push(o)}throw new AggregateError(r,"Failed to open in all supported apps")},Fe=async e=>{e={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...e};let t=e[$e]===!0;if(delete e[$e],Array.isArray(e.app))return Qr(e.app,l=>Fe({...e,app:l,[$e]:!0}));let{name:r,arguments:n=[]}=e.app??{};if(n=[...n],Array.isArray(r))return Qr(r,l=>Fe({...e,app:{name:l,arguments:n},[$e]:!0}));if(r==="browser"||r==="browserPrivate"){let l={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge","com.apple.safari":"safari"},u={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},d;if(H){let p=await Kr();d=Rt.get(p)??{}}else d=await Ct();if(d.id in l){let p=l[d.id.toLowerCase()];if(r==="browserPrivate"){if(p==="safari")throw new Error("Safari doesn't support opening in private mode via command line");n.push(u[p])}return Fe({...e,app:{name:ce[p],arguments:n}})}throw new Error(`${d.name} is not supported as a default browser`)}let o,s=[],i={},a=!1;if(H&&!ie()&&!Yr&&!r&&(a=await qr()),ae==="darwin")o="open",e.wait&&s.push("--wait-apps"),e.background&&s.push("--background"),e.newInstance&&s.push("--new"),r&&s.push("-a",r);else if(ae==="win32"||a){o=await Be(),s.push(...O.argumentsPrefix),H||(i.windowsVerbatimArguments=!0),H&&e.target&&(e.target=await Vr(e.target));let l=["$ProgressPreference = 'SilentlyContinue';","Start"];e.wait&&l.push("-Wait"),r?(l.push(O.escapeArgument(r)),e.target&&n.push(e.target)):e.target&&l.push(O.escapeArgument(e.target)),n.length>0&&(n=n.map(u=>O.escapeArgument(u)),l.push("-ArgumentList",n.join(","))),e.target=O.encodeCommand(l.join(" ")),e.wait||(i.stdio="ignore")}else{if(r)o=r;else{let l=!Ot||Ot==="/",u=!1;try{await Ns.access(Xr,Us.X_OK),u=!0}catch{}o=en.versions.electron??(ae==="android"||l||!u)?"xdg-open":Xr}n.length>0&&s.push(...n),e.wait||(i.stdio="ignore",i.detached=!0)}ae==="darwin"&&n.length>0&&s.push("--args",...n),e.target&&s.push(e.target);let c=Ds.spawn(o,s,i);return e.wait?new Promise((l,u)=>{c.once("error",u),c.once("close",d=>{if(!e.allowNonzeroExitCode&&d!==0){u(new Error(`Exited with code ${d}`));return}l(c)})}):t?new Promise((l,u)=>{c.once("error",u),c.once("spawn",()=>{c.once("close",d=>{if(c.off("error",u),d!==0){u(new Error(`Exited with code ${d}`));return}c.unref(),l(c)})})}):(c.unref(),new Promise((l,u)=>{c.once("error",u),c.once("spawn",()=>{c.off("error",u),l(c)})}))},js=(e,t)=>{if(typeof e!="string")throw new TypeError("Expected a `target`");return Fe({...t,target:e})};function Zr(e){if(typeof e=="string"||Array.isArray(e))return e;let{[Jr]:t}=e;if(!t)throw new Error(`${Jr} is not supported`);return t}function be({[ae]:e},{wsl:t}={}){if(t&&H)return Zr(t);if(!e)throw new Error(`${ae} is not supported`);return Zr(e)}var ce={browser:"browser",browserPrivate:"browserPrivate"};Q(ce,"chrome",()=>be({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium","chromium-browser"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));Q(ce,"brave",()=>be({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}}));Q(ce,"firefox",()=>be({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));Q(ce,"edge",()=>be({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));Q(ce,"safari",()=>be({darwin:"Safari"}));var rn=js;function nn(e=""){return`<link rel="icon" type="image/svg+xml" href="${`${e.replace(/\/$/,"")}/favicon-black.svg?v=4`}" />`}import{existsSync as gn,readFileSync as Ws}from"fs";import F from"path";import{fileURLToPath as zs}from"url";import{gunzipSync as qs}from"zlib";var $=eo(mn(),1);function le(e,t){return e.header("Retry-After",String($s(t))),e.json({error:"Too Many Requests"},429)}function $s(e){return e&&typeof e=="object"&&"msBeforeNext"in e&&typeof e.msBeforeNext=="number"&&Number.isFinite(e.msBeforeNext)?Math.max(1,Math.ceil(e.msBeforeNext/1e3)):60}var Ks={".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".png":"image/png",".ico":"image/x-icon",".webmanifest":"application/manifest+json"};function Vs(){let e=F.dirname(zs(import.meta.url));for(let t of[F.resolve(e,"app"),F.resolve(e,"../app"),F.resolve(e,"../../dist/app")])if(gn(F.join(t,"inspector.js.gz")))return t;throw new Error("Inspector bundle not found (expected dist/app/inspector.js.gz)")}function yn(e,t="/inspector/assets"){let r=Vs(),n=new Map,o=new $.default({points:600,duration:60}),s=async(i,a)=>{try{await o.consume(i.req)}catch(c){return le(i,c)}return a()};e.use(`${t}/*`,s),e.get(`${t}/*`,async i=>{let a=i.req.path.slice(t.length),c=a.startsWith("/")?a.slice(1):a;if(!c||c.includes(".."))return i.notFound();let l=c==="inspector.js"||c==="inspector.css"?`${c}.gz`:c,u=F.resolve(r,l),d=r.endsWith(F.sep)?r:`${r}${F.sep}`;if(!u.startsWith(d)||!gn(u))return i.notFound();let p=F.extname(c),m=l.endsWith(".gz"),g=/(?:^|,)\s*gzip\s*(?:,|$)/i.test(i.req.header("accept-encoding")??""),h=Ws(u),y=m&&!g?n.get(u)??Gs(n,u,h):h,f=y.buffer.slice(y.byteOffset,y.byteOffset+y.byteLength);return i.body(f,200,{"Content-Type":Ks[p]??"application/octet-stream",...m&&g?{"Content-Encoding":"gzip"}:{},...m?{Vary:"Accept-Encoding"}:{},"Cache-Control":"no-cache"})})}function Gs(e,t,r){let n=qs(r);return e.set(t,n),n}var wn={name:"@mcp-use/inspector",type:"module",version:"20.3.0",description:"MCP Inspector - A tool for inspecting and debugging MCP servers",author:"",license:"MIT",homepage:"https://github.com/mcp-use/mcp-use#readme",repository:{type:"git",url:"git+https://github.com/mcp-use/mcp-use.git",directory:"libraries/typescript/packages/inspector"},bugs:{url:"https://github.com/mcp-use/mcp-use/issues"},keywords:["mcp","inspector","debug","tools"],exports:{".":{types:"./dist/server/index.d.ts",import:"./dist/server/index.js"},"./client":{types:"./dist/client/index.d.ts",import:"./dist/client/index.js"},"./client/styles.css":{default:"./dist/client/styles.css"}},main:"./dist/server/index.js",types:"./dist/server/index.d.ts",bin:{"mcp-inspect":"./dist/cli.js"},files:["dist"],scripts:{dev:"rimraf node_modules/.vite && vite --strictPort","dev:client":"pnpm run dev","dev:server":"VITE_DEV=true tsx watch src/server/server.ts","dev:standalone":"tsx watch src/server/server.ts",clean:"rimraf dist",build:"pnpm run clean && pnpm run build:client-exports && pnpm run build:server && pnpm run build:app && pnpm run verify:package","build:app":"vite build --config vite.app.config.ts && node scripts/compress-app.mjs","watch:app":"vite build --watch --config vite.app.config.ts","preview:app":"vite preview --config vite.app.config.ts --host 127.0.0.1","serve:app":"pnpm build:app && pnpm preview:app","analyze:app":"ANALYZE=true vite build --config vite.app.config.ts","build:client-exports":"tsup --config tsup.client.ts && node scripts/copy-client-styles.mjs","build:server":"tsup --config tsup.server.ts","verify:package":"node scripts/verify-package.mjs",prepublishOnly:"pnpm --filter @mcp-use/client build && pnpm build",start:"node dist/cli.js --port 3000",preview:"vite preview","type-check":"tsc --noEmit",lint:"eslint .","lint:fix":"eslint . --fix","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","test:e2e:debug":"playwright test --debug","test:e2e:builtin":"node tests/e2e/scripts/run-test-matrix.mjs builtin","test:e2e:prod":"node tests/e2e/scripts/run-test-matrix.mjs prod","test:e2e:mix":"node tests/e2e/scripts/run-test-matrix.mjs mix","test:e2e:prod:ui":"TEST_MODE=production playwright test --ui","test:e2e:codegen":"playwright codegen http://localhost:3000/inspector","test:e2e:report":"playwright show-report","test:e2e:python":"node tests/e2e/scripts/run-python-e2e.mjs",test:"vitest run","test:unit":"vitest run","test:unit:watch":"vitest","test:e2e:tunnel":"node tests/e2e/scripts/run-tunnel-test.mjs","install:pnpm":"pnpm install","install:npm":"npm install","lint:npm":"npm run lint:fix","lint:pnpm":"pnpm lint:fix"},engines:{node:">=22.22.2"},peerDependencies:{"@base-ui/react":"^1.6.0","@mcp-use/agent":"^2.0.7 || ^2.0.8","@mcp-use/client":"^2.0.1 || ^2.1.0 || ^2.1.1 || ^2.1.2 || ^2.1.3 || ^2.1.4 || ^2.1.5","class-variance-authority":"^0.7.1",clsx:"^2.1.1",express:"^4.21.2 || ^5.0.0","lucide-react":"^0.562.0","markdown-to-jsx":"^9.7.4","mcp-use":"^2.2.4 || ^2.2.5 || ^2.3.0 || ^2.3.1",motion:"^12.34.2",react:"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","react-resizable-panels":"^4.6.4",sonner:"^2.0.7","tailwind-merge":"^3.5.0"},peerDependenciesMeta:{"@base-ui/react":{optional:!0},"@mcp-use/agent":{optional:!0},"@mcp-use/client":{optional:!0},"class-variance-authority":{optional:!0},clsx:{optional:!0},express:{optional:!0},"lucide-react":{optional:!0},"markdown-to-jsx":{optional:!0},"mcp-use":{optional:!0},motion:{optional:!0},react:{optional:!0},"react-dom":{optional:!0},"react-resizable-panels":{optional:!0},sonner:{optional:!0},"tailwind-merge":{optional:!0}},dependencies:{},publishConfig:{access:"public"},devDependencies:{"@base-ui/react":"^1.6.0","@hono/node-server":"^2.0.5","@mcp-use/agent":"workspace:*","@mcp-use/client":"workspace:*","@playwright/test":"^1.58.2","@tailwindcss/vite":"^4.2.0","@types/express":"^5.0.6","@vitejs/plugin-react":"^6.0.0","class-variance-authority":"^0.7.1",clsx:"^2.1.1",emulate:"0.5.0",eslint:"^9.39.2",express:"^5.2.1",hono:"^4.12.34",jsdom:"^27.0.0","lucide-react":"^0.562.0","markdown-to-jsx":"^9.7.4",motion:"^12.34.2","oauth2-mock-server":"^8.2.2",open:"^11.0.0",react:"^19.2.3","react-dom":"^19.2.3","react-router":"^8.3.0","react-resizable-panels":"^4.6.4","rate-limiter-flexible":"^11.2.0","rollup-plugin-visualizer":"^6.0.3",sonner:"^2.0.7","tailwind-merge":"^3.5.0",tailwindcss:"^4.2.0",tsup:"^8.5.1",tsx:"^4.21.0","tw-animate-css":"^1.4.0",typescript:"^5.9.3",vite:"^8.0.16",vitest:"^4.1.0","wait-on":"^9.0.4",yaml:"^2.8.3",zod:"^4.2.0"}};var Xs=wn.version;function We(){return Xs}var Js=`<!doctype html>
|
|
9
9
|
<html>
|
|
10
10
|
<head>
|
|
11
11
|
<meta charset="utf-8" />
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { Tool, Resource, Prompt,
|
|
2
|
+
import { McpServerConfig, McpServer, Tool, Resource, Prompt, ElicitRequestFormParams, ElicitRequestURLParams, GetPromptResult, ElicitResult, Skill } from '@mcp-use/client/react';
|
|
3
3
|
export { ViewRenderer, getViewResourceUri, isViewTool } from '@mcp-use/client/react';
|
|
4
|
-
import { ProviderName, McpConnectionLike } from '@mcp-use/agent';
|
|
5
4
|
import * as react from 'react';
|
|
6
5
|
import react__default, { ReactNode, RefObject, SetStateAction } from 'react';
|
|
6
|
+
import { ProviderName, McpConnectionLike } from '@mcp-use/agent';
|
|
7
7
|
|
|
8
8
|
interface AddToClientDropdownProps {
|
|
9
9
|
serverConfig: {
|
|
@@ -56,6 +56,144 @@ interface AddToClientDropdownProps {
|
|
|
56
56
|
*/
|
|
57
57
|
declare function AddToClientDropdown({ serverConfig, additionalItems, showClients, className, onSuccess, onError, trigger, }: AddToClientDropdownProps): react_jsx_runtime.JSX.Element;
|
|
58
58
|
|
|
59
|
+
interface CustomHeader {
|
|
60
|
+
name: string;
|
|
61
|
+
value: string;
|
|
62
|
+
id: string;
|
|
63
|
+
}
|
|
64
|
+
interface CustomHeadersEditorProps {
|
|
65
|
+
headers: CustomHeader[];
|
|
66
|
+
onChange: (headers: CustomHeader[]) => void;
|
|
67
|
+
onSave?: () => void;
|
|
68
|
+
className?: string;
|
|
69
|
+
title?: React.ReactNode;
|
|
70
|
+
description?: string;
|
|
71
|
+
maxHeaders?: number;
|
|
72
|
+
}
|
|
73
|
+
declare function CustomHeadersEditor({ headers, onChange, onSave, className, title, description, maxHeaders, }: CustomHeadersEditorProps): react_jsx_runtime.JSX.Element;
|
|
74
|
+
|
|
75
|
+
interface OAuthStaticConfig {
|
|
76
|
+
clientId?: string;
|
|
77
|
+
clientSecret?: string;
|
|
78
|
+
scope?: string;
|
|
79
|
+
}
|
|
80
|
+
type ConnectionMode = "auto" | "direct" | "proxy";
|
|
81
|
+
type InspectorProtocolMode = "auto" | "v1" | "v2";
|
|
82
|
+
type ProtocolNegotiation = NonNullable<McpServerConfig["protocolNegotiation"]>;
|
|
83
|
+
declare function protocolNegotiationForMode(mode: InspectorProtocolMode): ProtocolNegotiation;
|
|
84
|
+
declare function protocolModeFromNegotiation(negotiation?: McpServerConfig["protocolNegotiation"]): InspectorProtocolMode;
|
|
85
|
+
declare function normalizeConnectionMode(mode?: string, legacyConnectionType?: string, hasProxyAddress?: boolean): ConnectionMode;
|
|
86
|
+
type AutoProxyFallbackConfig = boolean | {
|
|
87
|
+
enabled?: boolean;
|
|
88
|
+
proxyAddress?: string;
|
|
89
|
+
};
|
|
90
|
+
interface EditableConnectionConfig {
|
|
91
|
+
url: string;
|
|
92
|
+
name?: string;
|
|
93
|
+
transportType: "http" | "sse";
|
|
94
|
+
connectionMode?: ConnectionMode;
|
|
95
|
+
connectionType?: "Direct" | "Via Proxy";
|
|
96
|
+
proxyConfig?: {
|
|
97
|
+
proxyAddress?: string;
|
|
98
|
+
headers?: Record<string, string>;
|
|
99
|
+
customHeaders?: Record<string, string>;
|
|
100
|
+
};
|
|
101
|
+
headers?: Record<string, string>;
|
|
102
|
+
customHeaders?: Record<string, string>;
|
|
103
|
+
oauth?: OAuthStaticConfig;
|
|
104
|
+
autoProxyFallback?: AutoProxyFallbackConfig;
|
|
105
|
+
protocolNegotiation?: McpServerConfig["protocolNegotiation"];
|
|
106
|
+
/** Inspector UI: default tool-call request timeout (ms). */
|
|
107
|
+
requestTimeout?: number;
|
|
108
|
+
resetTimeoutOnProgress?: boolean;
|
|
109
|
+
maxTotalTimeout?: number;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
interface ConnectionSettingsFormProps {
|
|
113
|
+
alias: string;
|
|
114
|
+
setAlias: (value: string) => void;
|
|
115
|
+
url: string;
|
|
116
|
+
setUrl: (value: string) => void;
|
|
117
|
+
connectionMode: ConnectionMode;
|
|
118
|
+
setConnectionMode: (value: ConnectionMode) => void;
|
|
119
|
+
protocolMode: InspectorProtocolMode;
|
|
120
|
+
setProtocolMode: (value: InspectorProtocolMode) => void;
|
|
121
|
+
customHeaders: CustomHeader[];
|
|
122
|
+
setCustomHeaders: (headers: CustomHeader[]) => void;
|
|
123
|
+
requestTimeout: string;
|
|
124
|
+
setRequestTimeout: (value: string) => void;
|
|
125
|
+
resetTimeoutOnProgress: string;
|
|
126
|
+
setResetTimeoutOnProgress: (value: string) => void;
|
|
127
|
+
maxTotalTimeout: string;
|
|
128
|
+
setMaxTotalTimeout: (value: string) => void;
|
|
129
|
+
proxyAddress: string;
|
|
130
|
+
setProxyAddress: (value: string) => void;
|
|
131
|
+
clientId: string;
|
|
132
|
+
setClientId: (value: string) => void;
|
|
133
|
+
clientSecret: string;
|
|
134
|
+
setClientSecret: (value: string) => void;
|
|
135
|
+
scope: string;
|
|
136
|
+
setScope: (value: string) => void;
|
|
137
|
+
onConnect?: () => void;
|
|
138
|
+
onSave?: () => void;
|
|
139
|
+
onCancel?: () => void;
|
|
140
|
+
variant?: "default" | "styled";
|
|
141
|
+
showConnectButton?: boolean;
|
|
142
|
+
showSaveButton?: boolean;
|
|
143
|
+
showExportButton?: boolean;
|
|
144
|
+
isConnecting?: boolean;
|
|
145
|
+
inlineSections?: boolean;
|
|
146
|
+
/** When true with inlineSections, each group renders in its own settings card. */
|
|
147
|
+
cardSections?: boolean;
|
|
148
|
+
/** Optional consumer validation for the URL field. Return an error message to block Connect. */
|
|
149
|
+
validateUrl?: (value: string) => string | undefined;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Renders a connection settings form with controls for URL, connection type, OAuth, headers, and timeouts; supports copying the current configuration to the clipboard and pasting a JSON configuration to populate the form.
|
|
153
|
+
*
|
|
154
|
+
* The form manages sub-dialogs for Authentication, Custom Headers, and Configuration, handles Enter to trigger connection, and conditionally shows Connect/Save/Copy buttons based on props.
|
|
155
|
+
*
|
|
156
|
+
* @param onConnect - Callback invoked when the user triggers a connection (e.g., Connect button or Enter key)
|
|
157
|
+
* @param onSave - Callback invoked when the user saves connection options via the Save Connection Options button
|
|
158
|
+
* @param onCancel - Callback invoked when the user cancels editing (optional)
|
|
159
|
+
* @param variant - Visual variant of the form; "styled" applies a dark/styled appearance
|
|
160
|
+
* @param showConnectButton - When true, renders the Connect button
|
|
161
|
+
* @param showSaveButton - When true, renders Save and optional Cancel actions
|
|
162
|
+
* @param showExportButton - When true, renders the Copy Config button that copies a JSON config to the clipboard
|
|
163
|
+
* @param isConnecting - When true, disables the Connect button and shows a connecting state
|
|
164
|
+
*
|
|
165
|
+
* @returns The JSX element for the connection settings form
|
|
166
|
+
*/
|
|
167
|
+
declare function ConnectionSettingsForm({ alias, setAlias, url, setUrl, connectionMode, setConnectionMode, protocolMode, setProtocolMode, customHeaders, setCustomHeaders, requestTimeout, setRequestTimeout, resetTimeoutOnProgress, setResetTimeoutOnProgress, maxTotalTimeout, setMaxTotalTimeout, proxyAddress, setProxyAddress, clientId, setClientId, clientSecret, setClientSecret, scope, setScope, onConnect, onSave, onCancel, variant, showConnectButton, showSaveButton, showExportButton, isConnecting, inlineSections, cardSections, validateUrl, }: ConnectionSettingsFormProps): react_jsx_runtime.JSX.Element;
|
|
168
|
+
|
|
169
|
+
declare function useConnectionFormState(connection: McpServer | null, enabled: boolean): {
|
|
170
|
+
alias: string;
|
|
171
|
+
setAlias: react.Dispatch<react.SetStateAction<string>>;
|
|
172
|
+
url: string;
|
|
173
|
+
setUrl: react.Dispatch<react.SetStateAction<string>>;
|
|
174
|
+
connectionMode: ConnectionMode;
|
|
175
|
+
setConnectionMode: react.Dispatch<react.SetStateAction<ConnectionMode>>;
|
|
176
|
+
protocolMode: InspectorProtocolMode;
|
|
177
|
+
setProtocolMode: react.Dispatch<react.SetStateAction<InspectorProtocolMode>>;
|
|
178
|
+
customHeaders: CustomHeader[];
|
|
179
|
+
setCustomHeaders: react.Dispatch<react.SetStateAction<CustomHeader[]>>;
|
|
180
|
+
requestTimeout: string;
|
|
181
|
+
setRequestTimeout: react.Dispatch<react.SetStateAction<string>>;
|
|
182
|
+
resetTimeoutOnProgress: string;
|
|
183
|
+
setResetTimeoutOnProgress: react.Dispatch<react.SetStateAction<string>>;
|
|
184
|
+
maxTotalTimeout: string;
|
|
185
|
+
setMaxTotalTimeout: react.Dispatch<react.SetStateAction<string>>;
|
|
186
|
+
proxyAddress: string;
|
|
187
|
+
setProxyAddress: react.Dispatch<react.SetStateAction<string>>;
|
|
188
|
+
clientId: string;
|
|
189
|
+
setClientId: react.Dispatch<react.SetStateAction<string>>;
|
|
190
|
+
clientSecret: string;
|
|
191
|
+
setClientSecret: react.Dispatch<react.SetStateAction<string>>;
|
|
192
|
+
scope: string;
|
|
193
|
+
setScope: react.Dispatch<react.SetStateAction<string>>;
|
|
194
|
+
buildConfig: () => EditableConnectionConfig | null;
|
|
195
|
+
};
|
|
196
|
+
|
|
59
197
|
/**
|
|
60
198
|
* Utility functions for generating MCP client configurations and commands
|
|
61
199
|
*/
|
|
@@ -1409,7 +1547,7 @@ declare function useConfig({ mcpServerUrl }: UseConfigProps): {
|
|
|
1409
1547
|
setTempModel: react.Dispatch<react.SetStateAction<string>>;
|
|
1410
1548
|
tempBaseUrl: string;
|
|
1411
1549
|
setTempBaseUrl: react.Dispatch<react.SetStateAction<string>>;
|
|
1412
|
-
tempAuthType: "none" | "
|
|
1550
|
+
tempAuthType: "none" | "oauth" | "basic" | "bearer";
|
|
1413
1551
|
saveLLMConfig: () => boolean;
|
|
1414
1552
|
clearConfig: () => void;
|
|
1415
1553
|
};
|
|
@@ -1547,4 +1685,4 @@ type UseChatTitleGenerationParams = {
|
|
|
1547
1685
|
};
|
|
1548
1686
|
declare function useChatTitleGeneration({ activeChatId, storage, messages, isLoading, effectiveClientSide, llmConfig, activeChatTitle, titleGenerationReady, onTitleGenerated, onHistoryRefetch, }: UseChatTitleGenerationParams): void;
|
|
1549
1687
|
|
|
1550
|
-
export { AddToClientDropdown, type AuthConfig, CHAT_TITLE_PLACEHOLDER, CHAT_TITLE_SIMPLE, type ChatBodyBuilder, type ChatBodyContext, type ChatBridgeAdapter, type ChatBridgeMessage, type ChatEventRowForMessages, ChatHeader, ChatHistoryHeader, ChatHistoryPanel, ChatHistoryRail, ChatInputArea, ChatLandingForm, ChatList, type ChatSerializedMessage, type ChatSession, type ChatStorageProvider, type ChatSystemPromptProvider, ChatTab, type ChatTabProps, ChatTitleReveal, type ChatView, ConfigurationDialog, ConfigureEmptyState, DEFAULT_CHAT_SYSTEM_PROMPT, type EmbeddedConfig, InspectorProvider, type InspectorTokenUsage, type InspectorTraceEvent, type InspectorTraceSpan, type InspectorTraceState, type LLMConfig, type ListChatsParams, LocalChatStorageProvider, type MCPConfig, type MCPServerConfig, type Message$1 as Message, type MessageAttachment, MessageList, type PromptResult, PromptsTab, type PromptsTabRef, ResourcesTab, type ResourcesTabRef, type StreamProtocol, type TabType, ThemeProvider, ToolInputForm, type ToolResult, ToolResultDisplay, ToolResultRenderer, ToolsTab, type ToolsTabRef, WidgetDebugProvider, chatBarActionButtonClass, chatBarFrostedPill, chatBarTitleFrostedClass, chatEventsToInspectorMessages, downloadMcpbFile, firstUserMessageFromMessages, generateChatTitleWithLlm, generateClaudeCodeCommand, generateCodexConfig, generateCursorDeepLink, generateGeminiCLICommand, generateMcpbConfig, generatePythonSDKCode, generateTypeScriptSDKCode, generateVSCodeDeepLink, generateVSCodeInsidersDeepLink, getEnvVarInstructions, getSystemPromptStorageKey, isPlaceholderTitle, readStoredSystemPrompt, resolveSystemPrompt, useChatHistory, useChatMessages, useChatMessagesClientSide, useChatTitleGeneration, useConfig, useInspector, useMCPPrompts, writeStoredSystemPrompt };
|
|
1688
|
+
export { AddToClientDropdown, type AuthConfig, CHAT_TITLE_PLACEHOLDER, CHAT_TITLE_SIMPLE, type ChatBodyBuilder, type ChatBodyContext, type ChatBridgeAdapter, type ChatBridgeMessage, type ChatEventRowForMessages, ChatHeader, ChatHistoryHeader, ChatHistoryPanel, ChatHistoryRail, ChatInputArea, ChatLandingForm, ChatList, type ChatSerializedMessage, type ChatSession, type ChatStorageProvider, type ChatSystemPromptProvider, ChatTab, type ChatTabProps, ChatTitleReveal, type ChatView, ConfigurationDialog, ConfigureEmptyState, type ConnectionMode, ConnectionSettingsForm, type ConnectionSettingsFormProps, type CustomHeader, CustomHeadersEditor, DEFAULT_CHAT_SYSTEM_PROMPT, type EditableConnectionConfig, type EmbeddedConfig, type InspectorProtocolMode, InspectorProvider, type InspectorTokenUsage, type InspectorTraceEvent, type InspectorTraceSpan, type InspectorTraceState, type LLMConfig, type ListChatsParams, LocalChatStorageProvider, type MCPConfig, type MCPServerConfig, type Message$1 as Message, type MessageAttachment, MessageList, type PromptResult, PromptsTab, type PromptsTabRef, ResourcesTab, type ResourcesTabRef, type StreamProtocol, type TabType, ThemeProvider, ToolInputForm, type ToolResult, ToolResultDisplay, ToolResultRenderer, ToolsTab, type ToolsTabRef, WidgetDebugProvider, chatBarActionButtonClass, chatBarFrostedPill, chatBarTitleFrostedClass, chatEventsToInspectorMessages, downloadMcpbFile, firstUserMessageFromMessages, generateChatTitleWithLlm, generateClaudeCodeCommand, generateCodexConfig, generateCursorDeepLink, generateGeminiCLICommand, generateMcpbConfig, generatePythonSDKCode, generateTypeScriptSDKCode, generateVSCodeDeepLink, generateVSCodeInsidersDeepLink, getEnvVarInstructions, getSystemPromptStorageKey, isPlaceholderTitle, normalizeConnectionMode, protocolModeFromNegotiation, protocolNegotiationForMode, readStoredSystemPrompt, resolveSystemPrompt, useChatHistory, useChatMessages, useChatMessagesClientSide, useChatTitleGeneration, useConfig, useConnectionFormState, useInspector, useMCPPrompts, writeStoredSystemPrompt };
|