@tonyclaw/agent-inspector 2.0.8 → 2.0.10

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.
Files changed (44) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/{CompareDrawer-Djb4XFZS.js → CompareDrawer-BWMipEjS.js} +1 -1
  3. package/.output/public/assets/ProxyViewerContainer-DIAgurux.js +114 -0
  4. package/.output/public/assets/{ReplayDialog-DBPMIs2I.js → ReplayDialog-DaSzZsvM.js} +1 -1
  5. package/.output/public/assets/RequestAnatomy-BfQmPHCd.js +1 -0
  6. package/.output/public/assets/ResponseView-CblEWDMx.js +1 -0
  7. package/.output/public/assets/StreamingChunkSequence-B4atnL99.js +1 -0
  8. package/.output/public/assets/_sessionId-DUzYnZXV.js +1 -0
  9. package/.output/public/assets/index-CxhRsekH.css +1 -0
  10. package/.output/public/assets/index-jagRsQaV.js +1 -0
  11. package/.output/public/assets/{main-CwhqfJqM.js → main-DE6Y4-wV.js} +2 -2
  12. package/.output/server/{_sessionId-DzBy9gLa.mjs → _sessionId-61HO9rUI.mjs} +3 -3
  13. package/.output/server/_ssr/{CompareDrawer-C5NBvE2e.mjs → CompareDrawer-CSPqneYm.mjs} +2 -2
  14. package/.output/server/_ssr/{ProxyViewerContainer-DiZjOTQT.mjs → ProxyViewerContainer-DrSMa5O7.mjs} +159 -14
  15. package/.output/server/_ssr/{ReplayDialog-EpvTwFvp.mjs → ReplayDialog-Dn3naENv.mjs} +3 -3
  16. package/.output/server/_ssr/{RequestAnatomy-DaQjhixp.mjs → RequestAnatomy-D1X3f3AX.mjs} +336 -42
  17. package/.output/server/_ssr/{ResponseView-D8tGHCGY.mjs → ResponseView-CwXAWOoE.mjs} +2 -2
  18. package/.output/server/_ssr/{StreamingChunkSequence-DGQnb1QE.mjs → StreamingChunkSequence-DRSR2FfN.mjs} +2 -2
  19. package/.output/server/_ssr/{index-N25hqa7t.mjs → index-D4zn5CAg.mjs} +2 -2
  20. package/.output/server/_ssr/index.mjs +2 -2
  21. package/.output/server/_ssr/{router-Bf0m6F0G.mjs → router-CSRaa_tu.mjs} +531 -111
  22. package/.output/server/{_tanstack-start-manifest_v-DlAyJ5DB.mjs → _tanstack-start-manifest_v-CfvVUYYj.mjs} +1 -1
  23. package/.output/server/index.mjs +60 -60
  24. package/bin/agent-inspector.js +2 -0
  25. package/package.json +3 -2
  26. package/src/components/providers/ProviderCard.tsx +59 -5
  27. package/src/components/providers/ProviderForm.tsx +42 -0
  28. package/src/components/providers/ProvidersPanel.tsx +68 -0
  29. package/src/components/proxy-viewer/LogEntry.tsx +6 -1
  30. package/src/components/proxy-viewer/anatomy/RequestAnatomy.tsx +134 -3
  31. package/src/components/proxy-viewer/anatomy/contextIntelligence.ts +298 -40
  32. package/src/lib/providerContract.ts +12 -0
  33. package/src/lib/providerModelMetadata.ts +327 -0
  34. package/src/proxy/providers.ts +112 -52
  35. package/src/routes/api/providers.$providerId.model-metadata.ts +134 -0
  36. package/src/routes/api/providers.$providerId.ts +3 -0
  37. package/src/routes/api/providers.ts +2 -0
  38. package/.output/public/assets/ProxyViewerContainer-CWdkPZsJ.js +0 -114
  39. package/.output/public/assets/RequestAnatomy-FBfRNQN7.js +0 -1
  40. package/.output/public/assets/ResponseView-Db4pJL7U.js +0 -1
  41. package/.output/public/assets/StreamingChunkSequence-BH175O6R.js +0 -1
  42. package/.output/public/assets/_sessionId-3ipVoQtW.js +0 -1
  43. package/.output/public/assets/index-Bo1dGS4R.css +0 -1
  44. package/.output/public/assets/index-CJgaCJo8.js +0 -1
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-CJgaCJo8.js","assets/ProxyViewerContainer-CWdkPZsJ.js","assets/_sessionId-3ipVoQtW.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-jagRsQaV.js","assets/ProxyViewerContainer-DIAgurux.js","assets/_sessionId-DUzYnZXV.js"])))=>i.map(i=>d[i]);
2
2
  function Iv(a,u){for(var i=0;i<u.length;i++){const r=u[i];if(typeof r!="string"&&!Array.isArray(r)){for(const o in r)if(o!=="default"&&!(o in a)){const f=Object.getOwnPropertyDescriptor(r,o);f&&Object.defineProperty(a,o,f.get?f:{enumerable:!0,get:()=>r[o]})}}}return Object.freeze(Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}))}var mR=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function hp(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var ho={exports:{}},Xi={};var py;function tS(){if(py)return Xi;py=1;var a=Symbol.for("react.transitional.element"),u=Symbol.for("react.fragment");function i(r,o,f){var h=null;if(f!==void 0&&(h=""+f),o.key!==void 0&&(h=""+o.key),"key"in o){f={};for(var y in o)y!=="key"&&(f[y]=o[y])}else f=o;return o=f.ref,{$$typeof:a,type:r,key:h,ref:o!==void 0?o:null,props:f}}return Xi.Fragment=u,Xi.jsx=i,Xi.jsxs=i,Xi}var gy;function eS(){return gy||(gy=1,ho.exports=tS()),ho.exports}var J=eS(),mo={exports:{}},dt={};var vy;function nS(){if(vy)return dt;vy=1;var a=Symbol.for("react.transitional.element"),u=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),f=Symbol.for("react.consumer"),h=Symbol.for("react.context"),y=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),v=Symbol.for("react.lazy"),S=Symbol.for("react.activity"),_=Symbol.iterator;function R(w){return w===null||typeof w!="object"?null:(w=_&&w[_]||w["@@iterator"],typeof w=="function"?w:null)}var z={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},A=Object.assign,M={};function Y(w,q,k){this.props=w,this.context=q,this.refs=M,this.updater=k||z}Y.prototype.isReactComponent={},Y.prototype.setState=function(w,q){if(typeof w!="object"&&typeof w!="function"&&w!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,w,q,"setState")},Y.prototype.forceUpdate=function(w){this.updater.enqueueForceUpdate(this,w,"forceUpdate")};function B(){}B.prototype=Y.prototype;function Z(w,q,k){this.props=w,this.context=q,this.refs=M,this.updater=k||z}var H=Z.prototype=new B;H.constructor=Z,A(H,Y.prototype),H.isPureReactComponent=!0;var F=Array.isArray;function I(){}var Q={H:null,A:null,T:null,S:null},X=Object.prototype.hasOwnProperty;function K(w,q,k){var W=k.ref;return{$$typeof:a,type:w,key:q,ref:W!==void 0?W:null,props:k}}function rt(w,q){return K(w.type,q,w.props)}function nt(w){return typeof w=="object"&&w!==null&&w.$$typeof===a}function lt(w){var q={"=":"=0",":":"=2"};return"$"+w.replace(/[=:]/g,function(k){return q[k]})}var ht=/\/+/g;function it(w,q){return typeof w=="object"&&w!==null&&w.key!=null?lt(""+w.key):q.toString(36)}function jt(w){switch(w.status){case"fulfilled":return w.value;case"rejected":throw w.reason;default:switch(typeof w.status=="string"?w.then(I,I):(w.status="pending",w.then(function(q){w.status==="pending"&&(w.status="fulfilled",w.value=q)},function(q){w.status==="pending"&&(w.status="rejected",w.reason=q)})),w.status){case"fulfilled":return w.value;case"rejected":throw w.reason}}throw w}function N(w,q,k,W,ct){var ot=typeof w;(ot==="undefined"||ot==="boolean")&&(w=null);var ft=!1;if(w===null)ft=!0;else switch(ot){case"bigint":case"string":case"number":ft=!0;break;case"object":switch(w.$$typeof){case a:case u:ft=!0;break;case v:return ft=w._init,N(ft(w._payload),q,k,W,ct)}}if(ft)return ct=ct(w),ft=W===""?"."+it(w,0):W,F(ct)?(k="",ft!=null&&(k=ft.replace(ht,"$&/")+"/"),N(ct,q,k,"",function(De){return De})):ct!=null&&(nt(ct)&&(ct=rt(ct,k+(ct.key==null||w&&w.key===ct.key?"":(""+ct.key).replace(ht,"$&/")+"/")+ft)),q.push(ct)),1;ft=0;var Xt=W===""?".":W+":";if(F(w))for(var Ht=0;Ht<w.length;Ht++)W=w[Ht],ot=Xt+it(W,Ht),ft+=N(W,q,k,ot,ct);else if(Ht=R(w),typeof Ht=="function")for(w=Ht.call(w),Ht=0;!(W=w.next()).done;)W=W.value,ot=Xt+it(W,Ht++),ft+=N(W,q,k,ot,ct);else if(ot==="object"){if(typeof w.then=="function")return N(jt(w),q,k,W,ct);throw q=String(w),Error("Objects are not valid as a React child (found: "+(q==="[object Object]"?"object with keys {"+Object.keys(w).join(", ")+"}":q)+"). If you meant to render a collection of children, use an array instead.")}return ft}function P(w,q,k){if(w==null)return w;var W=[],ct=0;return N(w,W,"","",function(ot){return q.call(k,ot,ct++)}),W}function ut(w){if(w._status===-1){var q=w._result;q=q(),q.then(function(k){(w._status===0||w._status===-1)&&(w._status=1,w._result=k)},function(k){(w._status===0||w._status===-1)&&(w._status=2,w._result=k)}),w._status===-1&&(w._status=0,w._result=q)}if(w._status===1)return w._result.default;throw w._result}var Tt=typeof reportError=="function"?reportError:function(w){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var q=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof w=="object"&&w!==null&&typeof w.message=="string"?String(w.message):String(w),error:w});if(!window.dispatchEvent(q))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",w);return}console.error(w)},pt={map:P,forEach:function(w,q,k){P(w,function(){q.apply(this,arguments)},k)},count:function(w){var q=0;return P(w,function(){q++}),q},toArray:function(w){return P(w,function(q){return q})||[]},only:function(w){if(!nt(w))throw Error("React.Children.only expected to receive a single React element child.");return w}};return dt.Activity=S,dt.Children=pt,dt.Component=Y,dt.Fragment=i,dt.Profiler=o,dt.PureComponent=Z,dt.StrictMode=r,dt.Suspense=m,dt.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=Q,dt.__COMPILER_RUNTIME={__proto__:null,c:function(w){return Q.H.useMemoCache(w)}},dt.cache=function(w){return function(){return w.apply(null,arguments)}},dt.cacheSignal=function(){return null},dt.cloneElement=function(w,q,k){if(w==null)throw Error("The argument must be a React element, but you passed "+w+".");var W=A({},w.props),ct=w.key;if(q!=null)for(ot in q.key!==void 0&&(ct=""+q.key),q)!X.call(q,ot)||ot==="key"||ot==="__self"||ot==="__source"||ot==="ref"&&q.ref===void 0||(W[ot]=q[ot]);var ot=arguments.length-2;if(ot===1)W.children=k;else if(1<ot){for(var ft=Array(ot),Xt=0;Xt<ot;Xt++)ft[Xt]=arguments[Xt+2];W.children=ft}return K(w.type,ct,W)},dt.createContext=function(w){return w={$$typeof:h,_currentValue:w,_currentValue2:w,_threadCount:0,Provider:null,Consumer:null},w.Provider=w,w.Consumer={$$typeof:f,_context:w},w},dt.createElement=function(w,q,k){var W,ct={},ot=null;if(q!=null)for(W in q.key!==void 0&&(ot=""+q.key),q)X.call(q,W)&&W!=="key"&&W!=="__self"&&W!=="__source"&&(ct[W]=q[W]);var ft=arguments.length-2;if(ft===1)ct.children=k;else if(1<ft){for(var Xt=Array(ft),Ht=0;Ht<ft;Ht++)Xt[Ht]=arguments[Ht+2];ct.children=Xt}if(w&&w.defaultProps)for(W in ft=w.defaultProps,ft)ct[W]===void 0&&(ct[W]=ft[W]);return K(w,ot,ct)},dt.createRef=function(){return{current:null}},dt.forwardRef=function(w){return{$$typeof:y,render:w}},dt.isValidElement=nt,dt.lazy=function(w){return{$$typeof:v,_payload:{_status:-1,_result:w},_init:ut}},dt.memo=function(w,q){return{$$typeof:p,type:w,compare:q===void 0?null:q}},dt.startTransition=function(w){var q=Q.T,k={};Q.T=k;try{var W=w(),ct=Q.S;ct!==null&&ct(k,W),typeof W=="object"&&W!==null&&typeof W.then=="function"&&W.then(I,Tt)}catch(ot){Tt(ot)}finally{q!==null&&k.types!==null&&(q.types=k.types),Q.T=q}},dt.unstable_useCacheRefresh=function(){return Q.H.useCacheRefresh()},dt.use=function(w){return Q.H.use(w)},dt.useActionState=function(w,q,k){return Q.H.useActionState(w,q,k)},dt.useCallback=function(w,q){return Q.H.useCallback(w,q)},dt.useContext=function(w){return Q.H.useContext(w)},dt.useDebugValue=function(){},dt.useDeferredValue=function(w,q){return Q.H.useDeferredValue(w,q)},dt.useEffect=function(w,q){return Q.H.useEffect(w,q)},dt.useEffectEvent=function(w){return Q.H.useEffectEvent(w)},dt.useId=function(){return Q.H.useId()},dt.useImperativeHandle=function(w,q,k){return Q.H.useImperativeHandle(w,q,k)},dt.useInsertionEffect=function(w,q){return Q.H.useInsertionEffect(w,q)},dt.useLayoutEffect=function(w,q){return Q.H.useLayoutEffect(w,q)},dt.useMemo=function(w,q){return Q.H.useMemo(w,q)},dt.useOptimistic=function(w,q){return Q.H.useOptimistic(w,q)},dt.useReducer=function(w,q,k){return Q.H.useReducer(w,q,k)},dt.useRef=function(w){return Q.H.useRef(w)},dt.useState=function(w){return Q.H.useState(w)},dt.useSyncExternalStore=function(w,q,k){return Q.H.useSyncExternalStore(w,q,k)},dt.useTransition=function(){return Q.H.useTransition()},dt.version="19.2.4",dt}var Sy;function nu(){return Sy||(Sy=1,mo.exports=nS()),mo.exports}var $=nu();const qn=hp($),aS=Iv({__proto__:null,default:qn},[$]);var yo={exports:{}},Qi={},po={exports:{}},go={};var by;function lS(){return by||(by=1,(function(a){function u(N,P){var ut=N.length;N.push(P);t:for(;0<ut;){var Tt=ut-1>>>1,pt=N[Tt];if(0<o(pt,P))N[Tt]=P,N[ut]=pt,ut=Tt;else break t}}function i(N){return N.length===0?null:N[0]}function r(N){if(N.length===0)return null;var P=N[0],ut=N.pop();if(ut!==P){N[0]=ut;t:for(var Tt=0,pt=N.length,w=pt>>>1;Tt<w;){var q=2*(Tt+1)-1,k=N[q],W=q+1,ct=N[W];if(0>o(k,ut))W<pt&&0>o(ct,k)?(N[Tt]=ct,N[W]=ut,Tt=W):(N[Tt]=k,N[q]=ut,Tt=q);else if(W<pt&&0>o(ct,ut))N[Tt]=ct,N[W]=ut,Tt=W;else break t}}return P}function o(N,P){var ut=N.sortIndex-P.sortIndex;return ut!==0?ut:N.id-P.id}if(a.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var f=performance;a.unstable_now=function(){return f.now()}}else{var h=Date,y=h.now();a.unstable_now=function(){return h.now()-y}}var m=[],p=[],v=1,S=null,_=3,R=!1,z=!1,A=!1,M=!1,Y=typeof setTimeout=="function"?setTimeout:null,B=typeof clearTimeout=="function"?clearTimeout:null,Z=typeof setImmediate<"u"?setImmediate:null;function H(N){for(var P=i(p);P!==null;){if(P.callback===null)r(p);else if(P.startTime<=N)r(p),P.sortIndex=P.expirationTime,u(m,P);else break;P=i(p)}}function F(N){if(A=!1,H(N),!z)if(i(m)!==null)z=!0,I||(I=!0,lt());else{var P=i(p);P!==null&&jt(F,P.startTime-N)}}var I=!1,Q=-1,X=5,K=-1;function rt(){return M?!0:!(a.unstable_now()-K<X)}function nt(){if(M=!1,I){var N=a.unstable_now();K=N;var P=!0;try{t:{z=!1,A&&(A=!1,B(Q),Q=-1),R=!0;var ut=_;try{e:{for(H(N),S=i(m);S!==null&&!(S.expirationTime>N&&rt());){var Tt=S.callback;if(typeof Tt=="function"){S.callback=null,_=S.priorityLevel;var pt=Tt(S.expirationTime<=N);if(N=a.unstable_now(),typeof pt=="function"){S.callback=pt,H(N),P=!0;break e}S===i(m)&&r(m),H(N)}else r(m);S=i(m)}if(S!==null)P=!0;else{var w=i(p);w!==null&&jt(F,w.startTime-N),P=!1}}break t}finally{S=null,_=ut,R=!1}P=void 0}}finally{P?lt():I=!1}}}var lt;if(typeof Z=="function")lt=function(){Z(nt)};else if(typeof MessageChannel<"u"){var ht=new MessageChannel,it=ht.port2;ht.port1.onmessage=nt,lt=function(){it.postMessage(null)}}else lt=function(){Y(nt,0)};function jt(N,P){Q=Y(function(){N(a.unstable_now())},P)}a.unstable_IdlePriority=5,a.unstable_ImmediatePriority=1,a.unstable_LowPriority=4,a.unstable_NormalPriority=3,a.unstable_Profiling=null,a.unstable_UserBlockingPriority=2,a.unstable_cancelCallback=function(N){N.callback=null},a.unstable_forceFrameRate=function(N){0>N||125<N?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):X=0<N?Math.floor(1e3/N):5},a.unstable_getCurrentPriorityLevel=function(){return _},a.unstable_next=function(N){switch(_){case 1:case 2:case 3:var P=3;break;default:P=_}var ut=_;_=P;try{return N()}finally{_=ut}},a.unstable_requestPaint=function(){M=!0},a.unstable_runWithPriority=function(N,P){switch(N){case 1:case 2:case 3:case 4:case 5:break;default:N=3}var ut=_;_=N;try{return P()}finally{_=ut}},a.unstable_scheduleCallback=function(N,P,ut){var Tt=a.unstable_now();switch(typeof ut=="object"&&ut!==null?(ut=ut.delay,ut=typeof ut=="number"&&0<ut?Tt+ut:Tt):ut=Tt,N){case 1:var pt=-1;break;case 2:pt=250;break;case 5:pt=1073741823;break;case 4:pt=1e4;break;default:pt=5e3}return pt=ut+pt,N={id:v++,callback:P,priorityLevel:N,startTime:ut,expirationTime:pt,sortIndex:-1},ut>Tt?(N.sortIndex=ut,u(p,N),i(m)===null&&N===i(p)&&(A?(B(Q),Q=-1):A=!0,jt(F,ut-Tt))):(N.sortIndex=pt,u(m,N),z||R||(z=!0,I||(I=!0,lt()))),N},a.unstable_shouldYield=rt,a.unstable_wrapCallback=function(N){var P=_;return function(){var ut=_;_=P;try{return N.apply(this,arguments)}finally{_=ut}}}})(go)),go}var _y;function iS(){return _y||(_y=1,po.exports=lS()),po.exports}var vo={exports:{}},Se={};var Ey;function uS(){if(Ey)return Se;Ey=1;var a=nu();function u(m){var p="https://react.dev/errors/"+m;if(1<arguments.length){p+="?args[]="+encodeURIComponent(arguments[1]);for(var v=2;v<arguments.length;v++)p+="&args[]="+encodeURIComponent(arguments[v])}return"Minified React error #"+m+"; visit "+p+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function i(){}var r={d:{f:i,r:function(){throw Error(u(522))},D:i,C:i,L:i,m:i,X:i,S:i,M:i},p:0,findDOMNode:null},o=Symbol.for("react.portal");function f(m,p,v){var S=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:o,key:S==null?null:""+S,children:m,containerInfo:p,implementation:v}}var h=a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function y(m,p){if(m==="font")return"";if(typeof p=="string")return p==="use-credentials"?p:""}return Se.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=r,Se.createPortal=function(m,p){var v=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!p||p.nodeType!==1&&p.nodeType!==9&&p.nodeType!==11)throw Error(u(299));return f(m,p,null,v)},Se.flushSync=function(m){var p=h.T,v=r.p;try{if(h.T=null,r.p=2,m)return m()}finally{h.T=p,r.p=v,r.d.f()}},Se.preconnect=function(m,p){typeof m=="string"&&(p?(p=p.crossOrigin,p=typeof p=="string"?p==="use-credentials"?p:"":void 0):p=null,r.d.C(m,p))},Se.prefetchDNS=function(m){typeof m=="string"&&r.d.D(m)},Se.preinit=function(m,p){if(typeof m=="string"&&p&&typeof p.as=="string"){var v=p.as,S=y(v,p.crossOrigin),_=typeof p.integrity=="string"?p.integrity:void 0,R=typeof p.fetchPriority=="string"?p.fetchPriority:void 0;v==="style"?r.d.S(m,typeof p.precedence=="string"?p.precedence:void 0,{crossOrigin:S,integrity:_,fetchPriority:R}):v==="script"&&r.d.X(m,{crossOrigin:S,integrity:_,fetchPriority:R,nonce:typeof p.nonce=="string"?p.nonce:void 0})}},Se.preinitModule=function(m,p){if(typeof m=="string")if(typeof p=="object"&&p!==null){if(p.as==null||p.as==="script"){var v=y(p.as,p.crossOrigin);r.d.M(m,{crossOrigin:v,integrity:typeof p.integrity=="string"?p.integrity:void 0,nonce:typeof p.nonce=="string"?p.nonce:void 0})}}else p==null&&r.d.M(m)},Se.preload=function(m,p){if(typeof m=="string"&&typeof p=="object"&&p!==null&&typeof p.as=="string"){var v=p.as,S=y(v,p.crossOrigin);r.d.L(m,v,{crossOrigin:S,integrity:typeof p.integrity=="string"?p.integrity:void 0,nonce:typeof p.nonce=="string"?p.nonce:void 0,type:typeof p.type=="string"?p.type:void 0,fetchPriority:typeof p.fetchPriority=="string"?p.fetchPriority:void 0,referrerPolicy:typeof p.referrerPolicy=="string"?p.referrerPolicy:void 0,imageSrcSet:typeof p.imageSrcSet=="string"?p.imageSrcSet:void 0,imageSizes:typeof p.imageSizes=="string"?p.imageSizes:void 0,media:typeof p.media=="string"?p.media:void 0})}},Se.preloadModule=function(m,p){if(typeof m=="string")if(p){var v=y(p.as,p.crossOrigin);r.d.m(m,{as:typeof p.as=="string"&&p.as!=="script"?p.as:void 0,crossOrigin:v,integrity:typeof p.integrity=="string"?p.integrity:void 0})}else r.d.m(m)},Se.requestFormReset=function(m){r.d.r(m)},Se.unstable_batchedUpdates=function(m,p){return m(p)},Se.useFormState=function(m,p,v){return h.H.useFormState(m,p,v)},Se.useFormStatus=function(){return h.H.useHostTransitionStatus()},Se.version="19.2.4",Se}var Ry;function mp(){if(Ry)return vo.exports;Ry=1;function a(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(u){console.error(u)}}return a(),vo.exports=uS(),vo.exports}var Ty;function sS(){if(Ty)return Qi;Ty=1;var a=iS(),u=nu(),i=mp();function r(t){var e="https://react.dev/errors/"+t;if(1<arguments.length){e+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)e+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+t+"; visit "+e+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function o(t){return!(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)}function f(t){var e=t,n=t;if(t.alternate)for(;e.return;)e=e.return;else{t=e;do e=t,(e.flags&4098)!==0&&(n=e.return),t=e.return;while(t)}return e.tag===3?n:null}function h(t){if(t.tag===13){var e=t.memoizedState;if(e===null&&(t=t.alternate,t!==null&&(e=t.memoizedState)),e!==null)return e.dehydrated}return null}function y(t){if(t.tag===31){var e=t.memoizedState;if(e===null&&(t=t.alternate,t!==null&&(e=t.memoizedState)),e!==null)return e.dehydrated}return null}function m(t){if(f(t)!==t)throw Error(r(188))}function p(t){var e=t.alternate;if(!e){if(e=f(t),e===null)throw Error(r(188));return e!==t?null:t}for(var n=t,l=e;;){var s=n.return;if(s===null)break;var c=s.alternate;if(c===null){if(l=s.return,l!==null){n=l;continue}break}if(s.child===c.child){for(c=s.child;c;){if(c===n)return m(s),t;if(c===l)return m(s),e;c=c.sibling}throw Error(r(188))}if(n.return!==l.return)n=s,l=c;else{for(var d=!1,g=s.child;g;){if(g===n){d=!0,n=s,l=c;break}if(g===l){d=!0,l=s,n=c;break}g=g.sibling}if(!d){for(g=c.child;g;){if(g===n){d=!0,n=c,l=s;break}if(g===l){d=!0,l=c,n=s;break}g=g.sibling}if(!d)throw Error(r(189))}}if(n.alternate!==l)throw Error(r(190))}if(n.tag!==3)throw Error(r(188));return n.stateNode.current===n?t:e}function v(t){var e=t.tag;if(e===5||e===26||e===27||e===6)return t;for(t=t.child;t!==null;){if(e=v(t),e!==null)return e;t=t.sibling}return null}var S=Object.assign,_=Symbol.for("react.element"),R=Symbol.for("react.transitional.element"),z=Symbol.for("react.portal"),A=Symbol.for("react.fragment"),M=Symbol.for("react.strict_mode"),Y=Symbol.for("react.profiler"),B=Symbol.for("react.consumer"),Z=Symbol.for("react.context"),H=Symbol.for("react.forward_ref"),F=Symbol.for("react.suspense"),I=Symbol.for("react.suspense_list"),Q=Symbol.for("react.memo"),X=Symbol.for("react.lazy"),K=Symbol.for("react.activity"),rt=Symbol.for("react.memo_cache_sentinel"),nt=Symbol.iterator;function lt(t){return t===null||typeof t!="object"?null:(t=nt&&t[nt]||t["@@iterator"],typeof t=="function"?t:null)}var ht=Symbol.for("react.client.reference");function it(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===ht?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case A:return"Fragment";case Y:return"Profiler";case M:return"StrictMode";case F:return"Suspense";case I:return"SuspenseList";case K:return"Activity"}if(typeof t=="object")switch(t.$$typeof){case z:return"Portal";case Z:return t.displayName||"Context";case B:return(t._context.displayName||"Context")+".Consumer";case H:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case Q:return e=t.displayName||null,e!==null?e:it(t.type)||"Memo";case X:e=t._payload,t=t._init;try{return it(t(e))}catch{}}return null}var jt=Array.isArray,N=u.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,P=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ut={pending:!1,data:null,method:null,action:null},Tt=[],pt=-1;function w(t){return{current:t}}function q(t){0>pt||(t.current=Tt[pt],Tt[pt]=null,pt--)}function k(t,e){pt++,Tt[pt]=t.current,t.current=e}var W=w(null),ct=w(null),ot=w(null),ft=w(null);function Xt(t,e){switch(k(ot,e),k(ct,t),k(W,null),e.nodeType){case 9:case 11:t=(t=e.documentElement)&&(t=t.namespaceURI)?qm(t):0;break;default:if(t=e.tagName,e=e.namespaceURI)e=qm(e),t=Vm(e,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}q(W),k(W,t)}function Ht(){q(W),q(ct),q(ot)}function De(t){t.memoizedState!==null&&k(ft,t);var e=W.current,n=Vm(e,t.type);e!==n&&(k(ct,t),k(W,n))}function Xe(t){ct.current===t&&(q(W),q(ct)),ft.current===t&&(q(ft),qi._currentValue=ut)}var Qn,Ta;function _e(t){if(Qn===void 0)try{throw Error()}catch(n){var e=n.stack.trim().match(/\n( *(at )?)/);Qn=e&&e[1]||"",Ta=-1<n.stack.indexOf(`
