@tonyclaw/llm-inspector 1.16.3 → 1.16.4
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/.output/nitro.json +1 -1
- package/.output/public/assets/{index-DfjhkDNi.js → index-X7CHS7fS.js} +40 -40
- package/.output/public/assets/{main-Cpts3Ifr.js → main-DbWwVQFh.js} +1 -1
- package/.output/server/_libs/lucide-react.mjs +12 -12
- package/.output/server/_ssr/{index-CjvQZBI0.mjs → index-C-z-fZtq.mjs} +195 -82
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{router-CO9_4CVh.mjs → router-CNM9Kbi0.mjs} +1 -1
- package/.output/server/{_tanstack-start-manifest_v-D-9SW7K3.mjs → _tanstack-start-manifest_v-BWfLeIsC.mjs} +1 -1
- package/.output/server/index.mjs +28 -28
- package/package.json +1 -1
- package/src/components/proxy-viewer/CompareDrawer.tsx +6 -6
- package/src/components/proxy-viewer/LogEntry.tsx +47 -12
- package/src/components/proxy-viewer/StreamingChunkSequence.tsx +1 -1
- package/src/components/proxy-viewer/formats/anthropic/ContentBlocks.tsx +1 -1
- package/src/components/proxy-viewer/formats/openai/ResponseView.tsx +1 -1
- package/src/components/ui/json-viewer.tsx +220 -84
|
@@ -14,4 +14,4 @@ Error generating stack: `+l.message+`
|
|
|
14
14
|
`)}else{const p=o.indexOf(`
|
|
15
15
|
`);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(`
|
|
16
16
|
`);if(p>=0){const v=o.slice(0,p);o=o.slice(p+1);const S=v.split(`
|
|
17
|
-
`).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 dR({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 hR(a){const u="/_serverFn/"+a;return Object.assign((...o)=>{const f=vg()?.serverFns?.fetch;return rR(u,o,f??fetch)},{url:u,serverFnMeta:{id:a},[Zo]:!0})}const mR={key:"$TSS/serverfn",test:a=>typeof a!="function"||!(Zo in a)?!1:!!a[Zo],toSerializable:({serverFnMeta:a})=>({functionId:a.id}),fromSerializable:({functionId:a})=>hR(a)};var lp=cg();const Eg=0,Rg=1,Tg=2,ip=3;var up=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(up.call(a,i)&&++r&&!up.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(),Xs=Object,_t=a=>a===ge,sn=a=>typeof a=="function",Gn=(a,u)=>({...a,...u}),Ag=a=>sn(a.then),No={},As={},pf="undefined",lu=typeof window!=pf,Jo=typeof document!=pf,yR=lu&&"Deno"in window,pR=()=>lu&&typeof window.requestAnimationFrame!=pf,Og=(a,u)=>{const i=Bn.get(a);return[()=>!_t(u)&&a.get(u)||No,r=>{if(!_t(u)){const o=a.get(u);u in As||(As[u]=o),i[5](u,Gn(o,r),o||No)}},i[6],()=>!_t(u)&&u in As?As[u]:!_t(u)&&a.get(u)||No]};let ko=!0;const gR=()=>ko,[Fo,Po]=lu&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[Hn,Hn],vR=()=>{const a=Jo&&document.visibilityState;return _t(a)||a!=="hidden"},SR=a=>(Jo&&document.addEventListener("visibilitychange",a),Fo("focus",a),()=>{Jo&&document.removeEventListener("visibilitychange",a),Po("focus",a)}),bR=a=>{const u=()=>{ko=!0,a()},i=()=>{ko=!1};return Fo("online",u),Fo("offline",i),()=>{Po("online",u),Po("offline",i)}},_R={isOnline:gR,isVisible:vR},ER={initFocus:SR,initReconnect:bR},sp=!qn.useId,Fl=!lu||yR,RR=a=>pR()?window.requestAnimationFrame(a):setTimeout(a,1),Ds=Fl?$.useEffect:$.useLayoutEffect,Uo=typeof navigator<"u"&&navigator.connection,rp=!Fl&&Uo&&(["slow-2g","2g"].includes(Uo.effectiveType)||Uo.saveData),Os=new WeakMap,TR=a=>Xs.prototype.toString.call(a),Bo=(a,u)=>a===`[object ${u}]`;let AR=0;const Wo=a=>{const u=typeof a,i=TR(a),r=Bo(i,"Date"),o=Bo(i,"RegExp"),f=Bo(i,"Object");let h,y;if(Xs(a)===a&&!r&&!o){if(h=Os.get(a),h)return h;if(h=++AR+"~",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=Xs.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 OR=0;const $o=()=>++OR;async function wg(...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]=Og(u,R),[x,Y,B,Z]=Bn.get(u),H=()=>{const it=x[R];return(sn(f.revalidate)?f.revalidate(z().data,_):f.revalidate!==!1)&&(delete B[R],delete Z[R],it&&it[0])?it[0](Tg).then(()=>z().data):z().data};if(a.length<3)return H();let k=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(k))try{k=k(ht)}catch(it){I=it,Q=!0}if(k&&Ag(k))if(k=await k.catch(it=>{I=it,Q=!0}),X!==Y[R][0]){if(Q)throw I;return k}else Q&&K&&p(I)&&(h=!0,A({data:ht,_c:ge}));if(h&&!Q)if(sn(h)){const it=h(k,ht);A({data:it,error:ge,_c:ge})}else A({data:k,error:ge,_c:ge});if(Y[R][1]=$o(),Promise.resolve(H()).then(()=>{A({_c:ge})}),Q){if(v)throw I;return}return k}}const cp=(a,u)=>{for(const i in a)a[i][0]&&a[i][0](u)},Mg=(a,u)=>{if(!Bn.has(a)){const i=Gn(ER,u),r=Object.create(null),o=wg.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,cp.bind(ge,r,Eg))),S=i.initReconnect(setTimeout.bind(ge,cp.bind(ge,r,Rg)));f=()=>{v&&v(),S&&S(),Bn.delete(a)}}};return p(),[a,o,p,f]}return[a,Bn.get(a)[4]]},wR=(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)},MR=Ko,[vf,xR]=Mg(new Map),xg=Gn({onLoadingSlow:Hn,onSuccess:Hn,onError:Hn,onErrorRetry:wR,onDiscarded:Hn,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:rp?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:rp?5e3:3e3,compare:MR,isPaused:()=>!1,cache:vf,mutate:xR,fallback:{}},_R),zg=(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({}),zR=a=>{const{value:u}=a,i=$.useContext(Io),r=sn(u),o=$.useMemo(()=>r?u(i):u,[r,i,u]),f=$.useMemo(()=>r?o:zg(i,o),[r,i,o]),h=o&&o.provider,y=$.useRef(ge);h&&!y.current&&(y.current=Mg(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}))},CR="$inf$",Cg=lu&&window.__SWR_DEVTOOLS_USE__,DR=Cg?window.__SWR_DEVTOOLS_USE__:[],LR=()=>{Cg&&(window.__SWR_DEVTOOLS_REACT__=qn)},NR=a=>sn(a[1])?[a[0],a[1],a[2]||{}]:[a[0],null,(a[1]===null?a[2]:a[1])||{}],UR=()=>{const a=$.useContext(Io);return $.useMemo(()=>Gn(xg,a),[a])},BR=a=>(u,i,r)=>a(u,i&&((...f)=>{const[h]=gf(u),[,,,y]=Bn.get(vf);if(h.startsWith(CR))return i(...f);const m=y[h];return _t(m)?i(...f):(delete y[h],m)}),r),jR=DR.concat(BR),HR=a=>function(...i){const r=UR(),[o,f,h]=NR(i),y=zg(r,h);let m=a;const{use:p}=y,v=(p||[]).concat(jR);for(let S=v.length;S--;)m=v[S](m);return m(o,f||y.fetcher||null,y)},qR=(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())}};LR();const jo=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}}),Ho={dedupe:!0},op=Promise.resolve(ge),VR=()=>Hn,YR=(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,x,Y]=Bn.get(r),[B,Z]=gf(a),H=$.useRef(!1),k=$.useRef(!1),I=$.useRef(B),Q=$.useRef(u),X=$.useRef(i),K=()=>X.current,rt=()=>K().isVisible()&&K().isOnline(),[nt,lt,ht,it]=Og(r,B),jt=$.useRef({}).current,N=_t(h)?_t(i.fallback)?ge:i.fallback[B]:h,F=(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=Jt=>{const Vt=Gn(Jt);return delete Vt._k,(()=>{if(!B||!u||K().isPaused())return!1;if(ut&&!_t(y))return y;const xt=_t(N)?Vt.data:N;return _t(xt)||m})()?{isValidating:!0,isLoading:!0,...Vt}:Vt},qt=At(Et),ve=Et===Lt?qt:At(Lt);let oe=qt;return[()=>{const Jt=At(nt());return F(Jt,oe)?(oe.data=Jt.data,oe.isLoading=Jt.isLoading,oe.isValidating=Jt.isValidating,oe.error=Jt.error,oe):(oe=Jt,Jt)},()=>ve]},[r,B]),pt=lp.useSyncExternalStore($.useCallback(Et=>ht(B,(Lt,At)=>{F(At,Lt)||Et()}),[r,B]),Tt[0],Tt[1]),w=z[B]&&z[B].length>0,q=pt.data,J=_t(q)?N&&Ag(N)?jo(N):N:q,P=pt.error,ct=$.useRef(J),ot=_?_t(q)?_t(ct.current)?J:ct.current:q:J,ft=B&&_t(J),Xt=$.useRef(null);!Fl&&lp.useSyncExternalStore(VR,()=>(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(P)?!1:ut&&!_t(y)?y:f?_t(J)?!1:m:_t(J)||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||k.current||K().isPaused())return!1;let At,qt,ve=!0;const oe=Et||{},Jt=!x[B]||!oe.dedupe,Vt=()=>sp?!k.current&&B===I.current&&H.current:B===I.current,yn={isValidating:!1,isLoading:!1},xt=()=>{lt(yn)},$t=()=>{const fe=x[B];fe&&fe[1]===qt&&delete x[B]},ae={isValidating:!0};_t(nt().data)&&(ae.isLoading=!0);try{if(Jt&&(lt(ae),i.loadingTimeout&&_t(nt().data)&&setTimeout(()=>{ve&&Vt()&&K().onLoadingSlow(B,i)},i.loadingTimeout),x[B]=[Lt(Z),$o()]),[At,qt]=x[B],At=await At,Jt&&setTimeout($t,i.dedupingInterval),!x[B]||x[B][1]!==qt)return Jt&&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 xt(),Jt&&Vt()&&K().onDiscarded(B),!1;const Qe=nt().data;yn.data=o(Qe,At)?Qe:At,Jt&&Vt()&&K().onSuccess(At,B,i)}catch(fe){$t();const Qe=K(),{shouldRetryOnError:Wl}=Qe;Qe.isPaused()||(yn.error=fe,Jt&&Vt()&&(Qe.onError(fe,B,Qe),(Wl===!0||sn(Wl)&&Wl(fe))&&(!K().revalidateOnFocus||!K().revalidateOnReconnect||rt())&&Qe.onErrorRetry(fe,B,Qe,$s=>{const pn=z[B];pn&&pn[0]&&pn[0](ip,$s)},{retryCount:(oe.retryCount||0)+1,dedupe:!0})))}return ve=!1,xt(),!0},[B,r]),mn=$.useCallback((...Et)=>wg(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,Ho);let Lt=0;K().revalidateOnFocus&&(Lt=Date.now()+K().focusThrottleInterval);const qt=qR(B,z,(ve,oe={})=>{if(ve==Eg){const Jt=Date.now();K().revalidateOnFocus&&Jt>Lt&&rt()&&(Lt=Jt+K().focusThrottleInterval,Et())}else if(ve==Rg)K().revalidateOnReconnect&&rt()&&Et();else{if(ve==Tg)return _e();if(ve==ip)return _e(oe)}});return k.current=!1,I.current=B,H.current=!0,lt({_k:Z}),De&&(x[B]||(_t(J)||Fl?Et():RR(Et))),()=>{k.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(Ho).then(Lt):Lt()}return Lt(),()=>{Et&&(clearTimeout(Et),Et=-1)}},[p,v,S,B]),$.useDebugValue(ot),f){if(!sp&&Fl&&ft)throw new Error("Fallback data is required when using Suspense in SSR.");ft&&(Q.current=u,X.current=i,k.current=!1);const Et=Y[B],Lt=!_t(Et)&&ft?mn(Et):op;if(jo(Lt),!_t(P)&&ft)throw P;const At=ft?_e(Ho):op;!_t(ot)&&ft&&(At.status="fulfilled",At.value=!0),jo(At)}return{mutate:mn,get data(){return jt.data=!0,ot},get error(){return jt.error=!0,P},get isValidating(){return jt.isValidating=!0,Qn},get isLoading(){return jt.isLoading=!0,Ta}}},GR=Xs.defineProperty(zR,"defaultValue",{value:xg}),oT=HR(YR),XR="/assets/index-DRRCmu5p.css",Dg=DE({head:()=>({meta:[{charSet:"utf-8"},{name:"viewport",content:"width=device-width, initial-scale=1"},{title:"llm-inspector"}],links:[{rel:"stylesheet",href:XR}]}),component:QR});function QR(){return W.jsx(ZR,{children:W.jsx(yg,{})})}function ZR({children:a}){return W.jsxs("html",{lang:"en",className:"dark",children:[W.jsx("head",{children:W.jsx(kE,{})}),W.jsxs("body",{children:[W.jsx(GR,{value:{revalidateOnFocus:!1,revalidateIfStale:!1},children:a}),W.jsx(FE,{})]})]})}const KR="modulepreload",JR=function(a){return"/"+a},fp={},kR=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=JR(p),p in fp)return;fp[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":KR,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)})},FR=()=>kR(()=>import("./index-DfjhkDNi.js"),[]),PR=Qo("/")({component:LE(FR,"component")}),WR=PR.update({id:"/",path:"/",getParentRoute:()=>Dg}),$R={IndexRoute:WR},IR=Dg._addFileChildren($R);function tT(){return YE({routeTree:IR,scrollRestoration:!1})}async function eT(){const a=await tT();let u;return u=[],window.__TSS_START_OPTIONS__={serializationAdapters:u},u.push(mR),a.options.serializationAdapters&&u.push(...a.options.serializationAdapters),a.update({basepath:"",serializationAdapters:u}),a.state.matches.length||await WE(a),a}async function nT(){const a=await eT();return window.$_TSR?.h(),a}let qo;function aT(){return qo||(qo=nT()),W.jsx(rE,{promise:qo,children:a=>W.jsx(QE,{router:a})})}$.startTransition(()=>{iS.hydrateRoot(document,W.jsx($.StrictMode,{children:W.jsx(aT,{})}))});export{qn as R,UR as a,fg as b,lT as c,I0 as d,rT as e,dp as g,W as j,$ as r,oT as u};
|
|
17
|
+
`).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 dR({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 hR(a){const u="/_serverFn/"+a;return Object.assign((...o)=>{const f=vg()?.serverFns?.fetch;return rR(u,o,f??fetch)},{url:u,serverFnMeta:{id:a},[Zo]:!0})}const mR={key:"$TSS/serverfn",test:a=>typeof a!="function"||!(Zo in a)?!1:!!a[Zo],toSerializable:({serverFnMeta:a})=>({functionId:a.id}),fromSerializable:({functionId:a})=>hR(a)};var lp=cg();const Eg=0,Rg=1,Tg=2,ip=3;var up=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(up.call(a,i)&&++r&&!up.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(),Xs=Object,_t=a=>a===ge,sn=a=>typeof a=="function",Gn=(a,u)=>({...a,...u}),Ag=a=>sn(a.then),No={},As={},pf="undefined",lu=typeof window!=pf,Jo=typeof document!=pf,yR=lu&&"Deno"in window,pR=()=>lu&&typeof window.requestAnimationFrame!=pf,Og=(a,u)=>{const i=Bn.get(a);return[()=>!_t(u)&&a.get(u)||No,r=>{if(!_t(u)){const o=a.get(u);u in As||(As[u]=o),i[5](u,Gn(o,r),o||No)}},i[6],()=>!_t(u)&&u in As?As[u]:!_t(u)&&a.get(u)||No]};let ko=!0;const gR=()=>ko,[Fo,Po]=lu&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[Hn,Hn],vR=()=>{const a=Jo&&document.visibilityState;return _t(a)||a!=="hidden"},SR=a=>(Jo&&document.addEventListener("visibilitychange",a),Fo("focus",a),()=>{Jo&&document.removeEventListener("visibilitychange",a),Po("focus",a)}),bR=a=>{const u=()=>{ko=!0,a()},i=()=>{ko=!1};return Fo("online",u),Fo("offline",i),()=>{Po("online",u),Po("offline",i)}},_R={isOnline:gR,isVisible:vR},ER={initFocus:SR,initReconnect:bR},sp=!qn.useId,Fl=!lu||yR,RR=a=>pR()?window.requestAnimationFrame(a):setTimeout(a,1),Ds=Fl?$.useEffect:$.useLayoutEffect,Uo=typeof navigator<"u"&&navigator.connection,rp=!Fl&&Uo&&(["slow-2g","2g"].includes(Uo.effectiveType)||Uo.saveData),Os=new WeakMap,TR=a=>Xs.prototype.toString.call(a),Bo=(a,u)=>a===`[object ${u}]`;let AR=0;const Wo=a=>{const u=typeof a,i=TR(a),r=Bo(i,"Date"),o=Bo(i,"RegExp"),f=Bo(i,"Object");let h,y;if(Xs(a)===a&&!r&&!o){if(h=Os.get(a),h)return h;if(h=++AR+"~",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=Xs.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 OR=0;const $o=()=>++OR;async function wg(...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]=Og(u,R),[x,Y,B,Z]=Bn.get(u),H=()=>{const it=x[R];return(sn(f.revalidate)?f.revalidate(z().data,_):f.revalidate!==!1)&&(delete B[R],delete Z[R],it&&it[0])?it[0](Tg).then(()=>z().data):z().data};if(a.length<3)return H();let k=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(k))try{k=k(ht)}catch(it){I=it,Q=!0}if(k&&Ag(k))if(k=await k.catch(it=>{I=it,Q=!0}),X!==Y[R][0]){if(Q)throw I;return k}else Q&&K&&p(I)&&(h=!0,A({data:ht,_c:ge}));if(h&&!Q)if(sn(h)){const it=h(k,ht);A({data:it,error:ge,_c:ge})}else A({data:k,error:ge,_c:ge});if(Y[R][1]=$o(),Promise.resolve(H()).then(()=>{A({_c:ge})}),Q){if(v)throw I;return}return k}}const cp=(a,u)=>{for(const i in a)a[i][0]&&a[i][0](u)},Mg=(a,u)=>{if(!Bn.has(a)){const i=Gn(ER,u),r=Object.create(null),o=wg.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,cp.bind(ge,r,Eg))),S=i.initReconnect(setTimeout.bind(ge,cp.bind(ge,r,Rg)));f=()=>{v&&v(),S&&S(),Bn.delete(a)}}};return p(),[a,o,p,f]}return[a,Bn.get(a)[4]]},wR=(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)},MR=Ko,[vf,xR]=Mg(new Map),xg=Gn({onLoadingSlow:Hn,onSuccess:Hn,onError:Hn,onErrorRetry:wR,onDiscarded:Hn,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:rp?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:rp?5e3:3e3,compare:MR,isPaused:()=>!1,cache:vf,mutate:xR,fallback:{}},_R),zg=(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({}),zR=a=>{const{value:u}=a,i=$.useContext(Io),r=sn(u),o=$.useMemo(()=>r?u(i):u,[r,i,u]),f=$.useMemo(()=>r?o:zg(i,o),[r,i,o]),h=o&&o.provider,y=$.useRef(ge);h&&!y.current&&(y.current=Mg(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}))},CR="$inf$",Cg=lu&&window.__SWR_DEVTOOLS_USE__,DR=Cg?window.__SWR_DEVTOOLS_USE__:[],LR=()=>{Cg&&(window.__SWR_DEVTOOLS_REACT__=qn)},NR=a=>sn(a[1])?[a[0],a[1],a[2]||{}]:[a[0],null,(a[1]===null?a[2]:a[1])||{}],UR=()=>{const a=$.useContext(Io);return $.useMemo(()=>Gn(xg,a),[a])},BR=a=>(u,i,r)=>a(u,i&&((...f)=>{const[h]=gf(u),[,,,y]=Bn.get(vf);if(h.startsWith(CR))return i(...f);const m=y[h];return _t(m)?i(...f):(delete y[h],m)}),r),jR=DR.concat(BR),HR=a=>function(...i){const r=UR(),[o,f,h]=NR(i),y=zg(r,h);let m=a;const{use:p}=y,v=(p||[]).concat(jR);for(let S=v.length;S--;)m=v[S](m);return m(o,f||y.fetcher||null,y)},qR=(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())}};LR();const jo=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}}),Ho={dedupe:!0},op=Promise.resolve(ge),VR=()=>Hn,YR=(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,x,Y]=Bn.get(r),[B,Z]=gf(a),H=$.useRef(!1),k=$.useRef(!1),I=$.useRef(B),Q=$.useRef(u),X=$.useRef(i),K=()=>X.current,rt=()=>K().isVisible()&&K().isOnline(),[nt,lt,ht,it]=Og(r,B),jt=$.useRef({}).current,N=_t(h)?_t(i.fallback)?ge:i.fallback[B]:h,F=(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=Jt=>{const Vt=Gn(Jt);return delete Vt._k,(()=>{if(!B||!u||K().isPaused())return!1;if(ut&&!_t(y))return y;const xt=_t(N)?Vt.data:N;return _t(xt)||m})()?{isValidating:!0,isLoading:!0,...Vt}:Vt},qt=At(Et),ve=Et===Lt?qt:At(Lt);let oe=qt;return[()=>{const Jt=At(nt());return F(Jt,oe)?(oe.data=Jt.data,oe.isLoading=Jt.isLoading,oe.isValidating=Jt.isValidating,oe.error=Jt.error,oe):(oe=Jt,Jt)},()=>ve]},[r,B]),pt=lp.useSyncExternalStore($.useCallback(Et=>ht(B,(Lt,At)=>{F(At,Lt)||Et()}),[r,B]),Tt[0],Tt[1]),w=z[B]&&z[B].length>0,q=pt.data,J=_t(q)?N&&Ag(N)?jo(N):N:q,P=pt.error,ct=$.useRef(J),ot=_?_t(q)?_t(ct.current)?J:ct.current:q:J,ft=B&&_t(J),Xt=$.useRef(null);!Fl&&lp.useSyncExternalStore(VR,()=>(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(P)?!1:ut&&!_t(y)?y:f?_t(J)?!1:m:_t(J)||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||k.current||K().isPaused())return!1;let At,qt,ve=!0;const oe=Et||{},Jt=!x[B]||!oe.dedupe,Vt=()=>sp?!k.current&&B===I.current&&H.current:B===I.current,yn={isValidating:!1,isLoading:!1},xt=()=>{lt(yn)},$t=()=>{const fe=x[B];fe&&fe[1]===qt&&delete x[B]},ae={isValidating:!0};_t(nt().data)&&(ae.isLoading=!0);try{if(Jt&&(lt(ae),i.loadingTimeout&&_t(nt().data)&&setTimeout(()=>{ve&&Vt()&&K().onLoadingSlow(B,i)},i.loadingTimeout),x[B]=[Lt(Z),$o()]),[At,qt]=x[B],At=await At,Jt&&setTimeout($t,i.dedupingInterval),!x[B]||x[B][1]!==qt)return Jt&&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 xt(),Jt&&Vt()&&K().onDiscarded(B),!1;const Qe=nt().data;yn.data=o(Qe,At)?Qe:At,Jt&&Vt()&&K().onSuccess(At,B,i)}catch(fe){$t();const Qe=K(),{shouldRetryOnError:Wl}=Qe;Qe.isPaused()||(yn.error=fe,Jt&&Vt()&&(Qe.onError(fe,B,Qe),(Wl===!0||sn(Wl)&&Wl(fe))&&(!K().revalidateOnFocus||!K().revalidateOnReconnect||rt())&&Qe.onErrorRetry(fe,B,Qe,$s=>{const pn=z[B];pn&&pn[0]&&pn[0](ip,$s)},{retryCount:(oe.retryCount||0)+1,dedupe:!0})))}return ve=!1,xt(),!0},[B,r]),mn=$.useCallback((...Et)=>wg(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,Ho);let Lt=0;K().revalidateOnFocus&&(Lt=Date.now()+K().focusThrottleInterval);const qt=qR(B,z,(ve,oe={})=>{if(ve==Eg){const Jt=Date.now();K().revalidateOnFocus&&Jt>Lt&&rt()&&(Lt=Jt+K().focusThrottleInterval,Et())}else if(ve==Rg)K().revalidateOnReconnect&&rt()&&Et();else{if(ve==Tg)return _e();if(ve==ip)return _e(oe)}});return k.current=!1,I.current=B,H.current=!0,lt({_k:Z}),De&&(x[B]||(_t(J)||Fl?Et():RR(Et))),()=>{k.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(Ho).then(Lt):Lt()}return Lt(),()=>{Et&&(clearTimeout(Et),Et=-1)}},[p,v,S,B]),$.useDebugValue(ot),f){if(!sp&&Fl&&ft)throw new Error("Fallback data is required when using Suspense in SSR.");ft&&(Q.current=u,X.current=i,k.current=!1);const Et=Y[B],Lt=!_t(Et)&&ft?mn(Et):op;if(jo(Lt),!_t(P)&&ft)throw P;const At=ft?_e(Ho):op;!_t(ot)&&ft&&(At.status="fulfilled",At.value=!0),jo(At)}return{mutate:mn,get data(){return jt.data=!0,ot},get error(){return jt.error=!0,P},get isValidating(){return jt.isValidating=!0,Qn},get isLoading(){return jt.isLoading=!0,Ta}}},GR=Xs.defineProperty(zR,"defaultValue",{value:xg}),oT=HR(YR),XR="/assets/index-DRRCmu5p.css",Dg=DE({head:()=>({meta:[{charSet:"utf-8"},{name:"viewport",content:"width=device-width, initial-scale=1"},{title:"llm-inspector"}],links:[{rel:"stylesheet",href:XR}]}),component:QR});function QR(){return W.jsx(ZR,{children:W.jsx(yg,{})})}function ZR({children:a}){return W.jsxs("html",{lang:"en",className:"dark",children:[W.jsx("head",{children:W.jsx(kE,{})}),W.jsxs("body",{children:[W.jsx(GR,{value:{revalidateOnFocus:!1,revalidateIfStale:!1},children:a}),W.jsx(FE,{})]})]})}const KR="modulepreload",JR=function(a){return"/"+a},fp={},kR=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=JR(p),p in fp)return;fp[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":KR,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)})},FR=()=>kR(()=>import("./index-X7CHS7fS.js"),[]),PR=Qo("/")({component:LE(FR,"component")}),WR=PR.update({id:"/",path:"/",getParentRoute:()=>Dg}),$R={IndexRoute:WR},IR=Dg._addFileChildren($R);function tT(){return YE({routeTree:IR,scrollRestoration:!1})}async function eT(){const a=await tT();let u;return u=[],window.__TSS_START_OPTIONS__={serializationAdapters:u},u.push(mR),a.options.serializationAdapters&&u.push(...a.options.serializationAdapters),a.update({basepath:"",serializationAdapters:u}),a.state.matches.length||await WE(a),a}async function nT(){const a=await eT();return window.$_TSR?.h(),a}let qo;function aT(){return qo||(qo=nT()),W.jsx(rE,{promise:qo,children:a=>W.jsx(QE,{router:a})})}$.startTransition(()=>{iS.hydrateRoot(document,W.jsx($.StrictMode,{children:W.jsx(aT,{})}))});export{qn as R,UR as a,fg as b,lT as c,I0 as d,rT as e,dp as g,W as j,$ as r,oT as u};
|
|
@@ -394,16 +394,16 @@ const __iconNode = [
|
|
|
394
394
|
];
|
|
395
395
|
const Zap = createLucideIcon("zap", __iconNode);
|
|
396
396
|
export {
|
|
397
|
-
|
|
398
|
-
|
|
397
|
+
WifiOff as A,
|
|
398
|
+
ArrowUp as B,
|
|
399
399
|
Check as C,
|
|
400
400
|
Download as D,
|
|
401
401
|
Equal as E,
|
|
402
402
|
FileTerminal as F,
|
|
403
403
|
GitCompareArrows as G,
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
404
|
+
ArrowDown as H,
|
|
405
|
+
TriangleAlert as I,
|
|
406
|
+
CircleStop as J,
|
|
407
407
|
Brain as K,
|
|
408
408
|
LoaderCircle as L,
|
|
409
409
|
MessageSquare as M,
|
|
@@ -435,11 +435,11 @@ export {
|
|
|
435
435
|
CircleCheckBig as q,
|
|
436
436
|
Globe as r,
|
|
437
437
|
Radio as s,
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
438
|
+
ChevronsUp as t,
|
|
439
|
+
ChevronsDown as u,
|
|
440
|
+
CircleQuestionMark as v,
|
|
441
|
+
Server as w,
|
|
442
|
+
Gauge as x,
|
|
443
|
+
Lock as y,
|
|
444
|
+
Wifi as z
|
|
445
445
|
};
|
|
@@ -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, R as RuntimeConfigSchema, r as requestFormatForPath, c as createPendingProviderTestResults, P as ProviderTestResultsSchema, b as createFailedProviderTestResults, d as ProviderConfigSchema, s as stripClaudeCodeBillingHeader, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, a as AnthropicRequestSchema } from "./router-
|
|
2
|
+
import { C as CapturedLogSchema, R as RuntimeConfigSchema, r as requestFormatForPath, c as createPendingProviderTestResults, P as ProviderTestResultsSchema, b as createFailedProviderTestResults, d as ProviderConfigSchema, s as stripClaudeCodeBillingHeader, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, a as AnthropicRequestSchema } from "./router-CNM9Kbi0.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";
|
|
@@ -10,7 +10,7 @@ import { d as diffJson, a as diffLines } from "../_libs/diff.mjs";
|
|
|
10
10
|
import { u as useVirtualizer } from "../_libs/tanstack__react-virtual.mjs";
|
|
11
11
|
import { R as Root2, T as Trigger, I as Icon, V as Value, P as Portal, C as Content2, a as Viewport, b as Item, c as ItemIndicator, d as ItemText, S as ScrollUpButton, e as ScrollDownButton } from "../_libs/radix-ui__react-select.mjs";
|
|
12
12
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
13
|
-
import { C as Check, X, D as Download, S as Settings, a as ChevronDown, U as Upload, b as Scan, P as Plus, c as Copy, d as CircleAlert, e as ChevronUp, L as LoaderCircle, f as ChevronRight, g as User, h as Clock, M as MessageSquare, Z as Zap, T as Trash2, R as Rows3, i as Columns2, j as Minus, k as Pencil, E as Equal, l as EyeOff, m as Eye, n as ExternalLink, o as RotateCw, G as GitCompareArrows, p as RotateCcw, q as CircleCheckBig, W as Wrench, r as Globe, F as FileTerminal, s as Radio, t as
|
|
13
|
+
import { C as Check, X, D as Download, S as Settings, a as ChevronDown, U as Upload, b as Scan, P as Plus, c as Copy, d as CircleAlert, e as ChevronUp, L as LoaderCircle, f as ChevronRight, g as User, h as Clock, M as MessageSquare, Z as Zap, T as Trash2, R as Rows3, i as Columns2, j as Minus, k as Pencil, E as Equal, l as EyeOff, m as Eye, n as ExternalLink, o as RotateCw, G as GitCompareArrows, p as RotateCcw, q as CircleCheckBig, W as Wrench, r as Globe, F as FileTerminal, s as Radio, t as ChevronsUp, u as ChevronsDown, v as CircleQuestionMark, w as Server, x as Gauge, y as Lock, z as Wifi, A as WifiOff, B as ArrowUp, H as ArrowDown, I as TriangleAlert, J as CircleStop, K as Brain, N as Terminal } from "../_libs/lucide-react.mjs";
|
|
14
14
|
import { M as Markdown } from "../_libs/react-markdown.mjs";
|
|
15
15
|
import { u as union, d as object, a as array, l as literal, b as string, n as number, c as boolean, _ as _enum } from "../_libs/zod.mjs";
|
|
16
16
|
import { R as Root2$1, L as List, T as Trigger$2, C as Content$1 } from "../_libs/radix-ui__react-tabs.mjs";
|
|
@@ -390,7 +390,7 @@ async function exportLogsAsZip(logs) {
|
|
|
390
390
|
document.body.removeChild(anchor);
|
|
391
391
|
URL.revokeObjectURL(url);
|
|
392
392
|
}
|
|
393
|
-
const version = "1.16.
|
|
393
|
+
const version = "1.16.4";
|
|
394
394
|
const packageJson = {
|
|
395
395
|
version
|
|
396
396
|
};
|
|
@@ -1298,27 +1298,93 @@ function classifyValue(value) {
|
|
|
1298
1298
|
function isExpandable(value) {
|
|
1299
1299
|
return value !== null && (Array.isArray(value) || typeof value === "object");
|
|
1300
1300
|
}
|
|
1301
|
-
function getPropertyValue(obj, key) {
|
|
1302
|
-
const descriptor = Object.getOwnPropertyDescriptor(obj, key);
|
|
1303
|
-
if (descriptor === void 0) return void 0;
|
|
1304
|
-
return descriptor.value;
|
|
1305
|
-
}
|
|
1306
1301
|
function getEntries(value) {
|
|
1307
1302
|
if (Array.isArray(value)) {
|
|
1308
1303
|
return value.map((item, index) => [String(index), item]);
|
|
1309
1304
|
}
|
|
1310
1305
|
if (typeof value === "object" && value !== null) {
|
|
1311
|
-
return Object.
|
|
1312
|
-
const raw = getPropertyValue(value, key);
|
|
1313
|
-
return [key, safeJsonValue(raw)];
|
|
1314
|
-
});
|
|
1306
|
+
return Object.entries(value);
|
|
1315
1307
|
}
|
|
1316
1308
|
return [];
|
|
1317
1309
|
}
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1310
|
+
const JSON_FULL_EXPANSION_NODE_LIMIT = 1e3;
|
|
1311
|
+
const JSON_LARGE_EXPANSION_DEPTH = 2;
|
|
1312
|
+
function countJsonNodes(value, limit = Number.POSITIVE_INFINITY) {
|
|
1313
|
+
let count = 0;
|
|
1314
|
+
const pending = [value];
|
|
1315
|
+
while (pending.length > 0) {
|
|
1316
|
+
const current = pending.pop();
|
|
1317
|
+
if (current === void 0) continue;
|
|
1318
|
+
count += 1;
|
|
1319
|
+
if (count > limit) return count;
|
|
1320
|
+
if (!isExpandable(current)) continue;
|
|
1321
|
+
for (const [, child] of getEntries(current)) {
|
|
1322
|
+
pending.push(child);
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
return count;
|
|
1326
|
+
}
|
|
1327
|
+
function getJsonExpansionPolicy(value) {
|
|
1328
|
+
const countedNodes = countJsonNodes(value, JSON_FULL_EXPANSION_NODE_LIMIT);
|
|
1329
|
+
const limited = countedNodes > JSON_FULL_EXPANSION_NODE_LIMIT;
|
|
1330
|
+
return {
|
|
1331
|
+
depth: limited ? JSON_LARGE_EXPANSION_DEPTH : Number.POSITIVE_INFINITY,
|
|
1332
|
+
limited,
|
|
1333
|
+
countedNodes
|
|
1334
|
+
};
|
|
1335
|
+
}
|
|
1336
|
+
function useJsonBulkExpansion(text) {
|
|
1337
|
+
const parsed = reactExports.useMemo(() => text === null ? null : parseJsonText(text), [text]);
|
|
1338
|
+
const parsedData = parsed?.kind === "json" ? parsed.data : null;
|
|
1339
|
+
const policy = reactExports.useMemo(
|
|
1340
|
+
() => parsedData === null ? null : getJsonExpansionPolicy(parsedData),
|
|
1341
|
+
[parsedData]
|
|
1342
|
+
);
|
|
1343
|
+
const [isExpanded, setIsExpanded] = reactExports.useState(false);
|
|
1344
|
+
const [bulkDepth, setBulkDepth] = reactExports.useState(0);
|
|
1345
|
+
const [bulkRevision, setBulkRevision] = reactExports.useState(0);
|
|
1346
|
+
const [isPending, startTransition] = reactExports.useTransition();
|
|
1347
|
+
const toggle = reactExports.useCallback(() => {
|
|
1348
|
+
const nextExpanded = !isExpanded;
|
|
1349
|
+
const targetDepth = nextExpanded && policy !== null ? policy.depth : 0;
|
|
1350
|
+
startTransition(() => {
|
|
1351
|
+
setIsExpanded(nextExpanded);
|
|
1352
|
+
setBulkDepth(targetDepth);
|
|
1353
|
+
setBulkRevision((current) => current + 1);
|
|
1354
|
+
});
|
|
1355
|
+
}, [isExpanded, policy]);
|
|
1356
|
+
return { parsedData, policy, isExpanded, toggle, isPending, bulkDepth, bulkRevision };
|
|
1357
|
+
}
|
|
1358
|
+
function JsonExpansionButton({
|
|
1359
|
+
policy,
|
|
1360
|
+
isExpanded,
|
|
1361
|
+
isPending,
|
|
1362
|
+
onToggle
|
|
1363
|
+
}) {
|
|
1364
|
+
if (policy === null) return null;
|
|
1365
|
+
const label = isPending ? "Updating..." : isExpanded ? "Collapse all" : policy.limited ? `Expand ${JSON_LARGE_EXPANSION_DEPTH} levels` : "Expand all";
|
|
1366
|
+
const tooltip = policy.limited && !isExpanded ? `Large JSON detected; expand ${JSON_LARGE_EXPANSION_DEPTH} levels to protect rendering performance` : isExpanded ? "Collapse all JSON nodes" : "Expand all JSON nodes";
|
|
1367
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
1368
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1369
|
+
Button,
|
|
1370
|
+
{
|
|
1371
|
+
variant: "outline",
|
|
1372
|
+
size: "sm",
|
|
1373
|
+
className: "h-7 text-xs",
|
|
1374
|
+
onClick: (e) => {
|
|
1375
|
+
e.stopPropagation();
|
|
1376
|
+
onToggle();
|
|
1377
|
+
},
|
|
1378
|
+
disabled: isPending,
|
|
1379
|
+
"aria-pressed": isExpanded,
|
|
1380
|
+
children: [
|
|
1381
|
+
isExpanded ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronsUp, { className: "size-3 mr-1" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronsDown, { className: "size-3 mr-1" }),
|
|
1382
|
+
label
|
|
1383
|
+
]
|
|
1384
|
+
}
|
|
1385
|
+
) }),
|
|
1386
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: tooltip })
|
|
1387
|
+
] });
|
|
1322
1388
|
}
|
|
1323
1389
|
const STRING_TRUNCATE_LIMIT = 120;
|
|
1324
1390
|
function StringValue({ text }) {
|
|
@@ -1444,12 +1510,7 @@ function CopyButton$1({ value }) {
|
|
|
1444
1510
|
}
|
|
1445
1511
|
);
|
|
1446
1512
|
}
|
|
1447
|
-
function hasExpandableDescendant(value) {
|
|
1448
|
-
if (!isExpandable(value)) return false;
|
|
1449
|
-
return getEntries(value).some(([, v]) => isExpandable(v));
|
|
1450
|
-
}
|
|
1451
1513
|
function ExpandCollapseButton({
|
|
1452
|
-
allExpanded,
|
|
1453
1514
|
onClick
|
|
1454
1515
|
}) {
|
|
1455
1516
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -1458,8 +1519,8 @@ function ExpandCollapseButton({
|
|
|
1458
1519
|
type: "button",
|
|
1459
1520
|
onClick,
|
|
1460
1521
|
className: "opacity-0 group-hover/row:opacity-100 hover:bg-muted p-0.5 rounded transition-opacity shrink-0",
|
|
1461
|
-
title:
|
|
1462
|
-
children:
|
|
1522
|
+
title: "Expand all descendants",
|
|
1523
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronsDown, { className: "size-3.5 text-muted-foreground" })
|
|
1463
1524
|
}
|
|
1464
1525
|
);
|
|
1465
1526
|
}
|
|
@@ -1473,27 +1534,36 @@ const JsonNode = reactExports.memo(function JsonNode2({
|
|
|
1473
1534
|
const [expanded, setExpanded] = reactExports.useState(level < defaultExpandDepth);
|
|
1474
1535
|
const [childResetKey, setChildResetKey] = reactExports.useState(0);
|
|
1475
1536
|
const [childDepthOverride, setChildDepthOverride] = reactExports.useState(null);
|
|
1476
|
-
const [allExpanded, setAllExpanded] = reactExports.useState(false);
|
|
1477
1537
|
const expandable = isExpandable(value);
|
|
1538
|
+
const fullyExpanded = childDepthOverride === Number.POSITIVE_INFINITY;
|
|
1539
|
+
const entries = reactExports.useMemo(() => getEntries(value), [value]);
|
|
1540
|
+
const hasExpandableChild = reactExports.useMemo(
|
|
1541
|
+
() => entries.some(([, child]) => isExpandable(child)),
|
|
1542
|
+
[entries]
|
|
1543
|
+
);
|
|
1478
1544
|
const dataType = classifyValue(value);
|
|
1479
1545
|
const openBracket = dataType === "array" ? "[" : "{";
|
|
1480
1546
|
const closeBracket = dataType === "array" ? "]" : "}";
|
|
1481
|
-
function
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1547
|
+
function expandAllDeep() {
|
|
1548
|
+
setExpanded(true);
|
|
1549
|
+
setChildDepthOverride(Number.POSITIVE_INFINITY);
|
|
1550
|
+
setChildResetKey((k) => k + 1);
|
|
1551
|
+
}
|
|
1552
|
+
function collapseToDefault() {
|
|
1553
|
+
setExpanded(false);
|
|
1554
|
+
setChildDepthOverride(0);
|
|
1555
|
+
setChildResetKey((k) => k + 1);
|
|
1556
|
+
}
|
|
1557
|
+
function handleRowToggle() {
|
|
1558
|
+
if (fullyExpanded) {
|
|
1559
|
+
collapseToDefault();
|
|
1487
1560
|
} else {
|
|
1488
|
-
setExpanded(
|
|
1489
|
-
setChildDepthOverride(Number.POSITIVE_INFINITY);
|
|
1490
|
-
setChildResetKey((k) => k + 1);
|
|
1491
|
-
setAllExpanded(true);
|
|
1561
|
+
setExpanded(!expanded);
|
|
1492
1562
|
}
|
|
1493
1563
|
}
|
|
1494
1564
|
function handleExpandAll(e) {
|
|
1495
1565
|
e.stopPropagation();
|
|
1496
|
-
|
|
1566
|
+
expandAllDeep();
|
|
1497
1567
|
}
|
|
1498
1568
|
const effectiveChildDepth = childDepthOverride ?? defaultExpandDepth;
|
|
1499
1569
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: cn(level > 0 && "border-l border-border/50 ml-2"), children: [
|
|
@@ -1504,19 +1574,14 @@ const JsonNode = reactExports.memo(function JsonNode2({
|
|
|
1504
1574
|
"flex items-start gap-1 py-0.5 px-1 -ml-1 rounded-sm group/row",
|
|
1505
1575
|
expandable && "cursor-pointer hover:bg-muted/50"
|
|
1506
1576
|
),
|
|
1507
|
-
onClick: expandable ?
|
|
1508
|
-
if (expanded) {
|
|
1509
|
-
setAllExpanded(false);
|
|
1510
|
-
}
|
|
1511
|
-
setExpanded(!expanded);
|
|
1512
|
-
} : void 0,
|
|
1577
|
+
onClick: expandable ? handleRowToggle : void 0,
|
|
1513
1578
|
onKeyDown: expandable ? (e) => {
|
|
1514
1579
|
if (e.key === "Enter" || e.key === " ") {
|
|
1515
1580
|
e.preventDefault();
|
|
1516
|
-
|
|
1581
|
+
handleRowToggle();
|
|
1517
1582
|
}
|
|
1518
1583
|
} : void 0,
|
|
1519
|
-
onDoubleClick: expandable &&
|
|
1584
|
+
onDoubleClick: expandable && hasExpandableChild ? () => expandAllDeep() : void 0,
|
|
1520
1585
|
role: expandable ? "button" : void 0,
|
|
1521
1586
|
tabIndex: expandable ? 0 : void 0,
|
|
1522
1587
|
children: [
|
|
@@ -1527,20 +1592,20 @@ const JsonNode = reactExports.memo(function JsonNode2({
|
|
|
1527
1592
|
openBracket,
|
|
1528
1593
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-muted-foreground/60 text-xs", children: [
|
|
1529
1594
|
" ",
|
|
1530
|
-
|
|
1595
|
+
entries.length,
|
|
1531
1596
|
" ",
|
|
1532
|
-
|
|
1597
|
+
entries.length === 1 ? "item" : "items",
|
|
1533
1598
|
" ",
|
|
1534
1599
|
closeBracket
|
|
1535
1600
|
] })
|
|
1536
1601
|
] }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "min-w-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(PrimitiveValue, { value }) }),
|
|
1537
|
-
expandable &&
|
|
1602
|
+
expandable && hasExpandableChild && !fullyExpanded && /* @__PURE__ */ jsxRuntimeExports.jsx(ExpandCollapseButton, { onClick: handleExpandAll }),
|
|
1538
1603
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CopyButton$1, { value })
|
|
1539
1604
|
]
|
|
1540
1605
|
}
|
|
1541
1606
|
),
|
|
1542
1607
|
expandable && expanded && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "pl-4", children: [
|
|
1543
|
-
|
|
1608
|
+
entries.map(([key, childValue]) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1544
1609
|
JsonNode2,
|
|
1545
1610
|
{
|
|
1546
1611
|
name: key,
|
|
@@ -1557,11 +1622,16 @@ const JsonNode = reactExports.memo(function JsonNode2({
|
|
|
1557
1622
|
});
|
|
1558
1623
|
function JsonViewer({
|
|
1559
1624
|
data,
|
|
1560
|
-
defaultExpandDepth =
|
|
1625
|
+
defaultExpandDepth = 0,
|
|
1561
1626
|
className,
|
|
1562
|
-
showCopy = false
|
|
1627
|
+
showCopy = false,
|
|
1628
|
+
bulkDepth: controlledBulkDepth,
|
|
1629
|
+
bulkRevision: controlledBulkRevision
|
|
1563
1630
|
}) {
|
|
1564
1631
|
const expandable = isExpandable(data);
|
|
1632
|
+
const entries = reactExports.useMemo(() => getEntries(data), [data]);
|
|
1633
|
+
const bulkDepth = controlledBulkDepth ?? defaultExpandDepth;
|
|
1634
|
+
const bulkRevision = controlledBulkRevision ?? 0;
|
|
1565
1635
|
if (!expandable) {
|
|
1566
1636
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: cn("font-mono text-xs leading-relaxed", className), children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
1567
1637
|
/* @__PURE__ */ jsxRuntimeExports.jsx(PrimitiveValue, { value: data }),
|
|
@@ -1571,39 +1641,46 @@ function JsonViewer({
|
|
|
1571
1641
|
const dataType = classifyValue(data);
|
|
1572
1642
|
const isArray = dataType === "array";
|
|
1573
1643
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: cn("font-mono text-xs leading-relaxed", className), children: [
|
|
1574
|
-
showCopy && /* @__PURE__ */ jsxRuntimeExports.jsx(CopyValueButton, { value: data }),
|
|
1575
|
-
|
|
1644
|
+
showCopy && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mb-2 flex items-center justify-end gap-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx(CopyValueButton, { value: data }) }),
|
|
1645
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: entries.map(([key, childValue]) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1576
1646
|
JsonNode,
|
|
1577
1647
|
{
|
|
1578
1648
|
name: key,
|
|
1579
1649
|
value: childValue,
|
|
1580
1650
|
level: 0,
|
|
1581
|
-
defaultExpandDepth,
|
|
1651
|
+
defaultExpandDepth: bulkDepth,
|
|
1582
1652
|
isArrayItem: isArray
|
|
1583
1653
|
},
|
|
1584
1654
|
key
|
|
1585
|
-
))
|
|
1655
|
+
)) }, bulkRevision)
|
|
1586
1656
|
] }) });
|
|
1587
1657
|
}
|
|
1588
|
-
function
|
|
1658
|
+
function parseJsonText(text) {
|
|
1659
|
+
try {
|
|
1660
|
+
const parsed = JSON.parse(text);
|
|
1661
|
+
return { kind: "json", data: safeJsonValue(parsed) };
|
|
1662
|
+
} catch {
|
|
1663
|
+
return { kind: "text" };
|
|
1664
|
+
}
|
|
1665
|
+
}
|
|
1666
|
+
const JsonViewerFromString = reactExports.memo(function JsonViewerFromString2({
|
|
1589
1667
|
text,
|
|
1590
|
-
defaultExpandDepth =
|
|
1668
|
+
defaultExpandDepth = 0,
|
|
1591
1669
|
className
|
|
1592
1670
|
}) {
|
|
1593
|
-
|
|
1594
|
-
|
|
1671
|
+
const parsed = reactExports.useMemo(() => parseJsonText(text), [text]);
|
|
1672
|
+
if (parsed.kind === "json") {
|
|
1595
1673
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1596
1674
|
JsonViewer,
|
|
1597
1675
|
{
|
|
1598
|
-
data:
|
|
1676
|
+
data: parsed.data,
|
|
1599
1677
|
defaultExpandDepth,
|
|
1600
1678
|
className
|
|
1601
1679
|
}
|
|
1602
1680
|
);
|
|
1603
|
-
} catch {
|
|
1604
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: cn("font-mono text-xs whitespace-pre-wrap break-words", className), children: text });
|
|
1605
1681
|
}
|
|
1606
|
-
}
|
|
1682
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: cn("font-mono text-xs whitespace-pre-wrap break-words", className), children: text });
|
|
1683
|
+
});
|
|
1607
1684
|
function safeJsonValue(value) {
|
|
1608
1685
|
if (value === null || value === void 0) return null;
|
|
1609
1686
|
switch (typeof value) {
|
|
@@ -2378,7 +2455,7 @@ const ToolUseBlock = reactExports.memo(function ToolUseBlock2({
|
|
|
2378
2455
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1" }),
|
|
2379
2456
|
open ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-3 text-muted-foreground" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { className: "size-3 text-muted-foreground" })
|
|
2380
2457
|
] }),
|
|
2381
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(CollapsibleContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-3 pb-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "max-h-[60vh]", children: /* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewer, { data: safeJsonValue(input), defaultExpandDepth:
|
|
2458
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(CollapsibleContent, { children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-3 pb-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ScrollArea, { className: "max-h-[60vh]", children: /* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewer, { data: safeJsonValue(input), defaultExpandDepth: 0 }) }) }) })
|
|
2382
2459
|
] }) });
|
|
2383
2460
|
});
|
|
2384
2461
|
const ResponseContentBlockRenderer = reactExports.memo(function ResponseContentBlockRenderer2({
|
|
@@ -2463,7 +2540,7 @@ function OpenAIToolCallBlock({ call }) {
|
|
|
2463
2540
|
// JSON.parse failed — show the raw string so the user can
|
|
2464
2541
|
// still see what the model tried to call.
|
|
2465
2542
|
/* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: "font-mono text-xs whitespace-pre-wrap break-words text-rose-300/90", children: call.function.arguments })
|
|
2466
|
-
) : /* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewer, { data: safeJsonValue(parsed), defaultExpandDepth:
|
|
2543
|
+
) : /* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewer, { data: safeJsonValue(parsed), defaultExpandDepth: 0 }) }) }) })
|
|
2467
2544
|
] }) });
|
|
2468
2545
|
}
|
|
2469
2546
|
const OpenAIResponseView = reactExports.memo(function OpenAIResponseView2({
|
|
@@ -2996,7 +3073,7 @@ const StreamingChunkSequence = reactExports.memo(function StreamingChunkSequence
|
|
|
2996
3073
|
] }),
|
|
2997
3074
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] text-muted-foreground font-mono", children: chunk.type })
|
|
2998
3075
|
] }),
|
|
2999
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewer, { data: chunk, defaultExpandDepth:
|
|
3076
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewer, { data: chunk, defaultExpandDepth: 0, showCopy: true })
|
|
3000
3077
|
] }, chunk.index)) })
|
|
3001
3078
|
] }, group.index);
|
|
3002
3079
|
})
|
|
@@ -3155,6 +3232,8 @@ const LogEntry = reactExports.memo(function({
|
|
|
3155
3232
|
const requestCopy = useCopyFeedback(displayedRequestBody);
|
|
3156
3233
|
const rawRequestCopy = useCopyFeedback(log.rawRequestBody);
|
|
3157
3234
|
const responseCopy = useCopyFeedback(log.responseText);
|
|
3235
|
+
const requestExpansion = useJsonBulkExpansion(displayedRequestBody);
|
|
3236
|
+
const rawRequestExpansion = useJsonBulkExpansion(log.rawRequestBody);
|
|
3158
3237
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipProvider, { children: [
|
|
3159
3238
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border border-border rounded-lg mb-1 overflow-hidden", children: [
|
|
3160
3239
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -3179,16 +3258,34 @@ const LogEntry = reactExports.memo(function({
|
|
|
3179
3258
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TabsTrigger, { value: "parsed", children: "Response" })
|
|
3180
3259
|
] }),
|
|
3181
3260
|
shouldShowRawRequestTab(resolvedFormat, viewMode, strip) && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "raw-request", children: activeTab === "raw-request" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-4 py-3", children: [
|
|
3182
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
3183
|
-
|
|
3261
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-end gap-2 mb-2", children: [
|
|
3262
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3263
|
+
JsonExpansionButton,
|
|
3264
|
+
{
|
|
3265
|
+
policy: rawRequestExpansion.policy,
|
|
3266
|
+
isExpanded: rawRequestExpansion.isExpanded,
|
|
3267
|
+
isPending: rawRequestExpansion.isPending,
|
|
3268
|
+
onToggle: rawRequestExpansion.toggle
|
|
3269
|
+
}
|
|
3270
|
+
),
|
|
3271
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3272
|
+
CopyButton,
|
|
3273
|
+
{
|
|
3274
|
+
text: log.rawRequestBody,
|
|
3275
|
+
label: "Copy",
|
|
3276
|
+
copied: rawRequestCopy.copied,
|
|
3277
|
+
onCopy: rawRequestCopy.copy
|
|
3278
|
+
}
|
|
3279
|
+
)
|
|
3280
|
+
] }),
|
|
3281
|
+
log.rawRequestBody === null ? /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-muted-foreground italic", children: "No request body" }) : rawRequestExpansion.parsedData !== null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3282
|
+
JsonViewer,
|
|
3184
3283
|
{
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
onCopy: rawRequestCopy.copy
|
|
3284
|
+
data: rawRequestExpansion.parsedData,
|
|
3285
|
+
bulkDepth: rawRequestExpansion.bulkDepth,
|
|
3286
|
+
bulkRevision: rawRequestExpansion.bulkRevision
|
|
3189
3287
|
}
|
|
3190
|
-
) })
|
|
3191
|
-
log.rawRequestBody !== null ? /* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewerFromString, { text: log.rawRequestBody, defaultExpandDepth: 1 }) : /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-muted-foreground italic", children: "No request body" })
|
|
3288
|
+
) : /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: "font-mono text-xs whitespace-pre-wrap break-words", children: log.rawRequestBody })
|
|
3192
3289
|
] }) }),
|
|
3193
3290
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "request", children: activeTab === "request" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-4 py-3", children: [
|
|
3194
3291
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-end gap-2 mb-2", children: [
|
|
@@ -3245,11 +3342,20 @@ const LogEntry = reactExports.memo(function({
|
|
|
3245
3342
|
) }),
|
|
3246
3343
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: "Re-send this request to the provider" })
|
|
3247
3344
|
] }),
|
|
3345
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3346
|
+
JsonExpansionButton,
|
|
3347
|
+
{
|
|
3348
|
+
policy: requestExpansion.policy,
|
|
3349
|
+
isExpanded: requestExpansion.isExpanded,
|
|
3350
|
+
isPending: requestExpansion.isPending,
|
|
3351
|
+
onToggle: requestExpansion.toggle
|
|
3352
|
+
}
|
|
3353
|
+
),
|
|
3248
3354
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3249
3355
|
CopyButton,
|
|
3250
3356
|
{
|
|
3251
3357
|
text: displayedRequestBody,
|
|
3252
|
-
label: "Copy
|
|
3358
|
+
label: "Copy",
|
|
3253
3359
|
copied: requestCopy.copied,
|
|
3254
3360
|
onCopy: requestCopy.copy
|
|
3255
3361
|
}
|
|
@@ -3262,7 +3368,14 @@ const LogEntry = reactExports.memo(function({
|
|
|
3262
3368
|
displayedBody: displayedRequestBody,
|
|
3263
3369
|
emptyLabel: "No transformation applied — raw and sent request bodies are identical."
|
|
3264
3370
|
}
|
|
3265
|
-
) : displayedRequestBody
|
|
3371
|
+
) : displayedRequestBody === null ? /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-muted-foreground italic", children: "No request body" }) : requestExpansion.parsedData !== null ? /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3372
|
+
JsonViewer,
|
|
3373
|
+
{
|
|
3374
|
+
data: requestExpansion.parsedData,
|
|
3375
|
+
bulkDepth: requestExpansion.bulkDepth,
|
|
3376
|
+
bulkRevision: requestExpansion.bulkRevision
|
|
3377
|
+
}
|
|
3378
|
+
) : /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: "font-mono text-xs whitespace-pre-wrap break-words", children: displayedRequestBody })
|
|
3266
3379
|
] }) }),
|
|
3267
3380
|
viewMode === "full" && /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "headers", children: activeTab === "headers" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-4 py-3", children: [
|
|
3268
3381
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-end gap-2 mb-2", children: shouldShowHeadersDiffButton(
|
|
@@ -3309,12 +3422,12 @@ const LogEntry = reactExports.memo(function({
|
|
|
3309
3422
|
CopyButton,
|
|
3310
3423
|
{
|
|
3311
3424
|
text: log.responseText,
|
|
3312
|
-
label: "Copy
|
|
3425
|
+
label: "Copy",
|
|
3313
3426
|
copied: responseCopy.copied,
|
|
3314
3427
|
onCopy: responseCopy.copy
|
|
3315
3428
|
}
|
|
3316
3429
|
) }),
|
|
3317
|
-
log.responseText !== null ? /* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewerFromString, { text: log.responseText, defaultExpandDepth:
|
|
3430
|
+
log.responseText !== null ? /* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewerFromString, { text: log.responseText, defaultExpandDepth: 0 }) : /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-muted-foreground italic", children: "No response" }),
|
|
3318
3431
|
log.streaming === true && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3319
3432
|
StreamingChunkSequence,
|
|
3320
3433
|
{
|
|
@@ -5906,7 +6019,7 @@ function EqualRunRow({
|
|
|
5906
6019
|
),
|
|
5907
6020
|
expanded && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ml-5 mt-1 mb-2 space-y-2 pr-2", children: ops.map((op) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border border-border/50 rounded p-2 bg-muted/20", children: [
|
|
5908
6021
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-mono text-xs text-muted-foreground mb-1", children: op.path }),
|
|
5909
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewerFromString, { text: nodeToJsonString(op.value), defaultExpandDepth:
|
|
6022
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewerFromString, { text: nodeToJsonString(op.value), defaultExpandDepth: 0 })
|
|
5910
6023
|
] }, op.path)) })
|
|
5911
6024
|
] });
|
|
5912
6025
|
}
|
|
@@ -5997,8 +6110,8 @@ function UnifiedOpRow({
|
|
|
5997
6110
|
"shrink-0 p-1 rounded transition-colors cursor-pointer inline-flex items-center justify-center",
|
|
5998
6111
|
justCopied ? "text-emerald-500" : "text-muted-foreground/50 hover:text-foreground hover:bg-muted"
|
|
5999
6112
|
),
|
|
6000
|
-
"aria-label": justCopied ? "Copied" : "Copy
|
|
6001
|
-
title: justCopied ? "Copied!" : "Copy
|
|
6113
|
+
"aria-label": justCopied ? "Copied" : "Copy",
|
|
6114
|
+
title: justCopied ? "Copied!" : "Copy",
|
|
6002
6115
|
children: justCopied ? /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { className: "size-3" })
|
|
6003
6116
|
}
|
|
6004
6117
|
)
|
|
@@ -6024,7 +6137,7 @@ function UnifiedOpRow({
|
|
|
6024
6137
|
}
|
|
6025
6138
|
function ExpandedSubtree({ op }) {
|
|
6026
6139
|
if (op.kind === "added" || op.kind === "removed") {
|
|
6027
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "pl-5 mt-2 border border-border/50 rounded p-2 bg-muted/20", children: /* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewerFromString, { text: nodeToJsonString(op.value), defaultExpandDepth:
|
|
6140
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "pl-5 mt-2 border border-border/50 rounded p-2 bg-muted/20", children: /* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewerFromString, { text: nodeToJsonString(op.value), defaultExpandDepth: 0 }) });
|
|
6028
6141
|
}
|
|
6029
6142
|
const leftIsStructured = op.left.kind === "object" || op.left.kind === "array";
|
|
6030
6143
|
const rightIsStructured = op.right.kind === "object" || op.right.kind === "array";
|
|
@@ -6034,11 +6147,11 @@ function ExpandedSubtree({ op }) {
|
|
|
6034
6147
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "pl-5 mt-2 grid grid-cols-1 md:grid-cols-2 gap-2", children: [
|
|
6035
6148
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border border-rose-500/30 rounded p-2 bg-rose-500/5", children: [
|
|
6036
6149
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-[10px] uppercase tracking-wider text-rose-500 mb-1", children: "Old" }),
|
|
6037
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewerFromString, { text: nodeToJsonString(op.left), defaultExpandDepth:
|
|
6150
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewerFromString, { text: nodeToJsonString(op.left), defaultExpandDepth: 0 })
|
|
6038
6151
|
] }),
|
|
6039
6152
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border border-emerald-500/30 rounded p-2 bg-emerald-500/5", children: [
|
|
6040
6153
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-[10px] uppercase tracking-wider text-emerald-500 mb-1", children: "New" }),
|
|
6041
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewerFromString, { text: nodeToJsonString(op.right), defaultExpandDepth:
|
|
6154
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(JsonViewerFromString, { text: nodeToJsonString(op.right), defaultExpandDepth: 0 })
|
|
6042
6155
|
] })
|
|
6043
6156
|
] });
|
|
6044
6157
|
}
|
|
@@ -198,7 +198,7 @@ function getResponse() {
|
|
|
198
198
|
return event.res;
|
|
199
199
|
}
|
|
200
200
|
async function getStartManifest(matchedRoutes) {
|
|
201
|
-
const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-
|
|
201
|
+
const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-BWfLeIsC.mjs");
|
|
202
202
|
const startManifest = tsrStartManifest();
|
|
203
203
|
const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
|
|
204
204
|
rootRoute.assets = rootRoute.assets || [];
|
|
@@ -767,7 +767,7 @@ let entriesPromise;
|
|
|
767
767
|
let baseManifestPromise;
|
|
768
768
|
let cachedFinalManifestPromise;
|
|
769
769
|
async function loadEntries() {
|
|
770
|
-
const routerEntry = await import("./router-
|
|
770
|
+
const routerEntry = await import("./router-CNM9Kbi0.mjs").then((n) => n.e);
|
|
771
771
|
const startEntry = await import("./start-HYkvq4Ni.mjs");
|
|
772
772
|
return { startEntry, routerEntry };
|
|
773
773
|
}
|