autotel-devtools 6.0.0 → 6.0.1
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/README.md +6 -1
- package/dist/cli.cjs +80 -19
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +80 -19
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +51 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +51 -12
- package/dist/index.js.map +1 -1
- package/dist/server/index.cjs +3 -0
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.js +3 -0
- package/dist/server/index.js.map +1 -1
- package/dist/widget.global.js +1 -1
- package/package.json +2 -2
- package/skills/autotel-devtools/SKILL.md +4 -2
package/dist/widget.global.js
CHANGED
|
@@ -9,5 +9,5 @@ var AutotelDevtools=(function(e){Object.defineProperty(e,Symbol.toStringTag,{val
|
|
|
9
9
|
AI tool calls and plain functions, with repeated calls collapsed into one
|
|
10
10
|
node (e.g. <code class="text-xs">calculate (5)</code>). Send a trace to
|
|
11
11
|
devtools and it appears here.</p></div>`),v_=z(`<option> </option>`),y_=z(`<select class="text-xs bg-surface border border-line rounded px-2 py-1 text-fg max-w-[16rem]"></select>`),b_=z(`<div class="flex items-center gap-1.5 text-xs font-medium text-fg-muted"><!> </div>`),x_=z(`<span> </span>`),S_=z(`<div class="flex items-center gap-1.5 px-2 py-0.5 rounded-full bg-blue-50 border border-blue-200 text-[11px] font-medium text-blue-900" title="Total LLM tokens and cost for this trace"><!> <!> <span class="font-mono text-blue-700/80"> </span></div>`),C_=z(`<div class="flex items-center gap-1 text-[10px] text-fg-subtle"><span></span> </div>`),w_=ia(`<text text-anchor="middle" class="fill-fg-subtle text-[10px]" dy="-2"> </text>`),T_=ia(`<path fill="none" stroke-width="1.5" marker-end="url(#flow-arrow)"></path><!>`,1),E_=ia(`<g><rect width="28" height="16" rx="8"></rect><text text-anchor="middle" dominant-baseline="central" class="fill-white text-[10px] font-semibold"> </text></g>`),D_=ia(`<g role="button" tabindex="0"><rect rx="8"></rect><text text-anchor="middle" dominant-baseline="central"> </text><!></g>`),O_=z(`<button type="button" class="ml-auto shrink-0 inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[11px] text-fg-subtle hover:text-fg hover:bg-hover transition-colors" title="Open this span in the Traces waterfall"><!> Traces</button>`),k_=z(`<span>·</span> <span class="text-red-600"> </span>`,1),A_=z(`<span>·</span> <span> </span>`,1),j_=z(`<span class="font-medium"> </span> <span class="text-fg-subtle">·</span>`,1),M_=z(`<div class="mt-1.5 flex items-center gap-1.5 text-[11px] text-blue-900"><!> <!> <span class="font-mono text-blue-700/80"> </span></div>`),N_=z(`<div class="px-3 py-2 border-b border-line"><!></div>`),P_=z(`<div class="px-3 py-2 border-b border-emerald-200/60 bg-emerald-50/30"><!></div>`),F_=z(`<div class="px-3 py-3 text-xs text-fg-subtle flex items-center gap-1.5"><!> No input/output captured for this node.</div>`),I_=z(`<div class="w-80 shrink-0 border-l border-line overflow-y-auto bg-surface"><div class="px-3 py-2.5 border-b border-line"><div class="flex items-center gap-1.5"><span></span> <span class="font-mono text-sm font-medium text-fg truncate"> </span> <!></div> <div class="mt-1 flex items-center gap-2 text-[11px] text-fg-subtle flex-wrap"><span class="uppercase tracking-wide"> </span> <span>·</span> <span> </span> <!> <!></div> <!></div> <!> <!> <!></div>`),L_=z(`<div class="flex flex-col h-full"><div class="flex items-center gap-3 px-3 py-1.5 border-b border-line bg-subtle/50 flex-wrap"><!> <!> <div class="flex items-center gap-3 ml-auto flex-wrap"></div></div> <div class="flex flex-1 overflow-hidden"><div class="flex-1 overflow-auto bg-surface focus:outline-none" role="application" aria-label="Flow call graph — arrow keys to navigate, Enter to open in Traces" tabindex="0"><svg class="min-w-full" role="presentation"><defs><marker id="flow-arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" class="fill-fg-subtle"></path></marker></defs><!><!></svg></div> <!></div></div>`);function R_(e,t){tt(t,!0);let n=j(()=>Os.value),r=M(null),i=M(null),a=j(()=>L(n).find(e=>e.traceId===L(r))??L(n)[0]),o=j(()=>{let e=new Map;if(!L(a))return e;let t=Xs.value.filter(e=>e.traceId===L(a).traceId),n=e=>e?.source===`table`?e.total:void 0,r=e=>e.normalized.usage.inputTokens!=null||e.normalized.usage.outputTokens!=null||n(e.normalized.cost)!=null,i=new Set(t.filter(r).map(e=>e.raw.spanId)),o=new Map(L(a).spans.map(e=>[e.spanId,e])),s=e=>{let t=e.parentSpanId;for(;t;){if(i.has(t))return!0;t=o.get(t)?.parentSpanId}return!1};for(let i of t){if(!r(i)||s(i.raw))continue;let{usage:t,cost:a}=i.normalized;e.set(i.raw.spanId,{inputTokens:t.inputTokens,outputTokens:t.outputTokens,costUsd:n(a)})}return e}),s=j(()=>L(a)?m_(a_(L(a).spans,{metricsBySpanId:L(o)})):null),c=j(()=>L(s)?o_(L(s).nodes):{}),l=j(()=>{let e=new Map;if(L(s))for(let t of L(s).nodes)e.set(t.id,t);return e}),u=j(()=>L(i)?L(l).get(L(i))??null:null);function d(e,t){let n=L(l).get(e),r=L(l).get(t);if(!n||!r)return``;let i=n.x+n.width/2,a=n.y+44,o=r.x+r.width/2,s=r.y,c=(a+s)/2;return`M ${i} ${a} C ${i} ${c}, ${o} ${c}, ${o} ${s}`}function f(e){N(i,L(i)===e?null:e,!0)}function p(e){!L(a)||e.spanIds.length===0||Sc(L(a).traceId,e.spanIds[0])}function m(e){let t=L(s)?.nodes??[];if(t.length===0)return;let n=L(i)?L(l).get(L(i)):void 0;if(!n){N(i,t[0].id,!0);return}if(e===`left`||e===`right`){let r=t.filter(e=>e.layer===n.layer).sort((e,t)=>e.x-t.x),a=r.findIndex(e=>e.id===n.id),o=r[e===`left`?a-1:a+1];o&&N(i,o.id,!0);return}let r=n.layer+(e===`down`?1:-1),a=t.filter(e=>e.layer===r);if(a.length===0)return;let o=n.x+n.width/2;N(i,a.reduce((e,t)=>Math.abs(t.x+t.width/2-o)<Math.abs(e.x+e.width/2-o)?t:e).id,!0)}let h=M(!1);function g(e){if(L(h))switch(e.key){case`ArrowLeft`:e.preventDefault(),m(`left`);break;case`ArrowRight`:e.preventDefault(),m(`right`);break;case`ArrowUp`:e.preventDefault(),m(`up`);break;case`ArrowDown`:e.preventDefault(),m(`down`);break;case`Enter`:L(u)&&p(L(u));break;case`Escape`:N(i,null);break}}zr(()=>(window.addEventListener(`keydown`,g),()=>window.removeEventListener(`keydown`,g)));var _=aa(),v=wr(_),y=e=>{var t=__(),n=P(t);vf(P(n),{size:16}),We(),O(n),We(2),O(t),B(e,t)},b=e=>{var t=L_(),o=P(t),m=P(o),g=e=>{var t=y_();U(t,21,()=>L(n),e=>e.traceId,(e,t)=>{var n=v_(),r=P(n);O(n);var i={};I(e=>{V(r,`${L(t).service??``} · ${e??``}`),i!==(i=L(t).traceId)&&(n.value=(n.__value=L(t).traceId)??``)},[()=>L(t).rootSpan?.name??L(t).traceId.slice(0,8)]),B(e,n)}),O(t),Ua(t,()=>L(r),e=>N(r,e)),B(e,t)},_=e=>{var t=b_(),n=P(t);vf(n,{size:13});var r=F(n);O(t),I(()=>V(r,` ${L(a).rootSpan?.name??`Flow`??``}`)),B(e,t)};H(m,e=>{L(n).length>1?e(g):e(_,-1)});var v=F(m,2),y=e=>{var t=S_(),n=P(t);td(n,{size:11,class:`text-blue-500`});var r=F(n,2),i=e=>{var t=x_(),n=P(t,!0);O(t),I(e=>V(n,e),[()=>Kh(L(c).costUsd)]),B(e,t)};H(r,e=>{L(c).costUsd!=null&&e(i)});var a=F(r,2),o=P(a,!0);O(a),O(t),I(e=>V(o,e),[()=>Gh(L(c).inputTokens,L(c).outputTokens)]),B(e,t)};H(v,e=>{(L(c).costUsd!=null||L(c).inputTokens!=null)&&e(y)});var b=F(v,2);U(b,20,()=>g_,e=>e,(e,t)=>{var n=C_(),r=P(n),i=F(r);O(n),I(e=>{G(r,1,e),V(i,` ${h_[t].label??``}`)},[()=>W(Q(`inline-block w-2 h-2 rounded-sm`,h_[t].dot))]),B(e,n)}),O(b),O(o);var x=F(o,2),S=P(x),C=P(S),w=F(P(C));U(w,17,()=>L(s).edges,e=>e.source+`>`+e.target,(e,t)=>{let n=j(()=>L(i)&&L(t).source!==L(i)&&L(t).target!==L(i));var r=T_(),a=wr(r),o=F(a),s=e=>{let n=j(()=>L(l).get(L(t).source)),r=j(()=>L(l).get(L(t).target));var i=aa(),a=wr(i),o=e=>{var i=w_(),a=P(i);O(i),I(()=>{K(i,`x`,(L(n).x+L(n).width/2+L(r).x+L(r).width/2)/2),K(i,`y`,(L(n).y+44+L(r).y)/2),V(a,`×${L(t).count??``}`)}),B(e,i)};H(a,e=>{L(n)&&L(r)&&e(o)}),B(e,i)};H(o,e=>{L(t).count>1&&e(s)}),I((e,t)=>{K(a,`d`,e),G(a,0,t)},[()=>d(L(t).source,L(t).target),()=>W(Q(`stroke-fg-subtle transition-opacity`,L(n)&&`opacity-20`))]),B(e,r)}),U(F(w),17,()=>L(s).nodes,e=>e.id,(e,t)=>{let n=j(()=>h_[L(t).role]),r=j(()=>L(t).id===L(i)),a=j(()=>L(i)&&!L(r)),o=j(()=>L(t).errorCount>0);var s=D_(),c=P(s),l=F(c),u=P(l,!0);O(l);var d=F(l),p=e=>{var n=E_(),r=P(n),i=F(r),a=P(i,!0);O(i),O(n),I(e=>{K(r,`x`,L(t).x+L(t).width-26),K(r,`y`,L(t).y-8),G(r,0,e),K(i,`x`,L(t).x+L(t).width-12),K(i,`y`,L(t).y),V(a,L(o)?`${L(t).count-L(t).errorCount}/${L(t).count}`:`${L(t).count}`)},[()=>W(Q(L(o)?`fill-red-500`:`fill-fg-muted`))]),B(e,n)};H(d,e=>{L(t).count>1&&e(p)}),O(s),I((e,n,i,a)=>{G(s,0,e),K(c,`x`,L(t).x),K(c,`y`,L(t).y),K(c,`width`,L(t).width),K(c,`height`,44),G(c,0,n),K(c,`stroke-width`,L(r)?2.5:1.5),K(l,`x`,L(t).x+L(t).width/2),K(l,`y`,L(t).y+44/2),G(l,0,i),V(u,a)},[()=>W(Q(`cursor-pointer transition-opacity focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500`,L(a)&&`opacity-40`)),()=>W(Q(L(n).fill,L(o)?`stroke-red-500`:L(n).stroke,L(r)&&`stroke-[2.5px]`)),()=>W(Q(`text-[12px] font-medium font-mono`,L(n).text)),()=>L(t).label.length>26?L(t).label.slice(0,25)+`…`:L(t).label]),R(`click`,s,()=>f(L(t).id)),R(`keydown`,s,e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),f(L(t).id))}),B(e,s)}),O(C),O(S);var T=F(S,2),ee=e=>{let t=j(()=>h_[L(u).role]);var n=I_(),r=P(n),i=P(r),a=P(i),o=F(a,2),s=P(o,!0);O(o);var c=F(o,2),l=e=>{var t=O_();pd(P(t),{size:11}),We(),O(t),R(`click`,t,()=>p(L(u))),B(e,t)};H(c,e=>{L(u).spanIds.length>0&&e(l)}),O(i);var d=F(i,2),f=P(d),m=P(f,!0);O(f);var h=F(f,4),g=P(h);O(h);var _=F(h,2),v=e=>{var t=k_(),n=F(wr(t),2),r=P(n);O(n),I(()=>V(r,`${L(u).errorCount??``} errored`)),B(e,t)};H(_,e=>{L(u).errorCount>0&&e(v)});var y=F(_,2),b=e=>{var t=A_(),n=F(wr(t),2),r=P(n,!0);O(n),I(e=>V(r,e),[()=>Pc(L(u).totalDurationMs)]),B(e,t)};H(y,e=>{L(u).totalDurationMs>0&&e(b)}),O(d);var x=F(d,2),S=e=>{var t=M_(),n=P(t);td(n,{size:11,class:`text-blue-500`});var r=F(n,2),i=e=>{var t=j_(),n=wr(t),r=P(n,!0);O(n),We(2),I(e=>V(r,e),[()=>Kh(L(u).metrics.costUsd)]),B(e,t)};H(r,e=>{L(u).metrics.costUsd!=null&&e(i)});var a=F(r,2),o=P(a);O(a),O(t),I(e=>V(o,`${e??``} tokens`),[()=>Gh(L(u).metrics.inputTokens,L(u).metrics.outputTokens)]),B(e,t)};H(x,e=>{L(u).metrics&&e(S)}),O(r);var C=F(r,2),w=e=>{var t=N_();tg(P(t),{label:`Input`,get value(){return L(u).sample.input}}),O(t),B(e,t)};H(C,e=>{L(u).sample.input!==void 0&&e(w)});var T=F(C,2),ee=e=>{var t=P_();tg(P(t),{label:`Output`,get value(){return L(u).sample.output},tone:`positive`}),O(t),B(e,t)};H(T,e=>{L(u).sample.output!==void 0&&e(ee)});var te=F(T,2),ne=e=>{var t=F_();Nd(P(t),{size:13}),We(),O(t),B(e,t)};H(te,e=>{L(u).sample.input===void 0&&L(u).sample.output===void 0&&e(ne)}),O(n),I(e=>{G(a,1,e),V(s,L(u).label),V(m,L(t).label),V(g,`${L(u).count??``}
|
|
12
|
-
${L(u).count===1?`call`:`calls`}`)},[()=>W(Q(`inline-block w-2 h-2 rounded-sm`,L(t).dot))]),B(e,n)};H(T,e=>{L(u)&&e(ee)}),O(x),O(t),I(()=>{K(C,`width`,L(s).width),K(C,`height`,L(s).height),K(C,`viewBox`,`0 0 ${L(s).width} ${L(s).height}`)}),R(`focusin`,S,()=>N(h,!0)),R(`focusout`,S,()=>N(h,!1)),B(e,t)};H(v,e=>{!L(a)||!L(s)||L(s).nodes.length===0?e(y):e(b,-1)}),B(e,_),nt()}Xi([`focusin`,`focusout`,`click`,`keydown`]);var z_=(e,t=p,n=p)=>{var r=B_(),i=P(r),a=P(i,!0);O(i);var o=F(i,2),s=P(o,!0);O(o),O(r),I(()=>{V(a,t()),V(s,n())}),B(e,r)},B_=z(`<div><div class="text-[11px] uppercase tracking-wide text-fg-subtle"> </div> <div class="text-sm text-gray-800"> </div></div>`),V_=z(`<div class="border border-line rounded-md p-3 bg-surface"><div class="flex items-start justify-between gap-2 mb-2"><div><div class="text-sm font-medium text-fg"> </div> <div class="text-xs text-fg-subtle uppercase tracking-wide"> </div></div> <span> </span></div> <div class="grid grid-cols-2 gap-2 text-xs text-fg-muted sm:grid-cols-5"><!> <!> <!> <!> <!></div></div>`),H_=z(`<option> </option>`),U_=z(`<div class="text-center text-fg-subtle text-sm py-12">No resources derived yet. Send traces or logs with resource metadata.</div>`),W_=z(`<div class="space-y-2"></div>`),G_=z(`<div class="flex flex-col h-full p-4"><div class="flex flex-col gap-3 mb-4 pb-3 border-b border-line"><div class="flex items-center justify-between gap-2"><h3 class="text-sm font-semibold flex items-center gap-2 text-fg"><!> </h3></div> <div class="flex flex-wrap gap-2"><input type="search" placeholder="Filter resources" class="px-3 py-2 text-xs border border-line rounded-md min-w-[180px]"/> <select class="px-3 py-2 text-xs border border-line rounded-md bg-surface"><option>All types</option><!></select></div></div> <div class="flex-1 overflow-auto"><!></div></div>`);function K_(e,t){tt(t,!0);let n=(e,t=p)=>{var n=V_(),r=P(n),a=P(r),o=P(a),s=P(o,!0);O(o);var c=F(o,2),l=P(c,!0);O(c),O(a);var u=F(a,2),d=P(u,!0);O(u),O(r);var f=F(r,2),m=P(f);z_(m,()=>`Requests`,()=>t().requestCount);var h=F(m,2);z_(h,()=>`Errors`,()=>t().errorCount);var g=F(h,2);z_(g,()=>`Traces`,()=>t().traceCount);var _=F(g,2);z_(_,()=>`Logs`,()=>t().logCount);var v=F(_,2);{let e=j(()=>t().lastSeen?Fc(t().lastSeen):`n/a`);z_(v,()=>`Last Seen`,()=>L(e))}O(f),O(n),I(e=>{V(s,t().name),V(l,t().type),G(u,1,e),V(d,t().health)},[()=>W(Q(`px-2 py-1 rounded border text-[11px] font-medium capitalize`,i(t().health)))]),B(e,n)},r=[`service`,`database`,`cache`,`messaging`,`external`,`unknown`];function i(e){switch(e){case`healthy`:return`bg-green-50 text-green-700 border-green-200`;case`degraded`:return`bg-amber-50 text-amber-700 border-amber-200`;case`unhealthy`:return`bg-red-50 text-red-700 border-red-200`;default:return`bg-subtle text-fg-muted border-line`}}let a=j(()=>Ys.value),o=M(``),s=M(`all`),c=j(()=>{let e=L(o).trim().toLowerCase();return L(a).filter(t=>{let n=L(s)===`all`||t.type===L(s),r=e.length===0||t.name.toLowerCase().includes(e);return n&&r})});var l=G_(),u=P(l),d=P(u),f=P(d),m=P(f);ju(m,{size:16});var h=F(m);O(f),O(d);var g=F(d,2),_=P(g);eo(_);var v=F(_,2),y=P(v);y.value=y.__value=`all`,U(F(y),16,()=>r,e=>e,(e,t)=>{var n=H_(),r=P(n,!0);O(n);var i={};I(()=>{V(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),B(e,n)}),O(v);var b;Ha(v),O(g),O(u);var x=F(u,2),S=P(x),C=e=>{B(e,U_())},w=e=>{var t=W_();U(t,21,()=>L(c),e=>e.name,(e,t)=>{n(e,()=>L(t))}),O(t),B(e,t)};H(S,e=>{L(c).length===0?e(C):e(w,-1)}),O(x),O(l),I(()=>{V(h,` Resources (${L(a).length??``})`),to(_,L(o)),b!==(b=L(s))&&(v.value=(v.__value=L(s))??``,Va(v,L(s)))}),R(`input`,_,e=>N(o,e.currentTarget.value,!0)),R(`change`,v,e=>N(s,e.currentTarget.value,!0)),B(e,l),nt()}Xi([`input`,`change`]);var q_=(e,t=p,n=p,r)=>{let i=Qn(()=>g(r?.(),!1));var a=J_(),o=P(a),s=P(o,!0);O(o);var c=F(o,2),l=P(c,!0);O(c),O(a),I(e=>{V(s,t()),G(c,1,e),V(l,n())},[()=>W(Q(`font-medium`,L(i)?`text-red-600`:`text-fg`))]),B(e,a)},J_=z(`<div class="flex justify-between text-xs"><span class="text-fg-subtle"> </span> <span> </span></div>`),Y_=z(`<div class="flex flex-col items-center justify-center h-full text-fg-subtle p-8"><!> <p class="text-sm text-center">No traces available to build service map. <br/> Traces will appear here as they are captured.</p></div>`),X_=z(`<div class="flex flex-col items-center justify-center h-full text-fg-subtle p-8"><!> <p class="text-sm text-center">No services detected in traces. <br/> Service information is extracted from span attributes.</p></div>`),Z_=ia(`<g><path fill="none" stroke-linecap="round"></path><text text-anchor="middle"> </text></g>`),Q_=ia(`<rect></rect><path></path><ellipse></ellipse>`,1),$_=ia(`<polygon></polygon>`),ev=ia(`<rect></rect>`),tv=ia(`<rect fill="#64748b"></rect>`),nv=ia(`<tspan fill="#dc2626" class="font-semibold"> </tspan>`),rv=ia(`<g class="cursor-pointer" role="button" tabindex="-1"><g filter="url(#nodeShadow)"><!></g><!><text text-anchor="middle" class="text-[11px] font-semibold" fill="#1f2937"> </text><text text-anchor="middle" class="text-[10px]" fill="#475569"> <!></text></g>`),iv=z(`<span class="text-red-600"> </span>`),av=z(`<div class="text-xs p-2 bg-surface rounded border border-line"><div class="flex items-center gap-1 text-fg-muted"><span class="font-medium"> </span> <!></div> <div class="flex items-center gap-2 mt-1 text-fg-subtle"><span> </span> <!> <span> </span></div></div>`),ov=z(`<div class="mt-4 pt-4 border-t border-line"><h5 class="text-xs font-medium text-fg-muted mb-2">Connections</h5> <div class="space-y-2"></div></div>`),sv=z(`<div class="w-64 border-l border-line bg-subtle overflow-auto"><div class="p-4"><div class="flex items-center justify-between mb-4"><h4 class="font-semibold text-fg"> </h4> <button class="text-fg-subtle hover:text-fg-muted">×</button></div> <div class="space-y-3"><!> <!> <!> <!> <!> <!></div> <!></div></div>`),cv=z(`<div class="flex flex-col h-full"><div class="px-4 py-3 border-b border-line flex items-center justify-between"><h3 class="text-sm font-semibold flex items-center gap-2 text-fg"><!> </h3> <div class="text-xs text-fg-subtle"> </div></div> <div class="flex-1 overflow-hidden flex"><div class="flex-1 overflow-auto p-4"><svg class="w-full h-full"><defs><marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto"><polygon points="0 0, 10 3.5, 0 7" fill="#94a3b8"></polygon></marker><marker id="arrowhead-error" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto"><polygon points="0 0, 10 3.5, 0 7" fill="#ef4444"></polygon></marker><filter id="nodeShadow" x="-20%" y="-20%" width="140%" height="140%"><feDropShadow dx="0" dy="1" stdDeviation="2" flood-color="#0f172a" flood-opacity="0.14"></feDropShadow></filter></defs><!><!></svg></div> <!></div> <div class="flex items-center gap-4 px-4 py-2 border-t border-line bg-subtle text-xs"><div class="flex items-center gap-1"><div class="w-4 h-4 rounded-full border-2 border-blue-500 bg-surface"></div> <span class="text-fg-muted">Healthy</span></div> <div class="flex items-center gap-1"><div class="w-4 h-4 rounded-full border-2 border-red-500 bg-surface"></div> <span class="text-fg-muted">Has Errors</span></div> <div class="flex items-center gap-1"><div class="w-6 h-0.5 bg-gray-400"></div> <span class="text-fg-muted">Connection</span></div></div></div>`);function lv(e,t){tt(t,!0);function n(e,t){return No(e,t)}function r(e){let t=e.attributes||{};return t[`db.system`]||t[`db.name`]||t[`db.statement`]?`database`:t[`messaging.system`]||t[`messaging.destination`]||t[`messaging.url`]?`messaging`:t[`rpc.system`]||t[`rpc.service`]||t[`peer.service`]?`external`:`service`}function i(e,t){if(e.length===0)return 0;let n=Math.ceil(t/100*e.length)-1;return e[Math.max(0,n)]}function a(e){let t=new Map,a=new Map;for(let o of e){let e=new Map;for(let t of o.spans)e.set(t.spanId,t);for(let s of o.spans){let c=n(s,o.service),l=t.get(c);l||(l={id:c,name:c,requestCount:0,errorCount:0,avgLatency:0,minLatency:1/0,maxLatency:0,spanKinds:new Set,nodeType:`service`},t.set(c,l)),l.requestCount++,s.status.code===`ERROR`&&l.errorCount++,l.avgLatency=(l.avgLatency*(l.requestCount-1)+s.duration)/l.requestCount,l.minLatency=Math.min(l.minLatency,s.duration),l.maxLatency=Math.max(l.maxLatency,s.duration),l.spanKinds.add(s.kind);let u=r(s);if(u!==`service`&&(l.nodeType=u),s.kind===`CLIENT`){let e=String(s.attributes?.[`service.name`]||o.service||c),n=s.attributes?.[`peer.service`]||s.attributes?.[`http.host`]||s.attributes?.[`db.system`]||s.attributes?.[`net.peer.name`]||s.attributes?.[`rpc.service`]||s.attributes?.[`messaging.system`]||`external`;if(t.has(e)||t.set(e,{id:e,name:e,requestCount:0,errorCount:0,avgLatency:0,minLatency:1/0,maxLatency:0,spanKinds:new Set,nodeType:`service`}),e!==n){let o=`${e}->${n}`,c=a.get(o);if(!c)if(c={id:o,source:e,target:n,requestCount:0,errorCount:0,avgLatency:0,p50Latency:0,p99Latency:0,latencies:[]},a.set(o,c),!t.has(n))t.set(n,{id:n,name:n,requestCount:0,errorCount:0,avgLatency:0,minLatency:1/0,maxLatency:0,spanKinds:new Set,nodeType:r(s)});else{let e=t.get(n),i=r(s);i!==`service`&&(e.nodeType=i)}c.requestCount++,s.status.code===`ERROR`&&c.errorCount++,c.avgLatency=(c.avgLatency*(c.requestCount-1)+s.duration)/c.requestCount,c.latencies.push(s.duration);let l=[...c.latencies].sort((e,t)=>e-t);c.p50Latency=i(l,50),c.p99Latency=i(l,99)}}if(s.kind!==`SERVER`||!s.parentSpanId)continue;let d=e.get(s.parentSpanId);if(!d||d.kind!==`CLIENT`)continue;let f=n(d,o.service);if(f===c)continue;let p=`${f}->${c}`;a.has(p)||a.set(p,{id:p,source:f,target:c,requestCount:1,errorCount:+(s.status.code===`ERROR`),avgLatency:s.duration,p50Latency:s.duration,p99Latency:s.duration,latencies:[s.duration]})}}return{nodes:[...t.values()].map(e=>({...e,minLatency:e.minLatency===1/0?0:e.minLatency})),connections:[...a.values()]}}function o(e,t){let n=new Map;if(e.length===0)return n;if(e.length===1)return n.set(e[0].id,{x:180,y:92}),n;let r=e.map(e=>e.id),i=new Map,a=new Map;for(let e of r)i.set(e,[]),a.set(e,[]);for(let e of t)i.has(e.source)&&i.get(e.source).push(e.target),a.has(e.target)&&a.get(e.target).push(e.source);let o=new Map,s=r.filter(e=>(a.get(e)?.length??0)===0),c=s.length>0?s:r,l=[...c];for(let e of c)o.set(e,0);for(;l.length>0;){let e=l.shift(),t=o.get(e)??0;for(let n of i.get(e)??[])(o.get(n)??-1)<=t&&(o.set(n,t+1),l.push(n))}for(let e of r)o.has(e)||o.set(e,0);let u=Math.max(...Array.from(o.values())),d=Array.from({length:u+1},()=>[]);for(let e of r)d[o.get(e)].push(e);for(let e=0;e<2;e++)for(let e=1;e<=u;e++){let t=d[e-1],n=new Map;t.forEach((e,t)=>n.set(e,t)),d[e].sort((e,t)=>{let r=a.get(e)??[],i=a.get(t)??[];return(r.length>0?r.reduce((e,t)=>e+(n.get(t)??0),0)/r.length:999)-(i.length>0?i.reduce((e,t)=>e+(n.get(t)??0),0)/i.length:999)})}let f=Math.max(...d.map(e=>e.length)),p=Math.max(f*122-70,52);for(let e=0;e<=u;e++){let t=d[e],r=(p-(t.length*122-70))/2,i=e*200+140/2+20;t.forEach((e,t)=>{n.set(e,{x:i-140/2,y:r+t*122+20})})}return n}let s=j(()=>Os.value),c=M(null),l=M(null),u=j(()=>a(L(s))),d=j(()=>L(u).nodes),f=j(()=>L(u).connections),p=j(()=>o(L(d),L(f))),m=j(()=>{let e=400;for(let[,t]of L(p))t.x+140+20>e&&(e=t.x+140+20);return e}),h=j(()=>{let e=300;for(let[,t]of L(p))t.y+52+20>e&&(e=t.y+52+20);return e}),g=j(()=>L(c)?L(d).find(e=>e.id===L(c))??null:null),_=j(()=>L(c)?L(f).filter(e=>e.source===L(c)||e.target===L(c)):[]);var v=aa(),y=wr(v),b=e=>{var t=Y_();xu(P(t),{size:48,class:`mb-4 opacity-50`}),We(2),O(t),B(e,t)},x=e=>{var t=X_();Yd(P(t),{size:48,class:`mb-4 opacity-50`}),We(2),O(t),B(e,t)},S=e=>{var t=cv(),n=P(t),r=P(n),i=P(r);xu(i,{size:16});var a=F(i);O(r);var o=F(r,2),s=P(o);O(o),O(n);var u=F(n,2),v=P(u),y=P(v);Ba(y,`min-height: 300px;`);var b=F(P(y));U(b,17,()=>L(f),e=>e.id,(e,t)=>{let n=j(()=>L(p).get(L(t).source)),r=j(()=>L(p).get(L(t).target));var i=aa(),a=wr(i),o=e=>{let i=j(()=>L(c)===L(t).source||L(c)===L(t).target),a=j(()=>L(t).errorCount>0),o=j(()=>L(n).x+140),s=j(()=>L(n).y+52/2),l=j(()=>L(r).x),u=j(()=>L(r).y+52/2),d=j(()=>Math.abs(L(l)-L(o))*.5),f=j(()=>L(t).requestCount>0?L(t).errorCount/L(t).requestCount*100:0),p=j(()=>L(a)?`${L(t).requestCount}× · ${L(f).toFixed(0)}% err · ${Pc(L(t).p50Latency)}`:`${L(t).requestCount}× · ${Pc(L(t).p50Latency)}`);var m=Z_(),h=P(m),g=F(h),_=P(g,!0);O(g),O(m),I(e=>{K(h,`d`,`M${L(o)},${L(s)} C${L(o)+L(d)},${L(s)} ${L(l)-L(d)},${L(u)} ${L(l)},${L(u)}`),K(h,`stroke`,L(a)?`#ef4444`:`#94a3b8`),K(h,`stroke-width`,L(a)||L(i)?2.5:1.5),K(h,`stroke-dasharray`,L(a)?`6 4`:void 0),K(h,`stroke-opacity`,L(c)&&!L(i)?.2:1),K(h,`marker-end`,`url(#${L(a)?`arrowhead-error`:`arrowhead`})`),K(g,`x`,(L(o)+L(l))/2),K(g,`y`,(L(s)+L(u))/2-6),G(g,0,e),K(g,`opacity`,L(c)&&!L(i)?.25:1),V(_,L(p))},[()=>W(Q(`at-edge-label text-[10px]`,L(a)?`fill-red-500 font-medium`:`fill-gray-500`))]),B(e,m)};H(a,e=>{L(n)&&L(r)&&e(o)}),B(e,i)}),U(F(b),17,()=>L(d),e=>e.id,(e,t)=>{let n=j(()=>L(p).get(L(t).id));var r=aa(),i=wr(r),a=e=>{let r=j(()=>L(c)===L(t).id),i=j(()=>L(l)===L(t).id),a=j(()=>L(t).errorCount>0),o=j(()=>Ef(L(t).id)),s=j(()=>L(o).fill),u=j(()=>L(a)?`#ef4444`:L(o).stroke),d=j(()=>L(r)||L(a)?2.5:L(i)?2:1.5);var f=rv(),p=j(()=>jf(()=>N(c,L(r)?null:L(t).id,!0))),m=P(f),h=P(m),g=e=>{var t=Q_(),n=wr(t);K(n,`x`,2),K(n,`y`,6),K(n,`width`,136),K(n,`height`,40);var r=F(n);K(r,`d`,`M2,46 A${140/2-2},6 0 0,0 138,46 L138,6 A${140/2-2},6 0 0,1 2,6 Z`);var i=F(r);K(i,`cx`,140/2),K(i,`cy`,6),K(i,`rx`,140/2-2),K(i,`ry`,6),I(()=>{K(n,`fill`,L(s)),K(r,`fill`,L(s)),K(r,`stroke`,L(u)),K(r,`stroke-width`,L(d)),K(i,`fill`,L(s)),K(i,`stroke`,L(u)),K(i,`stroke-width`,L(d))}),B(e,t)},v=e=>{var t=$_();K(t,`points`,`${140/2},2 138,${52/4} 138,${156/4} ${140/2},50 2,${156/4} 2,${52/4}`),I(()=>{K(t,`fill`,L(s)),K(t,`stroke`,L(u)),K(t,`stroke-width`,L(d))}),B(e,t)},y=e=>{var t=ev();K(t,`x`,2),K(t,`y`,2),K(t,`width`,136),K(t,`height`,48),K(t,`rx`,8),I(()=>{K(t,`fill`,L(s)),K(t,`stroke`,L(u)),K(t,`stroke-width`,L(d))}),B(e,t)};H(h,e=>{L(t).nodeType===`database`?e(g):L(t).nodeType===`messaging`?e(v,1):e(y,-1)}),O(m);var b=F(m),x=e=>{var t=tv();K(t,`x`,0),K(t,`y`,0),K(t,`width`,140),K(t,`height`,52),K(t,`rx`,8),K(t,`opacity`,.4),B(e,t)},S=j(()=>L(c)&&!L(r)&&!L(_).some(e=>e.source===L(t).id||e.target===L(t).id));H(b,e=>{L(S)&&e(x)});var C=F(b);K(C,`x`,140/2),K(C,`y`,52/2-3);var w=P(C,!0);O(C);var T=F(C);K(T,`x`,140/2),K(T,`y`,38);var ee=P(T),te=F(ee),ne=e=>{var n=nv(),r=P(n);O(n),I(()=>V(r,` · ${L(t).errorCount??``} err`)),B(e,n)};H(te,e=>{L(a)&&e(ne)}),O(T),O(f),I(e=>{K(f,`transform`,`translate(${L(n).x}, ${L(n).y})`),V(w,e),V(ee,`${L(t).requestCount??``} span${L(t).requestCount===1?``:`s`} `)},[()=>L(t).name.length>16?L(t).name.slice(0,14)+`…`:L(t).name]),R(`click`,f,()=>N(c,L(r)?null:L(t).id,!0)),R(`keydown`,f,function(...e){L(p)?.apply(this,e)}),Yi(`mouseenter`,f,()=>N(l,L(t).id,!0)),Yi(`mouseleave`,f,()=>N(l,null)),B(e,f)};H(i,e=>{L(n)&&e(a)}),B(e,r)}),O(y),O(v);var x=F(v,2),S=e=>{var t=sv(),n=P(t),r=P(n),i=P(r),a=P(i,!0);O(i);var o=F(i,2);O(r);var s=F(r,2),l=P(s);{let e=j(()=>L(g).requestCount.toString());q_(l,()=>`Requests`,()=>L(e))}var u=F(l,2);{let e=j(()=>L(g).errorCount.toString());q_(u,()=>`Errors`,()=>L(e),()=>L(g).errorCount>0)}var d=F(u,2);{let e=j(()=>`${(L(g).errorCount/L(g).requestCount*100).toFixed(1)}%`);q_(d,()=>`Error Rate`,()=>L(e),()=>L(g).errorCount>0)}var f=F(d,2);{let e=j(()=>Pc(L(g).avgLatency));q_(f,()=>`Avg Latency`,()=>L(e))}var p=F(f,2);{let e=j(()=>Pc(L(g).minLatency));q_(p,()=>`Min Latency`,()=>L(e))}var m=F(p,2);{let e=j(()=>Pc(L(g).maxLatency));q_(m,()=>`Max Latency`,()=>L(e))}O(s);var h=F(s,2),v=e=>{var t=ov(),n=F(P(t),2);U(n,21,()=>L(_),e=>e.id,(e,t)=>{var n=av(),r=P(n),i=P(r),a=P(i,!0);O(i);var o=F(i,2),s=e=>{Tu(e,{size:10})},l=e=>{Tu(e,{size:10,class:`rotate-180`})};H(o,e=>{L(t).source===L(c)?e(s):e(l,-1)}),O(r);var u=F(r,2),d=P(u),f=P(d);O(d);var p=F(d,2),m=e=>{var n=iv(),r=P(n);O(n),I(()=>V(r,`${L(t).errorCount??``} err`)),B(e,n)};H(p,e=>{L(t).errorCount>0&&e(m)});var h=F(p,2),g=P(h,!0);O(h),O(u),O(n),I(e=>{V(a,L(t).source===L(c)?L(t).target:L(t).source),V(f,`${L(t).requestCount??``} req`),V(g,e)},[()=>Pc(L(t).avgLatency)]),B(e,n)}),O(n),O(t),B(e,t)};H(h,e=>{L(_).length>0&&e(v)}),O(n),O(t),I(()=>V(a,L(g).name)),R(`click`,o,()=>N(c,null)),B(e,t)};H(x,e=>{L(g)&&e(S)}),O(u),We(2),O(t),I(()=>{V(a,` Service Map (${L(d).length??``} services)`),V(s,`${L(f).length??``} connections`),K(y,`viewBox`,`0 0 ${L(m)} ${L(h)}`)}),B(e,t)};H(y,e=>{L(s).length===0?e(b):L(d).length===0?e(x,1):e(S,-1)}),B(e,v),nt()}Xi([`click`,`keydown`]);var uv=(e,t=p)=>{var n=hv(),r=P(n),i=P(r),a=P(i,!0);O(i);var o=F(i,2),s=e=>{var n=pv();U(n,21,()=>Object.entries(t().attributes).slice(0,3),([e,t])=>e,(e,t)=>{var n=j(()=>_(L(t),2));let r=()=>L(n)[0],i=()=>L(n)[1];var a=fv(),o=P(a);O(a),I(e=>V(o,`${r()??``}: ${e??``}`),[()=>String(i())]),B(e,a)}),O(n),B(e,n)},c=j(()=>Object.keys(t().attributes).length>0);H(o,e=>{L(c)&&e(s)}),O(r);var l=F(r,2),u=P(l),d=e=>{var n=mv(),r=P(n,!0);O(n),I(e=>V(r,e),[()=>Ic(t().value)]),B(e,n)};H(u,e=>{t().value!==void 0&&e(d)});var f=F(u,2),m=P(f,!0);O(f),O(l),O(n),I(e=>{V(a,t().name),V(m,e)},[()=>Fc(t().timestamp)]),B(e,n)},dv=(e,t=p,n=p,r=p)=>{let i=j(n);var a=_v(),o=P(a),s=P(o);ka(s,()=>L(i),(e,t)=>{t(e,{size:16})});var c=F(s);O(o);var l=F(o,2),u=P(l);U(u,17,()=>r().slice(0,10),ya,(e,t)=>{uv(e,()=>L(t))});var d=F(u,2),f=e=>{var t=gv(),n=P(t);O(t),I(()=>V(n,`+${r().length-10} more`)),B(e,t)};H(d,e=>{r().length>10&&e(f)}),O(l),O(a),I(()=>V(c,` ${t()??``} (${r().length??``})`)),B(e,a)},fv=z(`<span class="font-mono"> </span>`),pv=z(`<div class="text-xs text-fg-muted mt-1.5 flex flex-wrap gap-2"></div>`),mv=z(`<div class="font-semibold text-blue-600 text-sm"> </div>`),hv=z(`<div class="flex items-center justify-between gap-3 p-3 bg-subtle rounded-md text-sm border border-line"><div class="flex-1 min-w-0"><div class="font-medium truncate text-fg"> </div> <!></div> <div class="text-right flex-shrink-0"><!> <div class="text-xs text-fg-subtle mt-1"> </div></div></div>`),gv=z(`<div class="text-xs text-fg-subtle text-center pt-2 border-t border-line"> </div>`),_v=z(`<div class="border border-line rounded-md p-4 bg-surface"><h4 class="text-sm font-semibold flex items-center gap-2 mb-3 text-fg"><!> </h4> <div class="space-y-2"><!> <!></div></div>`),vv=z(`<div class="text-center text-fg-subtle text-sm py-12">No metrics yet. Waiting for data...</div>`),yv=z(`<!> <!> <!> <!>`,1),bv=z(`<div class="flex flex-col h-full p-4"><div class="flex items-center justify-between mb-4 pb-3 border-b border-line"><h3 class="text-sm font-semibold flex items-center gap-2 text-fg"><!> Metrics</h3></div> <div class="flex-1 overflow-auto space-y-4"><!></div></div>`);function xv(e,t){tt(t,!0);let n=j(()=>qs.value);var r=bv(),i=P(r),a=P(i);Lu(P(a),{size:16}),We(),O(a),O(i);var o=F(i,2),s=P(o),c=e=>{B(e,vv())},l=e=>{var t=yv(),r=wr(t),i=e=>{dv(e,()=>`Events`,()=>Lu,()=>L(n).events)};H(r,e=>{L(n).events.length>0&&e(i)});var a=F(r,2),o=e=>{dv(e,()=>`Funnels`,()=>uf,()=>L(n).funnels)};H(a,e=>{L(n).funnels.length>0&&e(o)});var s=F(a,2),c=e=>{dv(e,()=>`Outcomes`,()=>of,()=>L(n).outcomes)};H(s,e=>{L(n).outcomes.length>0&&e(c)});var l=F(s,2),u=e=>{dv(e,()=>`Values`,()=>ld,()=>L(n).values)};H(l,e=>{L(n).values.length>0&&e(u)}),B(e,t)};H(s,e=>{L(n).events.length===0&&L(n).funnels.length===0&&L(n).outcomes.length===0&&L(n).values.length===0?e(c):e(l,-1)}),O(o),O(r),B(e,r),nt()}function Sv(e){let t=e.severityNumber,n=(e.severityText??``).toUpperCase();return n===`ERROR`||t!==void 0&&t>=17?`error`:n===`WARN`||n===`WARNING`||t!==void 0&&t>=13?`warn`:`info`}function Cv(e){if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}function wv(e,t,n){if(n!==`all`){let t=Sv(e);if(n===`error`&&t!==`error`||n===`warn`&&t!==`warn`&&t!==`error`||n===`info`&&t!==`info`)return!1}if(!t)return!0;let r=t.toLowerCase();return!!(Cv(e.body).toLowerCase().includes(r)||e.severityText?.toLowerCase().includes(r)||e.resourceName?.toLowerCase().includes(r)||e.traceId?.toLowerCase().includes(r))}function Tv(e,t){let n=(e??``).toUpperCase();return n===`ERROR`||t!==void 0&&t>=17?`text-red-700 bg-red-50 border-red-200`:n===`WARN`||n===`WARNING`||t!==void 0&&t>=13?`text-amber-700 bg-amber-50 border-amber-200`:`text-fg-muted bg-subtle border-line`}var Ev=z(`<button type="button" class="inline-flex items-center gap-1 text-xs text-fg-muted hover:underline"><!> Go to trace</button>`),Dv=z(`<div><div class="flex items-start justify-between gap-2 mb-1"><span class="font-medium text-xs uppercase"> </span> <span class="text-xs text-fg-subtle flex-shrink-0"> </span></div> <div class="font-mono text-xs break-words mb-2"> </div> <!></div>`),Ov=z(`<button class="px-2 py-1 text-xs rounded text-fg-subtle hover:bg-hover transition-colors" title="Drop buffered logs received while paused">Drop buffer</button>`),kv=z(`<button class="absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-fg-subtle hover:text-fg-muted" title="Clear filter"><!></button>`),Av=z(`<div class="text-center text-fg-subtle text-sm py-12">No logs yet. Send logs via AutotelLogExporter or POST /ingest/logs.</div>`),jv=z(`<div class="text-center text-fg-subtle text-sm py-12">No logs match the current filter.</div>`),Mv=z(`<div class="flex flex-col h-full"><div class="px-4 py-3 border-b border-line flex items-center justify-between gap-2"><h3 class="text-sm font-semibold flex items-center gap-2 text-fg"><!> </h3> <div class="flex items-center gap-1"><button><!> </button> <!></div></div> <div class="px-4 py-2 border-b border-line flex items-center gap-2"><div class="relative flex-1"><!> <input class="w-full pl-7 pr-7 py-1 text-xs rounded border border-line focus:border-line focus:outline-none" placeholder="Filter by message, resource, trace id…"/> <!></div> <select class="text-xs border border-line rounded px-1.5 py-1 bg-surface text-fg-muted"><option>All</option><option>Errors</option><option>Warn+</option><option>Info</option></select></div> <div class="flex-1 overflow-auto p-4 space-y-2"><!></div></div>`);function Nv(e,t){tt(t,!0);let n=(e,t=p)=>{let n=j(()=>Tv(t().severityText,t().severityNumber)),r=j(()=>Cv(t().body));var i=Dv(),a=P(i),o=P(a),s=P(o,!0);O(o);var c=F(o,2),l=P(c,!0);O(c),O(a);var d=F(a,2),f=P(d,!0);O(d);var m=F(d,2),h=e=>{var n=Ev();Dd(P(n),{size:12}),We(),O(n),R(`click`,n,()=>u(t())),B(e,n)};H(m,e=>{t().traceId&&e(h)}),O(i),I((e,n)=>{G(i,1,e),V(s,t().severityText??`LOG`),V(l,n),V(f,L(r))},[()=>W(Q(`p-3 rounded-md border text-sm`,L(n))),()=>Fc(t().timestamp)]),B(e,i)},r=j(()=>Js.value),i=j(()=>Ps.value),a=j(()=>Rs.value),o=M(``),s=M(`all`),c=j(()=>L(r).filter(e=>wv(e,L(o),L(s)))),l=j(()=>L(o).length>0||L(s)!==`all`);function u(e){e.traceId&&(xc(e.traceId),bc(`traces`))}var d=Mv(),f=P(d),m=P(f),h=P(m);hd(h,{size:16});var g=F(h);O(m);var _=F(m,2),v=P(_),y=P(v),b=e=>{Ud(e,{size:12})},x=e=>{Vd(e,{size:12})};H(y,e=>{L(i)?e(b):e(x,-1)});var S=F(y);O(v);var C=F(v,2),w=e=>{var t=Ov();R(`click`,t,function(...e){gc?.apply(this,e)}),B(e,t)};H(C,e=>{L(i)&&L(a)>0&&e(w)}),O(_),O(f);var T=F(f,2),ee=P(T),te=P(ee);qd(te,{size:12,class:`absolute left-2 top-1/2 -translate-y-1/2 text-fg-subtle`});var ne=F(te,2);eo(ne);var re=F(ne,2),ie=e=>{var t=kv();Sf(P(t),{size:12}),O(t),R(`click`,t,()=>N(o,``)),B(e,t)};H(re,e=>{L(o)&&e(ie)}),O(ee);var ae=F(ee,2),oe=P(ae);oe.value=oe.__value=`all`;var se=F(oe);se.value=se.__value=`error`;var ce=F(se);ce.value=ce.__value=`warn`;var le=F(ce);le.value=le.__value=`info`,O(ae);var E;Ha(ae),O(T);var ue=F(T,2),de=P(ue),fe=e=>{B(e,Av())},pe=e=>{B(e,jv())},me=e=>{var t=aa();U(wr(t),17,()=>L(c),e=>e.id,(e,t)=>{n(e,()=>L(t))}),B(e,t)};H(de,e=>{L(r).length===0?e(fe):L(c).length===0?e(pe,1):e(me,-1)}),O(ue),O(d),I(e=>{V(g,` Logs (${(L(l)?`${L(c).length} of ${L(r).length}`:L(r).length)??``})`),G(v,1,e),K(v,`title`,L(i)?`Resume live tail`:`Pause live tail`),V(S,` ${L(i)?`Resume${L(a)>0?` (+${L(a)})`:``}`:`Pause`}`),to(ne,L(o)),E!==(E=L(s))&&(ae.value=(ae.__value=L(s))??``,Va(ae,L(s)))},[()=>W(Q(`flex items-center gap-1 px-2 py-1 text-xs rounded transition-colors`,L(i)?`bg-amber-100 text-amber-800 hover:bg-amber-200`:`hover:bg-hover text-fg-muted`))]),R(`click`,v,function(...e){hc?.apply(this,e)}),R(`input`,ne,e=>N(o,e.currentTarget.value,!0)),R(`change`,ae,e=>N(s,e.currentTarget.value,!0)),B(e,d),nt()}Xi([`click`,`input`,`change`]);function Pv(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s ago`;let n=Math.floor(t/60);if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}var Fv=z(`<span class="px-1.5 py-0.5 text-xs font-medium bg-hover text-fg-muted rounded"> </span>`),Iv=z(`<div><h5 class="text-xs font-semibold text-fg-muted mb-1.5">Stack Trace</h5> <pre class="text-xs font-mono bg-zinc-900 text-zinc-100 p-2 rounded overflow-x-auto whitespace-pre-wrap"> </pre></div>`),Lv=z(`<span class="px-2 py-0.5 text-xs font-mono bg-hover text-fg-muted rounded"> </span>`),Rv=z(`<div><h5 class="text-xs font-semibold text-fg-muted mb-1.5">Affected Operations</h5> <div class="flex flex-wrap gap-1"></div></div>`),zv=z(`<button class="flex items-center gap-1 text-xs text-fg-muted hover:text-fg font-mono"><!> <!></button>`),Bv=z(`<div><h5 class="text-xs font-semibold text-fg-muted mb-1.5">Recent Traces</h5> <div class="space-y-1"></div></div>`),Vv=z(`<div class="flex gap-2"><span class="text-fg-subtle"> </span> <span class="font-mono text-fg-muted"> </span></div>`),Hv=z(`<div><h5 class="text-xs font-semibold text-fg-muted mb-1.5">Context</h5> <div class="text-xs space-y-0.5"></div></div>`),Uv=z(`<div class="border-t border-line p-3 bg-subtle space-y-3"><!> <!> <!> <!> <div class="text-xs text-fg-subtle pt-2 border-t border-line"><div class="flex gap-4"><span> </span> <span> </span></div></div></div>`),Wv=z(`<div class="border border-line rounded-md bg-surface overflow-hidden"><button class="w-full p-3 flex items-start gap-3 hover:bg-subtle transition-colors text-left"><div class="mt-0.5"><!></div> <div class="flex-1 min-w-0"><div class="flex items-center gap-2 mb-1"><span class="text-sm font-semibold text-red-600"> </span> <span class="px-1.5 py-0.5 text-xs font-medium bg-red-100 text-red-700 rounded"> </span> <!></div> <p class="text-sm text-fg-muted truncate mb-2"> </p> <div class="flex items-center gap-4 text-xs text-fg-subtle"><span class="flex items-center gap-1"><!> </span> <span class="flex items-center gap-1"><!> </span></div></div></button> <!></div>`),Gv=z(`<span class="ml-1 px-2 py-0.5 text-xs font-medium bg-red-100 text-red-700 rounded-full"> </span>`),Kv=z(`<div class="flex gap-4 mb-4 p-3 bg-subtle rounded-md border border-line"><div class="text-sm"><span class="text-fg-muted">Groups:</span> <span class="font-semibold text-fg"> </span></div> <div class="text-sm"><span class="text-fg-muted">Total:</span> <span class="font-semibold text-fg"> </span></div> <div class="text-sm"><span class="text-fg-muted">Last hour:</span> <span class="font-semibold text-red-600"> </span></div></div>`),qv=z(`<div class="flex flex-col items-center justify-center h-full text-fg-subtle py-12"><!> <p class="text-sm">No errors captured</p> <p class="text-xs text-fg-subtle mt-1">Errors from failed traces will appear here</p></div>`),Jv=z(`<div class="flex flex-col h-full p-4"><div class="flex items-center justify-between mb-4 pb-3 border-b border-line"><h3 class="text-sm font-semibold flex items-center gap-2 text-fg"><!> Errors <!></h3> <div class="flex items-center gap-2"><select class="text-xs border border-line rounded px-2 py-1 bg-surface text-fg-muted"><option>Most Recent</option><option>Most Frequent</option></select></div></div> <!> <div class="flex-1 overflow-auto space-y-2"><!></div></div>`);function Yv(e,t){tt(t,!0);let n=(e,t=p,n=p)=>{let r=j(()=>Date.now()-t().firstSeen),i=j(()=>Date.now()-t().lastSeen);var a=Wv(),o=P(a),s=P(o),u=P(s),d=e=>{Vu(e,{size:16,class:`text-fg-subtle`})},f=e=>{Gu(e,{size:16,class:`text-fg-subtle`})};H(u,e=>{n()?e(d):e(f,-1)}),O(s);var m=F(s,2),h=P(m),g=P(h),v=P(g,!0);O(g);var y=F(g,2),b=P(y);O(y);var x=F(y,2),S=e=>{var n=Fv(),r=P(n,!0);O(n),I(()=>V(r,t().service)),B(e,n)};H(x,e=>{t().service&&e(S)}),O(h);var C=F(h,2),w=P(C,!0);O(C);var T=F(C,2),ee=P(T),te=P(ee);Zu(te,{size:12});var ne=F(te);O(ee);var re=F(ee,2),ie=P(re);Zu(ie,{size:12});var ae=F(ie);O(re),O(T),O(m),O(o);var oe=F(o,2),se=e=>{var n=Uv(),r=P(n),i=e=>{var n=Iv(),r=F(P(n),2),i=P(r,!0);O(r),O(n),I(()=>V(i,t().stackTrace)),B(e,n)};H(r,e=>{t().stackTrace&&e(i)});var a=F(r,2),o=e=>{var n=Rv(),r=F(P(n),2);U(r,21,()=>t().affectedSpans,ya,(e,t)=>{var n=Lv(),r=P(n,!0);O(n),I(()=>V(r,L(t))),B(e,n)}),O(r),O(n),B(e,n)};H(a,e=>{t().affectedSpans.length>0&&e(o)});var s=F(a,2),c=e=>{var n=Bv(),r=F(P(n),2);U(r,20,()=>t().affectedTraces.slice(0,5),e=>e,(e,t)=>{var n=zv(),r=P(n);yd(r,{size:10});var i=F(r);pd(F(i),{size:10}),O(n),I(e=>V(i,` ${e??``}... `),[()=>t.slice(0,16)]),R(`click`,n,()=>l(t)),B(e,n)}),O(r),O(n),B(e,n)};H(s,e=>{t().affectedTraces.length>0&&e(c)});var u=F(s,2),d=e=>{var n=Hv(),r=F(P(n),2);U(r,21,()=>Object.entries(t().attributes),([e,t])=>e,(e,t)=>{var n=j(()=>_(L(t),2));let r=()=>L(n)[0],i=()=>L(n)[1];var a=Vv(),o=P(a),s=P(o);O(o);var c=F(o,2),l=P(c,!0);O(c),O(a),I(e=>{V(s,`${r()??``}:`),V(l,e)},[()=>String(i())]),B(e,a)}),O(r),O(n),B(e,n)},f=j(()=>t().attributes&&Object.keys(t().attributes).length>0);H(u,e=>{L(f)&&e(d)});var p=F(u,2),m=P(p),h=P(m),g=P(h);O(h);var v=F(h,2),y=P(v);O(v),O(m),O(p),O(n),I((e,t)=>{V(g,`First seen: ${e??``}`),V(y,`Last seen: ${t??``}`)},[()=>Fc(t().firstSeen),()=>Fc(t().lastSeen)]),B(e,n)};H(oe,e=>{n()&&e(se)}),O(a),I((e,n)=>{V(v,t().type),V(b,`${t().count??``}x`),V(w,t().message),V(ne,` First: ${e??``}`),V(ae,` Last: ${n??``}`)},[()=>Pv(L(r)),()=>Pv(L(i))]),R(`click`,o,()=>c(t().fingerprint)),B(e,a)},r=M(`recent`),i=M(null),a=j(()=>L(r)===`recent`?$s.value:ec.value),o=j(()=>tc.value),s=j(()=>nc.value);function c(e){N(i,L(i)===e?null:e,!0)}function l(e){xc(e),bc(`traces`)}var u=Jv(),d=P(u),f=P(d),m=P(f);ff(m,{size:16,class:`text-red-500`});var h=F(m,2),g=e=>{var t=Gv(),n=P(t,!0);O(t),I(()=>V(n,L(o))),B(e,t)};H(h,e=>{L(o)>0&&e(g)}),O(f);var v=F(f,2),y=P(v),b=P(y);b.value=b.__value=`recent`;var x=F(b);x.value=x.__value=`frequent`,O(y);var S;Ha(y),O(v),O(d);var C=F(d,2),w=e=>{var t=Kv(),n=P(t),r=F(P(n),2),i=P(r,!0);O(r),O(n);var c=F(n,2),l=F(P(c),2),u=P(l,!0);O(l),O(c);var d=F(c,2),f=F(P(d),2),p=P(f,!0);O(f),O(d),O(t),I(()=>{V(i,L(a).length),V(u,L(o)),V(p,L(s))}),B(e,t)};H(C,e=>{L(o)>0&&e(w)});var T=F(C,2),ee=P(T),te=e=>{var t=qv();ff(P(t),{size:32,class:`mb-2 text-fg-subtle`}),We(4),O(t),B(e,t)},ne=e=>{var t=aa();U(wr(t),17,()=>L(a),e=>e.fingerprint,(e,t)=>{n(e,()=>L(t),()=>L(i)===L(t).fingerprint)}),B(e,t)};H(ee,e=>{L(a).length===0?e(te):e(ne,-1)}),O(T),O(u),I(()=>{S!==(S=L(r))&&(y.value=(y.__value=L(r))??``,Va(y,L(r)))}),R(`change`,y,e=>N(r,e.target.value,!0)),B(e,u),nt()}Xi([`click`,`change`]);function Xv(e,t){tt(t,!0);let n=j(()=>us.value);var r=aa(),i=wr(r),a=e=>{Kg(e,{})},o=e=>{R_(e,{})},s=e=>{K_(e,{})},c=e=>{lv(e,{})},l=e=>{xv(e,{})},u=e=>{Nv(e,{})},d=e=>{Yv(e,{})},f=e=>{Wh(e,{})};H(i,e=>{L(n)===`genai`?e(a):L(n)===`flow`?e(o,1):L(n)===`resources`?e(s,2):L(n)===`service-map`?e(c,3):L(n)===`metrics`?e(l,4):L(n)===`logs`?e(u,5):L(n)===`errors`?e(d,6):e(f,-1)}),B(e,r),nt()}var Zv=z(`<span> </span>`),Qv=z(`<div><span></span> <!></div>`);function $v(e,t){tt(t,!0);let n=xo(t,`compact`,3,!1),r=j(()=>Ns.value),i=j(()=>L(r)===`connected`?{dot:`bg-emerald-500`,label:`Connected`,text:`text-emerald-700`}:L(r)===`connecting`?{dot:`bg-amber-500 animate-pulse`,label:`Connecting…`,text:`text-amber-700`}:{dot:`bg-red-500`,label:`Disconnected`,text:`text-red-600`});var a=Qv(),o=P(a),s=F(o,2),c=e=>{var t=Zv(),n=P(t,!0);O(t),I(e=>{G(t,1,e),V(n,L(i).label)},[()=>W(Q(`text-xs font-medium`,L(i).text))]),B(e,t)};H(s,e=>{n()||e(c)}),O(a),I((e,t)=>{G(a,1,e),K(a,`title`,`OTLP receiver: ${L(i).label}`),G(o,1,t)},[()=>W(Q(`flex items-center gap-1.5`,!n()&&`px-3 py-2`)),()=>W(Q(`inline-block w-2 h-2 rounded-full shrink-0`,L(i).dot))]),B(e,a),nt()}var ey=z(`<span> </span>`),ty=z(`<div class="absolute bottom-0 left-0 right-0 h-0.5 bg-zinc-900"></div>`),ny=z(`<button><!> <!> <!></button>`),ry=z(`<button type="button" aria-label="Close panel"></button> <div><button title="Close"><!></button> <div><div class="flex gap-6"></div> <div class="ml-auto pb-3"><!></div></div> <div class="flex-1 overflow-y-auto"><!></div> <div><div class="absolute bottom-1 right-1 w-3 h-3 border-r-2 border-b-2 border-line"></div></div></div>`,1);function iy(e,t){tt(t,!0);let n=M(void 0),r={current:!1},i={current:!1},a={current:{x:0,y:0}},o={current:{x:100,y:100}},s=j(()=>os.value),c=j(()=>us.value),l=j(()=>Ds.value),u=j(()=>tc.value),d=j(()=>Zs.value),f=j(()=>Qs.value),p=j(()=>[{id:`traces`,label:`Traces`,icon:sd},{id:`genai`,label:`GenAI`,icon:$d,badge:L(d)>0?L(d):void 0},{id:`flow`,label:`Flow`,icon:vf,badge:L(f)>0?L(f):void 0},{id:`service-map`,label:`Services`,icon:zd},{id:`metrics`,label:`Metrics`,icon:Lu},{id:`logs`,label:`Logs`,icon:hd},{id:`errors`,label:`Errors`,icon:ff,badge:L(u)>0?L(u):void 0}]);function m(e){if(e.target.closest(`button`))return;r.current=!0;let t=L(n)?.getBoundingClientRect();t&&(a.current={x:e.clientX-t.left,y:e.clientY-t.top})}function h(e){if(r.current){let t=zc(e.clientX-a.current.x,0,window.innerWidth-L(l).width),r=zc(e.clientY-a.current.y,0,window.innerHeight-L(l).height);o.current={x:t,y:r},L(n)&&(L(n).style.left=`${t}px`,L(n).style.top=`${r}px`)}i.current&&Tc(zc(e.clientX-o.current.x,400,window.innerWidth-o.current.x),zc(e.clientY-o.current.y,300,window.innerHeight-o.current.y))}function g(){r.current=!1,i.current=!1}function _(e){e.stopPropagation(),i.current=!0}zr(()=>(L(l),document.addEventListener(`pointermove`,h),document.addEventListener(`pointerup`,g),()=>{document.removeEventListener(`pointermove`,h),document.removeEventListener(`pointerup`,g)})),zr(()=>{if(L(s)&&L(n)){let e=(window.innerWidth-L(l).width)/2,t=(window.innerHeight-L(l).height)/2;o.current={x:e,y:t},L(n).style.left=`${e}px`,L(n).style.top=`${t}px`}});var v=aa(),y=wr(v),b=e=>{var t=ry(),r=wr(t),i=F(r,2),a=P(i);Sf(P(a),{size:16}),O(a);var s=F(a,2),u=P(s);U(u,21,()=>L(p),e=>e.id,(e,t)=>{let n=j(()=>L(t).icon),r=j(()=>L(c)===L(t).id);var i=ny(),a=P(i);{let e=j(()=>L(t).id===`errors`&&L(t).badge?`text-red-500`:void 0);ka(a,()=>L(n),(t,n)=>{n(t,{size:16,get class(){return L(e)}})})}var o=F(a),s=F(o),l=e=>{var n=ey(),r=P(n,!0);O(n),I(e=>{G(n,1,e),V(r,L(t).badge>99?`99+`:L(t).badge)},[()=>W(Q(`px-1.5 py-0.5 text-xs font-medium rounded-full`,L(t).id===`errors`?`bg-red-100 text-red-700`:`bg-hover text-fg-muted`))]),B(e,n)};H(s,e=>{L(t).badge&&e(l)});var u=F(s,2),d=e=>{B(e,ty())};H(u,e=>{L(r)&&e(d)}),O(i),I(e=>{G(i,1,e),V(o,` ${L(t).label??``} `)},[()=>W(Q(`text-sm font-medium pb-3 transition-colors relative cursor-pointer`,`flex items-center gap-2`,L(r)?`text-fg`:`text-fg-subtle hover:text-fg-muted`))]),R(`click`,i,()=>bc(L(t).id)),B(e,i)}),O(u);var d=F(u,2);$v(P(d),{compact:!0}),O(d),O(s);var f=F(s,2);Xv(P(f),{}),O(f);var h=F(f,2);O(i),vo(i,e=>N(n,e),()=>L(n)),I((e,t,n,c,u)=>{G(r,1,e),G(i,1,t),Ba(i,`width: ${L(l).width??``}px; height: ${L(l).height??``}px; left: ${o.current.x??``}px; top: ${o.current.y??``}px;`),G(a,1,n),G(s,1,c),G(h,1,u)},[()=>W(Q(`fixed inset-0 z-[999]`,`bg-black/20 backdrop-blur-sm`,`animate-fade-in`)),()=>W(Q(`fixed z-[1000]`,`bg-surface border border-line rounded-lg`,`shadow-2xl`,`flex flex-col`,`animate-fade-in`)),()=>W(Q(`absolute top-2 right-2 z-10`,`p-1.5 rounded-md`,`bg-surface border border-line shadow-sm`,`text-fg-subtle hover:text-fg-muted hover:bg-subtle`,`transition-colors`)),()=>W(Q(`flex items-center px-4 pt-3 pb-0`,`border-b border-line`,`cursor-grab`)),()=>W(Q(`absolute bottom-0 right-0 w-4 h-4 cursor-nwse-resize`,`touch-none select-none`))]),R(`click`,r,function(...e){yc?.apply(this,e)}),R(`click`,a,function(...e){yc?.apply(this,e)}),R(`pointerdown`,s,m),R(`pointerdown`,h,_),B(e,t)};H(y,e=>{L(s)&&e(b)}),B(e,v),nt()}Xi([`click`,`pointerdown`]);var ay=z(`<button><!> </button>`),oy=z(`<nav></nav>`);function sy(e,t){tt(t,!0);let n=xo(t,`orientation`,3,`horizontal`),r=[{id:`traces`,label:`Traces`,icon:sd},{id:`flow`,label:`Flow`,icon:vf},{id:`resources`,label:`Resources`,icon:ju},{id:`service-map`,label:`Service Map`,icon:zd},{id:`metrics`,label:`Metrics`,icon:Lu},{id:`logs`,label:`Logs`,icon:hd},{id:`errors`,label:`Errors`,icon:ff}],i=j(()=>us.value);var a=oy();U(a,21,()=>r,({id:e,label:t,icon:n})=>e,(e,t)=>{let n=()=>L(t).id,r=()=>L(t).label,a=()=>L(t).icon;var o=ay(),s=P(o);ka(s,a,(e,t)=>{t(e,{size:14})});var c=F(s);O(o),I(e=>{G(o,1,e),V(c,` ${r()??``}`)},[()=>W(Q(`flex items-center gap-2 px-3 py-2 text-xs font-medium rounded transition-colors whitespace-nowrap`,L(i)===n()?`bg-zinc-900 text-zinc-50`:`text-fg-subtle hover:bg-hover hover:text-fg`))]),R(`click`,o,()=>bc(n())),B(e,o)}),O(a),I(e=>G(a,1,e),[()=>W(Q(`flex gap-1 p-1`,n()===`vertical`?`flex-col w-48 border-r border-line`:`border-b border-line overflow-x-auto`))]),B(e,a),nt()}Xi([`click`]);var cy=z(`<!> <span class="font-medium">Snapshot mode</span> <span class="text-amber-700">— live updates paused.</span> <button class="ml-auto inline-flex items-center gap-1 px-2 py-0.5 rounded hover:bg-amber-100 transition-colors" title="Exit snapshot and clear data"><!> Exit</button>`,1),ly=z(`<span class="text-fg-subtle">Local data</span> <button class="ml-auto inline-flex items-center gap-1 px-2 py-0.5 rounded hover:bg-hover transition-colors" title="Download a snapshot of traces, logs, errors and metrics"><!> Download snapshot</button> <button class="inline-flex items-center gap-1 px-2 py-0.5 rounded hover:bg-hover transition-colors" title="Load a snapshot file"><!> Load snapshot</button>`,1),uy=z(`<span class="text-red-600 truncate"> </span>`),dy=z(`<span class="text-amber-700 truncate"> </span>`),fy=z(`<div><!> <input type="file" accept="application/json,.json" class="hidden"/> <!> <!></div>`);function py(e,t){tt(t,!0);let n=M(void 0),r=M(null),i=M(null),a=j(()=>zs.value),o=()=>{N(r,null),N(i,null),Th({traces:Os.value,logs:Ms.value,errors:js.value,metrics:ks.value})},s=()=>{L(n)?.click()},c=async e=>{N(r,null),N(i,null);let t=e.currentTarget,n=t.files?.[0];if(t.value=``,!n)return;let a=await Dh(n);if(!a.success||!a.snapshot){N(r,a.errors.join(`; `)||`Failed to load snapshot`,!0);return}a.warnings.length>0&&N(i,a.warnings.join(`; `),!0),_c(a.snapshot)};var l=fy(),u=P(l),d=e=>{var t=cy(),n=wr(t);Nu(n,{size:12});var r=F(n,6);Sf(P(r),{size:12}),We(),O(r),R(`click`,r,function(...e){vc?.apply(this,e)}),B(e,t)},f=e=>{var t=ly(),n=F(wr(t),2);Nu(P(n),{size:12}),We(),O(n);var r=F(n,2);mf(P(r),{size:12}),We(),O(r),R(`click`,n,o),R(`click`,r,s),B(e,t)};H(u,e=>{L(a)?e(d):e(f,-1)});var p=F(u,2);vo(p,e=>N(n,e),()=>L(n));var m=F(p,2),h=e=>{var t=uy(),n=P(t,!0);O(t),I(()=>{K(t,`title`,L(r)),V(n,L(r))}),B(e,t)};H(m,e=>{L(r)&&e(h)});var g=F(m,2),_=e=>{var t=dy(),n=P(t,!0);O(t),I(()=>{K(t,`title`,L(i)),V(n,L(i))}),B(e,t)};H(g,e=>{L(i)&&!L(r)&&e(_)}),O(l),I(e=>G(l,1,e),[()=>W(Q(`border-b border-line px-3 py-1.5 text-xs flex items-center gap-2`,L(a)?`bg-amber-50 text-amber-900`:`bg-subtle text-fg-muted`))]),R(`change`,p,c),B(e,l),nt()}Xi([`click`,`change`]);var my=z(`<kbd class="inline-block px-1.5 py-0.5 font-mono text-xs font-semibold bg-hover border border-line rounded text-fg mr-1 last:mr-0 shadow-[0_1px_0_#d4d4d8]"> </kbd>`),hy=z(`<tr class="border-b border-line-subtle last:border-b-0"><td class="py-2.5 px-4 whitespace-nowrap align-middle w-[1%]"></td><td class="py-2.5 pr-4 pl-1 text-sm text-fg-muted align-middle"> </td></tr>`),gy=z(`<div class="fixed inset-0 z-[1000] flex items-center justify-center" role="dialog" aria-modal="true" aria-label="Keyboard shortcuts"><button type="button" aria-label="Close" class="absolute inset-0 bg-black/55 backdrop-blur-[2px] at-backdrop-in"></button> <div tabindex="-1" class="at-modal-in relative z-[1] bg-surface border border-line rounded-lg shadow-xl w-[480px] max-w-[90vw] max-h-[80vh] flex flex-col overflow-hidden outline-none"><div class="flex items-center justify-between px-4 py-3 border-b border-line bg-subtle flex-shrink-0"><span class="text-sm font-semibold text-fg">Keyboard Shortcuts</span> <button class="inline-flex items-center justify-center w-7 h-7 p-0 bg-transparent border border-line rounded cursor-pointer text-sm text-fg-subtle hover:bg-red-50 hover:border-red-300 hover:text-red-600 transition-colors" title="Close (Esc)"><!></button></div> <div class="overflow-y-auto py-2"><table class="w-full border-collapse"><tbody></tbody></table></div></div></div>`);function _y(e,t){tt(t,!0);let n=M(void 0);zr(()=>{let e=e=>{e.key===`Escape`&&(e.stopPropagation(),t.onClose())},r=L(n);return r&&(r.addEventListener(`keydown`,e),r.focus()),window.addEventListener(`keydown`,e),()=>{r&&r.removeEventListener(`keydown`,e),window.removeEventListener(`keydown`,e)}});var r=gy(),i=P(r),a=F(i,2),o=P(a),s=F(P(o),2);Sf(P(s),{size:14}),O(s),O(o);var c=F(o,2),l=P(c),u=P(l);U(u,21,()=>t.shortcuts,ya,(e,t)=>{var n=hy(),r=P(n);U(r,21,()=>L(t).keys,ya,(e,t)=>{var n=my(),r=P(n,!0);O(n),I(()=>V(r,L(t)===`CmdOrCtrl`?Mf?`⌘`:`Ctrl`:L(t)===`AltOrOpt`?Mf?`⌥`:`Alt`:L(t))),B(e,n)}),O(r);var i=F(r),a=P(i,!0);O(i),O(n),I(()=>V(a,L(t).description)),B(e,n)}),O(u),O(l),O(c),O(a),vo(a,e=>N(n,e),()=>L(n)),O(r),R(`click`,i,function(...e){t.onClose?.apply(this,e)}),R(`click`,s,function(...e){t.onClose?.apply(this,e)}),B(e,r),nt()}Xi([`click`]);var vy=z(`<div class="flex h-screen w-screen bg-surface text-fg"><div class="hidden md:flex flex-col border-r border-line"><!> <div class="mt-auto p-2 border-t border-line flex flex-col gap-1"><!> <button class="flex items-center gap-2 px-3 py-2 text-xs text-fg-subtle hover:bg-hover hover:text-fg rounded transition-colors"><!> </button> <button class="flex items-center gap-2 px-3 py-2 text-xs text-fg-subtle hover:bg-hover hover:text-fg rounded transition-colors" title="Keyboard shortcuts (?)"><!> Shortcuts</button></div></div> <div class="flex-1 flex flex-col min-w-0"><!> <div class="md:hidden"><!></div> <div class="flex-1 overflow-hidden"><!></div></div> <!></div>`);function yy(e,t){tt(t,!0);let n=[`traces`,`flow`,`resources`,`service-map`,`metrics`,`logs`,`errors`];function r(){return ds.value?kf:us.value===`traces`?Of:Df}let i=j(()=>hs.value),a=j(()=>Cs.value);zr(()=>{hs.value=gs()}),zr(()=>{let e=(()=>{let e=typeof document<`u`?document.querySelector(`autotel-devtools`):null;return e||(e=document.documentElement),e})();e&&e.setAttribute(`data-theme`,L(i))}),zr(()=>{let e=e=>{if(e.key===`?`&&!Af()){e.preventDefault(),Es(r());return}if(!Cs.value&&!Af()&&e.key>=`1`&&e.key<=`6`){let t=parseInt(e.key,10)-1;t<n.length&&bc(n[t])}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)});let o=j(()=>L(i)===`dark`?`Dark`:L(i)===`light`?`Light`:`System`);var s=vy(),c=P(s),l=P(c);sy(l,{orientation:`vertical`});var u=F(l,2),d=P(u);$v(d,{});var f=F(d,2),p=P(f),m=e=>{Ld(e,{size:14})},h=e=>{tf(e,{size:14})},g=e=>{Fd(e,{size:14})};H(p,e=>{L(i)===`dark`?e(m):L(i)===`light`?e(h,1):e(g,-1)});var _=F(p);O(f);var v=F(f,2);Yu(P(v),{size:14}),We(),O(v),O(u),O(c);var y=F(c,2),b=P(y);py(b,{});var x=F(b,2);sy(P(x),{orientation:`horizontal`}),O(x);var S=F(x,2);Xv(P(S),{}),O(S),O(y);var C=F(y,2),w=e=>{_y(e,{get shortcuts(){return L(a)},get onClose(){return Ts}})};H(C,e=>{L(a)&&e(w)}),O(s),I(()=>{K(f,`title`,`Theme: ${L(o)} (click to cycle)`),V(_,` ${L(o)??``}`)}),R(`click`,f,function(...e){vs?.apply(this,e)}),R(`click`,v,()=>ws(r())),B(e,s),nt()}Xi([`click`]);var by=z(`<!> <!>`,1);function xy(e,t){tt(t,!0),zr(()=>{t.deepLink&&ms(t.deepLink.traceId,t.deepLink.spanId)}),zr(()=>{let e=ps.value;e&&Os.value.some(t=>t.traceId===e.traceId)&&(xc(e.traceId,e.spanId??null),bc(`traces`),ps.value=null)}),zr(()=>{kc();let e=new wo(t.wsUrl);Ns.value=`connecting`,e.connect().then(e=>{Ns.value=e?`connected`:`disconnected`});let n=e.onMessage(e=>{pc(e),Ns.value=`connected`});return()=>{n(),e.disconnect()}});var n=aa(),r=wr(n),i=e=>{yy(e,{})},a=e=>{var t=by(),n=wr(t);pu(n,{}),iy(F(n,2),{}),B(e,t)};H(r,e=>{t.mode===`fullpage`?e(i):e(a,-1)}),B(e,n),nt()}function Sy(e,t){let n=oa(xy,{target:e,props:t});return()=>{ua(n)}}var Cy=`/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
12
|
+
${L(u).count===1?`call`:`calls`}`)},[()=>W(Q(`inline-block w-2 h-2 rounded-sm`,L(t).dot))]),B(e,n)};H(T,e=>{L(u)&&e(ee)}),O(x),O(t),I(()=>{K(C,`width`,L(s).width),K(C,`height`,L(s).height),K(C,`viewBox`,`0 0 ${L(s).width} ${L(s).height}`)}),R(`focusin`,S,()=>N(h,!0)),R(`focusout`,S,()=>N(h,!1)),B(e,t)};H(v,e=>{!L(a)||!L(s)||L(s).nodes.length===0?e(y):e(b,-1)}),B(e,_),nt()}Xi([`focusin`,`focusout`,`click`,`keydown`]);var z_=(e,t=p,n=p)=>{var r=B_(),i=P(r),a=P(i,!0);O(i);var o=F(i,2),s=P(o,!0);O(o),O(r),I(()=>{V(a,t()),V(s,n())}),B(e,r)},B_=z(`<div><div class="text-[11px] uppercase tracking-wide text-fg-subtle"> </div> <div class="text-sm text-gray-800"> </div></div>`),V_=z(`<div class="border border-line rounded-md p-3 bg-surface"><div class="flex items-start justify-between gap-2 mb-2"><div><div class="text-sm font-medium text-fg"> </div> <div class="text-xs text-fg-subtle uppercase tracking-wide"> </div></div> <span> </span></div> <div class="grid grid-cols-2 gap-2 text-xs text-fg-muted sm:grid-cols-5"><!> <!> <!> <!> <!></div></div>`),H_=z(`<option> </option>`),U_=z(`<div class="text-center text-fg-subtle text-sm py-12">No resources derived yet. Send traces or logs with resource metadata.</div>`),W_=z(`<div class="space-y-2"></div>`),G_=z(`<div class="flex flex-col h-full p-4"><div class="flex flex-col gap-3 mb-4 pb-3 border-b border-line"><div class="flex items-center justify-between gap-2"><h3 class="text-sm font-semibold flex items-center gap-2 text-fg"><!> </h3></div> <div class="flex flex-wrap gap-2"><input type="search" placeholder="Filter resources" class="px-3 py-2 text-xs border border-line rounded-md min-w-[180px]"/> <select class="px-3 py-2 text-xs border border-line rounded-md bg-surface"><option>All types</option><!></select></div></div> <div class="flex-1 overflow-auto"><!></div></div>`);function K_(e,t){tt(t,!0);let n=(e,t=p)=>{var n=V_(),r=P(n),a=P(r),o=P(a),s=P(o,!0);O(o);var c=F(o,2),l=P(c,!0);O(c),O(a);var u=F(a,2),d=P(u,!0);O(u),O(r);var f=F(r,2),m=P(f);z_(m,()=>`Requests`,()=>t().requestCount);var h=F(m,2);z_(h,()=>`Errors`,()=>t().errorCount);var g=F(h,2);z_(g,()=>`Traces`,()=>t().traceCount);var _=F(g,2);z_(_,()=>`Logs`,()=>t().logCount);var v=F(_,2);{let e=j(()=>t().lastSeen?Fc(t().lastSeen):`n/a`);z_(v,()=>`Last Seen`,()=>L(e))}O(f),O(n),I(e=>{V(s,t().name),V(l,t().type),G(u,1,e),V(d,t().health)},[()=>W(Q(`px-2 py-1 rounded border text-[11px] font-medium capitalize`,i(t().health)))]),B(e,n)},r=[`service`,`database`,`cache`,`messaging`,`external`,`unknown`];function i(e){switch(e){case`healthy`:return`bg-green-50 text-green-700 border-green-200`;case`degraded`:return`bg-amber-50 text-amber-700 border-amber-200`;case`unhealthy`:return`bg-red-50 text-red-700 border-red-200`;default:return`bg-subtle text-fg-muted border-line`}}let a=j(()=>Ys.value),o=M(``),s=M(`all`),c=j(()=>{let e=L(o).trim().toLowerCase();return L(a).filter(t=>{let n=L(s)===`all`||t.type===L(s),r=e.length===0||t.name.toLowerCase().includes(e);return n&&r})});var l=G_(),u=P(l),d=P(u),f=P(d),m=P(f);ju(m,{size:16});var h=F(m);O(f),O(d);var g=F(d,2),_=P(g);eo(_);var v=F(_,2),y=P(v);y.value=y.__value=`all`,U(F(y),16,()=>r,e=>e,(e,t)=>{var n=H_(),r=P(n,!0);O(n);var i={};I(()=>{V(r,t),i!==(i=t)&&(n.value=(n.__value=t)??``)}),B(e,n)}),O(v);var b;Ha(v),O(g),O(u);var x=F(u,2),S=P(x),C=e=>{B(e,U_())},w=e=>{var t=W_();U(t,21,()=>L(c),e=>e.name,(e,t)=>{n(e,()=>L(t))}),O(t),B(e,t)};H(S,e=>{L(c).length===0?e(C):e(w,-1)}),O(x),O(l),I(()=>{V(h,` Resources (${L(a).length??``})`),to(_,L(o)),b!==(b=L(s))&&(v.value=(v.__value=L(s))??``,Va(v,L(s)))}),R(`input`,_,e=>N(o,e.currentTarget.value,!0)),R(`change`,v,e=>N(s,e.currentTarget.value,!0)),B(e,l),nt()}Xi([`input`,`change`]);var q_=(e,t=p,n=p,r)=>{let i=Qn(()=>g(r?.(),!1));var a=J_(),o=P(a),s=P(o,!0);O(o);var c=F(o,2),l=P(c,!0);O(c),O(a),I(e=>{V(s,t()),G(c,1,e),V(l,n())},[()=>W(Q(`font-medium`,L(i)?`text-red-600`:`text-fg`))]),B(e,a)},J_=z(`<div class="flex justify-between text-xs"><span class="text-fg-subtle"> </span> <span> </span></div>`),Y_=z(`<div class="flex flex-col items-center justify-center h-full text-fg-subtle p-8"><!> <p class="text-sm text-center">No traces available to build service map. <br/> Traces will appear here as they are captured.</p></div>`),X_=z(`<div class="flex flex-col items-center justify-center h-full text-fg-subtle p-8"><!> <p class="text-sm text-center">No services detected in traces. <br/> Service information is extracted from span attributes.</p></div>`),Z_=ia(`<g><path fill="none" stroke-linecap="round"></path><text text-anchor="middle"> </text></g>`),Q_=ia(`<rect></rect><path></path><ellipse></ellipse>`,1),$_=ia(`<polygon></polygon>`),ev=ia(`<rect></rect>`),tv=ia(`<rect fill="#64748b"></rect>`),nv=ia(`<tspan fill="#dc2626" class="font-semibold"> </tspan>`),rv=ia(`<g class="cursor-pointer" role="button" tabindex="-1"><g filter="url(#nodeShadow)"><!></g><!><text text-anchor="middle" class="text-[11px] font-semibold" fill="#1f2937"> </text><text text-anchor="middle" class="text-[10px]" fill="#475569"> <!></text></g>`),iv=z(`<span class="text-red-600"> </span>`),av=z(`<div class="text-xs p-2 bg-surface rounded border border-line"><div class="flex items-center gap-1 text-fg-muted"><span class="font-medium"> </span> <!></div> <div class="flex items-center gap-2 mt-1 text-fg-subtle"><span> </span> <!> <span> </span></div></div>`),ov=z(`<div class="mt-4 pt-4 border-t border-line"><h5 class="text-xs font-medium text-fg-muted mb-2">Connections</h5> <div class="space-y-2"></div></div>`),sv=z(`<div class="w-64 border-l border-line bg-subtle overflow-auto"><div class="p-4"><div class="flex items-center justify-between mb-4"><h4 class="font-semibold text-fg"> </h4> <button class="text-fg-subtle hover:text-fg-muted">×</button></div> <div class="space-y-3"><!> <!> <!> <!> <!> <!></div> <!></div></div>`),cv=z(`<div class="flex flex-col h-full"><div class="px-4 py-3 border-b border-line flex items-center justify-between"><h3 class="text-sm font-semibold flex items-center gap-2 text-fg"><!> </h3> <div class="text-xs text-fg-subtle"> </div></div> <div class="flex-1 overflow-hidden flex"><div class="flex-1 overflow-auto p-4"><svg class="w-full h-full"><defs><marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto"><polygon points="0 0, 10 3.5, 0 7" fill="#94a3b8"></polygon></marker><marker id="arrowhead-error" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto"><polygon points="0 0, 10 3.5, 0 7" fill="#ef4444"></polygon></marker><filter id="nodeShadow" x="-20%" y="-20%" width="140%" height="140%"><feDropShadow dx="0" dy="1" stdDeviation="2" flood-color="#0f172a" flood-opacity="0.14"></feDropShadow></filter></defs><!><!></svg></div> <!></div> <div class="flex items-center gap-4 px-4 py-2 border-t border-line bg-subtle text-xs"><div class="flex items-center gap-1"><div class="w-4 h-4 rounded-full border-2 border-blue-500 bg-surface"></div> <span class="text-fg-muted">Healthy</span></div> <div class="flex items-center gap-1"><div class="w-4 h-4 rounded-full border-2 border-red-500 bg-surface"></div> <span class="text-fg-muted">Has Errors</span></div> <div class="flex items-center gap-1"><div class="w-6 h-0.5 bg-gray-400"></div> <span class="text-fg-muted">Connection</span></div></div></div>`);function lv(e,t){tt(t,!0);function n(e,t){return No(e,t)}function r(e){let t=e.attributes||{};return t[`db.system`]||t[`db.name`]||t[`db.statement`]?`database`:t[`messaging.system`]||t[`messaging.destination`]||t[`messaging.url`]?`messaging`:t[`rpc.system`]||t[`rpc.service`]||t[`peer.service`]?`external`:`service`}function i(e,t){if(e.length===0)return 0;let n=Math.ceil(t/100*e.length)-1;return e[Math.max(0,n)]}function a(e){let t=new Map,a=new Map;for(let o of e){let e=new Map;for(let t of o.spans)e.set(t.spanId,t);for(let s of o.spans){let c=n(s,o.service),l=t.get(c);l||(l={id:c,name:c,requestCount:0,errorCount:0,avgLatency:0,minLatency:1/0,maxLatency:0,spanKinds:new Set,nodeType:`service`},t.set(c,l)),l.requestCount++,s.status.code===`ERROR`&&l.errorCount++,l.avgLatency=(l.avgLatency*(l.requestCount-1)+s.duration)/l.requestCount,l.minLatency=Math.min(l.minLatency,s.duration),l.maxLatency=Math.max(l.maxLatency,s.duration),l.spanKinds.add(s.kind);let u=r(s);if(u!==`service`&&(l.nodeType=u),s.kind===`CLIENT`){let e=String(s.attributes?.[`service.name`]||o.service||c),n=s.attributes?.[`peer.service`]||s.attributes?.[`http.host`]||s.attributes?.[`db.system`]||s.attributes?.[`net.peer.name`]||s.attributes?.[`rpc.service`]||s.attributes?.[`messaging.system`]||`external`;if(t.has(e)||t.set(e,{id:e,name:e,requestCount:0,errorCount:0,avgLatency:0,minLatency:1/0,maxLatency:0,spanKinds:new Set,nodeType:`service`}),e!==n){let o=`${e}->${n}`,c=a.get(o);if(!c)if(c={id:o,source:e,target:n,requestCount:0,errorCount:0,avgLatency:0,p50Latency:0,p99Latency:0,latencies:[]},a.set(o,c),!t.has(n))t.set(n,{id:n,name:n,requestCount:0,errorCount:0,avgLatency:0,minLatency:1/0,maxLatency:0,spanKinds:new Set,nodeType:r(s)});else{let e=t.get(n),i=r(s);i!==`service`&&(e.nodeType=i)}c.requestCount++,s.status.code===`ERROR`&&c.errorCount++,c.avgLatency=(c.avgLatency*(c.requestCount-1)+s.duration)/c.requestCount,c.latencies.push(s.duration);let l=[...c.latencies].sort((e,t)=>e-t);c.p50Latency=i(l,50),c.p99Latency=i(l,99)}}if(s.kind!==`SERVER`||!s.parentSpanId)continue;let d=e.get(s.parentSpanId);if(!d||d.kind!==`CLIENT`)continue;let f=n(d,o.service);if(f===c)continue;let p=`${f}->${c}`;a.has(p)||a.set(p,{id:p,source:f,target:c,requestCount:1,errorCount:+(s.status.code===`ERROR`),avgLatency:s.duration,p50Latency:s.duration,p99Latency:s.duration,latencies:[s.duration]})}}return{nodes:[...t.values()].map(e=>({...e,minLatency:e.minLatency===1/0?0:e.minLatency})),connections:[...a.values()]}}function o(e,t){let n=new Map;if(e.length===0)return n;if(e.length===1)return n.set(e[0].id,{x:180,y:92}),n;let r=e.map(e=>e.id),i=new Map,a=new Map;for(let e of r)i.set(e,[]),a.set(e,[]);for(let e of t)i.has(e.source)&&i.get(e.source).push(e.target),a.has(e.target)&&a.get(e.target).push(e.source);let o=new Map,s=r.filter(e=>(a.get(e)?.length??0)===0),c=s.length>0?s:r,l=[...c];for(let e of c)o.set(e,0);for(;l.length>0;){let e=l.shift(),t=o.get(e)??0;for(let n of i.get(e)??[])(o.get(n)??-1)<=t&&(o.set(n,t+1),l.push(n))}for(let e of r)o.has(e)||o.set(e,0);let u=Math.max(...Array.from(o.values())),d=Array.from({length:u+1},()=>[]);for(let e of r)d[o.get(e)].push(e);for(let e=0;e<2;e++)for(let e=1;e<=u;e++){let t=d[e-1],n=new Map;t.forEach((e,t)=>n.set(e,t)),d[e].sort((e,t)=>{let r=a.get(e)??[],i=a.get(t)??[];return(r.length>0?r.reduce((e,t)=>e+(n.get(t)??0),0)/r.length:999)-(i.length>0?i.reduce((e,t)=>e+(n.get(t)??0),0)/i.length:999)})}let f=Math.max(...d.map(e=>e.length)),p=Math.max(f*122-70,52);for(let e=0;e<=u;e++){let t=d[e],r=(p-(t.length*122-70))/2,i=e*200+140/2+20;t.forEach((e,t)=>{n.set(e,{x:i-140/2,y:r+t*122+20})})}return n}let s=j(()=>Os.value),c=M(null),l=M(null),u=j(()=>a(L(s))),d=j(()=>L(u).nodes),f=j(()=>L(u).connections),p=j(()=>o(L(d),L(f))),m=j(()=>{let e=400;for(let[,t]of L(p))t.x+140+20>e&&(e=t.x+140+20);return e}),h=j(()=>{let e=300;for(let[,t]of L(p))t.y+52+20>e&&(e=t.y+52+20);return e}),g=j(()=>L(c)?L(d).find(e=>e.id===L(c))??null:null),_=j(()=>L(c)?L(f).filter(e=>e.source===L(c)||e.target===L(c)):[]);var v=aa(),y=wr(v),b=e=>{var t=Y_();xu(P(t),{size:48,class:`mb-4 opacity-50`}),We(2),O(t),B(e,t)},x=e=>{var t=X_();Yd(P(t),{size:48,class:`mb-4 opacity-50`}),We(2),O(t),B(e,t)},S=e=>{var t=cv(),n=P(t),r=P(n),i=P(r);xu(i,{size:16});var a=F(i);O(r);var o=F(r,2),s=P(o);O(o),O(n);var u=F(n,2),v=P(u),y=P(v);Ba(y,`min-height: 300px;`);var b=F(P(y));U(b,17,()=>L(f),e=>e.id,(e,t)=>{let n=j(()=>L(p).get(L(t).source)),r=j(()=>L(p).get(L(t).target));var i=aa(),a=wr(i),o=e=>{let i=j(()=>L(c)===L(t).source||L(c)===L(t).target),a=j(()=>L(t).errorCount>0),o=j(()=>L(n).x+140),s=j(()=>L(n).y+52/2),l=j(()=>L(r).x),u=j(()=>L(r).y+52/2),d=j(()=>Math.abs(L(l)-L(o))*.5),f=j(()=>L(t).requestCount>0?L(t).errorCount/L(t).requestCount*100:0),p=j(()=>L(a)?`${L(t).requestCount}× · ${L(f).toFixed(0)}% err · ${Pc(L(t).p50Latency)}`:`${L(t).requestCount}× · ${Pc(L(t).p50Latency)}`);var m=Z_(),h=P(m),g=F(h),_=P(g,!0);O(g),O(m),I(e=>{K(h,`d`,`M${L(o)},${L(s)} C${L(o)+L(d)},${L(s)} ${L(l)-L(d)},${L(u)} ${L(l)},${L(u)}`),K(h,`stroke`,L(a)?`#ef4444`:`#94a3b8`),K(h,`stroke-width`,L(a)||L(i)?2.5:1.5),K(h,`stroke-dasharray`,L(a)?`6 4`:void 0),K(h,`stroke-opacity`,L(c)&&!L(i)?.2:1),K(h,`marker-end`,`url(#${L(a)?`arrowhead-error`:`arrowhead`})`),K(g,`x`,(L(o)+L(l))/2),K(g,`y`,(L(s)+L(u))/2-6),G(g,0,e),K(g,`opacity`,L(c)&&!L(i)?.25:1),V(_,L(p))},[()=>W(Q(`at-edge-label text-[10px]`,L(a)?`fill-red-500 font-medium`:`fill-gray-500`))]),B(e,m)};H(a,e=>{L(n)&&L(r)&&e(o)}),B(e,i)}),U(F(b),17,()=>L(d),e=>e.id,(e,t)=>{let n=j(()=>L(p).get(L(t).id));var r=aa(),i=wr(r),a=e=>{let r=j(()=>L(c)===L(t).id),i=j(()=>L(l)===L(t).id),a=j(()=>L(t).errorCount>0),o=j(()=>Ef(L(t).id)),s=j(()=>L(o).fill),u=j(()=>L(a)?`#ef4444`:L(o).stroke),d=j(()=>L(r)||L(a)?2.5:L(i)?2:1.5);var f=rv(),p=j(()=>jf(()=>N(c,L(r)?null:L(t).id,!0))),m=P(f),h=P(m),g=e=>{var t=Q_(),n=wr(t);K(n,`x`,2),K(n,`y`,6),K(n,`width`,136),K(n,`height`,40);var r=F(n);K(r,`d`,`M2,46 A${140/2-2},6 0 0,0 138,46 L138,6 A${140/2-2},6 0 0,1 2,6 Z`);var i=F(r);K(i,`cx`,140/2),K(i,`cy`,6),K(i,`rx`,140/2-2),K(i,`ry`,6),I(()=>{K(n,`fill`,L(s)),K(r,`fill`,L(s)),K(r,`stroke`,L(u)),K(r,`stroke-width`,L(d)),K(i,`fill`,L(s)),K(i,`stroke`,L(u)),K(i,`stroke-width`,L(d))}),B(e,t)},v=e=>{var t=$_();K(t,`points`,`${140/2},2 138,${52/4} 138,${156/4} ${140/2},50 2,${156/4} 2,${52/4}`),I(()=>{K(t,`fill`,L(s)),K(t,`stroke`,L(u)),K(t,`stroke-width`,L(d))}),B(e,t)},y=e=>{var t=ev();K(t,`x`,2),K(t,`y`,2),K(t,`width`,136),K(t,`height`,48),K(t,`rx`,8),I(()=>{K(t,`fill`,L(s)),K(t,`stroke`,L(u)),K(t,`stroke-width`,L(d))}),B(e,t)};H(h,e=>{L(t).nodeType===`database`?e(g):L(t).nodeType===`messaging`?e(v,1):e(y,-1)}),O(m);var b=F(m),x=e=>{var t=tv();K(t,`x`,0),K(t,`y`,0),K(t,`width`,140),K(t,`height`,52),K(t,`rx`,8),K(t,`opacity`,.4),B(e,t)},S=j(()=>L(c)&&!L(r)&&!L(_).some(e=>e.source===L(t).id||e.target===L(t).id));H(b,e=>{L(S)&&e(x)});var C=F(b);K(C,`x`,140/2),K(C,`y`,52/2-3);var w=P(C,!0);O(C);var T=F(C);K(T,`x`,140/2),K(T,`y`,38);var ee=P(T),te=F(ee),ne=e=>{var n=nv(),r=P(n);O(n),I(()=>V(r,` · ${L(t).errorCount??``} err`)),B(e,n)};H(te,e=>{L(a)&&e(ne)}),O(T),O(f),I(e=>{K(f,`transform`,`translate(${L(n).x}, ${L(n).y})`),V(w,e),V(ee,`${L(t).requestCount??``} span${L(t).requestCount===1?``:`s`} `)},[()=>L(t).name.length>16?L(t).name.slice(0,14)+`…`:L(t).name]),R(`click`,f,()=>N(c,L(r)?null:L(t).id,!0)),R(`keydown`,f,function(...e){L(p)?.apply(this,e)}),Yi(`mouseenter`,f,()=>N(l,L(t).id,!0)),Yi(`mouseleave`,f,()=>N(l,null)),B(e,f)};H(i,e=>{L(n)&&e(a)}),B(e,r)}),O(y),O(v);var x=F(v,2),S=e=>{var t=sv(),n=P(t),r=P(n),i=P(r),a=P(i,!0);O(i);var o=F(i,2);O(r);var s=F(r,2),l=P(s);{let e=j(()=>L(g).requestCount.toString());q_(l,()=>`Requests`,()=>L(e))}var u=F(l,2);{let e=j(()=>L(g).errorCount.toString());q_(u,()=>`Errors`,()=>L(e),()=>L(g).errorCount>0)}var d=F(u,2);{let e=j(()=>`${(L(g).errorCount/L(g).requestCount*100).toFixed(1)}%`);q_(d,()=>`Error Rate`,()=>L(e),()=>L(g).errorCount>0)}var f=F(d,2);{let e=j(()=>Pc(L(g).avgLatency));q_(f,()=>`Avg Latency`,()=>L(e))}var p=F(f,2);{let e=j(()=>Pc(L(g).minLatency));q_(p,()=>`Min Latency`,()=>L(e))}var m=F(p,2);{let e=j(()=>Pc(L(g).maxLatency));q_(m,()=>`Max Latency`,()=>L(e))}O(s);var h=F(s,2),v=e=>{var t=ov(),n=F(P(t),2);U(n,21,()=>L(_),e=>e.id,(e,t)=>{var n=av(),r=P(n),i=P(r),a=P(i,!0);O(i);var o=F(i,2),s=e=>{Tu(e,{size:10})},l=e=>{Tu(e,{size:10,class:`rotate-180`})};H(o,e=>{L(t).source===L(c)?e(s):e(l,-1)}),O(r);var u=F(r,2),d=P(u),f=P(d);O(d);var p=F(d,2),m=e=>{var n=iv(),r=P(n);O(n),I(()=>V(r,`${L(t).errorCount??``} err`)),B(e,n)};H(p,e=>{L(t).errorCount>0&&e(m)});var h=F(p,2),g=P(h,!0);O(h),O(u),O(n),I(e=>{V(a,L(t).source===L(c)?L(t).target:L(t).source),V(f,`${L(t).requestCount??``} req`),V(g,e)},[()=>Pc(L(t).avgLatency)]),B(e,n)}),O(n),O(t),B(e,t)};H(h,e=>{L(_).length>0&&e(v)}),O(n),O(t),I(()=>V(a,L(g).name)),R(`click`,o,()=>N(c,null)),B(e,t)};H(x,e=>{L(g)&&e(S)}),O(u),We(2),O(t),I(()=>{V(a,` Service Map (${L(d).length??``} services)`),V(s,`${L(f).length??``} connections`),K(y,`viewBox`,`0 0 ${L(m)} ${L(h)}`)}),B(e,t)};H(y,e=>{L(s).length===0?e(b):L(d).length===0?e(x,1):e(S,-1)}),B(e,v),nt()}Xi([`click`,`keydown`]);var uv=(e,t=p)=>{var n=hv(),r=P(n),i=P(r),a=P(i,!0);O(i);var o=F(i,2),s=e=>{var n=pv();U(n,21,()=>Object.entries(t().attributes).slice(0,3),([e,t])=>e,(e,t)=>{var n=j(()=>_(L(t),2));let r=()=>L(n)[0],i=()=>L(n)[1];var a=fv(),o=P(a);O(a),I(e=>V(o,`${r()??``}: ${e??``}`),[()=>String(i())]),B(e,a)}),O(n),B(e,n)},c=j(()=>Object.keys(t().attributes).length>0);H(o,e=>{L(c)&&e(s)}),O(r);var l=F(r,2),u=P(l),d=e=>{var n=mv(),r=P(n,!0);O(n),I(e=>V(r,e),[()=>Ic(t().value)]),B(e,n)};H(u,e=>{t().value!==void 0&&e(d)});var f=F(u,2),m=P(f,!0);O(f),O(l),O(n),I(e=>{V(a,t().name),V(m,e)},[()=>Fc(t().timestamp)]),B(e,n)},dv=(e,t=p,n=p,r=p)=>{let i=j(n);var a=_v(),o=P(a),s=P(o);ka(s,()=>L(i),(e,t)=>{t(e,{size:16})});var c=F(s);O(o);var l=F(o,2),u=P(l);U(u,17,()=>r().slice(0,10),ya,(e,t)=>{uv(e,()=>L(t))});var d=F(u,2),f=e=>{var t=gv(),n=P(t);O(t),I(()=>V(n,`+${r().length-10} more`)),B(e,t)};H(d,e=>{r().length>10&&e(f)}),O(l),O(a),I(()=>V(c,` ${t()??``} (${r().length??``})`)),B(e,a)},fv=z(`<span class="font-mono"> </span>`),pv=z(`<div class="text-xs text-fg-muted mt-1.5 flex flex-wrap gap-2"></div>`),mv=z(`<div class="font-semibold text-blue-600 text-sm"> </div>`),hv=z(`<div class="flex items-center justify-between gap-3 p-3 bg-subtle rounded-md text-sm border border-line"><div class="flex-1 min-w-0"><div class="font-medium truncate text-fg"> </div> <!></div> <div class="text-right flex-shrink-0"><!> <div class="text-xs text-fg-subtle mt-1"> </div></div></div>`),gv=z(`<div class="text-xs text-fg-subtle text-center pt-2 border-t border-line"> </div>`),_v=z(`<div class="border border-line rounded-md p-4 bg-surface"><h4 class="text-sm font-semibold flex items-center gap-2 mb-3 text-fg"><!> </h4> <div class="space-y-2"><!> <!></div></div>`),vv=z(`<div class="text-center text-fg-subtle text-sm py-12">No metrics yet. Waiting for data...</div>`),yv=z(`<!> <!> <!> <!>`,1),bv=z(`<div class="flex flex-col h-full p-4"><div class="flex items-center justify-between mb-4 pb-3 border-b border-line"><h3 class="text-sm font-semibold flex items-center gap-2 text-fg"><!> Metrics</h3></div> <div class="flex-1 overflow-auto space-y-4"><!></div></div>`);function xv(e,t){tt(t,!0);let n=j(()=>qs.value);var r=bv(),i=P(r),a=P(i);Lu(P(a),{size:16}),We(),O(a),O(i);var o=F(i,2),s=P(o),c=e=>{B(e,vv())},l=e=>{var t=yv(),r=wr(t),i=e=>{dv(e,()=>`Events`,()=>Lu,()=>L(n).events)};H(r,e=>{L(n).events.length>0&&e(i)});var a=F(r,2),o=e=>{dv(e,()=>`Funnels`,()=>uf,()=>L(n).funnels)};H(a,e=>{L(n).funnels.length>0&&e(o)});var s=F(a,2),c=e=>{dv(e,()=>`Outcomes`,()=>of,()=>L(n).outcomes)};H(s,e=>{L(n).outcomes.length>0&&e(c)});var l=F(s,2),u=e=>{dv(e,()=>`Values`,()=>ld,()=>L(n).values)};H(l,e=>{L(n).values.length>0&&e(u)}),B(e,t)};H(s,e=>{L(n).events.length===0&&L(n).funnels.length===0&&L(n).outcomes.length===0&&L(n).values.length===0?e(c):e(l,-1)}),O(o),O(r),B(e,r),nt()}function Sv(e){let t=e.severityNumber,n=(e.severityText??``).toUpperCase();return n===`ERROR`||t!==void 0&&t>=17?`error`:n===`WARN`||n===`WARNING`||t!==void 0&&t>=13?`warn`:`info`}function Cv(e){if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}function wv(e,t,n){if(n!==`all`){let t=Sv(e);if(n===`error`&&t!==`error`||n===`warn`&&t!==`warn`&&t!==`error`||n===`info`&&t!==`info`)return!1}if(!t)return!0;let r=t.toLowerCase();return!!(Cv(e.body).toLowerCase().includes(r)||e.severityText?.toLowerCase().includes(r)||e.resourceName?.toLowerCase().includes(r)||e.traceId?.toLowerCase().includes(r))}function Tv(e,t){let n=(e??``).toUpperCase();return n===`ERROR`||t!==void 0&&t>=17?`text-red-700 bg-red-50 border-red-200`:n===`WARN`||n===`WARNING`||t!==void 0&&t>=13?`text-amber-700 bg-amber-50 border-amber-200`:`text-fg-muted bg-subtle border-line`}var Ev=z(`<button type="button" class="inline-flex items-center gap-1 text-xs text-fg-muted hover:underline"><!> Go to trace</button>`),Dv=z(`<div><div class="flex items-start justify-between gap-2 mb-1"><span class="font-medium text-xs uppercase"> </span> <span class="text-xs text-fg-subtle flex-shrink-0"> </span></div> <div class="font-mono text-xs break-words mb-2"> </div> <!></div>`),Ov=z(`<button class="px-2 py-1 text-xs rounded text-fg-subtle hover:bg-hover transition-colors" title="Drop buffered logs received while paused">Drop buffer</button>`),kv=z(`<button class="absolute right-1 top-1/2 -translate-y-1/2 p-0.5 text-fg-subtle hover:text-fg-muted" title="Clear filter"><!></button>`),Av=z(`<div class="text-center text-fg-subtle text-sm py-12">No logs yet. Send logs via AutotelLogExporter or POST /ingest/logs.</div>`),jv=z(`<div class="text-center text-fg-subtle text-sm py-12">No logs match the current filter.</div>`),Mv=z(`<div class="flex flex-col h-full"><div class="px-4 py-3 border-b border-line flex items-center justify-between gap-2"><h3 class="text-sm font-semibold flex items-center gap-2 text-fg"><!> </h3> <div class="flex items-center gap-1"><button><!> </button> <!></div></div> <div class="px-4 py-2 border-b border-line flex items-center gap-2"><div class="relative flex-1"><!> <input class="w-full pl-7 pr-7 py-1 text-xs rounded border border-line focus:border-line focus:outline-none" placeholder="Filter by message, resource, trace id…"/> <!></div> <select class="text-xs border border-line rounded px-1.5 py-1 bg-surface text-fg-muted"><option>All</option><option>Errors</option><option>Warn+</option><option>Info</option></select></div> <div class="flex-1 overflow-auto p-4 space-y-2"><!></div></div>`);function Nv(e,t){tt(t,!0);let n=(e,t=p)=>{let n=j(()=>Tv(t().severityText,t().severityNumber)),r=j(()=>Cv(t().body));var i=Dv(),a=P(i),o=P(a),s=P(o,!0);O(o);var c=F(o,2),l=P(c,!0);O(c),O(a);var d=F(a,2),f=P(d,!0);O(d);var m=F(d,2),h=e=>{var n=Ev();Dd(P(n),{size:12}),We(),O(n),R(`click`,n,()=>u(t())),B(e,n)};H(m,e=>{t().traceId&&e(h)}),O(i),I((e,n)=>{G(i,1,e),V(s,t().severityText??`LOG`),V(l,n),V(f,L(r))},[()=>W(Q(`p-3 rounded-md border text-sm`,L(n))),()=>Fc(t().timestamp)]),B(e,i)},r=j(()=>Js.value),i=j(()=>Ps.value),a=j(()=>Rs.value),o=M(``),s=M(`all`),c=j(()=>L(r).filter(e=>wv(e,L(o),L(s)))),l=j(()=>L(o).length>0||L(s)!==`all`);function u(e){e.traceId&&(xc(e.traceId),bc(`traces`))}var d=Mv(),f=P(d),m=P(f),h=P(m);hd(h,{size:16});var g=F(h);O(m);var _=F(m,2),v=P(_),y=P(v),b=e=>{Ud(e,{size:12})},x=e=>{Vd(e,{size:12})};H(y,e=>{L(i)?e(b):e(x,-1)});var S=F(y);O(v);var C=F(v,2),w=e=>{var t=Ov();R(`click`,t,function(...e){gc?.apply(this,e)}),B(e,t)};H(C,e=>{L(i)&&L(a)>0&&e(w)}),O(_),O(f);var T=F(f,2),ee=P(T),te=P(ee);qd(te,{size:12,class:`absolute left-2 top-1/2 -translate-y-1/2 text-fg-subtle`});var ne=F(te,2);eo(ne);var re=F(ne,2),ie=e=>{var t=kv();Sf(P(t),{size:12}),O(t),R(`click`,t,()=>N(o,``)),B(e,t)};H(re,e=>{L(o)&&e(ie)}),O(ee);var ae=F(ee,2),oe=P(ae);oe.value=oe.__value=`all`;var se=F(oe);se.value=se.__value=`error`;var ce=F(se);ce.value=ce.__value=`warn`;var le=F(ce);le.value=le.__value=`info`,O(ae);var E;Ha(ae),O(T);var ue=F(T,2),de=P(ue),fe=e=>{B(e,Av())},pe=e=>{B(e,jv())},me=e=>{var t=aa();U(wr(t),17,()=>L(c),e=>e.id,(e,t)=>{n(e,()=>L(t))}),B(e,t)};H(de,e=>{L(r).length===0?e(fe):L(c).length===0?e(pe,1):e(me,-1)}),O(ue),O(d),I(e=>{V(g,` Logs (${(L(l)?`${L(c).length} of ${L(r).length}`:L(r).length)??``})`),G(v,1,e),K(v,`title`,L(i)?`Resume live tail`:`Pause live tail`),V(S,` ${L(i)?`Resume${L(a)>0?` (+${L(a)})`:``}`:`Pause`}`),to(ne,L(o)),E!==(E=L(s))&&(ae.value=(ae.__value=L(s))??``,Va(ae,L(s)))},[()=>W(Q(`flex items-center gap-1 px-2 py-1 text-xs rounded transition-colors`,L(i)?`bg-amber-100 text-amber-800 hover:bg-amber-200`:`hover:bg-hover text-fg-muted`))]),R(`click`,v,function(...e){hc?.apply(this,e)}),R(`input`,ne,e=>N(o,e.currentTarget.value,!0)),R(`change`,ae,e=>N(s,e.currentTarget.value,!0)),B(e,d),nt()}Xi([`click`,`input`,`change`]);function Pv(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s ago`;let n=Math.floor(t/60);if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}var Fv=z(`<span class="px-1.5 py-0.5 text-xs font-medium bg-hover text-fg-muted rounded"> </span>`),Iv=z(`<div><h5 class="text-xs font-semibold text-fg-muted mb-1.5">Stack Trace</h5> <pre class="text-xs font-mono bg-zinc-900 text-zinc-100 p-2 rounded overflow-x-auto whitespace-pre-wrap"> </pre></div>`),Lv=z(`<span class="px-2 py-0.5 text-xs font-mono bg-hover text-fg-muted rounded"> </span>`),Rv=z(`<div><h5 class="text-xs font-semibold text-fg-muted mb-1.5">Affected Operations</h5> <div class="flex flex-wrap gap-1"></div></div>`),zv=z(`<button class="flex items-center gap-1 text-xs text-fg-muted hover:text-fg font-mono"><!> <!></button>`),Bv=z(`<div><h5 class="text-xs font-semibold text-fg-muted mb-1.5">Recent Traces</h5> <div class="space-y-1"></div></div>`),Vv=z(`<div class="flex gap-2"><span class="text-fg-subtle"> </span> <span class="font-mono text-fg-muted"> </span></div>`),Hv=z(`<div><h5 class="text-xs font-semibold text-fg-muted mb-1.5">Context</h5> <div class="text-xs space-y-0.5"></div></div>`),Uv=z(`<div class="border-t border-line p-3 bg-subtle space-y-3"><!> <!> <!> <!> <div class="text-xs text-fg-subtle pt-2 border-t border-line"><div class="flex gap-4"><span> </span> <span> </span></div></div></div>`),Wv=z(`<div class="border border-line rounded-md bg-surface overflow-hidden"><button class="w-full p-3 flex items-start gap-3 hover:bg-subtle transition-colors text-left"><div class="mt-0.5"><!></div> <div class="flex-1 min-w-0"><div class="flex items-center gap-2 mb-1"><span class="text-sm font-semibold text-red-600"> </span> <span class="px-1.5 py-0.5 text-xs font-medium bg-red-100 text-red-700 rounded"> </span> <!></div> <p class="text-sm text-fg-muted truncate mb-2"> </p> <div class="flex items-center gap-4 text-xs text-fg-subtle"><span class="flex items-center gap-1"><!> </span> <span class="flex items-center gap-1"><!> </span></div></div></button> <!></div>`),Gv=z(`<span class="ml-1 px-2 py-0.5 text-xs font-medium bg-red-100 text-red-700 rounded-full"> </span>`),Kv=z(`<div class="flex gap-4 mb-4 p-3 bg-subtle rounded-md border border-line"><div class="text-sm"><span class="text-fg-muted">Groups:</span> <span class="font-semibold text-fg"> </span></div> <div class="text-sm"><span class="text-fg-muted">Total:</span> <span class="font-semibold text-fg"> </span></div> <div class="text-sm"><span class="text-fg-muted">Last hour:</span> <span class="font-semibold text-red-600"> </span></div></div>`),qv=z(`<div class="flex flex-col items-center justify-center h-full text-fg-subtle py-12"><!> <p class="text-sm">No errors captured</p> <p class="text-xs text-fg-subtle mt-1">Errors from failed traces will appear here</p></div>`),Jv=z(`<div class="flex flex-col h-full p-4"><div class="flex items-center justify-between mb-4 pb-3 border-b border-line"><h3 class="text-sm font-semibold flex items-center gap-2 text-fg"><!> Errors <!></h3> <div class="flex items-center gap-2"><select class="text-xs border border-line rounded px-2 py-1 bg-surface text-fg-muted"><option>Most Recent</option><option>Most Frequent</option></select></div></div> <!> <div class="flex-1 overflow-auto space-y-2"><!></div></div>`);function Yv(e,t){tt(t,!0);let n=(e,t=p,n=p)=>{let r=j(()=>Date.now()-t().firstSeen),i=j(()=>Date.now()-t().lastSeen);var a=Wv(),o=P(a),s=P(o),u=P(s),d=e=>{Vu(e,{size:16,class:`text-fg-subtle`})},f=e=>{Gu(e,{size:16,class:`text-fg-subtle`})};H(u,e=>{n()?e(d):e(f,-1)}),O(s);var m=F(s,2),h=P(m),g=P(h),v=P(g,!0);O(g);var y=F(g,2),b=P(y);O(y);var x=F(y,2),S=e=>{var n=Fv(),r=P(n,!0);O(n),I(()=>V(r,t().service)),B(e,n)};H(x,e=>{t().service&&e(S)}),O(h);var C=F(h,2),w=P(C,!0);O(C);var T=F(C,2),ee=P(T),te=P(ee);Zu(te,{size:12});var ne=F(te);O(ee);var re=F(ee,2),ie=P(re);Zu(ie,{size:12});var ae=F(ie);O(re),O(T),O(m),O(o);var oe=F(o,2),se=e=>{var n=Uv(),r=P(n),i=e=>{var n=Iv(),r=F(P(n),2),i=P(r,!0);O(r),O(n),I(()=>V(i,t().stackTrace)),B(e,n)};H(r,e=>{t().stackTrace&&e(i)});var a=F(r,2),o=e=>{var n=Rv(),r=F(P(n),2);U(r,21,()=>t().affectedSpans,ya,(e,t)=>{var n=Lv(),r=P(n,!0);O(n),I(()=>V(r,L(t))),B(e,n)}),O(r),O(n),B(e,n)};H(a,e=>{t().affectedSpans.length>0&&e(o)});var s=F(a,2),c=e=>{var n=Bv(),r=F(P(n),2);U(r,20,()=>t().affectedTraces.slice(0,5),e=>e,(e,t)=>{var n=zv(),r=P(n);yd(r,{size:10});var i=F(r);pd(F(i),{size:10}),O(n),I(e=>V(i,` ${e??``}... `),[()=>t.slice(0,16)]),R(`click`,n,()=>l(t)),B(e,n)}),O(r),O(n),B(e,n)};H(s,e=>{t().affectedTraces.length>0&&e(c)});var u=F(s,2),d=e=>{var n=Hv(),r=F(P(n),2);U(r,21,()=>Object.entries(t().attributes),([e,t])=>e,(e,t)=>{var n=j(()=>_(L(t),2));let r=()=>L(n)[0],i=()=>L(n)[1];var a=Vv(),o=P(a),s=P(o);O(o);var c=F(o,2),l=P(c,!0);O(c),O(a),I(e=>{V(s,`${r()??``}:`),V(l,e)},[()=>String(i())]),B(e,a)}),O(r),O(n),B(e,n)},f=j(()=>t().attributes&&Object.keys(t().attributes).length>0);H(u,e=>{L(f)&&e(d)});var p=F(u,2),m=P(p),h=P(m),g=P(h);O(h);var v=F(h,2),y=P(v);O(v),O(m),O(p),O(n),I((e,t)=>{V(g,`First seen: ${e??``}`),V(y,`Last seen: ${t??``}`)},[()=>Fc(t().firstSeen),()=>Fc(t().lastSeen)]),B(e,n)};H(oe,e=>{n()&&e(se)}),O(a),I((e,n)=>{V(v,t().type),V(b,`${t().count??``}x`),V(w,t().message),V(ne,` First: ${e??``}`),V(ae,` Last: ${n??``}`)},[()=>Pv(L(r)),()=>Pv(L(i))]),R(`click`,o,()=>c(t().fingerprint)),B(e,a)},r=M(`recent`),i=M(null),a=j(()=>L(r)===`recent`?$s.value:ec.value),o=j(()=>tc.value),s=j(()=>nc.value);function c(e){N(i,L(i)===e?null:e,!0)}function l(e){xc(e),bc(`traces`)}var u=Jv(),d=P(u),f=P(d),m=P(f);ff(m,{size:16,class:`text-red-500`});var h=F(m,2),g=e=>{var t=Gv(),n=P(t,!0);O(t),I(()=>V(n,L(o))),B(e,t)};H(h,e=>{L(o)>0&&e(g)}),O(f);var v=F(f,2),y=P(v),b=P(y);b.value=b.__value=`recent`;var x=F(b);x.value=x.__value=`frequent`,O(y);var S;Ha(y),O(v),O(d);var C=F(d,2),w=e=>{var t=Kv(),n=P(t),r=F(P(n),2),i=P(r,!0);O(r),O(n);var c=F(n,2),l=F(P(c),2),u=P(l,!0);O(l),O(c);var d=F(c,2),f=F(P(d),2),p=P(f,!0);O(f),O(d),O(t),I(()=>{V(i,L(a).length),V(u,L(o)),V(p,L(s))}),B(e,t)};H(C,e=>{L(o)>0&&e(w)});var T=F(C,2),ee=P(T),te=e=>{var t=qv();ff(P(t),{size:32,class:`mb-2 text-fg-subtle`}),We(4),O(t),B(e,t)},ne=e=>{var t=aa();U(wr(t),17,()=>L(a),e=>e.fingerprint,(e,t)=>{n(e,()=>L(t),()=>L(i)===L(t).fingerprint)}),B(e,t)};H(ee,e=>{L(a).length===0?e(te):e(ne,-1)}),O(T),O(u),I(()=>{S!==(S=L(r))&&(y.value=(y.__value=L(r))??``,Va(y,L(r)))}),R(`change`,y,e=>N(r,e.target.value,!0)),B(e,u),nt()}Xi([`click`,`change`]);function Xv(e,t){tt(t,!0);let n=j(()=>us.value);var r=aa(),i=wr(r),a=e=>{Kg(e,{})},o=e=>{R_(e,{})},s=e=>{K_(e,{})},c=e=>{lv(e,{})},l=e=>{xv(e,{})},u=e=>{Nv(e,{})},d=e=>{Yv(e,{})},f=e=>{Wh(e,{})};H(i,e=>{L(n)===`genai`?e(a):L(n)===`flow`?e(o,1):L(n)===`resources`?e(s,2):L(n)===`service-map`?e(c,3):L(n)===`metrics`?e(l,4):L(n)===`logs`?e(u,5):L(n)===`errors`?e(d,6):e(f,-1)}),B(e,r),nt()}var Zv=z(`<span> </span>`),Qv=z(`<div><span></span> <!></div>`);function $v(e,t){tt(t,!0);let n=xo(t,`compact`,3,!1),r=j(()=>Ns.value),i=j(()=>L(r)===`connected`?{dot:`bg-emerald-500`,label:`Connected`,text:`text-emerald-700`}:L(r)===`connecting`?{dot:`bg-amber-500 animate-pulse`,label:`Connecting…`,text:`text-amber-700`}:{dot:`bg-red-500`,label:`Disconnected`,text:`text-red-600`});var a=Qv(),o=P(a),s=F(o,2),c=e=>{var t=Zv(),n=P(t,!0);O(t),I(e=>{G(t,1,e),V(n,L(i).label)},[()=>W(Q(`text-xs font-medium`,L(i).text))]),B(e,t)};H(s,e=>{n()||e(c)}),O(a),I((e,t)=>{G(a,1,e),K(a,`title`,`OTLP receiver: ${L(i).label}`),G(o,1,t)},[()=>W(Q(`flex items-center gap-1.5`,!n()&&`px-3 py-2`)),()=>W(Q(`inline-block w-2 h-2 rounded-full shrink-0`,L(i).dot))]),B(e,a),nt()}var ey=z(`<span> </span>`),ty=z(`<div class="absolute bottom-0 left-0 right-0 h-0.5 bg-zinc-900"></div>`),ny=z(`<button><!> <!> <!></button>`),ry=z(`<button type="button" aria-label="Close panel"></button> <div><button title="Close"><!></button> <div><div class="flex gap-6"></div> <div class="ml-auto pb-3"><!></div></div> <div class="flex-1 overflow-y-auto"><!></div> <div><div class="absolute bottom-1 right-1 w-3 h-3 border-r-2 border-b-2 border-line"></div></div></div>`,1);function iy(e,t){tt(t,!0);let n=M(void 0),r={current:!1},i={current:!1},a={current:{x:0,y:0}},o={current:{x:100,y:100}},s=j(()=>os.value),c=j(()=>us.value),l=j(()=>Ds.value),u=j(()=>tc.value),d=j(()=>Zs.value),f=j(()=>Qs.value),p=j(()=>[{id:`traces`,label:`Traces`,icon:sd},{id:`genai`,label:`GenAI`,icon:$d,badge:L(d)>0?L(d):void 0},{id:`flow`,label:`Flow`,icon:vf,badge:L(f)>0?L(f):void 0},{id:`service-map`,label:`Services`,icon:zd},{id:`metrics`,label:`Metrics`,icon:Lu},{id:`logs`,label:`Logs`,icon:hd},{id:`errors`,label:`Errors`,icon:ff,badge:L(u)>0?L(u):void 0}]);function m(e){if(e.target.closest(`button`))return;r.current=!0;let t=L(n)?.getBoundingClientRect();t&&(a.current={x:e.clientX-t.left,y:e.clientY-t.top})}function h(e){if(r.current){let t=zc(e.clientX-a.current.x,0,window.innerWidth-L(l).width),r=zc(e.clientY-a.current.y,0,window.innerHeight-L(l).height);o.current={x:t,y:r},L(n)&&(L(n).style.left=`${t}px`,L(n).style.top=`${r}px`)}i.current&&Tc(zc(e.clientX-o.current.x,400,window.innerWidth-o.current.x),zc(e.clientY-o.current.y,300,window.innerHeight-o.current.y))}function g(){r.current=!1,i.current=!1}function _(e){e.stopPropagation(),i.current=!0}zr(()=>(L(l),document.addEventListener(`pointermove`,h),document.addEventListener(`pointerup`,g),()=>{document.removeEventListener(`pointermove`,h),document.removeEventListener(`pointerup`,g)})),zr(()=>{if(L(s)&&L(n)){let e=(window.innerWidth-L(l).width)/2,t=(window.innerHeight-L(l).height)/2;o.current={x:e,y:t},L(n).style.left=`${e}px`,L(n).style.top=`${t}px`}});var v=aa(),y=wr(v),b=e=>{var t=ry(),r=wr(t),i=F(r,2),a=P(i);Sf(P(a),{size:16}),O(a);var s=F(a,2),u=P(s);U(u,21,()=>L(p),e=>e.id,(e,t)=>{let n=j(()=>L(t).icon),r=j(()=>L(c)===L(t).id);var i=ny(),a=P(i);{let e=j(()=>L(t).id===`errors`&&L(t).badge?`text-red-500`:void 0);ka(a,()=>L(n),(t,n)=>{n(t,{size:16,get class(){return L(e)}})})}var o=F(a),s=F(o),l=e=>{var n=ey(),r=P(n,!0);O(n),I(e=>{G(n,1,e),V(r,L(t).badge>99?`99+`:L(t).badge)},[()=>W(Q(`px-1.5 py-0.5 text-xs font-medium rounded-full`,L(t).id===`errors`?`bg-red-100 text-red-700`:`bg-hover text-fg-muted`))]),B(e,n)};H(s,e=>{L(t).badge&&e(l)});var u=F(s,2),d=e=>{B(e,ty())};H(u,e=>{L(r)&&e(d)}),O(i),I(e=>{G(i,1,e),V(o,` ${L(t).label??``} `)},[()=>W(Q(`text-sm font-medium pb-3 transition-colors relative cursor-pointer`,`flex items-center gap-2`,L(r)?`text-fg`:`text-fg-subtle hover:text-fg-muted`))]),R(`click`,i,()=>bc(L(t).id)),B(e,i)}),O(u);var d=F(u,2);$v(P(d),{compact:!0}),O(d),O(s);var f=F(s,2);Xv(P(f),{}),O(f);var h=F(f,2);O(i),vo(i,e=>N(n,e),()=>L(n)),I((e,t,n,c,u)=>{G(r,1,e),G(i,1,t),Ba(i,`width: ${L(l).width??``}px; height: ${L(l).height??``}px; left: ${o.current.x??``}px; top: ${o.current.y??``}px;`),G(a,1,n),G(s,1,c),G(h,1,u)},[()=>W(Q(`fixed inset-0 z-[999]`,`bg-black/20 backdrop-blur-sm`,`animate-fade-in`)),()=>W(Q(`fixed z-[1000]`,`bg-surface border border-line rounded-lg`,`shadow-2xl`,`flex flex-col`,`animate-fade-in`)),()=>W(Q(`absolute top-2 right-2 z-10`,`p-1.5 rounded-md`,`bg-surface border border-line shadow-sm`,`text-fg-subtle hover:text-fg-muted hover:bg-subtle`,`transition-colors`)),()=>W(Q(`flex items-center px-4 pt-3 pb-0`,`border-b border-line`,`cursor-grab`)),()=>W(Q(`absolute bottom-0 right-0 w-4 h-4 cursor-nwse-resize`,`touch-none select-none`))]),R(`click`,r,function(...e){yc?.apply(this,e)}),R(`click`,a,function(...e){yc?.apply(this,e)}),R(`pointerdown`,s,m),R(`pointerdown`,h,_),B(e,t)};H(y,e=>{L(s)&&e(b)}),B(e,v),nt()}Xi([`click`,`pointerdown`]);var ay=z(`<button><!> </button>`),oy=z(`<nav></nav>`);function sy(e,t){tt(t,!0);let n=xo(t,`orientation`,3,`horizontal`),r=[{id:`traces`,label:`Traces`,icon:sd},{id:`flow`,label:`Flow`,icon:vf},{id:`resources`,label:`Resources`,icon:ju},{id:`service-map`,label:`Service Map`,icon:zd},{id:`metrics`,label:`Metrics`,icon:Lu},{id:`logs`,label:`Logs`,icon:hd},{id:`errors`,label:`Errors`,icon:ff}],i=j(()=>us.value);var a=oy();U(a,21,()=>r,({id:e,label:t,icon:n})=>e,(e,t)=>{let n=()=>L(t).id,r=()=>L(t).label,a=()=>L(t).icon;var o=ay(),s=P(o);ka(s,a,(e,t)=>{t(e,{size:14})});var c=F(s);O(o),I(e=>{G(o,1,e),V(c,` ${r()??``}`)},[()=>W(Q(`flex items-center gap-2 px-3 py-2 text-xs font-medium rounded transition-colors whitespace-nowrap`,L(i)===n()?`bg-zinc-900 text-zinc-50`:`text-fg-subtle hover:bg-hover hover:text-fg`))]),R(`click`,o,()=>bc(n())),B(e,o)}),O(a),I(e=>G(a,1,e),[()=>W(Q(`flex gap-1 p-1`,n()===`vertical`?`flex-col w-48 border-r border-line`:`border-b border-line overflow-x-auto`))]),B(e,a),nt()}Xi([`click`]);var cy=z(`<!> <span class="font-medium">Snapshot mode</span> <span class="text-amber-700">— live updates paused.</span> <button class="ml-auto inline-flex items-center gap-1 px-2 py-0.5 rounded hover:bg-amber-100 transition-colors" title="Exit snapshot and clear data"><!> Exit</button>`,1),ly=z(`<span class="text-fg-subtle">Local data</span> <button class="ml-auto inline-flex items-center gap-1 px-2 py-0.5 rounded hover:bg-hover transition-colors" title="Download a snapshot of traces, logs, errors and metrics"><!> Download snapshot</button> <button class="inline-flex items-center gap-1 px-2 py-0.5 rounded hover:bg-hover transition-colors" title="Load a snapshot file"><!> Load snapshot</button>`,1),uy=z(`<span class="text-red-600 truncate"> </span>`),dy=z(`<span class="text-amber-700 truncate"> </span>`),fy=z(`<div><!> <input type="file" accept="application/json,.json" class="hidden"/> <!> <!></div>`);function py(e,t){tt(t,!0);let n=M(void 0),r=M(null),i=M(null),a=j(()=>zs.value),o=()=>{N(r,null),N(i,null),Th({traces:Os.value,logs:Ms.value,errors:js.value,metrics:ks.value})},s=()=>{L(n)?.click()},c=async e=>{N(r,null),N(i,null);let t=e.currentTarget,n=t.files?.[0];if(t.value=``,!n)return;let a=await Dh(n);if(!a.success||!a.snapshot){N(r,a.errors.join(`; `)||`Failed to load snapshot`,!0);return}a.warnings.length>0&&N(i,a.warnings.join(`; `),!0),_c(a.snapshot)};var l=fy(),u=P(l),d=e=>{var t=cy(),n=wr(t);Nu(n,{size:12});var r=F(n,6);Sf(P(r),{size:12}),We(),O(r),R(`click`,r,function(...e){vc?.apply(this,e)}),B(e,t)},f=e=>{var t=ly(),n=F(wr(t),2);Nu(P(n),{size:12}),We(),O(n);var r=F(n,2);mf(P(r),{size:12}),We(),O(r),R(`click`,n,o),R(`click`,r,s),B(e,t)};H(u,e=>{L(a)?e(d):e(f,-1)});var p=F(u,2);vo(p,e=>N(n,e),()=>L(n));var m=F(p,2),h=e=>{var t=uy(),n=P(t,!0);O(t),I(()=>{K(t,`title`,L(r)),V(n,L(r))}),B(e,t)};H(m,e=>{L(r)&&e(h)});var g=F(m,2),_=e=>{var t=dy(),n=P(t,!0);O(t),I(()=>{K(t,`title`,L(i)),V(n,L(i))}),B(e,t)};H(g,e=>{L(i)&&!L(r)&&e(_)}),O(l),I(e=>G(l,1,e),[()=>W(Q(`border-b border-line px-3 py-1.5 text-xs flex items-center gap-2`,L(a)?`bg-amber-50 text-amber-900`:`bg-subtle text-fg-muted`))]),R(`change`,p,c),B(e,l),nt()}Xi([`click`,`change`]);var my=z(`<kbd class="inline-block px-1.5 py-0.5 font-mono text-xs font-semibold bg-hover border border-line rounded text-fg mr-1 last:mr-0 shadow-[0_1px_0_#d4d4d8]"> </kbd>`),hy=z(`<tr class="border-b border-line-subtle last:border-b-0"><td class="py-2.5 px-4 whitespace-nowrap align-middle w-[1%]"></td><td class="py-2.5 pr-4 pl-1 text-sm text-fg-muted align-middle"> </td></tr>`),gy=z(`<div class="fixed inset-0 z-[1000] flex items-center justify-center" role="dialog" aria-modal="true" aria-label="Keyboard shortcuts"><button type="button" aria-label="Close" class="absolute inset-0 bg-black/55 backdrop-blur-[2px] at-backdrop-in"></button> <div tabindex="-1" class="at-modal-in relative z-[1] bg-surface border border-line rounded-lg shadow-xl w-[480px] max-w-[90vw] max-h-[80vh] flex flex-col overflow-hidden outline-none"><div class="flex items-center justify-between px-4 py-3 border-b border-line bg-subtle flex-shrink-0"><span class="text-sm font-semibold text-fg">Keyboard Shortcuts</span> <button class="inline-flex items-center justify-center w-7 h-7 p-0 bg-transparent border border-line rounded cursor-pointer text-sm text-fg-subtle hover:bg-red-50 hover:border-red-300 hover:text-red-600 transition-colors" title="Close (Esc)"><!></button></div> <div class="overflow-y-auto py-2"><table class="w-full border-collapse"><tbody></tbody></table></div></div></div>`);function _y(e,t){tt(t,!0);let n=M(void 0);zr(()=>{let e=e=>{e.key===`Escape`&&(e.stopPropagation(),t.onClose())},r=L(n);return r&&(r.addEventListener(`keydown`,e),r.focus()),window.addEventListener(`keydown`,e),()=>{r&&r.removeEventListener(`keydown`,e),window.removeEventListener(`keydown`,e)}});var r=gy(),i=P(r),a=F(i,2),o=P(a),s=F(P(o),2);Sf(P(s),{size:14}),O(s),O(o);var c=F(o,2),l=P(c),u=P(l);U(u,21,()=>t.shortcuts,ya,(e,t)=>{var n=hy(),r=P(n);U(r,21,()=>L(t).keys,ya,(e,t)=>{var n=my(),r=P(n,!0);O(n),I(()=>V(r,L(t)===`CmdOrCtrl`?Mf?`⌘`:`Ctrl`:L(t)===`AltOrOpt`?Mf?`⌥`:`Alt`:L(t))),B(e,n)}),O(r);var i=F(r),a=P(i,!0);O(i),O(n),I(()=>V(a,L(t).description)),B(e,n)}),O(u),O(l),O(c),O(a),vo(a,e=>N(n,e),()=>L(n)),O(r),R(`click`,i,function(...e){t.onClose?.apply(this,e)}),R(`click`,s,function(...e){t.onClose?.apply(this,e)}),B(e,r),nt()}Xi([`click`]);var vy=z(`<div class="flex h-screen w-screen bg-surface text-fg"><div class="hidden md:flex flex-col border-r border-line"><!> <div class="mt-auto p-2 border-t border-line flex flex-col gap-1"><!> <button class="flex items-center gap-2 px-3 py-2 text-xs text-fg-subtle hover:bg-hover hover:text-fg rounded transition-colors"><!> </button> <button class="flex items-center gap-2 px-3 py-2 text-xs text-fg-subtle hover:bg-hover hover:text-fg rounded transition-colors" title="Keyboard shortcuts (?)"><!> Shortcuts</button></div></div> <div class="flex-1 flex flex-col min-w-0"><!> <div class="md:hidden"><!></div> <div class="flex-1 overflow-hidden"><!></div></div> <!></div>`);function yy(e,t){tt(t,!0);let n=[`traces`,`flow`,`resources`,`service-map`,`metrics`,`logs`,`errors`];function r(){return ds.value?kf:us.value===`traces`?Of:Df}let i=j(()=>hs.value),a=j(()=>Cs.value);zr(()=>{hs.value=gs()});let o=M(void 0);zr(()=>{let e=null,t=L(o)?.getRootNode();t instanceof ShadowRoot?e=t.host:typeof document<`u`&&(e=document.documentElement),e&&e.setAttribute(`data-theme`,L(i))}),zr(()=>{let e=e=>{if(e.key===`?`&&!Af()){e.preventDefault(),Es(r());return}if(!Cs.value&&!Af()&&e.key>=`1`&&e.key<=`6`){let t=parseInt(e.key,10)-1;t<n.length&&bc(n[t])}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)});let s=j(()=>L(i)===`dark`?`Dark`:L(i)===`light`?`Light`:`System`);var c=vy(),l=P(c),u=P(l);sy(u,{orientation:`vertical`});var d=F(u,2),f=P(d);$v(f,{});var p=F(f,2),m=P(p),h=e=>{Ld(e,{size:14})},g=e=>{tf(e,{size:14})},_=e=>{Fd(e,{size:14})};H(m,e=>{L(i)===`dark`?e(h):L(i)===`light`?e(g,1):e(_,-1)});var v=F(m);O(p);var y=F(p,2);Yu(P(y),{size:14}),We(),O(y),O(d),O(l);var b=F(l,2),x=P(b);py(x,{});var S=F(x,2);sy(P(S),{orientation:`horizontal`}),O(S);var C=F(S,2);Xv(P(C),{}),O(C),O(b);var w=F(b,2),T=e=>{_y(e,{get shortcuts(){return L(a)},get onClose(){return Ts}})};H(w,e=>{L(a)&&e(T)}),O(c),vo(c,e=>N(o,e),()=>L(o)),I(()=>{K(p,`title`,`Theme: ${L(s)} (click to cycle)`),V(v,` ${L(s)??``}`)}),R(`click`,p,function(...e){vs?.apply(this,e)}),R(`click`,y,()=>ws(r())),B(e,c),nt()}Xi([`click`]);var by=z(`<!> <!>`,1);function xy(e,t){tt(t,!0),zr(()=>{t.deepLink&&ms(t.deepLink.traceId,t.deepLink.spanId)}),zr(()=>{let e=ps.value;e&&Os.value.some(t=>t.traceId===e.traceId)&&(xc(e.traceId,e.spanId??null),bc(`traces`),ps.value=null)}),zr(()=>{kc();let e=new wo(t.wsUrl);Ns.value=`connecting`,e.connect().then(e=>{Ns.value=e?`connected`:`disconnected`});let n=e.onMessage(e=>{pc(e),Ns.value=`connected`});return()=>{n(),e.disconnect()}});var n=aa(),r=wr(n),i=e=>{yy(e,{})},a=e=>{var t=by(),n=wr(t);pu(n,{}),iy(F(n,2),{}),B(e,t)};H(r,e=>{t.mode===`fullpage`?e(i):e(a,-1)}),B(e,n),nt()}function Sy(e,t){let n=oa(xy,{target:e,props:t});return()=>{ua(n)}}var Cy=`/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
13
13
|
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-outline-style:solid}::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:"Hanken Grotesk", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", monospace;--color-red-50:#fef2f2;--color-red-100:#ffe2e2;--color-red-200:#ffcaca;--color-red-300:#ffa3a3;--color-red-400:#ff6568;--color-red-500:#fb2c36;--color-red-600:#e40014;--color-red-700:#bf000f;--color-red-900:#82181a;--color-orange-50:#fff7ed;--color-orange-200:#ffd7a8;--color-orange-400:#ff8b1a;--color-orange-500:#fe6e00;--color-orange-700:#c53c00;--color-amber-50:#fffbeb;--color-amber-100:#fef3c6;--color-amber-200:#fee685;--color-amber-300:#ffd236;--color-amber-400:#fcbb00;--color-amber-500:#f99c00;--color-amber-600:#dd7400;--color-amber-700:#b75000;--color-amber-800:#953d00;--color-amber-900:#7b3306;--color-yellow-100:#fef9c2;--color-yellow-500:#edb200;--color-yellow-600:#cd8900;--color-green-50:#f0fdf4;--color-green-100:#dcfce7;--color-green-200:#b9f8cf;--color-green-300:#7bf1a8;--color-green-400:#05df72;--color-green-500:#00c758;--color-green-600:#00a544;--color-green-700:#008138;--color-emerald-50:#ecfdf5;--color-emerald-100:#d0fae5;--color-emerald-200:#a4f4cf;--color-emerald-400:#00d294;--color-emerald-500:#00bb7f;--color-emerald-600:#009767;--color-emerald-700:#007956;--color-emerald-800:#005f46;--color-emerald-900:#004e3b;--color-teal-50:#f0fdfa;--color-teal-400:#00d3bd;--color-teal-500:#00baa7;--color-teal-900:#0b4f4a;--color-cyan-50:#ecfeff;--color-cyan-100:#cefafe;--color-cyan-200:#a2f4fd;--color-cyan-500:#00b7d7;--color-cyan-600:#0092b5;--color-cyan-700:#007492;--color-sky-50:#f0f9ff;--color-sky-400:#00bcfe;--color-sky-500:#00a5ef;--color-sky-900:#024a70;--color-blue-50:#eff6ff;--color-blue-100:#dbeafe;--color-blue-200:#bedbff;--color-blue-300:#90c5ff;--color-blue-400:#54a2ff;--color-blue-500:#3080ff;--color-blue-600:#155dfc;--color-blue-700:#1447e6;--color-blue-800:#193cb8;--color-blue-900:#1c398e;--color-indigo-50:#eef2ff;--color-indigo-300:#a4b3ff;--color-indigo-600:#4f39f6;--color-indigo-700:#432dd7;--color-violet-50:#f5f3ff;--color-violet-100:#ede9fe;--color-violet-200:#ddd6ff;--color-violet-300:#c4b4ff;--color-violet-400:#a685ff;--color-violet-500:#8d54ff;--color-violet-600:#7f22fe;--color-violet-700:#7008e7;--color-violet-900:#4d179a;--color-purple-50:#faf5ff;--color-purple-100:#f3e8ff;--color-purple-300:#d9b3ff;--color-purple-400:#c07eff;--color-purple-500:#ac4bff;--color-purple-600:#9810fa;--color-purple-700:#8200da;--color-fuchsia-50:#fdf4ff;--color-fuchsia-200:#f6cfff;--color-fuchsia-700:#a600b5;--color-rose-50:#fff1f2;--color-rose-400:#ff667f;--color-rose-500:#ff2357;--color-rose-900:#8b0836;--color-gray-50:#f9fafb;--color-gray-100:#f3f4f6;--color-gray-300:#d1d5dc;--color-gray-400:#99a1af;--color-gray-500:#6a7282;--color-gray-800:#1e2939;--color-gray-900:#101828;--color-zinc-50:#fafafa;--color-zinc-100:#f4f4f5;--color-zinc-900:#18181b;--color-stone-50:#fafaf9;--color-stone-300:#d6d3d1;--color-stone-700:#44403b;--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-surface:var(--at-surface);--color-subtle:var(--at-muted);--color-hover:var(--at-surface-hover);--color-fg:var(--at-text-primary);--color-fg-muted:var(--at-text-secondary);--color-fg-subtle:var(--at-text-muted);--color-line:var(--at-border);--color-line-subtle:var(--at-border-light)}@supports (color:color(display-p3 0 0 0)){:root,:host{--color-red-50:color(display-p3 .988669 .951204 .950419);--color-red-100:color(display-p3 .980386 .889727 .887779);--color-red-200:color(display-p3 .969562 .798149 .794299);--color-red-300:color(display-p3 .956922 .651886 .645122);--color-red-400:color(display-p3 .933534 .431676 .423491);--color-red-500:color(display-p3 .903738 .262579 .253307);--color-red-600:color(display-p3 .830323 .140383 .133196);--color-red-700:color(display-p3 .692737 .116232 .104679);--color-red-900:color(display-p3 .466906 .133198 .12139);--color-orange-50:color(display-p3 .99533 .970132 .933499);--color-orange-200:color(display-p3 .974647 .84705 .680111);--color-orange-400:color(display-p3 .950192 .561807 .211017);--color-orange-500:color(display-p3 .946589 .449788 .0757345);--color-orange-700:color(display-p3 .729844 .257256 .0511062);--color-amber-50:color(display-p3 .997804 .985047 .926312);--color-amber-100:color(display-p3 .989391 .954583 .796328);--color-amber-200:color(display-p3 .979824 .904554 .57325);--color-amber-300:color(display-p3 .974327 .83063 .33298);--color-amber-400:color(display-p3 .959186 .738519 .118268);--color-amber-500:color(display-p3 .93994 .620584 .0585367);--color-amber-600:color(display-p3 .827144 .467166 .0336006);--color-amber-700:color(display-p3 .67989 .32771 .0520514);--color-amber-800:color(display-p3 .547533 .256058 .0728326);--color-amber-900:color(display-p3 .445958 .216422 .0823321);--color-yellow-100:color(display-p3 .993436 .977463 .782913);--color-yellow-500:color(display-p3 .903651 .703062 .0745389);--color-yellow-600:color(display-p3 .776342 .542492 .041709);--color-green-50:color(display-p3 .950677 .990571 .959366);--color-green-100:color(display-p3 .885269 .984329 .910368);--color-green-200:color(display-p3 .776442 .964383 .823412);--color-green-300:color(display-p3 .600292 .935514 .68114);--color-green-400:color(display-p3 .399536 .862346 .49324);--color-green-500:color(display-p3 .308734 .774754 .374307);--color-green-600:color(display-p3 .243882 .640824 .294808);--color-green-700:color(display-p3 .198355 .501799 .245335);--color-emerald-50:color(display-p3 .936818 .989882 .961937);--color-emerald-100:color(display-p3 .848335 .975974 .901691);--color-emerald-200:color(display-p3 .713164 .947563 .822283);--color-emerald-400:color(display-p3 .334701 .819603 .591575);--color-emerald-500:color(display-p3 .267113 .726847 .508397);--color-emerald-600:color(display-p3 .206557 .589057 .413962);--color-emerald-700:color(display-p3 .164041 .470229 .343508);--color-emerald-800:color(display-p3 .135396 .371401 .277561);--color-emerald-900:color(display-p3 .117821 .302975 .234501);--color-teal-50:color(display-p3 .951444 .990904 .98112);--color-teal-400:color(display-p3 .322787 .822056 .744388);--color-teal-500:color(display-p3 .266569 .721518 .655462);--color-teal-900:color(display-p3 .135344 .303314 .290629);--color-cyan-50:color(display-p3 .938135 .993772 .998465);--color-cyan-100:color(display-p3 .843085 .97553 .992573);--color-cyan-200:color(display-p3 .707418 .947027 .984826);--color-cyan-500:color(display-p3 .246703 .710032 .841444);--color-cyan-600:color(display-p3 .193249 .564651 .707197);--color-cyan-700:color(display-p3 .164124 .451431 .570574);--color-sky-50:color(display-p3 .946501 .975402 .998336);--color-sky-400:color(display-p3 .305975 .725011 .980173);--color-sky-500:color(display-p3 .219113 .639027 .931479);--color-sky-900:color(display-p3 .115471 .285486 .428673);--color-blue-50:color(display-p3 .941826 .963151 .995385);--color-blue-100:color(display-p3 .869214 .915931 .989622);--color-blue-200:color(display-p3 .76688 .855207 .987483);--color-blue-300:color(display-p3 .602559 .767214 .993938);--color-blue-400:color(display-p3 .397443 .62813 .992116);--color-blue-500:color(display-p3 .266422 .491219 .988624);--color-blue-600:color(display-p3 .174493 .358974 .950247);--color-blue-700:color(display-p3 .1379 .274983 .867624);--color-blue-800:color(display-p3 .134023 .230647 .695537);--color-blue-900:color(display-p3 .136395 .219428 .537145);--color-indigo-50:color(display-p3 .936215 .948621 .995621);--color-indigo-300:color(display-p3 .650892 .700156 .990824);--color-indigo-600:color(display-p3 .297656 .227891 .929242);--color-indigo-700:color(display-p3 .251282 .180274 .81203);--color-violet-50:color(display-p3 .959212 .95304 .995713);--color-violet-100:color(display-p3 .926222 .913546 .990178);--color-violet-200:color(display-p3 .861543 .838846 .988006);--color-violet-300:color(display-p3 .758872 .706261 .991729);--color-violet-400:color(display-p3 .631215 .522175 .990008);--color-violet-500:color(display-p3 .523372 .329605 .990884);--color-violet-600:color(display-p3 .459951 .162666 .957985);--color-violet-700:color(display-p3 .40161 .0841901 .871151);--color-violet-900:color(display-p3 .277841 .103712 .580169);--color-purple-50:color(display-p3 .977045 .961759 .996715);--color-purple-100:color(display-p3 .945034 .910569 .992972);--color-purple-300:color(display-p3 .829394 .703737 .996084);--color-purple-400:color(display-p3 .719919 .492497 .995173);--color-purple-500:color(display-p3 .629519 .30089 .990817);--color-purple-600:color(display-p3 .546729 .130167 .94439);--color-purple-700:color(display-p3 .465298 .0652579 .824397);--color-fuchsia-50:color(display-p3 .985378 .957946 .995991);--color-fuchsia-200:color(display-p3 .939526 .818938 .987975);--color-fuchsia-700:color(display-p3 .601715 .077561 .692792);--color-rose-50:color(display-p3 .989671 .946597 .949215);--color-rose-400:color(display-p3 .942928 .430764 .503101);--color-rose-500:color(display-p3 .921824 .240748 .355666);--color-rose-900:color(display-p3 .498064 .104884 .214595);--color-gray-50:color(display-p3 .977213 .98084 .985102);--color-gray-100:color(display-p3 .953567 .956796 .964321);--color-gray-300:color(display-p3 .822033 .835264 .858521);--color-gray-400:color(display-p3 .605734 .630385 .680158);--color-gray-500:color(display-p3 .421287 .446085 .504784);--color-gray-800:color(display-p3 .125854 .159497 .216835);--color-gray-900:color(display-p3 .070423 .0928982 .151928);--color-zinc-50:color(display-p3 .980256 .980256 .980256);--color-zinc-100:color(display-p3 .956385 .956385 .959079);--color-zinc-900:color(display-p3 .0937957 .093793 .104806);--color-stone-50:color(display-p3 .980533 .980533 .977827);--color-stone-300:color(display-p3 .838762 .827967 .81946);--color-stone-700:color(display-p3 .265384 .251047 .234362)}}@supports (color:lab(0% 0 0)){:root,:host{--color-red-50:lab(96.5005% 4.18508 1.52328);--color-red-100:lab(92.243% 10.2865 3.83865);--color-red-200:lab(86.017% 19.8815 7.75869);--color-red-300:lab(76.5514% 36.422 15.5335);--color-red-400:lab(63.7053% 60.745 31.3109);--color-red-500:lab(55.4814% 75.0732 48.8528);--color-red-600:lab(48.4493% 77.4328 61.5452);--color-red-700:lab(40.4273% 67.2623 53.7441);--color-red-900:lab(28.5139% 44.5539 29.0463);--color-orange-50:lab(97.7008% 1.53735 5.90649);--color-orange-200:lab(88.4871% 9.94918 28.8378);--color-orange-400:lab(70.0429% 42.5156 75.8207);--color-orange-500:lab(64.272% 57.1788 90.3583);--color-orange-700:lab(46.4615% 57.7275 70.8507);--color-amber-50:lab(98.6252% -.635922 8.42309);--color-amber-100:lab(95.916% -1.21653 23.111);--color-amber-200:lab(91.7203% -.505269 49.9084);--color-amber-300:lab(86.4156% 6.13147 78.3961);--color-amber-400:lab(80.1641% 16.6016 99.2089);--color-amber-500:lab(72.7183% 31.8672 97.9407);--color-amber-600:lab(60.3514% 40.5624 87.1228);--color-amber-700:lab(47.2709% 42.9082 69.2966);--color-amber-800:lab(37.8822% 37.1699 52.2718);--color-amber-900:lab(31.2288% 30.2627 40.0378);--color-yellow-100:lab(97.3564% -4.51407 27.344);--color-yellow-500:lab(76.3898% 14.5258 98.4589);--color-yellow-600:lab(62.7799% 22.4197 86.1544);--color-green-50:lab(98.1563% -5.60117 2.75915);--color-green-100:lab(96.1861% -13.8464 6.52365);--color-green-200:lab(92.4222% -26.4702 12.9427);--color-green-300:lab(86.9953% -47.2691 25.0054);--color-green-400:lab(78.503% -64.9265 39.7492);--color-green-500:lab(70.5521% -66.5147 45.8073);--color-green-600:lab(59.0978% -58.6621 41.2579);--color-green-700:lab(47.0329% -47.0239 31.4788);--color-emerald-50:lab(97.8462% -6.94966 1.85487);--color-emerald-100:lab(94.9004% -17.0769 5.63836);--color-emerald-200:lab(90.2247% -31.039 9.47084);--color-emerald-400:lab(75.0771% -60.7313 19.4147);--color-emerald-500:lab(66.9756% -58.27 19.5419);--color-emerald-600:lab(55.0481% -49.9246 15.93);--color-emerald-700:lab(44.4871% -41.0396 11.0361);--color-emerald-800:lab(35.3675% -33.1188 8.04002);--color-emerald-900:lab(28.8637% -26.9249 5.45986);--color-teal-50:lab(98.3189% -4.74921 -.111711);--color-teal-400:lab(76.0109% -53.3483 -2.27906);--color-teal-500:lab(67.3859% -49.0983 -2.63511);--color-teal-900:lab(29.506% -21.4706 -3.59886);--color-cyan-50:lab(98.3304% -5.97432 -2.62108);--color-cyan-100:lab(95.3146% -13.8285 -6.84732);--color-cyan-200:lab(91.0821% -24.0435 -12.8306);--color-cyan-500:lab(67.805% -35.3952 -30.2018);--color-cyan-600:lab(55.1767% -26.7496 -30.5139);--color-cyan-700:lab(44.7267% -21.5987 -26.118);--color-sky-50:lab(97.3623% -2.33802 -4.13098);--color-sky-400:lab(70.687% -23.6078 -45.9483);--color-sky-500:lab(63.3038% -18.433 -51.0407);--color-sky-900:lab(29.1959% -8.34689 -28.2453);--color-blue-50:lab(96.492% -1.14644 -5.11479);--color-blue-100:lab(92.0301% -2.24757 -11.6453);--color-blue-200:lab(86.15% -4.04379 -21.0797);--color-blue-300:lab(77.5052% -6.4629 -36.42);--color-blue-400:lab(65.0361% -1.42065 -56.9802);--color-blue-500:lab(54.1736% 13.3369 -74.6839);--color-blue-600:lab(44.0605% 29.0279 -86.0352);--color-blue-700:lab(36.9089% 35.0961 -85.6872);--color-blue-800:lab(30.2514% 27.7853 -70.2699);--color-blue-900:lab(26.1542% 15.7545 -51.5504);--color-indigo-50:lab(95.4818% .411302 -6.78529);--color-indigo-300:lab(74.0235% 8.54138 -41.6075);--color-indigo-600:lab(38.4009% 52.6132 -92.3857);--color-indigo-700:lab(32.4486% 49.2217 -84.6695);--color-violet-50:lab(96.2416% 2.28849 -5.51657);--color-violet-100:lab(93.0838% 4.35197 -9.88284);--color-violet-200:lab(87.0888% 8.53688 -19.4189);--color-violet-300:lab(76.7419% 18.3911 -37.0706);--color-violet-400:lab(62.8239% 34.9159 -60.0512);--color-violet-500:lab(49.9355% 55.1776 -81.8963);--color-violet-600:lab(41.088% 68.9966 -91.995);--color-violet-700:lab(35.2783% 67.9912 -88.793);--color-violet-900:lab(24.3783% 45.7525 -61.4902);--color-purple-50:lab(97.1627% 2.99937 -4.13398);--color-purple-100:lab(93.3333% 6.97437 -9.83434);--color-purple-300:lab(78.3298% 26.2195 -34.9499);--color-purple-400:lab(63.6946% 47.6127 -59.2066);--color-purple-500:lab(52.0183% 66.11 -78.2316);--color-purple-600:lab(43.0295% 75.21 -86.5669);--color-purple-700:lab(36.1758% 69.8525 -80.0381);--color-fuchsia-50:lab(97.1083% 4.46233 -4.09334);--color-fuchsia-200:lab(87.7108% 19.9958 -18.2054);--color-fuchsia-700:lab(39.787% 72.2653 -53.1244);--color-rose-50:lab(96.2369% 4.94155 1.28011);--color-rose-400:lab(64.4125% 63.0291 19.2068);--color-rose-500:lab(56.101% 79.4328 31.4532);--color-rose-900:lab(29.7104% 51.514 12.6253);--color-gray-50:lab(98.2596% -.247031 -.706708);--color-gray-100:lab(96.1596% -.0823438 -1.13575);--color-gray-300:lab(85.1236% -.612259 -3.7138);--color-gray-400:lab(65.9269% -.832707 -8.17473);--color-gray-500:lab(47.7841% -.393182 -10.0268);--color-gray-800:lab(16.1051% -1.18239 -11.7533);--color-gray-900:lab(8.11897% .811279 -12.254);--color-zinc-50:lab(98.26% 0 0);--color-zinc-100:lab(96.1634% .0993311 -.364041);--color-zinc-900:lab(8.30603% .618205 -2.16572);--color-stone-50:lab(98.2686% -.0991821 .364304);--color-stone-300:lab(84.7909% .928015 1.59738);--color-stone-700:lab(27.3812% 1.32917 3.57789)}}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::-webkit-file-upload-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::-webkit-file-upload-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:-webkit-any([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:-webkit-any([multiple],[size])) optgroup option{padding-inline-start:20px}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::-webkit-file-upload-button{margin-inline-end:4px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-year-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-month-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-day-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-hour-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-minute-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-second-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-millisecond-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-meridiem-field{padding-block-start:0;padding-block-end:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button{-webkit-appearance:button;appearance:button}input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.top-0\\.5{top:calc(var(--spacing) * .5)}.top-1\\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-10{top:calc(var(--spacing) * 10)}.top-\\[calc\\(100\\%-2px\\)\\]{top:calc(100% - 2px)}.-right-1\\.5{right:calc(var(--spacing) * -1.5)}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-0\\.5{bottom:calc(var(--spacing) * .5)}.bottom-1{bottom:calc(var(--spacing) * 1)}.-left-1\\.5{left:calc(var(--spacing) * -1.5)}.-left-px{left:-1px}.left-0{left:calc(var(--spacing) * 0)}.left-2{left:calc(var(--spacing) * 2)}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.z-\\[1\\]{z-index:1}.z-\\[999\\]{z-index:999}.z-\\[1000\\]{z-index:1000}.z-\\[1100\\]{z-index:1100}.z-\\[1200\\]{z-index:1200}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-0\\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-0\\.5{height:calc(var(--spacing) * .5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-\\[300px\\]{height:300px}.h-full{height:100%}.h-screen{height:100vh}.max-h-\\[80vh\\]{max-height:80vh}.max-h-\\[85vh\\]{max-height:85vh}.max-h-\\[160px\\]{max-height:160px}.max-h-\\[200px\\]{max-height:200px}.max-h-\\[240px\\]{max-height:240px}.min-h-\\[120px\\]{min-height:120px}.w-0\\.5{width:calc(var(--spacing) * .5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-14{width:calc(var(--spacing) * 14)}.w-24{width:calc(var(--spacing) * 24)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-\\[1\\%\\]{width:1%}.w-\\[80px\\]{width:80px}.w-\\[200px\\]{width:200px}.w-\\[480px\\]{width:480px}.w-\\[min\\(560px\\,92vw\\)\\]{width:min(560px,92vw)}.w-\\[min\\(700px\\,92vw\\)\\]{width:min(700px,92vw)}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.max-w-\\[16rem\\]{max-width:16rem}.max-w-\\[90vw\\]{max-width:90vw}.max-w-\\[200px\\]{max-width:200px}.max-w-\\[420px\\]{max-width:420px}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\\[180px\\]{min-width:180px}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-125{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-col-resize{cursor:col-resize}.cursor-grab{cursor:grab}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-y{resize:vertical}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\\[80px_1fr\\]{grid-template-columns:80px 1fr}.grid-cols-\\[100px_1fr\\]{grid-template-columns:100px 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-zinc-100>:not(:last-child)){border-color:var(--color-zinc-100)}.self-stretch{align-self:stretch}.justify-self-end{justify-self:flex-end}.justify-self-start{justify-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-2{border-right-style:var(--tw-border-style);border-right-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-100{border-color:var(--color-amber-100)}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-300{border-color:var(--color-amber-300)}.border-blue-100{border-color:var(--color-blue-100)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-500{border-color:var(--color-blue-500)}.border-cyan-200{border-color:var(--color-cyan-200)}.border-emerald-100{border-color:var(--color-emerald-100)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-200\\/60{border-color:#a4f4cf99}@supports (color:color-mix(in lab, red, red)){.border-emerald-200\\/60{border-color:color-mix(in oklab, var(--color-emerald-200) 60%, transparent)}}.border-fuchsia-200{border-color:var(--color-fuchsia-200)}.border-green-200{border-color:var(--color-green-200)}.border-green-300{border-color:var(--color-green-300)}.border-indigo-300{border-color:var(--color-indigo-300)}.border-line{border-color:var(--color-line)}.border-line-subtle{border-color:var(--color-line-subtle)}.border-orange-200{border-color:var(--color-orange-200)}.border-purple-300{border-color:var(--color-purple-300)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-red-500{border-color:var(--color-red-500)}.border-stone-300{border-color:var(--color-stone-300)}.border-violet-200{border-color:var(--color-violet-200)}.border-violet-200\\/60{border-color:#ddd6ff99}@supports (color:color-mix(in lab, red, red)){.border-violet-200\\/60{border-color:color-mix(in oklab, var(--color-violet-200) 60%, transparent)}}.border-violet-300{border-color:var(--color-violet-300)}.border-white{border-color:var(--color-white)}.border-l-amber-400{border-left-color:var(--color-amber-400)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-50\\/40{background-color:#fffbeb66}@supports (color:color-mix(in lab, red, red)){.bg-amber-50\\/40{background-color:color-mix(in oklab, var(--color-amber-50) 40%, transparent)}}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-black\\/20{background-color:#0003}@supports (color:color-mix(in lab, red, red)){.bg-black\\/20{background-color:color-mix(in oklab, var(--color-black) 20%, transparent)}}.bg-black\\/55{background-color:#0000008c}@supports (color:color-mix(in lab, red, red)){.bg-black\\/55{background-color:color-mix(in oklab, var(--color-black) 55%, transparent)}}.bg-black\\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-50\\/40{background-color:#eff6ff66}@supports (color:color-mix(in lab, red, red)){.bg-blue-50\\/40{background-color:color-mix(in oklab, var(--color-blue-50) 40%, transparent)}}.bg-blue-50\\/60{background-color:#eff6ff99}@supports (color:color-mix(in lab, red, red)){.bg-blue-50\\/60{background-color:color-mix(in oklab, var(--color-blue-50) 60%, transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-cyan-50{background-color:var(--color-cyan-50)}.bg-cyan-100{background-color:var(--color-cyan-100)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-50\\/30{background-color:#ecfdf54d}@supports (color:color-mix(in lab, red, red)){.bg-emerald-50\\/30{background-color:color-mix(in oklab, var(--color-emerald-50) 30%, transparent)}}.bg-emerald-50\\/40{background-color:#ecfdf566}@supports (color:color-mix(in lab, red, red)){.bg-emerald-50\\/40{background-color:color-mix(in oklab, var(--color-emerald-50) 40%, transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-fuchsia-50{background-color:var(--color-fuchsia-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-hover{background-color:var(--color-hover)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-orange-400{background-color:var(--color-orange-400)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-400{background-color:var(--color-purple-400)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-50\\/30{background-color:#fef2f24d}@supports (color:color-mix(in lab, red, red)){.bg-red-50\\/30{background-color:color-mix(in oklab, var(--color-red-50) 30%, transparent)}}.bg-red-50\\/40{background-color:#fef2f266}@supports (color:color-mix(in lab, red, red)){.bg-red-50\\/40{background-color:color-mix(in oklab, var(--color-red-50) 40%, transparent)}}.bg-red-100{background-color:var(--color-red-100)}.bg-red-200{background-color:var(--color-red-200)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-sky-500{background-color:var(--color-sky-500)}.bg-stone-50{background-color:var(--color-stone-50)}.bg-subtle,.bg-subtle\\/50{background-color:var(--color-subtle)}@supports (color:color-mix(in lab, red, red)){.bg-subtle\\/50{background-color:color-mix(in oklab, var(--color-subtle) 50%, transparent)}}.bg-subtle\\/60{background-color:var(--color-subtle)}@supports (color:color-mix(in lab, red, red)){.bg-subtle\\/60{background-color:color-mix(in oklab, var(--color-subtle) 60%, transparent)}}.bg-surface{background-color:var(--color-surface)}.bg-teal-500{background-color:var(--color-teal-500)}.bg-transparent{background-color:#0000}.bg-violet-50{background-color:var(--color-violet-50)}.bg-violet-200{background-color:var(--color-violet-200)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-zinc-900{background-color:var(--color-zinc-900)}.fill-amber-50{fill:var(--color-amber-50)}.fill-amber-400{fill:var(--color-amber-400)}.fill-amber-900{fill:var(--color-amber-900)}.fill-blue-50{fill:var(--color-blue-50)}.fill-blue-900{fill:var(--color-blue-900)}.fill-emerald-50{fill:var(--color-emerald-50)}.fill-emerald-900{fill:var(--color-emerald-900)}.fill-fg-muted{fill:var(--color-fg-muted)}.fill-fg-subtle{fill:var(--color-fg-subtle)}.fill-gray-500{fill:var(--color-gray-500)}.fill-red-500{fill:var(--color-red-500)}.fill-rose-50{fill:var(--color-rose-50)}.fill-rose-900{fill:var(--color-rose-900)}.fill-sky-50{fill:var(--color-sky-50)}.fill-sky-900{fill:var(--color-sky-900)}.fill-teal-50{fill:var(--color-teal-50)}.fill-teal-900{fill:var(--color-teal-900)}.fill-violet-50{fill:var(--color-violet-50)}.fill-violet-900{fill:var(--color-violet-900)}.fill-white{fill:var(--color-white)}.stroke-amber-400{stroke:var(--color-amber-400)}.stroke-blue-400{stroke:var(--color-blue-400)}.stroke-emerald-400{stroke:var(--color-emerald-400)}.stroke-fg-subtle{stroke:var(--color-fg-subtle)}.stroke-red-500{stroke:var(--color-red-500)}.stroke-rose-400{stroke:var(--color-rose-400)}.stroke-sky-400{stroke:var(--color-sky-400)}.stroke-teal-400{stroke:var(--color-teal-400)}.stroke-violet-400{stroke:var(--color-violet-400)}.stroke-\\[2\\.5px\\]{stroke-width:2.5px}.p-0{padding:calc(var(--spacing) * 0)}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-0\\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-px{padding-block-start:1px;padding-block-end:1px}.pt-1\\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-7{padding-left:calc(var(--spacing) * 7)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[12px\\]{font-size:12px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-700\\/80{color:#1447e6cc}@supports (color:color-mix(in lab, red, red)){.text-blue-700\\/80{color:color-mix(in oklab, var(--color-blue-700) 80%, transparent)}}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-cyan-500{color:var(--color-cyan-500)}.text-cyan-600{color:var(--color-cyan-600)}.text-cyan-700{color:var(--color-cyan-700)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-emerald-900{color:var(--color-emerald-900)}.text-fg{color:var(--color-fg)}.text-fg-muted{color:var(--color-fg-muted)}.text-fg-subtle{color:var(--color-fg-subtle)}.text-fuchsia-700{color:var(--color-fuchsia-700)}.text-gray-50{color:var(--color-gray-50)}.text-gray-100{color:var(--color-gray-100)}.text-gray-300{color:var(--color-gray-300)}.text-gray-500{color:var(--color-gray-500)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-orange-700{color:var(--color-orange-700)}.text-purple-500{color:var(--color-purple-500)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-900{color:var(--color-red-900)}.text-stone-700{color:var(--color-stone-700)}.text-violet-600{color:var(--color-violet-600)}.text-violet-700{color:var(--color-violet-700)}.text-violet-700\\/70{color:#7008e7b3}@supports (color:color-mix(in lab, red, red)){.text-violet-700\\/70{color:color-mix(in oklab, var(--color-violet-700) 70%, transparent)}}.text-violet-900{color:var(--color-violet-900)}.text-white{color:var(--color-white)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-600{color:var(--color-yellow-600)}.text-zinc-50{color:var(--color-zinc-50)}.text-zinc-100{color:var(--color-zinc-100)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.placeholder-gray-400::placeholder{color:var(--color-gray-400)}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[0_1px_0_\\#d4d4d8\\]{--tw-shadow:0 1px 0 var(--tw-shadow-color,#d4d4d8);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-blue-400{--tw-ring-color:var(--color-blue-400)}.ring-gray-900{--tw-ring-color:var(--color-gray-900)}.ring-red-700{--tw-ring-color:var(--color-red-700)}.ring-zinc-900{--tw-ring-color:var(--color-zinc-900)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\\[2px\\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\\:bg-blue-400:is(:where(.group):hover *){background-color:var(--color-blue-400)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-focus-visible\\:bg-blue-400:is(:where(.group):focus-visible *){background-color:var(--color-blue-400)}.last\\:mr-0:last-child{margin-right:calc(var(--spacing) * 0)}.last\\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\\:scale-125:hover{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:border-red-300:hover{border-color:var(--color-red-300)}.hover\\:bg-amber-100:hover{background-color:var(--color-amber-100)}.hover\\:bg-amber-200:hover{background-color:var(--color-amber-200)}.hover\\:bg-blue-50\\/50:hover{background-color:#eff6ff80}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-blue-50\\/50:hover{background-color:color-mix(in oklab, var(--color-blue-50) 50%, transparent)}}.hover\\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\\:bg-blue-100\\/50:hover{background-color:#dbeafe80}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-blue-100\\/50:hover{background-color:color-mix(in oklab, var(--color-blue-100) 50%, transparent)}}.hover\\:bg-blue-400:hover{background-color:var(--color-blue-400)}.hover\\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\\:bg-emerald-200:hover{background-color:var(--color-emerald-200)}.hover\\:bg-gray-400:hover{background-color:var(--color-gray-400)}.hover\\:bg-green-400:hover{background-color:var(--color-green-400)}.hover\\:bg-hover:hover,.hover\\:bg-hover\\/50:hover{background-color:var(--color-hover)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-hover\\/50:hover{background-color:color-mix(in oklab, var(--color-hover) 50%, transparent)}}.hover\\:bg-orange-400:hover{background-color:var(--color-orange-400)}.hover\\:bg-purple-400:hover{background-color:var(--color-purple-400)}.hover\\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\\:bg-red-50\\/50:hover{background-color:#fef2f280}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-red-50\\/50:hover{background-color:color-mix(in oklab, var(--color-red-50) 50%, transparent)}}.hover\\:bg-red-50\\/70:hover{background-color:#fef2f2b3}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-red-50\\/70:hover{background-color:color-mix(in oklab, var(--color-red-50) 70%, transparent)}}.hover\\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\\:bg-red-300:hover{background-color:var(--color-red-300)}.hover\\:bg-red-400:hover{background-color:var(--color-red-400)}.hover\\:bg-subtle:hover{background-color:var(--color-subtle)}.hover\\:bg-violet-100\\/70:hover{background-color:#ede9feb3}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-violet-100\\/70:hover{background-color:color-mix(in oklab, var(--color-violet-100) 70%, transparent)}}.hover\\:bg-violet-300:hover{background-color:var(--color-violet-300)}.hover\\:text-fg:hover{color:var(--color-fg)}.hover\\:text-fg-muted:hover{color:var(--color-fg-muted)}.hover\\:text-red-600:hover{color:var(--color-red-600)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.focus\\:border-line:focus{border-color:var(--color-line)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-blue-500:focus-visible{outline-color:var(--color-blue-500)}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}@media (min-width:40rem){.sm\\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (min-width:48rem){.md\\:flex{display:flex}.md\\:hidden{display:none}}}*{box-sizing:border-box}:host,:root{--at-surface:#fcfdfe;--at-surface-hover:#f5f6f9;--at-muted:#f2f5f8;--at-code:#f3f6fa;--at-text-primary:#1a1f29;--at-text-secondary:#515864;--at-text-muted:#868d97;--at-border:#dfe1e5;--at-border-light:#eef0f3;--at-shadow:#171f2e1a;--at-accent:#3177dc;--at-error-bg:#ffecea;--at-error-text:#cc2827;--at-error-border:#f8a49d;--at-ok-bg:#e0fae4;--at-ok-text:#0e8c41;--at-ok-border:#89da9b;--at-highlight-bg:#fff6d1;--at-selected-bg:#e9f3ff;--at-scrollbar-thumb:#ced1d6;--at-scrollbar-thumb-hover:#999fa8}@supports (color:color(display-p3 0 0 0)){:host,:root{--at-surface:color(display-p3 .989609 .992382 .997175);--at-surface-hover:color(display-p3 .960878 .966392 .975929);--at-muted:color(display-p3 .951795 .958673 .970576);--at-code:color(display-p3 .955784 .964045 .978342);--at-text-primary:color(display-p3 .106201 .12247 .157281);--at-text-secondary:color(display-p3 .323937 .346032 .388256);--at-text-muted:color(display-p3 .528711 .550898 .589512);--at-border:color(display-p3 .875378 .883503 .897566);--at-border-light:color(display-p3 .934839 .941694 .953557);--at-shadow:color(display-p3 .0979137 .121845 .174352/.1);--at-accent:color(display-p3 .266557 .461859 .837181);--at-error-bg:color(display-p3 1.00853 .923821 .911661);--at-error-text:color(display-p3 .7372 .221951 .191652);--at-error-border:color(display-p3 .924106 .659231 .626897);--at-ok-bg:color(display-p3 .896905 .977035 .900254);--at-ok-text:color(display-p3 .247857 .539374 .286752);--at-ok-border:color(display-p3 .609805 .847347 .627399);--at-highlight-bg:color(display-p3 .994932 .96424 .830533);--at-selected-bg:color(display-p3 .910207 .951093 1.02232);--at-scrollbar-thumb:color(display-p3 .80912 .819793 .838278);--at-scrollbar-thumb-hover:color(display-p3 .60332 .622263 .655172)}}@supports (color:lab(0% 0 0)){:host,:root{--at-surface:lab(99.2988% -.132054 -.745118);--at-surface-hover:lab(96.9735% -.261605 -1.48877);--at-muted:lab(96.2747% -.325292 -1.86008);--at-code:lab(96.736% -.388592 -2.23104);--at-text-primary:lab(11.741% -.349499 -7.30943);--at-text-secondary:lab(37.2801% -.862852 -7.73156);--at-text-muted:lab(58.1854% -1.04666 -6.62941);--at-border:lab(89.5439% -.387847 -2.23061);--at-border-light:lab(94.7667% -.325233 -1.86);--at-shadow:lab(11.6682% -.113927 -10.842/.1);--at-accent:lab(49.8997% 5.63273 -59.1615);--at-error-bg:lab(95.0829% 9.19622 4.96011);--at-error-text:lab(45.8049% 62.9533 44.1);--at-error-border:lab(75.8489% 31.0226 17.1029);--at-ok-bg:lab(95.8936% -11.84 7.56052);--at-ok-text:lab(50.824% -45.5785 30.3918);--at-ok-border:lab(80.6679% -35.8792 23.2774);--at-highlight-bg:lab(96.7959% -.972748 19.4827);--at-selected-bg:lab(95.2674% -1.71572 -11.035);--at-scrollbar-thumb:lab(83.7382% -.510752 -2.97043);--at-scrollbar-thumb-hover:lab(65.1562% -.902712 -5.53997)}}:host([data-theme=dark]),:root[data-theme=dark]{--at-surface:#151b25;--at-surface-hover:#1d2431;--at-muted:#191f2b;--at-code:#1b222d;--at-text-primary:#dfe5ed;--at-text-secondary:#9ca5b3;--at-text-muted:#727b88;--at-border:#2e3643;--at-border-light:#232934;--at-shadow:#00000073;--at-accent:#63a6ff;--at-error-bg:#742e2940;--at-error-text:#ff7f73;--at-error-border:#cf413a;--at-ok-bg:#39794933;--at-ok-text:#6ed889;--at-ok-border:#2e9e52;--at-highlight-bg:#b8a4571f;--at-selected-bg:#6087c22e;--at-scrollbar-thumb:#3d434d;--at-scrollbar-thumb-hover:#565e6c}@supports (color:color(display-p3 0 0 0)){:host([data-theme=dark]),:root[data-theme=dark]{--at-surface:color(display-p3 .0866362 .104012 .141551);--at-surface-hover:color(display-p3 .119527 .140938 .187194);--at-muted:color(display-p3 .10291 .122282 .164135);--at-code:color(display-p3 .112011 .131618 .173879);--at-text-primary:color(display-p3 .880198 .897517 .925177);--at-text-secondary:color(display-p3 .618009 .647763 .695453);--at-text-muted:color(display-p3 .454817 .481202 .527256);--at-border:color(display-p3 .187231 .209329 .256415);--at-border-light:color(display-p3 .14159 .16023 .200008);--at-shadow:color(display-p3 0 0 0/.45);--at-accent:color(display-p3 .445537 .644287 .978823);--at-error-bg:color(display-p3 .422373 .197971 .171651/.25);--at-error-text:color(display-p3 .938127 .52257 .468553);--at-error-border:color(display-p3 .751519 .297873 .256966);--at-ok-bg:color(display-p3 .287508 .467968 .304198/.2);--at-ok-text:color(display-p3 .538207 .838899 .565385);--at-ok-border:color(display-p3 .319936 .612208 .354223);--at-highlight-bg:color(display-p3 .708898 .646062 .385093/.12);--at-selected-bg:color(display-p3 .407909 .526271 .742584/.18);--at-scrollbar-thumb:color(display-p3 .241934 .260441 .299404);--at-scrollbar-thumb-hover:color(display-p3 .342885 .367416 .419047)}}@supports (color:lab(0% 0 0)){:host([data-theme=dark]),:root[data-theme=dark]{--at-surface:lab(9.40435% -.26536 -8.00193);--at-surface-hover:lab(14.0233% -.313595 -9.45683);--at-muted:lab(11.7138% -.289485 -8.72938);--at-code:lab(12.8756% -.320837 -8.73908);--at-text-primary:lab(90.6923% -.891328 -4.41389);--at-text-secondary:lab(67.4629% -1.51783 -8.03232);--at-text-muted:lab(51.2096% -1.21292 -8.07107);--at-border:lab(22.1597% -.497714 -9.15806);--at-border-light:lab(16.373% -.418156 -8.05204);--at-shadow:lab(0% 0 0/.45);--at-accent:lab(66.6499% -1.4444 -52.3046);--at-error-bg:lab(29.4384% 31.1218 19.7271/.25);--at-error-text:lab(68.3188% 49.5998 30.86);--at-error-border:lab(49.5145% 56.3761 37.3383);--at-ok-bg:lab(45.5916% -30.0637 19.6786/.2);--at-ok-text:lab(78.7102% -45.0683 29.4705);--at-ok-border:lab(57.7987% -45.4011 30.0617);--at-highlight-bg:lab(67.9375% .259876 42.1122/.12);--at-selected-bg:lab(55.3782% -1.45972 -35.4324/.18);--at-scrollbar-thumb:lab(27.992% -.544697 -7.38333);--at-scrollbar-thumb-hover:lab(39.5702% -.685155 -9.23098)}}@media (prefers-color-scheme:dark){:host([data-theme=system]),:root[data-theme=system]{--at-surface:#151b25;--at-surface-hover:#1d2431;--at-muted:#191f2b;--at-code:#1b222d;--at-text-primary:#dfe5ed;--at-text-secondary:#9ca5b3;--at-text-muted:#727b88;--at-border:#2e3643;--at-border-light:#232934;--at-shadow:#00000073;--at-accent:#63a6ff;--at-error-bg:#742e2940;--at-error-text:#ff7f73;--at-error-border:#cf413a;--at-ok-bg:#39794933;--at-ok-text:#6ed889;--at-ok-border:#2e9e52;--at-highlight-bg:#b8a4571f;--at-selected-bg:#6087c22e;--at-scrollbar-thumb:#3d434d;--at-scrollbar-thumb-hover:#565e6c}@supports (color:color(display-p3 0 0 0)){:host([data-theme=system]),:root[data-theme=system]{--at-surface:color(display-p3 .0866362 .104012 .141551);--at-surface-hover:color(display-p3 .119527 .140938 .187194);--at-muted:color(display-p3 .10291 .122282 .164135);--at-code:color(display-p3 .112011 .131618 .173879);--at-text-primary:color(display-p3 .880198 .897517 .925177);--at-text-secondary:color(display-p3 .618009 .647763 .695453);--at-text-muted:color(display-p3 .454817 .481202 .527256);--at-border:color(display-p3 .187231 .209329 .256415);--at-border-light:color(display-p3 .14159 .16023 .200008);--at-shadow:color(display-p3 0 0 0/.45);--at-accent:color(display-p3 .445537 .644287 .978823);--at-error-bg:color(display-p3 .422373 .197971 .171651/.25);--at-error-text:color(display-p3 .938127 .52257 .468553);--at-error-border:color(display-p3 .751519 .297873 .256966);--at-ok-bg:color(display-p3 .287508 .467968 .304198/.2);--at-ok-text:color(display-p3 .538207 .838899 .565385);--at-ok-border:color(display-p3 .319936 .612208 .354223);--at-highlight-bg:color(display-p3 .708898 .646062 .385093/.12);--at-selected-bg:color(display-p3 .407909 .526271 .742584/.18);--at-scrollbar-thumb:color(display-p3 .241934 .260441 .299404);--at-scrollbar-thumb-hover:color(display-p3 .342885 .367416 .419047)}}@supports (color:lab(0% 0 0)){:host([data-theme=system]),:root[data-theme=system]{--at-surface:lab(9.40435% -.26536 -8.00193);--at-surface-hover:lab(14.0233% -.313595 -9.45683);--at-muted:lab(11.7138% -.289485 -8.72938);--at-code:lab(12.8756% -.320837 -8.73908);--at-text-primary:lab(90.6923% -.891328 -4.41389);--at-text-secondary:lab(67.4629% -1.51783 -8.03232);--at-text-muted:lab(51.2096% -1.21292 -8.07107);--at-border:lab(22.1597% -.497714 -9.15806);--at-border-light:lab(16.373% -.418156 -8.05204);--at-shadow:lab(0% 0 0/.45);--at-accent:lab(66.6499% -1.4444 -52.3046);--at-error-bg:lab(29.4384% 31.1218 19.7271/.25);--at-error-text:lab(68.3188% 49.5998 30.86);--at-error-border:lab(49.5145% 56.3761 37.3383);--at-ok-bg:lab(45.5916% -30.0637 19.6786/.2);--at-ok-text:lab(78.7102% -45.0683 29.4705);--at-ok-border:lab(57.7987% -45.4011 30.0617);--at-highlight-bg:lab(67.9375% .259876 42.1122/.12);--at-selected-bg:lab(55.3782% -1.45972 -35.4324/.18);--at-scrollbar-thumb:lab(27.992% -.544697 -7.38333);--at-scrollbar-thumb-hover:lab(39.5702% -.685155 -9.23098)}}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--at-scrollbar-thumb,#d4d4d8);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--at-scrollbar-thumb-hover,#a1a1aa)}.waterfall-row:hover .waterfall-bar{filter:brightness(1.1)}.waterfall-bar{transition:all .15s ease-out}.trace-list-container{container-type:inline-size}.trace-grid{grid-template-columns:20px 104px minmax(0,1fr) 84px 52px 88px 60px 16px;align-items:center;gap:.75rem;display:grid}@container (width<=640px){.trace-grid{grid-template-columns:20px 92px minmax(0,1fr) 80px 58px 16px}.trace-col-spans,.trace-col-time{display:none}}@keyframes at-modal-in{0%{opacity:0;transform:translateY(6px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes at-fade-in{0%{opacity:0}to{opacity:1}}.at-modal-in{animation:.17s cubic-bezier(.22,1,.36,1) at-modal-in}.at-backdrop-in{animation:.17s ease-out at-fade-in}@media (prefers-reduced-motion:reduce){.at-modal-in,.at-backdrop-in{animation:none}}.at-edge-label{paint-order:stroke;stroke:var(--color-surface);stroke-width:3px;stroke-linejoin:round}:where(a,button,[role=button],input,select,textarea,summary,[tabindex]:not([tabindex="-1"])):focus-visible{outline:2px solid var(--at-accent);outline-offset:2px}:where([data-focus-inset]):focus-visible{outline-offset:-2px}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@keyframes pulse{50%{opacity:.5}}`,wy=class extends HTMLElement{constructor(...e){super(...e),x(this,`cleanup`,null)}connectedCallback(){let e=this.attachShadow({mode:`open`}),t=document.createElement(`link`);t.rel=`stylesheet`,t.href=`https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:ital,wght@0,400;0,500;0,600;1,400&display=swap`,e.appendChild(t);let n=document.createElement(`style`);n.textContent=Cy,e.appendChild(n);let r=this.getAttribute(`mode`)||`widget`,i=this.getAttribute(`ws-url`)||this.deriveWsUrl();this.cleanup=Sy(e,{mode:r,wsUrl:i})}disconnectedCallback(){this.cleanup?.(),this.cleanup=null}deriveWsUrl(){return`ws://${location.host}/ws`}};x(wy,`observedAttributes`,[`mode`,`ws-url`]);function Ty(){customElements.get(`autotel-devtools`)||customElements.define(`autotel-devtools`,wy)}var Ey=document.currentScript;function Dy(){let e=location.hash.startsWith(`#`)?location.hash.slice(1):``;if(!e)return;let t=new URLSearchParams(e),n=t.get(`trace`);if(n)return{traceId:n,spanId:t.get(`span`)||void 0}}function Oy(){let e=Dy();if(!Ey?.src)return{mode:`widget`,wsUrl:`ws://${location.host}/ws`,deepLink:e};let t=new URL(Ey.src),n=t.searchParams;return{mode:n.get(`mode`)||`widget`,wsUrl:n.get(`ws`)||`ws://${t.host}/ws`,deepLink:e}}function ky(){if(Ty(),document.querySelector(`autotel-devtools`))return;let{mode:e,wsUrl:t,deepLink:n}=Oy(),r=document.createElement(`div`);r.id=`autotel-devtools-root`,document.body.appendChild(r);let i=r.attachShadow({mode:`open`}),a=document.createElement(`style`);a.textContent=Cy,i.appendChild(a),Sy(i,{mode:e,wsUrl:t,deepLink:n})}return document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,ky):ky(),e.mountWidget=Sy,e.registerElement=Ty,e})({});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "autotel-devtools",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.1",
|
|
4
4
|
"description": "Standalone OTLP receiver with web UI for local development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"vitest-mock-extended": "^4.0.0"
|
|
91
91
|
},
|
|
92
92
|
"peerDependencies": {
|
|
93
|
-
"autotel": "3.4.
|
|
93
|
+
"autotel": "3.4.1"
|
|
94
94
|
},
|
|
95
95
|
"peerDependenciesMeta": {
|
|
96
96
|
"autotel": {
|
|
@@ -98,12 +98,14 @@ export const loadUser = trace(ctx => async (id: string) => {
|
|
|
98
98
|
## CLI
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
|
+
npx autotel-devtools 4319 # port as bare positional
|
|
101
102
|
npx autotel-devtools --port 4319 --host 0.0.0.0 --title "My App"
|
|
102
103
|
```
|
|
103
104
|
|
|
104
|
-
| Flag | Short | Purpose |
|
|
105
|
+
| Arg / Flag | Short | Purpose |
|
|
105
106
|
| --- | --- | --- |
|
|
106
|
-
|
|
|
107
|
+
| `[port]` | — | Listen port shorthand for `--port` (explicit `--port` wins) |
|
|
108
|
+
| `--port` | `-p` | Listen port (default 4318); walks to next free port if taken |
|
|
107
109
|
| `--host` | `-H` | Bind host (default 127.0.0.1) |
|
|
108
110
|
| `--title` | `-t` | Dashboard title |
|
|
109
111
|
|