3
3
  at`)?" (<anonymous>)":-1<n.stack.indexOf("@")?"@unknown:0:0":""}return`
4
4
  `+Qn+t+Ta}var mn=!1;function Aa(t,e){if(!t||mn)return"";mn=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var l={DetermineComponentFrameRoot:function(){try{if(e){var G=function(){throw Error()};if(Object.defineProperty(G.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(G,[])}catch(U){var L=U}Reflect.construct(t,[],G)}else{try{G.call()}catch(U){L=U}t.call(G.prototype)}}else{try{throw Error()}catch(U){L=U}(G=t())&&typeof G.catch=="function"&&G.catch(function(){})}}catch(U){if(U&&L&&typeof U.stack=="string")return[U.stack,L.stack]}return[null,null]}};l.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var s=Object.getOwnPropertyDescriptor(l.DetermineComponentFrameRoot,"name");s&&s.configurable&&Object.defineProperty(l.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var c=l.DetermineComponentFrameRoot(),d=c[0],g=c[1];if(d&&g){var E=d.split(`
@@ -15,4 +15,4 @@ Error generating stack: `+l.message+`
15
15
  `)}else{const p=o.indexOf(`
16
16
  `);if(p>=0){const v=o.slice(0,p).trim();o=o.slice(p+1),v.length>0&&(h=JSON.parse(v),f=!0)}}}return(async()=>{try{for(;;){const{value:y,done:m}=await r.read();y&&(o+=y);const p=o.lastIndexOf(`
