@forinda/kickjs-devtools 7.4.0 → 7.5.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.
@@ -1,8 +1,8 @@
1
- (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))s(l);new MutationObserver(l=>{for(const a of l)if(a.type==="childList")for(const i of a.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function r(l){const a={};return l.integrity&&(a.integrity=l.integrity),l.referrerPolicy&&(a.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?a.credentials="include":l.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function s(l){if(l.ep)return;l.ep=!0;const a=r(l);fetch(l.href,a)}})();var xe={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return Fr(this.context.count)},getNextContextId(){return Fr(this.context.count++)}};function Fr(e){const t=String(e),r=t.length-1;return xe.context.id+(r?String.fromCharCode(96+r):"")+t}function dr(e){xe.context=e}function xl(){return{...xe.context,id:xe.getNextContextId(),count:0}}var bl=(e,t)=>e===t,En=Symbol("solid-track"),It={equals:bl},Kr=null,Mn=Rn,Re=1,ft=2,Tn={owned:null,cleanups:null,context:null,owner:null},he=null,F=null,mt=null,Qe=null,ve=null,_e=null,Ee=null,Kt=0;function Xe(e,t){const r=ve,s=he,l=e.length===0,a=t===void 0?s:t,i=l?Tn:{owned:null,cleanups:null,context:a?a.context:null,owner:a},u=l?e:()=>e(()=>Ae(()=>Be(i)));he=i,ve=null;try{return Ue(u,!0)}finally{ve=r,he=s}}function R(e,t){t=t?Object.assign({},It,t):It;const r={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},s=l=>(typeof l=="function"&&(F&&F.running&&F.sources.has(r)?l=l(r.tValue):l=l(r.value)),Ln(r,l));return[An.bind(r),s]}function N(e,t,r){const s=Tr(e,t,!1,Re);mt&&F&&F.running?_e.push(s):vt(s)}function qe(e,t,r){Mn=Sl;const s=Tr(e,t,!1,Re),l=fr&&wl(fr);l&&(s.suspense=l),(!r||!r.render)&&(s.user=!0),Ee?Ee.push(s):vt(s)}function se(e,t,r){r=r?Object.assign({},It,r):It;const s=Tr(e,t,!0,0);return s.observers=null,s.observerSlots=null,s.comparator=r.equals||void 0,mt&&F&&F.running?(s.tState=Re,_e.push(s)):vt(s),An.bind(s)}function Ae(e){if(!Qe&&ve===null)return e();const t=ve;ve=null;try{return Qe?Qe.untrack(e):e()}finally{ve=t}}function $l(e,t,r){const s=Array.isArray(e);let l,a=r&&r.defer;return i=>{let u;if(s){u=Array(e.length);for(let h=0;h<e.length;h++)u[h]=e[h]()}else u=e();if(a)return a=!1,i;const c=Ae(()=>t(u,l,i));return l=u,c}}function Ne(e){qe(()=>Ae(e))}function Se(e){return he===null||(he.cleanups===null?he.cleanups=[e]:he.cleanups.push(e)),e}function yl(e){if(F&&F.running)return e(),F.done;const t=ve,r=he;return Promise.resolve().then(()=>{ve=t,he=r;let s;return(mt||fr)&&(s=F||(F={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),s.done||(s.done=new Promise(l=>s.resolve=l)),s.running=!0),Ue(e,!1),ve=he=null,s?s.done:void 0})}var[qd,Jr]=R(!1);function wl(e){let t;return he&&he.context&&(t=he.context[e.id])!==void 0?t:e.defaultValue}var fr;function An(){const e=F&&F.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===Re)vt(this);else{const t=_e;_e=null,Ue(()=>Dt(this),!1),_e=t}if(ve){const t=this.observers;if(!t||t[t.length-1]!==ve){const r=t?t.length:0;ve.sources?(ve.sources.push(this),ve.sourceSlots.push(r)):(ve.sources=[this],ve.sourceSlots=[r]),t?(t.push(ve),this.observerSlots.push(ve.sources.length-1)):(this.observers=[ve],this.observerSlots=[ve.sources.length-1])}}return e&&F.sources.has(this)?this.tValue:this.value}function Ln(e,t,r){let s=F&&F.running&&F.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(s,t)){if(F){const l=F.running;(l||!r&&F.sources.has(e))&&(F.sources.add(e),e.tValue=t),l||(e.value=t)}else e.value=t;e.observers&&e.observers.length&&Ue(()=>{for(let l=0;l<e.observers.length;l+=1){const a=e.observers[l],i=F&&F.running;i&&F.disposed.has(a)||((i?!a.tState:!a.state)&&(a.pure?_e.push(a):Ee.push(a),a.observers&&On(a)),i?a.tState=Re:a.state=Re)}if(_e.length>1e6)throw _e=[],new Error},!1)}return t}function vt(e){if(!e.fn)return;Be(e);const t=Kt;Vr(e,F&&F.running&&F.sources.has(e)?e.tValue:e.value,t),F&&!F.running&&F.sources.has(e)&&queueMicrotask(()=>{Ue(()=>{F&&(F.running=!0),ve=he=e,Vr(e,e.tValue,t),ve=he=null},!1)})}function Vr(e,t,r){let s;const l=he,a=ve;ve=he=e;try{s=e.fn(t)}catch(i){return e.pure&&(F&&F.running?(e.tState=Re,e.tOwned&&e.tOwned.forEach(Be),e.tOwned=void 0):(e.state=Re,e.owned&&e.owned.forEach(Be),e.owned=null)),e.updatedAt=r+1,Ar(i)}finally{ve=a,he=l}(!e.updatedAt||e.updatedAt<=r)&&(e.updatedAt!=null&&"observers"in e?Ln(e,s,!0):F&&F.running&&e.pure?(F.sources.has(e)||(e.value=s),F.sources.add(e),e.tValue=s):e.value=s,e.updatedAt=r)}function Tr(e,t,r,s=Re,l){const a={fn:e,state:s,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:he,context:he?he.context:null,pure:r};if(F&&F.running&&(a.state=0,a.tState=s),he===null||he!==Tn&&(F&&F.running&&he.pure?he.tOwned?he.tOwned.push(a):he.tOwned=[a]:he.owned?he.owned.push(a):he.owned=[a]),Qe&&a.fn){const i=a.fn,[u,c]=R(void 0,{equals:!1}),h=Qe.factory(i,c);Se(()=>h.dispose());let f,p=!1;const v=()=>yl(c).then(()=>{f&&(f.dispose(),f=void 0,p||c())});a.fn=x=>(u(),F&&F.running?(f||(f=Qe.factory(i,v)),f.track(x)):(p=!0,h.track(x)))}return a}function ht(e){const t=F&&F.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===ft)return Dt(e);if(e.suspense&&Ae(e.suspense.inFallback))return e.suspense.effects.push(e);const r=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<Kt);){if(t&&F.disposed.has(e))return;(t?e.tState:e.state)&&r.push(e)}for(let s=r.length-1;s>=0;s--){if(e=r[s],t){let l=e,a=r[s+1];for(;(l=l.owner)&&l!==a;)if(F.disposed.has(l))return}if((t?e.tState:e.state)===Re)vt(e);else if((t?e.tState:e.state)===ft){const l=_e;_e=null,Ue(()=>Dt(e,r[0]),!1),_e=l}}}function Ue(e,t){if(_e)return e();let r=!1;t||(_e=[]),Ee?r=!0:Ee=[],Kt++;try{const s=e();return _l(r),s}catch(s){r||(Ee=null),_e=null,Ar(s)}}function _l(e){if(_e&&(mt&&F&&F.running?kl(_e):Rn(_e),_e=null),e)return;let t;if(F){if(!F.promises.size&&!F.queue.size){const s=F.sources,l=F.disposed;Ee.push.apply(Ee,F.effects),t=F.resolve;for(const a of Ee)"tState"in a&&(a.state=a.tState),delete a.tState;F=null,Ue(()=>{for(const a of l)Be(a);for(const a of s){if(a.value=a.tValue,a.owned)for(let i=0,u=a.owned.length;i<u;i++)Be(a.owned[i]);a.tOwned&&(a.owned=a.tOwned),delete a.tValue,delete a.tOwned,a.tState=0}Jr(!1)},!1)}else if(F.running){F.running=!1,F.effects.push.apply(F.effects,Ee),Ee=null,Jr(!0);return}}const r=Ee;Ee=null,r.length&&Ue(()=>Mn(r),!1),t&&t()}function Rn(e){for(let t=0;t<e.length;t++)ht(e[t])}function kl(e){for(let t=0;t<e.length;t++){const r=e[t],s=F.queue;s.has(r)||(s.add(r),mt(()=>{s.delete(r),Ue(()=>{F.running=!0,ht(r)},!1),F&&(F.running=!1)}))}}function Sl(e){let t,r=0;for(t=0;t<e.length;t++){const s=e[t];s.user?e[r++]=s:ht(s)}if(xe.context){if(xe.count){xe.effects||(xe.effects=[]),xe.effects.push(...e.slice(0,r));return}dr()}for(xe.effects&&(xe.done||!xe.count)&&(e=[...xe.effects,...e],r+=xe.effects.length,delete xe.effects),t=0;t<r;t++)ht(e[t])}function Dt(e,t){const r=F&&F.running;r?e.tState=0:e.state=0;for(let s=0;s<e.sources.length;s+=1){const l=e.sources[s];if(l.sources){const a=r?l.tState:l.state;a===Re?l!==t&&(!l.updatedAt||l.updatedAt<Kt)&&ht(l):a===ft&&Dt(l,t)}}}function On(e){const t=F&&F.running;for(let r=0;r<e.observers.length;r+=1){const s=e.observers[r];(t?!s.tState:!s.state)&&(t?s.tState=ft:s.state=ft,s.pure?_e.push(s):Ee.push(s),s.observers&&On(s))}}function Be(e){let t;if(e.sources)for(;e.sources.length;){const r=e.sources.pop(),s=e.sourceSlots.pop(),l=r.observers;if(l&&l.length){const a=l.pop(),i=r.observerSlots.pop();s<l.length&&(a.sourceSlots[i]=s,l[s]=a,r.observerSlots[s]=i)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)Be(e.tOwned[t]);delete e.tOwned}if(F&&F.running&&e.pure)qn(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)Be(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}F&&F.running?e.tState=0:e.state=0}function qn(e,t){if(t||(e.tState=0,F.disposed.add(e)),e.owned)for(let r=0;r<e.owned.length;r++)qn(e.owned[r])}function Cl(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error",{cause:e})}function Gr(e,t,r){try{for(const s of t)s(e)}catch(s){Ar(s,r&&r.owner||null)}}function Ar(e,t=he){const r=Kr&&t&&t.context&&t.context[Kr],s=Cl(e);if(!r)throw s;Ee?Ee.push({fn(){Gr(s,r,t)},state:Re}):Gr(s,r,t)}var hr=Symbol("fallback");function Ut(e){for(let t=0;t<e.length;t++)e[t]()}function El(e,t,r={}){let s=[],l=[],a=[],i=0,u=t.length>1?[]:null;return Se(()=>Ut(a)),()=>{let c=e()||[],h=c.length,f,p;return c[En],Ae(()=>{let x,w,M,y,m,S,b,g,$;if(h===0)i!==0&&(Ut(a),a=[],s=[],l=[],i=0,u&&(u=[])),r.fallback&&(s=[hr],l[0]=Xe(C=>(a[0]=C,r.fallback())),i=1);else if(i===0){for(l=new Array(h),p=0;p<h;p++)s[p]=c[p],l[p]=Xe(v);i=h}else{for(M=new Array(h),y=new Array(h),u&&(m=new Array(h)),S=0,b=Math.min(i,h);S<b&&s[S]===c[S];S++);for(b=i-1,g=h-1;b>=S&&g>=S&&s[b]===c[g];b--,g--)M[g]=l[b],y[g]=a[b],u&&(m[g]=u[b]);for(x=new Map,w=new Array(g+1),p=g;p>=S;p--)$=c[p],f=x.get($),w[p]=f===void 0?-1:f,x.set($,p);for(f=S;f<=b;f++)$=s[f],p=x.get($),p!==void 0&&p!==-1?(M[p]=l[f],y[p]=a[f],u&&(m[p]=u[f]),p=w[p],x.set($,p)):a[f]();for(p=S;p<h;p++)p in M?(l[p]=M[p],a[p]=y[p],u&&(u[p]=m[p],u[p](p))):l[p]=Xe(v);l=l.slice(0,i=h),s=c.slice(0)}return l});function v(x){if(a[p]=x,u){const[w,M]=R(p);return u[p]=M,t(c[p],w)}return t(c[p])}}}function Ml(e,t,r={}){let s=[],l=[],a=[],i=[],u=0,c;return Se(()=>Ut(a)),()=>{const h=e()||[],f=h.length;return h[En],Ae(()=>{if(f===0)return u!==0&&(Ut(a),a=[],s=[],l=[],u=0,i=[]),r.fallback&&(s=[hr],l[0]=Xe(v=>(a[0]=v,r.fallback())),u=1),l;for(s[0]===hr&&(a[0](),a=[],s=[],l=[],u=0),c=0;c<f;c++)c<s.length&&s[c]!==h[c]?i[c](()=>h[c]):c>=s.length&&(l[c]=Xe(p));for(;c<s.length;c++)a[c]();return u=i.length=a.length=f,s=h.slice(0),l=l.slice(0,u)});function p(v){a[c]=v;const[x,w]=R(h[c]);return i[c]=w,t(x,c)}}}var Tl=!1;function o(e,t){if(Tl&&xe.context){const r=xe.context;dr(xl());const s=Ae(()=>e(t||{}));return dr(r),s}return Ae(()=>e(t||{}))}var Al=e=>`Stale read from <${e}>.`;function te(e){const t="fallback"in e&&{fallback:()=>e.fallback};return se(El(()=>e.each,e.children,t||void 0))}function Nn(e){const t="fallback"in e&&{fallback:()=>e.fallback};return se(Ml(()=>e.each,e.children,t||void 0))}function _(e){const t=e.keyed,r=se(()=>e.when,void 0,void 0),s=t?r:se(r,void 0,{equals:(l,a)=>!l==!a});return se(()=>{const l=s();if(l){const a=e.children;return typeof a=="function"&&a.length>0?Ae(()=>a(t?l:()=>{if(!Ae(s))throw Al("Show");return r()})):a}return e.fallback},void 0,void 0)}var le=e=>se(()=>e());function Ll(e,t,r){let s=r.length,l=t.length,a=s,i=0,u=0,c=t[l-1].nextSibling,h=null;for(;i<l||u<a;){if(t[i]===r[u]){i++,u++;continue}for(;t[l-1]===r[a-1];)l--,a--;if(l===i){const f=a<s?u?r[u-1].nextSibling:r[a-u]:c;for(;u<a;)e.insertBefore(r[u++],f)}else if(a===u)for(;i<l;)(!h||!h.has(t[i]))&&t[i].remove(),i++;else if(t[i]===r[a-1]&&r[u]===t[l-1]){const f=t[--l].nextSibling;e.insertBefore(r[u++],t[i++].nextSibling),e.insertBefore(r[--a],f),t[l]=r[a]}else{if(!h){h=new Map;let p=u;for(;p<a;)h.set(r[p],p++)}const f=h.get(t[i]);if(f!=null)if(u<f&&f<a){let p=i,v=1,x;for(;++p<l&&p<a&&!((x=h.get(t[p]))==null||x!==f+v);)v++;if(v>f-u){const w=t[i];for(;u<f;)e.insertBefore(r[u++],w)}else e.replaceChild(r[u++],t[i++])}else i++;else t[i++].remove()}}}var Yr="_$DX_DELEGATE";function Rl(e,t,r,s={}){let l;return Xe(a=>{l=a,t===document?e():n(t,e(),t.firstChild?null:void 0,r)},s.owner),()=>{l(),t.textContent=""}}function d(e,t,r,s){let l;const a=()=>{const u=s?document.createElementNS("http://www.w3.org/1998/Math/MathML","template"):document.createElement("template");return u.innerHTML=e,r?u.content.firstChild.firstChild:s?u.firstChild:u.content.firstChild},i=t?()=>Ae(()=>document.importNode(l||(l=a()),!0)):()=>(l||(l=a())).cloneNode(!0);return i.cloneNode=i,i}function ye(e,t=window.document){const r=t[Yr]||(t[Yr]=new Set);for(let s=0,l=e.length;s<l;s++){const a=e[s];r.has(a)||(r.add(a),t.addEventListener(a,Ol))}}function X(e,t,r){Rr(e)||(r==null?e.removeAttribute(t):e.setAttribute(t,r))}function j(e,t){Rr(e)||(t==null?e.removeAttribute("class"):e.className=t)}function Lr(e,t,r,s){if(s)Array.isArray(r)?(e[`$$${t}`]=r[0],e[`$$${t}Data`]=r[1]):e[`$$${t}`]=r;else if(Array.isArray(r)){const l=r[0];e.addEventListener(t,r[0]=a=>l.call(e,r[1],a))}else e.addEventListener(t,r,typeof r!="function"&&r)}function Pn(e,t,r){if(!t)return r?X(e,"style"):t;const s=e.style;if(typeof t=="string")return s.cssText=t;typeof r=="string"&&(s.cssText=r=void 0),r||(r={}),t||(t={});let l,a;for(a in r)t[a]??s.removeProperty(a),delete r[a];for(a in t)l=t[a],l!==r[a]&&(s.setProperty(a,l),r[a]=l);return r}function Ie(e,t,r){r!=null?e.style.setProperty(t,r):e.style.removeProperty(t)}function tt(e,t,r){return Ae(()=>e(t,r))}function n(e,t,r,s){if(r!==void 0&&!s&&(s=[]),typeof t!="function")return jt(e,t,s,r);N(l=>jt(e,t(),l,r),s)}function Rr(e){return!!xe.context&&!xe.done&&(!e||e.isConnected)}function Ol(e){if(xe.registry&&xe.events&&xe.events.find(([c,h])=>h===e))return;let t=e.target;const r=`$$${e.type}`,s=e.target,l=e.currentTarget,a=c=>Object.defineProperty(e,"target",{configurable:!0,value:c}),i=()=>{const c=t[r];if(c&&!t.disabled){const h=t[`${r}Data`];if(h!==void 0?c.call(t,h,e):c.call(t,e),e.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(e.target)&&a(t.host),!0},u=()=>{for(;i()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),xe.registry&&!xe.done&&(xe.done=_$HY.done=!0),e.composedPath){const c=e.composedPath();a(c[0]);for(let h=0;h<c.length-2&&(t=c[h],!!i());h++){if(t._$host){t=t._$host,u();break}if(t.parentNode===l)break}}else u();a(s)}function jt(e,t,r,s,l){const a=Rr(e);if(a){!r&&(r=[...e.childNodes]);let c=[];for(let h=0;h<r.length;h++){const f=r[h];f.nodeType===8&&f.data.slice(0,2)==="!$"?f.remove():c.push(f)}r=c}for(;typeof r=="function";)r=r();if(t===r)return r;const i=typeof t,u=s!==void 0;if(e=u&&r[0]&&r[0].parentNode||e,i==="string"||i==="number"){if(a||i==="number"&&(t=t.toString(),t===r))return r;if(u){let c=r[0];c&&c.nodeType===3?c.data!==t&&(c.data=t):c=document.createTextNode(t),r=Ye(e,r,s,c)}else r!==""&&typeof r=="string"?r=e.firstChild.data=t:r=e.textContent=t}else if(t==null||i==="boolean"){if(a)return r;r=Ye(e,r,s)}else{if(i==="function")return N(()=>{let c=t();for(;typeof c=="function";)c=c();r=jt(e,c,r,s)}),()=>r;if(Array.isArray(t)){const c=[],h=r&&Array.isArray(r);if(gr(c,t,r,l))return N(()=>r=jt(e,c,r,s,!0)),()=>r;if(a){if(!c.length)return r;if(s===void 0)return r=[...e.childNodes];let f=c[0];if(f.parentNode!==e)return r;const p=[f];for(;(f=f.nextSibling)!==s;)p.push(f);return r=p}if(c.length===0){if(r=Ye(e,r,s),u)return r}else h?r.length===0?Wr(e,c,s):Ll(e,r,c):(r&&Ye(e),Wr(e,c));r=c}else if(t.nodeType){if(a&&t.parentNode)return r=u?[t]:t;if(Array.isArray(r)){if(u)return r=Ye(e,r,s,t);Ye(e,r,null,t)}else r==null||r===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);r=t}}return r}function gr(e,t,r,s){let l=!1;for(let a=0,i=t.length;a<i;a++){let u=t[a],c=r&&r[e.length],h;if(!(u==null||u===!0||u===!1))if((h=typeof u)=="object"&&u.nodeType)e.push(u);else if(Array.isArray(u))l=gr(e,u,c)||l;else if(h==="function")if(s){for(;typeof u=="function";)u=u();l=gr(e,Array.isArray(u)?u:[u],Array.isArray(c)?c:[c])||l}else e.push(u),l=!0;else{const f=String(u);c&&c.nodeType===3&&c.data===f?e.push(c):e.push(document.createTextNode(f))}}return l}function Wr(e,t,r=null){for(let s=0,l=t.length;s<l;s++)e.insertBefore(t[s],r)}function Ye(e,t,r,s){if(r===void 0)return e.textContent="";const l=s||document.createTextNode("");if(t.length){let a=!1;for(let i=t.length-1;i>=0;i--){const u=t[i];if(l!==u){const c=u.parentNode===e;!a&&!i?c?e.replaceChild(l,u):e.insertBefore(l,r):c&&u.remove()}else a=!0}}else e.insertBefore(l,r);return[l]}var In="kickjs-devtools-theme";function ql(){try{const e=localStorage.getItem(In);if(e==="dark"||e==="light"||e==="system")return e}catch{}return"system"}function Nl(){return typeof window>"u"||!window.matchMedia?"dark":window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"}var[Dn,Pl]=R(ql()),[Il,Dl]=R(Nl());if(typeof window<"u"&&window.matchMedia){const e=window.matchMedia("(prefers-color-scheme: light)"),t=r=>Dl(r.matches?"light":"dark");e.addEventListener("change",t)}var Yt=Dn;function Or(){const e=Dn();return e==="system"?Il():e}function Un(e){Pl(e);try{localStorage.setItem(In,e)}catch{}}function Ul(){qe(()=>{const e=Or();document.documentElement.dataset.theme=e}),Se(()=>{delete document.documentElement.dataset.theme})}var jn="kickjs-devtools-density";function jl(){try{const e=localStorage.getItem(jn);if(e==="sm"||e==="md"||e==="lg")return e}catch{}return"sm"}var[Hn,Hl]=R(jl()),Qr=Hn;function Bn(e){Hl(e);try{localStorage.setItem(jn,e)}catch{}}function Bl(){qe(()=>{document.documentElement.dataset.density=Hn()}),Se(()=>{delete document.documentElement.dataset.density})}var[zl,Fl]=R("connecting"),[Kl,Xr]=R(null),[Jl,Vl]=R(!1),[Gl,Yl]=R(null),[Wl,Ql]=R(null),[Xl,Zl]=R(null),[es,ts]=R([]),[rs,ns]=R([]),[ls,ss]=R({enabled:!1,queues:[]}),[as,os]=R({enabled:!1}),ae={connectionStatus:zl,lastUpdate:Kl,authRequired:Jl,authError:Gl,health:Wl,metrics:Xl,routes:es,container:rs,queues:ls,ws:as},pe={setConnectionStatus:Fl,setLastUpdate:Xr,setAuthRequired:Vl,setAuthError:Yl,setHealth:Ql,setMetrics:Zl,setRoutes:ts,setContainer:ns,setQueues:ss,setWs:os,touch(){Xr(new Date)}};function Ke(){return document.body.dataset.base??"/_debug"}var qr="kickjs_devtools_token",is=30,Ot=null;function pt(){if(Ot)return Ot;const e=new URLSearchParams(location.search).get("token");if(e){mr(e);const r=new URL(location.href);return r.searchParams.delete("token"),history.replaceState({},"",r.toString()),e}const t=document.cookie.match(new RegExp(`${qr}=([^;]+)`));return t?(mr(decodeURIComponent(t[1])),Ot):null}function mr(e){Ot=e,document.cookie=`${qr}=${encodeURIComponent(e)}; path=${Ke()}; max-age=${86400*is}; SameSite=Lax`,cs()}function cs(){Ke()!=="/"&&(document.cookie=`${qr}=; path=/; max-age=0; SameSite=Lax`)}function Nr(e){const t=pt();return t?`${e}${e.includes("?")?"&":"?"}token=${encodeURIComponent(t)}`:e}var Pr=class extends Error{constructor(){super("AUTH_REQUIRED"),this.name="AuthRequiredError"}};async function Te(e){const t=Nr(`${Ke()}${e}`),r=await fetch(t,{headers:zn()});if(r.status===401||r.status===403)throw new Pr;if(!r.ok)throw new Error(`GET ${e} failed: ${r.status} ${r.statusText}`);return await r.json()}async function Ir(e){const t=await fetch(Nr(`${Ke()}${e}`),{method:"POST",headers:zn()});if(t.status===401||t.status===403)throw new Pr;if(!t.ok){const r=await t.json().catch(()=>null);throw new Error(r?.error??`${t.status} ${t.statusText}`)}return t}function zn(){const e=pt();return e?{"x-devtools-token":e}:{}}var Wt=e=>new URLSearchParams(Object.entries(e).flatMap(([t,r])=>r===void 0?[]:[[t,String(r)]])).toString(),we={jobs:()=>Te("/jobs"),jobList:e=>Te(`/jobs/list?${Wt(e)}`),job:e=>Te(`/jobs/job?${Wt(e)}`),jobAction:async e=>await(await Ir(`/jobs/action?${Wt(e)}`)).json(),requests:(e=0)=>Te(`/requests?since=${e}`),runtime:()=>Te("/runtime"),topology:()=>Te("/topology"),metrics:()=>Te("/metrics"),source:(e,t)=>Te(`/source?${new URLSearchParams({controller:e,handler:t})}`),routeRegistry:()=>Te("/routes"),container:()=>Te("/container"),health:()=>Te("/health"),queues:()=>Te("/queues"),ws:()=>Te("/ws"),tabs:()=>Te("/tabs")};function Fn(e,t,r){const s=Nr(`${Ke()}${e}`),l=new EventSource(s);return l.addEventListener("message",a=>{try{t(JSON.parse(a.data))}catch(i){console.warn("SSE parse failed",i)}}),r&&l.addEventListener("error",r),()=>l.close()}var[Zr,us]=R([]),[ds,fs]=R([]);function hs(){const e=setInterval(()=>{const t=ae.metrics();t&&(us(r=>[...r,t.requests].slice(-61)),fs(r=>[...r,t.serverErrors].slice(-61)))},1e3);return()=>clearInterval(e)}function Qt(e){const t=[];for(let r=1;r<e.length;r++)t.push(Math.max(0,e[r]-e[r-1]));return t}function vr(e,t){if(e.length===0)return;const r=e.toSorted((s,l)=>s-l);return r[Math.min(r.length-1,Math.max(0,Math.ceil(t/100*r.length)-1))]}var gs=d("<svg class=sparkline preserveAspectRatio=none aria-hidden=true><path fill=none stroke-width=1.5 stroke-linejoin=round stroke-linecap=round>"),ms=e=>{const t=()=>e.width??200,s=se(()=>{const l=e.values;if(l.length<2)return"";const a=Math.min(...l),i=Math.max(...l)-a||1,u=t()/(l.length-1),c=f=>40-(f-a)/i*36-2;let h=`M0 ${c(l[0]).toFixed(2)}`;for(let f=1;f<l.length;f++)h+=` L${(f*u).toFixed(2)} ${c(l[f]).toFixed(2)}`;return h});return(()=>{var l=gs(),a=l.firstChild;return N(i=>{var u=`0 0 ${t()} 40`,c=s(),h=e.stroke??"var(--color-accent)";return u!==i.e&&X(l,"viewBox",i.e=u),c!==i.t&&X(a,"d",i.t=c),h!==i.a&&X(a,"stroke",i.a=h),i},{e:void 0,t:void 0,a:void 0}),l})()};function Ze(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KiB`:e<1073741824?`${(e/1024/1024).toFixed(1)} MiB`:`${(e/1024/1024/1024).toFixed(2)} GiB`}function $e(e){return e<1?`${e.toFixed(2)} ms`:e<100?`${e.toFixed(1)} ms`:`${Math.round(e)} ms`}function pr(e){const t=Math.floor(e);return t<60?`${t}s`:t<3600?`${Math.floor(t/60)}m ${t%60}s`:`${Math.floor(t/3600)}h ${Math.floor(t%3600/60)}m ${t%60}s`}function Ht(e){return`${Math.round(e*100)}%`}function He(e){const t=e.toUpperCase();return t==="GET"?"text-emerald-400":t==="POST"?"text-cyan-400":t==="PUT"||t==="PATCH"?"text-amber-400":t==="DELETE"?"text-red-400":"text-text-secondary"}function gt(e){return`dt-pill dt-pill-${e>=500?"err":e>=400?"warn":e>=300?"redir":"ok"}`}function Dr(e){return`dt-tone dt-tone-${e==="controller"?"violet":e==="service"?"blue":e==="repository"?"teal":"gray"}`}function et(e){return`dt-tone dt-tone-${{ok:"green",warn:"amber",err:"red",idle:"gray"}[e]}`}function ut(e,t=1){const r=e*t;return r>1e3?"text-red-500":r>500?"text-orange-500":r>200?"text-amber-500":""}function Ur(e,t=Date.now()){const r=Math.max(0,Math.round((t-e)/1e3));return r<60?`${r}s ago`:r<3600?`${Math.floor(r/60)}m ago`:r<86400?`${Math.floor(r/3600)}h ago`:`${Math.floor(r/86400)}d ago`}function Xt(e){let t=0;for(const r of e)t=r.charCodeAt(0)+((t<<5)-t);return`hsl(${Math.abs(t)%12*30} 60% 50%)`}var vs=d('<span class=dt-tip tabindex=0><svg class=dt-tip-icon viewBox="0 0 24 24"aria-hidden=true><circle cx=12 cy=12 r=9 fill=none stroke=currentColor stroke-width=1.5></circle><path d="M12 8h.01M12 11v6"stroke=currentColor stroke-width=2 stroke-linecap=round fill=none></path></svg><span role=tooltip>'),ps={"heap.used":{short:"V8-allocated memory currently used by JavaScript objects.",detail:"Grows as your code allocates objects, shrinks after GC frees them. A consistently rising heap-used line on the sparkline is the textbook leak signature."},"heap.total":{short:"V8-allocated memory the JS heap is currently sized to use.",detail:"Larger than heap-used; V8 reserves headroom so allocations don't pause to grow the heap. Bumps up in 1-8 MiB jumps as the heap expands."},rss:{short:"Total memory resident in physical RAM for this Node process.",detail:'Includes the JS heap, native buffers, V8 internal structures, and code. Always larger than heap-used; the gap is "everything the OS sees" minus "JS objects".'},external:{short:"Memory used by C++ objects bound to JS (Buffers, native bindings)."},"array-buffers":{short:"Memory used by ArrayBuffer / SharedArrayBuffer instances."},"event-loop.p99":{short:"99% of event-loop ticks completed within this time.",detail:"Sustained values above ~50ms mean some synchronous operation is blocking the loop. Common culprits: large JSON.parse, sync crypto, blocking DB drivers."},gc:{short:"Garbage-collector activity since process start.",detail:"Total run count and cumulative pause time. Frequent GC with low reclaim ratio = leak; rare GC with healthy reclaim = good citizen."},"leak.risk":{short:"Heap-growth slope over the recent window — stable / warn / critical.",detail:"Bucketed from heap-growth in MB/min: <5 = ok, <20 = warn, ≥20 = critical. Critical sustained for >5 minutes is the moment to capture a heap snapshot."},"gc.reclaim":{short:"Average ratio of memory freed by each GC pass.",detail:"Trending toward zero means GC can't free anything — strong leak indicator. Healthy apps reclaim 20-60% on each major GC."},"heap.utilization":{short:"Fraction of V8's hard heap-size limit currently in use.",detail:"Approaching 1 means the process is close to OOM. Use --max-old-space-size to raise the limit if your workload is memory-bound."},requests:{short:"Total HTTP requests handled since process start."},"server-errors":{short:"5xx responses — server-side failures."},"client-errors":{short:"4xx responses — bad client input, missing routes, auth denials."},"error-rate":{short:"Server errors as a percentage of total requests.",detail:"Computed across the lifetime of the process. Spikes typically signal upstream dependency failures; sustained elevation = code bug."},uptime:{short:"How long this Node process has been running."},"latency.avg":{short:"Mean response time per route (sum of all calls / call count)."},"latency.p50":{short:"Median — half the requests complete faster than this."},"latency.p95":{short:"95% of requests complete within this time."},"latency.p99":{short:"99% of requests complete within this time. Outlier-sensitive."},"latency.max":{short:"Slowest single response observed since process start."},"resolve.count":{short:"Number of times this token was resolved from the DI container."},"resolve.duration":{short:"How long the container took to resolve this token (ms)."},"post-construct":{short:"@PostConstruct lifecycle status: done / failed / none.",detail:'A failed PostConstruct means the service registered but its async init threw. The token is left in a "registered" state; resolve() will throw the original error.'}},Pe=e=>{const t=()=>e.text??ps[e.metric??""]?.short??"",r=e.placement??"top";return(()=>{var s=vs(),l=s.firstChild.nextSibling;return j(l,`dt-tip-pop dt-tip-pop-${r}`),n(l,t),N(()=>X(s,"aria-label",t())),s})()};ye(["click"]);var Kn="kickjs-devtools-tab",xs={memory:"runtime"};function bs(){try{const e=localStorage.getItem(Kn)??"overview";return xs[e]??e}catch{return"overview"}}var[$s,ys]=R(bs());function rt(e){ys(e);try{localStorage.setItem(Kn,e)}catch{}}var ws={publicFlag:"auth.public",csrfCookie:"_csrf",csrfHeader:"x-csrf-token",openApiUrl:"/openapi.json",editorUrl:"vscode://file{file}:{line}"};function xr(e){return(Array.isArray(e)?e:e.split(",")).map(t=>t.trim()).filter(Boolean)}function Jn(e,t){return xr(t.publicFlag).some(r=>e.flags?.[r]!==void 0)}var _s=new Set(["POST","PUT","PATCH","DELETE"]),ks=new Set(["GET","HEAD","OPTIONS"]),Ss=e=>["DELETE","PUT","PATCH"].includes(e.toUpperCase()),br=e=>_s.has(e.toUpperCase());function qt(e){const t=[...e.matchAll(/:([A-Za-z_$][\w$]*)/g)].map(r=>r[1]);return[...new Set(t)]}function Cs(e,t){const r=[],s=e.split(/(:[A-Za-z_$][\w$]*)/).map(i=>i.startsWith(":")?(r.push(i.slice(1)),"([^/]+)"):i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join(""),l=new RegExp(`^${s}/?$`).exec(t);if(!l)return{};const a=i=>{try{return decodeURIComponent(i)}catch{return i}};return Object.fromEntries(r.map((i,u)=>[i,a(l[u+1])]))}function Vn(e,t,r,s){const l=t.replace(/:([A-Za-z_$][\w$]*)/g,(u,c)=>r[c]?encodeURIComponent(r[c]):u),a=new URLSearchParams;for(const u of s)u.enabled&&u.key&&a.append(u.key,u.value);const i=a.toString();return`${e}${l}${i?`?${i}`:""}`}function Es(e,t){for(const r of e.split(";")){const s=r.indexOf("=");if(!(s<0)&&r.slice(0,s).trim()===t)return decodeURIComponent(r.slice(s+1).trim())}}var Gn=/\{\{\s*([\w.-]+)\s*\}\}/g;function Ms(e,t){return e.replace(Gn,(r,s)=>Object.prototype.hasOwnProperty.call(t,s)?t[s]:r)}function Ts(e){const t={};for(const r of e)r.enabled&&r.key&&(t[r.key]=r.value);return t}function en(e){const t=typeof e.body=="string"?e.body:"",r=(e.form??[]).flatMap(l=>[l.name,l.value??""]),s=[e.url,...Object.entries(e.headers).flat(),t,...r].join(`
2
- `);return[...new Set([...s.matchAll(Gn)].map(l=>l[1]))]}function As(e,t){const r=t.match(/[^.[\]]+/g)??[];let s=e;for(const l of r){if(s===null||typeof s!="object")return;s=s[l]}if(s!==void 0)return typeof s=="string"?s:JSON.stringify(s)}function Ls(e){const{route:t,settings:r,origin:s,cookies:l}=e,a=e.variables??{},i=m=>Ms(m,a),u=m=>m.map(S=>({...S,key:i(S.key),value:i(S.value)})),c={params:Object.fromEntries(Object.entries(e.inputs.params).map(([m,S])=>[m,i(S)])),query:u(e.inputs.query),headers:u(e.inputs.headers),body:i(e.inputs.body),bodyMode:e.inputs.bodyMode,form:(e.inputs.form??[]).map(m=>({...m,key:i(m.key),value:i(m.value)}))},h=u(e.defaults),f=t.method.toUpperCase(),p=Jn(t,r),v={},x=(m,S)=>{for(const b of m)if(!(!b.enabled||!b.key)&&!(S&&b.key.toLowerCase()==="authorization")){for(const g of Object.keys(v))g.toLowerCase()===b.key.toLowerCase()&&delete v[g];v[b.key]=b.value}};x(h,p),x(c.headers,!1);const w=m=>Object.keys(v).some(S=>S.toLowerCase()===m);if(!ks.has(f)&&!w(r.csrfHeader.toLowerCase())){const m=Es(l,r.csrfCookie);m&&(v[r.csrfHeader]=m)}const M=Vn(s,t.path,c.params,c.query);if(br(f)&&c.bodyMode==="form"){const{body:m,form:S}=Rs(c.form??[]);for(const b of Object.keys(v))b.toLowerCase()==="content-type"&&delete v[b];return{method:f,url:M,headers:v,body:m,form:S}}const y=br(f)&&c.body.trim()?c.body:void 0;return y!==void 0&&!w("content-type")&&/^\s*[[{]/.test(y)&&(v["Content-Type"]="application/json"),{method:f,url:M,headers:v,...y!==void 0?{body:y}:{}}}function Rs(e){const t=new FormData,r=[];for(const s of e)if(!(!s.enabled||!s.key))if(s.type==="file")for(const l of s.files??[])t.append(s.key,l,l.name),r.push({name:s.key,fileName:l.name});else t.append(s.key,s.value),r.push({name:s.key,value:s.value});return{body:t,form:r}}var _t=e=>`'${e.replace(/'/g,"'\\''")}'`;function Os(e){const t=[`curl -X ${e.method} ${_t(e.url)}`];for(const[r,s]of Object.entries(e.headers))t.push(`-H ${_t(`${r}: ${s}`)}`);if(e.form)for(const r of e.form)t.push(`-F ${_t(r.fileName!==void 0?`${r.name}=@${r.fileName}`:`${r.name}=${r.value??""}`)}`);else typeof e.body=="string"&&t.push(`--data-raw ${_t(e.body)}`);return t.join(` \\
1
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))s(l);new MutationObserver(l=>{for(const a of l)if(a.type==="childList")for(const i of a.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function r(l){const a={};return l.integrity&&(a.integrity=l.integrity),l.referrerPolicy&&(a.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?a.credentials="include":l.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function s(l){if(l.ep)return;l.ep=!0;const a=r(l);fetch(l.href,a)}})();var xe={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return Fr(this.context.count)},getNextContextId(){return Fr(this.context.count++)}};function Fr(e){const t=String(e),r=t.length-1;return xe.context.id+(r?String.fromCharCode(96+r):"")+t}function dr(e){xe.context=e}function xl(){return{...xe.context,id:xe.getNextContextId(),count:0}}var bl=(e,t)=>e===t,En=Symbol("solid-track"),It={equals:bl},Jr=null,Mn=On,Oe=1,ft=2,Tn={owned:null,cleanups:null,context:null,owner:null},he=null,F=null,mt=null,Xe=null,ve=null,_e=null,Ee=null,Jt=0;function Ze(e,t){const r=ve,s=he,l=e.length===0,a=t===void 0?s:t,i=l?Tn:{owned:null,cleanups:null,context:a?a.context:null,owner:a},u=l?e:()=>e(()=>Ae(()=>Be(i)));he=i,ve=null;try{return Ue(u,!0)}finally{ve=r,he=s}}function O(e,t){t=t?Object.assign({},It,t):It;const r={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},s=l=>(typeof l=="function"&&(F&&F.running&&F.sources.has(r)?l=l(r.tValue):l=l(r.value)),Ln(r,l));return[An.bind(r),s]}function N(e,t,r){const s=Tr(e,t,!1,Oe);mt&&F&&F.running?_e.push(s):vt(s)}function qe(e,t,r){Mn=Sl;const s=Tr(e,t,!1,Oe),l=fr&&wl(fr);l&&(s.suspense=l),(!r||!r.render)&&(s.user=!0),Ee?Ee.push(s):vt(s)}function se(e,t,r){r=r?Object.assign({},It,r):It;const s=Tr(e,t,!0,0);return s.observers=null,s.observerSlots=null,s.comparator=r.equals||void 0,mt&&F&&F.running?(s.tState=Oe,_e.push(s)):vt(s),An.bind(s)}function Ae(e){if(!Xe&&ve===null)return e();const t=ve;ve=null;try{return Xe?Xe.untrack(e):e()}finally{ve=t}}function $l(e,t,r){const s=Array.isArray(e);let l,a=r&&r.defer;return i=>{let u;if(s){u=Array(e.length);for(let h=0;h<e.length;h++)u[h]=e[h]()}else u=e();if(a)return a=!1,i;const c=Ae(()=>t(u,l,i));return l=u,c}}function Ne(e){qe(()=>Ae(e))}function Se(e){return he===null||(he.cleanups===null?he.cleanups=[e]:he.cleanups.push(e)),e}function yl(e){if(F&&F.running)return e(),F.done;const t=ve,r=he;return Promise.resolve().then(()=>{ve=t,he=r;let s;return(mt||fr)&&(s=F||(F={sources:new Set,effects:[],promises:new Set,disposed:new Set,queue:new Set,running:!0}),s.done||(s.done=new Promise(l=>s.resolve=l)),s.running=!0),Ue(e,!1),ve=he=null,s?s.done:void 0})}var[Pd,Kr]=O(!1);function wl(e){let t;return he&&he.context&&(t=he.context[e.id])!==void 0?t:e.defaultValue}var fr;function An(){const e=F&&F.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===Oe)vt(this);else{const t=_e;_e=null,Ue(()=>Dt(this),!1),_e=t}if(ve){const t=this.observers;if(!t||t[t.length-1]!==ve){const r=t?t.length:0;ve.sources?(ve.sources.push(this),ve.sourceSlots.push(r)):(ve.sources=[this],ve.sourceSlots=[r]),t?(t.push(ve),this.observerSlots.push(ve.sources.length-1)):(this.observers=[ve],this.observerSlots=[ve.sources.length-1])}}return e&&F.sources.has(this)?this.tValue:this.value}function Ln(e,t,r){let s=F&&F.running&&F.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(s,t)){if(F){const l=F.running;(l||!r&&F.sources.has(e))&&(F.sources.add(e),e.tValue=t),l||(e.value=t)}else e.value=t;e.observers&&e.observers.length&&Ue(()=>{for(let l=0;l<e.observers.length;l+=1){const a=e.observers[l],i=F&&F.running;i&&F.disposed.has(a)||((i?!a.tState:!a.state)&&(a.pure?_e.push(a):Ee.push(a),a.observers&&Rn(a)),i?a.tState=Oe:a.state=Oe)}if(_e.length>1e6)throw _e=[],new Error},!1)}return t}function vt(e){if(!e.fn)return;Be(e);const t=Jt;Vr(e,F&&F.running&&F.sources.has(e)?e.tValue:e.value,t),F&&!F.running&&F.sources.has(e)&&queueMicrotask(()=>{Ue(()=>{F&&(F.running=!0),ve=he=e,Vr(e,e.tValue,t),ve=he=null},!1)})}function Vr(e,t,r){let s;const l=he,a=ve;ve=he=e;try{s=e.fn(t)}catch(i){return e.pure&&(F&&F.running?(e.tState=Oe,e.tOwned&&e.tOwned.forEach(Be),e.tOwned=void 0):(e.state=Oe,e.owned&&e.owned.forEach(Be),e.owned=null)),e.updatedAt=r+1,Ar(i)}finally{ve=a,he=l}(!e.updatedAt||e.updatedAt<=r)&&(e.updatedAt!=null&&"observers"in e?Ln(e,s,!0):F&&F.running&&e.pure?(F.sources.has(e)||(e.value=s),F.sources.add(e),e.tValue=s):e.value=s,e.updatedAt=r)}function Tr(e,t,r,s=Oe,l){const a={fn:e,state:s,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:he,context:he?he.context:null,pure:r};if(F&&F.running&&(a.state=0,a.tState=s),he===null||he!==Tn&&(F&&F.running&&he.pure?he.tOwned?he.tOwned.push(a):he.tOwned=[a]:he.owned?he.owned.push(a):he.owned=[a]),Xe&&a.fn){const i=a.fn,[u,c]=O(void 0,{equals:!1}),h=Xe.factory(i,c);Se(()=>h.dispose());let f,p=!1;const v=()=>yl(c).then(()=>{f&&(f.dispose(),f=void 0,p||c())});a.fn=b=>(u(),F&&F.running?(f||(f=Xe.factory(i,v)),f.track(b)):(p=!0,h.track(b)))}return a}function ht(e){const t=F&&F.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===ft)return Dt(e);if(e.suspense&&Ae(e.suspense.inFallback))return e.suspense.effects.push(e);const r=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<Jt);){if(t&&F.disposed.has(e))return;(t?e.tState:e.state)&&r.push(e)}for(let s=r.length-1;s>=0;s--){if(e=r[s],t){let l=e,a=r[s+1];for(;(l=l.owner)&&l!==a;)if(F.disposed.has(l))return}if((t?e.tState:e.state)===Oe)vt(e);else if((t?e.tState:e.state)===ft){const l=_e;_e=null,Ue(()=>Dt(e,r[0]),!1),_e=l}}}function Ue(e,t){if(_e)return e();let r=!1;t||(_e=[]),Ee?r=!0:Ee=[],Jt++;try{const s=e();return _l(r),s}catch(s){r||(Ee=null),_e=null,Ar(s)}}function _l(e){if(_e&&(mt&&F&&F.running?kl(_e):On(_e),_e=null),e)return;let t;if(F){if(!F.promises.size&&!F.queue.size){const s=F.sources,l=F.disposed;Ee.push.apply(Ee,F.effects),t=F.resolve;for(const a of Ee)"tState"in a&&(a.state=a.tState),delete a.tState;F=null,Ue(()=>{for(const a of l)Be(a);for(const a of s){if(a.value=a.tValue,a.owned)for(let i=0,u=a.owned.length;i<u;i++)Be(a.owned[i]);a.tOwned&&(a.owned=a.tOwned),delete a.tValue,delete a.tOwned,a.tState=0}Kr(!1)},!1)}else if(F.running){F.running=!1,F.effects.push.apply(F.effects,Ee),Ee=null,Kr(!0);return}}const r=Ee;Ee=null,r.length&&Ue(()=>Mn(r),!1),t&&t()}function On(e){for(let t=0;t<e.length;t++)ht(e[t])}function kl(e){for(let t=0;t<e.length;t++){const r=e[t],s=F.queue;s.has(r)||(s.add(r),mt(()=>{s.delete(r),Ue(()=>{F.running=!0,ht(r)},!1),F&&(F.running=!1)}))}}function Sl(e){let t,r=0;for(t=0;t<e.length;t++){const s=e[t];s.user?e[r++]=s:ht(s)}if(xe.context){if(xe.count){xe.effects||(xe.effects=[]),xe.effects.push(...e.slice(0,r));return}dr()}for(xe.effects&&(xe.done||!xe.count)&&(e=[...xe.effects,...e],r+=xe.effects.length,delete xe.effects),t=0;t<r;t++)ht(e[t])}function Dt(e,t){const r=F&&F.running;r?e.tState=0:e.state=0;for(let s=0;s<e.sources.length;s+=1){const l=e.sources[s];if(l.sources){const a=r?l.tState:l.state;a===Oe?l!==t&&(!l.updatedAt||l.updatedAt<Jt)&&ht(l):a===ft&&Dt(l,t)}}}function Rn(e){const t=F&&F.running;for(let r=0;r<e.observers.length;r+=1){const s=e.observers[r];(t?!s.tState:!s.state)&&(t?s.tState=ft:s.state=ft,s.pure?_e.push(s):Ee.push(s),s.observers&&Rn(s))}}function Be(e){let t;if(e.sources)for(;e.sources.length;){const r=e.sources.pop(),s=e.sourceSlots.pop(),l=r.observers;if(l&&l.length){const a=l.pop(),i=r.observerSlots.pop();s<l.length&&(a.sourceSlots[i]=s,l[s]=a,r.observerSlots[s]=i)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)Be(e.tOwned[t]);delete e.tOwned}if(F&&F.running&&e.pure)qn(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)Be(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}F&&F.running?e.tState=0:e.state=0}function qn(e,t){if(t||(e.tState=0,F.disposed.add(e)),e.owned)for(let r=0;r<e.owned.length;r++)qn(e.owned[r])}function Cl(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error",{cause:e})}function Gr(e,t,r){try{for(const s of t)s(e)}catch(s){Ar(s,r&&r.owner||null)}}function Ar(e,t=he){const r=Jr&&t&&t.context&&t.context[Jr],s=Cl(e);if(!r)throw s;Ee?Ee.push({fn(){Gr(s,r,t)},state:Oe}):Gr(s,r,t)}var hr=Symbol("fallback");function Ut(e){for(let t=0;t<e.length;t++)e[t]()}function El(e,t,r={}){let s=[],l=[],a=[],i=0,u=t.length>1?[]:null;return Se(()=>Ut(a)),()=>{let c=e()||[],h=c.length,f,p;return c[En],Ae(()=>{let b,w,M,y,m,S,x,g,$;if(h===0)i!==0&&(Ut(a),a=[],s=[],l=[],i=0,u&&(u=[])),r.fallback&&(s=[hr],l[0]=Ze(C=>(a[0]=C,r.fallback())),i=1);else if(i===0){for(l=new Array(h),p=0;p<h;p++)s[p]=c[p],l[p]=Ze(v);i=h}else{for(M=new Array(h),y=new Array(h),u&&(m=new Array(h)),S=0,x=Math.min(i,h);S<x&&s[S]===c[S];S++);for(x=i-1,g=h-1;x>=S&&g>=S&&s[x]===c[g];x--,g--)M[g]=l[x],y[g]=a[x],u&&(m[g]=u[x]);for(b=new Map,w=new Array(g+1),p=g;p>=S;p--)$=c[p],f=b.get($),w[p]=f===void 0?-1:f,b.set($,p);for(f=S;f<=x;f++)$=s[f],p=b.get($),p!==void 0&&p!==-1?(M[p]=l[f],y[p]=a[f],u&&(m[p]=u[f]),p=w[p],b.set($,p)):a[f]();for(p=S;p<h;p++)p in M?(l[p]=M[p],a[p]=y[p],u&&(u[p]=m[p],u[p](p))):l[p]=Ze(v);l=l.slice(0,i=h),s=c.slice(0)}return l});function v(b){if(a[p]=b,u){const[w,M]=O(p);return u[p]=M,t(c[p],w)}return t(c[p])}}}function Ml(e,t,r={}){let s=[],l=[],a=[],i=[],u=0,c;return Se(()=>Ut(a)),()=>{const h=e()||[],f=h.length;return h[En],Ae(()=>{if(f===0)return u!==0&&(Ut(a),a=[],s=[],l=[],u=0,i=[]),r.fallback&&(s=[hr],l[0]=Ze(v=>(a[0]=v,r.fallback())),u=1),l;for(s[0]===hr&&(a[0](),a=[],s=[],l=[],u=0),c=0;c<f;c++)c<s.length&&s[c]!==h[c]?i[c](()=>h[c]):c>=s.length&&(l[c]=Ze(p));for(;c<s.length;c++)a[c]();return u=i.length=a.length=f,s=h.slice(0),l=l.slice(0,u)});function p(v){a[c]=v;const[b,w]=O(h[c]);return i[c]=w,t(b,c)}}}var Tl=!1;function o(e,t){if(Tl&&xe.context){const r=xe.context;dr(xl());const s=Ae(()=>e(t||{}));return dr(r),s}return Ae(()=>e(t||{}))}var Al=e=>`Stale read from <${e}>.`;function te(e){const t="fallback"in e&&{fallback:()=>e.fallback};return se(El(()=>e.each,e.children,t||void 0))}function Nn(e){const t="fallback"in e&&{fallback:()=>e.fallback};return se(Ml(()=>e.each,e.children,t||void 0))}function _(e){const t=e.keyed,r=se(()=>e.when,void 0,void 0),s=t?r:se(r,void 0,{equals:(l,a)=>!l==!a});return se(()=>{const l=s();if(l){const a=e.children;return typeof a=="function"&&a.length>0?Ae(()=>a(t?l:()=>{if(!Ae(s))throw Al("Show");return r()})):a}return e.fallback},void 0,void 0)}var le=e=>se(()=>e());function Ll(e,t,r){let s=r.length,l=t.length,a=s,i=0,u=0,c=t[l-1].nextSibling,h=null;for(;i<l||u<a;){if(t[i]===r[u]){i++,u++;continue}for(;t[l-1]===r[a-1];)l--,a--;if(l===i){const f=a<s?u?r[u-1].nextSibling:r[a-u]:c;for(;u<a;)e.insertBefore(r[u++],f)}else if(a===u)for(;i<l;)(!h||!h.has(t[i]))&&t[i].remove(),i++;else if(t[i]===r[a-1]&&r[u]===t[l-1]){const f=t[--l].nextSibling;e.insertBefore(r[u++],t[i++].nextSibling),e.insertBefore(r[--a],f),t[l]=r[a]}else{if(!h){h=new Map;let p=u;for(;p<a;)h.set(r[p],p++)}const f=h.get(t[i]);if(f!=null)if(u<f&&f<a){let p=i,v=1,b;for(;++p<l&&p<a&&!((b=h.get(t[p]))==null||b!==f+v);)v++;if(v>f-u){const w=t[i];for(;u<f;)e.insertBefore(r[u++],w)}else e.replaceChild(r[u++],t[i++])}else i++;else t[i++].remove()}}}var Yr="_$DX_DELEGATE";function Ol(e,t,r,s={}){let l;return Ze(a=>{l=a,t===document?e():n(t,e(),t.firstChild?null:void 0,r)},s.owner),()=>{l(),t.textContent=""}}function d(e,t,r,s){let l;const a=()=>{const u=s?document.createElementNS("http://www.w3.org/1998/Math/MathML","template"):document.createElement("template");return u.innerHTML=e,r?u.content.firstChild.firstChild:s?u.firstChild:u.content.firstChild},i=t?()=>Ae(()=>document.importNode(l||(l=a()),!0)):()=>(l||(l=a())).cloneNode(!0);return i.cloneNode=i,i}function ye(e,t=window.document){const r=t[Yr]||(t[Yr]=new Set);for(let s=0,l=e.length;s<l;s++){const a=e[s];r.has(a)||(r.add(a),t.addEventListener(a,Rl))}}function X(e,t,r){Or(e)||(r==null?e.removeAttribute(t):e.setAttribute(t,r))}function j(e,t){Or(e)||(t==null?e.removeAttribute("class"):e.className=t)}function Lr(e,t,r,s){if(s)Array.isArray(r)?(e[`$$${t}`]=r[0],e[`$$${t}Data`]=r[1]):e[`$$${t}`]=r;else if(Array.isArray(r)){const l=r[0];e.addEventListener(t,r[0]=a=>l.call(e,r[1],a))}else e.addEventListener(t,r,typeof r!="function"&&r)}function Pn(e,t,r){if(!t)return r?X(e,"style"):t;const s=e.style;if(typeof t=="string")return s.cssText=t;typeof r=="string"&&(s.cssText=r=void 0),r||(r={}),t||(t={});let l,a;for(a in r)t[a]??s.removeProperty(a),delete r[a];for(a in t)l=t[a],l!==r[a]&&(s.setProperty(a,l),r[a]=l);return r}function Ie(e,t,r){r!=null?e.style.setProperty(t,r):e.style.removeProperty(t)}function rt(e,t,r){return Ae(()=>e(t,r))}function n(e,t,r,s){if(r!==void 0&&!s&&(s=[]),typeof t!="function")return jt(e,t,s,r);N(l=>jt(e,t(),l,r),s)}function Or(e){return!!xe.context&&!xe.done&&(!e||e.isConnected)}function Rl(e){if(xe.registry&&xe.events&&xe.events.find(([c,h])=>h===e))return;let t=e.target;const r=`$$${e.type}`,s=e.target,l=e.currentTarget,a=c=>Object.defineProperty(e,"target",{configurable:!0,value:c}),i=()=>{const c=t[r];if(c&&!t.disabled){const h=t[`${r}Data`];if(h!==void 0?c.call(t,h,e):c.call(t,e),e.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(e.target)&&a(t.host),!0},u=()=>{for(;i()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),xe.registry&&!xe.done&&(xe.done=_$HY.done=!0),e.composedPath){const c=e.composedPath();a(c[0]);for(let h=0;h<c.length-2&&(t=c[h],!!i());h++){if(t._$host){t=t._$host,u();break}if(t.parentNode===l)break}}else u();a(s)}function jt(e,t,r,s,l){const a=Or(e);if(a){!r&&(r=[...e.childNodes]);let c=[];for(let h=0;h<r.length;h++){const f=r[h];f.nodeType===8&&f.data.slice(0,2)==="!$"?f.remove():c.push(f)}r=c}for(;typeof r=="function";)r=r();if(t===r)return r;const i=typeof t,u=s!==void 0;if(e=u&&r[0]&&r[0].parentNode||e,i==="string"||i==="number"){if(a||i==="number"&&(t=t.toString(),t===r))return r;if(u){let c=r[0];c&&c.nodeType===3?c.data!==t&&(c.data=t):c=document.createTextNode(t),r=Ye(e,r,s,c)}else r!==""&&typeof r=="string"?r=e.firstChild.data=t:r=e.textContent=t}else if(t==null||i==="boolean"){if(a)return r;r=Ye(e,r,s)}else{if(i==="function")return N(()=>{let c=t();for(;typeof c=="function";)c=c();r=jt(e,c,r,s)}),()=>r;if(Array.isArray(t)){const c=[],h=r&&Array.isArray(r);if(gr(c,t,r,l))return N(()=>r=jt(e,c,r,s,!0)),()=>r;if(a){if(!c.length)return r;if(s===void 0)return r=[...e.childNodes];let f=c[0];if(f.parentNode!==e)return r;const p=[f];for(;(f=f.nextSibling)!==s;)p.push(f);return r=p}if(c.length===0){if(r=Ye(e,r,s),u)return r}else h?r.length===0?Wr(e,c,s):Ll(e,r,c):(r&&Ye(e),Wr(e,c));r=c}else if(t.nodeType){if(a&&t.parentNode)return r=u?[t]:t;if(Array.isArray(r)){if(u)return r=Ye(e,r,s,t);Ye(e,r,null,t)}else r==null||r===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);r=t}}return r}function gr(e,t,r,s){let l=!1;for(let a=0,i=t.length;a<i;a++){let u=t[a],c=r&&r[e.length],h;if(!(u==null||u===!0||u===!1))if((h=typeof u)=="object"&&u.nodeType)e.push(u);else if(Array.isArray(u))l=gr(e,u,c)||l;else if(h==="function")if(s){for(;typeof u=="function";)u=u();l=gr(e,Array.isArray(u)?u:[u],Array.isArray(c)?c:[c])||l}else e.push(u),l=!0;else{const f=String(u);c&&c.nodeType===3&&c.data===f?e.push(c):e.push(document.createTextNode(f))}}return l}function Wr(e,t,r=null){for(let s=0,l=t.length;s<l;s++)e.insertBefore(t[s],r)}function Ye(e,t,r,s){if(r===void 0)return e.textContent="";const l=s||document.createTextNode("");if(t.length){let a=!1;for(let i=t.length-1;i>=0;i--){const u=t[i];if(l!==u){const c=u.parentNode===e;!a&&!i?c?e.replaceChild(l,u):e.insertBefore(l,r):c&&u.remove()}else a=!0}}else e.insertBefore(l,r);return[l]}var In="kickjs-devtools-theme";function ql(){try{const e=localStorage.getItem(In);if(e==="dark"||e==="light"||e==="system")return e}catch{}return"system"}function Nl(){return typeof window>"u"||!window.matchMedia?"dark":window.matchMedia("(prefers-color-scheme: light)").matches?"light":"dark"}var[Dn,Pl]=O(ql()),[Il,Dl]=O(Nl());if(typeof window<"u"&&window.matchMedia){const e=window.matchMedia("(prefers-color-scheme: light)"),t=r=>Dl(r.matches?"light":"dark");e.addEventListener("change",t)}var Yt=Dn;function Rr(){const e=Dn();return e==="system"?Il():e}function Un(e){Pl(e);try{localStorage.setItem(In,e)}catch{}}function Ul(){qe(()=>{const e=Rr();document.documentElement.dataset.theme=e}),Se(()=>{delete document.documentElement.dataset.theme})}var jn="kickjs-devtools-density";function jl(){try{const e=localStorage.getItem(jn);if(e==="sm"||e==="md"||e==="lg")return e}catch{}return"sm"}var[Hn,Hl]=O(jl()),Qr=Hn;function Bn(e){Hl(e);try{localStorage.setItem(jn,e)}catch{}}function Bl(){qe(()=>{document.documentElement.dataset.density=Hn()}),Se(()=>{delete document.documentElement.dataset.density})}var[zl,Fl]=O("connecting"),[Jl,Xr]=O(null),[Kl,Vl]=O(!1),[Gl,Yl]=O(null),[Wl,Ql]=O(null),[Xl,Zl]=O(null),[es,ts]=O([]),[rs,ns]=O([]),[ls,ss]=O({enabled:!1,queues:[]}),[as,os]=O({enabled:!1}),ae={connectionStatus:zl,lastUpdate:Jl,authRequired:Kl,authError:Gl,health:Wl,metrics:Xl,routes:es,container:rs,queues:ls,ws:as},pe={setConnectionStatus:Fl,setLastUpdate:Xr,setAuthRequired:Vl,setAuthError:Yl,setHealth:Ql,setMetrics:Zl,setRoutes:ts,setContainer:ns,setQueues:ss,setWs:os,touch(){Xr(new Date)}};function Je(){return document.body.dataset.base??"/_debug"}var qr="kickjs_devtools_token",is=30,Rt=null;function pt(){if(Rt)return Rt;const e=new URLSearchParams(location.search).get("token");if(e){mr(e);const r=new URL(location.href);return r.searchParams.delete("token"),history.replaceState({},"",r.toString()),e}const t=document.cookie.match(new RegExp(`${qr}=([^;]+)`));return t?(mr(decodeURIComponent(t[1])),Rt):null}function mr(e){Rt=e,document.cookie=`${qr}=${encodeURIComponent(e)}; path=${Je()}; max-age=${86400*is}; SameSite=Lax`,cs()}function cs(){Je()!=="/"&&(document.cookie=`${qr}=; path=/; max-age=0; SameSite=Lax`)}function Nr(e){const t=pt();return t?`${e}${e.includes("?")?"&":"?"}token=${encodeURIComponent(t)}`:e}var Pr=class extends Error{constructor(){super("AUTH_REQUIRED"),this.name="AuthRequiredError"}};async function Te(e){const t=Nr(`${Je()}${e}`),r=await fetch(t,{headers:zn()});if(r.status===401||r.status===403)throw new Pr;if(!r.ok)throw new Error(`GET ${e} failed: ${r.status} ${r.statusText}`);return await r.json()}async function Ir(e){const t=await fetch(Nr(`${Je()}${e}`),{method:"POST",headers:zn()});if(t.status===401||t.status===403)throw new Pr;if(!t.ok){const r=await t.json().catch(()=>null);throw new Error(r?.error??`${t.status} ${t.statusText}`)}return t}function zn(){const e=pt();return e?{"x-devtools-token":e}:{}}var Wt=e=>new URLSearchParams(Object.entries(e).flatMap(([t,r])=>r===void 0?[]:[[t,String(r)]])).toString(),we={jobs:()=>Te("/jobs"),jobList:e=>Te(`/jobs/list?${Wt(e)}`),job:e=>Te(`/jobs/job?${Wt(e)}`),jobAction:async e=>await(await Ir(`/jobs/action?${Wt(e)}`)).json(),requests:(e=0)=>Te(`/requests?since=${e}`),runtime:()=>Te("/runtime"),topology:()=>Te("/topology"),metrics:()=>Te("/metrics"),source:(e,t)=>Te(`/source?${new URLSearchParams({controller:e,handler:t})}`),routeRegistry:()=>Te("/routes"),container:()=>Te("/container"),health:()=>Te("/health"),queues:()=>Te("/queues"),ws:()=>Te("/ws"),tabs:()=>Te("/tabs")};function Fn(e,t,r){const s=Nr(`${Je()}${e}`),l=new EventSource(s);return l.addEventListener("message",a=>{try{t(JSON.parse(a.data))}catch(i){console.warn("SSE parse failed",i)}}),r&&l.addEventListener("error",r),()=>l.close()}var[Zr,us]=O([]),[ds,fs]=O([]);function hs(){const e=setInterval(()=>{const t=ae.metrics();t&&(us(r=>[...r,t.requests].slice(-61)),fs(r=>[...r,t.serverErrors].slice(-61)))},1e3);return()=>clearInterval(e)}function Qt(e){const t=[];for(let r=1;r<e.length;r++)t.push(Math.max(0,e[r]-e[r-1]));return t}function vr(e,t){if(e.length===0)return;const r=e.toSorted((s,l)=>s-l);return r[Math.min(r.length-1,Math.max(0,Math.ceil(t/100*r.length)-1))]}var gs=d("<svg class=sparkline preserveAspectRatio=none aria-hidden=true><path fill=none stroke-width=1.5 stroke-linejoin=round stroke-linecap=round>"),ms=e=>{const t=()=>e.width??200,s=se(()=>{const l=e.values;if(l.length<2)return"";const a=Math.min(...l),i=Math.max(...l)-a||1,u=t()/(l.length-1),c=f=>40-(f-a)/i*36-2;let h=`M0 ${c(l[0]).toFixed(2)}`;for(let f=1;f<l.length;f++)h+=` L${(f*u).toFixed(2)} ${c(l[f]).toFixed(2)}`;return h});return(()=>{var l=gs(),a=l.firstChild;return N(i=>{var u=`0 0 ${t()} 40`,c=s(),h=e.stroke??"var(--color-accent)";return u!==i.e&&X(l,"viewBox",i.e=u),c!==i.t&&X(a,"d",i.t=c),h!==i.a&&X(a,"stroke",i.a=h),i},{e:void 0,t:void 0,a:void 0}),l})()};function et(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KiB`:e<1073741824?`${(e/1024/1024).toFixed(1)} MiB`:`${(e/1024/1024/1024).toFixed(2)} GiB`}function $e(e){return e<1?`${e.toFixed(2)} ms`:e<100?`${e.toFixed(1)} ms`:`${Math.round(e)} ms`}function pr(e){const t=Math.floor(e);return t<60?`${t}s`:t<3600?`${Math.floor(t/60)}m ${t%60}s`:`${Math.floor(t/3600)}h ${Math.floor(t%3600/60)}m ${t%60}s`}function Ht(e){return`${Math.round(e*100)}%`}function He(e){const t=e.toUpperCase();return t==="GET"?"text-emerald-400":t==="POST"?"text-cyan-400":t==="PUT"||t==="PATCH"?"text-amber-400":t==="DELETE"?"text-red-400":"text-text-secondary"}function gt(e){return`dt-pill dt-pill-${e>=500?"err":e>=400?"warn":e>=300?"redir":"ok"}`}function Dr(e){return`dt-tone dt-tone-${e==="controller"?"violet":e==="service"?"blue":e==="repository"?"teal":"gray"}`}function tt(e){return`dt-tone dt-tone-${{ok:"green",warn:"amber",err:"red",idle:"gray"}[e]}`}function ut(e,t=1){const r=e*t;return r>1e3?"text-red-500":r>500?"text-orange-500":r>200?"text-amber-500":""}function Ur(e,t=Date.now()){const r=Math.max(0,Math.round((t-e)/1e3));return r<60?`${r}s ago`:r<3600?`${Math.floor(r/60)}m ago`:r<86400?`${Math.floor(r/3600)}h ago`:`${Math.floor(r/86400)}d ago`}function Xt(e){let t=0;for(const r of e)t=r.charCodeAt(0)+((t<<5)-t);return`hsl(${Math.abs(t)%12*30} 60% 50%)`}var vs=d('<span class=dt-tip tabindex=0><svg class=dt-tip-icon viewBox="0 0 24 24"aria-hidden=true><circle cx=12 cy=12 r=9 fill=none stroke=currentColor stroke-width=1.5></circle><path d="M12 8h.01M12 11v6"stroke=currentColor stroke-width=2 stroke-linecap=round fill=none></path></svg><span role=tooltip>'),ps={"heap.used":{short:"V8-allocated memory currently used by JavaScript objects.",detail:"Grows as your code allocates objects, shrinks after GC frees them. A consistently rising heap-used line on the sparkline is the textbook leak signature."},"heap.total":{short:"V8-allocated memory the JS heap is currently sized to use.",detail:"Larger than heap-used; V8 reserves headroom so allocations don't pause to grow the heap. Bumps up in 1-8 MiB jumps as the heap expands."},rss:{short:"Total memory resident in physical RAM for this Node process.",detail:'Includes the JS heap, native buffers, V8 internal structures, and code. Always larger than heap-used; the gap is "everything the OS sees" minus "JS objects".'},external:{short:"Memory used by C++ objects bound to JS (Buffers, native bindings)."},"array-buffers":{short:"Memory used by ArrayBuffer / SharedArrayBuffer instances."},"event-loop.p99":{short:"99% of event-loop ticks completed within this time.",detail:"Sustained values above ~50ms mean some synchronous operation is blocking the loop. Common culprits: large JSON.parse, sync crypto, blocking DB drivers."},gc:{short:"Garbage-collector activity since process start.",detail:"Total run count and cumulative pause time. Frequent GC with low reclaim ratio = leak; rare GC with healthy reclaim = good citizen."},"leak.risk":{short:"Heap-growth slope over the recent window — stable / warn / critical.",detail:"Bucketed from heap-growth in MB/min: <5 = ok, <20 = warn, ≥20 = critical. Critical sustained for >5 minutes is the moment to capture a heap snapshot."},"gc.reclaim":{short:"Average ratio of memory freed by each GC pass.",detail:"Trending toward zero means GC can't free anything — strong leak indicator. Healthy apps reclaim 20-60% on each major GC."},"heap.utilization":{short:"Fraction of V8's hard heap-size limit currently in use.",detail:"Approaching 1 means the process is close to OOM. Use --max-old-space-size to raise the limit if your workload is memory-bound."},requests:{short:"Total HTTP requests handled since process start."},"server-errors":{short:"5xx responses — server-side failures."},"client-errors":{short:"4xx responses — bad client input, missing routes, auth denials."},"error-rate":{short:"Server errors as a percentage of total requests.",detail:"Computed across the lifetime of the process. Spikes typically signal upstream dependency failures; sustained elevation = code bug."},uptime:{short:"How long this Node process has been running."},"latency.avg":{short:"Mean response time per route (sum of all calls / call count)."},"latency.p50":{short:"Median — half the requests complete faster than this."},"latency.p95":{short:"95% of requests complete within this time."},"latency.p99":{short:"99% of requests complete within this time. Outlier-sensitive."},"latency.max":{short:"Slowest single response observed since process start."},"resolve.count":{short:"Number of times this token was resolved from the DI container."},"resolve.duration":{short:"How long the container took to resolve this token (ms)."},"post-construct":{short:"@PostConstruct lifecycle status: done / failed / none.",detail:'A failed PostConstruct means the service registered but its async init threw. The token is left in a "registered" state; resolve() will throw the original error.'}},Pe=e=>{const t=()=>e.text??ps[e.metric??""]?.short??"",r=e.placement??"top";return(()=>{var s=vs(),l=s.firstChild.nextSibling;return j(l,`dt-tip-pop dt-tip-pop-${r}`),n(l,t),N(()=>X(s,"aria-label",t())),s})()};ye(["click"]);var Jn="kickjs-devtools-tab",xs={memory:"runtime"};function bs(){try{const e=localStorage.getItem(Jn)??"overview";return xs[e]??e}catch{return"overview"}}var[$s,ys]=O(bs());function nt(e){ys(e);try{localStorage.setItem(Jn,e)}catch{}}var ws={publicFlag:"auth.public",csrfCookie:"_csrf",csrfHeader:"x-csrf-token",openApiUrl:"/openapi.json",editorUrl:"vscode://file{file}:{line}"};function xr(e){return(Array.isArray(e)?e:e.split(",")).map(t=>t.trim()).filter(Boolean)}function Kn(e,t){return xr(t.publicFlag).some(r=>e.flags?.[r]!==void 0)}var _s=new Set(["POST","PUT","PATCH","DELETE"]),ks=new Set(["GET","HEAD","OPTIONS"]),Ss=e=>["DELETE","PUT","PATCH"].includes(e.toUpperCase()),br=e=>_s.has(e.toUpperCase());function qt(e){const t=[...e.matchAll(/:([A-Za-z_$][\w$]*)/g)].map(r=>r[1]);return[...new Set(t)]}function Cs(e,t){const r=[],s=e.split(/(:[A-Za-z_$][\w$]*)/).map(i=>i.startsWith(":")?(r.push(i.slice(1)),"([^/]+)"):i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join(""),l=new RegExp(`^${s}/?$`).exec(t);if(!l)return{};const a=i=>{try{return decodeURIComponent(i)}catch{return i}};return Object.fromEntries(r.map((i,u)=>[i,a(l[u+1])]))}function Vn(e,t,r,s){const l=t.replace(/:([A-Za-z_$][\w$]*)/g,(u,c)=>r[c]?encodeURIComponent(r[c]):u),a=new URLSearchParams;for(const u of s)u.enabled&&u.key&&a.append(u.key,u.value);const i=a.toString();return`${e}${l}${i?`?${i}`:""}`}function Es(e,t){for(const r of e.split(";")){const s=r.indexOf("=");if(!(s<0)&&r.slice(0,s).trim()===t)return decodeURIComponent(r.slice(s+1).trim())}}var Gn=/\{\{\s*([\w.-]+)\s*\}\}/g;function Ms(e,t){return e.replace(Gn,(r,s)=>Object.prototype.hasOwnProperty.call(t,s)?t[s]:r)}function Ts(e){const t={};for(const r of e)r.enabled&&r.key&&(t[r.key]=r.value);return t}function en(e){const t=typeof e.body=="string"?e.body:"",r=(e.form??[]).flatMap(l=>[l.name,l.value??""]),s=[e.url,...Object.entries(e.headers).flat(),t,...r].join(`
2
+ `);return[...new Set([...s.matchAll(Gn)].map(l=>l[1]))]}function As(e,t){const r=t.match(/[^.[\]]+/g)??[];let s=e;for(const l of r){if(s===null||typeof s!="object")return;s=s[l]}if(s!==void 0)return typeof s=="string"?s:JSON.stringify(s)}function Ls(e){const{route:t,settings:r,origin:s,cookies:l}=e,a=e.variables??{},i=m=>Ms(m,a),u=m=>m.map(S=>({...S,key:i(S.key),value:i(S.value)})),c={params:Object.fromEntries(Object.entries(e.inputs.params).map(([m,S])=>[m,i(S)])),query:u(e.inputs.query),headers:u(e.inputs.headers),body:i(e.inputs.body),bodyMode:e.inputs.bodyMode,form:(e.inputs.form??[]).map(m=>({...m,key:i(m.key),value:i(m.value)}))},h=u(e.defaults),f=t.method.toUpperCase(),p=Kn(t,r),v={},b=(m,S)=>{for(const x of m)if(!(!x.enabled||!x.key)&&!(S&&x.key.toLowerCase()==="authorization")){for(const g of Object.keys(v))g.toLowerCase()===x.key.toLowerCase()&&delete v[g];v[x.key]=x.value}};b(h,p),b(c.headers,!1);const w=m=>Object.keys(v).some(S=>S.toLowerCase()===m);if(!ks.has(f)&&!w(r.csrfHeader.toLowerCase())){const m=Es(l,r.csrfCookie);m&&(v[r.csrfHeader]=m)}const M=Vn(s,t.path,c.params,c.query);if(br(f)&&c.bodyMode==="form"){const{body:m,form:S}=Os(c.form??[]);for(const x of Object.keys(v))x.toLowerCase()==="content-type"&&delete v[x];return{method:f,url:M,headers:v,body:m,form:S}}const y=br(f)&&c.body.trim()?c.body:void 0;return y!==void 0&&!w("content-type")&&/^\s*[[{]/.test(y)&&(v["Content-Type"]="application/json"),{method:f,url:M,headers:v,...y!==void 0?{body:y}:{}}}function Os(e){const t=new FormData,r=[];for(const s of e)if(!(!s.enabled||!s.key))if(s.type==="file")for(const l of s.files??[])t.append(s.key,l,l.name),r.push({name:s.key,fileName:l.name});else t.append(s.key,s.value),r.push({name:s.key,value:s.value});return{body:t,form:r}}var _t=e=>`'${e.replace(/'/g,"'\\''")}'`;function Rs(e){const t=[`curl -X ${e.method} ${_t(e.url)}`];for(const[r,s]of Object.entries(e.headers))t.push(`-H ${_t(`${r}: ${s}`)}`);if(e.form)for(const r of e.form)t.push(`-F ${_t(r.fileName!==void 0?`${r.name}=@${r.fileName}`:`${r.name}=${r.value??""}`)}`);else typeof e.body=="string"&&t.push(`--data-raw ${_t(e.body)}`);return t.join(` \\
3
3
  `)}function qs(e){const t={method:e.method};if(Object.keys(e.headers).length&&(t.headers=e.headers),e.form){const r=["const form = new FormData()"];for(const l of e.form)r.push(l.fileName!==void 0?`form.append(${JSON.stringify(l.name)}, fileInput.files[0]) // ${l.fileName}`:`form.append(${JSON.stringify(l.name)}, ${JSON.stringify(l.value??"")})`);const s=JSON.stringify(t,null,2).replace(/\n}$/,`,
4
4
  "body": form
5
5
  }`);return`${r.join(`
6
6
  `)}
7
7
 
8
- await fetch(${JSON.stringify(e.url)}, ${s})`}return typeof e.body=="string"&&(t.body=e.body),`await fetch(${JSON.stringify(e.url)}, ${JSON.stringify(t,null,2)})`}function Ns(e,t){if(!t?.includes("json"))return e;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}var Nt=e=>`kickjs-devtools:runner:${e.method.toUpperCase()} ${e.path}`,Yn=e=>{const t=e.upload&&e.upload.mode!=="none"?e.upload:void 0;return{params:Object.fromEntries(qt(e.path).map(r=>[r,""])),query:[],headers:[],body:"",bodyMode:t?"form":"raw",form:t?[{key:t.fieldName??"file",value:"",enabled:!0,type:"file"}]:[]}};function Wn(e){return{...e,form:e.form?.map(({files:t,...r})=>r)}}function Ps(e,t,r=30){return[{...t,inputs:Wn(t.inputs)},...e].slice(0,r)}var Is=e=>Vn("",e.path,e.inputs.params,e.inputs.query);function Ds(e,t){for(const[r,s]of Object.entries(e?.paths??{}))if(r.replace(/\{([^}]+)\}/g,":$1")===t.path)return s?.[t.method.toLowerCase()]}function Qn(e,t){const r=t?.$ref;if(typeof r!="string"||!r.startsWith("#/"))return t;let s=e;for(const l of r.slice(2).split("/"))s=s?.[l];return s}function ot(e,t,r=0){const s=Qn(e,t);if(!s||r>6)return null;if(s.example!==void 0)return s.example;if(s.default!==void 0)return s.default;if(Array.isArray(s.enum)&&s.enum.length)return s.enum[0];const l=s.oneOf?.[0]??s.anyOf?.[0];if(l)return ot(e,l,r+1);if(s.allOf)return Object.assign({},...s.allOf.map(a=>ot(e,a,r+1)));switch((Array.isArray(s.type)?s.type.find(a=>a!=="null"):s.type)??(s.properties?"object":void 0)){case"object":return Object.fromEntries(Object.entries(s.properties??{}).map(([a,i])=>[a,ot(e,i,r+1)]));case"array":return s.items?[ot(e,s.items,r+1)]:[];case"string":return"";case"integer":case"number":return 0;case"boolean":return!1;default:return null}}function Us(e,t){const r=Ds(e,t);if(!r)return;const s={},l=[];for(const i of r.parameters??[]){const u=Qn(e,i);u?.name&&(u.in==="path"&&u.description&&(s[u.name]=u.description),u.in==="query"&&l.push({name:u.name,required:!!u.required,description:u.description}))}const a=r.requestBody?.content?.["application/json"]?.schema;return{summary:r.summary??r.description,params:s,query:l,...a?{body:JSON.stringify(ot(e,a),null,2)}:{}}}function tn(e,t){const r=new Set(e.query.map(a=>a.key)),s=[...e.query,...t.query.filter(a=>!r.has(a.name)).map(a=>({key:a.name,value:"",enabled:a.required}))],l=e.body.trim()||!t.body?e.body:t.body;return{...e,query:s,body:l}}function js(e,t,r){const s=t.replace(/\\/g,"/").replace(/^(?=[A-Za-z]:)/,"/");return e.replace("{file}",encodeURI(s)).replace("{line}",String(r))}var Hs=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">Select a route to try it'),Bs=d('<p class="text-sm text-text-secondary mt-1">'),zs=d('<p class="text-xs text-amber-400 mt-2">No value for <!> — add it under Environment → Variables.'),Fs=d('<label class="flex items-start gap-2 text-sm mb-3"><input type=checkbox class=mt-1><span>Remember on this browser<span class="block text-xs text-text-muted">'),Ks=d('<h3 class="text-xs font-semibold text-text-secondary mb-1">Default headers'),Js=d('<p class="text-xs text-text-muted mb-2">Sent with every route. A default Authorization is skipped on routes carrying a public flag.'),Vs=d('<h3 class="text-xs font-semibold text-text-secondary mt-4 mb-1">Variables'),Gs=d('<p class="text-xs text-text-muted mb-2">Use <code>{{name}}</code> in any param, query, header or body value — e.g. a default header <code>Authorization: Bearer {{token}}</code>. Fill them by hand or with "Save to variable" on a response.'),Ys=d('<h3 class="text-xs font-semibold text-text-secondary mt-4 mb-1">Settings'),Ws=d('<div class="grid grid-cols-1 sm:grid-cols-2 gap-3"><label class="flex flex-col gap-1 text-xs text-text-muted">Public route flags (comma-separated)<input>'),Qs=d('<span class="text-xs text-text-muted"role=status>'),Xs=d('<div class="flex items-center gap-1 mb-2"><button type=button>Copy'),Zs=d('<pre class="text-xs font-mono bg-surface-2 border border-border rounded-lg p-3 overflow-x-auto whitespace-pre-wrap break-all select-text">'),ea=d('<div class="text-sm text-red-400 bg-red-500/10 border border-red-500/30 rounded-lg p-3">Request failed: '),ta=d('<ul class="flex flex-col gap-1">'),ra=d("<button type=button>Clear history"),na=d('<div class="h-full flex flex-col min-h-0"><section class="h-full bg-surface-1 flex flex-col min-h-0"><header class="px-5 py-4 border-b border-border"><div class="flex items-start justify-between gap-4"><div class=min-w-0><div class="flex items-center gap-2"><span></span><h2 class="text-base font-semibold font-mono text-text-body break-all"></h2></div><p class="text-xs text-text-muted mt-1"><button type=button class="underline decoration-dotted hover:text-kick-500"title="Open in editor">.</button></p></div><button type=button class="text-text-muted hover:text-text-strong p-1 text-lg leading-none"aria-label=Close>✕</button></div><div class="flex items-stretch gap-2 mt-3"><div class="flex-1 min-w-0 flex items-center gap-2 font-mono text-xs bg-surface-2 border border-border rounded-lg px-3 py-2 text-text-secondary"><span></span><span class=break-all></span></div><button type=button></button></div></header><div class="flex-1 overflow-y-auto px-5 py-3 flex flex-col gap-2">'),jr=d('<div class="flex flex-col gap-2">'),la=d('<ul class="text-xs text-text-muted mt-2 flex flex-col gap-0.5">'),sa=d('<span class="text-xs text-text-muted ml-2">@FileUpload: field <code>'),aa=d('<div class="flex items-center gap-1 mb-2">'),oa=d(`<p class="text-xs text-text-muted mt-2">Sent as multipart/form-data. Picked files aren't saved — pick them again after reopening.`),ia=d('<label class="flex items-center gap-3 text-sm"><span class="font-mono text-text-secondary w-28 shrink-0">:</span><input>'),ca=d("<li><code>"),rn=d("<button type=button>"),ua=d('<textarea placeholder="{ &quot;name&quot;: &quot;value&quot; }">'),da=d("<button type=button>Fill empty inputs from OpenAPI"),fa=d('<label class="flex flex-col gap-1 text-xs text-text-muted"><input>'),ha=d('<details class="text-xs mb-2"><summary class="cursor-pointer text-text-secondary">Response headers (<!>)</summary><table class=mt-2><tbody>'),ga=d('<pre class="text-xs font-mono bg-surface-2 border border-border rounded-lg p-3 overflow-x-auto max-h-[50vh] whitespace-pre-wrap break-all">'),ma=d('<div class="flex flex-col sm:flex-row sm:items-center gap-2 mt-3 text-xs"><span class="text-text-secondary font-semibold shrink-0">Save to variable</span><input placeholder="JSON path, e.g. data.accessToken"><input placeholder="variable, e.g. token"><button type=button>Save'),va=d('<p class="text-xs text-text-muted mt-1"role=status>'),pa=d('<p class="mt-1 text-xs text-text-muted">Body truncated to <!> characters.'),xa=d('<span class="flex items-center gap-3">Response<span> </span><span class="text-text-muted text-xs font-normal"> ms'),ba=d('<tr><td class="font-mono text-text-secondary pr-4"></td><td class="font-mono break-all">'),$a=d('<p class="text-xs text-text-muted">Nothing sent yet.'),ya=d('<li><button type=button class="w-full flex items-center gap-2 text-xs text-left rounded px-2 py-1 hover:bg-surface-2"title="Open with these inputs"><span></span><span class="font-mono truncate flex-1"></span><span></span><span class="text-text-muted w-16 text-right"> ms</span><span class="text-text-muted w-16 text-right">'),wa=d('<span class="text-xs font-normal text-text-muted">(<!>)'),_a=d('<details class="border border-border rounded-lg bg-surface-1 group"><summary class="cursor-pointer select-none px-3 py-2 text-sm font-semibold text-text-body flex items-center gap-2"><span class="text-text-muted transition-transform group-open:rotate-90">▸</span></summary><div class="px-3 pb-3">'),ka=d("<label><input type=file class=sr-only>"),Sa=d('<div class="flex items-center gap-2"><input type=checkbox aria-label=Enabled><select aria-label="Field type"><option value=text>Text</option><option value=file>File</option></select><input placeholder=name>'),Ca=d("<input placeholder=value>"),Ea=d('<div class="flex items-center gap-2"><input type=checkbox aria-label=Enabled><input placeholder=name><input placeholder=value>'),Zt="kickjs-devtools:runner:defaults",er="kickjs-devtools:runner:variables",nn="kickjs-devtools:runner:settings",Xn="kickjs-devtools:runner:remember",ln="kickjs-devtools:runner:history",tr=2e5,[Oe,$r]=R(null),lt=0,it=null,[Zn,sn]=R({});function Ma(e){e in Ae(Zn)||(sn(t=>({...t,[e]:void 0})),fetch(e,{credentials:"same-origin"}).then(t=>t.ok?t.json():null).catch(()=>null).then(t=>sn(r=>({...r,[e]:t}))))}var[Ta,Aa]=R(0);function Jt(e,t){if(t){const r=yr(()=>localStorage,Nt(e),Yn(e));it={...r,params:{...r.params,...t}}}$r(e),Aa(r=>r+1),rt("routes")}function yr(e,t,r){try{const s=e().getItem(t);return s?{...r,...JSON.parse(s)}:r}catch{return r}}function an(e,t){try{const r=JSON.parse(e().getItem(t)??"[]");return Array.isArray(r)?r:[]}catch{return[]}}function on(e,t){try{e().removeItem(t)}catch{}}function La(){try{return localStorage.getItem(Xn)==="true"}catch{return!1}}function We(e,t,r){try{e().setItem(t,JSON.stringify(r))}catch{}}var kt=e=>e.filter(t=>t.enabled&&t.key).length,Ra=()=>{const[e,t]=R(null),[r,s]=R(La()),l=()=>r()?localStorage:sessionStorage,a=()=>r()?sessionStorage:localStorage,[i,u]=R(an(l,Zt)),[c,h]=R(an(l,er)),[f,p]=R({path:"",name:""}),[v,x]=R(null),[w,M]=R(yr(()=>localStorage,nn,ws)),[y,m]=R(!1),[S,b]=R(!1),[g,$]=R(null),[C,O]=R(null),[q,T]=R(null),[D,U]=R("curl"),[re,Q]=R((()=>{try{const L=JSON.parse(localStorage.getItem(ln)??"[]");return Array.isArray(L)?L:[]}catch{return[]}})()),[k,A]=R(null),[J,V]=R(!1),B=se(()=>{const L=Oe(),z=Zn()[w().openApiUrl];return L&&z?Us(z,L):void 0});qe(()=>{const L=Oe();if(Ta(),lt++,!L)return;let z=!1;try{z=localStorage.getItem(Nt(L))===null}catch{}const fe=it??yr(()=>localStorage,Nt(L),Yn(L));it=null;const be=Object.fromEntries(qt(L.path).map(ke=>[ke,fe.params[ke]??""]));t({...fe,params:be}),V(z),A(null),$(null),O(null),m(!1),b(!1)}),qe(()=>{const L=Oe(),z=e();L&&z&&We(()=>localStorage,Nt(L),Wn(z))}),qe(()=>{We(l,Zt,i()),We(l,er,c()),on(a,Zt),on(a,er),We(()=>localStorage,Xn,r())}),qe(()=>We(()=>localStorage,nn,w())),qe(()=>We(()=>localStorage,ln,re())),qe(()=>{Oe()&&Ma(w().openApiUrl)}),qe(()=>{const L=B();!L||!J()||(V(!1),t(z=>z&&tn(z,L)))});const I=se(()=>{const L=Oe(),z=e();return!L||!z?null:Ls({route:L,inputs:z,defaults:i(),variables:Ts(c()),settings:w(),origin:window.location.origin,cookies:document.cookie})}),ie=()=>$r(null),E=L=>{m(!1),t(z=>z&&{...z,...L})};async function P(){const L=I();if(!L)return;if(Ss(L.method)&&!y()){m(!0);return}m(!1),b(!0),O(null);const z=performance.now(),fe=lt,be=Oe(),ke=e(),Ce=me=>Q(ge=>Ps(ge,{at:Date.now(),method:be.method.toUpperCase(),path:be.path,inputs:ke,ms:Math.round(performance.now()-z),...me}));try{const me=await fetch(L.url,{method:L.method,headers:L.headers,body:L.body,credentials:"same-origin"}),ge=await me.text();if(Ce({status:me.status}),fe!==lt)return;$({status:me.status,statusText:me.statusText,ms:Math.round(performance.now()-z),headers:[...me.headers.entries()],raw:ge,body:Ns(ge.slice(0,tr),me.headers.get("content-type")),truncated:ge.length>tr})}catch(me){if(Ce({error:me instanceof Error?me.message:String(me)}),fe!==lt)return;$(null),O(me instanceof Error?me.message:String(me))}finally{fe===lt&&b(!1)}}const Y=se(()=>{const L=I();return L?D()==="curl"?Os(L):qs(L):""});async function Z(){try{await navigator.clipboard.writeText(Y()),T("Copied")}catch{T("Copy failed — select the text instead")}setTimeout(()=>T(null),1500)}function H(){const L=g(),{path:z,name:fe}=f();if(!L||!z.trim()||!fe.trim())return;let be;try{be=JSON.parse(L.raw)}catch{x("The response is not JSON");return}const ke=As(be,z.trim());if(ke===void 0){x(`Nothing at "${z.trim()}"`);return}const Ce=fe.trim(),me=c();h(me.some(ge=>ge.key===Ce)?me.map(ge=>ge.key===Ce?{...ge,value:ke,enabled:!0}:ge):[...me,{key:Ce,value:ke,enabled:!0}]),x(`Saved {{${Ce}}}`)}function ne(L){const z=ae.routes().find(fe=>fe.method.toUpperCase()===L.method&&fe.path===L.path);z&&(it=L.inputs,z===Oe()?(it=null,E(L.inputs)):$r(z))}async function W(){const L=Oe();if(L){A(null);try{const z=await we.source(L.controller,L.handler);window.location.href=js(w().editorUrl,z.file,z.line),A(`${z.relative}:${z.line}`)}catch{A("Source not found under src/")}}}const de=()=>{const L=Oe();return L?Jn(L,w()):!1};return o(_,{get when(){return Oe()},get fallback(){return Hs()},children:L=>(()=>{var z=na(),fe=z.firstChild,be=fe.firstChild,ke=be.firstChild,Ce=ke.firstChild,me=Ce.firstChild,ge=me.firstChild,xt=ge.nextSibling,Ve=me.nextSibling,ze=Ve.firstChild,bt=ze.firstChild,$t=Ce.nextSibling,Hr=ke.nextSibling.firstChild,Vt=Hr.firstChild,pl=Vt.nextSibling,yt=Hr.nextSibling,Ge=be.nextSibling;return n(ge,()=>L().method.toUpperCase()),n(xt,()=>L().path),ze.$$click=W,n(ze,()=>L().controller,bt),n(ze,()=>L().handler,null),n(Ve,o(_,{get when(){return k()},get children(){return[" · ",le(()=>k())]}}),null),n(Ve,o(_,{get when(){return de()},children:" · public route — default Authorization not sent"}),null),n(Ce,o(_,{get when(){return B()?.summary},get children(){var G=Bs();return n(G,()=>B().summary),G}}),null),$t.$$click=ie,n(Vt,()=>L().method.toUpperCase()),n(pl,()=>I()?.url),yt.$$click=P,n(yt,(()=>{var G=le(()=>!!S());return()=>G()?"Sending…":le(()=>!!y())()?`Confirm ${L().method.toUpperCase()}`:"Send"})()),n(be,o(_,{get when(){return le(()=>!!I())()&&en(I()).length>0},get children(){var G=zs(),K=G.firstChild.nextSibling;return K.nextSibling,n(G,()=>en(I()).map(ee=>`{{${ee}}}`).join(", "),K),G}}),null),n(Ge,o(_,{get when(){return e()},children:G=>[o(_,{get when(){return qt(L().path).length>0},get children(){return o(je,{title:"Path params",open:!0,get children(){var K=jr();return n(K,o(te,{get each(){return qt(L().path)},children:ee=>(()=>{var ce=ia(),oe=ce.firstChild;oe.firstChild;var ue=oe.nextSibling;return n(oe,ee,null),ue.$$input=Me=>E({params:{...G().params,[ee]:Me.currentTarget.value}}),j(ue,Le),N(()=>X(ue,"placeholder",B()?.params[ee])),N(()=>ue.value=G().params[ee]??""),ce})()})),K}})}}),o(je,{title:"Query",get count(){return kt(G().query)},get children(){return[o(St,{get rows(){return G().query},onChange:K=>E({query:K})}),o(_,{get when(){return B()?.query.length},get children(){var K=la();return n(K,o(te,{get each(){return B().query},children:ee=>(()=>{var ce=ca(),oe=ce.firstChild;return n(oe,()=>ee.name),n(ce,()=>ee.required?" (required)":"",null),n(ce,(()=>{var ue=le(()=>!!ee.description);return()=>ue()?` — ${ee.description}`:""})(),null),ce})()})),K}})]}}),o(je,{title:"Headers",get count(){return kt(G().headers)},get children(){return o(St,{get rows(){return G().headers},onChange:K=>E({headers:K})})}}),o(_,{get when(){return br(L().method)},get children(){return o(je,{title:"Body",open:!0,get children(){return[(()=>{var K=aa();return n(K,o(te,{each:[["raw","Raw"],["form","Form data"]],children:([ee,ce])=>(()=>{var oe=rn();return oe.$$click=()=>E({bodyMode:ee}),n(oe,ce),N(ue=>{var Me=(G().bodyMode??"raw")===ee,De=`px-3 py-1 text-xs font-semibold rounded-lg border transition-colors ${(G().bodyMode??"raw")===ee?"bg-kick-500/20 text-kick-500 border-kick-500/30":"bg-surface-2 text-text-secondary border-border-strong hover:text-text-body"}`;return Me!==ue.e&&X(oe,"aria-pressed",ue.e=Me),De!==ue.t&&j(oe,ue.t=De),ue},{e:void 0,t:void 0}),oe})()}),null),n(K,o(_,{get when(){return le(()=>!!L().upload)()&&L().upload.mode!=="none"},get children(){var ee=sa(),ce=ee.firstChild.nextSibling;return n(ce,()=>L().upload.fieldName??"file"),n(ee,(()=>{var oe=le(()=>L().upload.mode==="array");return()=>oe()?`, up to ${L().upload.maxCount??10} files`:", one file"})(),null),ee}}),null),K})(),o(_,{get when(){return G().bodyMode==="form"},get fallback(){return(()=>{var K=ua();return K.$$input=ee=>E({body:ee.currentTarget.value}),j(K,`${Le} font-mono min-h-40`),N(()=>K.value=G().body),K})()},get children(){return[o(Oa,{get rows(){return G().form??[]},get multiple(){return L().upload?.mode==="array"},onChange:K=>E({form:K})}),oa()]}})]}})}})]}),null),n(Ge,o(je,{title:"Environment",get count(){return kt(i())+kt(c())},get children(){return[(()=>{var G=Fs(),K=G.firstChild,ee=K.nextSibling.firstChild.nextSibling;return K.addEventListener("change",ce=>s(ce.currentTarget.checked)),n(ee,()=>r()?"Default headers and variables are saved in localStorage and survive closing the tab. They may hold tokens — turn this off on a shared machine.":"Default headers and variables are kept for this browser tab only."),N(()=>K.checked=r()),G})(),Ks(),Js(),o(St,{get rows(){return i()},onChange:u}),Vs(),Gs(),o(St,{get rows(){return c()},onChange:h}),o(_,{get when(){return B()},children:G=>(()=>{var K=da();return K.$$click=()=>E(tn(e(),G())),j(K,`${Ct} mt-4`),K})()}),Ys(),(()=>{var G=Ws(),K=G.firstChild.firstChild.nextSibling;return K.addEventListener("change",ee=>M({...w(),publicFlag:xr(ee.currentTarget.value)})),j(K,Le),n(G,o(te,{each:[["csrfCookie","CSRF cookie"],["csrfHeader","CSRF header"],["openApiUrl","OpenAPI spec URL"],["editorUrl","Editor link ({file}, {line})"]],children:([ee,ce])=>(()=>{var oe=fa(),ue=oe.firstChild;return n(oe,ce,ue),ue.$$input=Me=>M({...w(),[ee]:Me.currentTarget.value}),j(ue,Le),N(()=>ue.value=w()[ee]),oe})()}),null),N(()=>K.value=xr(w().publicFlag).join(", ")),G})()]}}),null),n(Ge,o(je,{title:"Code snippet",get children(){return[(()=>{var G=Xs(),K=G.firstChild;return n(G,o(te,{each:["curl","fetch"],children:ee=>(()=>{var ce=rn();return ce.$$click=()=>U(ee),n(ce,ee),N(oe=>{var ue=D()===ee,Me=`px-3 py-1 text-xs font-semibold rounded-lg border transition-colors ${D()===ee?"bg-kick-500/20 text-kick-500 border-kick-500/30":"bg-surface-2 text-text-secondary border-border-strong hover:text-text-body"}`;return ue!==oe.e&&X(ce,"aria-pressed",oe.e=ue),Me!==oe.t&&j(ce,oe.t=Me),oe},{e:void 0,t:void 0}),ce})()}),K),K.$$click=Z,j(K,`${Ct} ml-auto`),n(G,o(_,{get when(){return q()},get children(){var ee=Qs();return n(ee,q),ee}}),null),G})(),(()=>{var G=Zs();return n(G,Y),G})()]}}),null),n(Ge,o(_,{get when(){return C()},get children(){var G=ea();return G.firstChild,n(G,C,null),G}}),null),n(Ge,o(_,{get when(){return g()},children:G=>o(je,{open:!0,get title(){return(()=>{var K=xa(),ee=K.firstChild.nextSibling,ce=ee.firstChild,oe=ee.nextSibling,ue=oe.firstChild;return n(ee,()=>G().status,ce),n(ee,()=>G().statusText,null),n(oe,()=>G().ms,ue),N(()=>j(ee,gt(G().status))),K})()},get children(){return[(()=>{var K=ha(),ee=K.firstChild,ce=ee.firstChild.nextSibling;ce.nextSibling;var oe=ee.nextSibling.firstChild;return n(ee,()=>G().headers.length,ce),n(oe,o(te,{get each(){return G().headers},children:([ue,Me])=>(()=>{var De=ba(),wt=De.firstChild,Gt=wt.nextSibling;return n(wt,ue),n(Gt,Me),De})()})),K})(),(()=>{var K=ga();return n(K,()=>G().body||"(empty body)"),K})(),(()=>{var K=ma(),ee=K.firstChild.nextSibling,ce=ee.nextSibling,oe=ce.nextSibling;return ee.$$input=ue=>p({...f(),path:ue.currentTarget.value}),j(ee,Le),ce.$$input=ue=>p({...f(),name:ue.currentTarget.value}),j(ce,Le),oe.$$click=H,j(oe,Ct),N(()=>ee.value=f().path),N(()=>ce.value=f().name),K})(),o(_,{get when(){return v()},get children(){var K=va();return n(K,v),K}}),o(_,{get when(){return G().truncated},get children(){var K=pa(),ee=K.firstChild.nextSibling;return ee.nextSibling,n(K,()=>tr.toLocaleString(),ee),K}})]}})}),null),n(Ge,o(je,{title:"History",get count(){return re().length},get children(){return o(_,{get when(){return re().length>0},get fallback(){return $a()},get children(){return[(()=>{var G=ta();return n(G,o(te,{get each(){return re()},children:K=>(()=>{var ee=ya(),ce=ee.firstChild,oe=ce.firstChild,ue=oe.nextSibling,Me=ue.nextSibling,De=Me.nextSibling,wt=De.firstChild,Gt=De.nextSibling;return ce.$$click=()=>ne(K),n(oe,()=>K.method),n(ue,()=>Is(K)),n(Me,()=>K.status??"failed"),n(De,()=>K.ms,wt),n(Gt,()=>new Date(K.at).toLocaleTimeString()),N(nt=>{var Br=`font-bold w-14 shrink-0 ${He(K.method)}`,zr=K.status?gt(K.status):"dt-pill dt-pill-err";return Br!==nt.e&&j(oe,nt.e=Br),zr!==nt.t&&j(Me,nt.t=zr),nt},{e:void 0,t:void 0}),ee})()})),G})(),(()=>{var G=ra();return G.$$click=()=>Q([]),j(G,`${Ct} mt-2`),G})()]}})}}),null),N(G=>{var K=`Try ${L().method} ${L().path}`,ee=`text-xs font-bold ${He(L().method)}`,ce=`font-bold ${He(L().method)}`,oe=S(),ue=`shrink-0 px-4 text-sm font-semibold rounded-lg border transition-colors ${y()?"bg-red-500/20 text-red-400 border-red-500/40":"bg-kick-500/20 text-kick-500 border-kick-500/30 hover:bg-kick-500/30"}`;return K!==G.e&&X(fe,"aria-label",G.e=K),ee!==G.t&&j(ge,G.t=ee),ce!==G.a&&j(Vt,G.a=ce),oe!==G.o&&(yt.disabled=G.o=oe),ue!==G.i&&j(yt,G.i=ue),G},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),z})()})},je=e=>(()=>{var t=_a(),r=t.firstChild;r.firstChild;var s=r.nextSibling;return n(r,()=>e.title,null),n(r,o(_,{get when(){return e.count},get children(){var l=wa(),a=l.firstChild.nextSibling;return a.nextSibling,n(l,()=>e.count,a),l}}),null),n(s,()=>e.children),N(()=>t.open=e.open),t})(),Oa=e=>{const t=()=>[...e.rows,{key:"",value:"",enabled:!0,type:"text"}],r=(s,l)=>{const a=t().map((i,u)=>u===s?{...i,...l}:i);e.onChange(a.filter(i=>i.key||i.value||i.files?.length))};return(()=>{var s=jr();return n(s,o(Nn,{get each(){return t()},children:(l,a)=>(()=>{var i=Sa(),u=i.firstChild,c=u.nextSibling,h=c.nextSibling;return u.addEventListener("change",f=>r(a,{enabled:f.currentTarget.checked})),c.addEventListener("change",f=>r(a,{type:f.currentTarget.value,value:"",files:[]})),j(c,`${Le} w-24 shrink-0`),h.$$input=f=>r(a,{key:f.currentTarget.value}),j(h,Le),n(i,o(_,{get when(){return l().type==="file"},get fallback(){return(()=>{var f=Ca();return f.$$input=p=>r(a,{value:p.currentTarget.value}),j(f,Le),N(()=>f.value=l().value),f})()},get children(){var f=ka(),p=f.firstChild;return j(f,`${Le} cursor-pointer truncate`),p.addEventListener("change",v=>r(a,{files:[...v.currentTarget.files??[]]})),n(f,(()=>{var v=le(()=>!!l().files?.length);return()=>v()?l().files.map(x=>x.name).join(", "):"Choose file…"})(),null),N(()=>p.multiple=e.multiple),f}}),null),N(()=>u.checked=l().enabled),N(()=>c.value=l().type),N(()=>h.value=l().key),i})()})),s})()},St=e=>{const t=()=>[...e.rows,{key:"",value:"",enabled:!0}],r=(s,l)=>{const a=t().map((i,u)=>u===s?{...i,...l}:i);e.onChange(a.filter(i=>i.key||i.value))};return(()=>{var s=jr();return n(s,o(Nn,{get each(){return t()},children:(l,a)=>(()=>{var i=Ea(),u=i.firstChild,c=u.nextSibling,h=c.nextSibling;return u.addEventListener("change",f=>r(a,{enabled:f.currentTarget.checked})),c.$$input=f=>r(a,{key:f.currentTarget.value}),j(c,Le),h.$$input=f=>r(a,{value:f.currentTarget.value}),j(h,Le),N(()=>u.checked=l().enabled),N(()=>c.value=l().key),N(()=>h.value=l().value),i})()})),s})()},Le="w-full min-w-0 bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500",Ct="px-3 py-2 text-xs font-semibold rounded-lg border bg-surface-2 text-text-secondary border-border-strong hover:text-text-body";ye(["click","input"]);var qa=d("<div class=dt-split><div class=dt-split-left></div><div class=dt-resizer role=separator aria-orientation=vertical></div><div class=dt-split-right>"),cn=240,un=720,Je=e=>{const t=`kickjs-devtools-split:${e.storageKey}`,r=(()=>{try{const u=Number(localStorage.getItem(t));if(u>=cn&&u<=un)return u}catch{}return e.defaultLeft??380})(),[s,l]=R(r);let a=null;Se(()=>a?.());const i=u=>{u.preventDefault();const c=u.clientX,h=s();document.body.style.cursor="col-resize";const f=v=>l(Math.min(un,Math.max(cn,h+v.clientX-c))),p=()=>{a?.();try{localStorage.setItem(t,String(s()))}catch{}};a=()=>{document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",p),document.body.style.cursor="",a=null},document.addEventListener("mousemove",f),document.addEventListener("mouseup",p)};return(()=>{var u=qa(),c=u.firstChild,h=c.nextSibling,f=h.nextSibling;return n(c,()=>e.left),h.$$mousedown=i,n(f,()=>e.right),N(p=>Pn(c,`width:${s()}px`,p)),u})()};ye(["mousedown"]);var Na=d('<div class="flex flex-col gap-1.5 border-b border-border p-2"><input type=text placeholder="Search method or path…"class="w-full bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><div class="flex items-center gap-1 flex-wrap"><span class=flex-1></span><button type=button></button><button type=button>Clear</button></div><div class="text-xs text-text-muted"> requests'),Pa=d('<div class="min-h-0 flex-1 overflow-y-auto">'),Ia=d("<button type=button>"),Da=d("<div class=empty>"),Ua=d('<span class="text-red-500 text-[0.66rem]">●'),ja=d('<button type=button><span></span><span></span><span class="min-w-0 flex-1 truncate font-mono"></span><span class="shrink-0 text-[0.7rem] text-text-muted tabular-nums"></span><span class="w-14 shrink-0 text-right text-[0.66rem] text-text-muted tabular-nums">'),Ha=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">Select a request to see its details'),Ba=d('<section class="flex h-full min-h-0 flex-col gap-3 overflow-y-auto bg-surface-1 p-4"><div class="flex items-center gap-2"><span></span><span></span><span class="min-w-0 truncate font-mono text-sm text-text-strong"></span></div><dl class="grid grid-cols-[8rem_1fr] gap-x-3 gap-y-1.5 text-[0.8rem]"><dt class=text-text-muted>Route</dt><dd class="m-0 font-mono"></dd><dt class=text-text-muted>Duration</dt><dd class=m-0></dd><dt class=text-text-muted>Time</dt><dd class=m-0></dd><dt class=text-text-muted>Request ID</dt><dd class="m-0 font-mono break-all">'),za=d('<div class="rounded-md border border-red-500/40 bg-red-500/10 px-3 py-2 text-sm"><span class="font-semibold text-red-500"></span><span class=text-text-body>: '),Fa=d(`<div><button type=button class="rounded-md border border-kick-500/30 bg-kick-500/20 px-3 py-1 text-xs font-semibold text-kick-500 hover:bg-kick-500/30">Replay in runner</button><p class="mt-1.5 text-xs text-text-muted">Opens the route with these path params. Query, headers and body aren't logged — the runner keeps the ones saved for this route.`),Ka=1500,Ja=500,Va=["ALL","2xx","3xx","4xx","5xx"],wr=null;function Ga(e){wr=e,rt("requests")}var Ya=e=>new Date(e).toLocaleTimeString([],{hour12:!1}),Wa=()=>{const[e,t]=R([]),[r,s]=R(wr);wr=null;const[l,a]=R(""),[i,u]=R("ALL"),[c,h]=R(!1);let f=0,p=!1;const v=async()=>{if(!(c()||p)){p=!0;try{const{requests:b,latest:g}=await we.requests(f);if(g<f){f=0,t([]),s(null);return}if(b.length===0)return;f=b[b.length-1].seq,t($=>[...b.toReversed(),...$].slice(0,Ja))}catch{}finally{p=!1}}};Ne(()=>{v();const b=setInterval(()=>{v()},Ka);Se(()=>clearInterval(b))});const x=se(()=>{const b=l().trim().toLowerCase(),g=i();return e().filter($=>(g==="ALL"||Math.floor($.status/100)===Number(g[0]))&&(!b||`${$.method} ${$.path}`.toLowerCase().includes(b)))}),w=se(()=>e().find(b=>b.seq===r())??null),M=b=>b.route===void 0?void 0:ae.routes().find(g=>g.method.toUpperCase()===b.method.toUpperCase()&&g.path===b.route),y=b=>`px-2 py-0.5 text-[0.68rem] font-semibold rounded-md border ${b?"bg-kick-500/20 text-kick-500 border-kick-500/30":"bg-surface-2 text-text-secondary border-border-strong hover:text-text-body"}`,m=[(()=>{var b=Na(),g=b.firstChild,$=g.nextSibling,C=$.firstChild,O=C.nextSibling,q=O.nextSibling,T=$.nextSibling,D=T.firstChild;return g.$$input=U=>a(U.currentTarget.value),n($,o(te,{each:Va,children:U=>(()=>{var re=Ia();return re.$$click=()=>u(U),n(re,U),N(Q=>{var k=i()===U,A=y(i()===U);return k!==Q.e&&X(re,"aria-pressed",Q.e=k),A!==Q.t&&j(re,Q.t=A),Q},{e:void 0,t:void 0}),re})()}),C),O.$$click=()=>h(U=>!U),n(O,()=>c()?"Paused":"Pause"),q.$$click=()=>{t([]),s(null)},n(T,o(_,{get when(){return l()||i()!=="ALL"},get children(){return[le(()=>x().length)," matched · "]}}),D),n(T,()=>e().length,D),N(U=>{var re=c(),Q=y(c()),k=y(!1);return re!==U.e&&X(O,"aria-pressed",U.e=re),Q!==U.t&&j(O,U.t=Q),k!==U.a&&j(q,U.a=k),U},{e:void 0,t:void 0,a:void 0}),N(()=>g.value=l()),b})(),(()=>{var b=Pa();return n(b,o(_,{get when(){return x().length>0},get fallback(){return(()=>{var g=Da();return n(g,()=>e().length?"No requests match":"No requests yet — call the app"),g})()},get children(){return o(te,{get each(){return x()},children:g=>(()=>{var $=ja(),C=$.firstChild,O=C.nextSibling,q=O.nextSibling,T=q.nextSibling,D=T.nextSibling;return $.$$click=()=>s(g.seq),n(C,()=>g.status),n(O,()=>g.method),n(q,()=>g.path),n($,o(_,{get when(){return g.error},get children(){var U=Ua();return N(()=>X(U,"title",g.error.message)),U}}),T),n(T,()=>$e(g.durationMs)),n(D,()=>Ya(g.at)),N(U=>{var re=`flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 px-2.5 py-1 text-left text-[0.78rem] text-text-body ${r()===g.seq?"bg-accent/12 shadow-[inset_2px_0_0_0_var(--color-accent)]":"bg-transparent hover:bg-surface-hover"}`,Q=`${gt(g.status)} w-10 shrink-0 text-center`,k=`w-[3.4rem] shrink-0 font-mono text-[0.68rem] font-bold ${He(g.method)}`;return re!==U.e&&j($,U.e=re),Q!==U.t&&j(C,U.t=Q),k!==U.a&&j(O,U.a=k),U},{e:void 0,t:void 0,a:void 0}),$})()})}})),b})()],S=o(_,{get when(){return w()},get fallback(){return Ha()},children:b=>(()=>{var g=Ba(),$=g.firstChild,C=$.firstChild,O=C.nextSibling,q=O.nextSibling,T=$.nextSibling,D=T.firstChild.nextSibling,U=D.nextSibling.nextSibling,re=U.nextSibling.nextSibling,Q=re.nextSibling.nextSibling;return n(C,()=>b().status),n(O,()=>b().method),n(q,()=>b().path),n(g,o(_,{get when(){return b().error},children:k=>(()=>{var A=za(),J=A.firstChild,V=J.nextSibling;return V.firstChild,n(J,()=>k().name),n(V,()=>k().message,null),A})()}),T),n(D,()=>b().route??"no route matched"),n(U,()=>$e(b().durationMs)),n(re,()=>new Date(b().at).toLocaleString()),n(Q,()=>b().requestId??"—"),n(g,o(_,{get when(){return M(b())},children:k=>(()=>{var A=Fa(),J=A.firstChild;return J.$$click=()=>Jt(k(),Cs(k().path,b().path)),A})()}),null),N(k=>{var A=gt(b().status),J=`font-mono text-sm font-bold ${He(b().method)}`;return A!==k.e&&j(C,k.e=A),J!==k.t&&j(O,k.t=J),k},{e:void 0,t:void 0}),g})()});return o(Je,{storageKey:"requests",left:m,right:S})};ye(["input","click"]);var Qa=d('<div class="flex flex-col gap-4"><div class="grid grid-cols-2 gap-3 lg:grid-cols-4"></div><div class="grid grid-cols-1 gap-4 lg:grid-cols-[2fr_1fr]"><section class="rounded-xl border border-border bg-surface-1"><header class="flex items-center justify-between border-b border-border px-4 py-2.5"><h2 class="text-xs font-semibold uppercase tracking-wider text-text-muted">Recent failures</h2><button type=button class="text-xs text-text-muted hover:text-text-strong">All requests →</button></header></section><section class="rounded-xl border border-border bg-surface-1 px-4 py-3 text-[0.8rem]"><h2 class="mb-2 text-xs font-semibold uppercase tracking-wider text-text-muted">App'),Xa=d('<div class="flex flex-col items-center gap-2 px-4 py-8 text-sm text-text-muted">'),Za=d('<button type=button class="rounded-md border border-kick-500/30 bg-kick-500/20 px-3 py-1 text-xs font-semibold text-kick-500 hover:bg-kick-500/30">Try a route'),eo=d('<button type=button class="flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 bg-transparent px-4 py-1.5 text-left text-[0.78rem] text-text-body last:border-b-0 hover:bg-surface-hover"><span></span><span></span><span class="min-w-0 shrink truncate font-mono"></span><span class="min-w-0 flex-1 truncate text-xs text-red-500"></span><span class="shrink-0 text-[0.66rem] text-text-muted tabular-nums">'),to=d('<p class="italic text-text-muted">Loading…'),ro=d("<span>"),no=d('<h3 class="mt-3 mb-1 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">Adapters'),lo=d('<span class="text-xs text-amber-500">'),so=d('<div class="flex items-center gap-2 py-0.5"><span aria-hidden=true></span><span class="min-w-0 flex-1 truncate text-text-secondary">'),ao=d('<div class="flex flex-col rounded-xl border border-border bg-surface-1 px-4 pt-3 pb-2"><span class="text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted"></span><span></span><span class="text-xs text-text-muted"></span><div class="mt-1 h-8 [&amp;_svg]:block [&amp;_svg]:h-full [&amp;_svg]:w-full">'),oo=d('<div class="flex items-center justify-between py-0.5"><span class=text-text-secondary></span><span class="font-medium tabular-nums">'),io=2e3,co=()=>{const[e,t]=R([]),[r,s]=R(null);let l=0,a=!1;const i=async()=>{if(!a){a=!0;try{const[h,f]=await Promise.allSettled([we.requests(l),we.runtime()]);if(h.status==="fulfilled"){if(h.value.latest<l){l=0,t([]);return}const p=h.value.requests;p.length&&(l=p[p.length-1].seq,t(v=>[...v,...p].slice(-200)))}s(f.status==="fulfilled"?f.value.history.map(p=>p.memory.heapUsed):null)}finally{a=!1}}};Ne(()=>{i();const h=setInterval(()=>{i()},io);Se(()=>clearInterval(h))});const u=se(()=>vr(e().map(h=>h.durationMs),95)),c=se(()=>e().filter(h=>h.status>=500||h.error).toReversed().slice(0,6));return(()=>{var h=Qa(),f=h.firstChild,p=f.nextSibling.firstChild,v=p.firstChild.firstChild.nextSibling,x=p.nextSibling;return x.firstChild,n(f,o(st,{label:"Requests",get value(){return ae.metrics()?.requests.toLocaleString()??"—"},get hint(){return`${uo(Qt(Zr()))} in the last minute`},get series(){return Qt(Zr())}}),null),n(f,o(st,{label:"Server errors",get value(){return ae.metrics()?.serverErrors.toLocaleString()??"—"},get hint(){return[le(()=>Ht(ae.metrics()?.errorRate??0))," error rate",o(Pe,{metric:"error-rate"})]},get series(){return Qt(ds())},stroke:"#ef4444",get tone(){return ae.metrics()?.serverErrors?"err":void 0}}),null),n(f,o(st,{label:"Latency p95",get value(){return le(()=>u()===void 0)()?"—":$e(u())},get hint(){return`over the last ${e().length} requests`},get series(){return e().slice(-60).map(w=>w.durationMs)}}),null),n(f,o(_,{get when(){return r()},get fallback(){return o(st,{label:"Uptime",get value(){return le(()=>!!ae.health())()?pr(ae.health().uptime):"—"},hint:"runtime sampler is off"})},children:w=>o(st,{label:"Heap used",get value(){return le(()=>!!w().length)()?Ze(w()[w().length-1]):"—"},hint:"sampled every second",get series(){return w()}})}),null),v.$$click=()=>rt("requests"),n(p,o(_,{get when(){return c().length>0},get fallback(){return(()=>{var w=Xa();return n(w,o(_,{get when(){return e().length>0},get fallback(){return["No requests yet.",(()=>{var M=Za();return M.$$click=()=>rt("routes"),M})()]},get children(){return["No failures in the last ",le(()=>e().length)," requests."]}})),w})()},get children(){return o(te,{get each(){return c()},children:w=>(()=>{var M=eo(),y=M.firstChild,m=y.nextSibling,S=m.nextSibling,b=S.nextSibling,g=b.nextSibling;return M.$$click=()=>Ga(w.seq),n(y,()=>w.status),n(m,()=>w.method),n(S,()=>w.path),n(b,(()=>{var $=le(()=>!!w.error);return()=>$()?`${w.error.name}: ${w.error.message}`:""})()),n(g,()=>new Date(w.at).toLocaleTimeString([],{hour12:!1})),N($=>{var C=`${gt(w.status)} w-10 shrink-0 text-center`,O=`w-[3.4rem] shrink-0 font-mono text-[0.68rem] font-bold ${He(w.method)}`;return C!==$.e&&j(y,$.e=C),O!==$.t&&j(m,$.t=O),$},{e:void 0,t:void 0}),M})()})}}),null),n(x,o(_,{get when(){return ae.health()},get fallback(){return to()},children:w=>[o(Et,{label:"Status",get children(){var M=ro();return n(M,()=>w().status),N(()=>j(M,`badge ${fo(w().status)}`)),M}}),o(Et,{label:"Uptime",get children(){return pr(w().uptime)}}),o(_,{get when(){return ae.metrics()},children:M=>o(Et,{label:"Started",get children(){return new Date(M().startedAt).toLocaleTimeString()}})}),o(_,{get when(){return ae.ws().enabled},get children(){return o(Et,{label:"WebSocket",get children(){return[le(()=>ae.ws().activeConnections??0)," open ·"," ",le(()=>(ae.ws().messagesReceived??0)+(ae.ws().messagesSent??0))," msgs"]}})}}),o(_,{get when(){return Object.keys(w().adapters).length>0},get children(){return[no(),o(te,{get each(){return Object.entries(w().adapters)},children:([M,y])=>(()=>{var m=so(),S=m.firstChild,b=S.nextSibling;return X(m,"title",y),j(S,`h-2 w-2 shrink-0 rounded-full ${y==="running"?"bg-emerald-500":"bg-amber-500"}`),n(b,M),n(m,o(_,{when:y!=="running",get children(){var g=lo();return n(g,y),g}}),null),m})()})]}})]}),null),h})()},st=e=>(()=>{var t=ao(),r=t.firstChild,s=r.nextSibling,l=s.nextSibling,a=l.nextSibling;return n(r,()=>e.label),n(s,()=>e.value),n(l,()=>e.hint),n(a,o(_,{get when(){return(e.series?.length??0)>1},get children(){return o(ms,{get values(){return e.series},get stroke(){return e.stroke}})}})),N(()=>j(s,`mt-0.5 text-xl font-semibold tabular-nums ${e.tone==="err"?"text-red-500":"text-text-strong"}`)),t})(),Et=e=>(()=>{var t=oo(),r=t.firstChild,s=r.nextSibling;return n(r,()=>e.label),n(s,()=>e.children),t})(),uo=e=>e.reduce((t,r)=>t+r,0);function fo(e){return e==="healthy"?"badge-ok":e==="degraded"?"badge-warn":"badge-critical"}ye(["click"]);var ho=d('<section class="flex flex-col rounded-xl border border-border bg-surface-1 px-4 pt-3 pb-2"><header class="flex items-baseline gap-2"><h3 class="text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted"></h3><span class=flex-1></span></header><div class="relative mt-1"><svg viewBox="0 0 300 80"preserveAspectRatio=none class="block h-20 w-full"><line x1=0 x2=300 y1=79.5 y2=79.5 stroke=var(--color-border)></line></svg><span class="pointer-events-none absolute top-0 left-0 text-[0.6rem] text-text-muted tabular-nums"></span></div><div class="flex justify-between text-[0.6rem] text-text-muted"><span></span><span>now'),go=d('<span class="inline-block h-0.5 w-2.5 rounded">'),mo=d('<span class="flex items-center gap-1 text-xs text-text-muted"><span>'),vo=d("<svg><line y1=74 y2=80 stroke=var(--color-text-muted) vector-effect=non-scaling-stroke></svg>",!1,!0,!1),po=d("<svg><path fill=none stroke-width=1.5 stroke-linejoin=round vector-effect=non-scaling-stroke></svg>",!1,!0,!1),xo=300,bo=80,Mt=e=>{const t=se(()=>Math.max(0,...e.series.map(c=>c.values.length))),r=se(()=>e.max??(Math.max(0,...e.series.flatMap(c=>[...c.values]))*1.1||1)),s=c=>t()>1?c/(t()-1)*xo:0,l=c=>bo-Math.min(c,r())/r()*78-1,a=c=>c.map((h,f)=>`${f?"L":"M"}${s(f).toFixed(1)} ${l(h).toFixed(1)}`).join(" "),i=(c,h)=>c.color??(h===0?"var(--color-accent)":"var(--color-text-muted)"),u=c=>c.values[c.values.length-1];return(()=>{var c=ho(),h=c.firstChild,f=h.firstChild,p=f.nextSibling,v=h.nextSibling,x=v.firstChild;x.firstChild;var w=x.nextSibling,M=v.nextSibling.firstChild;return n(f,()=>e.title),n(h,()=>e.info,p),n(h,o(te,{get each(){return e.series},children:(y,m)=>o(_,{get when(){return u(y)!==void 0},get children(){var S=mo(),b=S.firstChild;return n(S,o(_,{get when(){return e.series.length>1},get children(){return[(()=>{var g=go();return N($=>Ie(g,"background",i(y,m()))),g})(),le(()=>y.label)]}}),b),n(b,()=>e.format(u(y))),N(()=>j(b,`tabular-nums ${m()===0?"text-base font-semibold text-text-strong":""}`)),S}})}),null),n(x,o(te,{get each(){return e.marks??[]},children:y=>(()=>{var m=vo();return N(S=>{var b=s(y),g=s(y);return b!==S.e&&X(m,"x1",S.e=b),g!==S.t&&X(m,"x2",S.t=g),S},{e:void 0,t:void 0}),m})()}),null),n(x,o(te,{get each(){return e.series.map((y,m)=>({s:y,i:m})).toReversed()},children:({s:y,i:m})=>(()=>{var S=po();return N(b=>{var g=a(y.values),$=i(y,m);return g!==b.e&&X(S,"d",b.e=g),$!==b.t&&X(S,"stroke",b.t=$),b},{e:void 0,t:void 0}),S})()}),null),n(w,()=>e.format(r())),n(M,(()=>{var y=le(()=>t()>1);return()=>y()?`${t()}s ago`:""})()),c})()},$o=d('<div class="flex flex-col gap-4"><header class="flex flex-wrap items-center gap-2 text-xs"><span class=flex-1></span></header><div class="grid grid-cols-1 gap-3 lg:grid-cols-2"></div><p class="-mt-2 text-[0.66rem] text-text-muted">Ticks under the event-loop chart mark garbage collections. CPU is a percentage of one core.'),yo=d('<div class=dt-panel-grid><div class="card max-w-md text-sm text-text-secondary">The runtime sampler is off. Remove <code>runtime: { enabled: false }</code> from <code>DevToolsAdapter(...)</code> to see process metrics here.'),wo=d('<span class="dt-tone dt-tone-gray">Node '),_o=d('<span class="dt-tone dt-tone-gray">/'),ko=d('<span class="dt-tone dt-tone-gray">pid '),So=d('<span class="dt-tone dt-tone-blue">'),Co=d("<span class=text-text-muted>up <!> · <!> GCs, <!> paused"),Eo=d('<div class="mt-2 flex flex-wrap gap-1.5">'),Mo=d('<p class="mt-2 text-xs text-text-muted">Growth is judged once the process has run past its startup — about 50 seconds.'),To=d('<section class="rounded-xl border border-border bg-surface-1 px-4 py-3"><header class="mb-2 flex items-center gap-2"><h3 class="text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">Memory health</h3><span></span></header><dl class="grid grid-cols-2 gap-x-6 gap-y-1 text-[0.8rem] md:grid-cols-4">'),Ao=d('<span class="dt-tone dt-tone-gray font-mono"> '),Lo=d('<div><dt class="text-xs text-text-muted"></dt><dd class="m-0 font-semibold tabular-nums">'),el=d('<span class="max-w-80 truncate text-text-muted">'),Ro=d('<button type=button class="rounded-md border border-border-strong bg-surface-2 px-2.5 py-1 text-xs text-text-secondary hover:text-text-strong disabled:opacity-50"title="Blocks the event loop for a few seconds — avoid in production">'),Oo=d('<button type=button class="rounded-md border border-border-strong bg-surface-2 px-2.5 py-1 text-xs text-text-secondary hover:text-text-strong disabled:opacity-50"title="Needs node --expose-gc">'),qo=()=>{const[e,t]=R([]),[r,s]=R(null),[l,a]=R(null),[i,u]=R(!1),c=x=>{t(w=>[...w,...x].slice(-60))};Ne(()=>{we.runtime().then(w=>{a(w.process??null),s(w.health),c(w.history)}).catch(()=>u(!0));const x=Fn("/memory/stream",w=>{c([w.snapshot]),s(w.health)},()=>{});Se(x)});const h=se(()=>e()[e().length-1]),f=x=>e().map(x),p=se(()=>e().map((x,w,M)=>{const y=w?x.timestamp-M[w-1].timestamp:1e3;return(x.cpu.userMicros+x.cpu.systemMicros)/1e3/Math.max(1,y)*100})),v=se(()=>e().flatMap((x,w,M)=>w&&x.gc.count>M[w-1].gc.count?[w]:[]));return o(_,{get when(){return!i()},get fallback(){return yo()},get children(){var x=$o(),w=x.firstChild,M=w.firstChild,y=w.nextSibling;return y.nextSibling,n(w,o(_,{get when(){return l()},children:m=>[o(_,{get when(){return m().runtime},children:S=>(()=>{var b=So();return n(b,()=>S().name),b})()}),(()=>{var S=wo();return S.firstChild,n(S,()=>m().nodeVersion,null),S})(),(()=>{var S=_o(),b=S.firstChild;return n(S,()=>m().platform,b),n(S,()=>m().arch,null),S})(),(()=>{var S=ko();return S.firstChild,n(S,()=>m().pid,null),S})()]}),M),n(w,o(_,{get when(){return h()},children:m=>(()=>{var S=Co(),b=S.firstChild.nextSibling,g=b.nextSibling.nextSibling,$=g.nextSibling.nextSibling;return $.nextSibling,n(S,()=>pr(m().uptimeSec),b),n(S,()=>m().gc.count,g),n(S,()=>$e(m().gc.totalPauseMs),$),S})()}),M),n(w,o(No,{}),null),n(w,o(Po,{}),null),n(y,o(Mt,{title:"Heap",get info(){return o(Pe,{metric:"heap.used"})},format:Ze,get series(){return[{label:"used",values:f(m=>m.memory.heapUsed)},{label:"total",values:f(m=>m.memory.heapTotal)}]}}),null),n(y,o(Mt,{title:"Process memory",get info(){return o(Pe,{metric:"rss"})},format:Ze,get series(){return[{label:"RSS",values:f(m=>m.memory.rss)},{label:"external",values:f(m=>m.memory.external)}]}}),null),n(y,o(Mt,{title:"Event loop delay",get info(){return o(Pe,{metric:"event-loop.p99"})},format:$e,get marks(){return v()},get series(){return[{label:"p99",values:f(m=>m.eventLoop.p99)},{label:"p50",values:f(m=>m.eventLoop.p50)}]}}),null),n(y,o(Mt,{title:"CPU",format:m=>`${m.toFixed(m<10?1:0)}%`,get max(){return Math.max(100,...p())},get series(){return[{label:"CPU",values:p()}]}}),null),n(x,o(_,{get when(){return r()},children:m=>(()=>{var S=To(),b=S.firstChild,g=b.firstChild.nextSibling,$=b.nextSibling;return n(b,o(Pe,{metric:"leak.risk"}),g),n(g,(()=>{var C=le(()=>!!m().sampling);return()=>C()?"sampling":m().heapGrowthSeverity})()),n($,o(Tt,{label:"Heap growth",get children(){return le(()=>!!m().sampling)()?"measuring…":`${Ze(m().heapGrowthBytesPerSec*60)}/min`}}),null),n($,o(Tt,{label:"GC reclaim",metric:"gc.reclaim",get children(){return le(()=>!!m().sampling)()?"—":Ht(m().gcReclaimRatio)}}),null),n($,o(Tt,{label:"Heap of limit",metric:"heap.utilization",get children(){return Ht(m().heapUtilization)}}),null),n($,o(Tt,{label:"Open handles",get children(){return m().activeHandles}}),null),n(S,o(_,{get when(){return Object.keys(m().handlesByType).length>0},get children(){var C=Eo();return n(C,o(te,{get each(){return Object.entries(m().handlesByType).toSorted((O,q)=>q[1]-O[1])},children:([O,q])=>(()=>{var T=Ao(),D=T.firstChild;return n(T,O,D),n(T,q,null),T})()})),C}}),null),n(S,o(_,{get when(){return m().sampling},get children(){return Mo()}}),null),N(()=>j(g,m().sampling?et("idle"):et(m().heapGrowthSeverity==="ok"?"ok":m().heapGrowthSeverity==="warn"?"warn":"err"))),S})()}),null),x}})},Tt=e=>(()=>{var t=Lo(),r=t.firstChild,s=r.nextSibling;return n(r,()=>e.label,null),n(r,o(_,{get when(){return e.metric},get children(){return o(Pe,{get metric(){return e.metric}})}}),null),n(s,()=>e.children),t})(),No=()=>{const[e,t]=R(null),[r,s]=R(!1),l=async()=>{s(!0),t(null);try{const a=await Ir("/memory/snapshot"),i=await a.blob(),u=/filename="?([^";]+)"?/.exec(a.headers.get("content-disposition")??"")?.[1]??`kickjs-heap-${Date.now()}.heapsnapshot`,c=URL.createObjectURL(i);Object.assign(document.createElement("a"),{href:c,download:u}).click(),URL.revokeObjectURL(c),t(`Saved ${u} (${Ze(i.size)})`)}catch(a){t(a instanceof Error?a.message:String(a))}finally{s(!1)}};return[o(_,{get when(){return e()},get children(){var a=el();return n(a,e),N(()=>X(a,"title",e())),a}}),(()=>{var a=Ro();return a.$$click=()=>{l()},n(a,()=>r()?"Capturing…":"Heap snapshot"),N(()=>a.disabled=r()),a})()]},Po=()=>{const[e,t]=R(null),[r,s]=R(!1),l=async()=>{s(!0),t(null);try{const a=await(await Ir("/memory/gc")).json();t(`GC freed ${Ze(a.reclaimedBytes)} in ${a.elapsedMs}ms`)}catch(a){t(a instanceof Error?a.message:String(a))}finally{s(!1)}};return[o(_,{get when(){return e()},get children(){var a=el();return n(a,e),N(()=>X(a,"title",e())),a}}),(()=>{var a=Oo();return a.$$click=()=>{l()},n(a,()=>r()?"Collecting…":"Run GC"),N(()=>a.disabled=r()),a})()]};ye(["click"]);var Io=d('<div class="flex flex-wrap gap-1">'),Do=d('<span class="text-xs text-text-muted">None'),Uo=d('<button type=button class="rounded border border-border-strong bg-surface-2 px-2 py-0.5 font-mono text-xs text-text-body hover:border-kick-500 hover:text-kick-500">'),jo=d('<div class="p-4 text-sm text-text-muted"> is no longer registered.'),Ho=d("<dt class=text-text-muted>First"),dn=d("<dd class=m-0>"),Bo=d("<dt class=text-text-muted>Last"),zo=d("<dt class=text-text-muted>Took "),Fo=d('<dd class="m-0 tabular-nums">'),Ko=d('<dl class="grid grid-cols-[9rem_1fr] gap-y-1"><dt class=text-text-muted>Resolves </dt><dd class="m-0 tabular-nums"></dd><dt class=text-text-muted>@PostConstruct </dt><dd class=m-0><span>'),Jo=d('<section class="flex flex-col gap-4 p-4 text-[0.8rem]"><header><h2 class="m-0 break-all font-mono text-base text-text-strong"></h2><div class="mt-1.5 flex flex-wrap gap-1.5"><span></span><span class="dt-tone dt-tone-gray"></span><span>'),Vo=d('<div><h3 class="mb-1.5 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">'),_r=null;function tl(e){_r=e,rt("container")}function Go(){const e=_r;return _r=null,e}function Bt(e){return e.postConstructStatus==="failed"?{label:"failed",tone:et("err")}:e.instantiated?{label:"active",tone:et("ok")}:{label:"registered",tone:et("idle")}}var rl=e=>{const t=se(()=>ae.container().find(l=>l.token===e.token)),r=se(()=>ae.container().filter(l=>l.dependencies?.includes(e.token)).map(l=>l.token)),s=l=>o(_,{get when(){return l.length},get fallback(){return Do()},get children(){var a=Io();return n(a,o(te,{each:l,children:i=>(()=>{var u=Uo();return u.$$click=()=>e.onSelect(i),n(u,i),u})()})),a}});return o(_,{get when(){return t()},get fallback(){return(()=>{var l=jo(),a=l.firstChild;return n(l,()=>e.token,a),l})()},children:l=>(()=>{var a=Jo(),i=a.firstChild.firstChild,u=i.nextSibling.firstChild,c=u.nextSibling,h=c.nextSibling;return n(i,()=>l().token),n(u,()=>l().kind??"unknown"),n(c,()=>l().scope??"singleton"),n(h,()=>Bt(l()).label),n(a,o(rr,{get title(){return`Depends on (${l().dependencies?.length??0})`},get children(){return s(l().dependencies??[])}}),null),n(a,o(rr,{get title(){return`Used by (${r().length})`},get children(){return s(r())}}),null),n(a,o(rr,{title:"Resolution",get children(){var f=Ko(),p=f.firstChild;p.firstChild;var v=p.nextSibling,x=v.nextSibling;x.firstChild;var w=x.nextSibling.firstChild;return n(p,o(Pe,{metric:"resolve.count"}),null),n(v,()=>l().resolveCount??0),n(f,o(_,{get when(){return l().firstResolvedAt},get children(){return[Ho(),(()=>{var M=dn();return n(M,()=>new Date(l().firstResolvedAt).toLocaleTimeString()),M})()]}}),x),n(f,o(_,{get when(){return l().lastResolvedAt},get children(){return[Bo(),(()=>{var M=dn();return n(M,()=>new Date(l().lastResolvedAt).toLocaleTimeString()),M})()]}}),x),n(f,o(_,{get when(){return l().resolveDurationMs!=null},get children(){return[(()=>{var M=zo();return M.firstChild,n(M,o(Pe,{metric:"resolve.duration"}),null),M})(),(()=>{var M=Fo();return n(M,()=>$e(l().resolveDurationMs)),M})()]}}),x),n(x,o(Pe,{metric:"post-construct"}),null),n(w,()=>l().postConstructStatus??"none"),N(()=>j(w,et(l().postConstructStatus==="failed"?"err":l().postConstructStatus==="done"?"ok":"idle"))),f}}),null),N(f=>{var p=Dr(l().kind),v=Bt(l()).tone;return p!==f.e&&j(u,f.e=p),v!==f.t&&j(h,f.t=v),f},{e:void 0,t:void 0}),a})()})},rr=e=>(()=>{var t=Vo(),r=t.firstChild;return n(r,()=>e.title),n(t,()=>e.children,null),t})();ye(["click"]);var Yo=d('<div class="card text-sm text-red-500">'),Wo=d('<div class="rounded-md border border-red-500/40 bg-red-500/10 px-3 py-2 text-sm">'),Qo=d('<div class="flex flex-col gap-3"><div class="flex items-center gap-3 text-xs text-text-muted"><span class=flex-1></span><button type=button class="rounded-md border border-border-strong bg-surface-2 px-2.5 py-1 text-xs text-text-secondary hover:text-text-strong">Refresh'),Xo=d("<span> plugins · <!> adapters · <!> contributors · updated "),Zo=d('<div><span class="font-semibold text-red-500"> (<!>) introspect() failed:</span> '),ei=d("<div class=empty>Loading topology…"),ti=d('<div class="grid grid-cols-1 items-start gap-3 lg:grid-cols-3">'),ri=d('<section class="flex flex-col gap-2"><h2 class="text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted"> <span class=font-normal>(<!>)'),ni=d('<div class="rounded-lg border border-dashed border-border px-3 py-2 text-xs text-text-muted">'),li=d('<span class="dt-tone dt-tone-gray">v'),si=d('<div class="mt-1.5 flex flex-wrap gap-x-3 gap-y-0.5">'),ai=d('<dl class="mt-1.5 grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5">'),oi=d('<p class="mt-1 text-xs text-text-muted">Reports nothing — it has no introspect().'),ii=d('<article><header class="flex items-center gap-2"><span class="h-1.5 w-1.5 rounded-full bg-emerald-500"aria-hidden=true></span><span class="min-w-0 flex-1 truncate font-mono font-semibold text-text-strong">'),ci=d('<span class=text-text-muted> <span class="font-semibold text-text-body tabular-nums">'),ui=d("<dt class=text-text-muted>"),di=d('<dd class="m-0 truncate font-mono">'),fi=d('<div class="mt-1.5 flex flex-wrap items-center gap-1"><span class="w-14 text-[0.66rem] text-text-muted">'),hi=d('<button type=button title="Open in Container">'),gi=d('<div class="mt-1 flex flex-wrap items-center gap-1 text-[0.68rem] text-text-muted">after'),mi=d('<article><div class="flex items-center gap-2"><span class="min-w-0 flex-1 truncate font-mono font-semibold">ctx.</span><span class="dt-tone dt-tone-gray">'),vi=d("<span>"),pi=()=>{const[e,t]=R(null),[r,s]=R(null),[l,a]=R(null),i=async()=>{try{t(await we.topology()),s(null)}catch(c){s(c instanceof Error?c.message:String(c))}};Ne(()=>{i();const c=setInterval(()=>{i()},5e3);Se(()=>clearInterval(c))});const u=(c,h)=>!!h&&(!!c.tokens?.provides.includes(h)||!!c.tokens?.requires.includes(h));return(()=>{var c=Qo(),h=c.firstChild,f=h.firstChild,p=f.nextSibling;return n(h,o(_,{get when(){return e()},children:v=>(()=>{var x=Xo(),w=x.firstChild,M=w.nextSibling,y=M.nextSibling.nextSibling;return y.nextSibling,n(x,()=>v().plugins.length,w),n(x,()=>v().adapters.length,M),n(x,()=>v().contributors.length,y),n(x,()=>Ur(v().timestamp),null),x})()}),f),p.$$click=()=>{i()},n(c,o(_,{get when(){return r()},get children(){var v=Yo();return n(v,r),v}}),null),n(c,o(_,{get when(){return e()?.errors.length},get children(){var v=Wo();return n(v,o(te,{get each(){return e().errors},children:x=>(()=>{var w=Zo(),M=w.firstChild,y=M.firstChild,m=y.nextSibling;return m.nextSibling,M.nextSibling,n(M,()=>x.name,y),n(M,()=>x.kind,m),n(w,()=>x.message,null),w})()})),v}}),null),n(c,o(_,{get when(){return e()},get fallback(){return ei()},children:v=>(()=>{var x=ti();return n(x,o(nr,{title:"Plugins",get count(){return v().plugins.length},empty:"No plugins — definePlugin(...) adds one.",get children(){return o(te,{get each(){return v().plugins},children:w=>o(fn,{p:w,get lit(){return u(w,l())},get hover(){return l()},onHover:a})})}}),null),n(x,o(nr,{title:"Adapters",get count(){return v().adapters.length},empty:"No adapters registered.",get children(){return o(te,{get each(){return v().adapters},children:w=>o(fn,{p:w,get lit(){return u(w,l())},get hover(){return l()},onHover:a})})}}),null),n(x,o(nr,{title:"Contributors",get count(){return v().contributors.length},empty:"No context contributors — defineContextDecorator(...) adds one.",get children(){return o(te,{get each(){return v().contributors},children:w=>o(xi,{c:w,get hover(){return l()},onHover:a})})}}),null),x})()}),null),c})()},nr=e=>(()=>{var t=ri(),r=t.firstChild,s=r.firstChild,l=s.nextSibling,a=l.firstChild.nextSibling;return a.nextSibling,n(r,()=>e.title,s),n(l,()=>e.count,a),n(t,o(_,{get when(){return e.count>0},get fallback(){return(()=>{var i=ni();return n(i,()=>e.empty),i})()},get children(){return e.children}}),null),t})(),fn=e=>{const t=se(()=>Object.entries(e.p.state??{})),r=se(()=>Object.entries(e.p.metrics??{})),s=()=>t().length+r().length+(e.p.tokens?.provides.length??0)+(e.p.tokens?.requires.length??0)>0;return(()=>{var l=ii(),a=l.firstChild,i=a.firstChild.nextSibling;return n(i,()=>e.p.name),n(a,o(_,{get when(){return e.p.version},get children(){var u=li();return u.firstChild,n(u,()=>e.p.version,null),u}}),null),n(l,o(_,{get when(){return r().length},get children(){var u=si();return n(u,o(te,{get each(){return r()},children:([c,h])=>(()=>{var f=ci(),p=f.firstChild,v=p.nextSibling;return n(f,c,p),n(v,()=>h.toLocaleString()),f})()})),u}}),null),n(l,o(_,{get when(){return t().length},get children(){var u=ai();return n(u,o(te,{get each(){return t()},children:([c,h])=>[(()=>{var f=ui();return n(f,c),f})(),(()=>{var f=di();return n(f,()=>typeof h=="string"?h:JSON.stringify(h)),N(()=>X(f,"title",JSON.stringify(h))),f})()]})),u}}),null),n(l,o(hn,{label:"provides",get tokens(){return e.p.tokens?.provides??[]},get hover(){return e.hover},get onHover(){return e.onHover}}),null),n(l,o(hn,{label:"requires",get tokens(){return e.p.tokens?.requires??[]},get hover(){return e.hover},get onHover(){return e.onHover}}),null),n(l,o(_,{get when(){return!s()},get children(){return oi()}}),null),N(()=>j(l,`rounded-lg border bg-surface-1 px-3 py-2 text-[0.78rem] transition-colors ${e.lit?"border-kick-500 shadow-[0_0_0_1px_var(--color-accent)]":"border-border"}`)),l})()},hn=e=>o(_,{get when(){return e.tokens.length},get children(){var t=fi(),r=t.firstChild;return n(r,()=>e.label),n(t,o(te,{get each(){return e.tokens},children:s=>(()=>{var l=hi();return l.$$click=()=>tl(s),l.addEventListener("mouseleave",()=>e.onHover(null)),l.addEventListener("mouseenter",()=>e.onHover(s)),n(l,s),N(()=>j(l,`rounded border px-1.5 font-mono text-[0.68rem] ${e.hover===s?"border-kick-500 text-kick-500":"border-border-strong text-text-secondary hover:text-text-strong"}`)),l})()}),null),t}}),xi=e=>(()=>{var t=mi(),r=t.firstChild.firstChild;r.firstChild;var s=r.nextSibling;return t.addEventListener("mouseleave",()=>e.onHover(null)),t.addEventListener("mouseenter",()=>e.onHover(e.c.key)),n(r,()=>e.c.key,null),n(s,()=>e.c.source),n(t,o(_,{get when(){return e.c.dependsOn.length},get children(){var l=gi();return l.firstChild,n(l,o(te,{get each(){return e.c.dependsOn},children:a=>(()=>{var i=vi();return n(i,a),N(()=>j(i,`rounded border px-1.5 font-mono ${e.hover===a?"border-kick-500 text-kick-500":"border-border-strong"}`)),i})()}),null),l}}),null),N(()=>j(t,`rounded-lg border bg-surface-1 px-3 py-1.5 text-[0.78rem] ${e.hover===e.c.key?"border-kick-500":"border-border"}`)),t})();ye(["click"]);var bi=d('<div class="flex flex-col gap-1.5 border-b border-border p-2"><input type=text placeholder="Search path, controller, handler…"class="w-full bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><div class="flex items-center gap-1 flex-wrap"></div><div class="text-xs text-text-muted"> routes'),$i=d('<div class="min-h-0 flex-1 overflow-y-auto">'),yi=d("<button type=button>"),wi=d("<div class=empty>"),_i=d('<div class="sticky top-0 z-1 border-b border-border bg-surface-2 px-2.5 py-1 text-[0.66rem] font-bold uppercase tracking-wide text-text-muted"> <span class=font-normal>(<!>)'),ki=d('<button type=button><span></span><span class="min-w-0 flex-1 truncate font-mono">'),Si=d('<span class="max-w-[40%] truncate text-[0.66rem] text-text-muted">'),Ci=["ALL","GET","POST","PUT","PATCH","DELETE"];function Ei(e){return Object.entries(e??{}).map(([t,r])=>r===!0?t:`${t}=${JSON.stringify(r)}`).join(", ")}var Mi=()=>{const[e,t]=R(""),[r,s]=R("ALL"),l=se(()=>{const c=e().trim().toLowerCase();return ae.routes().filter(h=>(r()==="ALL"||h.method.toUpperCase()===r())&&(!c||h.path.toLowerCase().includes(c)||h.controller.toLowerCase().includes(c)||h.handler.toLowerCase().includes(c)))}),a=se(()=>{const c=new Map;for(const h of l()){const f=c.get(h.controller)??[];f.push(h),c.set(h.controller,f)}return[...c]}),i=c=>{const h=Oe();return!!h&&h.method===c.method&&h.path===c.path},u=[(()=>{var c=bi(),h=c.firstChild,f=h.nextSibling,p=f.nextSibling,v=p.firstChild;return h.$$input=x=>t(x.currentTarget.value),n(f,o(te,{each:Ci,children:x=>(()=>{var w=yi();return w.$$click=()=>s(x),n(w,x),N(M=>{var y=r()===x,m=`px-2 py-0.5 text-[0.68rem] font-semibold rounded-md border ${r()===x?"bg-kick-500/20 text-kick-500 border-kick-500/30":"bg-surface-2 text-text-secondary border-border-strong hover:text-text-body"}`;return y!==M.e&&X(w,"aria-pressed",M.e=y),m!==M.t&&j(w,M.t=m),M},{e:void 0,t:void 0}),w})()})),n(p,o(_,{get when(){return e()||r()!=="ALL"},get children(){return[le(()=>l().length)," matched · "]}}),v),n(p,()=>ae.routes().length,v),N(()=>h.value=e()),c})(),(()=>{var c=$i();return n(c,o(_,{get when(){return a().length>0},get fallback(){return(()=>{var h=wi();return n(h,()=>ae.routes().length?"No routes match":"No routes registered"),h})()},get children(){return o(te,{get each(){return a()},children:([h,f])=>[(()=>{var p=_i(),v=p.firstChild,x=v.nextSibling,w=x.firstChild.nextSibling;return w.nextSibling,n(p,h,v),n(x,()=>f.length,w),p})(),o(te,{each:f,children:p=>(()=>{var v=ki(),x=v.firstChild,w=x.nextSibling;return v.$$click=()=>Jt(p),n(x,()=>p.method),n(w,()=>p.path),n(v,o(_,{get when(){return Ei(p.flags)},children:M=>(()=>{var y=Si();return n(y,M),y})()}),null),N(M=>{var y=`flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 px-2.5 py-1 text-left text-[0.78rem] text-text-body ${i(p)?"bg-accent/12 shadow-[inset_2px_0_0_0_var(--color-accent)]":"bg-transparent hover:bg-surface-hover"}`,m=`${p.controller}.${p.handler}${p.middleware.length?` · middleware: ${p.middleware.join(", ")}`:""}`,S=`w-[3.4rem] shrink-0 font-mono text-[0.68rem] font-bold ${He(p.method)}`;return y!==M.e&&j(v,M.e=y),m!==M.t&&X(v,"title",M.t=m),S!==M.a&&j(x,M.a=S),M},{e:void 0,t:void 0,a:void 0}),v})()})]})}})),c})()];return o(Je,{storageKey:"routes",left:u,get right(){return o(Ra,{})}})};ye(["input","click"]);var Ti=d('<th><button type=button class="inline-flex items-center gap-1 text-text-muted hover:text-text-strong"><span aria-hidden=true>');function nl(e,t=!0){const[r,s]=R(e),[l,a]=R(t);return{key:r,desc:l,toggle:c=>{c===r()?a(h=>!h):(s(()=>c),a(!0))},apply:(c,h)=>c.toSorted((f,p)=>{const v=h(f,r()),x=h(p,r()),w=typeof v=="number"&&typeof x=="number"?v-x:String(v).localeCompare(String(x));return l()?-w:w}),set:s}}var ll=e=>(()=>{var t=Ti(),r=t.firstChild,s=r.firstChild;return Lr(r,"click",e.onClick,!0),n(r,()=>e.label,s),n(s,()=>e.desc?"↓":"↑"),N(l=>{var a=`px-2 py-1.5 font-semibold ${e.align==="left"?"text-left":"text-right"}`,i=e.active?"opacity-70":"opacity-0";return a!==l.e&&j(t,l.e=a),i!==l.t&&j(s,l.t=i),l},{e:void 0,t:void 0}),t})();ye(["click"]);var Ai=d('<div class="card text-sm text-red-500">'),Li=d('<div class="overflow-hidden rounded-xl border border-border bg-surface-1"><table class="w-full border-collapse text-[0.8rem]"><thead class="border-b border-border text-xs"><tr></tr></thead><tbody>'),Ri=d(`<p class="text-[0.66rem] text-text-muted">Percentiles cover each route's last 1,000 calls. Durations turn amber above 200 ms, orange above 500 ms, red above 1 s.`),Oi=d('<div class="flex flex-col gap-3"><div class="flex flex-wrap items-center gap-2"><input type=text placeholder="Filter routes…"class="w-64 bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><div class="flex overflow-hidden rounded-md border border-border-strong text-xs"></div><span class=flex-1></span><span class="text-xs text-text-muted"> routes'),qi=d("<button type=button>"),Ni=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">'),Pi=d('<tr class="cursor-pointer border-b border-dashed border-transparent hover:border-border hover:bg-surface-hover"><td class="px-2 py-1.5"><span class="flex items-center gap-2"><span></span><span class="truncate font-mono"></span></span></td><td class="px-2 py-1.5 text-right tabular-nums"></td><td></td><td>'),Ii=d('<tr class="border-b border-border bg-surface-2/50"><td colspan=7 class="px-4 py-3">'),Di=d('<span class="h-1.5 w-16 overflow-hidden rounded-full bg-border/60"><span class="block h-full rounded-full bg-kick-500/70">'),Ui=d('<td class="px-2 py-1.5 text-right tabular-nums"><span class="inline-flex items-center justify-end gap-2"><span>'),ji=d('<div class="flex flex-wrap items-end gap-8"><div><div class="mb-1 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">Latency (ms)</div><div class="flex h-16 items-end gap-1"></div></div><div class=text-xs><div class="mb-1 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">Outcomes</div><div class="flex gap-2"><span class="dt-pill dt-pill-ok"> ok</span><span class="dt-pill dt-pill-warn"> 4xx</span><span class="dt-pill dt-pill-err"> 5xx</span></div><div class="mt-2 text-text-muted">min <!> · avg '),Hi=d('<div class="flex w-7 flex-col items-center gap-0.5"><div class="w-full rounded-sm bg-kick-500/60"></div><span class="text-[0.58rem] text-text-muted tabular-nums">'),Bi=d('<button type=button class="rounded-md border border-kick-500/30 bg-kick-500/20 px-3 py-1 text-xs font-semibold text-kick-500 hover:bg-kick-500/30">Try in runner'),gn=["p50","p95","p99"],zi=()=>{const[e,t]=R(null),[r,s]=R(null),[l,a]=R(""),[i,u]=R("p95"),[c,h]=R(null),f=nl("p95"),p=async()=>{try{t(await we.metrics()),s(null)}catch(y){s(y instanceof Error?y.message:String(y))}};Ne(()=>{p();const y=setInterval(()=>{p()},2e3);Se(()=>clearInterval(y))});const v=se(()=>{const y=l().trim().toLowerCase(),m=Object.entries(e()?.routeLatency??{}).map(([b,g])=>{const $=b.indexOf(" ");return{...g,key:b,method:b.slice(0,$),path:b.slice($+1),errorShare:g.count?g.serverErrors/g.count:0}}),S=y?m.filter(b=>b.key.toLowerCase().includes(y)):m;return f.apply(S,(b,g)=>g==="route"?b.path:g==="errors"?b.errorShare:b[g])}),x=se(()=>Math.max(1,...v().map(y=>y[i()]))),w=y=>{u(y),f.set(y)},M=(y,m,S="right")=>o(ll,{label:m,align:S,get active(){return f.key()===y},get desc(){return f.desc()},onClick:()=>f.toggle(y)});return(()=>{var y=Oi(),m=y.firstChild,S=m.firstChild,b=S.nextSibling,g=b.nextSibling,$=g.nextSibling,C=$.firstChild;return S.$$input=O=>a(O.currentTarget.value),n(b,o(te,{each:gn,children:O=>(()=>{var q=qi();return q.$$click=()=>w(O),n(q,O),N(T=>{var D=i()===O,U=`px-2.5 py-1 font-semibold ${i()===O?"bg-kick-500/20 text-kick-500":"bg-surface-2 text-text-secondary hover:text-text-body"}`;return D!==T.e&&X(q,"aria-pressed",T.e=D),U!==T.t&&j(q,T.t=U),T},{e:void 0,t:void 0}),q})()})),n(m,o(Pe,{get metric(){return`latency.${i()}`}}),g),n($,()=>v().length,C),n(y,o(_,{get when(){return r()},get children(){var O=Ai();return n(O,r),O}}),null),n(y,o(_,{get when(){return v().length>0},get fallback(){return(()=>{var O=Ni(),q=O.firstChild;return n(q,()=>l()?"No routes match":"No requests yet — latency appears per route once the app is called."),O})()},get children(){return[(()=>{var O=Li(),q=O.firstChild.firstChild,T=q.firstChild,D=q.nextSibling;return n(T,()=>M("route","Route","left"),null),n(T,()=>M("count","Calls"),null),n(T,()=>M("errors","5xx"),null),n(T,()=>M("p50","p50"),null),n(T,()=>M("p95","p95"),null),n(T,()=>M("p99","p99"),null),n(T,()=>M("maxMs","Max"),null),n(D,o(te,{get each(){return v()},children:U=>[(()=>{var re=Pi(),Q=re.firstChild,k=Q.firstChild.firstChild,A=k.nextSibling,J=Q.nextSibling,V=J.nextSibling,B=V.nextSibling;return re.$$click=()=>h(I=>I===U.key?null:U.key),n(k,()=>U.method),n(A,()=>U.path),n(J,()=>U.count.toLocaleString()),n(V,(()=>{var I=le(()=>!!U.serverErrors);return()=>I()?Ht(U.errorShare):"—"})()),n(re,o(te,{each:gn,children:I=>(()=>{var ie=Ui(),E=ie.firstChild,P=E.firstChild;return n(E,o(_,{get when(){return I===i()},get children(){var Y=Di(),Z=Y.firstChild;return N(H=>Ie(Z,"width",`${U[I]/x()*100}%`)),Y}}),P),n(P,()=>$e(U[I])),N(()=>j(P,`min-w-14 ${ut(U[I])}`)),ie})()}),B),n(B,()=>$e(U.maxMs)),N(I=>{var ie=`w-[3.4rem] shrink-0 font-mono text-[0.68rem] font-bold ${He(U.method)}`,E=`px-2 py-1.5 text-right tabular-nums ${U.serverErrors?"text-red-500":"text-text-muted"}`,P=`${U.serverErrors} server errors, ${U.clientErrors} client errors`,Y=`px-2 py-1.5 text-right tabular-nums ${ut(U.maxMs)}`;return ie!==I.e&&j(k,I.e=ie),E!==I.t&&j(V,I.t=E),P!==I.a&&X(V,"title",I.a=P),Y!==I.o&&j(B,I.o=Y),I},{e:void 0,t:void 0,a:void 0,o:void 0}),re})(),o(_,{get when(){return c()===U.key},get children(){var re=Ii(),Q=re.firstChild;return n(Q,o(Fi,{row:U,get buckets(){return e()?.latencyBucketsMs??[]}})),re}})]})),O})(),Ri()]}}),null),N(()=>S.value=l()),y})()},Fi=e=>{const t=()=>Math.max(1,...e.row.histogram),r=a=>a<e.buckets.length?`≤${e.buckets[a]}`:`>${e.buckets[e.buckets.length-1]}`,s=()=>ae.routes().find(a=>a.method.toUpperCase()===e.row.method&&a.path===e.row.path),l=()=>e.row.count-e.row.serverErrors-e.row.clientErrors;return(()=>{var a=ji(),i=a.firstChild,u=i.firstChild.nextSibling,c=i.nextSibling.firstChild.nextSibling,h=c.firstChild,f=h.firstChild,p=h.nextSibling,v=p.firstChild,x=p.nextSibling,w=x.firstChild,M=c.nextSibling,y=M.firstChild.nextSibling;return y.nextSibling,n(u,o(te,{get each(){return e.row.histogram},children:(m,S)=>(()=>{var b=Hi(),g=b.firstChild,$=g.nextSibling;return n($,()=>r(S())),N(C=>{var O=`${m} calls ${r(S())} ms`,q=`${Math.max(m?2:0,m/t()*48)}px`;return O!==C.e&&X(b,"title",C.e=O),q!==C.t&&Ie(g,"height",C.t=q),C},{e:void 0,t:void 0}),b})()})),n(h,l,f),n(p,()=>e.row.clientErrors,v),n(x,()=>e.row.serverErrors,w),n(M,()=>$e(Number.isFinite(e.row.minMs)?e.row.minMs:0),y),n(M,()=>$e(e.row.count?e.row.totalMs/e.row.count:0),null),n(a,o(_,{get when(){return s()},children:m=>(()=>{var S=Bi();return S.$$click=()=>Jt(m()),S})()}),null),a})()};ye(["input","click"]);var Ki=d('<button type=button> <span class="font-normal opacity-70">'),Ji=d('<div class="flex flex-col gap-1.5 border-b border-border p-2"><input type=text placeholder="Search tokens…"class="w-full bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><div class="flex flex-wrap items-center gap-1"><span class="mx-1 h-4 w-px bg-border"></span></div><div class="text-xs text-text-muted"> tokens'),Vi=d('<div class="min-h-0 flex-1 overflow-y-auto">'),Gi=d("<div class=empty>"),Yi=d('<span class="dt-tone dt-tone-gray">'),Wi=d('<button type=button><span></span><span class="min-w-0 flex-1 truncate font-mono"></span><span></span><span class="w-10 shrink-0 text-right text-[0.7rem] text-text-muted tabular-nums">×</span><span class="w-14 shrink-0 text-right text-[0.66rem] text-text-muted">'),Qi=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">Select a token to see its dependencies'),Xi=d('<div class="h-full overflow-y-auto bg-surface-1">'),sl=["controller","service","repository"],At=e=>sl.includes(e.kind??"")?e.kind:"other",Zi=()=>{const[e,t]=R(""),[r,s]=R(null),[l,a]=R(null),[i,u]=R(Go()),c=se(()=>{const y=e().trim().toLowerCase();return ae.container().filter(m=>!y||m.token.toLowerCase().includes(y))}),h=(y,m)=>{const S=new Map;for(const b of m)S.set(y(b),(S.get(y(b))??0)+1);return S},f=se(()=>h(At,c().filter(y=>!l()||(y.scope??"singleton")===l()))),p=se(()=>h(y=>y.scope??"singleton",c().filter(y=>!r()||At(y)===r()))),v=se(()=>c().filter(y=>(!r()||At(y)===r())&&(!l()||(y.scope??"singleton")===l())).toSorted((y,m)=>(m.resolveCount??0)-(y.resolveCount??0)||y.token.localeCompare(m.token))),x=(y,m,S,b)=>(()=>{var g=Ki(),$=g.firstChild,C=$.nextSibling;return Lr(g,"click",b,!0),X(g,"aria-pressed",S),j(g,`rounded-md border px-2 py-0.5 text-[0.68rem] font-semibold ${S?"border-kick-500/30 bg-kick-500/20 text-kick-500":"border-border-strong bg-surface-2 text-text-secondary hover:text-text-body"}`),n(g,y,$),n(C,m??0),g})(),w=[(()=>{var y=Ji(),m=y.firstChild,S=m.nextSibling,b=S.firstChild,g=S.nextSibling,$=g.firstChild;return m.$$input=C=>t(C.currentTarget.value),n(S,o(te,{get each(){return[...sl,"other"]},children:C=>x(C,f().get(C),r()===C,()=>s(O=>O===C?null:C))}),b),n(S,o(te,{each:["singleton","transient","request"],children:C=>x(C,p().get(C),l()===C,()=>a(O=>O===C?null:C))}),null),n(g,o(_,{get when(){return v().length!==ae.container().length},get children(){return[le(()=>v().length)," matched · "]}}),$),n(g,()=>ae.container().length,$),N(()=>m.value=e()),y})(),(()=>{var y=Vi();return n(y,o(_,{get when(){return v().length>0},get fallback(){return(()=>{var m=Gi();return n(m,()=>ae.container().length?"No tokens match":"Nothing registered yet"),m})()},get children(){return o(te,{get each(){return v()},children:m=>(()=>{var S=Wi(),b=S.firstChild,g=b.nextSibling,$=g.nextSibling,C=$.nextSibling,O=C.firstChild,q=C.nextSibling;return S.$$click=()=>u(m.token),n(g,()=>m.token),n($,()=>At(m)),n(S,o(_,{get when(){return(m.scope??"singleton")!=="singleton"},get children(){var T=Yi();return n(T,()=>m.scope),T}}),C),n(C,()=>m.resolveCount??0,O),n(q,(()=>{var T=le(()=>!!m.lastResolvedAt);return()=>T()?Ur(m.lastResolvedAt):"—"})()),N(T=>{var D=`flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 px-2.5 py-1 text-left text-[0.78rem] text-text-body ${i()===m.token?"bg-accent/12 shadow-[inset_2px_0_0_0_var(--color-accent)]":"bg-transparent hover:bg-surface-hover"}`,U=`h-1.5 w-1.5 shrink-0 rounded-full ${Bt(m).label==="failed"?"bg-red-500":m.instantiated?"bg-emerald-500":"bg-border-strong"}`,re=Bt(m).label,Q=Dr(m.kind);return D!==T.e&&j(S,T.e=D),U!==T.t&&j(b,T.t=U),re!==T.a&&X(b,"title",T.a=re),Q!==T.o&&j($,T.o=Q),T},{e:void 0,t:void 0,a:void 0,o:void 0}),S})()})}})),y})()],M=o(_,{get when(){return i()},get fallback(){return Qi()},children:y=>(()=>{var m=Xi();return n(m,o(rl,{get token(){return y()},onSelect:u})),m})()});return o(Je,{storageKey:"container",left:w,right:M})};ye(["click","input"]);var ec=d("<button type=button>Retry all failed"),Lt=d("<button type=button>"),tc=d('<span class="text-xs text-text-muted">'),rc=d('<div class="flex flex-wrap items-center gap-1.5">'),nc=d('<div class="flex flex-col gap-2 border-b border-border p-2"><div class="flex flex-wrap gap-1">'),lc=d('<div class="p-4 text-sm text-text-muted">'),sc=d('<button type=button class="w-full py-2 text-xs text-text-muted hover:text-text-strong">Load 50 more'),ac=d('<div class="min-h-0 flex-1 overflow-y-auto">'),oc=d('<span class="font-normal text-text-muted">paused'),ic=d('<span class="rounded bg-red-500/15 px-1 text-red-500">'),cc=d('<div class="flex flex-wrap items-center gap-x-3 gap-y-1 text-xs">'),uc=d("<button type=button> <span>"),dc=d("<div class=empty>No <!> jobs"),fc=d('<span class="shrink-0 text-[0.68rem] text-text-muted tabular-nums"title=attempts>'),hc=d('<button type=button><span class="w-16 shrink-0 truncate font-mono text-[0.68rem] text-text-muted">#</span><span class="w-32 shrink-0 truncate font-mono font-semibold"></span><span class="min-w-0 flex-1 truncate text-[0.72rem] text-red-500"></span><span class="w-14 shrink-0 text-right text-[0.66rem] text-text-muted">'),gc=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">'),mc=d("<button type=button>Retry"),vc=d("<dt class=text-text-muted>Created"),lr=d("<dd class=m-0>"),pc=d("<dt class=text-text-muted>Ran for"),xc=d("<dt class=text-text-muted>Delay"),bc=d('<div class="rounded-md border border-red-500/40 bg-red-500/10 px-3 py-2 text-red-500">'),$c=d('<section class="flex h-full flex-col gap-3 overflow-y-auto bg-surface-1 p-4 text-[0.8rem]"><header class="flex flex-wrap items-center gap-2"><h2 class="m-0 font-mono text-base text-text-strong"></h2><span></span><span class="font-mono text-xs text-text-muted">#</span><span class=flex-1></span></header><dl class="grid grid-cols-[7rem_1fr] gap-y-1 text-xs"><dt class=text-text-muted>Attempts</dt><dd class="m-0 tabular-nums">'),yc=d('<pre class="m-0 mb-1.5 max-h-48 overflow-auto rounded-md border border-border bg-surface-2 p-2 font-mono text-[0.68rem]">'),wc=d('<div class=dt-panel-grid><div class="card max-w-lg text-sm text-text-secondary">'),_c=d('<p class="m-0 mb-2 font-semibold text-text-strong">No job tool is connected'),kc=d("<p class=m-0>Add <code>QueueAdapter</code> from <code>@forinda/kickjs-queue</code> to browse BullMQ jobs here — retry failures, remove jobs, pause a queue. Any other job tool can show up too by exposing <code>jobInspector()</code> from its adapter."),Sc=d('<pre class="m-0 max-h-72 overflow-auto rounded-md border border-border bg-surface-2 p-3 font-mono text-xs">'),Cc=d('<div><h3 class="mb-1.5 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">'),Ec=["failed","active","waiting","delayed","completed","paused"],sr=50,mn={failed:"text-red-500",active:"text-blue-500",waiting:"text-text-secondary",delayed:"text-amber-500",completed:"text-emerald-500",paused:"text-text-muted"},Mc=()=>{const[e,t]=R(null),[r,s]=R(null),[l,a]=R(null),[i,u]=R("failed"),[c,h]=R([]),[f,p]=R(null),[v,x]=R(sr),[w,M]=R(null),[y,m]=R(null),[S,b]=R(null),[g,$]=R(!1),[C,O]=R(null),q=se(()=>e()?.find(E=>E.source===l()?.source)),T=se(()=>q()?.queues.find(E=>E.name===l()?.queue)),D=E=>!!q()?.actions.includes(E),U=async()=>{try{const{sources:E}=await we.jobs();if(t(E),s(null),!l()){const P=E.find(Y=>Y.queues.length);P&&a({source:P.source,queue:P.queues[0].name})}}catch(E){s(E instanceof Error?E.message:String(E))}},re=async()=>{const E=l();if(E)try{const{jobs:P}=await we.jobList({...E,state:i(),start:0,end:v()-1});h(P),p(null)}catch(P){h([]),p(P instanceof Error?P.message:String(P))}},Q=async()=>{const E=l(),P=w();if(!E||!P){m(null);return}try{m(await we.job({...E,id:P}))}catch{m(null)}},k=async()=>{await U(),await Promise.all([re(),Q()])};Ne(()=>{k();const E=setInterval(()=>{k()},3e3);Se(()=>clearInterval(E))});const A=(E,P=i())=>{a(E),u(P),x(sr),M(null),m(null),re()},J=E=>{M(E),Q()},V=async(E,P={})=>{const Y=l();if(!Y)return;const Z=`${E}:${P.id??P.state??""}`;if(P.confirm&&C()!==Z){O(Z);return}O(null),$(!0),b(null);try{const H=await we.jobAction({...Y,action:E,id:P.id,state:P.state});b(E==="clean"?`Removed ${H.count??0} ${P.state} jobs`:E==="remove"?"Job removed":E==="retry"?"Job queued to run again":E==="retryAll"?"Failed jobs queued to run again":E==="pause"?"Queue paused":"Queue resumed"),(E==="remove"||E==="retry")&&M(null),await k()}catch(H){b(H instanceof Error?H.message:String(H))}finally{$(!1)}},B=(E=!1)=>`rounded-md border px-2 py-0.5 text-xs disabled:opacity-50 ${E?"border-red-500/40 text-red-500 hover:bg-red-500/10":"border-border-strong bg-surface-2 text-text-secondary hover:text-text-strong"}`,I=[(()=>{var E=nc(),P=E.firstChild;return n(P,o(te,{get each(){return e()??[]},children:Y=>o(te,{get each(){return Y.queues},children:Z=>{const H=()=>l()?.source===Y.source&&l()?.queue===Z.name;return(()=>{var ne=Lt();return ne.$$click=()=>A({source:Y.source,queue:Z.name},"failed"),n(ne,()=>Z.name,null),n(ne,o(_,{get when(){return Z.paused},get children(){return oc()}}),null),n(ne,o(_,{get when(){return Z.counts.failed},get children(){var W=ic();return n(W,()=>Z.counts.failed),W}}),null),N(W=>{var de=(e()?.length??0)>1?Y.source:void 0,L=`flex items-center gap-1.5 rounded-md border px-2 py-0.5 text-xs font-semibold ${H()?"border-kick-500/30 bg-kick-500/20 text-kick-500":"border-border-strong bg-surface-2 text-text-secondary hover:text-text-body"}`;return de!==W.e&&X(ne,"title",W.e=de),L!==W.t&&j(ne,W.t=L),W},{e:void 0,t:void 0}),ne})()}})})),n(E,o(_,{get when(){return T()},children:Y=>(()=>{var Z=cc();return n(Z,o(te,{each:Ec,children:H=>(()=>{var ne=uc(),W=ne.firstChild,de=W.nextSibling;return ne.$$click=()=>A(l(),H),n(ne,H,W),n(de,()=>Y().counts[H]??"–"),N(L=>{var z=`border-b-2 pb-0.5 ${i()===H?"border-kick-500 font-semibold text-text-strong":"border-transparent text-text-muted hover:text-text-body"}`,fe=`tabular-nums ${Y().counts[H]?mn[H]:""}`;return z!==L.e&&j(ne,L.e=z),fe!==L.t&&j(de,L.t=fe),L},{e:void 0,t:void 0}),ne})()})),Z})()}),null),n(E,o(_,{get when(){return T()},get children(){var Y=rc();return n(Y,o(_,{get when(){return le(()=>!!(D("retryAll")&&i()==="failed"))()&&T().counts.failed},get children(){var Z=ec();return Z.$$click=()=>{V("retryAll")},N(H=>{var ne=B(),W=g();return ne!==H.e&&j(Z,H.e=ne),W!==H.t&&(Z.disabled=H.t=W),H},{e:void 0,t:void 0}),Z}}),null),n(Y,o(_,{get when(){return le(()=>!!D("clean"))()&&c().length>0},get children(){var Z=Lt();return Z.addEventListener("blur",()=>O(null)),Z.$$click=()=>{V("clean",{state:i(),confirm:!0})},n(Z,(()=>{var H=le(()=>C()===`clean:${i()}`);return()=>H()?`Confirm: delete all ${i()}`:`Clean ${i()}`})()),N(H=>{var ne=B(!0),W=g();return ne!==H.e&&j(Z,H.e=ne),W!==H.t&&(Z.disabled=H.t=W),H},{e:void 0,t:void 0}),Z}}),null),n(Y,o(_,{get when(){return D(T().paused?"resume":"pause")},get children(){var Z=Lt();return Z.$$click=()=>{V(T().paused?"resume":"pause")},n(Z,()=>T().paused?"Resume queue":"Pause queue"),N(H=>{var ne=B(),W=g();return ne!==H.e&&j(Z,H.e=ne),W!==H.t&&(Z.disabled=H.t=W),H},{e:void 0,t:void 0}),Z}}),null),n(Y,o(_,{get when(){return S()},get children(){var Z=tc();return n(Z,S),Z}}),null),Y}}),null),E})(),(()=>{var E=ac();return n(E,o(_,{get when(){return f()},get children(){var P=lc();return n(P,f),P}}),null),n(E,o(_,{get when(){return c().length>0},get fallback(){return o(_,{get when(){return le(()=>!!T())()&&!f()},get children(){var P=dc(),Y=P.firstChild.nextSibling;return Y.nextSibling,n(P,i,Y),P}})},get children(){return[o(te,{get each(){return c()},children:P=>(()=>{var Y=hc(),Z=Y.firstChild;Z.firstChild;var H=Z.nextSibling,ne=H.nextSibling,W=ne.nextSibling;return Y.$$click=()=>J(P.id),n(Z,()=>P.id,null),n(H,()=>P.name),n(ne,()=>P.failedReason??""),n(Y,o(_,{get when(){return P.attempts>1||P.maxAttempts},get children(){var de=fc();return n(de,()=>P.attempts,null),n(de,(()=>{var L=le(()=>!!P.maxAttempts);return()=>L()?`/${P.maxAttempts}`:""})(),null),de}}),W),n(W,(()=>{var de=le(()=>!!(P.finishedAt??P.createdAt));return()=>de()?Ur(P.finishedAt??P.createdAt):""})()),N(()=>j(Y,`flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 px-2.5 py-1 text-left text-[0.76rem] text-text-body ${w()===P.id?"bg-accent/12 shadow-[inset_2px_0_0_0_var(--color-accent)]":"bg-transparent hover:bg-surface-hover"}`)),Y})()}),o(_,{get when(){return c().length>=v()},get children(){var P=sc();return P.$$click=()=>{x(Y=>Y+sr),re()},P}})]}}),null),E})()],ie=o(_,{get when(){return y()},get fallback(){return(()=>{var E=gc(),P=E.firstChild;return n(P,()=>w()?"Loading…":"Select a job to see its data and errors"),E})()},children:E=>(()=>{var P=$c(),Y=P.firstChild,Z=Y.firstChild,H=Z.nextSibling,ne=H.nextSibling;ne.firstChild,ne.nextSibling;var W=Y.nextSibling,de=W.firstChild.nextSibling;return n(Z,()=>E().name),n(H,()=>E().state),n(ne,()=>E().id,null),n(Y,o(_,{get when(){return le(()=>!!D("retry"))()&&E().state==="failed"},get children(){var L=mc();return L.$$click=()=>{V("retry",{id:E().id})},N(z=>{var fe=B(),be=g();return fe!==z.e&&j(L,z.e=fe),be!==z.t&&(L.disabled=z.t=be),z},{e:void 0,t:void 0}),L}}),null),n(Y,o(_,{get when(){return D("remove")},get children(){var L=Lt();return L.addEventListener("blur",()=>O(null)),L.$$click=()=>{V("remove",{id:E().id,confirm:!0})},n(L,()=>C()===`remove:${E().id}`?"Confirm remove":"Remove"),N(z=>{var fe=B(!0),be=g();return fe!==z.e&&j(L,z.e=fe),be!==z.t&&(L.disabled=z.t=be),z},{e:void 0,t:void 0}),L}}),null),n(de,()=>E().attempts,null),n(de,(()=>{var L=le(()=>!!E().maxAttempts);return()=>L()?` of ${E().maxAttempts}`:""})(),null),n(W,o(_,{get when(){return E().createdAt},get children(){return[vc(),(()=>{var L=lr();return n(L,()=>new Date(E().createdAt).toLocaleString()),L})()]}}),null),n(W,o(_,{get when(){return le(()=>!!E().processedAt)()&&E().finishedAt},get children(){return[pc(),(()=>{var L=lr();return n(L,()=>$e(E().finishedAt-E().processedAt)),L})()]}}),null),n(W,o(_,{get when(){return E().delayMs},get children(){return[xc(),(()=>{var L=lr();return n(L,()=>$e(E().delayMs)),L})()]}}),null),n(P,o(_,{get when(){return E().failedReason},get children(){var L=bc();return n(L,()=>E().failedReason),L}}),null),n(P,o(ar,{title:"Data",get children(){return vn(E().data)}}),null),n(P,o(_,{get when(){return le(()=>E().result!==void 0)()&&E().result!==null},get children(){return o(ar,{title:"Result",get children(){return vn(E().result)}})}}),null),n(P,o(_,{get when(){return E().stacktrace?.length},get children(){return o(ar,{get title(){return`Stack traces (${E().stacktrace.length})`},get children(){return o(te,{get each(){return E().stacktrace.toReversed()},children:L=>(()=>{var z=yc();return n(z,L),z})()})}})}}),null),N(()=>j(H,`text-xs font-semibold ${mn[E().state]}`)),P})()});return o(_,{get when(){return le(()=>!!e())()&&e().length>0},get fallback(){return(()=>{var E=wc(),P=E.firstChild;return n(P,o(_,{get when(){return r()},get fallback(){return e()?Tc:"Loading…"},get children(){return r()}})),E})()},get children(){return o(Je,{storageKey:"queues",left:I,right:ie,defaultLeft:560})}})},Tc=[_c(),kc()];function vn(e){let t;try{t=JSON.stringify(e,null,2)??String(e)}catch{t=String(e)}return(()=>{var r=Sc();return n(r,t),r})()}var ar=e=>(()=>{var t=Cc(),r=t.firstChild;return n(r,()=>e.title),n(t,()=>e.children,null),t})();ye(["click"]);function Ac(){let e=new Map,t=new Set;return{on:(r,s)=>{let l=e.get(r);return l||(l=new Set,e.set(r,l)),l.add(s),()=>{let a=e.get(r);a?.delete(s),a&&a.size===0&&e.delete(r)}},onAny:r=>(t.add(r),()=>{t.delete(r)}),dispatch:r=>{let s=e.get(r.type);if(s&&s.size>0)for(let l of[...s])try{l(r.payload)}catch(a){console.error(`[kick:devtools-bus] handler for "${r.type}" threw`,a)}if(t.size>0)for(let l of[...t])try{l(r)}catch(a){console.error("[kick:devtools-bus] onAny handler threw",a)}}}}function Lc(e={}){let t=Ac(),r=e.channel===!1?null:e.channel??"kick-devtools",s=r!=null&&typeof BroadcastChannel<"u"?new BroadcastChannel(r):null;s?.addEventListener("message",v=>{let x=v.data;x&&typeof x.type=="string"&&typeof x.ts=="number"&&t.dispatch({...x,__kick_origin:"broadcast"})});let l=null,a=0,i=null,u=e.reconnectMs??500,c=e.reconnectMaxMs??5e3,h=()=>{e.wsUrl&&(typeof WebSocket>"u"||(!l||l.readyState!==WebSocket.OPEN&&l.readyState!==WebSocket.CONNECTING)&&(l=new WebSocket(e.wsUrl),l.addEventListener("open",()=>{a=0}),l.addEventListener("message",v=>{try{let x=JSON.parse(String(v.data));if(!x||typeof x.type!="string"||typeof x.ts!="number")return;t.dispatch({...x,__kick_origin:"ws"})}catch{}}),l.addEventListener("close",()=>{l=null,f()}),l.addEventListener("error",()=>{f()})))},f=()=>{if(!e.wsUrl||i!=null)return;a+=1;let v=Math.min(a*u,c);i=setTimeout(()=>{i=null,h()},v)},p=v=>{s?.postMessage(v),l&&l.readyState===WebSocket.OPEN?l.send(JSON.stringify(v)):e.wsUrl&&h()};return{on(v,x){return h(),t.on(v,x)},onAny(v){return h(),t.onAny(v)},emit(v,x){let w={type:v,payload:x,ts:Date.now(),__kick_origin:"local"};t.dispatch(w),p(w)}}}var ct=null,[Rc,kr]=R([]);function Oc(){if(ct)return()=>{};const e=`${Ke()}/_bus`,t=location.protocol==="https:"?"wss:":"ws:",r=pt(),s=r?`?token=${encodeURIComponent(r)}`:"",l=`${t}//${location.host}${e}${s}`;ct=Lc({channel:"kick-devtools",wsUrl:l});const a=ct.onAny(i=>{kr(u=>{const c=u.length>=500?u.slice(1):u.slice();return c.push(i),c})});return()=>{a(),ct=null,kr([])}}function zt(){return Rc}function qc(){kr([])}function al(){return ct}var or=200;function Sr(e){if(e==null)return String(e);if(typeof e=="bigint")return`${e.toString()}n`;if(typeof e!="object")return String(e);const t=new WeakSet,r=(l,a)=>{if(typeof a=="bigint")return`${a.toString()}n`;if(a instanceof Error)return{name:a.name,message:a.message};if(a&&typeof a=="object"){if(t.has(a))return"[Circular]";t.add(a)}return a};let s;try{s=JSON.stringify(e,r)}catch{s="[unserialisable]"}return s===void 0&&(s=String(e)),s.length>or?`${s.slice(0,or)}… (+${s.length-or} chars)`:s}function Cr(e){const t=new Date(e);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}.${String(t.getMilliseconds()).padStart(3,"0")}`}function Nc(e){return e.replace(/'(?:[^']|'')*'/g,"?").replace(/\$\d+|:\w+|@\w+/g,"?").replace(/\b\d+(?:\.\d+)?\b/g,"?").replace(/\(\s*\?(?:\s*,\s*\?)+\s*\)/g,"(?)").replace(/\s+/g," ").trim()}var Pc=d("<button type=button>"),Ic=d('<span>p95 <b class="text-text-body tabular-nums">'),Dc=d("<span> statements"),Uc=d('<div class="flex flex-col gap-1.5 border-b border-border p-2"><div class="flex items-center gap-1.5"><input type=text placeholder="Filter SQL…"class="min-w-0 flex-1 bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><div class="flex overflow-hidden rounded-md border border-border-strong text-xs"></div></div><div class="flex flex-wrap gap-x-3 text-xs text-text-muted"><span><b class="text-text-body tabular-nums"></b> queries</span><span><b class=tabular-nums></b> failed</span><span><b class=tabular-nums></b> ≥ 50 ms'),jc=d('<table class="w-full table-fixed border-collapse text-[0.76rem]"><colgroup><col><col class=w-14><col class=w-16><col class=w-20><col class=w-32><col class=w-20></colgroup><thead class="sticky top-0 z-1 border-b border-border bg-surface-2 text-xs"><tr></tr></thead><tbody>'),Hc=d('<div class="min-h-0 flex-1 overflow-y-auto">'),Bc=d("<div class=empty>No queries yet. kick/db reports each statement here when DevTools is installed — run one."),zc=d('<button type=button><span class="w-[5.6rem] shrink-0 font-mono text-[0.68rem] text-text-muted tabular-nums"></span><span></span><span class="min-w-0 flex-1 truncate font-mono text-[0.7rem]">'),Fc=d('<tr><td class="truncate px-2 py-1 font-mono text-[0.7rem]"></td><td class="px-2 py-1 text-right tabular-nums"></td><td></td><td></td><td class="px-2 py-1 text-right tabular-nums"><span class="inline-flex items-center gap-1.5"><span class="h-1.5 w-12 overflow-hidden rounded-full bg-border/60"><span class="block h-full rounded-full bg-kick-500/70"></span></span><span></span></span></td><td class="px-2 py-1 text-right tabular-nums">'),Kc=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">Select a query to see its SQL and parameters'),Jc=d('<section class="flex h-full flex-col gap-3 overflow-y-auto bg-surface-1 p-4 text-[0.8rem]">'),Vc=d('<dl class="grid grid-cols-3 gap-2">'),Gc=d('<div class="text-xs text-text-muted">'),Yc=d('<div class="rounded-md border border-red-500/40 bg-red-500/10 px-3 py-2 text-red-500">'),Wc=d('<pre class="m-0 whitespace-pre-wrap break-words rounded-md border border-border bg-surface-2 p-3 font-mono text-xs">'),Qc=d('<ol class="m-0 list-none rounded-md border border-border bg-surface-2 p-2 font-mono text-xs">'),Xc=d('<li class="flex gap-3 py-0.5"><span class="w-6 text-right text-text-muted">$</span><span class=break-all>'),Zc=d('<div class="rounded-md border border-border bg-surface-2 px-3 py-2"><dt class="text-[0.66rem] uppercase tracking-wider text-text-muted"></dt><dd class="m-0 font-semibold tabular-nums">'),eu=d('<div><h3 class="mb-1.5 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">'),tu=50,ru=()=>{const[e,t]=R([]),[r,s]=R("slowest"),[l,a]=R(""),[i,u]=R(null),c=nl("totalMs"),h=b=>{t(g=>[...g,b].slice(-500))},f=(b,g)=>{const $=b;return{sql:$.sql,parameters:$.parameters,durationMs:0,dialect:$.dialect,error:$.error instanceof Error?$.error.message:String($.error??"query error"),ts:g}};Ne(()=>{for(const C of zt()())C.type==="db:query"?h({...C.payload,ts:C.ts}):C.type==="db:query-error"&&h(f(C.payload,C.ts));const b=al(),g=b?.on("db:query",C=>h({...C,ts:C.ts??Date.now()})),$=b?.on("db:query-error",C=>h(f(C,Date.now())));Se(()=>{g?.(),$?.()})});const p=se(()=>{const b=l().trim().toLowerCase();return b?e().filter(g=>g.sql.toLowerCase().includes(b)):e()}),v=se(()=>{const b=new Map;for(const $ of p()){const C=Nc($.sql),O=b.get(C)??[];O.push($),b.set(C,O)}const g=[...b].map(([$,C])=>{const O=C.filter(T=>!T.error).map(T=>T.durationMs),q=O.reduce((T,D)=>T+D,0);return{sql:$,calls:C.length,errors:C.length-O.length,totalMs:q,meanMs:O.length?q/O.length:0,p95Ms:vr(O,95)??0,last:C[C.length-1]}});return c.apply(g,($,C)=>$[C])}),x=se(()=>Math.max(1,...v().map(b=>b.p95Ms))),w=se(()=>{const b=p(),g=b.filter($=>!$.error).map($=>$.durationMs);return{total:b.length,errors:b.length-g.length,slow:g.filter($=>$>=tu).length,p95:vr(g,95)}}),M=(b,g)=>(()=>{var $=Pc();return $.$$click=()=>s(b),n($,g),N(C=>{var O=r()===b,q=`px-2.5 py-1 font-semibold ${r()===b?"bg-kick-500/20 text-kick-500":"bg-surface-2 text-text-secondary hover:text-text-body"}`;return O!==C.e&&X($,"aria-pressed",C.e=O),q!==C.t&&j($,C.t=q),C},{e:void 0,t:void 0}),$})(),y=b=>`flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 px-2.5 py-1 text-left text-[0.76rem] text-text-body ${b?"bg-accent/12 shadow-[inset_2px_0_0_0_var(--color-accent)]":"bg-transparent hover:bg-surface-hover"}`,m=[(()=>{var b=Uc(),g=b.firstChild,$=g.firstChild,C=$.nextSibling,O=g.nextSibling,q=O.firstChild,T=q.firstChild,D=q.nextSibling,U=D.firstChild,re=D.nextSibling,Q=re.firstChild;return $.$$input=k=>a(k.currentTarget.value),n(C,()=>M("slowest","Slowest"),null),n(C,()=>M("recent","Recent"),null),n(T,()=>w().total),n(U,()=>w().errors),n(Q,()=>w().slow),n(O,o(_,{get when(){return w().p95!==void 0},get children(){var k=Ic(),A=k.firstChild.nextSibling;return n(A,()=>$e(w().p95)),k}}),null),n(O,o(_,{get when(){return r()==="slowest"},get children(){var k=Dc(),A=k.firstChild;return n(k,()=>v().length,A),k}}),null),N(k=>{var A=w().errors?"text-red-500":"",J=w().slow?"text-amber-500":"";return A!==k.e&&j(D,k.e=A),J!==k.t&&j(re,k.t=J),k},{e:void 0,t:void 0}),N(()=>$.value=l()),b})(),(()=>{var b=Hc();return n(b,o(_,{get when(){return e().length>0},get fallback(){return Bc()},get children(){return o(_,{get when(){return r()==="slowest"},get fallback(){return o(te,{get each(){return p().toReversed()},children:g=>(()=>{var $=zc(),C=$.firstChild,O=C.nextSibling,q=O.nextSibling;return $.$$click=()=>u({query:g}),n(C,()=>Cr(g.ts)),n(O,(()=>{var T=le(()=>!!g.error);return()=>T()?"failed":$e(g.durationMs)})()),n(q,()=>g.sql),N(T=>{var D=y(i()?.query===g),U=`w-14 shrink-0 text-right tabular-nums ${g.error?"text-red-500":ut(g.durationMs,4)}`;return D!==T.e&&j($,T.e=D),U!==T.t&&j(O,T.t=U),T},{e:void 0,t:void 0}),$})()})},get children(){var g=jc(),$=g.firstChild.nextSibling,C=$.firstChild,O=$.nextSibling;return n(C,()=>[["sql","Statement","left"],["calls","Calls"],["errors","Failed"],["meanMs","Mean"],["p95Ms","p95"],["totalMs","Total"]].map(([q,T,D])=>o(ll,{label:T,align:D==="left"?"left":"right",get active(){return c.key()===q},get desc(){return c.desc()},onClick:()=>c.toggle(q)}))),n(O,o(te,{get each(){return v()},children:q=>(()=>{var T=Fc(),D=T.firstChild,U=D.nextSibling,re=U.nextSibling,Q=re.nextSibling,k=Q.nextSibling,A=k.firstChild.firstChild,J=A.firstChild,V=A.nextSibling,B=k.nextSibling;return T.$$click=()=>u({group:q,query:q.last}),n(D,()=>q.sql),n(U,()=>q.calls),n(re,()=>q.errors||"—"),n(Q,(()=>{var I=le(()=>q.calls>q.errors);return()=>I()?$e(q.meanMs):"—"})()),n(V,(()=>{var I=le(()=>q.calls>q.errors);return()=>I()?$e(q.p95Ms):"—"})()),n(B,()=>$e(q.totalMs)),N(I=>{var ie=`cursor-pointer border-b border-border/50 ${i()?.group?.sql===q.sql?"bg-accent/12":"hover:bg-surface-hover"}`,E=q.sql,P=`px-2 py-1 text-right tabular-nums ${q.errors?"text-red-500":"text-text-muted"}`,Y=`px-2 py-1 text-right tabular-nums ${ut(q.meanMs,4)}`,Z=`${q.p95Ms/x()*100}%`,H=`min-w-12 ${ut(q.p95Ms,4)}`;return ie!==I.e&&j(T,I.e=ie),E!==I.t&&X(D,"title",I.t=E),P!==I.a&&j(re,I.a=P),Y!==I.o&&j(Q,I.o=Y),Z!==I.i&&Ie(J,"width",I.i=Z),H!==I.n&&j(V,I.n=H),I},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),T})()})),g}})}})),b})()],S=o(_,{get when(){return i()},get fallback(){return Kc()},children:b=>(()=>{var g=Jc();return n(g,o(_,{get when(){return b().group},children:$=>(()=>{var C=Vc();return n(C,o(ir,{label:"Calls",get children(){return $().calls}}),null),n(C,o(ir,{label:"Mean",get children(){return le(()=>$().calls>$().errors)()?$e($().meanMs):"—"}}),null),n(C,o(ir,{label:"p95",get children(){return le(()=>$().calls>$().errors)()?$e($().p95Ms):"—"}}),null),C})()}),null),n(g,o(_,{get when(){return b().query},children:$=>[(()=>{var C=Gc();return n(C,()=>b().group?"Latest call · ":"",null),n(C,()=>new Date($().ts).toLocaleString(),null),n(C,o(_,{get when(){return $().dialect},get children(){return[" · ",le(()=>$().dialect)]}}),null),n(C,o(_,{get when(){return!$().error},get children(){return[" · ",le(()=>$e($().durationMs))]}}),null),C})(),o(_,{get when(){return $().error},get children(){var C=Yc();return n(C,()=>$().error),C}}),o(pn,{title:"SQL",get children(){var C=Wc();return n(C,()=>$().sql),C}}),o(_,{get when(){return $().parameters?.length},get children(){return o(pn,{get title(){return`Parameters (${$().parameters.length})`},get children(){var C=Qc();return n(C,o(te,{get each(){return $().parameters},children:(O,q)=>(()=>{var T=Xc(),D=T.firstChild;D.firstChild;var U=D.nextSibling;return n(D,()=>q()+1,null),n(U,()=>JSON.stringify(O)??String(O)),T})()})),C}})}})]}),null),g})()});return o(Je,{storageKey:"database",left:m,right:S,defaultLeft:600})},ir=e=>(()=>{var t=Zc(),r=t.firstChild,s=r.nextSibling;return n(r,()=>e.label),n(s,()=>e.children),t})(),pn=e=>(()=>{var t=eu(),r=t.firstChild;return n(r,()=>e.title),n(t,()=>e.children,null),t})();ye(["click","input"]);var Er=(e,t)=>`${e}→${t}`;function nu(e,t){const r=new Map(e.map(v=>[v,[]]));for(const v of t)r.has(v.from)&&r.has(v.to)&&r.get(v.from).push(v.to);const s=new Set,l=new Map,a=v=>{l.set(v,"active");for(const x of r.get(v))l.get(x)==="active"?s.add(Er(v,x)):l.has(x)||a(x);l.set(v,"done")};for(const v of e)l.has(v)||a(v);const i=v=>r.get(v).filter(x=>!s.has(Er(v,x))),u=new Set;for(const[v,x]of r){x.length&&u.add(v);for(const w of x)u.add(w)}const c=new Map,h=new Map([...u].map(v=>[v,0]));for(const v of u)for(const x of i(v))h.set(x,h.get(x)+1);const f=[...u].filter(v=>h.get(v)===0);for(const v of f)c.set(v,0);for(;f.length;){const v=f.shift();for(const x of i(v))c.set(x,Math.max(c.get(x)??0,c.get(v)+1)),h.set(x,h.get(x)-1),h.get(x)===0&&f.push(x)}const p=[];for(const v of e){if(!u.has(v))continue;const x=c.get(v)??0;(p[x]??=[]).push(v)}for(let v=1;v<p.length;v++){const x=new Map(p[v-1].map((M,y)=>[M,y])),w=M=>{const y=p[v-1].filter(m=>i(m).includes(M)).map(m=>x.get(m));return y.length?y.reduce((m,S)=>m+S,0)/y.length:1/0};p[v]=p[v].toSorted((M,y)=>w(M)-w(y))}return{layers:p,cycleEdges:s,isolated:e.filter(v=>!u.has(v))}}var lu=.2;var ol=e=>Math.min(3,Math.max(lu,e));function xn(e,t,r,s){const l=ol(e.k*t),a=l/e.k;return{k:l,x:r-(r-e.x)*a,y:s-(s-e.y)*a}}function su(e,t,r,s=24){const l=ol(Math.min(1,(t-s*2)/e.w,(r-s*2)/e.h));return{k:l,x:(t-e.w*l)/2-e.x*l,y:(r-e.h*l)/2-e.y*l}}var au=d('<span class="flex items-center gap-1 text-xs text-red-500"><span class="h-0.5 w-3 bg-red-500"></span> cycle'),ou=d('<button type=button class="rounded-md border border-border-strong bg-surface-2 px-2 py-0.5 text-xs text-text-secondary hover:text-text-strong">Reset layout'),iu=d('<svg class="absolute inset-0 h-full w-full"><defs><marker id=dt-arrow viewBox="0 0 8 8"refX=7 refY=4 markerWidth=6 markerHeight=6 orient=auto><path d="M0 0 L8 4 L0 8 z"fill=var(--color-text-muted)></path></marker></defs><g>'),cu=d('<div class="max-h-32 overflow-y-auto border-t border-border p-3"><div class="mb-1.5 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">No dependencies either way (<!>)</div><div class="flex flex-wrap gap-1">'),uu=d('<div class="flex h-full flex-col"><div class="flex flex-wrap items-center gap-2 border-b border-border p-2"><input type=text placeholder="Find a token — Enter to jump"class="w-52 bg-surface-2 border border-border-strong rounded-lg px-3 py-1 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><span class=flex-1></span><button type=button class="rounded-md border border-border-strong bg-surface-2 px-2 py-0.5 text-xs text-text-secondary hover:text-text-strong"aria-label="Zoom out">−</button><span class="w-10 text-center text-xs text-text-muted tabular-nums">%</span><button type=button class="rounded-md border border-border-strong bg-surface-2 px-2 py-0.5 text-xs text-text-secondary hover:text-text-strong"aria-label="Zoom in">+</button><button type=button class="rounded-md border border-border-strong bg-surface-2 px-2 py-0.5 text-xs text-text-secondary hover:text-text-strong">Fit</button></div><div style="background-image:radial-gradient(var(--color-border) 1px, transparent 1px)"><span class="pointer-events-none absolute bottom-2 left-2 text-[0.62rem] text-text-muted">Drag tokens to arrange · drag or scroll to pan · ⌘/Ctrl + scroll to zoom'),du=d('<span class="flex items-center gap-1 text-xs text-text-muted"><span class="h-2 w-2 rounded-sm">'),fu=d('<div class="p-6 text-sm text-text-muted">No dependencies between registered tokens yet.'),hu=d("<svg><path fill=none marker-end=url(#dt-arrow)></svg>",!1,!0,!1),gu=d("<svg><g class=cursor-move><title> — drag to move, click to focus</title><rect width=164 height=26 rx=5 fill=var(--color-surface-1)></rect><rect width=4 height=26 rx=2></rect><text x=12 y=17 font-size=11.5 font-family=var(--font-mono) fill=var(--color-text-body)></svg>",!1,!0,!1),mu=d("<button type=button>"),vu=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">Select a token to trace its dependencies'),pu=d('<div class="h-full overflow-y-auto bg-surface-1">'),cr=164,Rt=26,il="kickjs-devtools-graph-positions",xu=3,bn={controller:"#8b5cf6",service:"#3b82f6",repository:"#14b8a6"};function bu(){try{return JSON.parse(localStorage.getItem(il)??"{}")}catch{return{}}}var $u=()=>{const[e,t]=R(null),[r,s]=R(""),[l,a]=R(bu()),[i,u]=R({x:0,y:0,k:1}),[c,h]=R(!1);let f;const p=se(()=>ae.container()),v=se(()=>new Map(p().map(k=>[k.token,k]))),x=se(()=>p().flatMap(k=>(k.dependencies??[]).filter(A=>v().has(A)).map(A=>({from:k.token,to:A})))),w=se(()=>nu(p().map(k=>k.token),x())),M=se(()=>{const k=new Map;return w().layers.forEach((A,J)=>A.forEach((V,B)=>k.set(V,l()[V]??{x:J*220,y:B*36}))),k}),y=()=>{if(!f||M().size===0)return;const k=[...M().values()],A=Math.min(...k.map(B=>B.x)),J=Math.min(...k.map(B=>B.y)),V={x:A,y:J,w:Math.max(...k.map(B=>B.x))+cr-A,h:Math.max(...k.map(B=>B.y))+Rt-J};u(su(V,f.clientWidth,f.clientHeight))};Ne(()=>requestAnimationFrame(y)),qe($l(()=>M().size>0,(k,A)=>{k&&!A&&requestAnimationFrame(y)}));const m=k=>{a(k);try{localStorage.setItem(il,JSON.stringify(k))}catch{}};let S=null;const b=k=>{if(k.button!==0)return;const A=k.target.closest("[data-node]")?.getAttribute("data-node");if(k.currentTarget.setPointerCapture(k.pointerId),A){const J=M().get(A);S={kind:"node",id:A,sx:k.clientX,sy:k.clientY,from:J,dragged:!1}}else S={kind:"pan",sx:k.clientX,sy:k.clientY,view:i()},h(!0)},g=k=>{const A=S;if(!A)return;const J=k.clientX-A.sx,V=k.clientY-A.sy;if(A.kind==="pan"){u({...A.view,x:A.view.x+J,y:A.view.y+V});return}if(!A.dragged&&Math.hypot(J,V)<xu)return;A.dragged=!0;const B=i().k;a(I=>({...I,[A.id]:{x:A.from.x+J/B,y:A.from.y+V/B}}))},$=()=>{const k=S;S=null,h(!1),k?.kind==="node"?k.dragged?m(l()):t(A=>A===k.id?null:k.id):k?.kind==="pan"&&k.view===i()&&t(null)},C=k=>{if(k.preventDefault(),k.ctrlKey||k.metaKey){const A=f.getBoundingClientRect(),J=Math.max(-50,Math.min(50,k.deltaY));u(V=>xn(V,Math.exp(-J*.005),k.clientX-A.left,k.clientY-A.top))}else u(A=>({...A,x:A.x-k.deltaX,y:A.y-k.deltaY}))},O=k=>{f&&u(A=>xn(A,k,f.clientWidth/2,f.clientHeight/2))},q=se(()=>{const k=e();if(!k)return null;const A=(B,I)=>{const ie=new Set([B]),E=[B];for(;E.length;)for(const P of I(E.pop()))ie.has(P)||(ie.add(P),E.push(P));return ie},J=A(k,B=>x().filter(I=>I.from===B).map(I=>I.to)),V=A(k,B=>x().filter(I=>I.to===B).map(I=>I.from));return new Set([...J,...V])}),T=k=>!!q()&&!q().has(k),D=()=>{const k=r().trim().toLowerCase(),A=k&&p().find(V=>V.token.toLowerCase().includes(k));if(!A)return;t(A.token);const J=M().get(A.token);if(J&&f){const V=i().k;u({k:V,x:f.clientWidth/2-(J.x+cr/2)*V,y:f.clientHeight/2-(J.y+Rt/2)*V})}},U=(k,A)=>{const J=M().get(k),V=M().get(A),B=J.x+cr,I=J.y+Rt/2,ie=V.x,E=V.y+Rt/2,P=Math.max(30,Math.abs(ie-B)/2);return`M${B} ${I} C${B+P} ${I} ${ie-P} ${E} ${ie} ${E}`},re=(()=>{var k=uu(),A=k.firstChild,J=A.firstChild,V=J.nextSibling,B=V.nextSibling,I=B.nextSibling,ie=I.firstChild,E=I.nextSibling,P=E.nextSibling,Y=A.nextSibling,Z=Y.firstChild;return J.$$keydown=H=>H.key==="Enter"&&D(),J.$$input=H=>s(H.currentTarget.value),n(A,o(te,{get each(){return Object.entries(bn)},children:([H,ne])=>(()=>{var W=du(),de=W.firstChild;return Ie(de,"background",ne),n(W,H,null),W})()}),V),n(A,o(_,{get when(){return w().cycleEdges.size>0},get children(){return au()}}),V),B.$$click=()=>O(1/1.25),n(I,()=>Math.round(i().k*100),ie),E.$$click=()=>O(1.25),P.$$click=y,n(A,o(_,{get when(){return Object.keys(l()).length>0},get children(){var H=ou();return H.$$click=()=>{m({}),requestAnimationFrame(y)},H}}),null),Y.addEventListener("wheel",C),Y.addEventListener("pointercancel",$),Y.$$pointerup=$,Y.$$pointermove=g,Y.$$pointerdown=b,tt(H=>f=H,Y),n(Y,o(_,{get when(){return w().layers.length>0},get fallback(){return fu()},get children(){var H=iu(),ne=H.firstChild.nextSibling;return n(ne,o(te,{get each(){return x()},children:W=>{const de=()=>w().cycleEdges.has(Er(W.from,W.to));return(()=>{var L=hu();return N(z=>{var fe=U(W.from,W.to),be=de()?"#ef4444":"var(--color-border-strong)",ke=e()===W.from||e()===W.to?2:1.25,Ce=de()?"4 3":void 0,me=T(W.from)||T(W.to)?.15:1;return fe!==z.e&&X(L,"d",z.e=fe),be!==z.t&&X(L,"stroke",z.t=be),ke!==z.a&&X(L,"stroke-width",z.a=ke),Ce!==z.o&&X(L,"stroke-dasharray",z.o=Ce),me!==z.i&&X(L,"opacity",z.i=me),z},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),L})()}}),null),n(ne,o(te,{get each(){return w().layers.flat()},children:W=>{const de=()=>M().get(W),L=()=>v().get(W)?.kind??"";return(()=>{var z=gu(),fe=z.firstChild,be=fe.firstChild,ke=fe.nextSibling,Ce=ke.nextSibling,me=Ce.nextSibling;return X(z,"data-node",W),n(fe,W,be),n(me,(()=>{var ge=le(()=>W.length>22);return()=>ge()?`${W.slice(0,21)}…`:W})()),N(ge=>{var xt=`translate(${de().x} ${de().y})`,Ve=T(W)?.25:1,ze=e()===W?"var(--color-accent)":"var(--color-border-strong)",bt=e()===W?2:1,$t=bn[L()]??"var(--color-text-muted)";return xt!==ge.e&&X(z,"transform",ge.e=xt),Ve!==ge.t&&X(z,"opacity",ge.t=Ve),ze!==ge.a&&X(ke,"stroke",ge.a=ze),bt!==ge.o&&X(ke,"stroke-width",ge.o=bt),$t!==ge.i&&X(Ce,"fill",ge.i=$t),ge},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),z})()}}),null),N(()=>X(ne,"transform",`translate(${i().x} ${i().y}) scale(${i().k})`)),H}}),Z),n(k,o(_,{get when(){return w().isolated.length>0},get children(){var H=cu(),ne=H.firstChild,W=ne.firstChild.nextSibling;W.nextSibling;var de=ne.nextSibling;return n(ne,()=>w().isolated.length,W),n(de,o(te,{get each(){return w().isolated},children:L=>(()=>{var z=mu();return z.$$click=()=>t(L),n(z,L),N(()=>j(z,`${Dr(v().get(L)?.kind)} font-mono ${e()===L?"ring-1 ring-kick-500":""}`)),z})()})),H}}),null),N(H=>{var ne=`relative min-h-0 flex-1 touch-none select-none overflow-hidden ${c()?"cursor-grabbing":"cursor-grab"}`,W=`${16*i().k}px ${16*i().k}px`,de=`${i().x}px ${i().y}px`;return ne!==H.e&&j(Y,H.e=ne),W!==H.t&&Ie(Y,"background-size",H.t=W),de!==H.a&&Ie(Y,"background-position",H.a=de),H},{e:void 0,t:void 0,a:void 0}),N(()=>J.value=r()),k})(),Q=o(_,{get when(){return e()},get fallback(){return vu()},children:k=>(()=>{var A=pu();return n(A,o(rl,{get token(){return k()},onSelect:t})),A})()});return o(Je,{storageKey:"graph",defaultLeft:720,left:re,right:Q})};ye(["input","keydown","click","pointerdown","pointermove","pointerup"]);var yu=d('<div class="flex flex-wrap gap-1">'),wu=d("<span class=text-amber-500>"),_u=d('<div class="flex flex-col gap-1.5 border-b border-border p-2"><div class="flex items-center gap-1.5"><input type=text placeholder="Search type or payload…"class="min-w-0 flex-1 bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><button type=button class="rounded-md border border-border-strong bg-surface-2 px-2 py-1 text-xs text-text-secondary hover:text-text-strong"></button><button type=button class="rounded-md border border-border-strong bg-surface-2 px-2 py-1 text-xs text-text-secondary hover:text-text-strong">Clear</button></div><div class="flex items-center text-xs text-text-muted"><span> shown · <!>/<!> kept</span><span class=flex-1>'),ku=d('<button type=button class="absolute top-2 left-1/2 z-10 -translate-x-1/2 rounded-full bg-kick-500 px-3 py-0.5 text-xs font-semibold text-white shadow"> new ↑'),Su=d('<div class="relative min-h-0 flex-1"><div class="h-full overflow-y-auto">'),Cu=d('<button type=button><span class="h-1.5 w-1.5 rounded-full"></span><span class="font-normal text-text-muted">'),Eu=d("<div class=empty>"),Mu=d('<button type=button><span class="w-[5.6rem] shrink-0 font-mono text-[0.68rem] text-text-muted tabular-nums"></span><span class="flex w-36 shrink-0 items-center gap-1.5 truncate font-mono text-[0.72rem] font-semibold"><span class="h-1.5 w-1.5 shrink-0 rounded-full"></span></span><span class="min-w-0 flex-1 truncate font-mono text-[0.7rem] text-text-secondary">'),Tu=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">Select an event to see its payload'),Au=d('<section class="flex h-full flex-col gap-2 overflow-y-auto bg-surface-1 p-4 text-[0.8rem]"><header class="flex items-center gap-2"><span class="h-2 w-2 rounded-full"></span><h2 class="m-0 font-mono text-sm text-text-strong"></h2></header><div class="text-xs text-text-muted"> · </div><pre class="m-0 overflow-x-auto rounded-md border border-border bg-surface-2 p-3 font-mono text-xs leading-relaxed">'),at=e=>e.split(":")[0]||e;function $n(e){return/error|fail|crash/i.test(e)?"err":/warn|slow|retry|timeout/i.test(e)?"warn":"info"}function Lu(e){try{return JSON.stringify(e,null,2)??String(e)}catch{return Sr(e)}}var Ru=()=>{const e=zt(),[t,r]=R(""),[s,l]=R(new Set),[a,i]=R(null),[u,c]=R(null),[h,f]=R(!1);let p;const v=se(()=>{const q=new Map;for(const T of e())q.set(at(T.type),(q.get(at(T.type))??0)+1);return[...q].toSorted((T,D)=>D[1]-T[1])}),x=q=>{const T=t().trim().toLowerCase();return q.filter(D=>!s().has(at(D.type))&&(!T||D.type.toLowerCase().includes(T)||Sr(D.payload).toLowerCase().includes(T))).toReversed()},w=se(()=>x(u()??e())),M=se(()=>u()?x(e()).length-w().length:0),y=()=>{u()||c(e())},m=()=>{f(!1),c(null),p?.scrollTo({top:0})},S=()=>{!p||h()||(p.scrollTop>8?y():c(null))},b=q=>{l(T=>{const D=new Set(T);return D.has(q)?D.delete(q):D.add(q),D})},g={err:"bg-red-500/8",warn:"bg-amber-500/8",info:""},$={err:"shadow-[inset_2px_0_0_0_#ef4444]",warn:"shadow-[inset_2px_0_0_0_#f59e0b]",info:""},C=[(()=>{var q=_u(),T=q.firstChild,D=T.firstChild,U=D.nextSibling,re=U.nextSibling,Q=T.nextSibling,k=Q.firstChild,A=k.firstChild,J=A.nextSibling,V=J.nextSibling.nextSibling;return V.nextSibling,k.nextSibling,D.$$input=B=>r(B.currentTarget.value),U.$$click=()=>{h()?m():(f(!0),y())},n(U,()=>h()?"Resume":"Pause"),re.$$click=()=>{qc(),c(null),i(null)},n(q,o(_,{get when(){return v().length>0},get children(){var B=yu();return n(B,o(te,{get each(){return v()},children:([I,ie])=>(()=>{var E=Cu(),P=E.firstChild,Y=P.nextSibling;return E.$$click=()=>b(I),n(E,I,Y),n(Y,ie),N(Z=>{var H=!s().has(I),ne=`flex items-center gap-1 rounded-md border border-border-strong px-1.5 py-0.5 text-[0.68rem] font-semibold ${s().has(I)?"opacity-40":"bg-surface-2"}`,W=Xt(I);return H!==Z.e&&X(E,"aria-pressed",Z.e=H),ne!==Z.t&&j(E,Z.t=ne),W!==Z.a&&Ie(P,"background",Z.a=W),Z},{e:void 0,t:void 0,a:void 0}),E})()})),B}}),Q),n(k,()=>w().length,A),n(k,()=>e().length,J),n(k,500,V),n(Q,o(_,{get when(){return u()},get children(){var B=wu();return n(B,()=>h()?"paused":"held while scrolled"),B}}),null),N(()=>D.value=t()),q})(),(()=>{var q=Su(),T=q.firstChild;return n(q,o(_,{get when(){return M()>0},get children(){var D=ku(),U=D.firstChild;return D.$$click=m,n(D,M,U),D}}),T),T.addEventListener("scroll",S),tt(D=>p=D,T),n(T,o(_,{get when(){return w().length>0},get fallback(){return(()=>{var D=Eu();return n(D,()=>e().length?"No events match":"No events yet — kick/db queries, queue jobs and anything emitted on DEVTOOLS_BUS show up here."),D})()},get children(){return o(te,{get each(){return w()},children:D=>(()=>{var U=Mu(),re=U.firstChild,Q=re.nextSibling,k=Q.firstChild,A=Q.nextSibling;return U.$$click=()=>i(D),n(re,()=>Cr(D.ts)),n(Q,()=>D.type,null),n(A,()=>Sr(D.payload)),N(J=>{var V=`flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 px-2.5 py-1 text-left text-[0.76rem] text-text-body ${g[$n(D.type)]} ${$[$n(D.type)]} ${a()===D?"!bg-accent/12":"hover:bg-surface-hover"}`,B=Xt(at(D.type));return V!==J.e&&j(U,J.e=V),B!==J.t&&Ie(k,"background",J.t=B),J},{e:void 0,t:void 0}),U})()})}})),q})()],O=o(_,{get when(){return a()},get fallback(){return Tu()},children:q=>(()=>{var T=Au(),D=T.firstChild,U=D.firstChild,re=U.nextSibling,Q=D.nextSibling,k=Q.firstChild,A=Q.nextSibling;return n(re,()=>q().type),n(Q,()=>new Date(q().ts).toLocaleString(),k),n(Q,()=>Cr(q().ts),null),n(Q,o(_,{get when(){return q().pluginId},get children(){return[" · from ",le(()=>q().pluginId)]}}),null),n(A,()=>Lu(q().payload)),N(J=>Ie(U,"background",Xt(at(q().type)))),T})()});return o(Je,{storageKey:"activity",left:C,right:O,defaultLeft:560})};ye(["input","click"]);var Ou="modulepreload",qu=function(e){return"/_debug/"+e},yn={},Nu=function(t,r,s){let l=Promise.resolve();if(r&&r.length>0){let h=function(p){return Promise.all(p.map(v=>Promise.resolve(v).then(x=>({status:"fulfilled",value:x}),x=>({status:"rejected",reason:x}))))},f=function(p){return import.meta.resolve?import.meta.resolve(p):new URL(p,import.meta.url).href};const i=document.getElementsByTagName("link"),u=document.querySelector("meta[property=csp-nonce]"),c=u?.nonce||u?.getAttribute("nonce");l=h(r.map(p=>{if(p=qu(p,s),p=f(p),p in yn)return;yn[p]=!0;const v=p.endsWith(".css");for(let w=i.length-1;w>=0;w--){const M=i[w];if(M.href===p&&(!v||M.rel==="stylesheet"))return}const x=document.createElement("link");if(x.rel=v?"stylesheet":Ou,v||(x.as="script"),x.crossOrigin="",x.href=p,c&&x.setAttribute("nonce",c),document.head.appendChild(x),v)return new Promise((w,M)=>{x.addEventListener("load",w),x.addEventListener("error",()=>M(new Error(`Unable to preload CSS for ${p}`)))})}).filter(p=>p!==void 0))}function a(i){const u=new Event("vite:preloadError",{cancelable:!0});if(u.payload=i,window.dispatchEvent(u),!u.defaultPrevented)throw i}return l.then(i=>{for(const u of i||[])u.status==="rejected"&&a(u.reason);return t().catch(a)})},Pu=d("<div style=display:flex;flex-direction:column;height:100%>"),Iu=d('<iframe title="custom devtools tab"sandbox="allow-scripts allow-same-origin allow-forms"style=flex:1;width:100%;border:none;background:var(--bg)>'),Du=d("<div style=padding:16px><div class=card>"),Uu=d("<div style=color:var(--text-dim);font-size:12px>"),ju=d('<div style="display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border)"><div><div style=font-weight:600></div></div><button type=button class=tab style="border:1px solid var(--border);border-radius:4px;padding:6px 14px;border-bottom-color:var(--border)">'),Hu=d('<div class=card><div class=card-title>Last response</div><pre class="m-0 font-mono text-xs whitespace-pre-wrap">'),Bu=d("<div style=padding:16px;flex:1;overflow:auto>"),zu=d('<div class="card m-4 text-red-500">'),Fu=d('<div class="min-h-0 flex-1 overflow-auto">'),Ku=e=>(()=>{var t=Pu();return n(t,o(_,{get when(){return e.tab.view.type==="iframe"},get children(){return o(Ju,{get view(){return e.tab.view}})}}),null),n(t,o(_,{get when(){return e.tab.view.type==="launch"},get children(){return o(Vu,{get view(){return e.tab.view},get tabId(){return e.tab.id}})}}),null),n(t,o(_,{get when(){return e.tab.view.type==="module"},get children(){return o(Yu,{get view(){return e.tab.view}})}}),null),n(t,o(_,{get when(){return e.tab.view.type==="html"},get children(){return o(Gu,{get view(){return e.tab.view}})}}),null),t})(),Ju=e=>{const t=()=>{const r=new URL(e.view.src,location.href),s=pt();return s&&r.origin===location.origin&&r.searchParams.set("token",s),r.href};return(()=>{var r=Iu();return N(()=>X(r,"src",t())),r})()},Vu=e=>{const[t,r]=R(null),[s,l]=R(null),a=async i=>{r(i),l(null);try{const u=new URLSearchParams({tab:e.tabId,action:i}),c=pt();c&&u.set("token",c);const h=await fetch(`${Ke()}/tabs/run?${u}`,{method:"POST",headers:c?{"x-devtools-token":c}:void 0}),f=await h.json().catch(()=>({}));l(h.ok?JSON.stringify(f.result,null,2):`${h.status} — ${f.error??h.statusText}`)}catch(u){l(u instanceof Error?u.message:String(u))}finally{r(null)}};return(()=>{var i=Du(),u=i.firstChild;return n(u,o(te,{get each(){return e.view.actions},children:c=>(()=>{var h=ju(),f=h.firstChild,p=f.firstChild,v=f.nextSibling;return n(p,()=>c.label),n(f,o(_,{get when(){return c.description},get children(){var x=Uu();return n(x,()=>c.description),x}}),null),v.$$click=()=>{a(c.id)},n(v,()=>t()===c.id?"Running…":"Run"),N(()=>v.disabled=t()===c.id),h})()})),n(i,o(_,{get when(){return s()},children:c=>(()=>{var h=Hu(),f=h.firstChild.nextSibling;return n(f,c),h})()}),null),i})()},Gu=e=>(()=>{var t=Bu();return N(()=>t.innerHTML=e.view.html),t})(),Yu=e=>{let t;const[r,s]=R(null);let l,a=!1;return Ne(async()=>{const i=new URL(e.view.src,location.href);if(i.origin!==location.origin){s(`Refusing to load a tab module from another origin: ${i.origin}`);return}const u=al();if(!u){s("The event bus is not ready yet — reopen the tab.");return}try{const c=await Nu(()=>import(i.href),[]),h=typeof c.default=="function"?c.default:c.default?.render;if(typeof h!="function"){s(`${i.pathname} has no default export with a render function`);return}if(a||!t)return;const f={bus:u,config:{theme:Or(),panelHeight:t.clientHeight},query:new URLSearchParams(location.search)};l=h(t,f)}catch(c){s(c instanceof Error?c.message:String(c))}}),Se(()=>{a=!0,typeof l=="function"&&l()}),[o(_,{get when(){return r()},get children(){var i=zu();return n(i,r),i}}),(()=>{var i=Fu();return tt(u=>t=u,i),i})()]};ye(["click"]);var Ft=!1,dt=null,Pt=null;async function Wu(){return pe.setConnectionStatus("connecting"),await Mr(),Pt=Fn("/stream",e=>{if(!Ft){if(pe.setConnectionStatus("live"),ul(),e.type==="metrics"){Qu(e),pe.touch();return}if(e.type==="container"){Mr();return}}},()=>{Ft||(ae.connectionStatus()!=="disconnected"&&pe.setConnectionStatus("polling"),cl())}),Xu}async function Mr(){const e=await Promise.allSettled([we.health(),we.metrics(),we.routeRegistry(),we.container(),we.queues(),we.ws()]);if(e.every(u=>u.status==="rejected"&&u.reason instanceof Pr)){pe.setAuthRequired(!0),pe.setConnectionStatus("disconnected");return}if(e.every(u=>u.status==="rejected")){pe.setConnectionStatus("disconnected"),cl();return}ae.connectionStatus()==="disconnected"&&pe.setConnectionStatus("polling"),ae.authRequired()&&(pe.setAuthRequired(!1),pe.setAuthError(null));const[t,r,s,l,a,i]=e;t.status==="fulfilled"&&pe.setHealth({status:t.value.status,errorRate:t.value.errorRate,uptime:t.value.uptime,adapters:t.value.adapters??{}}),r.status==="fulfilled"&&pe.setMetrics({requests:r.value.requests,serverErrors:r.value.serverErrors,clientErrors:r.value.clientErrors,errorRate:r.value.errorRate,uptimeSeconds:r.value.uptimeSeconds,startedAt:r.value.startedAt}),s.status==="fulfilled"&&pe.setRoutes(s.value.routes??[]),l.status==="fulfilled"&&pe.setContainer(l.value.registrations??[]),a.status==="fulfilled"&&pe.setQueues({enabled:a.value.enabled,queues:a.value.queues??[]}),i.status==="fulfilled"&&pe.setWs(i.value),pe.touch()}function Qu(e){const t=ae.metrics();if(!t)return;pe.setMetrics({...t,requests:e.requestCount,serverErrors:e.errorCount,clientErrors:e.clientErrorCount,errorRate:e.errorRate,uptimeSeconds:e.uptimeSeconds});const r=ae.health();r&&pe.setHealth({...r,uptime:e.uptimeSeconds,errorRate:e.errorRate})}function cl(){dt||(dt=setInterval(()=>{Ft||Mr()},5e3))}function ul(){dt&&(clearInterval(dt),dt=null)}function Xu(){Ft=!0,ul(),Pt&&(Pt(),Pt=null),pe.setConnectionStatus("disconnected")}var Zu=d('<svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=1.8 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path>'),wn={overview:"M3 3h7v7H3zM14 3h7v7h-7zM3 14h7v7H3zM14 14h7v7h-7z",runtime:"M22 12h-4l-3 9L9 3l-3 9H2",memory:"M9 3v2M15 3v2M9 19v2M15 19v2M3 9h2M3 15h2M19 9h2M19 15h2M7 5h10a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2z",topology:"M12 2l10 5-10 5L2 7zM2 17l10 5 10-5M2 12l10 5 10-5",metrics:"M3 3v18h18M7 16v-4M12 16V8M17 16v-7",routes:"M6 3v12M18 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM6 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM18 9a9 9 0 0 1-9 9",requests:"M7 7h13l-4-4M17 17H4l4 4",container:"M21 8l-9-5-9 5v8l9 5 9-5zM3 8l9 5 9-5M12 13v8",graph:"M18 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM6 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM18 22a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM8.6 13.5l6.8 4M15.4 6.5l-6.8 4",database:"M12 3c4.97 0 9 1.34 9 3s-4.03 3-9 3-9-1.34-9-3 4.03-3 9-3zM21 12c0 1.66-4 3-9 3s-9-1.34-9-3M3 6v12c0 1.66 4 3 9 3s9-1.34 9-3V6",queues:"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01",activity:"M12 8v4l3 3M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18z",custom:"M4 4h6v6H4zM14 4h6v6h-6zM4 14h6v6H4zM17 14v6M14 17h6",expand:"M9 18l6-6-6-6",collapse:"M15 18l-6-6 6-6",search:"M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16zM21 21l-4.35-4.35",action:"M13 2L3 14h9l-1 8 10-12h-9z",editor:"M16 18l6-6-6-6M8 6l-6 6 6 6"},Fe=e=>(()=>{var t=Zu(),r=t.firstChild;return N(s=>{var l=e.size??18,a=e.size??18,i=e.class,u=wn[e.name]??wn.custom;return l!==s.e&&X(t,"width",s.e=l),a!==s.t&&X(t,"height",s.t=a),i!==s.a&&X(t,"class",s.a=i),u!==s.o&&X(r,"d",s.o=u),s},{e:void 0,t:void 0,a:void 0,o:void 0}),t})(),ed=d('<div class="fixed inset-0 z-[60] bg-slate-950/90 flex items-center justify-center p-4"><div class="bg-slate-900 border border-slate-700 rounded-2xl p-8 max-w-md w-full shadow-2xl"><div class="text-center mb-6"><h2 class="text-xl font-bold text-kick-500 mb-2">⚡ KickJS DevTools</h2><p class="text-sm text-slate-400">Enter your DevTools token to continue.</p><p class="text-xs text-slate-600 mt-1">The token is printed in the server console on startup, e.g. <code class="font-mono text-slate-500">[token: abc123…]</code></p></div><form><input type=text autofocus placeholder="Paste your token here…"class="w-full bg-slate-800 border border-slate-700 rounded-lg px-4 py-3 text-sm text-slate-200 placeholder-slate-500 focus:outline-none focus:border-kick-500 font-mono mb-3"><button type=submit class="w-full bg-kick-500 hover:bg-kick-600 text-white font-semibold py-2.5 rounded-lg transition-colors disabled:opacity-50">'),td=d('<p class="text-red-400 text-sm mb-3">'),rd=()=>{const[e,t]=R(""),[r,s]=R(!1),l=async()=>{const a=e().trim();if(!a){pe.setAuthError("Token is required");return}s(!0),pe.setAuthError(null);try{mr(a),await we.health(),pe.setAuthRequired(!1),pe.setAuthError(null),t("")}catch{pe.setAuthError("Invalid token — request was rejected.")}finally{s(!1)}};return o(_,{get when(){return ae.authRequired()},get children(){var a=ed(),i=a.firstChild.firstChild.nextSibling,u=i.firstChild,c=u.nextSibling;return i.addEventListener("submit",h=>{h.preventDefault(),l()}),u.$$input=h=>t(h.currentTarget.value),n(i,o(_,{get when(){return ae.authError()},children:h=>(()=>{var f=td();return n(f,h),f})()}),c),n(c,()=>r()?"Verifying…":"Authenticate"),N(()=>c.disabled=r()),N(()=>u.value=e()),a}})};ye(["input"]);function _n(e,t){const r=e.trim().toLowerCase();if(!r)return 0;const s=t.toLowerCase(),l=s.indexOf(r);if(l>=0){const u=l===0||/[\s/.\-_:]/.test(s[l-1]);return 1e3-l+(u?100:0)}let a=0,i=0;for(const u of r){const c=s.indexOf(u,a);if(c<0)return null;i+=c-a,a=c+1}return 500-i}function nd(e,t){if(!t.trim())return[...e];const r=e.map(l=>{const a=_n(t,l.title),i=l.description?_n(t,l.description):null;return{item:l,score:Math.max(a??-1/0,i===null?-1/0:i-50)}}).filter(l=>l.score>-1/0).toSorted((l,a)=>a.score-l.score).map(l=>l.item),s=[...new Set(r.map(l=>l.group))];return r.toSorted((l,a)=>s.indexOf(l.group)-s.indexOf(a.group))}var ld=d('<div class="fixed inset-0 z-70 flex items-start justify-center bg-black/45 pt-[12vh]"><div class="flex max-h-[60vh] w-[min(640px,calc(100vw-32px))] flex-col overflow-hidden rounded-md border border-border-strong bg-surface-1 shadow-2xl"role=dialog aria-modal=true aria-label="Command palette"><div class="flex items-center gap-2.5 border-b border-border px-3.5 py-2.5 text-text-muted"><input class="flex-1 border-none bg-transparent text-sm text-text-body outline-none"placeholder="Jump to a tab, route or DI token…"aria-label=Search><kbd class=dt-kbd>Esc</kbd></div><div class="overflow-y-auto p-1.5"role=listbox>'),sd=d('<div class="p-6 text-center text-text-muted">No results for “<!>”'),ad=d('<div class="px-2 pt-2 pb-1 text-[0.64rem] font-bold uppercase tracking-wider text-text-muted">'),od=d('<span class="min-w-0 truncate text-xs text-text-muted">'),id=d("<button type=button role=option><span class=whitespace-nowrap>"),cd=e=>{const[t,r]=R(!1),[s,l]=R(""),[a,i]=R(0);let u,c,h=null;const f=se(()=>nd(e.items(),s()).slice(0,50)),p=()=>{h=document.activeElement instanceof HTMLElement?document.activeElement:null,l(""),i(0),r(!0),queueMicrotask(()=>u?.focus())},v=()=>{r(!1),h?.focus(),h=null},x=y=>{y&&(v(),y.run())};Ne(()=>{const y=m=>{if(m.key==="Escape"&&t()){m.preventDefault(),v();return}const S=m.target instanceof HTMLElement&&(m.target.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(m.target.tagName));(m.key==="k"&&(m.metaKey||m.ctrlKey)||m.key==="/"&&!S&&!t())&&(m.preventDefault(),t()?v():p())};document.addEventListener("keydown",y),Se(()=>document.removeEventListener("keydown",y))});const w=y=>{const m=f().length;y.key==="ArrowDown"?(y.preventDefault(),i(S=>m?(S+1)%m:0)):y.key==="ArrowUp"?(y.preventDefault(),i(S=>m?(S-1+m)%m:0)):y.key==="Enter"&&(y.preventDefault(),x(f()[a()]))},M=y=>{if(y.key!=="Tab"||!c)return;const m=[u,...c.querySelectorAll('[role="option"]')].filter(g=>!!g);if(m.length===0)return;const S=m.indexOf(document.activeElement),b=y.shiftKey?S<=0?m.length-1:S-1:(S+1)%m.length;y.preventDefault(),m[b].focus()};return o(_,{get when(){return t()},get children(){var y=ld(),m=y.firstChild,S=m.firstChild,b=S.firstChild,g=S.nextSibling;return y.$$click=$=>$.target===$.currentTarget&&v(),m.$$keydown=M,tt($=>c=$,m),n(S,o(Fe,{name:"search",size:16}),b),b.$$keydown=w,b.$$input=$=>{l($.currentTarget.value),i(0)},tt($=>u=$,b),n(g,o(_,{get when(){return f().length>0},get fallback(){return(()=>{var $=sd(),C=$.firstChild.nextSibling;return C.nextSibling,n($,s,C),$})()},get children(){return o(te,{get each(){return f()},children:($,C)=>[o(_,{get when(){return C()===0||f()[C()-1].group!==$.group},get children(){var O=ad();return n(O,()=>$.group),O}}),(()=>{var O=id(),q=O.firstChild;return O.$$click=()=>x($),O.$$mousemove=()=>i(C()),n(O,o(Fe,{get name(){return $.icon},size:16}),q),n(q,()=>$.title),n(O,o(_,{get when(){return $.description},get children(){var T=od();return n(T,()=>$.description),T}}),null),N(T=>{var D=C()===a(),U=`flex w-full cursor-pointer items-center gap-2.5 rounded-md border-none px-2 py-1.5 text-left text-[0.82rem] ${C()===a()?"bg-accent/15 text-text-strong":"bg-transparent text-text-secondary"}`;return D!==T.e&&X(O,"aria-selected",T.e=D),U!==T.t&&j(O,T.t=U),T},{e:void 0,t:void 0}),O})()]})}})),N(()=>b.value=s()),y}})};function ud(){document.dispatchEvent(new KeyboardEvent("keydown",{key:"k",ctrlKey:!0}))}ye(["click","keydown","input","mousemove"]);var kn=d("<div class=dt-nav-sep>"),dd=d("<div class=dt-resizer role=separator aria-orientation=vertical>"),fd=d('<div class=card style=border-color:var(--warn);margin-top:16px><div class=card-title style=color:var(--warn)> custom-tab issue(s)</div><ul style="margin:8px 0 0;padding-left:20px;font-family:var(--font-mono);font-size:12px">'),hd=d(`<div class="fixed bottom-4 left-1/2 z-60 flex -translate-x-1/2 items-center gap-2.5 rounded-md border border-red-500/40 bg-surface-1 px-3.5 py-2 text-[0.8rem] shadow-xl"role=status><span class="dt-pulse dt-pulse-disconnected"aria-hidden=true></span>Can't reach the app — retrying every few seconds…`),gd=d('<div class=app><header class=dt-header><div class=dt-header-brand><span class=dt-bolt aria-hidden=true>⚡</span><h1>KickJS DevTools</h1></div><div style=display:flex;align-items:center;gap:12px><button type=button class="flex cursor-pointer items-center gap-2 rounded-md border border-border-strong bg-surface-2 px-2.5 py-1 text-xs text-text-muted hover:text-text-strong">Search<kbd class=dt-kbd>⌘K</kbd></button></div></header><div class=dt-shell><aside role=tablist><div class=dt-sidebar-foot><button type=button class=dt-rail-toggle></button></div></aside><main role=tabpanel>'),ur=d("<button type=button role=tab><span class=dt-nav-main><span class=dt-nav-label>"),Sn=d("<span class=tab-badge>"),md=d("<div class=dt-nav-group><button type=button class=dt-nav-group-header><span>▾"),vd=d("<li>: "),pd=d("<div class=dt-conn><span aria-hidden=true></span><span class=dt-conn-label></span><span class=dt-conn-sep>·</span><span class=dt-conn-ts>Updated "),xd=d("<div class=dt-settings-pop role=menu><div class=dt-settings-section><div class=dt-settings-label>Density</div><div class=dt-seg></div><div class=dt-settings-hint>Controls spacing &amp; font scale. Default: Small."),bd=d('<div class=dt-settings><button type=button aria-label=Settings aria-haspopup=true title=Settings><svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2><circle cx=12 cy=12 r=3></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z">'),$d=d("<button type=button>"),yd=d('<svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z">'),wd=d("<button type=button class=dt-theme-toggle>"),_d=d('<svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2><circle cx=12 cy=12 r=4></circle><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41">');function dl(){return[{id:"overview",label:"Overview"},{id:"runtime",label:"Runtime"},{id:"topology",label:"Topology"},{id:"routes",label:"Routes",count:()=>ae.routes().length||void 0},{id:"metrics",label:"Metrics"},{id:"requests",label:"Requests"},{id:"container",label:"Container",count:()=>ae.container().length||void 0},{id:"queues",label:"Queues",count:()=>ae.queues().queues.length||void 0},{id:"database",label:"Database",count:()=>zt()().filter(e=>e.type==="db:query"||e.type==="db:query-error").length||void 0},{id:"graph",label:"Graph",count:()=>ae.container().length||void 0},{id:"activity",label:"Activity",count:()=>zt()().length||void 0}]}var kd=new Set(dl().map(e=>e.id)),Sd=[{label:null,ids:["overview"]},{label:"Runtime",ids:["runtime","topology","metrics","requests"]},{label:"Architecture",ids:["routes","container","graph"]},{label:"Data & Jobs",ids:["database","queues"]},{label:null,ids:["activity"]}],fl="kickjs-devtools-sidebar-w",Cn="kickjs-devtools-sidebar-mode",Cd=new Set(["routes","requests","container","graph","activity","database","queues"]),hl="kickjs-devtools-sidebar-collapsed",gl=150,ml=360;function Ed(){try{const e=Number(localStorage.getItem(fl));if(e>=gl&&e<=ml)return e}catch{}return 200}function Md(){try{const e=localStorage.getItem(hl);if(e)return JSON.parse(e)}catch{}return[]}var Td=()=>{const e=$s,[t,r]=R((()=>{try{return localStorage.getItem(Cn)!=="full"}catch{return!0}})()),s=()=>{const g=!t();r(g);try{localStorage.setItem(Cn,g?"rail":"full")}catch{}},[l,a]=R([]),[i,u]=R([]),c=dl(),h=new Map(c.map(g=>[g.id,g])),[f,p]=R(Ed()),[v,x]=R(Md()),w=g=>{x($=>{const C=$.includes(g)?$.filter(O=>O!==g):[...$,g];try{localStorage.setItem(hl,JSON.stringify(C))}catch{}return C})};let M=null;Se(()=>M?.());const y=g=>{g.preventDefault();const $=g.clientX,C=f();document.body.style.cursor="col-resize";const O=D=>{const U=Math.min(ml,Math.max(gl,C+(D.clientX-$)));p(U)},q=()=>{document.removeEventListener("mousemove",O),document.removeEventListener("mouseup",T),document.body.style.cursor="",M=null},T=()=>{q();try{localStorage.setItem(fl,String(f()))}catch{}};M=q,document.addEventListener("mousemove",O),document.addEventListener("mouseup",T)};Ne(()=>{we.tabs().then(({tabs:O,errors:q})=>{a(O.filter(T=>!kd.has(T.id))),u(q)}).catch(()=>{});let g=null;Wu().then(O=>{g=O});const $=Oc(),C=hs();Se(()=>{g?.(),$(),C()}),Ul(),Bl()});const m=g=>{rt(g),queueMicrotask(()=>{document.querySelector(`[role="tab"][data-tab-id="${g}"]`)?.scrollIntoView({behavior:"smooth",inline:"center",block:"nearest"})})},S=()=>[...c.map(g=>({id:`tab:${g.id}`,title:g.label,group:"Tabs",icon:g.id,run:()=>m(g.id)})),...l().map(g=>({id:`tab:${g.id}`,title:g.title,group:"Tabs",icon:"custom",run:()=>m(g.id)})),...ae.routes().map(g=>({id:`route:${g.method} ${g.path}`,title:`${g.method} ${g.path}`,description:`${g.controller}.${g.handler}`,group:"Routes",icon:"routes",run:()=>Jt(g)})),...ae.container().map(g=>({id:`token:${g.token}`,title:g.token,description:[g.kind,g.scope].filter(Boolean).join(" · "),group:"DI tokens",icon:"container",run:()=>tl(g.token)})),...["system","light","dark"].map(g=>({id:`theme:${g}`,title:`Theme: ${g}`,group:"Actions",icon:"action",run:()=>Un(g)})),...["sm","md","lg"].map(g=>({id:`density:${g}`,title:`Density: ${g}`,group:"Actions",icon:"action",run:()=>Bn(g)}))],b=()=>l().find(g=>g.id===e());return(()=>{var g=gd(),$=g.firstChild,C=$.firstChild.nextSibling,O=C.firstChild,q=O.firstChild,T=$.nextSibling,D=T.firstChild,U=D.firstChild,re=U.firstChild,Q=D.nextSibling;return Lr(O,"click",ud,!0),n(O,o(Fe,{name:"search",size:13}),q),n(C,o(Ad,{}),null),n(C,o(Od,{}),null),n(C,o(Rd,{}),null),n(D,o(te,{each:Sd,children:k=>o(_,{get when(){return k.label},get fallback(){return o(te,{get each(){return k.ids},children:A=>{const J=h.get(A);return o(_,{when:J,children:V=>(()=>{var B=ur(),I=B.firstChild,ie=I.firstChild;return B.$$click=()=>m(A),X(B,"data-tab-id",A),n(I,o(Fe,{name:A}),ie),n(ie,()=>V().label),n(B,o(_,{get when(){return V().count?.()},children:E=>(()=>{var P=Sn();return n(P,E),P})()}),null),N(E=>{var P=`dt-nav-item ${e()===A?"active":""}`,Y=e()===A,Z=V().label;return P!==E.e&&j(B,E.e=P),Y!==E.t&&X(B,"aria-selected",E.t=Y),Z!==E.a&&X(B,"title",E.a=Z),E},{e:void 0,t:void 0,a:void 0}),B})()})}})},children:A=>(()=>{var J=md(),V=J.firstChild,B=V.firstChild;return n(J,o(_,{get when(){return t()},get children(){return kn()}}),V),V.$$click=()=>w(A()),n(V,A,null),n(J,o(_,{get when(){return t()||!v().includes(A())},get children(){return o(te,{get each(){return k.ids},children:I=>{const ie=h.get(I);return o(_,{when:ie,children:E=>(()=>{var P=ur(),Y=P.firstChild,Z=Y.firstChild;return P.$$click=()=>m(I),X(P,"data-tab-id",I),n(Y,o(Fe,{name:I}),Z),n(Z,()=>E().label),n(P,o(_,{get when(){return E().count?.()},children:H=>(()=>{var ne=Sn();return n(ne,H),ne})()}),null),N(H=>{var ne=`dt-nav-item nested ${e()===I?"active":""}`,W=e()===I,de=E().label;return ne!==H.e&&j(P,H.e=ne),W!==H.t&&X(P,"aria-selected",H.t=W),de!==H.a&&X(P,"title",H.a=de),H},{e:void 0,t:void 0,a:void 0}),P})()})}})}}),null),N(I=>{var ie=t(),E=!v().includes(A()),P=`dt-nav-caret ${v().includes(A())?"closed":""}`;return ie!==I.e&&(V.hidden=I.e=ie),E!==I.t&&X(V,"aria-expanded",I.t=E),P!==I.a&&j(B,I.a=P),I},{e:void 0,t:void 0,a:void 0}),J})()})}),U),n(D,o(_,{get when(){return l().length>0},get children(){return[kn(),o(te,{get each(){return l()},children:k=>(()=>{var A=ur(),J=A.firstChild,V=J.firstChild;return A.$$click=()=>m(k.id),n(J,o(Fe,{name:"custom"}),V),n(V,()=>k.title),N(B=>{var I=k.id,ie=`dt-nav-item ${e()===k.id?"active":""}`,E=e()===k.id,P=k.title;return I!==B.e&&X(A,"data-tab-id",B.e=I),ie!==B.t&&j(A,B.t=ie),E!==B.a&&X(A,"aria-selected",B.a=E),P!==B.o&&X(A,"title",B.o=P),B},{e:void 0,t:void 0,a:void 0,o:void 0}),A})()})]}}),U),re.$$click=s,n(re,o(Fe,{get name(){return t()?"expand":"collapse"},size:16})),n(T,o(_,{get when(){return!t()},get children(){var k=dd();return k.$$mousedown=y,k}}),Q),n(Q,o(_,{get when(){return e()==="overview"},get children(){return o(co,{})}}),null),n(Q,o(_,{get when(){return e()==="runtime"},get children(){return o(qo,{})}}),null),n(Q,o(_,{get when(){return e()==="topology"},get children(){return o(pi,{})}}),null),n(Q,o(_,{get when(){return e()==="routes"},get children(){return o(Mi,{})}}),null),n(Q,o(_,{get when(){return e()==="requests"},get children(){return o(Wa,{})}}),null),n(Q,o(_,{get when(){return e()==="metrics"},get children(){return o(zi,{})}}),null),n(Q,o(_,{get when(){return e()==="container"},get children(){return o(Zi,{})}}),null),n(Q,o(_,{get when(){return e()==="queues"},get children(){return o(Mc,{})}}),null),n(Q,o(_,{get when(){return e()==="database"},get children(){return o(ru,{})}}),null),n(Q,o(_,{get when(){return e()==="graph"},get children(){return o($u,{})}}),null),n(Q,o(_,{get when(){return e()==="activity"},get children(){return o(Ru,{})}}),null),n(Q,o(_,{get when(){return b()},children:k=>o(Ku,{get tab(){return k()}})}),null),n(Q,o(_,{get when(){return le(()=>i().length>0)()&&e()==="overview"},get children(){var k=fd(),A=k.firstChild,J=A.firstChild,V=A.nextSibling;return n(A,()=>i().length,J),n(V,o(te,{get each(){return i()},children:B=>(()=>{var I=vd(),ie=I.firstChild;return n(I,()=>B.source,ie),n(I,()=>B.reason,null),I})()})),k}}),null),n(g,o(cd,{items:S}),null),n(g,o(rd,{}),null),n(g,o(_,{get when(){return le(()=>ae.connectionStatus()==="disconnected")()&&!ae.authRequired()},get children(){return hd()}}),null),N(k=>{var A=`dt-sidebar ${t()?"rail":""}`,J=`width:${f()}px`,V=t()?"Show labels":"Icons only",B=t()?"Show labels":"Icons only",I=`dt-main ${Cd.has(e())?"flush":""}`;return A!==k.e&&j(D,k.e=A),k.t=Pn(D,J,k.t),V!==k.a&&X(re,"title",k.a=V),B!==k.o&&X(re,"aria-label",k.o=B),I!==k.i&&j(Q,k.i=I),k},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),g})()},Ad=()=>{const e=r=>r==="live"?"Live":r==="polling"?"Polling":r==="disconnected"?"Disconnected":"Connecting…",t=r=>r?r.toLocaleTimeString():"never";return(()=>{var r=pd(),s=r.firstChild,l=s.nextSibling,a=l.nextSibling.nextSibling;return a.firstChild,n(l,()=>e(ae.connectionStatus())),n(a,()=>t(ae.lastUpdate()),null),N(()=>j(s,`dt-pulse dt-pulse-${ae.connectionStatus()}`)),r})()},Ld=[{id:"sm",label:"Small"},{id:"md",label:"Medium"},{id:"lg",label:"Large"}],Rd=()=>{const[e,t]=R(!1);let r;const s=a=>{e()&&r&&!r.contains(a.target)&&t(!1)},l=a=>{a.key==="Escape"&&t(!1)};return document.addEventListener("click",s),document.addEventListener("keydown",l),Se(()=>{document.removeEventListener("click",s),document.removeEventListener("keydown",l)}),(()=>{var a=bd(),i=a.firstChild;return tt(u=>r=u,a),i.$$click=()=>t(u=>!u),n(a,o(_,{get when(){return e()},get children(){var u=xd(),c=u.firstChild.firstChild.nextSibling;return n(c,o(te,{each:Ld,children:h=>(()=>{var f=$d();return f.$$click=()=>Bn(h.id),n(f,()=>h.label),N(p=>{var v=`dt-seg-item ${Qr()===h.id?"active":""}`,x=Qr()===h.id;return v!==p.e&&j(f,p.e=v),x!==p.t&&X(f,"aria-pressed",p.t=x),p},{e:void 0,t:void 0}),f})()})),u}}),null),N(u=>{var c=`dt-settings-btn ${e()?"open":""}`,h=e();return c!==u.e&&j(i,u.e=c),h!==u.t&&X(i,"aria-expanded",u.t=h),u},{e:void 0,t:void 0}),a})()},Od=()=>{const e=()=>{const r=Yt()==="system"?"light":Yt()==="light"?"dark":"system";Un(r)},t=()=>{const r=Yt();return`Theme: ${r==="system"?"follow system":r} (click to cycle)`};return(()=>{var r=wd();return r.$$click=e,n(r,o(_,{get when(){return Or()==="dark"},get fallback(){return _d()},get children(){return yd()}})),N(s=>{var l=t(),a=t();return l!==s.e&&X(r,"aria-label",s.e=l),a!==s.t&&X(r,"title",s.t=a),s},{e:void 0,t:void 0}),r})()};ye(["click","mousedown"]);var vl=document.getElementById("root");if(!vl)throw new Error("#root not found");Rl(()=>o(Td,{}),vl);
8
+ await fetch(${JSON.stringify(e.url)}, ${s})`}return typeof e.body=="string"&&(t.body=e.body),`await fetch(${JSON.stringify(e.url)}, ${JSON.stringify(t,null,2)})`}function Ns(e,t){if(!t?.includes("json"))return e;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}var Nt=e=>`kickjs-devtools:runner:${e.method.toUpperCase()} ${e.path}`,Yn=e=>{const t=e.upload&&e.upload.mode!=="none"?e.upload:void 0;return{params:Object.fromEntries(qt(e.path).map(r=>[r,""])),query:[],headers:[],body:"",bodyMode:t?"form":"raw",form:t?[{key:t.fieldName??"file",value:"",enabled:!0,type:"file"}]:[]}};function Wn(e){return{...e,form:e.form?.map(({files:t,...r})=>r)}}function Ps(e,t,r=30){return[{...t,inputs:Wn(t.inputs)},...e].slice(0,r)}var Is=e=>Vn("",e.path,e.inputs.params,e.inputs.query);function Ds(e,t){for(const[r,s]of Object.entries(e?.paths??{}))if(r.replace(/\{([^}]+)\}/g,":$1")===t.path)return s?.[t.method.toLowerCase()]}function Qn(e,t){const r=t?.$ref;if(typeof r!="string"||!r.startsWith("#/"))return t;let s=e;for(const l of r.slice(2).split("/"))s=s?.[l];return s}function Qe(e,t,r=0){const s=Qn(e,t);if(!s||r>6)return null;if(s.example!==void 0)return s.example;if(s.default!==void 0)return s.default;if(Array.isArray(s.enum)&&s.enum.length)return s.enum[0];const l=s.oneOf?.[0]??s.anyOf?.[0];if(l)return Qe(e,l,r+1);if(s.allOf)return Object.assign({},...s.allOf.map(a=>Qe(e,a,r+1)));switch((Array.isArray(s.type)?s.type.find(a=>a!=="null"):s.type)??(s.properties?"object":void 0)){case"object":return Object.fromEntries(Object.entries(s.properties??{}).map(([a,i])=>[a,Qe(e,i,r+1)]));case"array":return s.items?[Qe(e,s.items,r+1)]:[];case"string":return"";case"integer":case"number":return 0;case"boolean":return!1;default:return null}}function Us(e,t){const r=Ds(e,t);if(!r)return;const s={},l=[];for(const i of r.parameters??[]){const u=Qn(e,i);u?.name&&(u.in==="path"&&u.description&&(s[u.name]=u.description),u.in==="query"&&l.push({name:u.name,required:!!u.required,description:u.description}))}const a=r.requestBody?.content?.["application/json"]?.schema;return{summary:r.summary??r.description,params:s,query:l,...a?{body:JSON.stringify(Qe(e,a),null,2)}:{}}}function js(e){const{body:t,query:r,params:s}=e.schemas??{};if(!t&&!r&&!s)return;const l=u=>Object.fromEntries(Object.entries(u?.properties??{}).flatMap(([c,h])=>h?.description?[[c,String(h.description)]]:[])),a=new Set(Array.isArray(r?.required)?r.required:[]),i=l(r);return{params:l(s),query:Object.keys(r?.properties??{}).map(u=>({name:u,required:a.has(u),...i[u]?{description:i[u]}:{}})),...t?{body:JSON.stringify(Qe(t,t),null,2)}:{}}}function tn(e,t){const r=new Set(e.query.map(a=>a.key)),s=[...e.query,...t.query.filter(a=>!r.has(a.name)).map(a=>({key:a.name,value:"",enabled:a.required}))],l=e.body.trim()||!t.body?e.body:t.body;return{...e,query:s,body:l}}function Hs(e,t,r){const s=t.replace(/\\/g,"/").replace(/^(?=[A-Za-z]:)/,"/");return e.replace("{file}",encodeURI(s)).replace("{line}",String(r))}var Bs=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">Select a route to try it'),zs=d('<p class="text-sm text-text-secondary mt-1">'),Fs=d('<p class="text-xs text-amber-400 mt-2">No value for <!> — add it under Environment → Variables.'),Js=d('<label class="flex items-start gap-2 text-sm mb-3"><input type=checkbox class=mt-1><span>Remember on this browser<span class="block text-xs text-text-muted">'),Ks=d('<h3 class="text-xs font-semibold text-text-secondary mb-1">Default headers'),Vs=d('<p class="text-xs text-text-muted mb-2">Sent with every route. A default Authorization is skipped on routes carrying a public flag.'),Gs=d('<h3 class="text-xs font-semibold text-text-secondary mt-4 mb-1">Variables'),Ys=d('<p class="text-xs text-text-muted mb-2">Use <code>{{name}}</code> in any param, query, header or body value — e.g. a default header <code>Authorization: Bearer {{token}}</code>. Fill them by hand or with "Save to variable" on a response.'),Ws=d('<h3 class="text-xs font-semibold text-text-secondary mt-4 mb-1">Settings'),Qs=d('<div class="grid grid-cols-1 sm:grid-cols-2 gap-3"><label class="flex flex-col gap-1 text-xs text-text-muted">Public route flags (comma-separated)<input>'),Xs=d('<span class="text-xs text-text-muted"role=status>'),Zs=d('<div class="flex items-center gap-1 mb-2"><button type=button>Copy'),ea=d('<pre class="text-xs font-mono bg-surface-2 border border-border rounded-lg p-3 overflow-x-auto whitespace-pre-wrap break-all select-text">'),ta=d('<div class="text-sm text-red-400 bg-red-500/10 border border-red-500/30 rounded-lg p-3">Request failed: '),ra=d('<ul class="flex flex-col gap-1">'),na=d("<button type=button>Clear history"),la=d('<div class="h-full flex flex-col min-h-0"><section class="h-full bg-surface-1 flex flex-col min-h-0"><header class="px-5 py-4 border-b border-border"><div class="flex items-start justify-between gap-4"><div class=min-w-0><div class="flex items-center gap-2"><span></span><h2 class="text-base font-semibold font-mono text-text-body break-all"></h2></div><p class="text-xs text-text-muted mt-1"><button type=button class="underline decoration-dotted hover:text-kick-500"title="Open in editor">.</button></p></div><button type=button class="text-text-muted hover:text-text-strong p-1 text-lg leading-none"aria-label=Close>✕</button></div><div class="flex items-stretch gap-2 mt-3"><div class="flex-1 min-w-0 flex items-center gap-2 font-mono text-xs bg-surface-2 border border-border rounded-lg px-3 py-2 text-text-secondary"><span></span><span class=break-all></span></div><button type=button></button></div></header><div class="flex-1 overflow-y-auto px-5 py-3 flex flex-col gap-2">'),jr=d('<div class="flex flex-col gap-2">'),sa=d('<ul class="text-xs text-text-muted mt-2 flex flex-col gap-0.5">'),aa=d('<span class="text-xs text-text-muted ml-2">@FileUpload: field <code>'),oa=d('<div class="flex items-center gap-1 mb-2">'),ia=d(`<p class="text-xs text-text-muted mt-2">Sent as multipart/form-data. Picked files aren't saved — pick them again after reopening.`),ca=d('<label class="flex items-center gap-3 text-sm"><span class="font-mono text-text-secondary w-28 shrink-0">:</span><input>'),ua=d("<li><code>"),rn=d("<button type=button>"),da=d('<textarea placeholder="{ &quot;name&quot;: &quot;value&quot; }">'),fa=d("<button type=button>Fill empty inputs from OpenAPI"),ha=d('<label class="flex flex-col gap-1 text-xs text-text-muted"><input>'),ga=d('<details class="text-xs mb-2"><summary class="cursor-pointer text-text-secondary">Response headers (<!>)</summary><table class=mt-2><tbody>'),ma=d('<pre class="text-xs font-mono bg-surface-2 border border-border rounded-lg p-3 overflow-x-auto max-h-[50vh] whitespace-pre-wrap break-all">'),va=d('<div class="flex flex-col sm:flex-row sm:items-center gap-2 mt-3 text-xs"><span class="text-text-secondary font-semibold shrink-0">Save to variable</span><input placeholder="JSON path, e.g. data.accessToken"><input placeholder="variable, e.g. token"><button type=button>Save'),pa=d('<p class="text-xs text-text-muted mt-1"role=status>'),xa=d('<p class="mt-1 text-xs text-text-muted">Body truncated to <!> characters.'),ba=d('<span class="flex items-center gap-3">Response<span> </span><span class="text-text-muted text-xs font-normal"> ms'),$a=d('<tr><td class="font-mono text-text-secondary pr-4"></td><td class="font-mono break-all">'),ya=d('<p class="text-xs text-text-muted">Nothing sent yet.'),wa=d('<li><button type=button class="w-full flex items-center gap-2 text-xs text-left rounded px-2 py-1 hover:bg-surface-2"title="Open with these inputs"><span></span><span class="font-mono truncate flex-1"></span><span></span><span class="text-text-muted w-16 text-right"> ms</span><span class="text-text-muted w-16 text-right">'),_a=d('<span class="text-xs font-normal text-text-muted">(<!>)'),ka=d('<details class="border border-border rounded-lg bg-surface-1 group"><summary class="cursor-pointer select-none px-3 py-2 text-sm font-semibold text-text-body flex items-center gap-2"><span class="text-text-muted transition-transform group-open:rotate-90">▸</span></summary><div class="px-3 pb-3">'),Sa=d("<label><input type=file class=sr-only>"),Ca=d('<div class="flex items-center gap-2"><input type=checkbox aria-label=Enabled><select aria-label="Field type"><option value=text>Text</option><option value=file>File</option></select><input placeholder=name>'),Ea=d("<input placeholder=value>"),Ma=d('<div class="flex items-center gap-2"><input type=checkbox aria-label=Enabled><input placeholder=name><input placeholder=value>'),Zt="kickjs-devtools:runner:defaults",er="kickjs-devtools:runner:variables",nn="kickjs-devtools:runner:settings",Xn="kickjs-devtools:runner:remember",ln="kickjs-devtools:runner:history",tr=2e5,[Re,$r]=O(null),st=0,it=null,[Zn,sn]=O({});function Ta(e){e in Ae(Zn)||(sn(t=>({...t,[e]:void 0})),fetch(e,{credentials:"same-origin"}).then(t=>t.ok?t.json():null).catch(()=>null).then(t=>sn(r=>({...r,[e]:t}))))}var[Aa,La]=O(0);function Kt(e,t){if(t){const r=yr(()=>localStorage,Nt(e),Yn(e));it={...r,params:{...r.params,...t}}}$r(e),La(r=>r+1),nt("routes")}function yr(e,t,r){try{const s=e().getItem(t);return s?{...r,...JSON.parse(s)}:r}catch{return r}}function an(e,t){try{const r=JSON.parse(e().getItem(t)??"[]");return Array.isArray(r)?r:[]}catch{return[]}}function on(e,t){try{e().removeItem(t)}catch{}}function Oa(){try{return localStorage.getItem(Xn)==="true"}catch{return!1}}function We(e,t,r){try{e().setItem(t,JSON.stringify(r))}catch{}}var kt=e=>e.filter(t=>t.enabled&&t.key).length,Ra=()=>{const[e,t]=O(null),[r,s]=O(Oa()),l=()=>r()?localStorage:sessionStorage,a=()=>r()?sessionStorage:localStorage,[i,u]=O(an(l,Zt)),[c,h]=O(an(l,er)),[f,p]=O({path:"",name:""}),[v,b]=O(null),[w,M]=O(yr(()=>localStorage,nn,ws)),[y,m]=O(!1),[S,x]=O(!1),[g,$]=O(null),[C,R]=O(null),[q,T]=O(null),[D,U]=O("curl"),[re,Q]=O((()=>{try{const L=JSON.parse(localStorage.getItem(ln)??"[]");return Array.isArray(L)?L:[]}catch{return[]}})()),[k,A]=O(null),[K,V]=O(!1),B=se(()=>{const L=Re();if(!L)return;const z=Zn()[w().openApiUrl];return(z?Us(z,L):void 0)??js(L)});qe(()=>{const L=Re();if(Aa(),st++,!L)return;let z=!1;try{z=localStorage.getItem(Nt(L))===null}catch{}const fe=it??yr(()=>localStorage,Nt(L),Yn(L));it=null;const be=Object.fromEntries(qt(L.path).map(ke=>[ke,fe.params[ke]??""]));t({...fe,params:be}),V(z),A(null),$(null),R(null),m(!1),x(!1)}),qe(()=>{const L=Re(),z=e();L&&z&&We(()=>localStorage,Nt(L),Wn(z))}),qe(()=>{We(l,Zt,i()),We(l,er,c()),on(a,Zt),on(a,er),We(()=>localStorage,Xn,r())}),qe(()=>We(()=>localStorage,nn,w())),qe(()=>We(()=>localStorage,ln,re())),qe(()=>{Re()&&Ta(w().openApiUrl)}),qe(()=>{const L=B();!L||!K()||(V(!1),t(z=>z&&tn(z,L)))});const I=se(()=>{const L=Re(),z=e();return!L||!z?null:Ls({route:L,inputs:z,defaults:i(),variables:Ts(c()),settings:w(),origin:window.location.origin,cookies:document.cookie})}),ie=()=>$r(null),E=L=>{m(!1),t(z=>z&&{...z,...L})};async function P(){const L=I();if(!L)return;if(Ss(L.method)&&!y()){m(!0);return}m(!1),x(!0),R(null);const z=performance.now(),fe=st,be=Re(),ke=e(),Ce=me=>Q(ge=>Ps(ge,{at:Date.now(),method:be.method.toUpperCase(),path:be.path,inputs:ke,ms:Math.round(performance.now()-z),...me}));try{const me=await fetch(L.url,{method:L.method,headers:L.headers,body:L.body,credentials:"same-origin"}),ge=await me.text();if(Ce({status:me.status}),fe!==st)return;$({status:me.status,statusText:me.statusText,ms:Math.round(performance.now()-z),headers:[...me.headers.entries()],raw:ge,body:Ns(ge.slice(0,tr),me.headers.get("content-type")),truncated:ge.length>tr})}catch(me){if(Ce({error:me instanceof Error?me.message:String(me)}),fe!==st)return;$(null),R(me instanceof Error?me.message:String(me))}finally{fe===st&&x(!1)}}const Y=se(()=>{const L=I();return L?D()==="curl"?Rs(L):qs(L):""});async function Z(){try{await navigator.clipboard.writeText(Y()),T("Copied")}catch{T("Copy failed — select the text instead")}setTimeout(()=>T(null),1500)}function H(){const L=g(),{path:z,name:fe}=f();if(!L||!z.trim()||!fe.trim())return;let be;try{be=JSON.parse(L.raw)}catch{b("The response is not JSON");return}const ke=As(be,z.trim());if(ke===void 0){b(`Nothing at "${z.trim()}"`);return}const Ce=fe.trim(),me=c();h(me.some(ge=>ge.key===Ce)?me.map(ge=>ge.key===Ce?{...ge,value:ke,enabled:!0}:ge):[...me,{key:Ce,value:ke,enabled:!0}]),b(`Saved {{${Ce}}}`)}function ne(L){const z=ae.routes().find(fe=>fe.method.toUpperCase()===L.method&&fe.path===L.path);z&&(it=L.inputs,z===Re()?(it=null,E(L.inputs)):$r(z))}async function W(){const L=Re();if(L){A(null);try{const z=await we.source(L.controller,L.handler);window.location.href=Hs(w().editorUrl,z.file,z.line),A(`${z.relative}:${z.line}`)}catch{A("Source not found under src/")}}}const de=()=>{const L=Re();return L?Kn(L,w()):!1};return o(_,{get when(){return Re()},get fallback(){return Bs()},children:L=>(()=>{var z=la(),fe=z.firstChild,be=fe.firstChild,ke=be.firstChild,Ce=ke.firstChild,me=Ce.firstChild,ge=me.firstChild,xt=ge.nextSibling,Ve=me.nextSibling,ze=Ve.firstChild,bt=ze.firstChild,$t=Ce.nextSibling,Hr=ke.nextSibling.firstChild,Vt=Hr.firstChild,pl=Vt.nextSibling,yt=Hr.nextSibling,Ge=be.nextSibling;return n(ge,()=>L().method.toUpperCase()),n(xt,()=>L().path),ze.$$click=W,n(ze,()=>L().controller,bt),n(ze,()=>L().handler,null),n(Ve,o(_,{get when(){return k()},get children(){return[" · ",le(()=>k())]}}),null),n(Ve,o(_,{get when(){return de()},children:" · public route — default Authorization not sent"}),null),n(Ce,o(_,{get when(){return B()?.summary},get children(){var G=zs();return n(G,()=>B().summary),G}}),null),$t.$$click=ie,n(Vt,()=>L().method.toUpperCase()),n(pl,()=>I()?.url),yt.$$click=P,n(yt,(()=>{var G=le(()=>!!S());return()=>G()?"Sending…":le(()=>!!y())()?`Confirm ${L().method.toUpperCase()}`:"Send"})()),n(be,o(_,{get when(){return le(()=>!!I())()&&en(I()).length>0},get children(){var G=Fs(),J=G.firstChild.nextSibling;return J.nextSibling,n(G,()=>en(I()).map(ee=>`{{${ee}}}`).join(", "),J),G}}),null),n(Ge,o(_,{get when(){return e()},children:G=>[o(_,{get when(){return qt(L().path).length>0},get children(){return o(je,{title:"Path params",open:!0,get children(){var J=jr();return n(J,o(te,{get each(){return qt(L().path)},children:ee=>(()=>{var ce=ca(),oe=ce.firstChild;oe.firstChild;var ue=oe.nextSibling;return n(oe,ee,null),ue.$$input=Me=>E({params:{...G().params,[ee]:Me.currentTarget.value}}),j(ue,Le),N(()=>X(ue,"placeholder",B()?.params[ee])),N(()=>ue.value=G().params[ee]??""),ce})()})),J}})}}),o(je,{title:"Query",get count(){return kt(G().query)},get children(){return[o(St,{get rows(){return G().query},onChange:J=>E({query:J})}),o(_,{get when(){return B()?.query.length},get children(){var J=sa();return n(J,o(te,{get each(){return B().query},children:ee=>(()=>{var ce=ua(),oe=ce.firstChild;return n(oe,()=>ee.name),n(ce,()=>ee.required?" (required)":"",null),n(ce,(()=>{var ue=le(()=>!!ee.description);return()=>ue()?` — ${ee.description}`:""})(),null),ce})()})),J}})]}}),o(je,{title:"Headers",get count(){return kt(G().headers)},get children(){return o(St,{get rows(){return G().headers},onChange:J=>E({headers:J})})}}),o(_,{get when(){return br(L().method)},get children(){return o(je,{title:"Body",open:!0,get children(){return[(()=>{var J=oa();return n(J,o(te,{each:[["raw","Raw"],["form","Form data"]],children:([ee,ce])=>(()=>{var oe=rn();return oe.$$click=()=>E({bodyMode:ee}),n(oe,ce),N(ue=>{var Me=(G().bodyMode??"raw")===ee,De=`px-3 py-1 text-xs font-semibold rounded-lg border transition-colors ${(G().bodyMode??"raw")===ee?"bg-kick-500/20 text-kick-500 border-kick-500/30":"bg-surface-2 text-text-secondary border-border-strong hover:text-text-body"}`;return Me!==ue.e&&X(oe,"aria-pressed",ue.e=Me),De!==ue.t&&j(oe,ue.t=De),ue},{e:void 0,t:void 0}),oe})()}),null),n(J,o(_,{get when(){return le(()=>!!L().upload)()&&L().upload.mode!=="none"},get children(){var ee=aa(),ce=ee.firstChild.nextSibling;return n(ce,()=>L().upload.fieldName??"file"),n(ee,(()=>{var oe=le(()=>L().upload.mode==="array");return()=>oe()?`, up to ${L().upload.maxCount??10} files`:", one file"})(),null),ee}}),null),J})(),o(_,{get when(){return G().bodyMode==="form"},get fallback(){return(()=>{var J=da();return J.$$input=ee=>E({body:ee.currentTarget.value}),j(J,`${Le} font-mono min-h-40`),N(()=>J.value=G().body),J})()},get children(){return[o(qa,{get rows(){return G().form??[]},get multiple(){return L().upload?.mode==="array"},onChange:J=>E({form:J})}),ia()]}})]}})}})]}),null),n(Ge,o(je,{title:"Environment",get count(){return kt(i())+kt(c())},get children(){return[(()=>{var G=Js(),J=G.firstChild,ee=J.nextSibling.firstChild.nextSibling;return J.addEventListener("change",ce=>s(ce.currentTarget.checked)),n(ee,()=>r()?"Default headers and variables are saved in localStorage and survive closing the tab. They may hold tokens — turn this off on a shared machine.":"Default headers and variables are kept for this browser tab only."),N(()=>J.checked=r()),G})(),Ks(),Vs(),o(St,{get rows(){return i()},onChange:u}),Gs(),Ys(),o(St,{get rows(){return c()},onChange:h}),o(_,{get when(){return B()},children:G=>(()=>{var J=fa();return J.$$click=()=>E(tn(e(),G())),j(J,`${Ct} mt-4`),J})()}),Ws(),(()=>{var G=Qs(),J=G.firstChild.firstChild.nextSibling;return J.addEventListener("change",ee=>M({...w(),publicFlag:xr(ee.currentTarget.value)})),j(J,Le),n(G,o(te,{each:[["csrfCookie","CSRF cookie"],["csrfHeader","CSRF header"],["openApiUrl","OpenAPI spec URL"],["editorUrl","Editor link ({file}, {line})"]],children:([ee,ce])=>(()=>{var oe=ha(),ue=oe.firstChild;return n(oe,ce,ue),ue.$$input=Me=>M({...w(),[ee]:Me.currentTarget.value}),j(ue,Le),N(()=>ue.value=w()[ee]),oe})()}),null),N(()=>J.value=xr(w().publicFlag).join(", ")),G})()]}}),null),n(Ge,o(je,{title:"Code snippet",get children(){return[(()=>{var G=Zs(),J=G.firstChild;return n(G,o(te,{each:["curl","fetch"],children:ee=>(()=>{var ce=rn();return ce.$$click=()=>U(ee),n(ce,ee),N(oe=>{var ue=D()===ee,Me=`px-3 py-1 text-xs font-semibold rounded-lg border transition-colors ${D()===ee?"bg-kick-500/20 text-kick-500 border-kick-500/30":"bg-surface-2 text-text-secondary border-border-strong hover:text-text-body"}`;return ue!==oe.e&&X(ce,"aria-pressed",oe.e=ue),Me!==oe.t&&j(ce,oe.t=Me),oe},{e:void 0,t:void 0}),ce})()}),J),J.$$click=Z,j(J,`${Ct} ml-auto`),n(G,o(_,{get when(){return q()},get children(){var ee=Xs();return n(ee,q),ee}}),null),G})(),(()=>{var G=ea();return n(G,Y),G})()]}}),null),n(Ge,o(_,{get when(){return C()},get children(){var G=ta();return G.firstChild,n(G,C,null),G}}),null),n(Ge,o(_,{get when(){return g()},children:G=>o(je,{open:!0,get title(){return(()=>{var J=ba(),ee=J.firstChild.nextSibling,ce=ee.firstChild,oe=ee.nextSibling,ue=oe.firstChild;return n(ee,()=>G().status,ce),n(ee,()=>G().statusText,null),n(oe,()=>G().ms,ue),N(()=>j(ee,gt(G().status))),J})()},get children(){return[(()=>{var J=ga(),ee=J.firstChild,ce=ee.firstChild.nextSibling;ce.nextSibling;var oe=ee.nextSibling.firstChild;return n(ee,()=>G().headers.length,ce),n(oe,o(te,{get each(){return G().headers},children:([ue,Me])=>(()=>{var De=$a(),wt=De.firstChild,Gt=wt.nextSibling;return n(wt,ue),n(Gt,Me),De})()})),J})(),(()=>{var J=ma();return n(J,()=>G().body||"(empty body)"),J})(),(()=>{var J=va(),ee=J.firstChild.nextSibling,ce=ee.nextSibling,oe=ce.nextSibling;return ee.$$input=ue=>p({...f(),path:ue.currentTarget.value}),j(ee,Le),ce.$$input=ue=>p({...f(),name:ue.currentTarget.value}),j(ce,Le),oe.$$click=H,j(oe,Ct),N(()=>ee.value=f().path),N(()=>ce.value=f().name),J})(),o(_,{get when(){return v()},get children(){var J=pa();return n(J,v),J}}),o(_,{get when(){return G().truncated},get children(){var J=xa(),ee=J.firstChild.nextSibling;return ee.nextSibling,n(J,()=>tr.toLocaleString(),ee),J}})]}})}),null),n(Ge,o(je,{title:"History",get count(){return re().length},get children(){return o(_,{get when(){return re().length>0},get fallback(){return ya()},get children(){return[(()=>{var G=ra();return n(G,o(te,{get each(){return re()},children:J=>(()=>{var ee=wa(),ce=ee.firstChild,oe=ce.firstChild,ue=oe.nextSibling,Me=ue.nextSibling,De=Me.nextSibling,wt=De.firstChild,Gt=De.nextSibling;return ce.$$click=()=>ne(J),n(oe,()=>J.method),n(ue,()=>Is(J)),n(Me,()=>J.status??"failed"),n(De,()=>J.ms,wt),n(Gt,()=>new Date(J.at).toLocaleTimeString()),N(lt=>{var Br=`font-bold w-14 shrink-0 ${He(J.method)}`,zr=J.status?gt(J.status):"dt-pill dt-pill-err";return Br!==lt.e&&j(oe,lt.e=Br),zr!==lt.t&&j(Me,lt.t=zr),lt},{e:void 0,t:void 0}),ee})()})),G})(),(()=>{var G=na();return G.$$click=()=>Q([]),j(G,`${Ct} mt-2`),G})()]}})}}),null),N(G=>{var J=`Try ${L().method} ${L().path}`,ee=`text-xs font-bold ${He(L().method)}`,ce=`font-bold ${He(L().method)}`,oe=S(),ue=`shrink-0 px-4 text-sm font-semibold rounded-lg border transition-colors ${y()?"bg-red-500/20 text-red-400 border-red-500/40":"bg-kick-500/20 text-kick-500 border-kick-500/30 hover:bg-kick-500/30"}`;return J!==G.e&&X(fe,"aria-label",G.e=J),ee!==G.t&&j(ge,G.t=ee),ce!==G.a&&j(Vt,G.a=ce),oe!==G.o&&(yt.disabled=G.o=oe),ue!==G.i&&j(yt,G.i=ue),G},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),z})()})},je=e=>(()=>{var t=ka(),r=t.firstChild;r.firstChild;var s=r.nextSibling;return n(r,()=>e.title,null),n(r,o(_,{get when(){return e.count},get children(){var l=_a(),a=l.firstChild.nextSibling;return a.nextSibling,n(l,()=>e.count,a),l}}),null),n(s,()=>e.children),N(()=>t.open=e.open),t})(),qa=e=>{const t=()=>[...e.rows,{key:"",value:"",enabled:!0,type:"text"}],r=(s,l)=>{const a=t().map((i,u)=>u===s?{...i,...l}:i);e.onChange(a.filter(i=>i.key||i.value||i.files?.length))};return(()=>{var s=jr();return n(s,o(Nn,{get each(){return t()},children:(l,a)=>(()=>{var i=Ca(),u=i.firstChild,c=u.nextSibling,h=c.nextSibling;return u.addEventListener("change",f=>r(a,{enabled:f.currentTarget.checked})),c.addEventListener("change",f=>r(a,{type:f.currentTarget.value,value:"",files:[]})),j(c,`${Le} w-24 shrink-0`),h.$$input=f=>r(a,{key:f.currentTarget.value}),j(h,Le),n(i,o(_,{get when(){return l().type==="file"},get fallback(){return(()=>{var f=Ea();return f.$$input=p=>r(a,{value:p.currentTarget.value}),j(f,Le),N(()=>f.value=l().value),f})()},get children(){var f=Sa(),p=f.firstChild;return j(f,`${Le} cursor-pointer truncate`),p.addEventListener("change",v=>r(a,{files:[...v.currentTarget.files??[]]})),n(f,(()=>{var v=le(()=>!!l().files?.length);return()=>v()?l().files.map(b=>b.name).join(", "):"Choose file…"})(),null),N(()=>p.multiple=e.multiple),f}}),null),N(()=>u.checked=l().enabled),N(()=>c.value=l().type),N(()=>h.value=l().key),i})()})),s})()},St=e=>{const t=()=>[...e.rows,{key:"",value:"",enabled:!0}],r=(s,l)=>{const a=t().map((i,u)=>u===s?{...i,...l}:i);e.onChange(a.filter(i=>i.key||i.value))};return(()=>{var s=jr();return n(s,o(Nn,{get each(){return t()},children:(l,a)=>(()=>{var i=Ma(),u=i.firstChild,c=u.nextSibling,h=c.nextSibling;return u.addEventListener("change",f=>r(a,{enabled:f.currentTarget.checked})),c.$$input=f=>r(a,{key:f.currentTarget.value}),j(c,Le),h.$$input=f=>r(a,{value:f.currentTarget.value}),j(h,Le),N(()=>u.checked=l().enabled),N(()=>c.value=l().key),N(()=>h.value=l().value),i})()})),s})()},Le="w-full min-w-0 bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500",Ct="px-3 py-2 text-xs font-semibold rounded-lg border bg-surface-2 text-text-secondary border-border-strong hover:text-text-body";ye(["click","input"]);var Na=d("<div class=dt-split><div class=dt-split-left></div><div class=dt-resizer role=separator aria-orientation=vertical></div><div class=dt-split-right>"),cn=240,un=720,Ke=e=>{const t=`kickjs-devtools-split:${e.storageKey}`,r=(()=>{try{const u=Number(localStorage.getItem(t));if(u>=cn&&u<=un)return u}catch{}return e.defaultLeft??380})(),[s,l]=O(r);let a=null;Se(()=>a?.());const i=u=>{u.preventDefault();const c=u.clientX,h=s();document.body.style.cursor="col-resize";const f=v=>l(Math.min(un,Math.max(cn,h+v.clientX-c))),p=()=>{a?.();try{localStorage.setItem(t,String(s()))}catch{}};a=()=>{document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",p),document.body.style.cursor="",a=null},document.addEventListener("mousemove",f),document.addEventListener("mouseup",p)};return(()=>{var u=Na(),c=u.firstChild,h=c.nextSibling,f=h.nextSibling;return n(c,()=>e.left),h.$$mousedown=i,n(f,()=>e.right),N(p=>Pn(c,`width:${s()}px`,p)),u})()};ye(["mousedown"]);var Pa=d('<div class="flex flex-col gap-1.5 border-b border-border p-2"><input type=text placeholder="Search method or path…"class="w-full bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><div class="flex items-center gap-1 flex-wrap"><span class=flex-1></span><button type=button></button><button type=button>Clear</button></div><div class="text-xs text-text-muted"> requests'),Ia=d('<div class="min-h-0 flex-1 overflow-y-auto">'),Da=d("<button type=button>"),Ua=d("<div class=empty>"),ja=d('<span class="text-red-500 text-[0.66rem]">●'),Ha=d('<button type=button><span></span><span></span><span class="min-w-0 flex-1 truncate font-mono"></span><span class="shrink-0 text-[0.7rem] text-text-muted tabular-nums"></span><span class="w-14 shrink-0 text-right text-[0.66rem] text-text-muted tabular-nums">'),Ba=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">Select a request to see its details'),za=d('<section class="flex h-full min-h-0 flex-col gap-3 overflow-y-auto bg-surface-1 p-4"><div class="flex items-center gap-2"><span></span><span></span><span class="min-w-0 truncate font-mono text-sm text-text-strong"></span></div><dl class="grid grid-cols-[8rem_1fr] gap-x-3 gap-y-1.5 text-[0.8rem]"><dt class=text-text-muted>Route</dt><dd class="m-0 font-mono"></dd><dt class=text-text-muted>Duration</dt><dd class=m-0></dd><dt class=text-text-muted>Time</dt><dd class=m-0></dd><dt class=text-text-muted>Request ID</dt><dd class="m-0 font-mono break-all">'),Fa=d('<div class="rounded-md border border-red-500/40 bg-red-500/10 px-3 py-2 text-sm"><span class="font-semibold text-red-500"></span><span class=text-text-body>: '),Ja=d(`<div><button type=button class="rounded-md border border-kick-500/30 bg-kick-500/20 px-3 py-1 text-xs font-semibold text-kick-500 hover:bg-kick-500/30">Replay in runner</button><p class="mt-1.5 text-xs text-text-muted">Opens the route with these path params. Query, headers and body aren't logged — the runner keeps the ones saved for this route.`),Ka=1500,Va=500,Ga=["ALL","2xx","3xx","4xx","5xx"],wr=null;function Ya(e){wr=e,nt("requests")}var Wa=e=>new Date(e).toLocaleTimeString([],{hour12:!1}),Qa=()=>{const[e,t]=O([]),[r,s]=O(wr);wr=null;const[l,a]=O(""),[i,u]=O("ALL"),[c,h]=O(!1);let f=0,p=!1;const v=async()=>{if(!(c()||p)){p=!0;try{const{requests:x,latest:g}=await we.requests(f);if(g<f){f=0,t([]),s(null);return}if(x.length===0)return;f=x[x.length-1].seq,t($=>[...x.toReversed(),...$].slice(0,Va))}catch{}finally{p=!1}}};Ne(()=>{v();const x=setInterval(()=>{v()},Ka);Se(()=>clearInterval(x))});const b=se(()=>{const x=l().trim().toLowerCase(),g=i();return e().filter($=>(g==="ALL"||Math.floor($.status/100)===Number(g[0]))&&(!x||`${$.method} ${$.path}`.toLowerCase().includes(x)))}),w=se(()=>e().find(x=>x.seq===r())??null),M=x=>x.route===void 0?void 0:ae.routes().find(g=>g.method.toUpperCase()===x.method.toUpperCase()&&g.path===x.route),y=x=>`px-2 py-0.5 text-[0.68rem] font-semibold rounded-md border ${x?"bg-kick-500/20 text-kick-500 border-kick-500/30":"bg-surface-2 text-text-secondary border-border-strong hover:text-text-body"}`,m=[(()=>{var x=Pa(),g=x.firstChild,$=g.nextSibling,C=$.firstChild,R=C.nextSibling,q=R.nextSibling,T=$.nextSibling,D=T.firstChild;return g.$$input=U=>a(U.currentTarget.value),n($,o(te,{each:Ga,children:U=>(()=>{var re=Da();return re.$$click=()=>u(U),n(re,U),N(Q=>{var k=i()===U,A=y(i()===U);return k!==Q.e&&X(re,"aria-pressed",Q.e=k),A!==Q.t&&j(re,Q.t=A),Q},{e:void 0,t:void 0}),re})()}),C),R.$$click=()=>h(U=>!U),n(R,()=>c()?"Paused":"Pause"),q.$$click=()=>{t([]),s(null)},n(T,o(_,{get when(){return l()||i()!=="ALL"},get children(){return[le(()=>b().length)," matched · "]}}),D),n(T,()=>e().length,D),N(U=>{var re=c(),Q=y(c()),k=y(!1);return re!==U.e&&X(R,"aria-pressed",U.e=re),Q!==U.t&&j(R,U.t=Q),k!==U.a&&j(q,U.a=k),U},{e:void 0,t:void 0,a:void 0}),N(()=>g.value=l()),x})(),(()=>{var x=Ia();return n(x,o(_,{get when(){return b().length>0},get fallback(){return(()=>{var g=Ua();return n(g,()=>e().length?"No requests match":"No requests yet — call the app"),g})()},get children(){return o(te,{get each(){return b()},children:g=>(()=>{var $=Ha(),C=$.firstChild,R=C.nextSibling,q=R.nextSibling,T=q.nextSibling,D=T.nextSibling;return $.$$click=()=>s(g.seq),n(C,()=>g.status),n(R,()=>g.method),n(q,()=>g.path),n($,o(_,{get when(){return g.error},get children(){var U=ja();return N(()=>X(U,"title",g.error.message)),U}}),T),n(T,()=>$e(g.durationMs)),n(D,()=>Wa(g.at)),N(U=>{var re=`flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 px-2.5 py-1 text-left text-[0.78rem] text-text-body ${r()===g.seq?"bg-accent/12 shadow-[inset_2px_0_0_0_var(--color-accent)]":"bg-transparent hover:bg-surface-hover"}`,Q=`${gt(g.status)} w-10 shrink-0 text-center`,k=`w-[3.4rem] shrink-0 font-mono text-[0.68rem] font-bold ${He(g.method)}`;return re!==U.e&&j($,U.e=re),Q!==U.t&&j(C,U.t=Q),k!==U.a&&j(R,U.a=k),U},{e:void 0,t:void 0,a:void 0}),$})()})}})),x})()],S=o(_,{get when(){return w()},get fallback(){return Ba()},children:x=>(()=>{var g=za(),$=g.firstChild,C=$.firstChild,R=C.nextSibling,q=R.nextSibling,T=$.nextSibling,D=T.firstChild.nextSibling,U=D.nextSibling.nextSibling,re=U.nextSibling.nextSibling,Q=re.nextSibling.nextSibling;return n(C,()=>x().status),n(R,()=>x().method),n(q,()=>x().path),n(g,o(_,{get when(){return x().error},children:k=>(()=>{var A=Fa(),K=A.firstChild,V=K.nextSibling;return V.firstChild,n(K,()=>k().name),n(V,()=>k().message,null),A})()}),T),n(D,()=>x().route??"no route matched"),n(U,()=>$e(x().durationMs)),n(re,()=>new Date(x().at).toLocaleString()),n(Q,()=>x().requestId??"—"),n(g,o(_,{get when(){return M(x())},children:k=>(()=>{var A=Ja(),K=A.firstChild;return K.$$click=()=>Kt(k(),Cs(k().path,x().path)),A})()}),null),N(k=>{var A=gt(x().status),K=`font-mono text-sm font-bold ${He(x().method)}`;return A!==k.e&&j(C,k.e=A),K!==k.t&&j(R,k.t=K),k},{e:void 0,t:void 0}),g})()});return o(Ke,{storageKey:"requests",left:m,right:S})};ye(["input","click"]);var Xa=d('<div class="flex flex-col gap-4"><div class="grid grid-cols-2 gap-3 lg:grid-cols-4"></div><div class="grid grid-cols-1 gap-4 lg:grid-cols-[2fr_1fr]"><section class="rounded-xl border border-border bg-surface-1"><header class="flex items-center justify-between border-b border-border px-4 py-2.5"><h2 class="text-xs font-semibold uppercase tracking-wider text-text-muted">Recent failures</h2><button type=button class="text-xs text-text-muted hover:text-text-strong">All requests →</button></header></section><section class="rounded-xl border border-border bg-surface-1 px-4 py-3 text-[0.8rem]"><h2 class="mb-2 text-xs font-semibold uppercase tracking-wider text-text-muted">App'),Za=d('<div class="flex flex-col items-center gap-2 px-4 py-8 text-sm text-text-muted">'),eo=d('<button type=button class="rounded-md border border-kick-500/30 bg-kick-500/20 px-3 py-1 text-xs font-semibold text-kick-500 hover:bg-kick-500/30">Try a route'),to=d('<button type=button class="flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 bg-transparent px-4 py-1.5 text-left text-[0.78rem] text-text-body last:border-b-0 hover:bg-surface-hover"><span></span><span></span><span class="min-w-0 shrink truncate font-mono"></span><span class="min-w-0 flex-1 truncate text-xs text-red-500"></span><span class="shrink-0 text-[0.66rem] text-text-muted tabular-nums">'),ro=d('<p class="italic text-text-muted">Loading…'),no=d("<span>"),lo=d('<h3 class="mt-3 mb-1 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">Adapters'),so=d('<span class="text-xs text-amber-500">'),ao=d('<div class="flex items-center gap-2 py-0.5"><span aria-hidden=true></span><span class="min-w-0 flex-1 truncate text-text-secondary">'),oo=d('<div class="flex flex-col rounded-xl border border-border bg-surface-1 px-4 pt-3 pb-2"><span class="text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted"></span><span></span><span class="text-xs text-text-muted"></span><div class="mt-1 h-8 [&amp;_svg]:block [&amp;_svg]:h-full [&amp;_svg]:w-full">'),io=d('<div class="flex items-center justify-between py-0.5"><span class=text-text-secondary></span><span class="font-medium tabular-nums">'),co=2e3,uo=()=>{const[e,t]=O([]),[r,s]=O(null);let l=0,a=!1;const i=async()=>{if(!a){a=!0;try{const[h,f]=await Promise.allSettled([we.requests(l),we.runtime()]);if(h.status==="fulfilled"){if(h.value.latest<l){l=0,t([]);return}const p=h.value.requests;p.length&&(l=p[p.length-1].seq,t(v=>[...v,...p].slice(-200)))}s(f.status==="fulfilled"?f.value.history.map(p=>p.memory.heapUsed):null)}finally{a=!1}}};Ne(()=>{i();const h=setInterval(()=>{i()},co);Se(()=>clearInterval(h))});const u=se(()=>vr(e().map(h=>h.durationMs),95)),c=se(()=>e().filter(h=>h.status>=500||h.error).toReversed().slice(0,6));return(()=>{var h=Xa(),f=h.firstChild,p=f.nextSibling.firstChild,v=p.firstChild.firstChild.nextSibling,b=p.nextSibling;return b.firstChild,n(f,o(at,{label:"Requests",get value(){return ae.metrics()?.requests.toLocaleString()??"—"},get hint(){return`${fo(Qt(Zr()))} in the last minute`},get series(){return Qt(Zr())}}),null),n(f,o(at,{label:"Server errors",get value(){return ae.metrics()?.serverErrors.toLocaleString()??"—"},get hint(){return[le(()=>Ht(ae.metrics()?.errorRate??0))," error rate",o(Pe,{metric:"error-rate"})]},get series(){return Qt(ds())},stroke:"#ef4444",get tone(){return ae.metrics()?.serverErrors?"err":void 0}}),null),n(f,o(at,{label:"Latency p95",get value(){return le(()=>u()===void 0)()?"—":$e(u())},get hint(){return`over the last ${e().length} requests`},get series(){return e().slice(-60).map(w=>w.durationMs)}}),null),n(f,o(_,{get when(){return r()},get fallback(){return o(at,{label:"Uptime",get value(){return le(()=>!!ae.health())()?pr(ae.health().uptime):"—"},hint:"runtime sampler is off"})},children:w=>o(at,{label:"Heap used",get value(){return le(()=>!!w().length)()?et(w()[w().length-1]):"—"},hint:"sampled every second",get series(){return w()}})}),null),v.$$click=()=>nt("requests"),n(p,o(_,{get when(){return c().length>0},get fallback(){return(()=>{var w=Za();return n(w,o(_,{get when(){return e().length>0},get fallback(){return["No requests yet.",(()=>{var M=eo();return M.$$click=()=>nt("routes"),M})()]},get children(){return["No failures in the last ",le(()=>e().length)," requests."]}})),w})()},get children(){return o(te,{get each(){return c()},children:w=>(()=>{var M=to(),y=M.firstChild,m=y.nextSibling,S=m.nextSibling,x=S.nextSibling,g=x.nextSibling;return M.$$click=()=>Ya(w.seq),n(y,()=>w.status),n(m,()=>w.method),n(S,()=>w.path),n(x,(()=>{var $=le(()=>!!w.error);return()=>$()?`${w.error.name}: ${w.error.message}`:""})()),n(g,()=>new Date(w.at).toLocaleTimeString([],{hour12:!1})),N($=>{var C=`${gt(w.status)} w-10 shrink-0 text-center`,R=`w-[3.4rem] shrink-0 font-mono text-[0.68rem] font-bold ${He(w.method)}`;return C!==$.e&&j(y,$.e=C),R!==$.t&&j(m,$.t=R),$},{e:void 0,t:void 0}),M})()})}}),null),n(b,o(_,{get when(){return ae.health()},get fallback(){return ro()},children:w=>[o(Et,{label:"Status",get children(){var M=no();return n(M,()=>w().status),N(()=>j(M,`badge ${ho(w().status)}`)),M}}),o(Et,{label:"Uptime",get children(){return pr(w().uptime)}}),o(_,{get when(){return ae.metrics()},children:M=>o(Et,{label:"Started",get children(){return new Date(M().startedAt).toLocaleTimeString()}})}),o(_,{get when(){return ae.ws().enabled},get children(){return o(Et,{label:"WebSocket",get children(){return[le(()=>ae.ws().activeConnections??0)," open ·"," ",le(()=>(ae.ws().messagesReceived??0)+(ae.ws().messagesSent??0))," msgs"]}})}}),o(_,{get when(){return Object.keys(w().adapters).length>0},get children(){return[lo(),o(te,{get each(){return Object.entries(w().adapters)},children:([M,y])=>(()=>{var m=ao(),S=m.firstChild,x=S.nextSibling;return X(m,"title",y),j(S,`h-2 w-2 shrink-0 rounded-full ${y==="running"?"bg-emerald-500":"bg-amber-500"}`),n(x,M),n(m,o(_,{when:y!=="running",get children(){var g=so();return n(g,y),g}}),null),m})()})]}})]}),null),h})()},at=e=>(()=>{var t=oo(),r=t.firstChild,s=r.nextSibling,l=s.nextSibling,a=l.nextSibling;return n(r,()=>e.label),n(s,()=>e.value),n(l,()=>e.hint),n(a,o(_,{get when(){return(e.series?.length??0)>1},get children(){return o(ms,{get values(){return e.series},get stroke(){return e.stroke}})}})),N(()=>j(s,`mt-0.5 text-xl font-semibold tabular-nums ${e.tone==="err"?"text-red-500":"text-text-strong"}`)),t})(),Et=e=>(()=>{var t=io(),r=t.firstChild,s=r.nextSibling;return n(r,()=>e.label),n(s,()=>e.children),t})(),fo=e=>e.reduce((t,r)=>t+r,0);function ho(e){return e==="healthy"?"badge-ok":e==="degraded"?"badge-warn":"badge-critical"}ye(["click"]);var go=d('<section class="flex flex-col rounded-xl border border-border bg-surface-1 px-4 pt-3 pb-2"><header class="flex items-baseline gap-2"><h3 class="text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted"></h3><span class=flex-1></span></header><div class="relative mt-1"><svg viewBox="0 0 300 80"preserveAspectRatio=none class="block h-20 w-full"><line x1=0 x2=300 y1=79.5 y2=79.5 stroke=var(--color-border)></line></svg><span class="pointer-events-none absolute top-0 left-0 text-[0.6rem] text-text-muted tabular-nums"></span></div><div class="flex justify-between text-[0.6rem] text-text-muted"><span></span><span>now'),mo=d('<span class="inline-block h-0.5 w-2.5 rounded">'),vo=d('<span class="flex items-center gap-1 text-xs text-text-muted"><span>'),po=d("<svg><line y1=74 y2=80 stroke=var(--color-text-muted) vector-effect=non-scaling-stroke></svg>",!1,!0,!1),xo=d("<svg><path fill=none stroke-width=1.5 stroke-linejoin=round vector-effect=non-scaling-stroke></svg>",!1,!0,!1),bo=300,$o=80,Mt=e=>{const t=se(()=>Math.max(0,...e.series.map(c=>c.values.length))),r=se(()=>e.max??(Math.max(0,...e.series.flatMap(c=>[...c.values]))*1.1||1)),s=c=>t()>1?c/(t()-1)*bo:0,l=c=>$o-Math.min(c,r())/r()*78-1,a=c=>c.map((h,f)=>`${f?"L":"M"}${s(f).toFixed(1)} ${l(h).toFixed(1)}`).join(" "),i=(c,h)=>c.color??(h===0?"var(--color-accent)":"var(--color-text-muted)"),u=c=>c.values[c.values.length-1];return(()=>{var c=go(),h=c.firstChild,f=h.firstChild,p=f.nextSibling,v=h.nextSibling,b=v.firstChild;b.firstChild;var w=b.nextSibling,M=v.nextSibling.firstChild;return n(f,()=>e.title),n(h,()=>e.info,p),n(h,o(te,{get each(){return e.series},children:(y,m)=>o(_,{get when(){return u(y)!==void 0},get children(){var S=vo(),x=S.firstChild;return n(S,o(_,{get when(){return e.series.length>1},get children(){return[(()=>{var g=mo();return N($=>Ie(g,"background",i(y,m()))),g})(),le(()=>y.label)]}}),x),n(x,()=>e.format(u(y))),N(()=>j(x,`tabular-nums ${m()===0?"text-base font-semibold text-text-strong":""}`)),S}})}),null),n(b,o(te,{get each(){return e.marks??[]},children:y=>(()=>{var m=po();return N(S=>{var x=s(y),g=s(y);return x!==S.e&&X(m,"x1",S.e=x),g!==S.t&&X(m,"x2",S.t=g),S},{e:void 0,t:void 0}),m})()}),null),n(b,o(te,{get each(){return e.series.map((y,m)=>({s:y,i:m})).toReversed()},children:({s:y,i:m})=>(()=>{var S=xo();return N(x=>{var g=a(y.values),$=i(y,m);return g!==x.e&&X(S,"d",x.e=g),$!==x.t&&X(S,"stroke",x.t=$),x},{e:void 0,t:void 0}),S})()}),null),n(w,()=>e.format(r())),n(M,(()=>{var y=le(()=>t()>1);return()=>y()?`${t()}s ago`:""})()),c})()},yo=d('<div class="flex flex-col gap-4"><header class="flex flex-wrap items-center gap-2 text-xs"><span class=flex-1></span></header><div class="grid grid-cols-1 gap-3 lg:grid-cols-2"></div><p class="-mt-2 text-[0.66rem] text-text-muted">Ticks under the event-loop chart mark garbage collections. CPU is a percentage of one core.'),wo=d('<div class=dt-panel-grid><div class="card max-w-md text-sm text-text-secondary">The runtime sampler is off. Remove <code>runtime: { enabled: false }</code> from <code>DevToolsAdapter(...)</code> to see process metrics here.'),_o=d('<span class="dt-tone dt-tone-gray">Node '),ko=d('<span class="dt-tone dt-tone-gray">/'),So=d('<span class="dt-tone dt-tone-gray">pid '),Co=d('<span class="dt-tone dt-tone-blue">'),Eo=d("<span class=text-text-muted>up <!> · <!> GCs, <!> paused"),Mo=d('<div class="mt-2 flex flex-wrap gap-1.5">'),To=d('<p class="mt-2 text-xs text-text-muted">Growth is judged once the process has run past its startup — about 50 seconds.'),Ao=d('<section class="rounded-xl border border-border bg-surface-1 px-4 py-3"><header class="mb-2 flex items-center gap-2"><h3 class="text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">Memory health</h3><span></span></header><dl class="grid grid-cols-2 gap-x-6 gap-y-1 text-[0.8rem] md:grid-cols-4">'),Lo=d('<span class="dt-tone dt-tone-gray font-mono"> '),Oo=d('<div><dt class="text-xs text-text-muted"></dt><dd class="m-0 font-semibold tabular-nums">'),el=d('<span class="max-w-80 truncate text-text-muted">'),Ro=d('<button type=button class="rounded-md border border-border-strong bg-surface-2 px-2.5 py-1 text-xs text-text-secondary hover:text-text-strong disabled:opacity-50"title="Blocks the event loop for a few seconds — avoid in production">'),qo=d('<button type=button class="rounded-md border border-border-strong bg-surface-2 px-2.5 py-1 text-xs text-text-secondary hover:text-text-strong disabled:opacity-50"title="Needs node --expose-gc">'),No=()=>{const[e,t]=O([]),[r,s]=O(null),[l,a]=O(null),[i,u]=O(!1),c=b=>{t(w=>[...w,...b].slice(-60))};Ne(()=>{we.runtime().then(w=>{a(w.process??null),s(w.health),c(w.history)}).catch(()=>u(!0));const b=Fn("/memory/stream",w=>{c([w.snapshot]),s(w.health)},()=>{});Se(b)});const h=se(()=>e()[e().length-1]),f=b=>e().map(b),p=se(()=>e().map((b,w,M)=>{const y=w?b.timestamp-M[w-1].timestamp:1e3;return(b.cpu.userMicros+b.cpu.systemMicros)/1e3/Math.max(1,y)*100})),v=se(()=>e().flatMap((b,w,M)=>w&&b.gc.count>M[w-1].gc.count?[w]:[]));return o(_,{get when(){return!i()},get fallback(){return wo()},get children(){var b=yo(),w=b.firstChild,M=w.firstChild,y=w.nextSibling;return y.nextSibling,n(w,o(_,{get when(){return l()},children:m=>[o(_,{get when(){return m().runtime},children:S=>(()=>{var x=Co();return n(x,()=>S().name),x})()}),(()=>{var S=_o();return S.firstChild,n(S,()=>m().nodeVersion,null),S})(),(()=>{var S=ko(),x=S.firstChild;return n(S,()=>m().platform,x),n(S,()=>m().arch,null),S})(),(()=>{var S=So();return S.firstChild,n(S,()=>m().pid,null),S})()]}),M),n(w,o(_,{get when(){return h()},children:m=>(()=>{var S=Eo(),x=S.firstChild.nextSibling,g=x.nextSibling.nextSibling,$=g.nextSibling.nextSibling;return $.nextSibling,n(S,()=>pr(m().uptimeSec),x),n(S,()=>m().gc.count,g),n(S,()=>$e(m().gc.totalPauseMs),$),S})()}),M),n(w,o(Po,{}),null),n(w,o(Io,{}),null),n(y,o(Mt,{title:"Heap",get info(){return o(Pe,{metric:"heap.used"})},format:et,get series(){return[{label:"used",values:f(m=>m.memory.heapUsed)},{label:"total",values:f(m=>m.memory.heapTotal)}]}}),null),n(y,o(Mt,{title:"Process memory",get info(){return o(Pe,{metric:"rss"})},format:et,get series(){return[{label:"RSS",values:f(m=>m.memory.rss)},{label:"external",values:f(m=>m.memory.external)}]}}),null),n(y,o(Mt,{title:"Event loop delay",get info(){return o(Pe,{metric:"event-loop.p99"})},format:$e,get marks(){return v()},get series(){return[{label:"p99",values:f(m=>m.eventLoop.p99)},{label:"p50",values:f(m=>m.eventLoop.p50)}]}}),null),n(y,o(Mt,{title:"CPU",format:m=>`${m.toFixed(m<10?1:0)}%`,get max(){return Math.max(100,...p())},get series(){return[{label:"CPU",values:p()}]}}),null),n(b,o(_,{get when(){return r()},children:m=>(()=>{var S=Ao(),x=S.firstChild,g=x.firstChild.nextSibling,$=x.nextSibling;return n(x,o(Pe,{metric:"leak.risk"}),g),n(g,(()=>{var C=le(()=>!!m().sampling);return()=>C()?"sampling":m().heapGrowthSeverity})()),n($,o(Tt,{label:"Heap growth",get children(){return le(()=>!!m().sampling)()?"measuring…":`${et(m().heapGrowthBytesPerSec*60)}/min`}}),null),n($,o(Tt,{label:"GC reclaim",metric:"gc.reclaim",get children(){return le(()=>!!m().sampling)()?"—":Ht(m().gcReclaimRatio)}}),null),n($,o(Tt,{label:"Heap of limit",metric:"heap.utilization",get children(){return Ht(m().heapUtilization)}}),null),n($,o(Tt,{label:"Open handles",get children(){return m().activeHandles}}),null),n(S,o(_,{get when(){return Object.keys(m().handlesByType).length>0},get children(){var C=Mo();return n(C,o(te,{get each(){return Object.entries(m().handlesByType).toSorted((R,q)=>q[1]-R[1])},children:([R,q])=>(()=>{var T=Lo(),D=T.firstChild;return n(T,R,D),n(T,q,null),T})()})),C}}),null),n(S,o(_,{get when(){return m().sampling},get children(){return To()}}),null),N(()=>j(g,m().sampling?tt("idle"):tt(m().heapGrowthSeverity==="ok"?"ok":m().heapGrowthSeverity==="warn"?"warn":"err"))),S})()}),null),b}})},Tt=e=>(()=>{var t=Oo(),r=t.firstChild,s=r.nextSibling;return n(r,()=>e.label,null),n(r,o(_,{get when(){return e.metric},get children(){return o(Pe,{get metric(){return e.metric}})}}),null),n(s,()=>e.children),t})(),Po=()=>{const[e,t]=O(null),[r,s]=O(!1),l=async()=>{s(!0),t(null);try{const a=await Ir("/memory/snapshot"),i=await a.blob(),u=/filename="?([^";]+)"?/.exec(a.headers.get("content-disposition")??"")?.[1]??`kickjs-heap-${Date.now()}.heapsnapshot`,c=URL.createObjectURL(i);Object.assign(document.createElement("a"),{href:c,download:u}).click(),URL.revokeObjectURL(c),t(`Saved ${u} (${et(i.size)})`)}catch(a){t(a instanceof Error?a.message:String(a))}finally{s(!1)}};return[o(_,{get when(){return e()},get children(){var a=el();return n(a,e),N(()=>X(a,"title",e())),a}}),(()=>{var a=Ro();return a.$$click=()=>{l()},n(a,()=>r()?"Capturing…":"Heap snapshot"),N(()=>a.disabled=r()),a})()]},Io=()=>{const[e,t]=O(null),[r,s]=O(!1),l=async()=>{s(!0),t(null);try{const a=await(await Ir("/memory/gc")).json();t(`GC freed ${et(a.reclaimedBytes)} in ${a.elapsedMs}ms`)}catch(a){t(a instanceof Error?a.message:String(a))}finally{s(!1)}};return[o(_,{get when(){return e()},get children(){var a=el();return n(a,e),N(()=>X(a,"title",e())),a}}),(()=>{var a=qo();return a.$$click=()=>{l()},n(a,()=>r()?"Collecting…":"Run GC"),N(()=>a.disabled=r()),a})()]};ye(["click"]);var Do=d('<div class="flex flex-wrap gap-1">'),Uo=d('<span class="text-xs text-text-muted">None'),jo=d('<button type=button class="rounded border border-border-strong bg-surface-2 px-2 py-0.5 font-mono text-xs text-text-body hover:border-kick-500 hover:text-kick-500">'),Ho=d('<div class="p-4 text-sm text-text-muted"> is no longer registered.'),Bo=d("<dt class=text-text-muted>First"),dn=d("<dd class=m-0>"),zo=d("<dt class=text-text-muted>Last"),Fo=d("<dt class=text-text-muted>Took "),Jo=d('<dd class="m-0 tabular-nums">'),Ko=d('<dl class="grid grid-cols-[9rem_1fr] gap-y-1"><dt class=text-text-muted>Resolves </dt><dd class="m-0 tabular-nums"></dd><dt class=text-text-muted>@PostConstruct </dt><dd class=m-0><span>'),Vo=d('<section class="flex flex-col gap-4 p-4 text-[0.8rem]"><header><h2 class="m-0 break-all font-mono text-base text-text-strong"></h2><div class="mt-1.5 flex flex-wrap gap-1.5"><span></span><span class="dt-tone dt-tone-gray"></span><span>'),Go=d('<div><h3 class="mb-1.5 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">'),_r=null;function tl(e){_r=e,nt("container")}function Yo(){const e=_r;return _r=null,e}function Bt(e){return e.postConstructStatus==="failed"?{label:"failed",tone:tt("err")}:e.instantiated?{label:"active",tone:tt("ok")}:{label:"registered",tone:tt("idle")}}var rl=e=>{const t=se(()=>ae.container().find(l=>l.token===e.token)),r=se(()=>ae.container().filter(l=>l.dependencies?.includes(e.token)).map(l=>l.token)),s=l=>o(_,{get when(){return l.length},get fallback(){return Uo()},get children(){var a=Do();return n(a,o(te,{each:l,children:i=>(()=>{var u=jo();return u.$$click=()=>e.onSelect(i),n(u,i),u})()})),a}});return o(_,{get when(){return t()},get fallback(){return(()=>{var l=Ho(),a=l.firstChild;return n(l,()=>e.token,a),l})()},children:l=>(()=>{var a=Vo(),i=a.firstChild.firstChild,u=i.nextSibling.firstChild,c=u.nextSibling,h=c.nextSibling;return n(i,()=>l().token),n(u,()=>l().kind??"unknown"),n(c,()=>l().scope??"singleton"),n(h,()=>Bt(l()).label),n(a,o(rr,{get title(){return`Depends on (${l().dependencies?.length??0})`},get children(){return s(l().dependencies??[])}}),null),n(a,o(rr,{get title(){return`Used by (${r().length})`},get children(){return s(r())}}),null),n(a,o(rr,{title:"Resolution",get children(){var f=Ko(),p=f.firstChild;p.firstChild;var v=p.nextSibling,b=v.nextSibling;b.firstChild;var w=b.nextSibling.firstChild;return n(p,o(Pe,{metric:"resolve.count"}),null),n(v,()=>l().resolveCount??0),n(f,o(_,{get when(){return l().firstResolvedAt},get children(){return[Bo(),(()=>{var M=dn();return n(M,()=>new Date(l().firstResolvedAt).toLocaleTimeString()),M})()]}}),b),n(f,o(_,{get when(){return l().lastResolvedAt},get children(){return[zo(),(()=>{var M=dn();return n(M,()=>new Date(l().lastResolvedAt).toLocaleTimeString()),M})()]}}),b),n(f,o(_,{get when(){return l().resolveDurationMs!=null},get children(){return[(()=>{var M=Fo();return M.firstChild,n(M,o(Pe,{metric:"resolve.duration"}),null),M})(),(()=>{var M=Jo();return n(M,()=>$e(l().resolveDurationMs)),M})()]}}),b),n(b,o(Pe,{metric:"post-construct"}),null),n(w,()=>l().postConstructStatus??"none"),N(()=>j(w,tt(l().postConstructStatus==="failed"?"err":l().postConstructStatus==="done"?"ok":"idle"))),f}}),null),N(f=>{var p=Dr(l().kind),v=Bt(l()).tone;return p!==f.e&&j(u,f.e=p),v!==f.t&&j(h,f.t=v),f},{e:void 0,t:void 0}),a})()})},rr=e=>(()=>{var t=Go(),r=t.firstChild;return n(r,()=>e.title),n(t,()=>e.children,null),t})();ye(["click"]);var Wo=d('<div class="card text-sm text-red-500">'),Qo=d('<div class="rounded-md border border-red-500/40 bg-red-500/10 px-3 py-2 text-sm">'),Xo=d('<div class="flex flex-col gap-3"><div class="flex items-center gap-3 text-xs text-text-muted"><span class=flex-1></span><button type=button class="rounded-md border border-border-strong bg-surface-2 px-2.5 py-1 text-xs text-text-secondary hover:text-text-strong">Refresh'),Zo=d("<span> plugins · <!> adapters · <!> contributors · updated "),ei=d('<div><span class="font-semibold text-red-500"> (<!>) introspect() failed:</span> '),ti=d("<div class=empty>Loading topology…"),ri=d('<div class="grid grid-cols-1 items-start gap-3 lg:grid-cols-3">'),ni=d('<section class="flex flex-col gap-2"><h2 class="text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted"> <span class=font-normal>(<!>)'),li=d('<div class="rounded-lg border border-dashed border-border px-3 py-2 text-xs text-text-muted">'),si=d('<span class="dt-tone dt-tone-gray">v'),ai=d('<div class="mt-1.5 flex flex-wrap gap-x-3 gap-y-0.5">'),oi=d('<dl class="mt-1.5 grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5">'),ii=d('<p class="mt-1 text-xs text-text-muted">Reports nothing — it has no introspect().'),ci=d('<article><header class="flex items-center gap-2"><span class="h-1.5 w-1.5 rounded-full bg-emerald-500"aria-hidden=true></span><span class="min-w-0 flex-1 truncate font-mono font-semibold text-text-strong">'),ui=d('<span class=text-text-muted> <span class="font-semibold text-text-body tabular-nums">'),di=d("<dt class=text-text-muted>"),fi=d('<dd class="m-0 truncate font-mono">'),hi=d('<div class="mt-1.5 flex flex-wrap items-center gap-1"><span class="w-14 text-[0.66rem] text-text-muted">'),gi=d('<button type=button title="Open in Container">'),mi=d('<div class="mt-1 flex flex-wrap items-center gap-1 text-[0.68rem] text-text-muted">after'),vi=d('<article><div class="flex items-center gap-2"><span class="min-w-0 flex-1 truncate font-mono font-semibold">ctx.</span><span class="dt-tone dt-tone-gray">'),pi=d("<span>"),xi=()=>{const[e,t]=O(null),[r,s]=O(null),[l,a]=O(null),i=async()=>{try{t(await we.topology()),s(null)}catch(c){s(c instanceof Error?c.message:String(c))}};Ne(()=>{i();const c=setInterval(()=>{i()},5e3);Se(()=>clearInterval(c))});const u=(c,h)=>!!h&&(!!c.tokens?.provides.includes(h)||!!c.tokens?.requires.includes(h));return(()=>{var c=Xo(),h=c.firstChild,f=h.firstChild,p=f.nextSibling;return n(h,o(_,{get when(){return e()},children:v=>(()=>{var b=Zo(),w=b.firstChild,M=w.nextSibling,y=M.nextSibling.nextSibling;return y.nextSibling,n(b,()=>v().plugins.length,w),n(b,()=>v().adapters.length,M),n(b,()=>v().contributors.length,y),n(b,()=>Ur(v().timestamp),null),b})()}),f),p.$$click=()=>{i()},n(c,o(_,{get when(){return r()},get children(){var v=Wo();return n(v,r),v}}),null),n(c,o(_,{get when(){return e()?.errors.length},get children(){var v=Qo();return n(v,o(te,{get each(){return e().errors},children:b=>(()=>{var w=ei(),M=w.firstChild,y=M.firstChild,m=y.nextSibling;return m.nextSibling,M.nextSibling,n(M,()=>b.name,y),n(M,()=>b.kind,m),n(w,()=>b.message,null),w})()})),v}}),null),n(c,o(_,{get when(){return e()},get fallback(){return ti()},children:v=>(()=>{var b=ri();return n(b,o(nr,{title:"Plugins",get count(){return v().plugins.length},empty:"No plugins — definePlugin(...) adds one.",get children(){return o(te,{get each(){return v().plugins},children:w=>o(fn,{p:w,get lit(){return u(w,l())},get hover(){return l()},onHover:a})})}}),null),n(b,o(nr,{title:"Adapters",get count(){return v().adapters.length},empty:"No adapters registered.",get children(){return o(te,{get each(){return v().adapters},children:w=>o(fn,{p:w,get lit(){return u(w,l())},get hover(){return l()},onHover:a})})}}),null),n(b,o(nr,{title:"Contributors",get count(){return v().contributors.length},empty:"No context contributors — defineContextDecorator(...) adds one.",get children(){return o(te,{get each(){return v().contributors},children:w=>o(bi,{c:w,get hover(){return l()},onHover:a})})}}),null),b})()}),null),c})()},nr=e=>(()=>{var t=ni(),r=t.firstChild,s=r.firstChild,l=s.nextSibling,a=l.firstChild.nextSibling;return a.nextSibling,n(r,()=>e.title,s),n(l,()=>e.count,a),n(t,o(_,{get when(){return e.count>0},get fallback(){return(()=>{var i=li();return n(i,()=>e.empty),i})()},get children(){return e.children}}),null),t})(),fn=e=>{const t=se(()=>Object.entries(e.p.state??{})),r=se(()=>Object.entries(e.p.metrics??{})),s=()=>t().length+r().length+(e.p.tokens?.provides.length??0)+(e.p.tokens?.requires.length??0)>0;return(()=>{var l=ci(),a=l.firstChild,i=a.firstChild.nextSibling;return n(i,()=>e.p.name),n(a,o(_,{get when(){return e.p.version},get children(){var u=si();return u.firstChild,n(u,()=>e.p.version,null),u}}),null),n(l,o(_,{get when(){return r().length},get children(){var u=ai();return n(u,o(te,{get each(){return r()},children:([c,h])=>(()=>{var f=ui(),p=f.firstChild,v=p.nextSibling;return n(f,c,p),n(v,()=>h.toLocaleString()),f})()})),u}}),null),n(l,o(_,{get when(){return t().length},get children(){var u=oi();return n(u,o(te,{get each(){return t()},children:([c,h])=>[(()=>{var f=di();return n(f,c),f})(),(()=>{var f=fi();return n(f,()=>typeof h=="string"?h:JSON.stringify(h)),N(()=>X(f,"title",JSON.stringify(h))),f})()]})),u}}),null),n(l,o(hn,{label:"provides",get tokens(){return e.p.tokens?.provides??[]},get hover(){return e.hover},get onHover(){return e.onHover}}),null),n(l,o(hn,{label:"requires",get tokens(){return e.p.tokens?.requires??[]},get hover(){return e.hover},get onHover(){return e.onHover}}),null),n(l,o(_,{get when(){return!s()},get children(){return ii()}}),null),N(()=>j(l,`rounded-lg border bg-surface-1 px-3 py-2 text-[0.78rem] transition-colors ${e.lit?"border-kick-500 shadow-[0_0_0_1px_var(--color-accent)]":"border-border"}`)),l})()},hn=e=>o(_,{get when(){return e.tokens.length},get children(){var t=hi(),r=t.firstChild;return n(r,()=>e.label),n(t,o(te,{get each(){return e.tokens},children:s=>(()=>{var l=gi();return l.$$click=()=>tl(s),l.addEventListener("mouseleave",()=>e.onHover(null)),l.addEventListener("mouseenter",()=>e.onHover(s)),n(l,s),N(()=>j(l,`rounded border px-1.5 font-mono text-[0.68rem] ${e.hover===s?"border-kick-500 text-kick-500":"border-border-strong text-text-secondary hover:text-text-strong"}`)),l})()}),null),t}}),bi=e=>(()=>{var t=vi(),r=t.firstChild.firstChild;r.firstChild;var s=r.nextSibling;return t.addEventListener("mouseleave",()=>e.onHover(null)),t.addEventListener("mouseenter",()=>e.onHover(e.c.key)),n(r,()=>e.c.key,null),n(s,()=>e.c.source),n(t,o(_,{get when(){return e.c.dependsOn.length},get children(){var l=mi();return l.firstChild,n(l,o(te,{get each(){return e.c.dependsOn},children:a=>(()=>{var i=pi();return n(i,a),N(()=>j(i,`rounded border px-1.5 font-mono ${e.hover===a?"border-kick-500 text-kick-500":"border-border-strong"}`)),i})()}),null),l}}),null),N(()=>j(t,`rounded-lg border bg-surface-1 px-3 py-1.5 text-[0.78rem] ${e.hover===e.c.key?"border-kick-500":"border-border"}`)),t})();ye(["click"]);var $i=d('<div class="flex flex-col gap-1.5 border-b border-border p-2"><input type=text placeholder="Search path, controller, handler…"class="w-full bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><div class="flex items-center gap-1 flex-wrap"></div><div class="text-xs text-text-muted"> routes'),yi=d('<div class="min-h-0 flex-1 overflow-y-auto">'),wi=d("<button type=button>"),_i=d("<div class=empty>"),ki=d('<div class="sticky top-0 z-1 border-b border-border bg-surface-2 px-2.5 py-1 text-[0.66rem] font-bold uppercase tracking-wide text-text-muted"> <span class=font-normal>(<!>)'),Si=d('<button type=button><span></span><span class="min-w-0 flex-1 truncate font-mono">'),Ci=d('<span class="max-w-[40%] truncate text-[0.66rem] text-text-muted">'),Ei=["ALL","GET","POST","PUT","PATCH","DELETE"];function Mi(e){return Object.entries(e??{}).map(([t,r])=>r===!0?t:`${t}=${JSON.stringify(r)}`).join(", ")}var Ti=()=>{const[e,t]=O(""),[r,s]=O("ALL"),l=se(()=>{const c=e().trim().toLowerCase();return ae.routes().filter(h=>(r()==="ALL"||h.method.toUpperCase()===r())&&(!c||h.path.toLowerCase().includes(c)||h.controller.toLowerCase().includes(c)||h.handler.toLowerCase().includes(c)))}),a=se(()=>{const c=new Map;for(const h of l()){const f=c.get(h.controller)??[];f.push(h),c.set(h.controller,f)}return[...c]}),i=c=>{const h=Re();return!!h&&h.method===c.method&&h.path===c.path},u=[(()=>{var c=$i(),h=c.firstChild,f=h.nextSibling,p=f.nextSibling,v=p.firstChild;return h.$$input=b=>t(b.currentTarget.value),n(f,o(te,{each:Ei,children:b=>(()=>{var w=wi();return w.$$click=()=>s(b),n(w,b),N(M=>{var y=r()===b,m=`px-2 py-0.5 text-[0.68rem] font-semibold rounded-md border ${r()===b?"bg-kick-500/20 text-kick-500 border-kick-500/30":"bg-surface-2 text-text-secondary border-border-strong hover:text-text-body"}`;return y!==M.e&&X(w,"aria-pressed",M.e=y),m!==M.t&&j(w,M.t=m),M},{e:void 0,t:void 0}),w})()})),n(p,o(_,{get when(){return e()||r()!=="ALL"},get children(){return[le(()=>l().length)," matched · "]}}),v),n(p,()=>ae.routes().length,v),N(()=>h.value=e()),c})(),(()=>{var c=yi();return n(c,o(_,{get when(){return a().length>0},get fallback(){return(()=>{var h=_i();return n(h,()=>ae.routes().length?"No routes match":"No routes registered"),h})()},get children(){return o(te,{get each(){return a()},children:([h,f])=>[(()=>{var p=ki(),v=p.firstChild,b=v.nextSibling,w=b.firstChild.nextSibling;return w.nextSibling,n(p,h,v),n(b,()=>f.length,w),p})(),o(te,{each:f,children:p=>(()=>{var v=Si(),b=v.firstChild,w=b.nextSibling;return v.$$click=()=>Kt(p),n(b,()=>p.method),n(w,()=>p.path),n(v,o(_,{get when(){return Mi(p.flags)},children:M=>(()=>{var y=Ci();return n(y,M),y})()}),null),N(M=>{var y=`flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 px-2.5 py-1 text-left text-[0.78rem] text-text-body ${i(p)?"bg-accent/12 shadow-[inset_2px_0_0_0_var(--color-accent)]":"bg-transparent hover:bg-surface-hover"}`,m=`${p.controller}.${p.handler}${p.middleware.length?` · middleware: ${p.middleware.join(", ")}`:""}`,S=`w-[3.4rem] shrink-0 font-mono text-[0.68rem] font-bold ${He(p.method)}`;return y!==M.e&&j(v,M.e=y),m!==M.t&&X(v,"title",M.t=m),S!==M.a&&j(b,M.a=S),M},{e:void 0,t:void 0,a:void 0}),v})()})]})}})),c})()];return o(Ke,{storageKey:"routes",left:u,get right(){return o(Ra,{})}})};ye(["input","click"]);var Ai=d('<th><button type=button class="inline-flex items-center gap-1 text-text-muted hover:text-text-strong"><span aria-hidden=true>');function nl(e,t=!0){const[r,s]=O(e),[l,a]=O(t);return{key:r,desc:l,toggle:c=>{c===r()?a(h=>!h):(s(()=>c),a(!0))},apply:(c,h)=>c.toSorted((f,p)=>{const v=h(f,r()),b=h(p,r()),w=typeof v=="number"&&typeof b=="number"?v-b:String(v).localeCompare(String(b));return l()?-w:w}),set:s}}var ll=e=>(()=>{var t=Ai(),r=t.firstChild,s=r.firstChild;return Lr(r,"click",e.onClick,!0),n(r,()=>e.label,s),n(s,()=>e.desc?"↓":"↑"),N(l=>{var a=`px-2 py-1.5 font-semibold ${e.align==="left"?"text-left":"text-right"}`,i=e.active?"opacity-70":"opacity-0";return a!==l.e&&j(t,l.e=a),i!==l.t&&j(s,l.t=i),l},{e:void 0,t:void 0}),t})();ye(["click"]);var Li=d('<div class="card text-sm text-red-500">'),Oi=d('<div class="overflow-hidden rounded-xl border border-border bg-surface-1"><table class="w-full border-collapse text-[0.8rem]"><thead class="border-b border-border text-xs"><tr></tr></thead><tbody>'),Ri=d(`<p class="text-[0.66rem] text-text-muted">Percentiles cover each route's last 1,000 calls. Durations turn amber above 200 ms, orange above 500 ms, red above 1 s.`),qi=d('<div class="flex flex-col gap-3"><div class="flex flex-wrap items-center gap-2"><input type=text placeholder="Filter routes…"class="w-64 bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><div class="flex overflow-hidden rounded-md border border-border-strong text-xs"></div><span class=flex-1></span><span class="text-xs text-text-muted"> routes'),Ni=d("<button type=button>"),Pi=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">'),Ii=d('<tr class="cursor-pointer border-b border-dashed border-transparent hover:border-border hover:bg-surface-hover"><td class="px-2 py-1.5"><span class="flex items-center gap-2"><span></span><span class="truncate font-mono"></span></span></td><td class="px-2 py-1.5 text-right tabular-nums"></td><td></td><td>'),Di=d('<tr class="border-b border-border bg-surface-2/50"><td colspan=7 class="px-4 py-3">'),Ui=d('<span class="h-1.5 w-16 overflow-hidden rounded-full bg-border/60"><span class="block h-full rounded-full bg-kick-500/70">'),ji=d('<td class="px-2 py-1.5 text-right tabular-nums"><span class="inline-flex items-center justify-end gap-2"><span>'),Hi=d('<div class="flex flex-wrap items-end gap-8"><div><div class="mb-1 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">Latency (ms)</div><div class="flex h-16 items-end gap-1"></div></div><div class=text-xs><div class="mb-1 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">Outcomes</div><div class="flex gap-2"><span class="dt-pill dt-pill-ok"> ok</span><span class="dt-pill dt-pill-warn"> 4xx</span><span class="dt-pill dt-pill-err"> 5xx</span></div><div class="mt-2 text-text-muted">min <!> · avg '),Bi=d('<div class="flex w-7 flex-col items-center gap-0.5"><div class="w-full rounded-sm bg-kick-500/60"></div><span class="text-[0.58rem] text-text-muted tabular-nums">'),zi=d('<button type=button class="rounded-md border border-kick-500/30 bg-kick-500/20 px-3 py-1 text-xs font-semibold text-kick-500 hover:bg-kick-500/30">Try in runner'),gn=["p50","p95","p99"],Fi=()=>{const[e,t]=O(null),[r,s]=O(null),[l,a]=O(""),[i,u]=O("p95"),[c,h]=O(null),f=nl("p95"),p=async()=>{try{t(await we.metrics()),s(null)}catch(y){s(y instanceof Error?y.message:String(y))}};Ne(()=>{p();const y=setInterval(()=>{p()},2e3);Se(()=>clearInterval(y))});const v=se(()=>{const y=l().trim().toLowerCase(),m=Object.entries(e()?.routeLatency??{}).map(([x,g])=>{const $=x.indexOf(" ");return{...g,key:x,method:x.slice(0,$),path:x.slice($+1),errorShare:g.count?g.serverErrors/g.count:0}}),S=y?m.filter(x=>x.key.toLowerCase().includes(y)):m;return f.apply(S,(x,g)=>g==="route"?x.path:g==="errors"?x.errorShare:x[g])}),b=se(()=>Math.max(1,...v().map(y=>y[i()]))),w=y=>{u(y),f.set(y)},M=(y,m,S="right")=>o(ll,{label:m,align:S,get active(){return f.key()===y},get desc(){return f.desc()},onClick:()=>f.toggle(y)});return(()=>{var y=qi(),m=y.firstChild,S=m.firstChild,x=S.nextSibling,g=x.nextSibling,$=g.nextSibling,C=$.firstChild;return S.$$input=R=>a(R.currentTarget.value),n(x,o(te,{each:gn,children:R=>(()=>{var q=Ni();return q.$$click=()=>w(R),n(q,R),N(T=>{var D=i()===R,U=`px-2.5 py-1 font-semibold ${i()===R?"bg-kick-500/20 text-kick-500":"bg-surface-2 text-text-secondary hover:text-text-body"}`;return D!==T.e&&X(q,"aria-pressed",T.e=D),U!==T.t&&j(q,T.t=U),T},{e:void 0,t:void 0}),q})()})),n(m,o(Pe,{get metric(){return`latency.${i()}`}}),g),n($,()=>v().length,C),n(y,o(_,{get when(){return r()},get children(){var R=Li();return n(R,r),R}}),null),n(y,o(_,{get when(){return v().length>0},get fallback(){return(()=>{var R=Pi(),q=R.firstChild;return n(q,()=>l()?"No routes match":"No requests yet — latency appears per route once the app is called."),R})()},get children(){return[(()=>{var R=Oi(),q=R.firstChild.firstChild,T=q.firstChild,D=q.nextSibling;return n(T,()=>M("route","Route","left"),null),n(T,()=>M("count","Calls"),null),n(T,()=>M("errors","5xx"),null),n(T,()=>M("p50","p50"),null),n(T,()=>M("p95","p95"),null),n(T,()=>M("p99","p99"),null),n(T,()=>M("maxMs","Max"),null),n(D,o(te,{get each(){return v()},children:U=>[(()=>{var re=Ii(),Q=re.firstChild,k=Q.firstChild.firstChild,A=k.nextSibling,K=Q.nextSibling,V=K.nextSibling,B=V.nextSibling;return re.$$click=()=>h(I=>I===U.key?null:U.key),n(k,()=>U.method),n(A,()=>U.path),n(K,()=>U.count.toLocaleString()),n(V,(()=>{var I=le(()=>!!U.serverErrors);return()=>I()?Ht(U.errorShare):"—"})()),n(re,o(te,{each:gn,children:I=>(()=>{var ie=ji(),E=ie.firstChild,P=E.firstChild;return n(E,o(_,{get when(){return I===i()},get children(){var Y=Ui(),Z=Y.firstChild;return N(H=>Ie(Z,"width",`${U[I]/b()*100}%`)),Y}}),P),n(P,()=>$e(U[I])),N(()=>j(P,`min-w-14 ${ut(U[I])}`)),ie})()}),B),n(B,()=>$e(U.maxMs)),N(I=>{var ie=`w-[3.4rem] shrink-0 font-mono text-[0.68rem] font-bold ${He(U.method)}`,E=`px-2 py-1.5 text-right tabular-nums ${U.serverErrors?"text-red-500":"text-text-muted"}`,P=`${U.serverErrors} server errors, ${U.clientErrors} client errors`,Y=`px-2 py-1.5 text-right tabular-nums ${ut(U.maxMs)}`;return ie!==I.e&&j(k,I.e=ie),E!==I.t&&j(V,I.t=E),P!==I.a&&X(V,"title",I.a=P),Y!==I.o&&j(B,I.o=Y),I},{e:void 0,t:void 0,a:void 0,o:void 0}),re})(),o(_,{get when(){return c()===U.key},get children(){var re=Di(),Q=re.firstChild;return n(Q,o(Ji,{row:U,get buckets(){return e()?.latencyBucketsMs??[]}})),re}})]})),R})(),Ri()]}}),null),N(()=>S.value=l()),y})()},Ji=e=>{const t=()=>Math.max(1,...e.row.histogram),r=a=>a<e.buckets.length?`≤${e.buckets[a]}`:`>${e.buckets[e.buckets.length-1]}`,s=()=>ae.routes().find(a=>a.method.toUpperCase()===e.row.method&&a.path===e.row.path),l=()=>e.row.count-e.row.serverErrors-e.row.clientErrors;return(()=>{var a=Hi(),i=a.firstChild,u=i.firstChild.nextSibling,c=i.nextSibling.firstChild.nextSibling,h=c.firstChild,f=h.firstChild,p=h.nextSibling,v=p.firstChild,b=p.nextSibling,w=b.firstChild,M=c.nextSibling,y=M.firstChild.nextSibling;return y.nextSibling,n(u,o(te,{get each(){return e.row.histogram},children:(m,S)=>(()=>{var x=Bi(),g=x.firstChild,$=g.nextSibling;return n($,()=>r(S())),N(C=>{var R=`${m} calls ${r(S())} ms`,q=`${Math.max(m?2:0,m/t()*48)}px`;return R!==C.e&&X(x,"title",C.e=R),q!==C.t&&Ie(g,"height",C.t=q),C},{e:void 0,t:void 0}),x})()})),n(h,l,f),n(p,()=>e.row.clientErrors,v),n(b,()=>e.row.serverErrors,w),n(M,()=>$e(Number.isFinite(e.row.minMs)?e.row.minMs:0),y),n(M,()=>$e(e.row.count?e.row.totalMs/e.row.count:0),null),n(a,o(_,{get when(){return s()},children:m=>(()=>{var S=zi();return S.$$click=()=>Kt(m()),S})()}),null),a})()};ye(["input","click"]);var Ki=d('<button type=button> <span class="font-normal opacity-70">'),Vi=d('<div class="flex flex-col gap-1.5 border-b border-border p-2"><input type=text placeholder="Search tokens…"class="w-full bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><div class="flex flex-wrap items-center gap-1"><span class="mx-1 h-4 w-px bg-border"></span></div><div class="text-xs text-text-muted"> tokens'),Gi=d('<div class="min-h-0 flex-1 overflow-y-auto">'),Yi=d("<div class=empty>"),Wi=d('<span class="dt-tone dt-tone-gray">'),Qi=d('<button type=button><span></span><span class="min-w-0 flex-1 truncate font-mono"></span><span></span><span class="w-10 shrink-0 text-right text-[0.7rem] text-text-muted tabular-nums">×</span><span class="w-14 shrink-0 text-right text-[0.66rem] text-text-muted">'),Xi=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">Select a token to see its dependencies'),Zi=d('<div class="h-full overflow-y-auto bg-surface-1">'),sl=["controller","service","repository"],At=e=>sl.includes(e.kind??"")?e.kind:"other",ec=()=>{const[e,t]=O(""),[r,s]=O(null),[l,a]=O(null),[i,u]=O(Yo()),c=se(()=>{const y=e().trim().toLowerCase();return ae.container().filter(m=>!y||m.token.toLowerCase().includes(y))}),h=(y,m)=>{const S=new Map;for(const x of m)S.set(y(x),(S.get(y(x))??0)+1);return S},f=se(()=>h(At,c().filter(y=>!l()||(y.scope??"singleton")===l()))),p=se(()=>h(y=>y.scope??"singleton",c().filter(y=>!r()||At(y)===r()))),v=se(()=>c().filter(y=>(!r()||At(y)===r())&&(!l()||(y.scope??"singleton")===l())).toSorted((y,m)=>(m.resolveCount??0)-(y.resolveCount??0)||y.token.localeCompare(m.token))),b=(y,m,S,x)=>(()=>{var g=Ki(),$=g.firstChild,C=$.nextSibling;return Lr(g,"click",x,!0),X(g,"aria-pressed",S),j(g,`rounded-md border px-2 py-0.5 text-[0.68rem] font-semibold ${S?"border-kick-500/30 bg-kick-500/20 text-kick-500":"border-border-strong bg-surface-2 text-text-secondary hover:text-text-body"}`),n(g,y,$),n(C,m??0),g})(),w=[(()=>{var y=Vi(),m=y.firstChild,S=m.nextSibling,x=S.firstChild,g=S.nextSibling,$=g.firstChild;return m.$$input=C=>t(C.currentTarget.value),n(S,o(te,{get each(){return[...sl,"other"]},children:C=>b(C,f().get(C),r()===C,()=>s(R=>R===C?null:C))}),x),n(S,o(te,{each:["singleton","transient","request"],children:C=>b(C,p().get(C),l()===C,()=>a(R=>R===C?null:C))}),null),n(g,o(_,{get when(){return v().length!==ae.container().length},get children(){return[le(()=>v().length)," matched · "]}}),$),n(g,()=>ae.container().length,$),N(()=>m.value=e()),y})(),(()=>{var y=Gi();return n(y,o(_,{get when(){return v().length>0},get fallback(){return(()=>{var m=Yi();return n(m,()=>ae.container().length?"No tokens match":"Nothing registered yet"),m})()},get children(){return o(te,{get each(){return v()},children:m=>(()=>{var S=Qi(),x=S.firstChild,g=x.nextSibling,$=g.nextSibling,C=$.nextSibling,R=C.firstChild,q=C.nextSibling;return S.$$click=()=>u(m.token),n(g,()=>m.token),n($,()=>At(m)),n(S,o(_,{get when(){return(m.scope??"singleton")!=="singleton"},get children(){var T=Wi();return n(T,()=>m.scope),T}}),C),n(C,()=>m.resolveCount??0,R),n(q,(()=>{var T=le(()=>!!m.lastResolvedAt);return()=>T()?Ur(m.lastResolvedAt):"—"})()),N(T=>{var D=`flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 px-2.5 py-1 text-left text-[0.78rem] text-text-body ${i()===m.token?"bg-accent/12 shadow-[inset_2px_0_0_0_var(--color-accent)]":"bg-transparent hover:bg-surface-hover"}`,U=`h-1.5 w-1.5 shrink-0 rounded-full ${Bt(m).label==="failed"?"bg-red-500":m.instantiated?"bg-emerald-500":"bg-border-strong"}`,re=Bt(m).label,Q=Dr(m.kind);return D!==T.e&&j(S,T.e=D),U!==T.t&&j(x,T.t=U),re!==T.a&&X(x,"title",T.a=re),Q!==T.o&&j($,T.o=Q),T},{e:void 0,t:void 0,a:void 0,o:void 0}),S})()})}})),y})()],M=o(_,{get when(){return i()},get fallback(){return Xi()},children:y=>(()=>{var m=Zi();return n(m,o(rl,{get token(){return y()},onSelect:u})),m})()});return o(Ke,{storageKey:"container",left:w,right:M})};ye(["click","input"]);var tc=d("<button type=button>Retry all failed"),Lt=d("<button type=button>"),rc=d('<span class="text-xs text-text-muted">'),nc=d('<div class="flex flex-wrap items-center gap-1.5">'),lc=d('<div class="flex flex-col gap-2 border-b border-border p-2"><div class="flex flex-wrap gap-1">'),sc=d('<div class="p-4 text-sm text-text-muted">'),ac=d('<button type=button class="w-full py-2 text-xs text-text-muted hover:text-text-strong">Load 50 more'),oc=d('<div class="min-h-0 flex-1 overflow-y-auto">'),ic=d('<span class="font-normal text-text-muted">paused'),cc=d('<span class="rounded bg-red-500/15 px-1 text-red-500">'),uc=d('<div class="flex flex-wrap items-center gap-x-3 gap-y-1 text-xs">'),dc=d("<button type=button> <span>"),fc=d("<div class=empty>No <!> jobs"),hc=d('<span class="shrink-0 text-[0.68rem] text-text-muted tabular-nums"title=attempts>'),gc=d('<button type=button><span class="w-16 shrink-0 truncate font-mono text-[0.68rem] text-text-muted">#</span><span class="w-32 shrink-0 truncate font-mono font-semibold"></span><span class="min-w-0 flex-1 truncate text-[0.72rem] text-red-500"></span><span class="w-14 shrink-0 text-right text-[0.66rem] text-text-muted">'),mc=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">'),vc=d("<button type=button>Retry"),pc=d("<dt class=text-text-muted>Created"),lr=d("<dd class=m-0>"),xc=d("<dt class=text-text-muted>Ran for"),bc=d("<dt class=text-text-muted>Delay"),$c=d('<div class="rounded-md border border-red-500/40 bg-red-500/10 px-3 py-2 text-red-500">'),yc=d('<section class="flex h-full flex-col gap-3 overflow-y-auto bg-surface-1 p-4 text-[0.8rem]"><header class="flex flex-wrap items-center gap-2"><h2 class="m-0 font-mono text-base text-text-strong"></h2><span></span><span class="font-mono text-xs text-text-muted">#</span><span class=flex-1></span></header><dl class="grid grid-cols-[7rem_1fr] gap-y-1 text-xs"><dt class=text-text-muted>Attempts</dt><dd class="m-0 tabular-nums">'),wc=d('<pre class="m-0 mb-1.5 max-h-48 overflow-auto rounded-md border border-border bg-surface-2 p-2 font-mono text-[0.68rem]">'),_c=d('<div class=dt-panel-grid><div class="card max-w-lg text-sm text-text-secondary">'),kc=d('<p class="m-0 mb-2 font-semibold text-text-strong">No job tool is connected'),Sc=d("<p class=m-0>Add <code>QueueAdapter</code> from <code>@forinda/kickjs-queue</code> to browse BullMQ jobs here — retry failures, remove jobs, pause a queue. Any other job tool can show up too by exposing <code>jobInspector()</code> from its adapter."),Cc=d('<pre class="m-0 max-h-72 overflow-auto rounded-md border border-border bg-surface-2 p-3 font-mono text-xs">'),Ec=d('<div><h3 class="mb-1.5 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">'),Mc=["failed","active","waiting","delayed","completed","paused"],sr=50,mn={failed:"text-red-500",active:"text-blue-500",waiting:"text-text-secondary",delayed:"text-amber-500",completed:"text-emerald-500",paused:"text-text-muted"},Tc=()=>{const[e,t]=O(null),[r,s]=O(null),[l,a]=O(null),[i,u]=O("failed"),[c,h]=O([]),[f,p]=O(null),[v,b]=O(sr),[w,M]=O(null),[y,m]=O(null),[S,x]=O(null),[g,$]=O(!1),[C,R]=O(null),q=se(()=>e()?.find(E=>E.source===l()?.source)),T=se(()=>q()?.queues.find(E=>E.name===l()?.queue)),D=E=>!!q()?.actions.includes(E),U=async()=>{try{const{sources:E}=await we.jobs();if(t(E),s(null),!l()){const P=E.find(Y=>Y.queues.length);P&&a({source:P.source,queue:P.queues[0].name})}}catch(E){s(E instanceof Error?E.message:String(E))}},re=async()=>{const E=l();if(E)try{const{jobs:P}=await we.jobList({...E,state:i(),start:0,end:v()-1});h(P),p(null)}catch(P){h([]),p(P instanceof Error?P.message:String(P))}},Q=async()=>{const E=l(),P=w();if(!E||!P){m(null);return}try{m(await we.job({...E,id:P}))}catch{m(null)}},k=async()=>{await U(),await Promise.all([re(),Q()])};Ne(()=>{k();const E=setInterval(()=>{k()},3e3);Se(()=>clearInterval(E))});const A=(E,P=i())=>{a(E),u(P),b(sr),M(null),m(null),re()},K=E=>{M(E),Q()},V=async(E,P={})=>{const Y=l();if(!Y)return;const Z=`${E}:${P.id??P.state??""}`;if(P.confirm&&C()!==Z){R(Z);return}R(null),$(!0),x(null);try{const H=await we.jobAction({...Y,action:E,id:P.id,state:P.state});x(E==="clean"?`Removed ${H.count??0} ${P.state} jobs`:E==="remove"?"Job removed":E==="retry"?"Job queued to run again":E==="retryAll"?"Failed jobs queued to run again":E==="pause"?"Queue paused":"Queue resumed"),(E==="remove"||E==="retry")&&M(null),await k()}catch(H){x(H instanceof Error?H.message:String(H))}finally{$(!1)}},B=(E=!1)=>`rounded-md border px-2 py-0.5 text-xs disabled:opacity-50 ${E?"border-red-500/40 text-red-500 hover:bg-red-500/10":"border-border-strong bg-surface-2 text-text-secondary hover:text-text-strong"}`,I=[(()=>{var E=lc(),P=E.firstChild;return n(P,o(te,{get each(){return e()??[]},children:Y=>o(te,{get each(){return Y.queues},children:Z=>{const H=()=>l()?.source===Y.source&&l()?.queue===Z.name;return(()=>{var ne=Lt();return ne.$$click=()=>A({source:Y.source,queue:Z.name},"failed"),n(ne,()=>Z.name,null),n(ne,o(_,{get when(){return Z.paused},get children(){return ic()}}),null),n(ne,o(_,{get when(){return Z.counts.failed},get children(){var W=cc();return n(W,()=>Z.counts.failed),W}}),null),N(W=>{var de=(e()?.length??0)>1?Y.source:void 0,L=`flex items-center gap-1.5 rounded-md border px-2 py-0.5 text-xs font-semibold ${H()?"border-kick-500/30 bg-kick-500/20 text-kick-500":"border-border-strong bg-surface-2 text-text-secondary hover:text-text-body"}`;return de!==W.e&&X(ne,"title",W.e=de),L!==W.t&&j(ne,W.t=L),W},{e:void 0,t:void 0}),ne})()}})})),n(E,o(_,{get when(){return T()},children:Y=>(()=>{var Z=uc();return n(Z,o(te,{each:Mc,children:H=>(()=>{var ne=dc(),W=ne.firstChild,de=W.nextSibling;return ne.$$click=()=>A(l(),H),n(ne,H,W),n(de,()=>Y().counts[H]??"–"),N(L=>{var z=`border-b-2 pb-0.5 ${i()===H?"border-kick-500 font-semibold text-text-strong":"border-transparent text-text-muted hover:text-text-body"}`,fe=`tabular-nums ${Y().counts[H]?mn[H]:""}`;return z!==L.e&&j(ne,L.e=z),fe!==L.t&&j(de,L.t=fe),L},{e:void 0,t:void 0}),ne})()})),Z})()}),null),n(E,o(_,{get when(){return T()},get children(){var Y=nc();return n(Y,o(_,{get when(){return le(()=>!!(D("retryAll")&&i()==="failed"))()&&T().counts.failed},get children(){var Z=tc();return Z.$$click=()=>{V("retryAll")},N(H=>{var ne=B(),W=g();return ne!==H.e&&j(Z,H.e=ne),W!==H.t&&(Z.disabled=H.t=W),H},{e:void 0,t:void 0}),Z}}),null),n(Y,o(_,{get when(){return le(()=>!!D("clean"))()&&c().length>0},get children(){var Z=Lt();return Z.addEventListener("blur",()=>R(null)),Z.$$click=()=>{V("clean",{state:i(),confirm:!0})},n(Z,(()=>{var H=le(()=>C()===`clean:${i()}`);return()=>H()?`Confirm: delete all ${i()}`:`Clean ${i()}`})()),N(H=>{var ne=B(!0),W=g();return ne!==H.e&&j(Z,H.e=ne),W!==H.t&&(Z.disabled=H.t=W),H},{e:void 0,t:void 0}),Z}}),null),n(Y,o(_,{get when(){return D(T().paused?"resume":"pause")},get children(){var Z=Lt();return Z.$$click=()=>{V(T().paused?"resume":"pause")},n(Z,()=>T().paused?"Resume queue":"Pause queue"),N(H=>{var ne=B(),W=g();return ne!==H.e&&j(Z,H.e=ne),W!==H.t&&(Z.disabled=H.t=W),H},{e:void 0,t:void 0}),Z}}),null),n(Y,o(_,{get when(){return S()},get children(){var Z=rc();return n(Z,S),Z}}),null),Y}}),null),E})(),(()=>{var E=oc();return n(E,o(_,{get when(){return f()},get children(){var P=sc();return n(P,f),P}}),null),n(E,o(_,{get when(){return c().length>0},get fallback(){return o(_,{get when(){return le(()=>!!T())()&&!f()},get children(){var P=fc(),Y=P.firstChild.nextSibling;return Y.nextSibling,n(P,i,Y),P}})},get children(){return[o(te,{get each(){return c()},children:P=>(()=>{var Y=gc(),Z=Y.firstChild;Z.firstChild;var H=Z.nextSibling,ne=H.nextSibling,W=ne.nextSibling;return Y.$$click=()=>K(P.id),n(Z,()=>P.id,null),n(H,()=>P.name),n(ne,()=>P.failedReason??""),n(Y,o(_,{get when(){return P.attempts>1||P.maxAttempts},get children(){var de=hc();return n(de,()=>P.attempts,null),n(de,(()=>{var L=le(()=>!!P.maxAttempts);return()=>L()?`/${P.maxAttempts}`:""})(),null),de}}),W),n(W,(()=>{var de=le(()=>!!(P.finishedAt??P.createdAt));return()=>de()?Ur(P.finishedAt??P.createdAt):""})()),N(()=>j(Y,`flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 px-2.5 py-1 text-left text-[0.76rem] text-text-body ${w()===P.id?"bg-accent/12 shadow-[inset_2px_0_0_0_var(--color-accent)]":"bg-transparent hover:bg-surface-hover"}`)),Y})()}),o(_,{get when(){return c().length>=v()},get children(){var P=ac();return P.$$click=()=>{b(Y=>Y+sr),re()},P}})]}}),null),E})()],ie=o(_,{get when(){return y()},get fallback(){return(()=>{var E=mc(),P=E.firstChild;return n(P,()=>w()?"Loading…":"Select a job to see its data and errors"),E})()},children:E=>(()=>{var P=yc(),Y=P.firstChild,Z=Y.firstChild,H=Z.nextSibling,ne=H.nextSibling;ne.firstChild,ne.nextSibling;var W=Y.nextSibling,de=W.firstChild.nextSibling;return n(Z,()=>E().name),n(H,()=>E().state),n(ne,()=>E().id,null),n(Y,o(_,{get when(){return le(()=>!!D("retry"))()&&E().state==="failed"},get children(){var L=vc();return L.$$click=()=>{V("retry",{id:E().id})},N(z=>{var fe=B(),be=g();return fe!==z.e&&j(L,z.e=fe),be!==z.t&&(L.disabled=z.t=be),z},{e:void 0,t:void 0}),L}}),null),n(Y,o(_,{get when(){return D("remove")},get children(){var L=Lt();return L.addEventListener("blur",()=>R(null)),L.$$click=()=>{V("remove",{id:E().id,confirm:!0})},n(L,()=>C()===`remove:${E().id}`?"Confirm remove":"Remove"),N(z=>{var fe=B(!0),be=g();return fe!==z.e&&j(L,z.e=fe),be!==z.t&&(L.disabled=z.t=be),z},{e:void 0,t:void 0}),L}}),null),n(de,()=>E().attempts,null),n(de,(()=>{var L=le(()=>!!E().maxAttempts);return()=>L()?` of ${E().maxAttempts}`:""})(),null),n(W,o(_,{get when(){return E().createdAt},get children(){return[pc(),(()=>{var L=lr();return n(L,()=>new Date(E().createdAt).toLocaleString()),L})()]}}),null),n(W,o(_,{get when(){return le(()=>!!E().processedAt)()&&E().finishedAt},get children(){return[xc(),(()=>{var L=lr();return n(L,()=>$e(E().finishedAt-E().processedAt)),L})()]}}),null),n(W,o(_,{get when(){return E().delayMs},get children(){return[bc(),(()=>{var L=lr();return n(L,()=>$e(E().delayMs)),L})()]}}),null),n(P,o(_,{get when(){return E().failedReason},get children(){var L=$c();return n(L,()=>E().failedReason),L}}),null),n(P,o(ar,{title:"Data",get children(){return vn(E().data)}}),null),n(P,o(_,{get when(){return le(()=>E().result!==void 0)()&&E().result!==null},get children(){return o(ar,{title:"Result",get children(){return vn(E().result)}})}}),null),n(P,o(_,{get when(){return E().stacktrace?.length},get children(){return o(ar,{get title(){return`Stack traces (${E().stacktrace.length})`},get children(){return o(te,{get each(){return E().stacktrace.toReversed()},children:L=>(()=>{var z=wc();return n(z,L),z})()})}})}}),null),N(()=>j(H,`text-xs font-semibold ${mn[E().state]}`)),P})()});return o(_,{get when(){return le(()=>!!e())()&&e().length>0},get fallback(){return(()=>{var E=_c(),P=E.firstChild;return n(P,o(_,{get when(){return r()},get fallback(){return e()?Ac:"Loading…"},get children(){return r()}})),E})()},get children(){return o(Ke,{storageKey:"queues",left:I,right:ie,defaultLeft:560})}})},Ac=[kc(),Sc()];function vn(e){let t;try{t=JSON.stringify(e,null,2)??String(e)}catch{t=String(e)}return(()=>{var r=Cc();return n(r,t),r})()}var ar=e=>(()=>{var t=Ec(),r=t.firstChild;return n(r,()=>e.title),n(t,()=>e.children,null),t})();ye(["click"]);function Lc(){let e=new Map,t=new Set;return{on:(r,s)=>{let l=e.get(r);return l||(l=new Set,e.set(r,l)),l.add(s),()=>{let a=e.get(r);a?.delete(s),a&&a.size===0&&e.delete(r)}},onAny:r=>(t.add(r),()=>{t.delete(r)}),dispatch:r=>{let s=e.get(r.type);if(s&&s.size>0)for(let l of[...s])try{l(r.payload)}catch(a){console.error(`[kick:devtools-bus] handler for "${r.type}" threw`,a)}if(t.size>0)for(let l of[...t])try{l(r)}catch(a){console.error("[kick:devtools-bus] onAny handler threw",a)}}}}function Oc(e={}){let t=Lc(),r=e.channel===!1?null:e.channel??"kick-devtools",s=r!=null&&typeof BroadcastChannel<"u"?new BroadcastChannel(r):null;s?.addEventListener("message",v=>{let b=v.data;b&&typeof b.type=="string"&&typeof b.ts=="number"&&t.dispatch({...b,__kick_origin:"broadcast"})});let l=null,a=0,i=null,u=e.reconnectMs??500,c=e.reconnectMaxMs??5e3,h=()=>{e.wsUrl&&(typeof WebSocket>"u"||(!l||l.readyState!==WebSocket.OPEN&&l.readyState!==WebSocket.CONNECTING)&&(l=new WebSocket(e.wsUrl),l.addEventListener("open",()=>{a=0}),l.addEventListener("message",v=>{try{let b=JSON.parse(String(v.data));if(!b||typeof b.type!="string"||typeof b.ts!="number")return;t.dispatch({...b,__kick_origin:"ws"})}catch{}}),l.addEventListener("close",()=>{l=null,f()}),l.addEventListener("error",()=>{f()})))},f=()=>{if(!e.wsUrl||i!=null)return;a+=1;let v=Math.min(a*u,c);i=setTimeout(()=>{i=null,h()},v)},p=v=>{s?.postMessage(v),l&&l.readyState===WebSocket.OPEN?l.send(JSON.stringify(v)):e.wsUrl&&h()};return{on(v,b){return h(),t.on(v,b)},onAny(v){return h(),t.onAny(v)},emit(v,b){let w={type:v,payload:b,ts:Date.now(),__kick_origin:"local"};t.dispatch(w),p(w)}}}var ct=null,[Rc,kr]=O([]);function qc(){if(ct)return()=>{};const e=`${Je()}/_bus`,t=location.protocol==="https:"?"wss:":"ws:",r=pt(),s=r?`?token=${encodeURIComponent(r)}`:"",l=`${t}//${location.host}${e}${s}`;ct=Oc({channel:"kick-devtools",wsUrl:l});const a=ct.onAny(i=>{kr(u=>{const c=u.length>=500?u.slice(1):u.slice();return c.push(i),c})});return()=>{a(),ct=null,kr([])}}function zt(){return Rc}function Nc(){kr([])}function al(){return ct}var or=200;function Sr(e){if(e==null)return String(e);if(typeof e=="bigint")return`${e.toString()}n`;if(typeof e!="object")return String(e);const t=new WeakSet,r=(l,a)=>{if(typeof a=="bigint")return`${a.toString()}n`;if(a instanceof Error)return{name:a.name,message:a.message};if(a&&typeof a=="object"){if(t.has(a))return"[Circular]";t.add(a)}return a};let s;try{s=JSON.stringify(e,r)}catch{s="[unserialisable]"}return s===void 0&&(s=String(e)),s.length>or?`${s.slice(0,or)}… (+${s.length-or} chars)`:s}function Cr(e){const t=new Date(e);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}.${String(t.getMilliseconds()).padStart(3,"0")}`}function Pc(e){return e.replace(/'(?:[^']|'')*'/g,"?").replace(/\$\d+|:\w+|@\w+/g,"?").replace(/\b\d+(?:\.\d+)?\b/g,"?").replace(/\(\s*\?(?:\s*,\s*\?)+\s*\)/g,"(?)").replace(/\s+/g," ").trim()}var Ic=d("<button type=button>"),Dc=d('<span>p95 <b class="text-text-body tabular-nums">'),Uc=d("<span> statements"),jc=d('<div class="flex flex-col gap-1.5 border-b border-border p-2"><div class="flex items-center gap-1.5"><input type=text placeholder="Filter SQL…"class="min-w-0 flex-1 bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><div class="flex overflow-hidden rounded-md border border-border-strong text-xs"></div></div><div class="flex flex-wrap gap-x-3 text-xs text-text-muted"><span><b class="text-text-body tabular-nums"></b> queries</span><span><b class=tabular-nums></b> failed</span><span><b class=tabular-nums></b> ≥ 50 ms'),Hc=d('<table class="w-full table-fixed border-collapse text-[0.76rem]"><colgroup><col><col class=w-14><col class=w-16><col class=w-20><col class=w-32><col class=w-20></colgroup><thead class="sticky top-0 z-1 border-b border-border bg-surface-2 text-xs"><tr></tr></thead><tbody>'),Bc=d('<div class="min-h-0 flex-1 overflow-y-auto">'),zc=d("<div class=empty>No queries yet. kick/db reports each statement here when DevTools is installed — run one."),Fc=d('<button type=button><span class="w-[5.6rem] shrink-0 font-mono text-[0.68rem] text-text-muted tabular-nums"></span><span></span><span class="min-w-0 flex-1 truncate font-mono text-[0.7rem]">'),Jc=d('<tr><td class="truncate px-2 py-1 font-mono text-[0.7rem]"></td><td class="px-2 py-1 text-right tabular-nums"></td><td></td><td></td><td class="px-2 py-1 text-right tabular-nums"><span class="inline-flex items-center gap-1.5"><span class="h-1.5 w-12 overflow-hidden rounded-full bg-border/60"><span class="block h-full rounded-full bg-kick-500/70"></span></span><span></span></span></td><td class="px-2 py-1 text-right tabular-nums">'),Kc=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">Select a query to see its SQL and parameters'),Vc=d('<section class="flex h-full flex-col gap-3 overflow-y-auto bg-surface-1 p-4 text-[0.8rem]">'),Gc=d('<dl class="grid grid-cols-3 gap-2">'),Yc=d('<div class="text-xs text-text-muted">'),Wc=d('<div class="rounded-md border border-red-500/40 bg-red-500/10 px-3 py-2 text-red-500">'),Qc=d('<pre class="m-0 whitespace-pre-wrap break-words rounded-md border border-border bg-surface-2 p-3 font-mono text-xs">'),Xc=d('<ol class="m-0 list-none rounded-md border border-border bg-surface-2 p-2 font-mono text-xs">'),Zc=d('<li class="flex gap-3 py-0.5"><span class="w-6 text-right text-text-muted">$</span><span class=break-all>'),eu=d('<div class="rounded-md border border-border bg-surface-2 px-3 py-2"><dt class="text-[0.66rem] uppercase tracking-wider text-text-muted"></dt><dd class="m-0 font-semibold tabular-nums">'),tu=d('<div><h3 class="mb-1.5 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">'),ru=50,nu=()=>{const[e,t]=O([]),[r,s]=O("slowest"),[l,a]=O(""),[i,u]=O(null),c=nl("totalMs"),h=x=>{t(g=>[...g,x].slice(-500))},f=(x,g)=>{const $=x;return{sql:$.sql,parameters:$.parameters,durationMs:0,dialect:$.dialect,error:$.error instanceof Error?$.error.message:String($.error??"query error"),ts:g}};Ne(()=>{for(const C of zt()())C.type==="db:query"?h({...C.payload,ts:C.ts}):C.type==="db:query-error"&&h(f(C.payload,C.ts));const x=al(),g=x?.on("db:query",C=>h({...C,ts:C.ts??Date.now()})),$=x?.on("db:query-error",C=>h(f(C,Date.now())));Se(()=>{g?.(),$?.()})});const p=se(()=>{const x=l().trim().toLowerCase();return x?e().filter(g=>g.sql.toLowerCase().includes(x)):e()}),v=se(()=>{const x=new Map;for(const $ of p()){const C=Pc($.sql),R=x.get(C)??[];R.push($),x.set(C,R)}const g=[...x].map(([$,C])=>{const R=C.filter(T=>!T.error).map(T=>T.durationMs),q=R.reduce((T,D)=>T+D,0);return{sql:$,calls:C.length,errors:C.length-R.length,totalMs:q,meanMs:R.length?q/R.length:0,p95Ms:vr(R,95)??0,last:C[C.length-1]}});return c.apply(g,($,C)=>$[C])}),b=se(()=>Math.max(1,...v().map(x=>x.p95Ms))),w=se(()=>{const x=p(),g=x.filter($=>!$.error).map($=>$.durationMs);return{total:x.length,errors:x.length-g.length,slow:g.filter($=>$>=ru).length,p95:vr(g,95)}}),M=(x,g)=>(()=>{var $=Ic();return $.$$click=()=>s(x),n($,g),N(C=>{var R=r()===x,q=`px-2.5 py-1 font-semibold ${r()===x?"bg-kick-500/20 text-kick-500":"bg-surface-2 text-text-secondary hover:text-text-body"}`;return R!==C.e&&X($,"aria-pressed",C.e=R),q!==C.t&&j($,C.t=q),C},{e:void 0,t:void 0}),$})(),y=x=>`flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 px-2.5 py-1 text-left text-[0.76rem] text-text-body ${x?"bg-accent/12 shadow-[inset_2px_0_0_0_var(--color-accent)]":"bg-transparent hover:bg-surface-hover"}`,m=[(()=>{var x=jc(),g=x.firstChild,$=g.firstChild,C=$.nextSibling,R=g.nextSibling,q=R.firstChild,T=q.firstChild,D=q.nextSibling,U=D.firstChild,re=D.nextSibling,Q=re.firstChild;return $.$$input=k=>a(k.currentTarget.value),n(C,()=>M("slowest","Slowest"),null),n(C,()=>M("recent","Recent"),null),n(T,()=>w().total),n(U,()=>w().errors),n(Q,()=>w().slow),n(R,o(_,{get when(){return w().p95!==void 0},get children(){var k=Dc(),A=k.firstChild.nextSibling;return n(A,()=>$e(w().p95)),k}}),null),n(R,o(_,{get when(){return r()==="slowest"},get children(){var k=Uc(),A=k.firstChild;return n(k,()=>v().length,A),k}}),null),N(k=>{var A=w().errors?"text-red-500":"",K=w().slow?"text-amber-500":"";return A!==k.e&&j(D,k.e=A),K!==k.t&&j(re,k.t=K),k},{e:void 0,t:void 0}),N(()=>$.value=l()),x})(),(()=>{var x=Bc();return n(x,o(_,{get when(){return e().length>0},get fallback(){return zc()},get children(){return o(_,{get when(){return r()==="slowest"},get fallback(){return o(te,{get each(){return p().toReversed()},children:g=>(()=>{var $=Fc(),C=$.firstChild,R=C.nextSibling,q=R.nextSibling;return $.$$click=()=>u({query:g}),n(C,()=>Cr(g.ts)),n(R,(()=>{var T=le(()=>!!g.error);return()=>T()?"failed":$e(g.durationMs)})()),n(q,()=>g.sql),N(T=>{var D=y(i()?.query===g),U=`w-14 shrink-0 text-right tabular-nums ${g.error?"text-red-500":ut(g.durationMs,4)}`;return D!==T.e&&j($,T.e=D),U!==T.t&&j(R,T.t=U),T},{e:void 0,t:void 0}),$})()})},get children(){var g=Hc(),$=g.firstChild.nextSibling,C=$.firstChild,R=$.nextSibling;return n(C,()=>[["sql","Statement","left"],["calls","Calls"],["errors","Failed"],["meanMs","Mean"],["p95Ms","p95"],["totalMs","Total"]].map(([q,T,D])=>o(ll,{label:T,align:D==="left"?"left":"right",get active(){return c.key()===q},get desc(){return c.desc()},onClick:()=>c.toggle(q)}))),n(R,o(te,{get each(){return v()},children:q=>(()=>{var T=Jc(),D=T.firstChild,U=D.nextSibling,re=U.nextSibling,Q=re.nextSibling,k=Q.nextSibling,A=k.firstChild.firstChild,K=A.firstChild,V=A.nextSibling,B=k.nextSibling;return T.$$click=()=>u({group:q,query:q.last}),n(D,()=>q.sql),n(U,()=>q.calls),n(re,()=>q.errors||"—"),n(Q,(()=>{var I=le(()=>q.calls>q.errors);return()=>I()?$e(q.meanMs):"—"})()),n(V,(()=>{var I=le(()=>q.calls>q.errors);return()=>I()?$e(q.p95Ms):"—"})()),n(B,()=>$e(q.totalMs)),N(I=>{var ie=`cursor-pointer border-b border-border/50 ${i()?.group?.sql===q.sql?"bg-accent/12":"hover:bg-surface-hover"}`,E=q.sql,P=`px-2 py-1 text-right tabular-nums ${q.errors?"text-red-500":"text-text-muted"}`,Y=`px-2 py-1 text-right tabular-nums ${ut(q.meanMs,4)}`,Z=`${q.p95Ms/b()*100}%`,H=`min-w-12 ${ut(q.p95Ms,4)}`;return ie!==I.e&&j(T,I.e=ie),E!==I.t&&X(D,"title",I.t=E),P!==I.a&&j(re,I.a=P),Y!==I.o&&j(Q,I.o=Y),Z!==I.i&&Ie(K,"width",I.i=Z),H!==I.n&&j(V,I.n=H),I},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),T})()})),g}})}})),x})()],S=o(_,{get when(){return i()},get fallback(){return Kc()},children:x=>(()=>{var g=Vc();return n(g,o(_,{get when(){return x().group},children:$=>(()=>{var C=Gc();return n(C,o(ir,{label:"Calls",get children(){return $().calls}}),null),n(C,o(ir,{label:"Mean",get children(){return le(()=>$().calls>$().errors)()?$e($().meanMs):"—"}}),null),n(C,o(ir,{label:"p95",get children(){return le(()=>$().calls>$().errors)()?$e($().p95Ms):"—"}}),null),C})()}),null),n(g,o(_,{get when(){return x().query},children:$=>[(()=>{var C=Yc();return n(C,()=>x().group?"Latest call · ":"",null),n(C,()=>new Date($().ts).toLocaleString(),null),n(C,o(_,{get when(){return $().dialect},get children(){return[" · ",le(()=>$().dialect)]}}),null),n(C,o(_,{get when(){return!$().error},get children(){return[" · ",le(()=>$e($().durationMs))]}}),null),C})(),o(_,{get when(){return $().error},get children(){var C=Wc();return n(C,()=>$().error),C}}),o(pn,{title:"SQL",get children(){var C=Qc();return n(C,()=>$().sql),C}}),o(_,{get when(){return $().parameters?.length},get children(){return o(pn,{get title(){return`Parameters (${$().parameters.length})`},get children(){var C=Xc();return n(C,o(te,{get each(){return $().parameters},children:(R,q)=>(()=>{var T=Zc(),D=T.firstChild;D.firstChild;var U=D.nextSibling;return n(D,()=>q()+1,null),n(U,()=>JSON.stringify(R)??String(R)),T})()})),C}})}})]}),null),g})()});return o(Ke,{storageKey:"database",left:m,right:S,defaultLeft:600})},ir=e=>(()=>{var t=eu(),r=t.firstChild,s=r.nextSibling;return n(r,()=>e.label),n(s,()=>e.children),t})(),pn=e=>(()=>{var t=tu(),r=t.firstChild;return n(r,()=>e.title),n(t,()=>e.children,null),t})();ye(["click","input"]);var Er=(e,t)=>`${e}→${t}`;function lu(e,t){const r=new Map(e.map(v=>[v,[]]));for(const v of t)r.has(v.from)&&r.has(v.to)&&r.get(v.from).push(v.to);const s=new Set,l=new Map,a=v=>{l.set(v,"active");for(const b of r.get(v))l.get(b)==="active"?s.add(Er(v,b)):l.has(b)||a(b);l.set(v,"done")};for(const v of e)l.has(v)||a(v);const i=v=>r.get(v).filter(b=>!s.has(Er(v,b))),u=new Set;for(const[v,b]of r){b.length&&u.add(v);for(const w of b)u.add(w)}const c=new Map,h=new Map([...u].map(v=>[v,0]));for(const v of u)for(const b of i(v))h.set(b,h.get(b)+1);const f=[...u].filter(v=>h.get(v)===0);for(const v of f)c.set(v,0);for(;f.length;){const v=f.shift();for(const b of i(v))c.set(b,Math.max(c.get(b)??0,c.get(v)+1)),h.set(b,h.get(b)-1),h.get(b)===0&&f.push(b)}const p=[];for(const v of e){if(!u.has(v))continue;const b=c.get(v)??0;(p[b]??=[]).push(v)}for(let v=1;v<p.length;v++){const b=new Map(p[v-1].map((M,y)=>[M,y])),w=M=>{const y=p[v-1].filter(m=>i(m).includes(M)).map(m=>b.get(m));return y.length?y.reduce((m,S)=>m+S,0)/y.length:1/0};p[v]=p[v].toSorted((M,y)=>w(M)-w(y))}return{layers:p,cycleEdges:s,isolated:e.filter(v=>!u.has(v))}}var su=.2;var ol=e=>Math.min(3,Math.max(su,e));function xn(e,t,r,s){const l=ol(e.k*t),a=l/e.k;return{k:l,x:r-(r-e.x)*a,y:s-(s-e.y)*a}}function au(e,t,r,s=24){const l=ol(Math.min(1,(t-s*2)/e.w,(r-s*2)/e.h));return{k:l,x:(t-e.w*l)/2-e.x*l,y:(r-e.h*l)/2-e.y*l}}var ou=d('<span class="flex items-center gap-1 text-xs text-red-500"><span class="h-0.5 w-3 bg-red-500"></span> cycle'),iu=d('<button type=button class="rounded-md border border-border-strong bg-surface-2 px-2 py-0.5 text-xs text-text-secondary hover:text-text-strong">Reset layout'),cu=d('<svg class="absolute inset-0 h-full w-full"><defs><marker id=dt-arrow viewBox="0 0 8 8"refX=7 refY=4 markerWidth=6 markerHeight=6 orient=auto><path d="M0 0 L8 4 L0 8 z"fill=var(--color-text-muted)></path></marker></defs><g>'),uu=d('<div class="max-h-32 overflow-y-auto border-t border-border p-3"><div class="mb-1.5 text-[0.66rem] font-semibold uppercase tracking-wider text-text-muted">No dependencies either way (<!>)</div><div class="flex flex-wrap gap-1">'),du=d('<div class="flex h-full flex-col"><div class="flex flex-wrap items-center gap-2 border-b border-border p-2"><input type=text placeholder="Find a token — Enter to jump"class="w-52 bg-surface-2 border border-border-strong rounded-lg px-3 py-1 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><span class=flex-1></span><button type=button class="rounded-md border border-border-strong bg-surface-2 px-2 py-0.5 text-xs text-text-secondary hover:text-text-strong"aria-label="Zoom out">−</button><span class="w-10 text-center text-xs text-text-muted tabular-nums">%</span><button type=button class="rounded-md border border-border-strong bg-surface-2 px-2 py-0.5 text-xs text-text-secondary hover:text-text-strong"aria-label="Zoom in">+</button><button type=button class="rounded-md border border-border-strong bg-surface-2 px-2 py-0.5 text-xs text-text-secondary hover:text-text-strong">Fit</button></div><div style="background-image:radial-gradient(var(--color-border) 1px, transparent 1px)"><span class="pointer-events-none absolute bottom-2 left-2 text-[0.62rem] text-text-muted">Drag tokens to arrange · drag or scroll to pan · ⌘/Ctrl + scroll to zoom'),fu=d('<span class="flex items-center gap-1 text-xs text-text-muted"><span class="h-2 w-2 rounded-sm">'),hu=d('<div class="p-6 text-sm text-text-muted">No dependencies between registered tokens yet.'),gu=d("<svg><path fill=none marker-end=url(#dt-arrow)></svg>",!1,!0,!1),mu=d("<svg><g class=cursor-move><title> — drag to move, click to focus</title><rect width=164 height=26 rx=5 fill=var(--color-surface-1)></rect><rect width=4 height=26 rx=2></rect><text x=12 y=17 font-size=11.5 font-family=var(--font-mono) fill=var(--color-text-body)></svg>",!1,!0,!1),vu=d("<button type=button>"),pu=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">Select a token to trace its dependencies'),xu=d('<div class="h-full overflow-y-auto bg-surface-1">'),cr=164,Ot=26,il="kickjs-devtools-graph-positions",bu=3,bn={controller:"#8b5cf6",service:"#3b82f6",repository:"#14b8a6"};function $u(){try{return JSON.parse(localStorage.getItem(il)??"{}")}catch{return{}}}var yu=()=>{const[e,t]=O(null),[r,s]=O(""),[l,a]=O($u()),[i,u]=O({x:0,y:0,k:1}),[c,h]=O(!1);let f;const p=se(()=>ae.container()),v=se(()=>new Map(p().map(k=>[k.token,k]))),b=se(()=>p().flatMap(k=>(k.dependencies??[]).filter(A=>v().has(A)).map(A=>({from:k.token,to:A})))),w=se(()=>lu(p().map(k=>k.token),b())),M=se(()=>{const k=new Map;return w().layers.forEach((A,K)=>A.forEach((V,B)=>k.set(V,l()[V]??{x:K*220,y:B*36}))),k}),y=()=>{if(!f||M().size===0)return;const k=[...M().values()],A=Math.min(...k.map(B=>B.x)),K=Math.min(...k.map(B=>B.y)),V={x:A,y:K,w:Math.max(...k.map(B=>B.x))+cr-A,h:Math.max(...k.map(B=>B.y))+Ot-K};u(au(V,f.clientWidth,f.clientHeight))};Ne(()=>requestAnimationFrame(y)),qe($l(()=>M().size>0,(k,A)=>{k&&!A&&requestAnimationFrame(y)}));const m=k=>{a(k);try{localStorage.setItem(il,JSON.stringify(k))}catch{}};let S=null;const x=k=>{if(k.button!==0)return;const A=k.target.closest("[data-node]")?.getAttribute("data-node");if(k.currentTarget.setPointerCapture(k.pointerId),A){const K=M().get(A);S={kind:"node",id:A,sx:k.clientX,sy:k.clientY,from:K,dragged:!1}}else S={kind:"pan",sx:k.clientX,sy:k.clientY,view:i()},h(!0)},g=k=>{const A=S;if(!A)return;const K=k.clientX-A.sx,V=k.clientY-A.sy;if(A.kind==="pan"){u({...A.view,x:A.view.x+K,y:A.view.y+V});return}if(!A.dragged&&Math.hypot(K,V)<bu)return;A.dragged=!0;const B=i().k;a(I=>({...I,[A.id]:{x:A.from.x+K/B,y:A.from.y+V/B}}))},$=()=>{const k=S;S=null,h(!1),k?.kind==="node"?k.dragged?m(l()):t(A=>A===k.id?null:k.id):k?.kind==="pan"&&k.view===i()&&t(null)},C=k=>{if(k.preventDefault(),k.ctrlKey||k.metaKey){const A=f.getBoundingClientRect(),K=Math.max(-50,Math.min(50,k.deltaY));u(V=>xn(V,Math.exp(-K*.005),k.clientX-A.left,k.clientY-A.top))}else u(A=>({...A,x:A.x-k.deltaX,y:A.y-k.deltaY}))},R=k=>{f&&u(A=>xn(A,k,f.clientWidth/2,f.clientHeight/2))},q=se(()=>{const k=e();if(!k)return null;const A=(B,I)=>{const ie=new Set([B]),E=[B];for(;E.length;)for(const P of I(E.pop()))ie.has(P)||(ie.add(P),E.push(P));return ie},K=A(k,B=>b().filter(I=>I.from===B).map(I=>I.to)),V=A(k,B=>b().filter(I=>I.to===B).map(I=>I.from));return new Set([...K,...V])}),T=k=>!!q()&&!q().has(k),D=()=>{const k=r().trim().toLowerCase(),A=k&&p().find(V=>V.token.toLowerCase().includes(k));if(!A)return;t(A.token);const K=M().get(A.token);if(K&&f){const V=i().k;u({k:V,x:f.clientWidth/2-(K.x+cr/2)*V,y:f.clientHeight/2-(K.y+Ot/2)*V})}},U=(k,A)=>{const K=M().get(k),V=M().get(A),B=K.x+cr,I=K.y+Ot/2,ie=V.x,E=V.y+Ot/2,P=Math.max(30,Math.abs(ie-B)/2);return`M${B} ${I} C${B+P} ${I} ${ie-P} ${E} ${ie} ${E}`},re=(()=>{var k=du(),A=k.firstChild,K=A.firstChild,V=K.nextSibling,B=V.nextSibling,I=B.nextSibling,ie=I.firstChild,E=I.nextSibling,P=E.nextSibling,Y=A.nextSibling,Z=Y.firstChild;return K.$$keydown=H=>H.key==="Enter"&&D(),K.$$input=H=>s(H.currentTarget.value),n(A,o(te,{get each(){return Object.entries(bn)},children:([H,ne])=>(()=>{var W=fu(),de=W.firstChild;return Ie(de,"background",ne),n(W,H,null),W})()}),V),n(A,o(_,{get when(){return w().cycleEdges.size>0},get children(){return ou()}}),V),B.$$click=()=>R(1/1.25),n(I,()=>Math.round(i().k*100),ie),E.$$click=()=>R(1.25),P.$$click=y,n(A,o(_,{get when(){return Object.keys(l()).length>0},get children(){var H=iu();return H.$$click=()=>{m({}),requestAnimationFrame(y)},H}}),null),Y.addEventListener("wheel",C),Y.addEventListener("pointercancel",$),Y.$$pointerup=$,Y.$$pointermove=g,Y.$$pointerdown=x,rt(H=>f=H,Y),n(Y,o(_,{get when(){return w().layers.length>0},get fallback(){return hu()},get children(){var H=cu(),ne=H.firstChild.nextSibling;return n(ne,o(te,{get each(){return b()},children:W=>{const de=()=>w().cycleEdges.has(Er(W.from,W.to));return(()=>{var L=gu();return N(z=>{var fe=U(W.from,W.to),be=de()?"#ef4444":"var(--color-border-strong)",ke=e()===W.from||e()===W.to?2:1.25,Ce=de()?"4 3":void 0,me=T(W.from)||T(W.to)?.15:1;return fe!==z.e&&X(L,"d",z.e=fe),be!==z.t&&X(L,"stroke",z.t=be),ke!==z.a&&X(L,"stroke-width",z.a=ke),Ce!==z.o&&X(L,"stroke-dasharray",z.o=Ce),me!==z.i&&X(L,"opacity",z.i=me),z},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),L})()}}),null),n(ne,o(te,{get each(){return w().layers.flat()},children:W=>{const de=()=>M().get(W),L=()=>v().get(W)?.kind??"";return(()=>{var z=mu(),fe=z.firstChild,be=fe.firstChild,ke=fe.nextSibling,Ce=ke.nextSibling,me=Ce.nextSibling;return X(z,"data-node",W),n(fe,W,be),n(me,(()=>{var ge=le(()=>W.length>22);return()=>ge()?`${W.slice(0,21)}…`:W})()),N(ge=>{var xt=`translate(${de().x} ${de().y})`,Ve=T(W)?.25:1,ze=e()===W?"var(--color-accent)":"var(--color-border-strong)",bt=e()===W?2:1,$t=bn[L()]??"var(--color-text-muted)";return xt!==ge.e&&X(z,"transform",ge.e=xt),Ve!==ge.t&&X(z,"opacity",ge.t=Ve),ze!==ge.a&&X(ke,"stroke",ge.a=ze),bt!==ge.o&&X(ke,"stroke-width",ge.o=bt),$t!==ge.i&&X(Ce,"fill",ge.i=$t),ge},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),z})()}}),null),N(()=>X(ne,"transform",`translate(${i().x} ${i().y}) scale(${i().k})`)),H}}),Z),n(k,o(_,{get when(){return w().isolated.length>0},get children(){var H=uu(),ne=H.firstChild,W=ne.firstChild.nextSibling;W.nextSibling;var de=ne.nextSibling;return n(ne,()=>w().isolated.length,W),n(de,o(te,{get each(){return w().isolated},children:L=>(()=>{var z=vu();return z.$$click=()=>t(L),n(z,L),N(()=>j(z,`${Dr(v().get(L)?.kind)} font-mono ${e()===L?"ring-1 ring-kick-500":""}`)),z})()})),H}}),null),N(H=>{var ne=`relative min-h-0 flex-1 touch-none select-none overflow-hidden ${c()?"cursor-grabbing":"cursor-grab"}`,W=`${16*i().k}px ${16*i().k}px`,de=`${i().x}px ${i().y}px`;return ne!==H.e&&j(Y,H.e=ne),W!==H.t&&Ie(Y,"background-size",H.t=W),de!==H.a&&Ie(Y,"background-position",H.a=de),H},{e:void 0,t:void 0,a:void 0}),N(()=>K.value=r()),k})(),Q=o(_,{get when(){return e()},get fallback(){return pu()},children:k=>(()=>{var A=xu();return n(A,o(rl,{get token(){return k()},onSelect:t})),A})()});return o(Ke,{storageKey:"graph",defaultLeft:720,left:re,right:Q})};ye(["input","keydown","click","pointerdown","pointermove","pointerup"]);var wu=d('<div class="flex flex-wrap gap-1">'),_u=d("<span class=text-amber-500>"),ku=d('<div class="flex flex-col gap-1.5 border-b border-border p-2"><div class="flex items-center gap-1.5"><input type=text placeholder="Search type or payload…"class="min-w-0 flex-1 bg-surface-2 border border-border-strong rounded-lg px-3 py-1.5 text-sm text-text-body placeholder:text-text-muted focus:outline-none focus:border-kick-500"><button type=button class="rounded-md border border-border-strong bg-surface-2 px-2 py-1 text-xs text-text-secondary hover:text-text-strong"></button><button type=button class="rounded-md border border-border-strong bg-surface-2 px-2 py-1 text-xs text-text-secondary hover:text-text-strong">Clear</button></div><div class="flex items-center text-xs text-text-muted"><span> shown · <!>/<!> kept</span><span class=flex-1>'),Su=d('<button type=button class="absolute top-2 left-1/2 z-10 -translate-x-1/2 rounded-full bg-kick-500 px-3 py-0.5 text-xs font-semibold text-white shadow"> new ↑'),Cu=d('<div class="relative min-h-0 flex-1"><div class="h-full overflow-y-auto">'),Eu=d('<button type=button><span class="h-1.5 w-1.5 rounded-full"></span><span class="font-normal text-text-muted">'),Mu=d("<div class=empty>"),Tu=d('<button type=button><span class="w-[5.6rem] shrink-0 font-mono text-[0.68rem] text-text-muted tabular-nums"></span><span class="flex w-36 shrink-0 items-center gap-1.5 truncate font-mono text-[0.72rem] font-semibold"><span class="h-1.5 w-1.5 shrink-0 rounded-full"></span></span><span class="min-w-0 flex-1 truncate font-mono text-[0.7rem] text-text-secondary">'),Au=d('<div class=dt-panel-grid><div class="card text-sm text-text-muted">Select an event to see its payload'),Lu=d('<section class="flex h-full flex-col gap-2 overflow-y-auto bg-surface-1 p-4 text-[0.8rem]"><header class="flex items-center gap-2"><span class="h-2 w-2 rounded-full"></span><h2 class="m-0 font-mono text-sm text-text-strong"></h2></header><div class="text-xs text-text-muted"> · </div><pre class="m-0 overflow-x-auto rounded-md border border-border bg-surface-2 p-3 font-mono text-xs leading-relaxed">'),ot=e=>e.split(":")[0]||e;function $n(e){return/error|fail|crash/i.test(e)?"err":/warn|slow|retry|timeout/i.test(e)?"warn":"info"}function Ou(e){try{return JSON.stringify(e,null,2)??String(e)}catch{return Sr(e)}}var Ru=()=>{const e=zt(),[t,r]=O(""),[s,l]=O(new Set),[a,i]=O(null),[u,c]=O(null),[h,f]=O(!1);let p;const v=se(()=>{const q=new Map;for(const T of e())q.set(ot(T.type),(q.get(ot(T.type))??0)+1);return[...q].toSorted((T,D)=>D[1]-T[1])}),b=q=>{const T=t().trim().toLowerCase();return q.filter(D=>!s().has(ot(D.type))&&(!T||D.type.toLowerCase().includes(T)||Sr(D.payload).toLowerCase().includes(T))).toReversed()},w=se(()=>b(u()??e())),M=se(()=>u()?b(e()).length-w().length:0),y=()=>{u()||c(e())},m=()=>{f(!1),c(null),p?.scrollTo({top:0})},S=()=>{!p||h()||(p.scrollTop>8?y():c(null))},x=q=>{l(T=>{const D=new Set(T);return D.has(q)?D.delete(q):D.add(q),D})},g={err:"bg-red-500/8",warn:"bg-amber-500/8",info:""},$={err:"shadow-[inset_2px_0_0_0_#ef4444]",warn:"shadow-[inset_2px_0_0_0_#f59e0b]",info:""},C=[(()=>{var q=ku(),T=q.firstChild,D=T.firstChild,U=D.nextSibling,re=U.nextSibling,Q=T.nextSibling,k=Q.firstChild,A=k.firstChild,K=A.nextSibling,V=K.nextSibling.nextSibling;return V.nextSibling,k.nextSibling,D.$$input=B=>r(B.currentTarget.value),U.$$click=()=>{h()?m():(f(!0),y())},n(U,()=>h()?"Resume":"Pause"),re.$$click=()=>{Nc(),c(null),i(null)},n(q,o(_,{get when(){return v().length>0},get children(){var B=wu();return n(B,o(te,{get each(){return v()},children:([I,ie])=>(()=>{var E=Eu(),P=E.firstChild,Y=P.nextSibling;return E.$$click=()=>x(I),n(E,I,Y),n(Y,ie),N(Z=>{var H=!s().has(I),ne=`flex items-center gap-1 rounded-md border border-border-strong px-1.5 py-0.5 text-[0.68rem] font-semibold ${s().has(I)?"opacity-40":"bg-surface-2"}`,W=Xt(I);return H!==Z.e&&X(E,"aria-pressed",Z.e=H),ne!==Z.t&&j(E,Z.t=ne),W!==Z.a&&Ie(P,"background",Z.a=W),Z},{e:void 0,t:void 0,a:void 0}),E})()})),B}}),Q),n(k,()=>w().length,A),n(k,()=>e().length,K),n(k,500,V),n(Q,o(_,{get when(){return u()},get children(){var B=_u();return n(B,()=>h()?"paused":"held while scrolled"),B}}),null),N(()=>D.value=t()),q})(),(()=>{var q=Cu(),T=q.firstChild;return n(q,o(_,{get when(){return M()>0},get children(){var D=Su(),U=D.firstChild;return D.$$click=m,n(D,M,U),D}}),T),T.addEventListener("scroll",S),rt(D=>p=D,T),n(T,o(_,{get when(){return w().length>0},get fallback(){return(()=>{var D=Mu();return n(D,()=>e().length?"No events match":"No events yet — kick/db queries, queue jobs and anything emitted on DEVTOOLS_BUS show up here."),D})()},get children(){return o(te,{get each(){return w()},children:D=>(()=>{var U=Tu(),re=U.firstChild,Q=re.nextSibling,k=Q.firstChild,A=Q.nextSibling;return U.$$click=()=>i(D),n(re,()=>Cr(D.ts)),n(Q,()=>D.type,null),n(A,()=>Sr(D.payload)),N(K=>{var V=`flex w-full cursor-pointer items-center gap-2 border-0 border-b border-border/50 px-2.5 py-1 text-left text-[0.76rem] text-text-body ${g[$n(D.type)]} ${$[$n(D.type)]} ${a()===D?"!bg-accent/12":"hover:bg-surface-hover"}`,B=Xt(ot(D.type));return V!==K.e&&j(U,K.e=V),B!==K.t&&Ie(k,"background",K.t=B),K},{e:void 0,t:void 0}),U})()})}})),q})()],R=o(_,{get when(){return a()},get fallback(){return Au()},children:q=>(()=>{var T=Lu(),D=T.firstChild,U=D.firstChild,re=U.nextSibling,Q=D.nextSibling,k=Q.firstChild,A=Q.nextSibling;return n(re,()=>q().type),n(Q,()=>new Date(q().ts).toLocaleString(),k),n(Q,()=>Cr(q().ts),null),n(Q,o(_,{get when(){return q().pluginId},get children(){return[" · from ",le(()=>q().pluginId)]}}),null),n(A,()=>Ou(q().payload)),N(K=>Ie(U,"background",Xt(ot(q().type)))),T})()});return o(Ke,{storageKey:"activity",left:C,right:R,defaultLeft:560})};ye(["input","click"]);var qu="modulepreload",Nu=function(e){return"/_debug/"+e},yn={},Pu=function(t){return t.pathname.endsWith(".css")},Iu=function(t,r,s){let l=Promise.resolve();if(r&&r.length>0){let h=function(p){return Promise.all(p.map(v=>Promise.resolve(v).then(b=>({status:"fulfilled",value:b}),b=>({status:"rejected",reason:b}))))},f=function(p){return import.meta.resolve?new URL(import.meta.resolve(p)):new URL(p,import.meta.url)},i;const u=document.querySelector("meta[property=csp-nonce]"),c=u?.nonce||u?.getAttribute("nonce");l=h(r.map(p=>{p=Nu(p,s);const v=f(p);if(v.href in yn)return;yn[v.href]=!0;const b=Pu(v);if(i===void 0){i={all:new Set,styles:new Set};const M=document.getElementsByTagName("link");for(let y=M.length-1;y>=0;y--){const m=M[y];i.all.add(m.href),m.rel==="stylesheet"&&i.styles.add(m.href)}}if((b?i.styles:i.all).has(v.href))return;const w=document.createElement("link");if(w.rel=b?"stylesheet":qu,b||(w.as="script"),w.crossOrigin="",w.href=v.href,c&&w.setAttribute("nonce",c),document.head.appendChild(w),b)return new Promise((M,y)=>{w.addEventListener("load",M),w.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${v}`)))})}).filter(p=>p!==void 0))}function a(i){const u=new Event("vite:preloadError",{cancelable:!0});if(u.payload=i,window.dispatchEvent(u),!u.defaultPrevented)throw i}return l.then(i=>{for(const u of i||[])u.status==="rejected"&&a(u.reason);return t().catch(a)})},Du=d("<div style=display:flex;flex-direction:column;height:100%>"),Uu=d('<iframe title="custom devtools tab"sandbox="allow-scripts allow-same-origin allow-forms"style=flex:1;width:100%;border:none;background:var(--bg)>'),ju=d("<div style=padding:16px><div class=card>"),Hu=d("<div style=color:var(--text-dim);font-size:12px>"),Bu=d('<div style="display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border)"><div><div style=font-weight:600></div></div><button type=button class=tab style="border:1px solid var(--border);border-radius:4px;padding:6px 14px;border-bottom-color:var(--border)">'),zu=d('<div class=card><div class=card-title>Last response</div><pre class="m-0 font-mono text-xs whitespace-pre-wrap">'),Fu=d("<div style=padding:16px;flex:1;overflow:auto>"),Ju=d('<div class="card m-4 text-red-500">'),Ku=d('<div class="min-h-0 flex-1 overflow-auto">'),Vu=e=>(()=>{var t=Du();return n(t,o(_,{get when(){return e.tab.view.type==="iframe"},get children(){return o(Gu,{get view(){return e.tab.view}})}}),null),n(t,o(_,{get when(){return e.tab.view.type==="launch"},get children(){return o(Yu,{get view(){return e.tab.view},get tabId(){return e.tab.id}})}}),null),n(t,o(_,{get when(){return e.tab.view.type==="module"},get children(){return o(Qu,{get view(){return e.tab.view}})}}),null),n(t,o(_,{get when(){return e.tab.view.type==="html"},get children(){return o(Wu,{get view(){return e.tab.view}})}}),null),t})(),Gu=e=>{const t=()=>{const r=new URL(e.view.src,location.href),s=pt();return s&&r.origin===location.origin&&r.searchParams.set("token",s),r.href};return(()=>{var r=Uu();return N(()=>X(r,"src",t())),r})()},Yu=e=>{const[t,r]=O(null),[s,l]=O(null),a=async i=>{r(i),l(null);try{const u=new URLSearchParams({tab:e.tabId,action:i}),c=pt();c&&u.set("token",c);const h=await fetch(`${Je()}/tabs/run?${u}`,{method:"POST",headers:c?{"x-devtools-token":c}:void 0}),f=await h.json().catch(()=>({}));l(h.ok?JSON.stringify(f.result,null,2):`${h.status} — ${f.error??h.statusText}`)}catch(u){l(u instanceof Error?u.message:String(u))}finally{r(null)}};return(()=>{var i=ju(),u=i.firstChild;return n(u,o(te,{get each(){return e.view.actions},children:c=>(()=>{var h=Bu(),f=h.firstChild,p=f.firstChild,v=f.nextSibling;return n(p,()=>c.label),n(f,o(_,{get when(){return c.description},get children(){var b=Hu();return n(b,()=>c.description),b}}),null),v.$$click=()=>{a(c.id)},n(v,()=>t()===c.id?"Running…":"Run"),N(()=>v.disabled=t()===c.id),h})()})),n(i,o(_,{get when(){return s()},children:c=>(()=>{var h=zu(),f=h.firstChild.nextSibling;return n(f,c),h})()}),null),i})()},Wu=e=>(()=>{var t=Fu();return N(()=>t.innerHTML=e.view.html),t})(),Qu=e=>{let t;const[r,s]=O(null);let l,a=!1;return Ne(async()=>{const i=new URL(e.view.src,location.href);if(i.origin!==location.origin){s(`Refusing to load a tab module from another origin: ${i.origin}`);return}const u=al();if(!u){s("The event bus is not ready yet — reopen the tab.");return}try{const c=await Iu(()=>import(i.href),[]),h=typeof c.default=="function"?c.default:c.default?.render;if(typeof h!="function"){s(`${i.pathname} has no default export with a render function`);return}if(a||!t)return;const f={bus:u,config:{theme:Rr(),panelHeight:t.clientHeight},query:new URLSearchParams(location.search)};l=h(t,f)}catch(c){s(c instanceof Error?c.message:String(c))}}),Se(()=>{a=!0,typeof l=="function"&&l()}),[o(_,{get when(){return r()},get children(){var i=Ju();return n(i,r),i}}),(()=>{var i=Ku();return rt(u=>t=u,i),i})()]};ye(["click"]);var Ft=!1,dt=null,Pt=null;async function Xu(){return pe.setConnectionStatus("connecting"),await Mr(),Pt=Fn("/stream",e=>{if(!Ft){if(pe.setConnectionStatus("live"),ul(),e.type==="metrics"){Zu(e),pe.touch();return}if(e.type==="container"){Mr();return}}},()=>{Ft||(ae.connectionStatus()!=="disconnected"&&pe.setConnectionStatus("polling"),cl())}),ed}async function Mr(){const e=await Promise.allSettled([we.health(),we.metrics(),we.routeRegistry(),we.container(),we.queues(),we.ws()]);if(e.every(u=>u.status==="rejected"&&u.reason instanceof Pr)){pe.setAuthRequired(!0),pe.setConnectionStatus("disconnected");return}if(e.every(u=>u.status==="rejected")){pe.setConnectionStatus("disconnected"),cl();return}ae.connectionStatus()==="disconnected"&&pe.setConnectionStatus("polling"),ae.authRequired()&&(pe.setAuthRequired(!1),pe.setAuthError(null));const[t,r,s,l,a,i]=e;t.status==="fulfilled"&&pe.setHealth({status:t.value.status,errorRate:t.value.errorRate,uptime:t.value.uptime,adapters:t.value.adapters??{}}),r.status==="fulfilled"&&pe.setMetrics({requests:r.value.requests,serverErrors:r.value.serverErrors,clientErrors:r.value.clientErrors,errorRate:r.value.errorRate,uptimeSeconds:r.value.uptimeSeconds,startedAt:r.value.startedAt}),s.status==="fulfilled"&&pe.setRoutes(s.value.routes??[]),l.status==="fulfilled"&&pe.setContainer(l.value.registrations??[]),a.status==="fulfilled"&&pe.setQueues({enabled:a.value.enabled,queues:a.value.queues??[]}),i.status==="fulfilled"&&pe.setWs(i.value),pe.touch()}function Zu(e){const t=ae.metrics();if(!t)return;pe.setMetrics({...t,requests:e.requestCount,serverErrors:e.errorCount,clientErrors:e.clientErrorCount,errorRate:e.errorRate,uptimeSeconds:e.uptimeSeconds});const r=ae.health();r&&pe.setHealth({...r,uptime:e.uptimeSeconds,errorRate:e.errorRate})}function cl(){dt||(dt=setInterval(()=>{Ft||Mr()},5e3))}function ul(){dt&&(clearInterval(dt),dt=null)}function ed(){Ft=!0,ul(),Pt&&(Pt(),Pt=null),pe.setConnectionStatus("disconnected")}var td=d('<svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=1.8 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path>'),wn={overview:"M3 3h7v7H3zM14 3h7v7h-7zM3 14h7v7H3zM14 14h7v7h-7z",runtime:"M22 12h-4l-3 9L9 3l-3 9H2",memory:"M9 3v2M15 3v2M9 19v2M15 19v2M3 9h2M3 15h2M19 9h2M19 15h2M7 5h10a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2z",topology:"M12 2l10 5-10 5L2 7zM2 17l10 5 10-5M2 12l10 5 10-5",metrics:"M3 3v18h18M7 16v-4M12 16V8M17 16v-7",routes:"M6 3v12M18 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM6 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM18 9a9 9 0 0 1-9 9",requests:"M7 7h13l-4-4M17 17H4l4 4",container:"M21 8l-9-5-9 5v8l9 5 9-5zM3 8l9 5 9-5M12 13v8",graph:"M18 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM6 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM18 22a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM8.6 13.5l6.8 4M15.4 6.5l-6.8 4",database:"M12 3c4.97 0 9 1.34 9 3s-4.03 3-9 3-9-1.34-9-3 4.03-3 9-3zM21 12c0 1.66-4 3-9 3s-9-1.34-9-3M3 6v12c0 1.66 4 3 9 3s9-1.34 9-3V6",queues:"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01",activity:"M12 8v4l3 3M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18z",custom:"M4 4h6v6H4zM14 4h6v6h-6zM4 14h6v6H4zM17 14v6M14 17h6",expand:"M9 18l6-6-6-6",collapse:"M15 18l-6-6 6-6",search:"M11 19a8 8 0 1 0 0-16 8 8 0 0 0 0 16zM21 21l-4.35-4.35",action:"M13 2L3 14h9l-1 8 10-12h-9z",editor:"M16 18l6-6-6-6M8 6l-6 6 6 6"},Fe=e=>(()=>{var t=td(),r=t.firstChild;return N(s=>{var l=e.size??18,a=e.size??18,i=e.class,u=wn[e.name]??wn.custom;return l!==s.e&&X(t,"width",s.e=l),a!==s.t&&X(t,"height",s.t=a),i!==s.a&&X(t,"class",s.a=i),u!==s.o&&X(r,"d",s.o=u),s},{e:void 0,t:void 0,a:void 0,o:void 0}),t})(),rd=d('<div class="fixed inset-0 z-[60] bg-slate-950/90 flex items-center justify-center p-4"><div class="bg-slate-900 border border-slate-700 rounded-2xl p-8 max-w-md w-full shadow-2xl"><div class="text-center mb-6"><h2 class="text-xl font-bold text-kick-500 mb-2">⚡ KickJS DevTools</h2><p class="text-sm text-slate-400">Enter your DevTools token to continue.</p><p class="text-xs text-slate-600 mt-1">The token is printed in the server console on startup, e.g. <code class="font-mono text-slate-500">[token: abc123…]</code></p></div><form><input type=text autofocus placeholder="Paste your token here…"class="w-full bg-slate-800 border border-slate-700 rounded-lg px-4 py-3 text-sm text-slate-200 placeholder-slate-500 focus:outline-none focus:border-kick-500 font-mono mb-3"><button type=submit class="w-full bg-kick-500 hover:bg-kick-600 text-white font-semibold py-2.5 rounded-lg transition-colors disabled:opacity-50">'),nd=d('<p class="text-red-400 text-sm mb-3">'),ld=()=>{const[e,t]=O(""),[r,s]=O(!1),l=async()=>{const a=e().trim();if(!a){pe.setAuthError("Token is required");return}s(!0),pe.setAuthError(null);try{mr(a),await we.health(),pe.setAuthRequired(!1),pe.setAuthError(null),t("")}catch{pe.setAuthError("Invalid token — request was rejected.")}finally{s(!1)}};return o(_,{get when(){return ae.authRequired()},get children(){var a=rd(),i=a.firstChild.firstChild.nextSibling,u=i.firstChild,c=u.nextSibling;return i.addEventListener("submit",h=>{h.preventDefault(),l()}),u.$$input=h=>t(h.currentTarget.value),n(i,o(_,{get when(){return ae.authError()},children:h=>(()=>{var f=nd();return n(f,h),f})()}),c),n(c,()=>r()?"Verifying…":"Authenticate"),N(()=>c.disabled=r()),N(()=>u.value=e()),a}})};ye(["input"]);function _n(e,t){const r=e.trim().toLowerCase();if(!r)return 0;const s=t.toLowerCase(),l=s.indexOf(r);if(l>=0){const u=l===0||/[\s/.\-_:]/.test(s[l-1]);return 1e3-l+(u?100:0)}let a=0,i=0;for(const u of r){const c=s.indexOf(u,a);if(c<0)return null;i+=c-a,a=c+1}return 500-i}function sd(e,t){if(!t.trim())return[...e];const r=e.map(l=>{const a=_n(t,l.title),i=l.description?_n(t,l.description):null;return{item:l,score:Math.max(a??-1/0,i===null?-1/0:i-50)}}).filter(l=>l.score>-1/0).toSorted((l,a)=>a.score-l.score).map(l=>l.item),s=[...new Set(r.map(l=>l.group))];return r.toSorted((l,a)=>s.indexOf(l.group)-s.indexOf(a.group))}var ad=d('<div class="fixed inset-0 z-70 flex items-start justify-center bg-black/45 pt-[12vh]"><div class="flex max-h-[60vh] w-[min(640px,calc(100vw-32px))] flex-col overflow-hidden rounded-md border border-border-strong bg-surface-1 shadow-2xl"role=dialog aria-modal=true aria-label="Command palette"><div class="flex items-center gap-2.5 border-b border-border px-3.5 py-2.5 text-text-muted"><input class="flex-1 border-none bg-transparent text-sm text-text-body outline-none"placeholder="Jump to a tab, route or DI token…"aria-label=Search><kbd class=dt-kbd>Esc</kbd></div><div class="overflow-y-auto p-1.5"role=listbox>'),od=d('<div class="p-6 text-center text-text-muted">No results for “<!>”'),id=d('<div class="px-2 pt-2 pb-1 text-[0.64rem] font-bold uppercase tracking-wider text-text-muted">'),cd=d('<span class="min-w-0 truncate text-xs text-text-muted">'),ud=d("<button type=button role=option><span class=whitespace-nowrap>"),dd=e=>{const[t,r]=O(!1),[s,l]=O(""),[a,i]=O(0);let u,c,h=null;const f=se(()=>sd(e.items(),s()).slice(0,50)),p=()=>{h=document.activeElement instanceof HTMLElement?document.activeElement:null,l(""),i(0),r(!0),queueMicrotask(()=>u?.focus())},v=()=>{r(!1),h?.focus(),h=null},b=y=>{y&&(v(),y.run())};Ne(()=>{const y=m=>{if(m.key==="Escape"&&t()){m.preventDefault(),v();return}const S=m.target instanceof HTMLElement&&(m.target.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(m.target.tagName));(m.key==="k"&&(m.metaKey||m.ctrlKey)||m.key==="/"&&!S&&!t())&&(m.preventDefault(),t()?v():p())};document.addEventListener("keydown",y),Se(()=>document.removeEventListener("keydown",y))});const w=y=>{const m=f().length;y.key==="ArrowDown"?(y.preventDefault(),i(S=>m?(S+1)%m:0)):y.key==="ArrowUp"?(y.preventDefault(),i(S=>m?(S-1+m)%m:0)):y.key==="Enter"&&(y.preventDefault(),b(f()[a()]))},M=y=>{if(y.key!=="Tab"||!c)return;const m=[u,...c.querySelectorAll('[role="option"]')].filter(g=>!!g);if(m.length===0)return;const S=m.indexOf(document.activeElement),x=y.shiftKey?S<=0?m.length-1:S-1:(S+1)%m.length;y.preventDefault(),m[x].focus()};return o(_,{get when(){return t()},get children(){var y=ad(),m=y.firstChild,S=m.firstChild,x=S.firstChild,g=S.nextSibling;return y.$$click=$=>$.target===$.currentTarget&&v(),m.$$keydown=M,rt($=>c=$,m),n(S,o(Fe,{name:"search",size:16}),x),x.$$keydown=w,x.$$input=$=>{l($.currentTarget.value),i(0)},rt($=>u=$,x),n(g,o(_,{get when(){return f().length>0},get fallback(){return(()=>{var $=od(),C=$.firstChild.nextSibling;return C.nextSibling,n($,s,C),$})()},get children(){return o(te,{get each(){return f()},children:($,C)=>[o(_,{get when(){return C()===0||f()[C()-1].group!==$.group},get children(){var R=id();return n(R,()=>$.group),R}}),(()=>{var R=ud(),q=R.firstChild;return R.$$click=()=>b($),R.$$mousemove=()=>i(C()),n(R,o(Fe,{get name(){return $.icon},size:16}),q),n(q,()=>$.title),n(R,o(_,{get when(){return $.description},get children(){var T=cd();return n(T,()=>$.description),T}}),null),N(T=>{var D=C()===a(),U=`flex w-full cursor-pointer items-center gap-2.5 rounded-md border-none px-2 py-1.5 text-left text-[0.82rem] ${C()===a()?"bg-accent/15 text-text-strong":"bg-transparent text-text-secondary"}`;return D!==T.e&&X(R,"aria-selected",T.e=D),U!==T.t&&j(R,T.t=U),T},{e:void 0,t:void 0}),R})()]})}})),N(()=>x.value=s()),y}})};function fd(){document.dispatchEvent(new KeyboardEvent("keydown",{key:"k",ctrlKey:!0}))}ye(["click","keydown","input","mousemove"]);var kn=d("<div class=dt-nav-sep>"),hd=d("<div class=dt-resizer role=separator aria-orientation=vertical>"),gd=d('<div class=card style=border-color:var(--warn);margin-top:16px><div class=card-title style=color:var(--warn)> custom-tab issue(s)</div><ul style="margin:8px 0 0;padding-left:20px;font-family:var(--font-mono);font-size:12px">'),md=d(`<div class="fixed bottom-4 left-1/2 z-60 flex -translate-x-1/2 items-center gap-2.5 rounded-md border border-red-500/40 bg-surface-1 px-3.5 py-2 text-[0.8rem] shadow-xl"role=status><span class="dt-pulse dt-pulse-disconnected"aria-hidden=true></span>Can't reach the app — retrying every few seconds…`),vd=d('<div class=app><header class=dt-header><div class=dt-header-brand><span class=dt-bolt aria-hidden=true>⚡</span><h1>KickJS DevTools</h1></div><div style=display:flex;align-items:center;gap:12px><button type=button class="flex cursor-pointer items-center gap-2 rounded-md border border-border-strong bg-surface-2 px-2.5 py-1 text-xs text-text-muted hover:text-text-strong">Search<kbd class=dt-kbd>⌘K</kbd></button></div></header><div class=dt-shell><aside role=tablist><div class=dt-sidebar-foot><button type=button class=dt-rail-toggle></button></div></aside><main role=tabpanel>'),ur=d("<button type=button role=tab><span class=dt-nav-main><span class=dt-nav-label>"),Sn=d("<span class=tab-badge>"),pd=d("<div class=dt-nav-group><button type=button class=dt-nav-group-header><span>▾"),xd=d("<li>: "),bd=d("<div class=dt-conn><span aria-hidden=true></span><span class=dt-conn-label></span><span class=dt-conn-sep>·</span><span class=dt-conn-ts>Updated "),$d=d("<div class=dt-settings-pop role=menu><div class=dt-settings-section><div class=dt-settings-label>Density</div><div class=dt-seg></div><div class=dt-settings-hint>Controls spacing &amp; font scale. Default: Small."),yd=d('<div class=dt-settings><button type=button aria-label=Settings aria-haspopup=true title=Settings><svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2><circle cx=12 cy=12 r=3></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z">'),wd=d("<button type=button>"),_d=d('<svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z">'),kd=d("<button type=button class=dt-theme-toggle>"),Sd=d('<svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2><circle cx=12 cy=12 r=4></circle><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41">');function dl(){return[{id:"overview",label:"Overview"},{id:"runtime",label:"Runtime"},{id:"topology",label:"Topology"},{id:"routes",label:"Routes",count:()=>ae.routes().length||void 0},{id:"metrics",label:"Metrics"},{id:"requests",label:"Requests"},{id:"container",label:"Container",count:()=>ae.container().length||void 0},{id:"queues",label:"Queues",count:()=>ae.queues().queues.length||void 0},{id:"database",label:"Database",count:()=>zt()().filter(e=>e.type==="db:query"||e.type==="db:query-error").length||void 0},{id:"graph",label:"Graph",count:()=>ae.container().length||void 0},{id:"activity",label:"Activity",count:()=>zt()().length||void 0}]}var Cd=new Set(dl().map(e=>e.id)),Ed=[{label:null,ids:["overview"]},{label:"Runtime",ids:["runtime","topology","metrics","requests"]},{label:"Architecture",ids:["routes","container","graph"]},{label:"Data & Jobs",ids:["database","queues"]},{label:null,ids:["activity"]}],fl="kickjs-devtools-sidebar-w",Cn="kickjs-devtools-sidebar-mode",Md=new Set(["routes","requests","container","graph","activity","database","queues"]),hl="kickjs-devtools-sidebar-collapsed",gl=150,ml=360;function Td(){try{const e=Number(localStorage.getItem(fl));if(e>=gl&&e<=ml)return e}catch{}return 200}function Ad(){try{const e=localStorage.getItem(hl);if(e)return JSON.parse(e)}catch{}return[]}var Ld=()=>{const e=$s,[t,r]=O((()=>{try{return localStorage.getItem(Cn)!=="full"}catch{return!0}})()),s=()=>{const g=!t();r(g);try{localStorage.setItem(Cn,g?"rail":"full")}catch{}},[l,a]=O([]),[i,u]=O([]),c=dl(),h=new Map(c.map(g=>[g.id,g])),[f,p]=O(Td()),[v,b]=O(Ad()),w=g=>{b($=>{const C=$.includes(g)?$.filter(R=>R!==g):[...$,g];try{localStorage.setItem(hl,JSON.stringify(C))}catch{}return C})};let M=null;Se(()=>M?.());const y=g=>{g.preventDefault();const $=g.clientX,C=f();document.body.style.cursor="col-resize";const R=D=>{const U=Math.min(ml,Math.max(gl,C+(D.clientX-$)));p(U)},q=()=>{document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",T),document.body.style.cursor="",M=null},T=()=>{q();try{localStorage.setItem(fl,String(f()))}catch{}};M=q,document.addEventListener("mousemove",R),document.addEventListener("mouseup",T)};Ne(()=>{we.tabs().then(({tabs:R,errors:q})=>{a(R.filter(T=>!Cd.has(T.id))),u(q)}).catch(()=>{});let g=null;Xu().then(R=>{g=R});const $=qc(),C=hs();Se(()=>{g?.(),$(),C()}),Ul(),Bl()});const m=g=>{nt(g),queueMicrotask(()=>{document.querySelector(`[role="tab"][data-tab-id="${g}"]`)?.scrollIntoView({behavior:"smooth",inline:"center",block:"nearest"})})},S=()=>[...c.map(g=>({id:`tab:${g.id}`,title:g.label,group:"Tabs",icon:g.id,run:()=>m(g.id)})),...l().map(g=>({id:`tab:${g.id}`,title:g.title,group:"Tabs",icon:"custom",run:()=>m(g.id)})),...ae.routes().map(g=>({id:`route:${g.method} ${g.path}`,title:`${g.method} ${g.path}`,description:`${g.controller}.${g.handler}`,group:"Routes",icon:"routes",run:()=>Kt(g)})),...ae.container().map(g=>({id:`token:${g.token}`,title:g.token,description:[g.kind,g.scope].filter(Boolean).join(" · "),group:"DI tokens",icon:"container",run:()=>tl(g.token)})),...["system","light","dark"].map(g=>({id:`theme:${g}`,title:`Theme: ${g}`,group:"Actions",icon:"action",run:()=>Un(g)})),...["sm","md","lg"].map(g=>({id:`density:${g}`,title:`Density: ${g}`,group:"Actions",icon:"action",run:()=>Bn(g)}))],x=()=>l().find(g=>g.id===e());return(()=>{var g=vd(),$=g.firstChild,C=$.firstChild.nextSibling,R=C.firstChild,q=R.firstChild,T=$.nextSibling,D=T.firstChild,U=D.firstChild,re=U.firstChild,Q=D.nextSibling;return Lr(R,"click",fd,!0),n(R,o(Fe,{name:"search",size:13}),q),n(C,o(Od,{}),null),n(C,o(Nd,{}),null),n(C,o(qd,{}),null),n(D,o(te,{each:Ed,children:k=>o(_,{get when(){return k.label},get fallback(){return o(te,{get each(){return k.ids},children:A=>{const K=h.get(A);return o(_,{when:K,children:V=>(()=>{var B=ur(),I=B.firstChild,ie=I.firstChild;return B.$$click=()=>m(A),X(B,"data-tab-id",A),n(I,o(Fe,{name:A}),ie),n(ie,()=>V().label),n(B,o(_,{get when(){return V().count?.()},children:E=>(()=>{var P=Sn();return n(P,E),P})()}),null),N(E=>{var P=`dt-nav-item ${e()===A?"active":""}`,Y=e()===A,Z=V().label;return P!==E.e&&j(B,E.e=P),Y!==E.t&&X(B,"aria-selected",E.t=Y),Z!==E.a&&X(B,"title",E.a=Z),E},{e:void 0,t:void 0,a:void 0}),B})()})}})},children:A=>(()=>{var K=pd(),V=K.firstChild,B=V.firstChild;return n(K,o(_,{get when(){return t()},get children(){return kn()}}),V),V.$$click=()=>w(A()),n(V,A,null),n(K,o(_,{get when(){return t()||!v().includes(A())},get children(){return o(te,{get each(){return k.ids},children:I=>{const ie=h.get(I);return o(_,{when:ie,children:E=>(()=>{var P=ur(),Y=P.firstChild,Z=Y.firstChild;return P.$$click=()=>m(I),X(P,"data-tab-id",I),n(Y,o(Fe,{name:I}),Z),n(Z,()=>E().label),n(P,o(_,{get when(){return E().count?.()},children:H=>(()=>{var ne=Sn();return n(ne,H),ne})()}),null),N(H=>{var ne=`dt-nav-item nested ${e()===I?"active":""}`,W=e()===I,de=E().label;return ne!==H.e&&j(P,H.e=ne),W!==H.t&&X(P,"aria-selected",H.t=W),de!==H.a&&X(P,"title",H.a=de),H},{e:void 0,t:void 0,a:void 0}),P})()})}})}}),null),N(I=>{var ie=t(),E=!v().includes(A()),P=`dt-nav-caret ${v().includes(A())?"closed":""}`;return ie!==I.e&&(V.hidden=I.e=ie),E!==I.t&&X(V,"aria-expanded",I.t=E),P!==I.a&&j(B,I.a=P),I},{e:void 0,t:void 0,a:void 0}),K})()})}),U),n(D,o(_,{get when(){return l().length>0},get children(){return[kn(),o(te,{get each(){return l()},children:k=>(()=>{var A=ur(),K=A.firstChild,V=K.firstChild;return A.$$click=()=>m(k.id),n(K,o(Fe,{name:"custom"}),V),n(V,()=>k.title),N(B=>{var I=k.id,ie=`dt-nav-item ${e()===k.id?"active":""}`,E=e()===k.id,P=k.title;return I!==B.e&&X(A,"data-tab-id",B.e=I),ie!==B.t&&j(A,B.t=ie),E!==B.a&&X(A,"aria-selected",B.a=E),P!==B.o&&X(A,"title",B.o=P),B},{e:void 0,t:void 0,a:void 0,o:void 0}),A})()})]}}),U),re.$$click=s,n(re,o(Fe,{get name(){return t()?"expand":"collapse"},size:16})),n(T,o(_,{get when(){return!t()},get children(){var k=hd();return k.$$mousedown=y,k}}),Q),n(Q,o(_,{get when(){return e()==="overview"},get children(){return o(uo,{})}}),null),n(Q,o(_,{get when(){return e()==="runtime"},get children(){return o(No,{})}}),null),n(Q,o(_,{get when(){return e()==="topology"},get children(){return o(xi,{})}}),null),n(Q,o(_,{get when(){return e()==="routes"},get children(){return o(Ti,{})}}),null),n(Q,o(_,{get when(){return e()==="requests"},get children(){return o(Qa,{})}}),null),n(Q,o(_,{get when(){return e()==="metrics"},get children(){return o(Fi,{})}}),null),n(Q,o(_,{get when(){return e()==="container"},get children(){return o(ec,{})}}),null),n(Q,o(_,{get when(){return e()==="queues"},get children(){return o(Tc,{})}}),null),n(Q,o(_,{get when(){return e()==="database"},get children(){return o(nu,{})}}),null),n(Q,o(_,{get when(){return e()==="graph"},get children(){return o(yu,{})}}),null),n(Q,o(_,{get when(){return e()==="activity"},get children(){return o(Ru,{})}}),null),n(Q,o(_,{get when(){return x()},children:k=>o(Vu,{get tab(){return k()}})}),null),n(Q,o(_,{get when(){return le(()=>i().length>0)()&&e()==="overview"},get children(){var k=gd(),A=k.firstChild,K=A.firstChild,V=A.nextSibling;return n(A,()=>i().length,K),n(V,o(te,{get each(){return i()},children:B=>(()=>{var I=xd(),ie=I.firstChild;return n(I,()=>B.source,ie),n(I,()=>B.reason,null),I})()})),k}}),null),n(g,o(dd,{items:S}),null),n(g,o(ld,{}),null),n(g,o(_,{get when(){return le(()=>ae.connectionStatus()==="disconnected")()&&!ae.authRequired()},get children(){return md()}}),null),N(k=>{var A=`dt-sidebar ${t()?"rail":""}`,K=`width:${f()}px`,V=t()?"Show labels":"Icons only",B=t()?"Show labels":"Icons only",I=`dt-main ${Md.has(e())?"flush":""}`;return A!==k.e&&j(D,k.e=A),k.t=Pn(D,K,k.t),V!==k.a&&X(re,"title",k.a=V),B!==k.o&&X(re,"aria-label",k.o=B),I!==k.i&&j(Q,k.i=I),k},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),g})()},Od=()=>{const e=r=>r==="live"?"Live":r==="polling"?"Polling":r==="disconnected"?"Disconnected":"Connecting…",t=r=>r?r.toLocaleTimeString():"never";return(()=>{var r=bd(),s=r.firstChild,l=s.nextSibling,a=l.nextSibling.nextSibling;return a.firstChild,n(l,()=>e(ae.connectionStatus())),n(a,()=>t(ae.lastUpdate()),null),N(()=>j(s,`dt-pulse dt-pulse-${ae.connectionStatus()}`)),r})()},Rd=[{id:"sm",label:"Small"},{id:"md",label:"Medium"},{id:"lg",label:"Large"}],qd=()=>{const[e,t]=O(!1);let r;const s=a=>{e()&&r&&!r.contains(a.target)&&t(!1)},l=a=>{a.key==="Escape"&&t(!1)};return document.addEventListener("click",s),document.addEventListener("keydown",l),Se(()=>{document.removeEventListener("click",s),document.removeEventListener("keydown",l)}),(()=>{var a=yd(),i=a.firstChild;return rt(u=>r=u,a),i.$$click=()=>t(u=>!u),n(a,o(_,{get when(){return e()},get children(){var u=$d(),c=u.firstChild.firstChild.nextSibling;return n(c,o(te,{each:Rd,children:h=>(()=>{var f=wd();return f.$$click=()=>Bn(h.id),n(f,()=>h.label),N(p=>{var v=`dt-seg-item ${Qr()===h.id?"active":""}`,b=Qr()===h.id;return v!==p.e&&j(f,p.e=v),b!==p.t&&X(f,"aria-pressed",p.t=b),p},{e:void 0,t:void 0}),f})()})),u}}),null),N(u=>{var c=`dt-settings-btn ${e()?"open":""}`,h=e();return c!==u.e&&j(i,u.e=c),h!==u.t&&X(i,"aria-expanded",u.t=h),u},{e:void 0,t:void 0}),a})()},Nd=()=>{const e=()=>{const r=Yt()==="system"?"light":Yt()==="light"?"dark":"system";Un(r)},t=()=>{const r=Yt();return`Theme: ${r==="system"?"follow system":r} (click to cycle)`};return(()=>{var r=kd();return r.$$click=e,n(r,o(_,{get when(){return Rr()==="dark"},get fallback(){return Sd()},get children(){return _d()}})),N(s=>{var l=t(),a=t();return l!==s.e&&X(r,"aria-label",s.e=l),a!==s.t&&X(r,"title",s.t=a),s},{e:void 0,t:void 0}),r})()};ye(["click","mousedown"]);var vl=document.getElementById("root");if(!vl)throw new Error("#root not found");Ol(()=>o(Ld,{}),vl);