17
17
  `);if(p>=0){const v=o.slice(0,p);o=o.slice(p+1);const S=v.split(`
18
- `).filter(Boolean);for(const _ of S)try{u(JSON.parse(_))}catch(R){i?.(`Invalid JSON line: ${_}`,R)}}if(m)break}}catch(y){i?.("Stream processing error:",y)}})(),u(h)}async function yE({jsonStream:a,onMessage:u,onError:i}){const r=a.getReader(),{value:o,done:f}=await r.read();if(f||!o)throw new Error("Stream ended before first object");const h=JSON.parse(o);return(async()=>{try{for(;;){const{value:y,done:m}=await r.read();if(m)break;if(y)try{u(JSON.parse(y))}catch(p){i?.(`Invalid JSON: ${y}`,p)}}}catch(y){i?.("Stream processing error:",y)}})(),u(h)}function pE(a){const u="/_serverFn/"+a;return Object.assign((...o)=>{const f=b0()?.serverFns?.fetch;return fE(u,o,f??fetch)},{url:u,serverFnMeta:{id:a},[Zo]:!0})}const gE={key:"$TSS/serverfn",test:a=>typeof a!="function"||!(Zo in a)?!1:!!a[Zo],toSerializable:({serverFnMeta:a})=>({functionId:a.id}),fromSerializable:({functionId:a})=>pE(a)};var ip=o0();const T0=0,A0=1,O0=2,up=3;var sp=Object.prototype.hasOwnProperty;function Ko(a,u){var i,r;if(a===u)return!0;if(a&&u&&(i=a.constructor)===u.constructor){if(i===Date)return a.getTime()===u.getTime();if(i===RegExp)return a.toString()===u.toString();if(i===Array){if((r=a.length)===u.length)for(;r--&&Ko(a[r],u[r]););return r===-1}if(!i||typeof a=="object"){r=0;for(i in a)if(sp.call(a,i)&&++r&&!sp.call(u,i)||!(i in u)||!Ko(a[i],u[i]))return!1;return Object.keys(u).length===r}}return a!==a&&u!==u}const Bn=new WeakMap,Hn=()=>{},ge=Hn(),Qs=Object,_t=a=>a===ge,sn=a=>typeof a=="function",Gn=(a,u)=>({...a,...u}),w0=a=>sn(a.then),Uo={},As={},pf="undefined",lu=typeof window!=pf,ko=typeof document!=pf,vE=lu&&"Deno"in window,SE=()=>lu&&typeof window.requestAnimationFrame!=pf,x0=(a,u)=>{const i=Bn.get(a);return[()=>!_t(u)&&a.get(u)||Uo,r=>{if(!_t(u)){const o=a.get(u);u in As||(As[u]=o),i[5](u,Gn(o,r),o||Uo)}},i[6],()=>!_t(u)&&u in As?As[u]:!_t(u)&&a.get(u)||Uo]};let Jo=!0;const bE=()=>Jo,[Fo,Po]=lu&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[Hn,Hn],_E=()=>{const a=ko&&document.visibilityState;return _t(a)||a!=="hidden"},EE=a=>(ko&&document.addEventListener("visibilitychange",a),Fo("focus",a),()=>{ko&&document.removeEventListener("visibilitychange",a),Po("focus",a)}),RE=a=>{const u=()=>{Jo=!0,a()},i=()=>{Jo=!1};return Fo("online",u),Fo("offline",i),()=>{Po("online",u),Po("offline",i)}},TE={isOnline:bE,isVisible:_E},AE={initFocus:EE,initReconnect:RE},rp=!qn.useId,Fl=!lu||vE,OE=a=>SE()?window.requestAnimationFrame(a):setTimeout(a,1),Ds=Fl?$.useEffect:$.useLayoutEffect,Bo=typeof navigator<"u"&&navigator.connection,cp=!Fl&&Bo&&(["slow-2g","2g"].includes(Bo.effectiveType)||Bo.saveData),Os=new WeakMap,wE=a=>Qs.prototype.toString.call(a),jo=(a,u)=>a===`[object ${u}]`;let xE=0;const Wo=a=>{const u=typeof a,i=wE(a),r=jo(i,"Date"),o=jo(i,"RegExp"),f=jo(i,"Object");let h,y;if(Qs(a)===a&&!r&&!o){if(h=Os.get(a),h)return h;if(h=++xE+"~",Os.set(a,h),Array.isArray(a)){for(h="@",y=0;y<a.length;y++)h+=Wo(a[y])+",";Os.set(a,h)}if(f){h="#";const m=Qs.keys(a).sort();for(;!_t(y=m.pop());)_t(a[y])||(h+=y+":"+Wo(a[y])+",");Os.set(a,h)}}else h=r?a.toJSON():u=="symbol"?a.toString():u=="string"?JSON.stringify(a):""+a;return h},gf=a=>{if(sn(a))try{a=a()}catch{a=""}const u=a;return a=typeof a=="string"?a:(Array.isArray(a)?a.length:a)?Wo(a):"",[a,u]};let ME=0;const $o=()=>++ME;async function M0(...a){const[u,i,r,o]=a,f=Gn({populateCache:!0,throwOnError:!0},typeof o=="boolean"?{revalidate:o}:o||{});let h=f.populateCache;const y=f.rollbackOnError;let m=f.optimisticData;const p=_=>typeof y=="function"?y(_):y!==!1,v=f.throwOnError;if(sn(i)){const _=i,R=[],z=u.keys();for(const A of z)!/^\$(inf|sub)\$/.test(A)&&_(u.get(A)._k)&&R.push(A);return Promise.all(R.map(S))}return S(i);async function S(_){const[R]=gf(_);if(!R)return;const[z,A]=x0(u,R),[M,Y,B,Z]=Bn.get(u),H=()=>{const it=M[R];return(sn(f.revalidate)?f.revalidate(z().data,_):f.revalidate!==!1)&&(delete B[R],delete Z[R],it&&it[0])?it[0](O0).then(()=>z().data):z().data};if(a.length<3)return H();let F=r,I,Q=!1;const X=$o();Y[R]=[X,0];const K=!_t(m),rt=z(),nt=rt.data,lt=rt._c,ht=_t(lt)?nt:lt;if(K&&(m=sn(m)?m(ht,nt):m,A({data:m,_c:ht})),sn(F))try{F=F(ht)}catch(it){I=it,Q=!0}if(F&&w0(F))if(F=await F.catch(it=>{I=it,Q=!0}),X!==Y[R][0]){if(Q)throw I;return F}else Q&&K&&p(I)&&(h=!0,A({data:ht,_c:ge}));if(h&&!Q)if(sn(h)){const it=h(F,ht);A({data:it,error:ge,_c:ge})}else A({data:F,error:ge,_c:ge});if(Y[R][1]=$o(),Promise.resolve(H()).then(()=>{A({_c:ge})}),Q){if(v)throw I;return}return F}}const op=(a,u)=>{for(const i in a)a[i][0]&&a[i][0](u)},z0=(a,u)=>{if(!Bn.has(a)){const i=Gn(AE,u),r=Object.create(null),o=M0.bind(ge,a);let f=Hn;const h=Object.create(null),y=(v,S)=>{const _=h[v]||[];return h[v]=_,_.push(S),()=>_.splice(_.indexOf(S),1)},m=(v,S,_)=>{a.set(v,S);const R=h[v];if(R)for(const z of R)z(S,_)},p=()=>{if(!Bn.has(a)&&(Bn.set(a,[r,Object.create(null),Object.create(null),Object.create(null),o,m,y]),!Fl)){const v=i.initFocus(setTimeout.bind(ge,op.bind(ge,r,T0))),S=i.initReconnect(setTimeout.bind(ge,op.bind(ge,r,A0)));f=()=>{v&&v(),S&&S(),Bn.delete(a)}}};return p(),[a,o,p,f]}return[a,Bn.get(a)[4]]},zE=(a,u,i,r,o)=>{const f=i.errorRetryCount,h=o.retryCount,y=~~((Math.random()+.5)*(1<<(h<8?h:8)))*i.errorRetryInterval;!_t(f)&&h>f||setTimeout(r,y,o)},CE=Ko,[vf,DE]=z0(new Map),C0=Gn({onLoadingSlow:Hn,onSuccess:Hn,onError:Hn,onErrorRetry:zE,onDiscarded:Hn,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:cp?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:cp?5e3:3e3,compare:CE,isPaused:()=>!1,cache:vf,mutate:DE,fallback:{}},TE),D0=(a,u)=>{const i=Gn(a,u);if(u){const{use:r,fallback:o}=a,{use:f,fallback:h}=u;r&&f&&(i.use=r.concat(f)),o&&h&&(i.fallback=Gn(o,h))}return i},Io=$.createContext({}),LE=a=>{const{value:u}=a,i=$.useContext(Io),r=sn(u),o=$.useMemo(()=>r?u(i):u,[r,i,u]),f=$.useMemo(()=>r?o:D0(i,o),[r,i,o]),h=o&&o.provider,y=$.useRef(ge);h&&!y.current&&(y.current=z0(h(f.cache||vf),o));const m=y.current;return m&&(f.cache=m[0],f.mutate=m[1]),Ds(()=>{if(m)return m[2]&&m[2](),m[3]},[]),$.createElement(Io.Provider,Gn(a,{value:f}))},NE="$inf$",L0=lu&&window.__SWR_DEVTOOLS_USE__,UE=L0?window.__SWR_DEVTOOLS_USE__:[],BE=()=>{L0&&(window.__SWR_DEVTOOLS_REACT__=qn)},jE=a=>sn(a[1])?[a[0],a[1],a[2]||{}]:[a[0],null,(a[1]===null?a[2]:a[1])||{}],HE=()=>{const a=$.useContext(Io);return $.useMemo(()=>Gn(C0,a),[a])},qE=a=>(u,i,r)=>a(u,i&&((...f)=>{const[h]=gf(u),[,,,y]=Bn.get(vf);if(h.startsWith(NE))return i(...f);const m=y[h];return _t(m)?i(...f):(delete y[h],m)}),r),VE=UE.concat(qE),YE=a=>function(...i){const r=HE(),[o,f,h]=jE(i),y=D0(r,h);let m=a;const{use:p}=y,v=(p||[]).concat(VE);for(let S=v.length;S--;)m=v[S](m);return m(o,f||y.fetcher||null,y)},GE=(a,u,i)=>{const r=u[a]||(u[a]=[]);return r.push(i),()=>{const o=r.indexOf(i);o>=0&&(r[o]=r[r.length-1],r.pop())}};BE();const Ho=qn.use||(a=>{switch(a.status){case"pending":throw a;case"fulfilled":return a.value;case"rejected":throw a.reason;default:throw a.status="pending",a.then(u=>{a.status="fulfilled",a.value=u},u=>{a.status="rejected",a.reason=u}),a}}),qo={dedupe:!0},fp=Promise.resolve(ge),XE=()=>Hn,QE=(a,u,i)=>{const{cache:r,compare:o,suspense:f,fallbackData:h,revalidateOnMount:y,revalidateIfStale:m,refreshInterval:p,refreshWhenHidden:v,refreshWhenOffline:S,keepPreviousData:_,strictServerPrefetchWarning:R}=i,[z,A,M,Y]=Bn.get(r),[B,Z]=gf(a),H=$.useRef(!1),F=$.useRef(!1),I=$.useRef(B),Q=$.useRef(u),X=$.useRef(i),K=()=>X.current,rt=()=>K().isVisible()&&K().isOnline(),[nt,lt,ht,it]=x0(r,B),jt=$.useRef({}).current,N=_t(h)?_t(i.fallback)?ge:i.fallback[B]:h,P=(Et,Lt)=>{for(const At in jt){const qt=At;if(qt==="data"){if(!o(Et[qt],Lt[qt])&&(!_t(Et[qt])||!o(ot,Lt[qt])))return!1}else if(Lt[qt]!==Et[qt])return!1}return!0},ut=!H.current,Tt=$.useMemo(()=>{const Et=nt(),Lt=it(),At=kt=>{const Vt=Gn(kt);return delete Vt._k,(()=>{if(!B||!u||K().isPaused())return!1;if(ut&&!_t(y))return y;const Mt=_t(N)?Vt.data:N;return _t(Mt)||m})()?{isValidating:!0,isLoading:!0,...Vt}:Vt},qt=At(Et),ve=Et===Lt?qt:At(Lt);let oe=qt;return[()=>{const kt=At(nt());return P(kt,oe)?(oe.data=kt.data,oe.isLoading=kt.isLoading,oe.isValidating=kt.isValidating,oe.error=kt.error,oe):(oe=kt,kt)},()=>ve]},[r,B]),pt=ip.useSyncExternalStore($.useCallback(Et=>ht(B,(Lt,At)=>{P(At,Lt)||Et()}),[r,B]),Tt[0],Tt[1]),w=z[B]&&z[B].length>0,q=pt.data,k=_t(q)?N&&w0(N)?Ho(N):N:q,W=pt.error,ct=$.useRef(k),ot=_?_t(q)?_t(ct.current)?k:ct.current:q:k,ft=B&&_t(k),Xt=$.useRef(null);!Fl&&ip.useSyncExternalStore(XE,()=>(Xt.current=!1,Xt),()=>(Xt.current=!0,Xt));const Ht=Xt.current;R&&Ht&&!f&&ft&&console.warn(`Missing pre-initiated data for serialized key "${B}" during server-side rendering. Data fetching should be initiated on the server and provided to SWR via fallback data. You can set "strictServerPrefetchWarning: false" to disable this warning.`);const De=!B||!u||K().isPaused()||w&&!_t(W)?!1:ut&&!_t(y)?y:f?_t(k)?!1:m:_t(k)||m,Xe=ut&&De,Qn=_t(pt.isValidating)?Xe:pt.isValidating,Ta=_t(pt.isLoading)?Xe:pt.isLoading,_e=$.useCallback(async Et=>{const Lt=Q.current;if(!B||!Lt||F.current||K().isPaused())return!1;let At,qt,ve=!0;const oe=Et||{},kt=!M[B]||!oe.dedupe,Vt=()=>rp?!F.current&&B===I.current&&H.current:B===I.current,yn={isValidating:!1,isLoading:!1},Mt=()=>{lt(yn)},$t=()=>{const fe=M[B];fe&&fe[1]===qt&&delete M[B]},ae={isValidating:!0};_t(nt().data)&&(ae.isLoading=!0);try{if(kt&&(lt(ae),i.loadingTimeout&&_t(nt().data)&&setTimeout(()=>{ve&&Vt()&&K().onLoadingSlow(B,i)},i.loadingTimeout),M[B]=[Lt(Z),$o()]),[At,qt]=M[B],At=await At,kt&&setTimeout($t,i.dedupingInterval),!M[B]||M[B][1]!==qt)return kt&&Vt()&&K().onDiscarded(B),!1;yn.error=ge;const fe=A[B];if(!_t(fe)&&(qt<=fe[0]||qt<=fe[1]||fe[1]===0))return Mt(),kt&&Vt()&&K().onDiscarded(B),!1;const Qe=nt().data;yn.data=o(Qe,At)?Qe:At,kt&&Vt()&&K().onSuccess(At,B,i)}catch(fe){$t();const Qe=K(),{shouldRetryOnError:Wl}=Qe;Qe.isPaused()||(yn.error=fe,kt&&Vt()&&(Qe.onError(fe,B,Qe),(Wl===!0||sn(Wl)&&Wl(fe))&&(!K().revalidateOnFocus||!K().revalidateOnReconnect||rt())&&Qe.onErrorRetry(fe,B,Qe,Is=>{const pn=z[B];pn&&pn[0]&&pn[0](up,Is)},{retryCount:(oe.retryCount||0)+1,dedupe:!0})))}return ve=!1,Mt(),!0},[B,r]),mn=$.useCallback((...Et)=>M0(r,I.current,...Et),[]);if(Ds(()=>{Q.current=u,X.current=i,_t(q)||(ct.current=q)}),Ds(()=>{if(!B)return;const Et=_e.bind(ge,qo);let Lt=0;K().revalidateOnFocus&&(Lt=Date.now()+K().focusThrottleInterval);const qt=GE(B,z,(ve,oe={})=>{if(ve==T0){const kt=Date.now();K().revalidateOnFocus&&kt>Lt&&rt()&&(Lt=kt+K().focusThrottleInterval,Et())}else if(ve==A0)K().revalidateOnReconnect&&rt()&&Et();else{if(ve==O0)return _e();if(ve==up)return _e(oe)}});return F.current=!1,I.current=B,H.current=!0,lt({_k:Z}),De&&(M[B]||(_t(k)||Fl?Et():OE(Et))),()=>{F.current=!0,qt()}},[B]),Ds(()=>{let Et;function Lt(){const qt=sn(p)?p(nt().data):p;qt&&Et!==-1&&(Et=setTimeout(At,qt))}function At(){!nt().error&&(v||K().isVisible())&&(S||K().isOnline())?_e(qo).then(Lt):Lt()}return Lt(),()=>{Et&&(clearTimeout(Et),Et=-1)}},[p,v,S,B]),$.useDebugValue(ot),f){if(!rp&&Fl&&ft)throw new Error("Fallback data is required when using Suspense in SSR.");ft&&(Q.current=u,X.current=i,F.current=!1);const Et=Y[B],Lt=!_t(Et)&&ft?mn(Et):fp;if(Ho(Lt),!_t(W)&&ft)throw W;const At=ft?_e(qo):fp;!_t(ot)&&ft&&(At.status="fulfilled",At.value=!0),Ho(At)}return{mutate:mn,get data(){return jt.data=!0,ot},get error(){return jt.error=!0,W},get isValidating(){return jt.isValidating=!0,Qn},get isLoading(){return jt.isLoading=!0,Ta}}},ZE=Qs.defineProperty(LE,"defaultValue",{value:C0}),bR=YE(QE),KE="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%20role='img'%20aria-label='Agent%20Inspector'%3e%3crect%20width='64'%20height='64'%20rx='14'%20fill='%23111827'%20/%3e%3cg%20fill='none'%20stroke='%23f59e0b'%20stroke-width='4.2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20fill='%23f59e0b'%20d='M15%2036c0-11%207-18%2017-18s17%207%2017%2018c0%208-7%2013-17%2013s-17-5-17-13z'%20/%3e%3cpath%20d='M16%2031c-6-5-12-3-12%204%200%205%206%206%2011%202'%20/%3e%3cpath%20d='M48%2031c6-5%2012-3%2012%204%200%205-6%206-11%202'%20/%3e%3cpath%20d='M27%2019l-3-7'%20/%3e%3cpath%20d='M37%2019l3-7'%20/%3e%3cpath%20d='M19%2045l-6%209'%20/%3e%3cpath%20d='M27%2048l-3%209'%20/%3e%3cpath%20d='M37%2048l3%209'%20/%3e%3cpath%20d='M45%2045l6%209'%20/%3e%3c/g%3e%3cpath%20d='M14%2047l9-8%208%209c-5%203.5-12%203-17-1z'%20fill='%232f6b3f'%20opacity='.95'%20/%3e%3cpath%20d='M18%2046l5-5%205%206c-3%201.6-7%201.4-10-1z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M23%2041v10'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='1.6'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='31'%20cy='48'%20r='1.8'%20fill='%23c2412d'%20/%3e%3cpath%20d='M24%2044l13-11%2014%2013c-8%205.8-18%205.3-27-2z'%20fill='%232f6b3f'%20opacity='.97'%20/%3e%3cpath%20d='M30%2043l7-7%209%209c-5%202.7-11%202.5-16-2z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M37%2036v14'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='2'%20stroke-linecap='round'%20/%3e%3cpath%20d='M30%2043c5-2%2011-1.5%2016%202'%20fill='none'%20stroke='%239fca78'%20stroke-width='1.8'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='51'%20cy='46'%20r='2'%20fill='%23c2412d'%20/%3e%3cpath%20d='M40%2050l8-8%207%208c-4.2%203.2-10%203-15%200z'%20fill='%232f6b3f'%20opacity='.95'%20/%3e%3cpath%20d='M43%2049l5-5%204.5%205.5c-3%201.5-6%201.2-9.5-.5z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M48%2044v9'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='1.5'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='55'%20cy='50'%20r='1.7'%20fill='%23c2412d'%20/%3e%3ccircle%20cx='24'%20cy='11'%20r='3.2'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='40'%20cy='11'%20r='3.2'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='25'%20cy='34'%20r='2.1'%20fill='%23111827'%20/%3e%3ccircle%20cx='39'%20cy='34'%20r='2.1'%20fill='%23111827'%20/%3e%3c/svg%3e",kE="/assets/index-Bo1dGS4R.css",Sf=B_({head:()=>({meta:[{charSet:"utf-8"},{name:"viewport",content:"width=device-width, initial-scale=1"},{title:"Agent Inspector"}],links:[{rel:"stylesheet",href:kE},{rel:"icon",type:"image/svg+xml",href:KE}]}),component:JE,notFoundComponent:FE});function JE(){return J.jsx(N0,{children:J.jsx(g0,{})})}function FE(){return J.jsx(N0,{children:J.jsx("main",{className:"min-h-screen bg-background text-foreground",children:J.jsx("div",{className:"mx-auto flex min-h-screen w-full max-w-3xl flex-col justify-center px-6 py-16",children:J.jsxs("div",{className:"border-border/70 bg-card/60 rounded-lg border p-8 shadow-sm",children:[J.jsx("div",{className:"text-muted-foreground font-mono text-xs uppercase tracking-wider",children:"404"}),J.jsx("h1",{className:"mt-3 text-2xl font-semibold",children:"Page not found"}),J.jsx("p",{className:"text-muted-foreground mt-3 max-w-xl text-sm leading-6",children:"This route is not part of the Agent Inspector UI or API surface."}),J.jsx("a",{href:"/",className:"bg-primary text-primary-foreground hover:bg-primary/90 mt-6 inline-flex h-9 items-center justify-center rounded-md px-4 text-sm font-medium transition-colors",children:"Open Agent Inspector"})]})})})})}function N0({children:a}){return J.jsxs("html",{lang:"en",className:"dark",children:[J.jsx("head",{children:J.jsx(W_,{})}),J.jsxs("body",{children:[J.jsx(ZE,{value:{revalidateOnFocus:!1,revalidateIfStale:!1},children:a}),J.jsx($_,{})]})]})}const PE="modulepreload",WE=function(a){return"/"+a},dp={},U0=function(u,i,r){let o=Promise.resolve();if(i&&i.length>0){let m=function(p){return Promise.all(p.map(v=>Promise.resolve(v).then(S=>({status:"fulfilled",value:S}),S=>({status:"rejected",reason:S}))))};document.getElementsByTagName("link");const h=document.querySelector("meta[property=csp-nonce]"),y=h?.nonce||h?.getAttribute("nonce");o=m(i.map(p=>{if(p=WE(p),p in dp)return;dp[p]=!0;const v=p.endsWith(".css"),S=v?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${S}`))return;const _=document.createElement("link");if(_.rel=v?"stylesheet":PE,v||(_.as="script"),_.crossOrigin="",_.href=p,y&&_.setAttribute("nonce",y),document.head.appendChild(_),v)return new Promise((R,z)=>{_.addEventListener("load",R),_.addEventListener("error",()=>z(new Error(`Unable to preload CSS for ${p}`)))})}))}function f(h){const y=new Event("vite:preloadError",{cancelable:!0});if(y.payload=h,window.dispatchEvent(y),!y.defaultPrevented)throw h}return o.then(h=>{for(const y of h||[])y.status==="rejected"&&f(y.reason);return u().catch(f)})},$E=()=>U0(()=>import("./index-CJgaCJo8.js"),__vite__mapDeps([0,1])),IE=Xs("/")({component:m0($E,"component")}),tR=/^[A-Za-z0-9_-]+$/;function eR(a){let u="";for(const i of a)u+=String.fromCharCode(i);return u}function nR(a){const u=new Uint8Array(a.length);for(let i=0;i<a.length;i++)u[i]=a.charCodeAt(i);return u}function B0(a){const u=new TextEncoder().encode(a);return btoa(eR(u)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function aR(a){if(a.startsWith("%"))return decodeURIComponent(a);if(!tR.test(a))return a;try{const i=a.padEnd(Math.ceil(a.length/4)*4,"=").replace(/-/g,"+").replace(/_/g,"/"),r=atob(i);return new TextDecoder().decode(nR(r))}catch{return a}}function _R(a){return`/session/${B0(a)}`}const lR=()=>U0(()=>import("./_sessionId-3ipVoQtW.js"),__vite__mapDeps([2,1])),iR=Xs("/session/$sessionId")({component:m0(lR,"component"),parseParams:a=>({sessionId:aR(a.sessionId)}),stringifyParams:a=>({sessionId:B0(a.sessionId)})}),uR=IE.update({id:"/",path:"/",getParentRoute:()=>Sf}),sR=iR.update({id:"/session/$sessionId",path:"/session/$sessionId",getParentRoute:()=>Sf}),rR={IndexRoute:uR,SessionSessionIdRoute:sR},cR=Sf._addFileChildren(rR);function oR(){return Q_({routeTree:cR,scrollRestoration:!1})}async function fR(){const a=await oR();let u;return u=[],window.__TSS_START_OPTIONS__={serializationAdapters:u},u.push(gE),a.options.serializationAdapters&&u.push(...a.options.serializationAdapters),a.update({basepath:"",serializationAdapters:u}),a.state.matches.length||await tE(a),a}async function dR(){const a=await fR();return window.$_TSR?.h(),a}let Vo;function hR(){return Vo||(Vo=dR()),J.jsx(d_,{promise:Vo,children:a=>J.jsx(k_,{router:a})})}$.startTransition(()=>{cS.hydrateRoot(document,J.jsx($.StrictMode,{children:J.jsx(hR,{})}))});export{iR as R,U0 as _,HE as a,d0 as b,mR as c,qn as d,aS as e,vR as f,hp as g,_R as h,J as j,$ as r,bR as u};
18
+ `).filter(Boolean);for(const _ of S)try{u(JSON.parse(_))}catch(R){i?.(`Invalid JSON line: ${_}`,R)}}if(m)break}}catch(y){i?.("Stream processing error:",y)}})(),u(h)}async function yE({jsonStream:a,onMessage:u,onError:i}){const r=a.getReader(),{value:o,done:f}=await r.read();if(f||!o)throw new Error("Stream ended before first object");const h=JSON.parse(o);return(async()=>{try{for(;;){const{value:y,done:m}=await r.read();if(m)break;if(y)try{u(JSON.parse(y))}catch(p){i?.(`Invalid JSON: ${y}`,p)}}}catch(y){i?.("Stream processing error:",y)}})(),u(h)}function pE(a){const u="/_serverFn/"+a;return Object.assign((...o)=>{const f=b0()?.serverFns?.fetch;return fE(u,o,f??fetch)},{url:u,serverFnMeta:{id:a},[Zo]:!0})}const gE={key:"$TSS/serverfn",test:a=>typeof a!="function"||!(Zo in a)?!1:!!a[Zo],toSerializable:({serverFnMeta:a})=>({functionId:a.id}),fromSerializable:({functionId:a})=>pE(a)};var ip=o0();const T0=0,A0=1,O0=2,up=3;var sp=Object.prototype.hasOwnProperty;function Ko(a,u){var i,r;if(a===u)return!0;if(a&&u&&(i=a.constructor)===u.constructor){if(i===Date)return a.getTime()===u.getTime();if(i===RegExp)return a.toString()===u.toString();if(i===Array){if((r=a.length)===u.length)for(;r--&&Ko(a[r],u[r]););return r===-1}if(!i||typeof a=="object"){r=0;for(i in a)if(sp.call(a,i)&&++r&&!sp.call(u,i)||!(i in u)||!Ko(a[i],u[i]))return!1;return Object.keys(u).length===r}}return a!==a&&u!==u}const Bn=new WeakMap,Hn=()=>{},ge=Hn(),Qs=Object,_t=a=>a===ge,sn=a=>typeof a=="function",Gn=(a,u)=>({...a,...u}),w0=a=>sn(a.then),Uo={},As={},pf="undefined",lu=typeof window!=pf,ko=typeof document!=pf,vE=lu&&"Deno"in window,SE=()=>lu&&typeof window.requestAnimationFrame!=pf,x0=(a,u)=>{const i=Bn.get(a);return[()=>!_t(u)&&a.get(u)||Uo,r=>{if(!_t(u)){const o=a.get(u);u in As||(As[u]=o),i[5](u,Gn(o,r),o||Uo)}},i[6],()=>!_t(u)&&u in As?As[u]:!_t(u)&&a.get(u)||Uo]};let Jo=!0;const bE=()=>Jo,[Fo,Po]=lu&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[Hn,Hn],_E=()=>{const a=ko&&document.visibilityState;return _t(a)||a!=="hidden"},EE=a=>(ko&&document.addEventListener("visibilitychange",a),Fo("focus",a),()=>{ko&&document.removeEventListener("visibilitychange",a),Po("focus",a)}),RE=a=>{const u=()=>{Jo=!0,a()},i=()=>{Jo=!1};return Fo("online",u),Fo("offline",i),()=>{Po("online",u),Po("offline",i)}},TE={isOnline:bE,isVisible:_E},AE={initFocus:EE,initReconnect:RE},rp=!qn.useId,Fl=!lu||vE,OE=a=>SE()?window.requestAnimationFrame(a):setTimeout(a,1),Ds=Fl?$.useEffect:$.useLayoutEffect,Bo=typeof navigator<"u"&&navigator.connection,cp=!Fl&&Bo&&(["slow-2g","2g"].includes(Bo.effectiveType)||Bo.saveData),Os=new WeakMap,wE=a=>Qs.prototype.toString.call(a),jo=(a,u)=>a===`[object ${u}]`;let xE=0;const Wo=a=>{const u=typeof a,i=wE(a),r=jo(i,"Date"),o=jo(i,"RegExp"),f=jo(i,"Object");let h,y;if(Qs(a)===a&&!r&&!o){if(h=Os.get(a),h)return h;if(h=++xE+"~",Os.set(a,h),Array.isArray(a)){for(h="@",y=0;y<a.length;y++)h+=Wo(a[y])+",";Os.set(a,h)}if(f){h="#";const m=Qs.keys(a).sort();for(;!_t(y=m.pop());)_t(a[y])||(h+=y+":"+Wo(a[y])+",");Os.set(a,h)}}else h=r?a.toJSON():u=="symbol"?a.toString():u=="string"?JSON.stringify(a):""+a;return h},gf=a=>{if(sn(a))try{a=a()}catch{a=""}const u=a;return a=typeof a=="string"?a:(Array.isArray(a)?a.length:a)?Wo(a):"",[a,u]};let ME=0;const $o=()=>++ME;async function M0(...a){const[u,i,r,o]=a,f=Gn({populateCache:!0,throwOnError:!0},typeof o=="boolean"?{revalidate:o}:o||{});let h=f.populateCache;const y=f.rollbackOnError;let m=f.optimisticData;const p=_=>typeof y=="function"?y(_):y!==!1,v=f.throwOnError;if(sn(i)){const _=i,R=[],z=u.keys();for(const A of z)!/^\$(inf|sub)\$/.test(A)&&_(u.get(A)._k)&&R.push(A);return Promise.all(R.map(S))}return S(i);async function S(_){const[R]=gf(_);if(!R)return;const[z,A]=x0(u,R),[M,Y,B,Z]=Bn.get(u),H=()=>{const it=M[R];return(sn(f.revalidate)?f.revalidate(z().data,_):f.revalidate!==!1)&&(delete B[R],delete Z[R],it&&it[0])?it[0](O0).then(()=>z().data):z().data};if(a.length<3)return H();let F=r,I,Q=!1;const X=$o();Y[R]=[X,0];const K=!_t(m),rt=z(),nt=rt.data,lt=rt._c,ht=_t(lt)?nt:lt;if(K&&(m=sn(m)?m(ht,nt):m,A({data:m,_c:ht})),sn(F))try{F=F(ht)}catch(it){I=it,Q=!0}if(F&&w0(F))if(F=await F.catch(it=>{I=it,Q=!0}),X!==Y[R][0]){if(Q)throw I;return F}else Q&&K&&p(I)&&(h=!0,A({data:ht,_c:ge}));if(h&&!Q)if(sn(h)){const it=h(F,ht);A({data:it,error:ge,_c:ge})}else A({data:F,error:ge,_c:ge});if(Y[R][1]=$o(),Promise.resolve(H()).then(()=>{A({_c:ge})}),Q){if(v)throw I;return}return F}}const op=(a,u)=>{for(const i in a)a[i][0]&&a[i][0](u)},z0=(a,u)=>{if(!Bn.has(a)){const i=Gn(AE,u),r=Object.create(null),o=M0.bind(ge,a);let f=Hn;const h=Object.create(null),y=(v,S)=>{const _=h[v]||[];return h[v]=_,_.push(S),()=>_.splice(_.indexOf(S),1)},m=(v,S,_)=>{a.set(v,S);const R=h[v];if(R)for(const z of R)z(S,_)},p=()=>{if(!Bn.has(a)&&(Bn.set(a,[r,Object.create(null),Object.create(null),Object.create(null),o,m,y]),!Fl)){const v=i.initFocus(setTimeout.bind(ge,op.bind(ge,r,T0))),S=i.initReconnect(setTimeout.bind(ge,op.bind(ge,r,A0)));f=()=>{v&&v(),S&&S(),Bn.delete(a)}}};return p(),[a,o,p,f]}return[a,Bn.get(a)[4]]},zE=(a,u,i,r,o)=>{const f=i.errorRetryCount,h=o.retryCount,y=~~((Math.random()+.5)*(1<<(h<8?h:8)))*i.errorRetryInterval;!_t(f)&&h>f||setTimeout(r,y,o)},CE=Ko,[vf,DE]=z0(new Map),C0=Gn({onLoadingSlow:Hn,onSuccess:Hn,onError:Hn,onErrorRetry:zE,onDiscarded:Hn,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:cp?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:cp?5e3:3e3,compare:CE,isPaused:()=>!1,cache:vf,mutate:DE,fallback:{}},TE),D0=(a,u)=>{const i=Gn(a,u);if(u){const{use:r,fallback:o}=a,{use:f,fallback:h}=u;r&&f&&(i.use=r.concat(f)),o&&h&&(i.fallback=Gn(o,h))}return i},Io=$.createContext({}),LE=a=>{const{value:u}=a,i=$.useContext(Io),r=sn(u),o=$.useMemo(()=>r?u(i):u,[r,i,u]),f=$.useMemo(()=>r?o:D0(i,o),[r,i,o]),h=o&&o.provider,y=$.useRef(ge);h&&!y.current&&(y.current=z0(h(f.cache||vf),o));const m=y.current;return m&&(f.cache=m[0],f.mutate=m[1]),Ds(()=>{if(m)return m[2]&&m[2](),m[3]},[]),$.createElement(Io.Provider,Gn(a,{value:f}))},NE="$inf$",L0=lu&&window.__SWR_DEVTOOLS_USE__,UE=L0?window.__SWR_DEVTOOLS_USE__:[],BE=()=>{L0&&(window.__SWR_DEVTOOLS_REACT__=qn)},jE=a=>sn(a[1])?[a[0],a[1],a[2]||{}]:[a[0],null,(a[1]===null?a[2]:a[1])||{}],HE=()=>{const a=$.useContext(Io);return $.useMemo(()=>Gn(C0,a),[a])},qE=a=>(u,i,r)=>a(u,i&&((...f)=>{const[h]=gf(u),[,,,y]=Bn.get(vf);if(h.startsWith(NE))return i(...f);const m=y[h];return _t(m)?i(...f):(delete y[h],m)}),r),VE=UE.concat(qE),YE=a=>function(...i){const r=HE(),[o,f,h]=jE(i),y=D0(r,h);let m=a;const{use:p}=y,v=(p||[]).concat(VE);for(let S=v.length;S--;)m=v[S](m);return m(o,f||y.fetcher||null,y)},GE=(a,u,i)=>{const r=u[a]||(u[a]=[]);return r.push(i),()=>{const o=r.indexOf(i);o>=0&&(r[o]=r[r.length-1],r.pop())}};BE();const Ho=qn.use||(a=>{switch(a.status){case"pending":throw a;case"fulfilled":return a.value;case"rejected":throw a.reason;default:throw a.status="pending",a.then(u=>{a.status="fulfilled",a.value=u},u=>{a.status="rejected",a.reason=u}),a}}),qo={dedupe:!0},fp=Promise.resolve(ge),XE=()=>Hn,QE=(a,u,i)=>{const{cache:r,compare:o,suspense:f,fallbackData:h,revalidateOnMount:y,revalidateIfStale:m,refreshInterval:p,refreshWhenHidden:v,refreshWhenOffline:S,keepPreviousData:_,strictServerPrefetchWarning:R}=i,[z,A,M,Y]=Bn.get(r),[B,Z]=gf(a),H=$.useRef(!1),F=$.useRef(!1),I=$.useRef(B),Q=$.useRef(u),X=$.useRef(i),K=()=>X.current,rt=()=>K().isVisible()&&K().isOnline(),[nt,lt,ht,it]=x0(r,B),jt=$.useRef({}).current,N=_t(h)?_t(i.fallback)?ge:i.fallback[B]:h,P=(Et,Lt)=>{for(const At in jt){const qt=At;if(qt==="data"){if(!o(Et[qt],Lt[qt])&&(!_t(Et[qt])||!o(ot,Lt[qt])))return!1}else if(Lt[qt]!==Et[qt])return!1}return!0},ut=!H.current,Tt=$.useMemo(()=>{const Et=nt(),Lt=it(),At=kt=>{const Vt=Gn(kt);return delete Vt._k,(()=>{if(!B||!u||K().isPaused())return!1;if(ut&&!_t(y))return y;const Mt=_t(N)?Vt.data:N;return _t(Mt)||m})()?{isValidating:!0,isLoading:!0,...Vt}:Vt},qt=At(Et),ve=Et===Lt?qt:At(Lt);let oe=qt;return[()=>{const kt=At(nt());return P(kt,oe)?(oe.data=kt.data,oe.isLoading=kt.isLoading,oe.isValidating=kt.isValidating,oe.error=kt.error,oe):(oe=kt,kt)},()=>ve]},[r,B]),pt=ip.useSyncExternalStore($.useCallback(Et=>ht(B,(Lt,At)=>{P(At,Lt)||Et()}),[r,B]),Tt[0],Tt[1]),w=z[B]&&z[B].length>0,q=pt.data,k=_t(q)?N&&w0(N)?Ho(N):N:q,W=pt.error,ct=$.useRef(k),ot=_?_t(q)?_t(ct.current)?k:ct.current:q:k,ft=B&&_t(k),Xt=$.useRef(null);!Fl&&ip.useSyncExternalStore(XE,()=>(Xt.current=!1,Xt),()=>(Xt.current=!0,Xt));const Ht=Xt.current;R&&Ht&&!f&&ft&&console.warn(`Missing pre-initiated data for serialized key "${B}" during server-side rendering. Data fetching should be initiated on the server and provided to SWR via fallback data. You can set "strictServerPrefetchWarning: false" to disable this warning.`);const De=!B||!u||K().isPaused()||w&&!_t(W)?!1:ut&&!_t(y)?y:f?_t(k)?!1:m:_t(k)||m,Xe=ut&&De,Qn=_t(pt.isValidating)?Xe:pt.isValidating,Ta=_t(pt.isLoading)?Xe:pt.isLoading,_e=$.useCallback(async Et=>{const Lt=Q.current;if(!B||!Lt||F.current||K().isPaused())return!1;let At,qt,ve=!0;const oe=Et||{},kt=!M[B]||!oe.dedupe,Vt=()=>rp?!F.current&&B===I.current&&H.current:B===I.current,yn={isValidating:!1,isLoading:!1},Mt=()=>{lt(yn)},$t=()=>{const fe=M[B];fe&&fe[1]===qt&&delete M[B]},ae={isValidating:!0};_t(nt().data)&&(ae.isLoading=!0);try{if(kt&&(lt(ae),i.loadingTimeout&&_t(nt().data)&&setTimeout(()=>{ve&&Vt()&&K().onLoadingSlow(B,i)},i.loadingTimeout),M[B]=[Lt(Z),$o()]),[At,qt]=M[B],At=await At,kt&&setTimeout($t,i.dedupingInterval),!M[B]||M[B][1]!==qt)return kt&&Vt()&&K().onDiscarded(B),!1;yn.error=ge;const fe=A[B];if(!_t(fe)&&(qt<=fe[0]||qt<=fe[1]||fe[1]===0))return Mt(),kt&&Vt()&&K().onDiscarded(B),!1;const Qe=nt().data;yn.data=o(Qe,At)?Qe:At,kt&&Vt()&&K().onSuccess(At,B,i)}catch(fe){$t();const Qe=K(),{shouldRetryOnError:Wl}=Qe;Qe.isPaused()||(yn.error=fe,kt&&Vt()&&(Qe.onError(fe,B,Qe),(Wl===!0||sn(Wl)&&Wl(fe))&&(!K().revalidateOnFocus||!K().revalidateOnReconnect||rt())&&Qe.onErrorRetry(fe,B,Qe,Is=>{const pn=z[B];pn&&pn[0]&&pn[0](up,Is)},{retryCount:(oe.retryCount||0)+1,dedupe:!0})))}return ve=!1,Mt(),!0},[B,r]),mn=$.useCallback((...Et)=>M0(r,I.current,...Et),[]);if(Ds(()=>{Q.current=u,X.current=i,_t(q)||(ct.current=q)}),Ds(()=>{if(!B)return;const Et=_e.bind(ge,qo);let Lt=0;K().revalidateOnFocus&&(Lt=Date.now()+K().focusThrottleInterval);const qt=GE(B,z,(ve,oe={})=>{if(ve==T0){const kt=Date.now();K().revalidateOnFocus&&kt>Lt&&rt()&&(Lt=kt+K().focusThrottleInterval,Et())}else if(ve==A0)K().revalidateOnReconnect&&rt()&&Et();else{if(ve==O0)return _e();if(ve==up)return _e(oe)}});return F.current=!1,I.current=B,H.current=!0,lt({_k:Z}),De&&(M[B]||(_t(k)||Fl?Et():OE(Et))),()=>{F.current=!0,qt()}},[B]),Ds(()=>{let Et;function Lt(){const qt=sn(p)?p(nt().data):p;qt&&Et!==-1&&(Et=setTimeout(At,qt))}function At(){!nt().error&&(v||K().isVisible())&&(S||K().isOnline())?_e(qo).then(Lt):Lt()}return Lt(),()=>{Et&&(clearTimeout(Et),Et=-1)}},[p,v,S,B]),$.useDebugValue(ot),f){if(!rp&&Fl&&ft)throw new Error("Fallback data is required when using Suspense in SSR.");ft&&(Q.current=u,X.current=i,F.current=!1);const Et=Y[B],Lt=!_t(Et)&&ft?mn(Et):fp;if(Ho(Lt),!_t(W)&&ft)throw W;const At=ft?_e(qo):fp;!_t(ot)&&ft&&(At.status="fulfilled",At.value=!0),Ho(At)}return{mutate:mn,get data(){return jt.data=!0,ot},get error(){return jt.error=!0,W},get isValidating(){return jt.isValidating=!0,Qn},get isLoading(){return jt.isLoading=!0,Ta}}},ZE=Qs.defineProperty(LE,"defaultValue",{value:C0}),bR=YE(QE),KE="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%20role='img'%20aria-label='Agent%20Inspector'%3e%3crect%20width='64'%20height='64'%20rx='14'%20fill='%23111827'%20/%3e%3cg%20fill='none'%20stroke='%23f59e0b'%20stroke-width='4.2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20fill='%23f59e0b'%20d='M15%2036c0-11%207-18%2017-18s17%207%2017%2018c0%208-7%2013-17%2013s-17-5-17-13z'%20/%3e%3cpath%20d='M16%2031c-6-5-12-3-12%204%200%205%206%206%2011%202'%20/%3e%3cpath%20d='M48%2031c6-5%2012-3%2012%204%200%205-6%206-11%202'%20/%3e%3cpath%20d='M27%2019l-3-7'%20/%3e%3cpath%20d='M37%2019l3-7'%20/%3e%3cpath%20d='M19%2045l-6%209'%20/%3e%3cpath%20d='M27%2048l-3%209'%20/%3e%3cpath%20d='M37%2048l3%209'%20/%3e%3cpath%20d='M45%2045l6%209'%20/%3e%3c/g%3e%3cpath%20d='M14%2047l9-8%208%209c-5%203.5-12%203-17-1z'%20fill='%232f6b3f'%20opacity='.95'%20/%3e%3cpath%20d='M18%2046l5-5%205%206c-3%201.6-7%201.4-10-1z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M23%2041v10'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='1.6'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='31'%20cy='48'%20r='1.8'%20fill='%23c2412d'%20/%3e%3cpath%20d='M24%2044l13-11%2014%2013c-8%205.8-18%205.3-27-2z'%20fill='%232f6b3f'%20opacity='.97'%20/%3e%3cpath%20d='M30%2043l7-7%209%209c-5%202.7-11%202.5-16-2z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M37%2036v14'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='2'%20stroke-linecap='round'%20/%3e%3cpath%20d='M30%2043c5-2%2011-1.5%2016%202'%20fill='none'%20stroke='%239fca78'%20stroke-width='1.8'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='51'%20cy='46'%20r='2'%20fill='%23c2412d'%20/%3e%3cpath%20d='M40%2050l8-8%207%208c-4.2%203.2-10%203-15%200z'%20fill='%232f6b3f'%20opacity='.95'%20/%3e%3cpath%20d='M43%2049l5-5%204.5%205.5c-3%201.5-6%201.2-9.5-.5z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M48%2044v9'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='1.5'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='55'%20cy='50'%20r='1.7'%20fill='%23c2412d'%20/%3e%3ccircle%20cx='24'%20cy='11'%20r='3.2'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='40'%20cy='11'%20r='3.2'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='25'%20cy='34'%20r='2.1'%20fill='%23111827'%20/%3e%3ccircle%20cx='39'%20cy='34'%20r='2.1'%20fill='%23111827'%20/%3e%3c/svg%3e",kE="/assets/index-CxhRsekH.css",Sf=B_({head:()=>({meta:[{charSet:"utf-8"},{name:"viewport",content:"width=device-width, initial-scale=1"},{title:"Agent Inspector"}],links:[{rel:"stylesheet",href:kE},{rel:"icon",type:"image/svg+xml",href:KE}]}),component:JE,notFoundComponent:FE});function JE(){return J.jsx(N0,{children:J.jsx(g0,{})})}function FE(){return J.jsx(N0,{children:J.jsx("main",{className:"min-h-screen bg-background text-foreground",children:J.jsx("div",{className:"mx-auto flex min-h-screen w-full max-w-3xl flex-col justify-center px-6 py-16",children:J.jsxs("div",{className:"border-border/70 bg-card/60 rounded-lg border p-8 shadow-sm",children:[J.jsx("div",{className:"text-muted-foreground font-mono text-xs uppercase tracking-wider",children:"404"}),J.jsx("h1",{className:"mt-3 text-2xl font-semibold",children:"Page not found"}),J.jsx("p",{className:"text-muted-foreground mt-3 max-w-xl text-sm leading-6",children:"This route is not part of the Agent Inspector UI or API surface."}),J.jsx("a",{href:"/",className:"bg-primary text-primary-foreground hover:bg-primary/90 mt-6 inline-flex h-9 items-center justify-center rounded-md px-4 text-sm font-medium transition-colors",children:"Open Agent Inspector"})]})})})})}function N0({children:a}){return J.jsxs("html",{lang:"en",className:"dark",children:[J.jsx("head",{children:J.jsx(W_,{})}),J.jsxs("body",{children:[J.jsx(ZE,{value:{revalidateOnFocus:!1,revalidateIfStale:!1},children:a}),J.jsx($_,{})]})]})}const PE="modulepreload",WE=function(a){return"/"+a},dp={},U0=function(u,i,r){let o=Promise.resolve();if(i&&i.length>0){let m=function(p){return Promise.all(p.map(v=>Promise.resolve(v).then(S=>({status:"fulfilled",value:S}),S=>({status:"rejected",reason:S}))))};document.getElementsByTagName("link");const h=document.querySelector("meta[property=csp-nonce]"),y=h?.nonce||h?.getAttribute("nonce");o=m(i.map(p=>{if(p=WE(p),p in dp)return;dp[p]=!0;const v=p.endsWith(".css"),S=v?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${S}`))return;const _=document.createElement("link");if(_.rel=v?"stylesheet":PE,v||(_.as="script"),_.crossOrigin="",_.href=p,y&&_.setAttribute("nonce",y),document.head.appendChild(_),v)return new Promise((R,z)=>{_.addEventListener("load",R),_.addEventListener("error",()=>z(new Error(`Unable to preload CSS for ${p}`)))})}))}function f(h){const y=new Event("vite:preloadError",{cancelable:!0});if(y.payload=h,window.dispatchEvent(y),!y.defaultPrevented)throw h}return o.then(h=>{for(const y of h||[])y.status==="rejected"&&f(y.reason);return u().catch(f)})},$E=()=>U0(()=>import("./index-jagRsQaV.js"),__vite__mapDeps([0,1])),IE=Xs("/")({component:m0($E,"component")}),tR=/^[A-Za-z0-9_-]+$/;function eR(a){let u="";for(const i of a)u+=String.fromCharCode(i);return u}function nR(a){const u=new Uint8Array(a.length);for(let i=0;i<a.length;i++)u[i]=a.charCodeAt(i);return u}function B0(a){const u=new TextEncoder().encode(a);return btoa(eR(u)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function aR(a){if(a.startsWith("%"))return decodeURIComponent(a);if(!tR.test(a))return a;try{const i=a.padEnd(Math.ceil(a.length/4)*4,"=").replace(/-/g,"+").replace(/_/g,"/"),r=atob(i);return new TextDecoder().decode(nR(r))}catch{return a}}function _R(a){return`/session/${B0(a)}`}const lR=()=>U0(()=>import("./_sessionId-DUzYnZXV.js"),__vite__mapDeps([2,1])),iR=Xs("/session/$sessionId")({component:m0(lR,"component"),parseParams:a=>({sessionId:aR(a.sessionId)}),stringifyParams:a=>({sessionId:B0(a.sessionId)})}),uR=IE.update({id:"/",path:"/",getParentRoute:()=>Sf}),sR=iR.update({id:"/session/$sessionId",path:"/session/$sessionId",getParentRoute:()=>Sf}),rR={IndexRoute:uR,SessionSessionIdRoute:sR},cR=Sf._addFileChildren(rR);function oR(){return Q_({routeTree:cR,scrollRestoration:!1})}async function fR(){const a=await oR();let u;return u=[],window.__TSS_START_OPTIONS__={serializationAdapters:u},u.push(gE),a.options.serializationAdapters&&u.push(...a.options.serializationAdapters),a.update({basepath:"",serializationAdapters:u}),a.state.matches.length||await tE(a),a}async function dR(){const a=await fR();return window.$_TSR?.h(),a}let Vo;function hR(){return Vo||(Vo=dR()),J.jsx(d_,{promise:Vo,children:a=>J.jsx(k_,{router:a})})}$.startTransition(()=>{cS.hydrateRoot(document,J.jsx($.StrictMode,{children:J.jsx(hR,{})}))});export{iR as R,U0 as _,HE as a,d0 as b,mR as c,qn as d,aS as e,vR as f,hp as g,_R as h,J as j,$ as r,bR as u};
@@ -1,6 +1,6 @@
1
1
  import { j as jsxRuntimeExports } from "./_libs/react.mjs";
2
- import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-DiZjOTQT.mjs";
3
- import { R as Route$p } from "./_ssr/router-Bf0m6F0G.mjs";
2
+ import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-DrSMa5O7.mjs";
3
+ import { R as Route$q } from "./_ssr/router-CSRaa_tu.mjs";
4
4
  import "./_libs/jszip.mjs";
5
5
  import "./_libs/modelcontextprotocol__server.mjs";
6
6
  import "./_libs/swr.mjs";
@@ -168,7 +168,7 @@ import "./_libs/pako.mjs";
168
168
  function SessionViewerRoute() {
169
169
  const {
170
170
  sessionId
171
- } = Route$p.useParams();
171
+ } = Route$q.useParams();
172
172
  return /* @__PURE__ */ jsxRuntimeExports.jsx(ProxyViewerContainer, { initialSessionId: sessionId }, sessionId);
173
173
  }
174
174
  export {
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, c as cn, B as Badge, f as formatTokens, J as JsonViewerFromString } from "./ProxyViewerContainer-DiZjOTQT.mjs";
3
- import "./router-Bf0m6F0G.mjs";
2
+ import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, c as cn, B as Badge, f as formatTokens, J as JsonViewerFromString } from "./ProxyViewerContainer-DrSMa5O7.mjs";
3
+ import "./router-CSRaa_tu.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { X, a7 as Rows3, a8 as Columns2, n as Minus, P as Plus, m as Pencil, f as ChevronRight, a9 as Equal, C as Check, a as Copy } from "../_libs/lucide-react.mjs";
@@ -1,5 +1,5 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports, a as React } from "../_libs/react.mjs";
2
- import { C as CapturedLogSchema, D as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, a as DEFAULT_TIME_DISPLAY_FORMAT, b as RuntimeConfigSchema, r as requestFormatForPath, e as createPendingProviderTestResults, P as ProviderTestResultsSchema, f as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, T as TimeDisplayFormatSchema, g as getSessionPath, h as ProviderConfigSchema, K as KnowledgeCandidateSchema, d as stripClaudeCodeBillingHeader, s as safeGetOwnProperty, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, c as AnthropicRequestSchema } from "./router-Bf0m6F0G.mjs";
2
+ import { C as CapturedLogSchema, D as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, a as DEFAULT_TIME_DISPLAY_FORMAT, b as RuntimeConfigSchema, r as requestFormatForPath, h as createPendingProviderTestResults, P as ProviderTestResultsSchema, i as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, T as TimeDisplayFormatSchema, g as getSessionPath, j as ProviderConfigSchema, e as providerHasContextMetadata, f as findProviderModelMetadata, K as KnowledgeCandidateSchema, d as stripClaudeCodeBillingHeader, s as safeGetOwnProperty, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, c as AnthropicRequestSchema } from "./router-CSRaa_tu.mjs";
3
3
  import { u as useSWR, a as useSWRConfig } from "../_libs/swr.mjs";
4
4
  import { J as JSZip } from "../_libs/jszip.mjs";
5
5
  import { c as clsx } from "../_libs/clsx.mjs";
@@ -298,7 +298,7 @@ function getStatusCategory(status) {
298
298
  if (status >= 500) return "server_error";
299
299
  return "pending";
300
300
  }
301
- const version = "2.0.8";
301
+ const version = "2.0.10";
302
302
  const packageJson = {
303
303
  version
304
304
  };
@@ -1359,19 +1359,19 @@ function useCopyFeedback(text) {
1359
1359
  return { copied, copy };
1360
1360
  }
1361
1361
  const LazyCompareDrawer = reactExports.lazy(
1362
- () => import("./CompareDrawer-C5NBvE2e.mjs").then((m) => ({ default: m.CompareDrawer }))
1362
+ () => import("./CompareDrawer-CSPqneYm.mjs").then((m) => ({ default: m.CompareDrawer }))
1363
1363
  );
1364
1364
  const LazyReplayDialog = reactExports.lazy(
1365
- () => import("./ReplayDialog-EpvTwFvp.mjs").then((m) => ({ default: m.ReplayDialog }))
1365
+ () => import("./ReplayDialog-Dn3naENv.mjs").then((m) => ({ default: m.ReplayDialog }))
1366
1366
  );
1367
1367
  const LazyRequestAnatomy = reactExports.lazy(
1368
- () => import("./RequestAnatomy-DaQjhixp.mjs").then((m) => ({ default: m.RequestAnatomy }))
1368
+ () => import("./RequestAnatomy-D1X3f3AX.mjs").then((m) => ({ default: m.RequestAnatomy }))
1369
1369
  );
1370
1370
  const LazyResponseView = reactExports.lazy(
1371
- () => import("./ResponseView-D8tGHCGY.mjs").then((m) => ({ default: m.ResponseView }))
1371
+ () => import("./ResponseView-CwXAWOoE.mjs").then((m) => ({ default: m.ResponseView }))
1372
1372
  );
1373
1373
  const LazyStreamingChunkSequence = reactExports.lazy(
1374
- () => import("./StreamingChunkSequence-DGQnb1QE.mjs").then((m) => ({
1374
+ () => import("./StreamingChunkSequence-DRSR2FfN.mjs").then((m) => ({
1375
1375
  default: m.StreamingChunkSequence
1376
1376
  }))
1377
1377
  );
@@ -3354,6 +3354,10 @@ const LogEntry = reactExports.memo(function({
3354
3354
  if (activeTab !== "request") setActiveTab("request");
3355
3355
  }
3356
3356
  });
3357
+ reactExports.useEffect(() => {
3358
+ if (!expanded) return;
3359
+ setActiveTab(anatomySegments !== null ? "anatomy" : "request");
3360
+ }, [anatomySegments, expanded]);
3357
3361
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipProvider, { children: [
3358
3362
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border border-border rounded-lg mb-1 overflow-hidden", children: [
3359
3363
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -5535,7 +5539,9 @@ function ProviderCard({
5535
5539
  isHighlighted,
5536
5540
  onEdit,
5537
5541
  onDelete,
5538
- onTest
5542
+ onTest,
5543
+ onRefreshMetadata,
5544
+ isRefreshingMetadata = false
5539
5545
  }) {
5540
5546
  const [showApiKey, setShowApiKey] = reactExports.useState(false);
5541
5547
  const [copied, setCopied] = reactExports.useState(false);
@@ -5549,6 +5555,9 @@ function ProviderCard({
5549
5555
  const docsUrl = provider.apiDocsUrl ?? Object.entries(KNOWN_PROVIDER_DOCS).find(
5550
5556
  ([keyword]) => provider.name.toLowerCase().includes(keyword)
5551
5557
  )?.[1];
5558
+ const hasContextMetadata = providerHasContextMetadata(provider);
5559
+ const canRefreshMetadata = provider.modelMetadataUrl !== void 0 && provider.modelMetadataUrl.trim() !== "";
5560
+ const metadataImportLabel = canRefreshMetadata ? "Refresh" : "Import defaults";
5552
5561
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
5553
5562
  "div",
5554
5563
  {
@@ -5581,7 +5590,51 @@ function ProviderCard({
5581
5590
  }
5582
5591
  )
5583
5592
  ] }),
5584
- provider.models !== void 0 && provider.models.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-wrap gap-1", children: provider.models.map((m) => /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs px-1.5 py-0.5 rounded bg-muted text-muted-foreground", children: m }, m)) }),
5593
+ provider.models !== void 0 && provider.models.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-wrap gap-1", children: provider.models.map((m) => {
5594
+ const metadata = findProviderModelMetadata(provider, m);
5595
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
5596
+ "span",
5597
+ {
5598
+ className: "inline-flex items-center gap-1 text-xs px-1.5 py-0.5 rounded bg-muted text-muted-foreground",
5599
+ children: [
5600
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: m }),
5601
+ metadata !== null && metadata.contextWindow !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-foreground/80", children: formatTokens(metadata.contextWindow) })
5602
+ ]
5603
+ },
5604
+ m
5605
+ );
5606
+ }) }),
5607
+ !hasContextMetadata && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2 rounded-md border border-amber-500/25 bg-amber-500/6 px-2 py-1.5 text-xs text-muted-foreground", children: [
5608
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Context window metadata missing" }),
5609
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [
5610
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
5611
+ Button,
5612
+ {
5613
+ type: "button",
5614
+ variant: "outline",
5615
+ size: "sm",
5616
+ onClick: () => onRefreshMetadata?.(provider.id),
5617
+ className: "h-6 gap-1 px-2 text-xs",
5618
+ disabled: isRefreshingMetadata,
5619
+ children: [
5620
+ /* @__PURE__ */ jsxRuntimeExports.jsx(RotateCw, { className: `size-3 ${isRefreshingMetadata ? "animate-spin" : ""}` }),
5621
+ metadataImportLabel
5622
+ ]
5623
+ }
5624
+ ),
5625
+ !canRefreshMetadata && /* @__PURE__ */ jsxRuntimeExports.jsx(
5626
+ Button,
5627
+ {
5628
+ type: "button",
5629
+ variant: "ghost",
5630
+ size: "sm",
5631
+ onClick: () => onEdit(provider),
5632
+ className: "h-6 px-2 text-xs",
5633
+ children: "Set URL"
5634
+ }
5635
+ )
5636
+ ] })
5637
+ ] }),
5585
5638
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
5586
5639
  /* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "text-xs text-muted-foreground bg-muted px-2 py-1 rounded flex-1 truncate", children: showApiKey ? provider.apiKey : maskApiKey(provider.apiKey) }),
5587
5640
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -5743,6 +5796,7 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
5743
5796
  const [anthropicBaseUrl, setAnthropicBaseUrl] = reactExports.useState(provider?.anthropicBaseUrl ?? "");
5744
5797
  const [openaiBaseUrl, setOpenaiBaseUrl] = reactExports.useState(provider?.openaiBaseUrl ?? "");
5745
5798
  const [apiDocsUrl, setApiDocsUrl] = reactExports.useState(provider?.apiDocsUrl ?? "");
5799
+ const [modelMetadataUrl, setModelMetadataUrl] = reactExports.useState(provider?.modelMetadataUrl ?? "");
5746
5800
  const [source, setSource] = reactExports.useState(provider?.source);
5747
5801
  const [errors, setErrors] = reactExports.useState({});
5748
5802
  const [isSubmitting, setIsSubmitting] = reactExports.useState(false);
@@ -5765,6 +5819,7 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
5765
5819
  const [manualOpenaiUrlOverride, setManualOpenaiUrlOverride] = reactExports.useState(false);
5766
5820
  const isMiniMax = name.toLowerCase().includes("minimax");
5767
5821
  const isAlibaba = name.toLowerCase().includes("alibaba");
5822
+ const hasContextMetadata = provider?.modelMetadata?.some((metadata) => metadata.contextWindow !== void 0) ?? false;
5768
5823
  function handleCopy() {
5769
5824
  navigator.clipboard.writeText(apiKey).catch(() => {
5770
5825
  });
@@ -5779,6 +5834,7 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
5779
5834
  setAnthropicBaseUrl(provider.anthropicBaseUrl ?? "");
5780
5835
  setOpenaiBaseUrl(provider.openaiBaseUrl ?? "");
5781
5836
  setApiDocsUrl(provider.apiDocsUrl ?? "");
5837
+ setModelMetadataUrl(provider.modelMetadataUrl ?? "");
5782
5838
  setSource(provider.source);
5783
5839
  setManualAnthropicUrlOverride(false);
5784
5840
  setManualOpenaiUrlOverride(false);
@@ -5823,6 +5879,9 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
5823
5879
  if (openaiBaseUrl.trim() && !isValidUrl(openaiBaseUrl.trim())) {
5824
5880
  newErrors.openaiBaseUrl = "Invalid URL format";
5825
5881
  }
5882
+ if (modelMetadataUrl.trim() && !isValidUrl(modelMetadataUrl.trim())) {
5883
+ newErrors.modelMetadataUrl = "Invalid URL format";
5884
+ }
5826
5885
  if (!anthropicBaseUrl.trim() && !openaiBaseUrl.trim()) {
5827
5886
  newErrors.format = "At least one format URL (Anthropic or OpenAI) is required";
5828
5887
  }
@@ -5849,6 +5908,7 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
5849
5908
  anthropicBaseUrl: anthropicBaseUrl.trim() || void 0,
5850
5909
  openaiBaseUrl: openaiBaseUrl.trim() || void 0,
5851
5910
  apiDocsUrl: apiDocsUrl.trim() || void 0,
5911
+ modelMetadataUrl: modelMetadataUrl.trim() || void 0,
5852
5912
  source
5853
5913
  });
5854
5914
  } finally {
@@ -5894,6 +5954,24 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
5894
5954
  ),
5895
5955
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-muted-foreground", children: "Label whether this API key is company-provided or personal." })
5896
5956
  ] }),
5957
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
5958
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { htmlFor: "provider-model-metadata-url", className: "text-sm font-medium", children: "Model Metadata URL" }),
5959
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
5960
+ "input",
5961
+ {
5962
+ id: "provider-model-metadata-url",
5963
+ type: "text",
5964
+ value: modelMetadataUrl,
5965
+ onChange: (e) => setModelMetadataUrl(e.target.value),
5966
+ placeholder: "https://example.com/agent-inspector-models.json",
5967
+ className: "w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:border-ring focus-visible:outline-ring focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50"
5968
+ }
5969
+ ),
5970
+ errors.modelMetadataUrl !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-destructive", children: errors.modelMetadataUrl }),
5971
+ modelMetadataUrl.trim() === "" && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded-md border border-border bg-muted/20 px-3 py-2 text-xs text-muted-foreground", children: "Built-in limits cover DeepSeek v4 pro/flash and MiniMax M3/M2.7/M2.5/M2.1. Use a registry URL for private or custom model limits." }),
5972
+ provider !== void 0 && !hasContextMetadata && modelMetadataUrl.trim() === "" && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-amber-400", children: "This provider has no matching context metadata yet." }),
5973
+ modelMetadataUrl.trim() !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-muted-foreground", children: "Agent Inspector will refresh model limits from this JSON registry after save." })
5974
+ ] }),
5897
5975
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
5898
5976
  /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { htmlFor: "provider-apikey", className: "text-sm font-medium", children: [
5899
5977
  "API Key ",
@@ -6138,6 +6216,13 @@ const ImportResponseSchema = object({
6138
6216
  message: string().optional(),
6139
6217
  errors: array(string()).optional()
6140
6218
  });
6219
+ const ModelMetadataRefreshResponseSchema = object({
6220
+ provider: ProviderConfigSchema,
6221
+ imported: number(),
6222
+ matchedModels: array(string()),
6223
+ missingModels: array(string()),
6224
+ sourceUrl: string()
6225
+ });
6141
6226
  const TEST_TIMEOUT_SECONDS = 30;
6142
6227
  const NETWORK_ERROR_MESSAGE = "Network error: could not reach the server. Is the proxy running?";
6143
6228
  function createProviderPayload(data) {
@@ -6148,6 +6233,7 @@ function createProviderPayload(data) {
6148
6233
  anthropicBaseUrl: (data.anthropicBaseUrl?.length ?? 0) > 0 ? data.anthropicBaseUrl : void 0,
6149
6234
  openaiBaseUrl: (data.openaiBaseUrl?.length ?? 0) > 0 ? data.openaiBaseUrl : void 0,
6150
6235
  apiDocsUrl: (data.apiDocsUrl?.length ?? 0) > 0 ? data.apiDocsUrl : void 0,
6236
+ modelMetadataUrl: (data.modelMetadataUrl?.length ?? 0) > 0 ? data.modelMetadataUrl : void 0,
6151
6237
  source: data.source
6152
6238
  };
6153
6239
  }
@@ -6190,6 +6276,9 @@ function ProvidersPanel({
6190
6276
  const [confirmOpen, setConfirmOpen] = reactExports.useState(false);
6191
6277
  const [deletingProviderId, setDeletingProviderId] = reactExports.useState(null);
6192
6278
  const [sourceFilter, setSourceFilter] = reactExports.useState("all");
6279
+ const [refreshingMetadataProviders, setRefreshingMetadataProviders] = reactExports.useState(
6280
+ /* @__PURE__ */ new Set()
6281
+ );
6193
6282
  const listScrollRef = reactExports.useRef(null);
6194
6283
  const highlightTimeoutRef = reactExports.useRef(null);
6195
6284
  const providers = externalProviders ?? [];
@@ -6329,6 +6418,50 @@ function ProvidersPanel({
6329
6418
  },
6330
6419
  [setTestingTimeLeft, updateTestResults, updateTestingState]
6331
6420
  );
6421
+ const refreshProviderMetadata = reactExports.useCallback(
6422
+ async (providerId, url, showError = true) => {
6423
+ setRefreshingMetadataProviders((prev) => {
6424
+ const next = new Set(prev);
6425
+ next.add(providerId);
6426
+ return next;
6427
+ });
6428
+ try {
6429
+ const payload = url !== void 0 && url.trim() !== "" ? { url } : {};
6430
+ const res = await fetch(`/api/providers/${providerId}/model-metadata`, {
6431
+ method: "POST",
6432
+ headers: { "Content-Type": "application/json" },
6433
+ body: JSON.stringify(payload)
6434
+ });
6435
+ if (!res.ok) {
6436
+ if (showError) {
6437
+ setError(await readApiError(res, "Failed to refresh model metadata"));
6438
+ }
6439
+ return false;
6440
+ }
6441
+ const data = await parseJsonResponse$1(res, ModelMetadataRefreshResponseSchema);
6442
+ if (data.imported === 0 && showError) {
6443
+ setError("No matching model metadata found for this provider.");
6444
+ } else {
6445
+ setError(null);
6446
+ }
6447
+ triggerHighlight(data.provider.id);
6448
+ refreshProviders();
6449
+ return data.imported > 0;
6450
+ } catch {
6451
+ if (showError) {
6452
+ setError(NETWORK_ERROR_MESSAGE);
6453
+ }
6454
+ return false;
6455
+ } finally {
6456
+ setRefreshingMetadataProviders((prev) => {
6457
+ const next = new Set(prev);
6458
+ next.delete(providerId);
6459
+ return next;
6460
+ });
6461
+ }
6462
+ },
6463
+ [refreshProviders, triggerHighlight]
6464
+ );
6332
6465
  function handleAddProvider(data) {
6333
6466
  void (async () => {
6334
6467
  try {
@@ -6344,6 +6477,9 @@ function ProvidersPanel({
6344
6477
  const newProvider = await parseJsonResponse$1(res, ProviderConfigSchema);
6345
6478
  setShowForm(false);
6346
6479
  triggerHighlight(newProvider.id);
6480
+ if (data.modelMetadataUrl !== void 0 && data.modelMetadataUrl.trim() !== "") {
6481
+ await refreshProviderMetadata(newProvider.id, data.modelMetadataUrl, false);
6482
+ }
6347
6483
  refreshProviders();
6348
6484
  await runTest(newProvider.id);
6349
6485
  } catch {
@@ -6367,6 +6503,9 @@ function ProvidersPanel({
6367
6503
  const updated = await parseJsonResponse$1(res, ProviderConfigSchema);
6368
6504
  setEditingProvider(void 0);
6369
6505
  triggerHighlight(updated.id);
6506
+ if (data.modelMetadataUrl !== void 0 && data.modelMetadataUrl.trim() !== "") {
6507
+ await refreshProviderMetadata(updated.id, data.modelMetadataUrl, false);
6508
+ }
6370
6509
  refreshProviders();
6371
6510
  const criticalFieldsChanged = (data.apiKey ?? "") !== (editingProvider.apiKey ?? "") || JSON.stringify(data.models) !== JSON.stringify(editingProvider.models) || (data.anthropicBaseUrl ?? "") !== (editingProvider.anthropicBaseUrl ?? "") || (data.openaiBaseUrl ?? "") !== (editingProvider.openaiBaseUrl ?? "");
6372
6511
  if (criticalFieldsChanged) {
@@ -6595,6 +6734,10 @@ function ProvidersPanel({
6595
6734
  isHighlighted: provider.id === highlightedProviderId,
6596
6735
  onEdit: (p) => setEditingProvider(p),
6597
6736
  onDelete: handleDeleteProvider,
6737
+ onRefreshMetadata: (id) => {
6738
+ void refreshProviderMetadata(id);
6739
+ },
6740
+ isRefreshingMetadata: refreshingMetadataProviders.has(provider.id),
6598
6741
  onTest: (id) => {
6599
6742
  void runTest(id);
6600
6743
  }
@@ -7855,11 +7998,13 @@ export {
7855
7998
  TooltipTrigger as m,
7856
7999
  TooltipContent as n,
7857
8000
  Button as o,
7858
- getStatusCategory as p,
7859
- CollapsibleTrigger as q,
8001
+ countCharacters as p,
8002
+ estimateTokens as q,
7860
8003
  resolveLogFormat as r,
7861
- CollapsibleContent as s,
7862
- JsonViewer as t,
8004
+ getStatusCategory as s,
8005
+ CollapsibleTrigger as t,
7863
8006
  useProviders as u,
7864
- safeJsonValue as v
8007
+ CollapsibleContent as v,
8008
+ JsonViewer as w,
8009
+ safeJsonValue as x
7865
8010
  };
@@ -1,7 +1,7 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { u as useProviders, D as Dialog, b as DialogContent, d as DialogHeader, e as DialogTitle, T as Tabs, h as TabsList, i as TabsTrigger, j as TabsContent, k as TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent, o as Button } from "./ProxyViewerContainer-DiZjOTQT.mjs";
3
- import { ResponseView } from "./ResponseView-D8tGHCGY.mjs";
4
- import "./router-Bf0m6F0G.mjs";
2
+ import { u as useProviders, D as Dialog, b as DialogContent, d as DialogHeader, e as DialogTitle, T as Tabs, h as TabsList, i as TabsTrigger, j as TabsContent, k as TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent, o as Button } from "./ProxyViewerContainer-DrSMa5O7.mjs";
3
+ import { ResponseView } from "./ResponseView-CwXAWOoE.mjs";
4
+ import "./router-CSRaa_tu.mjs";
5
5
  import "../_libs/modelcontextprotocol__server.mjs";
6
6
  import "../_libs/jszip.mjs";
7
7
  import { I as RotateCcw } from "../_libs/lucide-react.mjs";