@wrongstack/webui-hq 0.309.1 → 0.310.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,16 +1,16 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Bt as t,C as n,Ct as r,Et as i,Ft as a,Ht as o,M as s,Ot as c,Rt as l,S as u,St as d,Vt as f,Wt as p,X as m,Zt as h,_ as g,_t as _,ft as v,g as y,gt as b,ht as x,it as S,kt as C,lt as w,ot as T,pt as E,q as D,r as O,st as k,ut as A,vt as j,zt as M}from"./icons-Cxo3pc0p.js";import{n as ee}from"./vendor-ClUhoD-_.js";import{i as te,n as ne,r as re,t as ie}from"./markdown-jMopG_H4.js";import{s as ae,u as oe}from"./index-CXPBJ_-3.js";var N=e(h(),1),P=te(),se=ee(),{min:F,max:I,abs:ce,floor:le}=Math,ue=(e,t,n)=>F(n,I(t,e)),de=e=>[...e].sort((e,t)=>e-t),fe=typeof queueMicrotask==`function`?queueMicrotask:e=>{Promise.resolve().then(e)},L=()=>{let e;return[new Promise(t=>{e=t}),e]},pe=e=>{let t;return()=>(e&&=(t=e(),void 0),t)},R=(e,t,n)=>{let r=n?`unshift`:`push`;for(let n=0;n<t;n++)e[r](-1);return e},me=(e,t)=>{let n=e.t[t];return n===-1?e.o:n},he=(e,t,n)=>{let r=e.t[t]===-1;return e.t[t]=n,e.i=F(t,e.i),r},z=(e,t)=>{if(!e.l)return 0;if(e.i>=t)return e.u[t];e.i<0&&(e.u[0]=0,e.i=0);let n=e.i,r=e.u[n];for(;n<t;)r+=me(e,n),e.u[++n]=r;return e.i=t,r},B=(e,t,n=0,r=e.l-1)=>{let i=n;for(;n<=r;){let a=le((n+r)/2);z(e,a)<=t?(i=a,n=a+1):r=a-1}return ue(i,0,e.l-1)},ge=(e,t,n)=>{let r=t-e.l;return e.i=n?-1:F(t-1,e.i),e.l=t,r>0?(R(e.u,r),R(e.t,r,n),e.o*r):(e.u.splice(r),(n?e.t.splice(0,-r):e.t.splice(r)).reduce((t,n)=>t-(n===-1?e.o:n),0))},_e=typeof window<`u`,ve=e=>e.documentElement,ye=e=>e.ownerDocument,be=e=>e.defaultView,xe=pe(()=>!!/iP(hone|od|ad)/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&navigator.maxTouchPoints>0),Se=pe(()=>`scrollBehavior`in ve(document).style),Ce=e=>I(e.h(),e.p()),we=(e,t=40,n=0,r,i=!1)=>{let a=!!n,o=1,s=0,c=0,l=0,u=0,d=0,f=0,p=0,m=0,h=null,g=[0,a?I(n-1,0):-1],_=0,v=!1,y=((e,t,n)=>({o:t,t:n?R(n.slice(0,F(e,n.length)),I(0,e-n.length)):R([],e),l:e,i:-1,u:R([],e+1)}))(e,r?r[1]:t,r&&r[0]),b=new Set,x=()=>l-c,S=()=>x()+d+u,C=(e,t)=>((e,t,n,r)=>{if(r=F(r,e.l-1),z(e,r)<=t){let i=B(e,n,r);return[B(e,t,r,i),i]}{let i=B(e,t,void 0,r);return[i,B(e,n,i)]}})(y,e,t,g[0]),w=()=>z(y,y.l),T=(e,t)=>{let n=z(y,e)-d;return t?w()-n-E(e):n},E=e=>me(y,e),D=(e,t=-1)=>y.t[e]===t,O=e=>{e&&(xe()&&p!==0||h&&m===1?d+=e:u+=e)};return{v:()=>{b.clear()},m:()=>o,_:()=>(e=>[e.t.slice(),e.o])(y),S:(e=200)=>{if(!v||a)return g;let t,n;if(f)[t,n]=g;else{let r=I(0,S()),a=r+s;i||(e=I(0,e),p!==1&&(r-=e),p!==2&&(a+=e)),[t,n]=g=C(I(0,r),I(0,a)),h&&(t=F(t,h[0]),n=I(n,h[1]))}return[I(t,0),F(n,y.l-1)]},$:e=>B(y,e-c),I:D,k:T,R:E,T:()=>y.l,C:()=>l,M:()=>p!==0,p:()=>s,O:()=>c,h:w,H:()=>(f=u,u=0,[f,m===2]),W:(e,t)=>{let n=[e,t];return b.add(n),()=>{b.delete(n)}},B:(e,t)=>{let n,r,g=0;switch(e){case 1:{if(t===l&&m===0)break;let e=f;f=0;let n=t-l,i=ce(n);e&&i<ce(e)+1||m!==0||(p=n<0?2:1),a&&=!1,l=t,g=4;let o=x();o>=-s&&o<=w()&&(g+=1,r=i>s);break}case 2:g=8,p!==0&&(n=!0,g+=1),p=0,m=0,h=null;break;case 3:{let e=t.filter(([e,t])=>!D(e,t));if(!e.length)break;O(e.reduce((e,[t,n])=>{let r;if(m===2)r=!0;else if(h&&m===1)r=t<h[0];else{let e=x(),n=T(t),i=E(t);r=p!==1&&m===0?n+i<=e:n<e&&n+i<e+s}return r&&(e+=n-E(t)),e},0));for(let[t,n]of e){let e=E(t),r=he(y,t,n);i&&(_+=r?n:n-e)}i&&s&&_>s&&(O(((e,t)=>{let n=0,r=[];e.t.forEach((e,i)=>{e!==-1&&(r.push(e),i<t&&n++)}),e.i=-1;let i=de(r),a=i.length,o=a/2|0,s=a%2==0?(i[o-1]+i[o])/2:i[o],c=e.o;return((e.o=s)-c)*I(t-n,0)})(y,B(y,S()))),i=!1),g=3,r=!0;break}case 4:s!==t&&(s||(v=r=!0),s=t,g=3);break;case 5:t[1]?(O(ge(y,t[0],!0)),m=2,g=1):(ge(y,t[0]),g=1);break;case 6:c=t;break;case 7:m=1;break;case 8:h=C(t,t+s),g=1}g&&(o=1+(2147483647&o),n&&d&&(u+=d,d=0),b.forEach(([e,t])=>{g&e&&t(r)}))}}},V=setTimeout,H=(e,t)=>t?-e:e,Te=(e,t,n,r,i,a)=>{let o=Date.now,s=0,c=!1,l=!1,u=!1,d=!1,f=(()=>{let t,n=()=>{t!=null&&clearTimeout(t)},r=()=>{n(),t=V(()=>{t=null,(()=>{if(c||l)return c=!1,void f();u=!1,e.B(2)})()},150)};return r.J=n,r})(),p=()=>{s=o(),u&&(d=!0),a&&e.B(6,a()),e.B(1,r()),f()},m=t=>{if(c||!e.M()||t.ctrlKey)return;let r=o()-s;150>r&&50<r&&(n?t.deltaX:t.deltaY)&&(c=!0)},h=()=>{l=!0,u=d=!1},g=()=>{l=!1,xe()&&(u=!0)};return t.addEventListener(`scroll`,p),t.addEventListener(`wheel`,m,{passive:!0}),t.addEventListener(`touchstart`,h,{passive:!0}),t.addEventListener(`touchend`,g,{passive:!0}),{A:()=>{t.removeEventListener(`scroll`,p),t.removeEventListener(`wheel`,m),t.removeEventListener(`touchstart`,h),t.removeEventListener(`touchend`,g),f.J()},L:()=>{let[t,n]=e.H();t&&(i(t,n,d),d=!1,n&&e.p()>e.h()&&e.B(1,r()))}}},Ee=(e,t,n)=>{let r;return[async(i,a)=>{if(!await t())return;r&&r();let o=()=>{let[t,n]=L();return r=()=>{n(!1)},e.p()&&V(r,150),[t,e.W(2,()=>{n(!0)})]};if(a&&Se())e.B(8,i()),fe(async()=>{for(;;){let t=!0;for(let[n,r]=e.S();n<=r;n++)if(e.I(n)){t=!1;break}if(t)break;let[n,r]=o();try{if(!await n)return}finally{r()}}e.B(7),n(i(),a)});else for(;;){let[t,r]=o();try{if(e.B(7),n(i()),!await t)return}finally{r()}}},()=>{r&&r()}]},De=(e,t)=>{let n,r,i=L(),a=!1,o=t?`scrollLeft`:`scrollTop`,s=t?`overflowX`:`overflowY`,[c,l]=Ee(e,()=>i[0],(e,r)=>{e=H(e,a),r?n.scrollTo({[t?`left`:`top`]:e,behavior:`smooth`}):n[o]=e});return{N(c,u){n=u,t&&(a=getComputedStyle(u).direction===`rtl`),r=Te(e,u,t,()=>H(u[o],a),(t,n,r)=>{if(r){let e=u.style,t=e[s];e[s]=`hidden`,V(()=>{e[s]=t})}u[o]=H(e.C()+t,a),n&&l()}),i[1](!0)},v(){r&&r.A(),i[1](!1),i=L()},P:()=>a,V(e){c(()=>e)},X(t){t+=e.C(),c(()=>t)},Y(t,{align:n,smooth:r,offset:i=0}={}){if(t=ue(t,0,e.T()-1),n===`nearest`){let r=e.k(t),i=e.C();if(r<i)n=`start`;else{if(!(r+e.R(t)>i+e.p()))return;n=`end`}}c(()=>i+e.O()+e.k(t)+(n===`end`?e.R(t)-e.p():n===`center`?(e.R(t)-e.p())/2:0),r)},q:()=>{r&&r.L()}}},Oe=e=>{let t;return{j(n){(t||=new(be(ye(n))).ResizeObserver(e)).observe(n)},D(e){t.unobserve(e)},A(){t&&t.disconnect()}}},ke=(e,t)=>{let n,r=t?`width`:`height`,i=new WeakMap,a=Oe(t=>{let a=[];for(let{target:o,contentRect:s}of t)if(o.offsetParent){if(o===n)e.B(4,s[r]);else{let e=i.get(o);e!=null&&a.push([e,s[r]])}}a.length&&e.B(3,a)});return{G(e){a.j(n=e)},U:(e,t)=>(i.set(e,t),a.j(e),()=>{i.delete(e),a.D(e)}),v:a.A}},U=_e?N.useLayoutEffect:N.useEffect,W=`current`,Ae=(e,t)=>{if(Array.isArray(e))for(let n of e)Ae(n,t);else e==null||typeof e==`boolean`||t.push(e)},je=(e,t)=>e.key??`_`+t,Me=e=>{let t=(0,N.useRef)(null);return t.current||=e()},Ne=e=>{let t=(0,N.useRef)(e);return U(()=>{t[W]=e},[e]),t},Pe=(0,N.memo)(({Z:e,ee:t,te:n,oe:r,ne:i,re:a,ie:o,se:s})=>{let c=(0,N.useRef)(null);U(()=>t(c[W],n),[n]);let l=(0,N.useMemo)(()=>{let e={contain:`layout style`,position:i&&s?void 0:`absolute`,[o?`height`:`width`]:`100%`,[o?`top`:`left`]:0,[o?`left`:`top`]:r,visibility:!i||s?void 0:`hidden`};return o&&(e.display=`inline-flex`),e},[r,i,s,o]);return(0,P.jsx)(a,typeof a==`string`?{ref:c,style:l,children:e}:{ref:c,style:l,index:n,children:e})}),Fe=(e,t)=>(0,N.useMemo)(()=>{if(typeof e==`function`)return[n=>e(t[n],n),t.length];let n=(e=>{let t=[];return Ae(e,t),t})(e);return[e=>n[e],n.length]},[e,t]),Ie=(0,N.forwardRef)(({children:e,data:t,bufferSize:n,itemSize:r,shift:i,horizontal:a,keepMounted:o,cache:s,startMargin:c=0,ssrCount:l,as:u=`div`,item:d=`div`,scrollRef:f,onScroll:p,onScrollEnd:m},h)=>{let[g,_]=Fe(e,t),v=(0,N.useRef)(null),y=(0,N.useRef)(!!l),b=Ne(p),x=Ne(m),[S,C,w,T]=Me(()=>{let e=!!a,t=we(_,r,l,s,!r);return[t,ke(t,e),De(t,e),e]});_!==S.T()&&S.B(5,[_,i]),c!==S.O()&&S.B(6,c);let[E,D]=(0,N.useReducer)(S.m,void 0,S.m),O=S.M(),k=S.h(),A=w.P(),j=[],M=e=>{let t=g(e);return(0,P.jsx)(Pe,{ee:C.U,te:e,oe:S.k(e,A),ne:S.I(e),re:d,Z:t,ie:T,se:y[W]},je(t,e))};if(U(()=>{y[W]=!1,S.W(1,e=>{e?(0,se.flushSync)(D):D()}),S.W(4,()=>{b.current&&b.current(S.C())}),S.W(8,()=>{x.current&&x.current()});let e=v[W],t=t=>{C.G(t),w.N(e,t)};return f?fe(()=>{f.current&&t(f[W])}):t(e.parentElement),()=>{S.v(),C.v(),w.v()}},[]),U(()=>{w.q()},[E]),(0,N.useImperativeHandle)(h,()=>({get cache(){return S._()},get scrollOffset(){return S.C()},get scrollSize(){return Ce(S)},get viewportSize(){return S.p()},findItemIndex:S.$,getItemOffset:S.k,getItemSize:S.R,scrollToIndex:w.Y,scrollTo:w.V,scrollBy:w.X}),[]),o){let e=new Set(o);for(let[t,r]=S.S(n);t<=r;t++)e.add(t);de([...e]).forEach(e=>{j.push(M(e))})}else for(let[e,t]=S.S(n);e<=t;e++)j.push(M(e));return(0,P.jsx)(u,{ref:v,style:{contain:`size style`,overflowAnchor:`none`,flex:`none`,position:`relative`,width:T?k:`100%`,height:T?`100%`:k,pointerEvents:O?`none`:void 0},children:j})}),Le=(0,N.forwardRef)(({children:e,data:t,bufferSize:n,itemSize:r,shift:i,horizontal:a,keepMounted:o,cache:s,ssrCount:c,item:l,onScroll:u,onScrollEnd:d,style:f,...p},m)=>(0,P.jsx)(`div`,{...p,style:{display:a?`inline-block`:`block`,[a?`overflowX`:`overflowY`]:`auto`,contain:`strict`,width:`100%`,height:`100%`,...f},children:(0,P.jsx)(Ie,{ref:m,data:t,bufferSize:n,itemSize:r,shift:i,horizontal:a,keepMounted:o,cache:s,ssrCount:c,item:l,onScroll:u,onScrollEnd:d,children:e})}));function G(){return{entries:[],seen:new Set,consumedBatches:new Set,openTools:new Map,rev:0}}function Re(e){return(e.role===`tool`||e.role===`error`)&&e.toolUseId!==void 0&&e.toolInput===void 0}function ze(e){return e.toolUseId!==void 0&&e.toolInput!==void 0?`tu:${e.toolUseId}`:`${e.ts}|${e.role}|${e.tool??``}|${e.text}`}function Be(e,t){let n={...t};if(Re(n)){let t=n.toolUseId===void 0?void 0:e.openTools.get(n.toolUseId);if(t!==void 0){let r={...e.entries[t]};r.text=n.text||``,n.durationMs!==void 0&&(r.durationMs=n.durationMs),n.isError&&(r.role=`error`,r.isError=!0),e.entries[t]=r;return}}let r=ze(n);e.seen.has(r)||(e.seen.add(r),n.role===`tool`&&n.toolUseId!==void 0&&n.toolInput!==void 0&&e.openTools.set(n.toolUseId,e.entries.length),e.entries.push(n))}function Ve(e,t){let n=G();n.rev=e.rev+1;for(let e of t)Be(n,e);return n}function He(e,t,n){if(n.length===0)return e;let r=t===void 0?`k:${ze(n[0])}:${n.length}`:`${t}:${n.length}`;if(e.consumedBatches.has(r))return e;let i={entries:[...e.entries],seen:new Set(e.seen),consumedBatches:new Set(e.consumedBatches),openTools:new Map(e.openTools),rev:e.rev+1};i.consumedBatches.add(r);for(let e of n)Be(i,e);return i}function K(e){return e.role===`tool`&&e.toolInput!==void 0&&e.text===``&&e.durationMs===void 0&&e.isError!==!0}function Ue(e,t){return`${t}:${e.ts}:${e.role}:${e.toolUseId??``}`}function We(e){let t=[],n=e=>(e.role===`assistant`||e.role===`thinking`)&&e.tool===void 0&&e.toolUseId===void 0&&e.isError!==!0;for(let r of e){let e=t[t.length-1];e!==void 0&&n(r)&&n(e)&&e.role===r.role&&(e.agentId??``)===(r.agentId??``)?t[t.length-1]={...e,text:e.text+r.text}:t.push(r)}return t}function Ge(e){let t=e.kind===`thinking`?`thinking`:e.kind===`tool_use`||e.kind===`tool_result`?`tool`:e.kind===`error`?`error`:e.kind===`system`||e.kind===`status`?`system`:`assistant`;return{ts:e.ts,role:t,text:e.content,...e.toolName===void 0?{}:{tool:e.toolName},...e.kind===`error`?{isError:!0}:{},agentId:e.subagentId}}function Ke(e,t){let n=oe(e=>e.events),r=t!==null&&t!==`leader`,[i,a]=(0,N.useState)(G),[o,s]=(0,N.useState)(!1),[c,l]=(0,N.useState)(null),[u,d]=(0,N.useState)(!1),[f,p]=(0,N.useState)({total:0}),m=(0,N.useRef)(null),[h,g]=(0,N.useState)(!0),_=(0,N.useRef)(!0),v=e=>{_.current=e,g(e)},y=(0,N.useRef)(i);y.current=i;let[b,x]=(0,N.useState)([]),[S,C]=(0,N.useState)(!1);(0,N.useEffect)(()=>{if(x([]),t===null||e===null||!r)return;let n=!1;return C(!0),ae(`/api/sessions/${encodeURIComponent(e)}/agents/${encodeURIComponent(t)}/messages?full=1`).then(e=>{n||(x((e.entries??[]).map(e=>({...e,agentId:t}))),p(t=>({...t,source:e.source})),C(!1))}).catch(()=>{n||C(!1)}),()=>{n=!0}},[t,e,r]);let w=(0,N.useMemo)(()=>{if(!r||t===null)return[];let i=n.filter(t=>t.type===`agent.message`&&(t.sessionId===void 0||t.sessionId===e)).map(e=>e.payload).filter(e=>e.subagentId===t).map(e=>({...Ge(e),agentId:t})),a=new Set,o=[];for(let e of[...b,...i]){let t=`${e.ts}|${e.role}|${e.text}`;a.has(t)||(a.add(t),o.push(e))}return We(o)},[b,n,t,e,r]);(0,N.useEffect)(()=>{if(e===null||r)return;let t=!1;return s(!0),l(null),_.current=!0,g(!0),ae(`/api/sessions/${encodeURIComponent(e)}/events?${u?`full=1`:`limit=1000`}`).then(e=>{t||(a(t=>Ve(t,e.entries)),p({source:e.source,projectName:e.projectName,total:e.total}),s(!1))}).catch(e=>{t||(l(e.message),s(!1))}),()=>{t=!0}},[e,u,r]),(0,N.useEffect)(()=>{a(G()),p({total:0}),d(!1)},[e,t]),(0,N.useEffect)(()=>{if(e===null||r)return;let t=y.current;for(let r of n){if(r.type!==`session.transcript`||r.sessionId!==e)continue;let n=r.payload;Array.isArray(n.entries)&&(t=He(t,n.fromSeq,n.entries))}t!==y.current&&a(t)},[n,e,r]);let T=(0,N.useMemo)(()=>We(i.entries),[i.entries]),E=r?w:T;(0,N.useEffect)(()=>{_.current&&E.length>0&&m.current?.scrollToIndex(E.length-1,{align:`end`})},[E.length,i.rev]);let D=()=>{let e=m.current;e&&v(e.scrollSize-e.scrollOffset-e.viewportSize<80)},O=()=>{v(!0),m.current?.scrollToIndex(E.length-1,{align:`end`})},k=Math.max(0,E.length-8),A=(e,t)=>K(e)&&t>=k,j=(0,N.useMemo)(()=>{let e=0,t=0,n=0;for(let r=0;r<E.length;r++){let i=E[r];i.tool!==void 0&&e++,(i.role===`error`||i.isError)&&t++,K(i)&&r>=k&&n++}return{turns:E.length,tools:e,errors:t,running:n}},[E,k]);return{entries:E,loading:r?S:o,error:c,meta:f,full:u,setFull:d,stats:j,isRunningAt:A,listRef:m,onScroll:D,pinned:h,jumpToLatest:O}}function qe({text:e,label:t}){let[n,i]=(0,N.useState)(!1);return(0,P.jsxs)(`button`,{type:`button`,className:`hq-copy-btn`,onClick:()=>{navigator.clipboard?.writeText(e).then(()=>{i(!0),setTimeout(()=>i(!1),1200)},()=>{})},title:`Copy to clipboard`,children:[n?(0,P.jsx)(o,{size:12}):(0,P.jsx)(r,{size:12}),t!==void 0&&(0,P.jsx)(`span`,{children:n?`copied`:t})]})}function q(e){return e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(q).join(``):(0,N.isValidElement)(e)?q(e.props.children):``}var Je={a:({children:e,href:t})=>(0,P.jsx)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,children:e}),table:({children:e})=>(0,P.jsx)(`div`,{className:`hq-md-table-wrap`,children:(0,P.jsx)(`table`,{children:e})}),pre:({children:e})=>{let t=Array.isArray(e)?e[0]:e,n=(0,N.isValidElement)(t)?t.props:void 0,r=/language-(\w+)/.exec(n?.className??``)?.[1],i=q(n?.children).replace(/\n$/,``),a=i===``?0:i.split(`
2
- `).length;return(0,P.jsxs)(`div`,{className:`hq-md-code`,children:[(0,P.jsxs)(`div`,{className:`hq-md-code-bar`,children:[(0,P.jsx)(`span`,{className:`hq-md-code-lang`,children:r??`text`}),(0,P.jsxs)(`span`,{className:`hq-md-code-meta`,children:[a,` line`,a===1?``:`s`]}),(0,P.jsx)(qe,{text:i})]}),(0,P.jsx)(`pre`,{children:e})]})}},Ye=(0,N.memo)(function({text:e}){return(0,P.jsx)(`div`,{className:`hq-md`,children:(0,P.jsx)(re,{remarkPlugins:[ie],rehypePlugins:[ne],components:Je,children:e})})}),Xe={file:{color:`#60a5fa`},edit:{color:`#fbbf24`},search:{color:`#a78bfa`},folder:{color:`#38bdf8`},terminal:{color:`#67e8f9`},web:{color:`#34d399`},git:{color:`#a3e635`},tree:{color:`#22d3ee`},code:{color:`#818cf8`},test:{color:`#4ade80`},package:{color:`#f472b6`},document:{color:`#94a3b8`},scaffold:{color:`#c084fc`},todo:{color:`#facc15`},plan:{color:`#2dd4bf`},task:{color:`#5eead4`},meta:{color:`#cbd5e1`},index:{color:`#06b6d4`},json:{color:`#eab308`},diff:{color:`#93c5fd`},logs:{color:`#a3a3a3`},settings:{color:`#9ca3af`},brain:{color:`#e879f9`},fallback:{color:`#9ca3af`}},Ze={read:`file`,cat:`file`,view:`file`,write:`file`,create:`file`,edit:`edit`,replace:`edit`,str_replace:`edit`,multi_edit:`edit`,patch:`edit`,grep:`search`,search:`search`,rg:`search`,ripgrep:`search`,glob:`folder`,find:`search`,folder:`folder`,ls:`folder`,list:`folder`,set_working_dir:`folder`,tree:`tree`,bash:`terminal`,shell:`terminal`,sh:`terminal`,exec:`terminal`,run:`terminal`,command:`terminal`,fetch:`web`,web_fetch:`web`,web_search:`web`,git:`git`,diff:`diff`,lint:`code`,format:`settings`,typecheck:`code`,language_info:`code`,language:`code`,language_package:`package`,test:`test`,install:`package`,outdated:`package`,audit:`package`,document:`document`,scaffold:`scaffold`,todo:`todo`,plan:`plan`,task:`task`,json:`json`,index:`index`,logs:`logs`,mode:`meta`,tool_search:`meta`,tool_use:`meta`,batch_tool_use:`meta`,tool_help:`meta`,remember:`brain`,forget:`brain`,search_memory:`brain`,find_related_memories:`brain`,memory_for_file:`brain`,memory_for_path:`brain`,memory_search:`brain`,memory_graph:`brain`,memory_verify:`brain`,memory_hygiene:`brain`,memory_candidates:`brain`,lsp_diagnostics:`code`,lsp_definition:`search`,lsp_completion:`code`,lsp_rename:`edit`,"codebase-lsp-search":`index`};function Qe(e){return e?Ze[e.toLowerCase()]??`fallback`:`fallback`}var $e={file:b,edit:_,search:u,folder:E,terminal:y,web:k,git:A,tree:v,code:i,test:x,package:s,document:n,scaffold:T,todo:D,plan:c,task:m,meta:O,index:d,json:j,diff:w,logs:S,settings:g,brain:p,fallback:O};function et(e){let t=Qe(e??``);return{Icon:$e[t],color:Xe[t].color}}var tt=[`path`,`file_path`,`pattern`,`symbol`,`command`,`cmd`,`url`,`query`,`description`,`content`];function J(e,t){return e.length>t?`${e.slice(0,t-1)}\u2026`:e}function Y(e){let t=e.file_path??e.path??e.filepath;return typeof t==`string`?t:``}function nt(e){try{return JSON.stringify(e)}catch{return String(e)}}function rt(e){if(typeof e==`string`){let t=e.trim();if(t.startsWith(`{`)||t.startsWith(`[`))try{let e=JSON.parse(t);if(e&&typeof e==`object`)return{obj:e,raw:e}}catch{}return{obj:null,raw:e}}return e&&typeof e==`object`?{obj:e,raw:e}:{obj:null,raw:e}}function it(e,t){if(t==null||t===``)return``;let{obj:n,raw:r}=rt(t);if(!n)return J(String(r),120);let i=(e??``).toLowerCase();if(/^todo(_?write)?$|^todos$/.test(i)||Array.isArray(n.todos)){let e=n.todos??[];if(Array.isArray(e)){let t=e.filter(e=>e?.status===`completed`).length,n=e.filter(e=>e?.status===`in_progress`).length,r=[`${e.length} todo${e.length===1?``:`s`}`];return t>0&&r.push(`${t} done`),n>0&&r.push(`${n} in-progress`),r.join(` · `)}}if(/batch|parallel/.test(i)||Array.isArray(n.tool_uses)||Array.isArray(n.calls)){let e=n.tool_uses??n.calls??n.batch;if(Array.isArray(e)){let t=new Set;for(let n of e)n&&typeof n==`object`&&`name`in n?t.add(String(n.name)):n&&typeof n==`object`&&`tool`in n&&t.add(String(n.tool));let n=[...t].slice(0,3).join(`, `),r=t.size>3?` +${t.size-3}`:``;return`${e.length} sub-tool${e.length===1?``:`s`}${n?` \xB7 ${n}${r}`:``}`}}if(i===`patch`&&typeof n.patch==`string`&&n.patch){let e=(n.patch.match(/^\+\+\+ /gm)??[]).length;return e>0?`patch \xB7 ${e} file${e===1?``:`s`}`:`patch \xB7 ${n.patch.split(`
3
- `).length} lines`}if(/^(edit|str_replace|edit_file|patch)$/.test(i)){let e=Y(n),t=typeof n.old_string==`string`?n.old_string:``,r=typeof n.new_string==`string`?n.new_string:``,i=t?t.split(`
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Bt as t,C as n,Ct as r,Et as i,Ft as a,Ht as o,M as s,Ot as c,Rt as l,S as u,St as d,Vt as f,Wt as p,X as m,Zt as h,_ as g,_t as _,ft as v,g as y,gt as b,ht as x,it as S,kt as C,lt as w,ot as T,pt as E,q as D,r as O,st as k,ut as A,vt as j,zt as M}from"./icons-Cxo3pc0p.js";import{n as ee}from"./vendor-ClUhoD-_.js";import{i as te,n as ne,r as re,t as ie}from"./markdown-jMopG_H4.js";import{s as ae,u as oe}from"./index-BYuL7DL0.js";var N=e(h(),1),P=te(),se=ee(),{min:F,max:I,abs:ce,floor:le}=Math,ue=(e,t,n)=>F(n,I(t,e)),de=e=>[...e].sort((e,t)=>e-t),L=setTimeout,fe=typeof queueMicrotask==`function`?queueMicrotask:e=>{Promise.resolve().then(e)},R=()=>{let e;return[new Promise(t=>{e=t}),e]},z=e=>{let t;return()=>(e&&=(t=e(),void 0),t)},pe=typeof window<`u`,me=e=>e.documentElement,he=e=>e.ownerDocument,ge=e=>e.defaultView,B=z(()=>!!/iP(hone|od|ad)/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&navigator.maxTouchPoints>0),_e=z(()=>`scrollBehavior`in me(document).style),ve=e=>I(e.t(),e.o()),ye=({i:e,l:t,u:n,h:r,S:i,m:a,t:o,p:s,v:c,$:l},u=0)=>{let d=!!l,f=!!u,p=1,m=0,h=0,g=0,_=0,v=0,y=0,b=0,x=0,S=null,C=[0,f?I(u-1,0):-1],w=0,T=!1,E=new Set,D=()=>g-h,O=()=>D()+v+_,k=(e,t)=>{let i=n(e)-v;return t?o()-i-r(e):i},A=e=>{e&&(B()&&b!==0||S&&x===1?v+=e:_+=e)};return{_:()=>{E.clear()},I:()=>p,i:(t=200)=>{if(!T||f)return C;let n,r;if(y)[n,r]=C;else{let i=I(0,O()),a=i+m;d||(t=I(0,t),b!==1&&(i-=t),b!==2&&(a+=t)),[n,r]=C=e(I(0,i),I(0,a)),S&&(n=F(n,S[0]),r=I(r,S[1]))}return[I(n,0),F(r,s()-1)]},k:e=>t(e-h),R:a,u:k,h:r,C:s,T:()=>g,M:()=>b!==0,o:()=>m,O:()=>h,t:o,L:()=>(y=_,_=0,[y,x===2]),H:(e,t)=>{let n=[e,t];return E.add(n),()=>{E.delete(n)}},W:(n,s)=>{let u,C,j=0;switch(n){case 1:{if(s===g&&x===0)break;let e=y;y=0;let t=s-g,n=ce(t);e&&n<ce(e)+1||x!==0||(b=t<0?2:1),f&&=!1,g=s,j=4;let r=D();r>=-m&&r<=o()&&(j+=1,C=n>m);break}case 2:j=8,b!==0&&(u=!0,j+=1),b=0,x=0,S=null;break;case 3:{let e=s.filter(([e,t])=>!a(e,t));if(!e.length)break;A(e.reduce((e,[t,n])=>{let i;if(x===2)i=!0;else if(S&&x===1)i=t<S[0];else{let e=D(),n=k(t),a=r(t);i=b!==1&&x===0?n+a<=e:n<e&&n+a<e+m}return i&&(e+=n-r(t)),e},0));for(let[t,n]of e){let e=r(t),a=i(t,n);d&&(w+=a?n:n-e)}d&&m&&w>m&&(A(l(t(O()))),d=!1),j=3,C=!0;break}case 4:m!==s&&(m||(T=C=!0),m=s,j=3);break;case 5:s[1]?(A(c(s[0],!0)),x=2,j=1):(c(s[0]),j=1);break;case 6:h=s;break;case 7:x=1;break;case 8:S=e(s,s+m),j=1}j&&(p=1+(2147483647&p),u&&v&&(_+=v,v=0),E.forEach(([e,t])=>{j&e&&t(C)}))}}},V=(e,t,n,r=0,i=t-1)=>{let a=r;for(;r<=i;){let t=le((r+i)/2);e(t)<=n?(a=t,r=t+1):i=t-1}return ue(a,0,t-1)},H=(e,t,n)=>{let r=n?`unshift`:`push`;for(let n=0;n<t;n++)e[r](-1);return e},be=(e,t,n)=>{let r=n&&n[1]||t||40,i=-1,a=0,o=n&&n[0],s=o?H(o.slice(0,F(e,o.length)),I(0,e-o.length)):H([],e),c=H([],e+1),l=e=>{let t=s[e];return t===-1?r:t},u=t=>{if(!e)return 0;if(i>=t)return c[t];i<0&&(c[0]=0,i=0);let n=i,r=c[n];for(;n<t;)r+=l(n),c[++n]=r;return i=t,r};return{i:(t,n)=>{let r,i;return a=F(a,e-1),u(a)<=t?(i=V(u,e,n,a),r=V(u,e,t,a,i)):(r=V(u,e,t,void 0,a),i=V(u,e,n,r)),a=r,[r,i]},l:t=>V(u,e,t),u,h:l,S:(e,t)=>{let n=s[e]===-1;return s[e]=t,i=F(e,i),n},m:(e,t=-1)=>s[e]===t,t:()=>u(e),p:()=>e,v:(t,n)=>{let a=t-e;return i=n?-1:F(t-1,i),e=t,a>0?(H(c,a),H(s,a,n),r*a):(c.splice(a),(n?s.splice(0,-a):s.splice(a)).reduce((e,t)=>e-(t===-1?r:t),0))},$:t?void 0:e=>{let t=0,n=[];s.forEach((r,i)=>{r!==-1&&(n.push(r),i<e&&t++)}),i=-1;let a=de(n),o=a.length,c=o/2|0,l=o%2==0?(a[c-1]+a[c])/2:a[c],u=r;return((r=l)-u)*I(e-t,0)},B:()=>[s.slice(),r]}},xe=e=>{let t;return{J(n){(t||=new(ge(he(n))).ResizeObserver(e)).observe(n)},X(e){t.unobserve(e)},Y(){t&&t.disconnect()}}},U=(e,t)=>t?-e:e,Se=(e,t,n,r,i,a)=>{let o=Date.now,s=0,c=!1,l=!1,u=!1,d=!1,f=(()=>{let t,n=()=>{t!=null&&clearTimeout(t)},r=()=>{n(),t=L(()=>{t=null,(()=>{if(c||l)return c=!1,void f();u=!1,e.W(2)})()},150)};return r.q=n,r})(),p=()=>{s=o(),u&&(d=!0),a&&e.W(6,a()),e.W(1,r()),f()},m=t=>{if(c||!e.M()||t.ctrlKey)return;let r=o()-s;150>r&&50<r&&(n?t.deltaX:t.deltaY)&&(c=!0)},h=()=>{l=!0,u=d=!1},g=()=>{l=!1,B()&&(u=!0)};return t.addEventListener(`scroll`,p),t.addEventListener(`wheel`,m,{passive:!0}),t.addEventListener(`touchstart`,h,{passive:!0}),t.addEventListener(`touchend`,g,{passive:!0}),{Y:()=>{t.removeEventListener(`scroll`,p),t.removeEventListener(`wheel`,m),t.removeEventListener(`touchstart`,h),t.removeEventListener(`touchend`,g),f.q()},A:()=>{let[t,n]=e.L();t&&(i(t,n,d),d=!1,n&&e.o()>e.t()&&e.W(1,r()))}}},Ce=(e,t,n)=>{let r;return[async(i,a)=>{if(!await t())return;r&&r();let o=()=>{let[t,n]=R();return r=()=>{n(!1)},e.o()&&L(r,150),[t,e.H(2,()=>{n(!0)})]};if(a&&_e())e.W(8,i()),fe(async()=>{for(;;){let t=!0;for(let[n,r]=e.i();n<=r;n++)if(e.R(n)){t=!1;break}if(t)break;let[n,r]=o();try{if(!await n)return}finally{r()}}e.W(7),n(i(),a)});else for(;;){let[t,r]=o();try{if(e.W(7),n(i()),!await t)return}finally{r()}}},()=>{r&&r()}]},we=(e,t)=>{let n,r,i=R(),a=!1,o=t?`scrollLeft`:`scrollTop`,s=t?`overflowX`:`overflowY`,[c,l]=Ce(e,()=>i[0],(e,r)=>{e=U(e,a),r?n.scrollTo({[t?`left`:`top`]:e,behavior:`smooth`}):n[o]=e}),u=t?`width`:`height`,d=new WeakMap,f=xe(t=>{let r=[];for(let{target:i,contentRect:a}of t)if(i.offsetParent){if(i===n)e.W(4,a[u]);else{let e=d.get(i);e!=null&&r.push([e,a[u]])}}r.length&&e.W(3,r)});return{D(c,u=c.parentElement){f.J(n=u),t&&(a=getComputedStyle(u).direction===`rtl`),r=Se(e,u,t,()=>U(u[o],a),(t,n,r)=>{if(r){let e=u.style,t=e[s];e[s]=`hidden`,L(()=>{e[s]=t})}u[o]=U(e.T()+t,a),n&&l()}),i[1](!0)},_(){f.Y(),r&&r.Y(),i[1](!1),i=R()},N:(e,t)=>(d.set(e,t),f.J(e),()=>{d.delete(e),f.X(e)}),P:()=>a,V:c,j(){r&&r.A()},G:e.O,U:()=>0}},Te=(e,t)=>{e.V(()=>t)},Ee=(e,t,n,{align:r,smooth:i,offset:a=0}={})=>{if(n=ue(n,0,t.C()-1),r===`nearest`){let e=t.u(n),i=t.T();if(e<i)r=`start`;else{if(!(e+t.h(n)>i+t.o()))return;r=`end`}}e.V(()=>a+e.G()+t.u(n)+(r===`end`?t.h(n)-(t.o()-e.U()):r===`center`?(t.h(n)-(t.o()-e.U()))/2:0),i)},W=pe?N.useLayoutEffect:N.useEffect,G=`current`,De=(e,t)=>{if(Array.isArray(e))for(let n of e)De(n,t);else e==null||typeof e==`boolean`||t.push(e)},Oe=(e,t)=>e.key??`_`+t,ke=e=>{let t=(0,N.useRef)(null);return t.current||=e()},Ae=e=>{let t=(0,N.useRef)(e);return W(()=>{t[G]=e},[e]),t},je=(0,N.memo)(({te:e,oe:t,ne:n,re:r,ie:i,se:a,le:o,ce:s})=>{let c=(0,N.useRef)(null);W(()=>t(c[G],n),[n]);let l=(0,N.useMemo)(()=>{let e={contain:`layout style`,position:i&&s?void 0:`absolute`,[o?`height`:`width`]:`100%`,[o?`top`:`left`]:0,[o?`left`:`top`]:r,visibility:!i||s?void 0:`hidden`};return o&&(e.display=`inline-flex`),e},[r,i,s,o]);return(0,P.jsx)(a,typeof a==`string`?{ref:c,style:l,children:e}:{ref:c,style:l,index:n,children:e})}),Me=(e,t)=>(0,N.useMemo)(()=>{if(typeof e==`function`)return[n=>e(t[n],n),t.length];let n=(e=>{let t=[];return De(e,t),t})(e);return[e=>n[e],n.length]},[e,t]),Ne=(0,N.forwardRef)(({children:e,data:t,bufferSize:n,itemSize:r,shift:i,horizontal:a,keepMounted:o,cache:s,startMargin:c=0,ssrCount:l,as:u=`div`,item:d=`div`,scrollRef:f,onScroll:p,onScrollEnd:m},h)=>{let[g,_]=Me(e,t),v=(0,N.useRef)(null),y=(0,N.useRef)(!!l),b=Ae(p),x=Ae(m),[S,C,w,T]=ke(()=>{let e=!!a,t=be(_,r,s),n=ye(t,l);return[n,t,we(n,e),e]});_!==S.C()&&S.W(5,[_,i]),c!==S.O()&&S.W(6,c);let[E,D]=(0,N.useReducer)(S.I,void 0,S.I),O=S.M(),k=S.t(),A=w.P(),j=[],M=e=>{let t=g(e);return(0,P.jsx)(je,{oe:w.N,ne:e,re:S.u(e,A),ie:S.R(e),se:d,te:t,le:T,ce:y[G]},Oe(t,e))};if(W(()=>{y[G]=!1,S.H(1,e=>{e?(0,se.flushSync)(D):D()}),S.H(4,()=>{b.current&&b.current(S.T())}),S.H(8,()=>{x.current&&x.current()});let e=v[G];return f?fe(()=>{f.current&&w.D(e,f[G])}):w.D(e),()=>{S._(),w._()}},[]),W(()=>{w.j()},[E]),(0,N.useImperativeHandle)(h,()=>({get cache(){return C.B()},get scrollOffset(){return S.T()},get scrollSize(){return ve(S)},get viewportSize(){return S.o()},findItemIndex:S.k,getItemOffset:S.u,getItemSize:S.h,scrollToIndex:(e,t)=>Ee(w,S,e,t),scrollTo:e=>Te(w,e),scrollBy:e=>((e,t,n)=>{Te(e,n+t.T())})(w,S,e)}),[]),o){let e=new Set(o);for(let[t,r]=S.i(n);t<=r;t++)e.add(t);de([...e]).forEach(e=>{j.push(M(e))})}else for(let[e,t]=S.i(n);e<=t;e++)j.push(M(e));return(0,P.jsx)(u,{ref:v,style:{contain:`size style`,overflowAnchor:`none`,flex:`none`,position:`relative`,width:T?k:`100%`,height:T?`100%`:k,pointerEvents:O?`none`:void 0},children:j})}),Pe=(0,N.forwardRef)(({children:e,data:t,bufferSize:n,itemSize:r,shift:i,horizontal:a,keepMounted:o,cache:s,ssrCount:c,item:l,onScroll:u,onScrollEnd:d,style:f,...p},m)=>(0,P.jsx)(`div`,{...p,style:{display:a?`inline-block`:`block`,[a?`overflowX`:`overflowY`]:`auto`,contain:`strict`,width:`100%`,height:`100%`,...f},children:(0,P.jsx)(Ne,{ref:m,data:t,bufferSize:n,itemSize:r,shift:i,horizontal:a,keepMounted:o,cache:s,ssrCount:c,item:l,onScroll:u,onScrollEnd:d,children:e})}));function K(){return{entries:[],seen:new Set,consumedBatches:new Set,openTools:new Map,rev:0}}function Fe(e){return(e.role===`tool`||e.role===`error`)&&e.toolUseId!==void 0&&e.toolInput===void 0}function Ie(e){return e.toolUseId!==void 0&&e.toolInput!==void 0?`tu:${e.toolUseId}`:`${e.ts}|${e.role}|${e.tool??``}|${e.text}`}function Le(e,t){let n={...t};if(Fe(n)){let t=n.toolUseId===void 0?void 0:e.openTools.get(n.toolUseId);if(t!==void 0){let r={...e.entries[t]};r.text=n.text||``,n.durationMs!==void 0&&(r.durationMs=n.durationMs),n.isError&&(r.role=`error`,r.isError=!0),e.entries[t]=r;return}}let r=Ie(n);e.seen.has(r)||(e.seen.add(r),n.role===`tool`&&n.toolUseId!==void 0&&n.toolInput!==void 0&&e.openTools.set(n.toolUseId,e.entries.length),e.entries.push(n))}function Re(e,t){let n=K();n.rev=e.rev+1;for(let e of t)Le(n,e);return n}function ze(e,t,n){if(n.length===0)return e;let r=t===void 0?`k:${Ie(n[0])}:${n.length}`:`${t}:${n.length}`;if(e.consumedBatches.has(r))return e;let i={entries:[...e.entries],seen:new Set(e.seen),consumedBatches:new Set(e.consumedBatches),openTools:new Map(e.openTools),rev:e.rev+1};i.consumedBatches.add(r);for(let e of n)Le(i,e);return i}function q(e){return e.role===`tool`&&e.toolInput!==void 0&&e.text===``&&e.durationMs===void 0&&e.isError!==!0}function Be(e,t){return`${t}:${e.ts}:${e.role}:${e.toolUseId??``}`}function Ve(e){let t=[],n=e=>(e.role===`assistant`||e.role===`thinking`)&&e.tool===void 0&&e.toolUseId===void 0&&e.isError!==!0;for(let r of e){let e=t[t.length-1];e!==void 0&&n(r)&&n(e)&&e.role===r.role&&(e.agentId??``)===(r.agentId??``)?t[t.length-1]={...e,text:e.text+r.text}:t.push(r)}return t}function He(e){let t=e.kind===`thinking`?`thinking`:e.kind===`tool_use`||e.kind===`tool_result`?`tool`:e.kind===`error`?`error`:e.kind===`system`||e.kind===`status`?`system`:`assistant`;return{ts:e.ts,role:t,text:e.content,...e.toolName===void 0?{}:{tool:e.toolName},...e.kind===`error`?{isError:!0}:{},agentId:e.subagentId}}function Ue(e,t){let n=oe(e=>e.events),r=t!==null&&t!==`leader`,[i,a]=(0,N.useState)(K),[o,s]=(0,N.useState)(!1),[c,l]=(0,N.useState)(null),[u,d]=(0,N.useState)(!1),[f,p]=(0,N.useState)({total:0}),m=(0,N.useRef)(null),[h,g]=(0,N.useState)(!0),_=(0,N.useRef)(!0),v=e=>{_.current=e,g(e)},y=(0,N.useRef)(i);y.current=i;let[b,x]=(0,N.useState)([]),[S,C]=(0,N.useState)(!1);(0,N.useEffect)(()=>{if(x([]),t===null||e===null||!r)return;let n=!1;return C(!0),ae(`/api/sessions/${encodeURIComponent(e)}/agents/${encodeURIComponent(t)}/messages?full=1`).then(e=>{n||(x((e.entries??[]).map(e=>({...e,agentId:t}))),p(t=>({...t,source:e.source})),C(!1))}).catch(()=>{n||C(!1)}),()=>{n=!0}},[t,e,r]);let w=(0,N.useMemo)(()=>{if(!r||t===null)return[];let i=n.filter(t=>t.type===`agent.message`&&(t.sessionId===void 0||t.sessionId===e)).map(e=>e.payload).filter(e=>e.subagentId===t).map(e=>({...He(e),agentId:t})),a=new Set,o=[];for(let e of[...b,...i]){let t=`${e.ts}|${e.role}|${e.text}`;a.has(t)||(a.add(t),o.push(e))}return Ve(o)},[b,n,t,e,r]);(0,N.useEffect)(()=>{if(e===null||r)return;let t=!1;return s(!0),l(null),_.current=!0,g(!0),ae(`/api/sessions/${encodeURIComponent(e)}/events?${u?`full=1`:`limit=1000`}`).then(e=>{t||(a(t=>Re(t,e.entries)),p({source:e.source,projectName:e.projectName,total:e.total}),s(!1))}).catch(e=>{t||(l(e.message),s(!1))}),()=>{t=!0}},[e,u,r]),(0,N.useEffect)(()=>{a(K()),p({total:0}),d(!1)},[e,t]),(0,N.useEffect)(()=>{if(e===null||r)return;let t=y.current;for(let r of n){if(r.type!==`session.transcript`||r.sessionId!==e)continue;let n=r.payload;Array.isArray(n.entries)&&(t=ze(t,n.fromSeq,n.entries))}t!==y.current&&a(t)},[n,e,r]);let T=(0,N.useMemo)(()=>Ve(i.entries),[i.entries]),E=r?w:T;(0,N.useEffect)(()=>{_.current&&E.length>0&&m.current?.scrollToIndex(E.length-1,{align:`end`})},[E.length,i.rev]);let D=()=>{let e=m.current;e&&v(e.scrollSize-e.scrollOffset-e.viewportSize<80)},O=()=>{v(!0),m.current?.scrollToIndex(E.length-1,{align:`end`})},k=Math.max(0,E.length-8),A=(e,t)=>q(e)&&t>=k,j=(0,N.useMemo)(()=>{let e=0,t=0,n=0;for(let r=0;r<E.length;r++){let i=E[r];i.tool!==void 0&&e++,(i.role===`error`||i.isError)&&t++,q(i)&&r>=k&&n++}return{turns:E.length,tools:e,errors:t,running:n}},[E,k]);return{entries:E,loading:r?S:o,error:c,meta:f,full:u,setFull:d,stats:j,isRunningAt:A,listRef:m,onScroll:D,pinned:h,jumpToLatest:O}}function We({text:e,label:t}){let[n,i]=(0,N.useState)(!1);return(0,P.jsxs)(`button`,{type:`button`,className:`hq-copy-btn`,onClick:()=>{navigator.clipboard?.writeText(e).then(()=>{i(!0),setTimeout(()=>i(!1),1200)},()=>{})},title:`Copy to clipboard`,children:[n?(0,P.jsx)(o,{size:12}):(0,P.jsx)(r,{size:12}),t!==void 0&&(0,P.jsx)(`span`,{children:n?`copied`:t})]})}function J(e){return e==null||typeof e==`boolean`?``:typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(J).join(``):(0,N.isValidElement)(e)?J(e.props.children):``}var Ge={a:({children:e,href:t})=>(0,P.jsx)(`a`,{href:t,target:`_blank`,rel:`noopener noreferrer`,children:e}),table:({children:e})=>(0,P.jsx)(`div`,{className:`hq-md-table-wrap`,children:(0,P.jsx)(`table`,{children:e})}),pre:({children:e})=>{let t=Array.isArray(e)?e[0]:e,n=(0,N.isValidElement)(t)?t.props:void 0,r=/language-(\w+)/.exec(n?.className??``)?.[1],i=J(n?.children).replace(/\n$/,``),a=i===``?0:i.split(`
2
+ `).length;return(0,P.jsxs)(`div`,{className:`hq-md-code`,children:[(0,P.jsxs)(`div`,{className:`hq-md-code-bar`,children:[(0,P.jsx)(`span`,{className:`hq-md-code-lang`,children:r??`text`}),(0,P.jsxs)(`span`,{className:`hq-md-code-meta`,children:[a,` line`,a===1?``:`s`]}),(0,P.jsx)(We,{text:i})]}),(0,P.jsx)(`pre`,{children:e})]})}},Ke=(0,N.memo)(function({text:e}){return(0,P.jsx)(`div`,{className:`hq-md`,children:(0,P.jsx)(re,{remarkPlugins:[ie],rehypePlugins:[ne],components:Ge,children:e})})}),qe={file:{color:`#60a5fa`},edit:{color:`#fbbf24`},search:{color:`#a78bfa`},folder:{color:`#38bdf8`},terminal:{color:`#67e8f9`},web:{color:`#34d399`},git:{color:`#a3e635`},tree:{color:`#22d3ee`},code:{color:`#818cf8`},test:{color:`#4ade80`},package:{color:`#f472b6`},document:{color:`#94a3b8`},scaffold:{color:`#c084fc`},todo:{color:`#facc15`},plan:{color:`#2dd4bf`},task:{color:`#5eead4`},meta:{color:`#cbd5e1`},index:{color:`#06b6d4`},json:{color:`#eab308`},diff:{color:`#93c5fd`},logs:{color:`#a3a3a3`},settings:{color:`#9ca3af`},brain:{color:`#e879f9`},fallback:{color:`#9ca3af`}},Je={read:`file`,cat:`file`,view:`file`,write:`file`,create:`file`,edit:`edit`,replace:`edit`,str_replace:`edit`,multi_edit:`edit`,patch:`edit`,grep:`search`,search:`search`,rg:`search`,ripgrep:`search`,glob:`folder`,find:`search`,folder:`folder`,ls:`folder`,list:`folder`,set_working_dir:`folder`,tree:`tree`,bash:`terminal`,shell:`terminal`,sh:`terminal`,exec:`terminal`,run:`terminal`,command:`terminal`,fetch:`web`,web_fetch:`web`,web_search:`web`,git:`git`,diff:`diff`,lint:`code`,format:`settings`,typecheck:`code`,language_info:`code`,language:`code`,language_package:`package`,test:`test`,install:`package`,outdated:`package`,audit:`package`,document:`document`,scaffold:`scaffold`,todo:`todo`,plan:`plan`,task:`task`,json:`json`,index:`index`,logs:`logs`,mode:`meta`,tool_search:`meta`,tool_use:`meta`,batch_tool_use:`meta`,tool_help:`meta`,remember:`brain`,forget:`brain`,search_memory:`brain`,find_related_memories:`brain`,memory_for_file:`brain`,memory_for_path:`brain`,memory_search:`brain`,memory_graph:`brain`,memory_verify:`brain`,memory_hygiene:`brain`,memory_candidates:`brain`,lsp_diagnostics:`code`,lsp_definition:`search`,lsp_completion:`code`,lsp_rename:`edit`,"codebase-lsp-search":`index`};function Ye(e){return e?Je[e.toLowerCase()]??`fallback`:`fallback`}var Xe={file:b,edit:_,search:u,folder:E,terminal:y,web:k,git:A,tree:v,code:i,test:x,package:s,document:n,scaffold:T,todo:D,plan:c,task:m,meta:O,index:d,json:j,diff:w,logs:S,settings:g,brain:p,fallback:O};function Ze(e){let t=Ye(e??``);return{Icon:Xe[t],color:qe[t].color}}var Qe=[`path`,`file_path`,`pattern`,`symbol`,`command`,`cmd`,`url`,`query`,`description`,`content`];function Y(e,t){return e.length>t?`${e.slice(0,t-1)}\u2026`:e}function X(e){let t=e.file_path??e.path??e.filepath;return typeof t==`string`?t:``}function $e(e){try{return JSON.stringify(e)}catch{return String(e)}}function et(e){if(typeof e==`string`){let t=e.trim();if(t.startsWith(`{`)||t.startsWith(`[`))try{let e=JSON.parse(t);if(e&&typeof e==`object`)return{obj:e,raw:e}}catch{}return{obj:null,raw:e}}return e&&typeof e==`object`?{obj:e,raw:e}:{obj:null,raw:e}}function tt(e,t){if(t==null||t===``)return``;let{obj:n,raw:r}=et(t);if(!n)return Y(String(r),120);let i=(e??``).toLowerCase();if(/^todo(_?write)?$|^todos$/.test(i)||Array.isArray(n.todos)){let e=n.todos??[];if(Array.isArray(e)){let t=e.filter(e=>e?.status===`completed`).length,n=e.filter(e=>e?.status===`in_progress`).length,r=[`${e.length} todo${e.length===1?``:`s`}`];return t>0&&r.push(`${t} done`),n>0&&r.push(`${n} in-progress`),r.join(` · `)}}if(/batch|parallel/.test(i)||Array.isArray(n.tool_uses)||Array.isArray(n.calls)){let e=n.tool_uses??n.calls??n.batch;if(Array.isArray(e)){let t=new Set;for(let n of e)n&&typeof n==`object`&&`name`in n?t.add(String(n.name)):n&&typeof n==`object`&&`tool`in n&&t.add(String(n.tool));let n=[...t].slice(0,3).join(`, `),r=t.size>3?` +${t.size-3}`:``;return`${e.length} sub-tool${e.length===1?``:`s`}${n?` \xB7 ${n}${r}`:``}`}}if(i===`patch`&&typeof n.patch==`string`&&n.patch){let e=(n.patch.match(/^\+\+\+ /gm)??[]).length;return e>0?`patch \xB7 ${e} file${e===1?``:`s`}`:`patch \xB7 ${n.patch.split(`
3
+ `).length} lines`}if(/^(edit|str_replace|edit_file|patch)$/.test(i)){let e=X(n),t=typeof n.old_string==`string`?n.old_string:``,r=typeof n.new_string==`string`?n.new_string:``,i=t?t.split(`
4
4
  `).length:0,a=r?r.split(`
5
- `).length:0;return`edit ${e||`(file)`}${i||a?` (${i} \u2192 ${a} lines)`:``}`}if(/^(write|write_file|create_file|new_file)$/.test(i)){let e=Y(n),t=typeof n.content==`string`?n.content:``,r=t?t.split(`
6
- `).length:0;return`write ${e||`(file)`}${r?` \xB7 ${r} lines`:``}`}if(/^(bash|shell|sh|exec|run|run_command|run_shell|command)$/.test(i)){let e=n.command??n.cmd??n.script;if(typeof e==`string`)return`$ ${J(e,110)}`}if(/^(fetch|http|web|web_fetch|web_search|webfetch|curl|request)$/.test(i)){let e=n.url;if(typeof e==`string`)return`${(n.method??`GET`).toUpperCase()} ${J(e,100)}`}if(/^(grep|search|ripgrep|rg)$/.test(i)){let e=n.pattern,t=n.path??n.glob??n.type;if(typeof e==`string`)return t?`grep ${J(e,60)} in ${t}`:`grep ${J(e,100)}`}if(/^(glob|find)$/.test(i)){let e=n.pattern??n.glob;if(typeof e==`string`)return`glob ${J(e,80)}`}if(/^tree$/.test(i)){let e=typeof n.path==`string`?n.path:``,t=typeof n.depth==`number`?n.depth:null;return`tree ${e||`.`}${t===null?``:` (depth ${t})`}`}if(/^diff$/.test(i)){let e=typeof n.a==`string`?n.a:``,t=typeof n.b==`string`?n.b:``;if(e||t)return`diff ${e&&t?`${e}..${t}`:e||t}`;let r=[];if(Array.isArray(n.files))for(let e of n.files)typeof e==`string`&&r.push(e);else if(typeof n.files==`string`)for(let e of n.files.split(`,`)){let t=e.trim();t&&r.push(t)}if(r.length===1)return`diff ${J(String(r[0]),80)}`;if(r.length>1)return`diff ${r.length} files`}if(/^replace$/.test(i)){let e=typeof n.pattern==`string`?n.pattern:``;if(e){let t=``;if(typeof n.files==`string`){let e=n.files.split(`,`).map(e=>e.trim()).filter(Boolean);t=e.length>1?`${e.length} files`:e[0]??``}else Array.isArray(n.files)&&n.files.length>0&&(t=n.files.length===1?String(n.files[0]):`${n.files.length} files`);return`replace ${J(e,60)}${t?` in ${J(t,50)}`:``}`}}if(/^(read|read_file|cat|view)$/.test(i)){let e=Y(n),t=n.offset,r=n.limit;if(e&&(typeof t==`number`||typeof r==`number`)){let n=t??0;return`read ${e} (${n}\u2026${typeof r==`number`?n+r:``})`}if(e)return`read ${e}`}for(let e of tt){let t=n[e];if(typeof t==`string`&&t.length>0)return`${e}: ${J(t,100)}`}return J(nt(r),120)}[`function __clip(s,n){ s=String(s==null?"":s); return s.length>n ? s.slice(0,n-1)+"\\u2026" : s; }`,`function toolInputSummary(name, rawInput){`,` if(rawInput==null || rawInput==="") return "";`,` var obj=null, raw=rawInput;`,` if(typeof rawInput==="string"){`,` var s=rawInput.trim();`,` if(s.charAt(0)==="{" || s.charAt(0)==="["){ try{ var pj=JSON.parse(s); if(pj && typeof pj==="object"){ obj=pj; raw=pj; } }catch(_e){} }`,` } else if(rawInput && typeof rawInput==="object"){ obj=rawInput; raw=rawInput; }`,` if(!obj) return __clip(String(raw),120);`,` var n=String(name==null?"":name).toLowerCase();`,` if(/^todo(_?write)?$|^todos$/.test(n) || Array.isArray(obj.todos)){`,` var todos=obj.todos||[];`,` if(Array.isArray(todos)){`,` var done=0, wip=0, ti;`,` for(ti=0; ti<todos.length; ti++){ var st=todos[ti]&&todos[ti].status; if(st==="completed") done++; else if(st==="in_progress") wip++; }`,` var tp=[todos.length+" todo"+(todos.length===1?"":"s")];`,` if(done>0) tp.push(done+" done"); if(wip>0) tp.push(wip+" in-progress");`,` return tp.join(" \\u00b7 ");`,` }`,` }`,` if(/batch|parallel/.test(n) || Array.isArray(obj.tool_uses) || Array.isArray(obj.calls)){`,` var list=obj.tool_uses||obj.calls||obj.batch;`,` if(Array.isArray(list)){`,` var names={}, ord=[], li, it, nm;`,` for(li=0; li<list.length; li++){ it=list[li]; if(it && typeof it==="object"){ nm=("name" in it)?it.name:(("tool" in it)?it.tool:null); if(nm!=null){ nm=String(nm); if(!names[nm]){ names[nm]=1; ord.push(nm); } } } }`,` var preview=ord.slice(0,3).join(", ");`,` var more=ord.length>3 ? " +"+(ord.length-3) : "";`,` return list.length+" sub-tool"+(list.length===1?"":"s")+(preview?(" \\u00b7 "+preview+more):"");`,` }`,` }`,` var fp;`,` if(n==="patch" && typeof obj.patch==="string" && obj.patch){`,` var pfm=obj.patch.match(/^\\+\\+\\+ /gm);`,` var pfc=pfm?pfm.length:0;`,` if(pfc>0) return "patch \\u00b7 "+pfc+" file"+(pfc===1?"":"s");`,` return "patch \\u00b7 "+obj.patch.split("\\n").length+" lines";`,` }`,` if(/^(edit|str_replace|edit_file|patch)$/.test(n)){`,` fp=(obj.file_path!=null?obj.file_path:(obj.path!=null?obj.path:obj.filepath));`,` var oldS=typeof obj.old_string==="string"?obj.old_string:"";`,` var newS=typeof obj.new_string==="string"?obj.new_string:"";`,` var ol=oldS?oldS.split("\\n").length:0, nl=newS?newS.split("\\n").length:0;`,` var efp=typeof fp==="string"?fp:"";`,` return "edit "+(efp||"(file)")+((ol||nl)?(" ("+ol+" \\u2192 "+nl+" lines)"):"");`,` }`,` if(/^(write|write_file|create_file|new_file)$/.test(n)){`,` fp=(obj.file_path!=null?obj.file_path:(obj.path!=null?obj.path:obj.filepath));`,` var wc=typeof obj.content==="string"?obj.content:"";`,` var wl=wc?wc.split("\\n").length:0;`,` var wfp=typeof fp==="string"?fp:"";`,` return "write "+(wfp||"(file)")+(wl?(" \\u00b7 "+wl+" lines"):"");`,` }`,` if(/^(bash|shell|sh|exec|run|run_command|run_shell|command)$/.test(n)){`,` var cmd=(obj.command!=null?obj.command:(obj.cmd!=null?obj.cmd:obj.script));`,` if(typeof cmd==="string") return "$ "+__clip(cmd,110);`,` }`,` if(/^(fetch|http|web|web_fetch|web_search|webfetch|curl|request)$/.test(n)){`,` if(typeof obj.url==="string"){ var mth=(typeof obj.method==="string"?obj.method:"GET"); return mth.toUpperCase()+" "+__clip(obj.url,100); }`,` }`,` if(/^(grep|search|ripgrep|rg)$/.test(n)){`,` var pat=obj.pattern, scope=(obj.path!=null?obj.path:(obj.glob!=null?obj.glob:obj.type));`,` if(typeof pat==="string"){ return scope ? ("grep "+__clip(pat,60)+" in "+scope) : ("grep "+__clip(pat,100)); }`,` }`,` if(/^(glob|find)$/.test(n)){`,` var gp=(obj.pattern!=null?obj.pattern:obj.glob);`,` if(typeof gp==="string") return "glob "+__clip(gp,80);`,` }`,` if(/^tree$/.test(n)){`,` var trp=typeof obj.path==="string"?obj.path:"";`,` var trd=typeof obj.depth==="number"?obj.depth:null;`,` return "tree "+(trp||".")+(trd!==null?(" (depth "+trd+")"):"");`,` }`,` if(/^diff$/.test(n)){`,` var da=typeof obj.a==="string"?obj.a:"", db=typeof obj.b==="string"?obj.b:"";`,` if(da||db) return "diff "+((da&&db)?(da+".."+db):(da||db));`,` var dfl=[], dfi, dpi;`,` if(Array.isArray(obj.files)){ for(dfi=0; dfi<obj.files.length; dfi++){ if(typeof obj.files[dfi]==="string") dfl.push(obj.files[dfi]); } }`,` else if(typeof obj.files==="string"){ var dparts=obj.files.split(","); for(dpi=0; dpi<dparts.length; dpi++){ var dt=dparts[dpi].trim(); if(dt) dfl.push(dt); } }`,` if(dfl.length===1) return "diff "+__clip(String(dfl[0]),80);`,` if(dfl.length>1) return "diff "+dfl.length+" files";`,` }`,` if(/^replace$/.test(n)){`,` var rpat=typeof obj.pattern==="string"?obj.pattern:"";`,` if(rpat){`,` var rscope="";`,` if(typeof obj.files==="string"){`,` var rparts=[], rsi;`,` var rraw=obj.files.split(",");`,` for(rsi=0; rsi<rraw.length; rsi++){ var rt=rraw[rsi].trim(); if(rt) rparts.push(rt); }`,` rscope=rparts.length>1?(rparts.length+" files"):(rparts.length===1?rparts[0]:"");`,` } else if(Array.isArray(obj.files) && obj.files.length>0){`,` rscope=obj.files.length===1?String(obj.files[0]):(obj.files.length+" files");`,` }`,` return "replace "+__clip(rpat,60)+(rscope?(" in "+__clip(rscope,50)):"");`,` }`,` }`,` if(/^(read|read_file|cat|view)$/.test(n)){`,` fp=(obj.file_path!=null?obj.file_path:(obj.path!=null?obj.path:obj.filepath));`,` if(typeof fp==="string" && fp){`,` var off=obj.offset, lim=obj.limit;`,` if(typeof off==="number" || typeof lim==="number"){ var start=(typeof off==="number"?off:0); var end=(typeof lim==="number"?(start+lim):""); return "read "+fp+" ("+start+"\\u2026"+end+")"; }`,` return "read "+fp;`,` }`,` }`,` var HEAD=["path","file_path","pattern","symbol","command","cmd","url","query","description","content"], hi;`,` for(hi=0; hi<HEAD.length; hi++){ var hv=obj[HEAD[hi]]; if(typeof hv==="string" && hv.length>0){ return HEAD[hi]+": "+__clip(hv,100); } }`,` var jsonStr; try{ jsonStr=JSON.stringify(raw); }catch(_e2){ jsonStr=String(raw); }`,` return __clip(jsonStr,120);`,`}`].join(`
7
- `);function at(e){let t=(e??``).toLowerCase().replace(/^mcp__[^_]+__/,``);return/^(edit|str_replace|edit_file|patch|apply_patch|multiedit)$/.test(t)?`edit`:/^(write|write_file|create_file|new_file)$/.test(t)?`write`:/^(bash|shell|exec|run|run_command|run_shell|powershell|terminal)$/.test(t)?`bash`:/^(read|read_file|cat|open)$/.test(t)?`read`:/^(grep|search|ripgrep|glob|find)$/.test(t)?`search`:/^(fetch|http|web|webfetch|websearch|curl|request)$/.test(t)?`fetch`:/todo/.test(t)?`todo`:`generic`}function ot(e){if(e===void 0)return;let t=e.trim();if(!(t===``||t[0]!==`{`&&t[0]!==`[`))try{return JSON.parse(t)}catch{return}}function st(e,t){return t===void 0||t===``||t===`{}`?``:it(e,t)}function ct(e){let t=ot(e);if(t===void 0)return e??``;try{return JSON.stringify(t,null,2)}catch{return e??``}}function lt(e){let t=ot(e);if(typeof t!=`object`||!t)return null;let n=t.todos;if(!Array.isArray(n))return null;let r=[];for(let e of n){if(!e||typeof e!=`object`)continue;let t=e,n=t.status===`completed`?`completed`:t.status===`in_progress`?`in_progress`:`pending`,i=typeof t.content==`string`?t.content:typeof t.subject==`string`?t.subject:typeof t.title==`string`?t.title:``;r.push({status:n,content:i})}return r.length>0?r:null}function ut(e){return e===void 0||!Number.isFinite(e)||e<0?``:e<1e3?`${Math.round(e)}ms`:e<6e4?`${(e/1e3).toFixed(+(e<1e4))}s`:`${Math.floor(e/6e4)}m${Math.round(e%6e4/1e3)}s`}function dt(e){return e?e.replace(/^mcp__([^_]+)__/,`$1:`):`tool`}function ft(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function pt(e){if(typeof e==`string`){let t=e.trim();if(t.startsWith(`{`)||t.startsWith(`[`))try{let e=JSON.parse(t);if(e&&typeof e==`object`)return e}catch{return null}return null}return e&&typeof e==`object`?e:null}function X(e,t){if(!e)return null;let n=pt(t);if(!n)return null;let r=e.toLowerCase(),i=String(n.file_path??n.path??``);switch(r){case`edit`:case`str_replace`:case`edit_file`:case`multi_edit`:{let e=typeof n.old_string==`string`?n.old_string:``,t=typeof n.new_string==`string`?n.new_string:``;return!e&&!t?null:{mode:`lcs`,oldText:e,newText:t,caption:`edit ${i}`.trim()}}case`write`:case`write_file`:case`create_file`:{let e=typeof n.content==`string`?n.content:``;return e?{mode:`lcs`,oldText:``,newText:e,caption:`write ${i} (new)`.trim()}:null}case`patch`:{let e=typeof n.patch==`string`?n.patch:``;return e.trim()?{mode:`unified`,patchText:e,caption:i?`patch ${i}`:`patch`}:null}default:return null}}function mt(e,t){let n=e.split(`
5
+ `).length:0;return`edit ${e||`(file)`}${i||a?` (${i} \u2192 ${a} lines)`:``}`}if(/^(write|write_file|create_file|new_file)$/.test(i)){let e=X(n),t=typeof n.content==`string`?n.content:``,r=t?t.split(`
6
+ `).length:0;return`write ${e||`(file)`}${r?` \xB7 ${r} lines`:``}`}if(/^(bash|shell|sh|exec|run|run_command|run_shell|command)$/.test(i)){let e=n.command??n.cmd??n.script;if(typeof e==`string`)return`$ ${Y(e,110)}`}if(/^(fetch|http|web|web_fetch|web_search|webfetch|curl|request)$/.test(i)){let e=n.url;if(typeof e==`string`)return`${(n.method??`GET`).toUpperCase()} ${Y(e,100)}`}if(/^(grep|search|ripgrep|rg)$/.test(i)){let e=n.pattern,t=n.path??n.glob??n.type;if(typeof e==`string`)return t?`grep ${Y(e,60)} in ${t}`:`grep ${Y(e,100)}`}if(/^(glob|find)$/.test(i)){let e=n.pattern??n.glob;if(typeof e==`string`)return`glob ${Y(e,80)}`}if(/^tree$/.test(i)){let e=typeof n.path==`string`?n.path:``,t=typeof n.depth==`number`?n.depth:null;return`tree ${e||`.`}${t===null?``:` (depth ${t})`}`}if(/^diff$/.test(i)){let e=typeof n.a==`string`?n.a:``,t=typeof n.b==`string`?n.b:``;if(e||t)return`diff ${e&&t?`${e}..${t}`:e||t}`;let r=[];if(Array.isArray(n.files))for(let e of n.files)typeof e==`string`&&r.push(e);else if(typeof n.files==`string`)for(let e of n.files.split(`,`)){let t=e.trim();t&&r.push(t)}if(r.length===1)return`diff ${Y(String(r[0]),80)}`;if(r.length>1)return`diff ${r.length} files`}if(/^replace$/.test(i)){let e=typeof n.pattern==`string`?n.pattern:``;if(e){let t=``;if(typeof n.files==`string`){let e=n.files.split(`,`).map(e=>e.trim()).filter(Boolean);t=e.length>1?`${e.length} files`:e[0]??``}else Array.isArray(n.files)&&n.files.length>0&&(t=n.files.length===1?String(n.files[0]):`${n.files.length} files`);return`replace ${Y(e,60)}${t?` in ${Y(t,50)}`:``}`}}if(/^(read|read_file|cat|view)$/.test(i)){let e=X(n),t=n.offset,r=n.limit;if(e&&(typeof t==`number`||typeof r==`number`)){let n=t??0;return`read ${e} (${n}\u2026${typeof r==`number`?n+r:``})`}if(e)return`read ${e}`}for(let e of Qe){let t=n[e];if(typeof t==`string`&&t.length>0)return`${e}: ${Y(t,100)}`}return Y($e(r),120)}[`function __clip(s,n){ s=String(s==null?"":s); return s.length>n ? s.slice(0,n-1)+"\\u2026" : s; }`,`function toolInputSummary(name, rawInput){`,` if(rawInput==null || rawInput==="") return "";`,` var obj=null, raw=rawInput;`,` if(typeof rawInput==="string"){`,` var s=rawInput.trim();`,` if(s.charAt(0)==="{" || s.charAt(0)==="["){ try{ var pj=JSON.parse(s); if(pj && typeof pj==="object"){ obj=pj; raw=pj; } }catch(_e){} }`,` } else if(rawInput && typeof rawInput==="object"){ obj=rawInput; raw=rawInput; }`,` if(!obj) return __clip(String(raw),120);`,` var n=String(name==null?"":name).toLowerCase();`,` if(/^todo(_?write)?$|^todos$/.test(n) || Array.isArray(obj.todos)){`,` var todos=obj.todos||[];`,` if(Array.isArray(todos)){`,` var done=0, wip=0, ti;`,` for(ti=0; ti<todos.length; ti++){ var st=todos[ti]&&todos[ti].status; if(st==="completed") done++; else if(st==="in_progress") wip++; }`,` var tp=[todos.length+" todo"+(todos.length===1?"":"s")];`,` if(done>0) tp.push(done+" done"); if(wip>0) tp.push(wip+" in-progress");`,` return tp.join(" \\u00b7 ");`,` }`,` }`,` if(/batch|parallel/.test(n) || Array.isArray(obj.tool_uses) || Array.isArray(obj.calls)){`,` var list=obj.tool_uses||obj.calls||obj.batch;`,` if(Array.isArray(list)){`,` var names={}, ord=[], li, it, nm;`,` for(li=0; li<list.length; li++){ it=list[li]; if(it && typeof it==="object"){ nm=("name" in it)?it.name:(("tool" in it)?it.tool:null); if(nm!=null){ nm=String(nm); if(!names[nm]){ names[nm]=1; ord.push(nm); } } } }`,` var preview=ord.slice(0,3).join(", ");`,` var more=ord.length>3 ? " +"+(ord.length-3) : "";`,` return list.length+" sub-tool"+(list.length===1?"":"s")+(preview?(" \\u00b7 "+preview+more):"");`,` }`,` }`,` var fp;`,` if(n==="patch" && typeof obj.patch==="string" && obj.patch){`,` var pfm=obj.patch.match(/^\\+\\+\\+ /gm);`,` var pfc=pfm?pfm.length:0;`,` if(pfc>0) return "patch \\u00b7 "+pfc+" file"+(pfc===1?"":"s");`,` return "patch \\u00b7 "+obj.patch.split("\\n").length+" lines";`,` }`,` if(/^(edit|str_replace|edit_file|patch)$/.test(n)){`,` fp=(obj.file_path!=null?obj.file_path:(obj.path!=null?obj.path:obj.filepath));`,` var oldS=typeof obj.old_string==="string"?obj.old_string:"";`,` var newS=typeof obj.new_string==="string"?obj.new_string:"";`,` var ol=oldS?oldS.split("\\n").length:0, nl=newS?newS.split("\\n").length:0;`,` var efp=typeof fp==="string"?fp:"";`,` return "edit "+(efp||"(file)")+((ol||nl)?(" ("+ol+" \\u2192 "+nl+" lines)"):"");`,` }`,` if(/^(write|write_file|create_file|new_file)$/.test(n)){`,` fp=(obj.file_path!=null?obj.file_path:(obj.path!=null?obj.path:obj.filepath));`,` var wc=typeof obj.content==="string"?obj.content:"";`,` var wl=wc?wc.split("\\n").length:0;`,` var wfp=typeof fp==="string"?fp:"";`,` return "write "+(wfp||"(file)")+(wl?(" \\u00b7 "+wl+" lines"):"");`,` }`,` if(/^(bash|shell|sh|exec|run|run_command|run_shell|command)$/.test(n)){`,` var cmd=(obj.command!=null?obj.command:(obj.cmd!=null?obj.cmd:obj.script));`,` if(typeof cmd==="string") return "$ "+__clip(cmd,110);`,` }`,` if(/^(fetch|http|web|web_fetch|web_search|webfetch|curl|request)$/.test(n)){`,` if(typeof obj.url==="string"){ var mth=(typeof obj.method==="string"?obj.method:"GET"); return mth.toUpperCase()+" "+__clip(obj.url,100); }`,` }`,` if(/^(grep|search|ripgrep|rg)$/.test(n)){`,` var pat=obj.pattern, scope=(obj.path!=null?obj.path:(obj.glob!=null?obj.glob:obj.type));`,` if(typeof pat==="string"){ return scope ? ("grep "+__clip(pat,60)+" in "+scope) : ("grep "+__clip(pat,100)); }`,` }`,` if(/^(glob|find)$/.test(n)){`,` var gp=(obj.pattern!=null?obj.pattern:obj.glob);`,` if(typeof gp==="string") return "glob "+__clip(gp,80);`,` }`,` if(/^tree$/.test(n)){`,` var trp=typeof obj.path==="string"?obj.path:"";`,` var trd=typeof obj.depth==="number"?obj.depth:null;`,` return "tree "+(trp||".")+(trd!==null?(" (depth "+trd+")"):"");`,` }`,` if(/^diff$/.test(n)){`,` var da=typeof obj.a==="string"?obj.a:"", db=typeof obj.b==="string"?obj.b:"";`,` if(da||db) return "diff "+((da&&db)?(da+".."+db):(da||db));`,` var dfl=[], dfi, dpi;`,` if(Array.isArray(obj.files)){ for(dfi=0; dfi<obj.files.length; dfi++){ if(typeof obj.files[dfi]==="string") dfl.push(obj.files[dfi]); } }`,` else if(typeof obj.files==="string"){ var dparts=obj.files.split(","); for(dpi=0; dpi<dparts.length; dpi++){ var dt=dparts[dpi].trim(); if(dt) dfl.push(dt); } }`,` if(dfl.length===1) return "diff "+__clip(String(dfl[0]),80);`,` if(dfl.length>1) return "diff "+dfl.length+" files";`,` }`,` if(/^replace$/.test(n)){`,` var rpat=typeof obj.pattern==="string"?obj.pattern:"";`,` if(rpat){`,` var rscope="";`,` if(typeof obj.files==="string"){`,` var rparts=[], rsi;`,` var rraw=obj.files.split(",");`,` for(rsi=0; rsi<rraw.length; rsi++){ var rt=rraw[rsi].trim(); if(rt) rparts.push(rt); }`,` rscope=rparts.length>1?(rparts.length+" files"):(rparts.length===1?rparts[0]:"");`,` } else if(Array.isArray(obj.files) && obj.files.length>0){`,` rscope=obj.files.length===1?String(obj.files[0]):(obj.files.length+" files");`,` }`,` return "replace "+__clip(rpat,60)+(rscope?(" in "+__clip(rscope,50)):"");`,` }`,` }`,` if(/^(read|read_file|cat|view)$/.test(n)){`,` fp=(obj.file_path!=null?obj.file_path:(obj.path!=null?obj.path:obj.filepath));`,` if(typeof fp==="string" && fp){`,` var off=obj.offset, lim=obj.limit;`,` if(typeof off==="number" || typeof lim==="number"){ var start=(typeof off==="number"?off:0); var end=(typeof lim==="number"?(start+lim):""); return "read "+fp+" ("+start+"\\u2026"+end+")"; }`,` return "read "+fp;`,` }`,` }`,` var HEAD=["path","file_path","pattern","symbol","command","cmd","url","query","description","content"], hi;`,` for(hi=0; hi<HEAD.length; hi++){ var hv=obj[HEAD[hi]]; if(typeof hv==="string" && hv.length>0){ return HEAD[hi]+": "+__clip(hv,100); } }`,` var jsonStr; try{ jsonStr=JSON.stringify(raw); }catch(_e2){ jsonStr=String(raw); }`,` return __clip(jsonStr,120);`,`}`].join(`
7
+ `);function nt(e){let t=(e??``).toLowerCase().replace(/^mcp__[^_]+__/,``);return/^(edit|str_replace|edit_file|patch|apply_patch|multiedit)$/.test(t)?`edit`:/^(write|write_file|create_file|new_file)$/.test(t)?`write`:/^(bash|shell|exec|run|run_command|run_shell|powershell|terminal)$/.test(t)?`bash`:/^(read|read_file|cat|open)$/.test(t)?`read`:/^(grep|search|ripgrep|glob|find)$/.test(t)?`search`:/^(fetch|http|web|webfetch|websearch|curl|request)$/.test(t)?`fetch`:/todo/.test(t)?`todo`:`generic`}function rt(e){if(e===void 0)return;let t=e.trim();if(!(t===``||t[0]!==`{`&&t[0]!==`[`))try{return JSON.parse(t)}catch{return}}function it(e,t){return t===void 0||t===``||t===`{}`?``:tt(e,t)}function at(e){let t=rt(e);if(t===void 0)return e??``;try{return JSON.stringify(t,null,2)}catch{return e??``}}function ot(e){let t=rt(e);if(typeof t!=`object`||!t)return null;let n=t.todos;if(!Array.isArray(n))return null;let r=[];for(let e of n){if(!e||typeof e!=`object`)continue;let t=e,n=t.status===`completed`?`completed`:t.status===`in_progress`?`in_progress`:`pending`,i=typeof t.content==`string`?t.content:typeof t.subject==`string`?t.subject:typeof t.title==`string`?t.title:``;r.push({status:n,content:i})}return r.length>0?r:null}function st(e){return e===void 0||!Number.isFinite(e)||e<0?``:e<1e3?`${Math.round(e)}ms`:e<6e4?`${(e/1e3).toFixed(+(e<1e4))}s`:`${Math.floor(e/6e4)}m${Math.round(e%6e4/1e3)}s`}function ct(e){return e?e.replace(/^mcp__([^_]+)__/,`$1:`):`tool`}function lt(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function ut(e){if(typeof e==`string`){let t=e.trim();if(t.startsWith(`{`)||t.startsWith(`[`))try{let e=JSON.parse(t);if(e&&typeof e==`object`)return e}catch{return null}return null}return e&&typeof e==`object`?e:null}function dt(e,t){if(!e)return null;let n=ut(t);if(!n)return null;let r=e.toLowerCase(),i=String(n.file_path??n.path??``);switch(r){case`edit`:case`str_replace`:case`edit_file`:case`multi_edit`:{let e=typeof n.old_string==`string`?n.old_string:``,t=typeof n.new_string==`string`?n.new_string:``;return!e&&!t?null:{mode:`lcs`,oldText:e,newText:t,caption:`edit ${i}`.trim()}}case`write`:case`write_file`:case`create_file`:{let e=typeof n.content==`string`?n.content:``;return e?{mode:`lcs`,oldText:``,newText:e,caption:`write ${i} (new)`.trim()}:null}case`patch`:{let e=typeof n.patch==`string`?n.patch:``;return e.trim()?{mode:`unified`,patchText:e,caption:i?`patch ${i}`:`patch`}:null}default:return null}}function ft(e,t){let n=e.split(`
8
8
  `),r=t.split(`
9
- `);if(n.length>5e3||r.length>5e3)return null;let i=n.length,a=r.length,o=Array.from({length:i+1},()=>Array(a+1).fill(0));for(let e=i-1;e>=0;e--)for(let t=a-1;t>=0;t--)o[e][t]=n[e]===r[t]?o[e+1][t+1]+1:Math.max(o[e+1][t],o[e][t+1]);let s=[],c=0,l=0;for(;c<i&&l<a;)n[c]===r[l]?(s.push({kind:`ctx`,text:n[c]}),c++,l++):o[c+1][l]>=o[c][l+1]?(s.push({kind:`del`,text:n[c]}),c++):(s.push({kind:`add`,text:r[l]}),l++);for(;c<i;)s.push({kind:`del`,text:n[c++]});for(;l<a;)s.push({kind:`add`,text:r[l++]});return s}function ht(e){let t=[],n=e.split(`
10
- `);for(let e of n)e.startsWith(`@@`)||e.startsWith(`--- `)||e.startsWith(`+++ `)||e.startsWith(`diff `)||e.startsWith(`index `)||e.startsWith(`\\ `)?t.push({kind:`meta`,text:e}):e.startsWith(`+`)?t.push({kind:`add`,text:e.slice(1)}):e.startsWith(`-`)?t.push({kind:`del`,text:e.slice(1)}):t.push({kind:`ctx`,text:e.startsWith(` `)?e.slice(1):e});return t.length>0&&t[t.length-1].kind===`ctx`&&t[t.length-1].text===``&&t.pop(),t}function gt(e,t){let n=X(e,t);return n?n.mode===`unified`?{caption:n.caption,rows:ht(n.patchText)}:{caption:n.caption,rows:mt(n.oldText,n.newText)}:null}[`var DIFF_MAX_LINES = 5000;`,`function __diffObj(input){`,` if(typeof input==="string"){ var s=input.trim(); if(s.charAt(0)==="{"||s.charAt(0)==="["){ try{ var p=JSON.parse(s); if(p&&typeof p==="object") return p; }catch(_e){} } return null; }`,` if(input&&typeof input==="object") return input; return null;`,`}`,`function diffFromToolInput(name, input){`,` if(!name) return null;`,` var obj=__diffObj(input); if(!obj) return null;`,` var n=String(name).toLowerCase();`,` var fp=String(obj.file_path!=null?obj.file_path:(obj.path!=null?obj.path:""));`,` if(n==="edit"||n==="str_replace"||n==="edit_file"||n==="multi_edit"){`,` var oldT=typeof obj.old_string==="string"?obj.old_string:"";`,` var newT=typeof obj.new_string==="string"?obj.new_string:"";`,` if(!oldT&&!newT) return null;`,` return { mode:"lcs", oldText:oldT, newText:newT, caption:("edit "+fp).replace(/\\s+$/,"") };`,` }`,` if(n==="write"||n==="write_file"||n==="create_file"){`,` var c=typeof obj.content==="string"?obj.content:"";`,` if(!c) return null;`,` return { mode:"lcs", oldText:"", newText:c, caption:("write "+fp+" (new)").replace(/\\s+/g," ").replace(/\\s+$/,"") };`,` }`,` if(n==="patch"){`,` var pt=typeof obj.patch==="string"?obj.patch:"";`,` if(!pt.replace(/\\s/g,"")) return null;`,` return { mode:"unified", patchText:pt, caption: fp ? ("patch "+fp) : "patch" };`,` }`,` return null;`,`}`,`function computeLineDiff(oldText, newText){`,` var a=oldText.split("\\n"), b=newText.split("\\n");`,` if(a.length>DIFF_MAX_LINES||b.length>DIFF_MAX_LINES) return null;`,` var nn=a.length, mm=b.length, i, j;`,` var dp=new Array(nn+1); for(i=0;i<=nn;i++){ dp[i]=new Array(mm+1); for(j=0;j<=mm;j++) dp[i][j]=0; }`,` for(i=nn-1;i>=0;i--){ for(j=mm-1;j>=0;j--){ dp[i][j]= a[i]===b[j] ? dp[i+1][j+1]+1 : Math.max(dp[i+1][j], dp[i][j+1]); } }`,` var rows=[]; i=0; j=0;`,` while(i<nn&&j<mm){ if(a[i]===b[j]){ rows.push({kind:"ctx",text:a[i]}); i++; j++; } else if(dp[i+1][j]>=dp[i][j+1]){ rows.push({kind:"del",text:a[i]}); i++; } else { rows.push({kind:"add",text:b[j]}); j++; } }`,` while(i<nn){ rows.push({kind:"del",text:a[i]}); i++; }`,` while(j<mm){ rows.push({kind:"add",text:b[j]}); j++; }`,` return rows;`,`}`,`function parseUnifiedDiff(patchText){`,` var rows=[], lines=patchText.split("\\n"), k, raw;`,` for(k=0;k<lines.length;k++){ raw=lines[k];`,` if(raw.indexOf("@@")===0||raw.indexOf("--- ")===0||raw.indexOf("+++ ")===0||raw.indexOf("diff ")===0||raw.indexOf("index ")===0||raw.indexOf("\\\\ ")===0){ rows.push({kind:"meta",text:raw}); }`,` else if(raw.charAt(0)==="+"){ rows.push({kind:"add",text:raw.slice(1)}); }`,` else if(raw.charAt(0)==="-"){ rows.push({kind:"del",text:raw.slice(1)}); }`,` else { rows.push({kind:"ctx",text: raw.charAt(0)===" " ? raw.slice(1) : raw}); }`,` }`,` if(rows.length>0 && rows[rows.length-1].kind==="ctx" && rows[rows.length-1].text===""){ rows.pop(); }`,` return rows;`,`}`,`function diffRowsFromToolInput(name, input){`,` var d=diffFromToolInput(name, input); if(!d) return null;`,` if(d.mode==="unified") return { caption:d.caption, rows:parseUnifiedDiff(d.patchText) };`,` return { caption:d.caption, rows:computeLineDiff(d.oldText, d.newText) };`,`}`].join(`
11
- `);var _t={add:`+`,del:`-`,ctx:` `,meta:`@`};function vt({toolName:e,toolInput:t}){let n=(0,N.useMemo)(()=>gt(e,t),[e,t]);if(!n)return null;let{caption:r,rows:i}=n;if(i===null)return(0,P.jsxs)(`div`,{className:`hq-tool-empty`,children:[`diff too large to render — `,r]});let a=i.filter(e=>e.kind===`add`).length,o=i.filter(e=>e.kind===`del`).length;return(0,P.jsxs)(`div`,{className:`hq-diff`,children:[(0,P.jsxs)(`div`,{className:`hq-diff-stat`,children:[(0,P.jsx)(`span`,{className:`hq-diff-path`,title:r,children:r}),(0,P.jsxs)(`span`,{className:`hq-diff-add-count`,children:[`+`,a]}),(0,P.jsxs)(`span`,{className:`hq-diff-del-count`,children:[`-`,o]})]}),(0,P.jsx)(`pre`,{className:`hq-diff-body`,children:i.map((e,t)=>(0,P.jsxs)(`span`,{className:`hq-diff-line ${e.kind}`,children:[(0,P.jsx)(`span`,{className:`hq-diff-gutter`,children:_t[e.kind]}),e.text||` `]},t))})]})}function yt(e,t){return X(e,t)!==null}var bt=25,Z=12;function Q({text:e,isError:t,wrap:n,framed:r=!0}){let i=(0,N.useMemo)(()=>e.split(`
12
- `),[e]),a=i.length>bt,[o,s]=(0,N.useState)(!a),c=o?e:i.slice(0,Z).join(`
13
- `);return(0,P.jsxs)(`div`,{className:`hq-result${r?``:` bare`}`,children:[(0,P.jsx)(`pre`,{className:`hq-result-pre ${n?`wrap`:`nowrap`}${t?` err`:``}`,children:c}),a&&(0,P.jsx)(`button`,{type:`button`,className:`hq-result-toggle`,onClick:()=>s(e=>!e),children:o?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(l,{size:12}),` collapse to `,Z,` lines`]}):(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(M,{size:12}),` show all `,i.length,` lines (+`,i.length-Z,` more)`]})})]})}function xt(e,t){let n=t.trim();if(/^\s*\d+→/m.test(t.slice(0,200)))return{kind:`numbered`};if(n.startsWith(`{`)&&n.endsWith(`}`)||n.startsWith(`[`)&&n.endsWith(`]`))try{let e=JSON.parse(n);if(typeof e==`object`&&e)return{kind:`json`,value:e}}catch{}let r=!!e&&/^(bash|shell|exec|run|powershell)/i.test(e),i=t.match(/(?:^|\n)\s*(?:\[?exit(?:\s*code)?\]?\s*[:=]?\s*)(\d+)\s*$/i),a=t.match(/(?:^|\s)(\d+\s*ms|\d+\.\d+s)\s*$/i);if(r||i){let e=t;return i&&(e=t.slice(0,i.index).trimEnd()),{kind:`bash`,stdout:e,exitCode:i?Number(i[1]):void 0,duration:a?.[1]}}return{kind:`plain`}}function St({value:e,isError:n}){let r=(0,N.useMemo)(()=>{try{return JSON.stringify(e,null,2)}catch{return String(e)}},[e]),i=r.split(`
14
- `).length,[a,o]=(0,N.useState)(i<30);return(0,P.jsxs)(`div`,{className:`hq-result${n?` err-frame`:``}`,children:[(0,P.jsxs)(`button`,{type:`button`,className:`hq-result-jsonbar`,onClick:()=>o(e=>!e),children:[(0,P.jsxs)(`span`,{className:`hq-result-jsonbar-left`,children:[a?(0,P.jsx)(f,{size:12}):(0,P.jsx)(t,{size:12}),(0,P.jsxs)(`span`,{children:[`JSON · `,i,` lines`]})]}),(0,P.jsx)(`span`,{children:a?`collapse`:`expand`})]}),a&&(0,P.jsx)(`pre`,{className:`hq-result-pre nowrap${n?` err`:``}`,children:r})]})}function Ct({toolName:e,result:t,isError:n}){let r=(0,N.useMemo)(()=>xt(e,t),[e,t]);return r.kind===`json`?(0,P.jsx)(St,{value:r.value,isError:n}):r.kind===`numbered`?(0,P.jsx)(Q,{text:t,isError:n,wrap:!1}):r.kind===`bash`?(0,P.jsxs)(`div`,{className:`hq-result hq-result-bash`,children:[r.stdout!==void 0&&r.stdout!==``&&(0,P.jsx)(Q,{text:r.stdout,isError:n,wrap:!0,framed:!1}),(r.exitCode!==void 0||r.duration!==void 0)&&(0,P.jsxs)(`div`,{className:`hq-result-exit${r.exitCode!==void 0&&r.exitCode!==0?` bad`:``}`,children:[r.exitCode!==void 0&&(0,P.jsxs)(`span`,{children:[`exit code `,r.exitCode]}),r.duration!==void 0&&(0,P.jsx)(`span`,{children:r.duration})]})]}):(0,P.jsx)(Q,{text:t,isError:n,wrap:!0})}var wt={completed:`✔`,in_progress:`▶`,pending:`○`};function Tt({todos:e}){let t=e.filter(e=>e.status===`completed`).length;return(0,P.jsxs)(`div`,{className:`hq-tool-section`,children:[(0,P.jsxs)(`div`,{className:`hq-tool-section-label`,children:[`todos · `,t,`/`,e.length,` done`]}),(0,P.jsx)(`ul`,{className:`hq-todo-list`,children:e.map((e,t)=>(0,P.jsxs)(`li`,{className:`hq-todo ${e.status}`,children:[(0,P.jsx)(`span`,{className:`hq-todo-mark`,children:wt[e.status]}),(0,P.jsx)(`span`,{className:`hq-todo-text`,children:e.content||`(empty)`})]},t))})]})}function Et({entry:e}){let t=at(e.tool),n=yt(e.tool,e.toolInput),r=t===`todo`?lt(e.toolInput):null,i=e.text??``,a=i.trim()!==``;return(0,P.jsxs)(`div`,{className:`hq-tool-body`,children:[n?(0,P.jsxs)(`div`,{className:`hq-tool-section`,children:[(0,P.jsx)(`div`,{className:`hq-tool-section-label`,children:`changes`}),(0,P.jsx)(vt,{toolName:e.tool,toolInput:e.toolInput}),a&&!e.isError&&(0,P.jsx)(`div`,{className:`hq-tool-result-note`,children:i.split(`
15
- `)[0]})]}):r?(0,P.jsx)(Tt,{todos:r}):e.toolInput!==void 0&&e.toolInput!==`{}`&&(0,P.jsxs)(`div`,{className:`hq-tool-section`,children:[(0,P.jsx)(`div`,{className:`hq-tool-section-label`,children:`input`}),(0,P.jsx)(`pre`,{className:`hq-tool-pre`,children:ct(e.toolInput)})]}),!n&&a&&(0,P.jsxs)(`div`,{className:`hq-tool-section`,children:[(0,P.jsxs)(`div`,{className:`hq-tool-section-head`,children:[(0,P.jsx)(`span`,{className:`hq-tool-section-label`,children:e.isError?`error`:`output`}),(0,P.jsx)(qe,{text:i,label:`copy`})]}),(0,P.jsx)(Ct,{toolName:e.tool,result:i,isError:e.isError})]}),!a&&!e.isError&&!r&&!n&&(0,P.jsx)(`div`,{className:`hq-tool-empty`,children:`(no output)`})]})}function Dt({entry:e,running:n}){let[r,i]=(0,N.useState)(!1),o=st(e.tool,e.toolInput),s=ut(e.durationMs),c=dt(e.tool),{Icon:l,color:u}=et(e.tool);return(0,P.jsxs)(`div`,{className:`hq-chat-turn tool ${e.isError?`err`:``}`,children:[(0,P.jsxs)(`button`,{type:`button`,className:`hq-tool-head`,onClick:()=>i(e=>!e),children:[(0,P.jsx)(`span`,{className:`hq-tool-caret`,children:r?(0,P.jsx)(f,{size:13}):(0,P.jsx)(t,{size:13})}),(0,P.jsx)(`span`,{className:`hq-tool-icon`,style:{color:u},children:(0,P.jsx)(l,{size:14})}),(0,P.jsx)(`span`,{className:`hq-tool-name`,children:c}),o!==``&&(0,P.jsx)(`span`,{className:`hq-tool-summary`,children:o}),s!==``&&(0,P.jsx)(`span`,{className:`hq-tool-dur`,children:s}),(0,P.jsx)(`span`,{className:`hq-tool-status`,"aria-hidden":!0,children:n?(0,P.jsx)(`span`,{className:`hq-tool-running-dot`,title:`running`}):e.isError?(0,P.jsx)(C,{size:14,className:`hq-status-err`}):(0,P.jsx)(a,{size:14,className:`hq-status-ok`})})]}),r&&(0,P.jsx)(Et,{entry:e})]})}function Ot({entry:e}){let[n,r]=(0,N.useState)(!1),i=e.text.split(`
16
- `)[0]??``;return(0,P.jsxs)(`div`,{className:`hq-chat-turn thinking`,children:[(0,P.jsxs)(`button`,{type:`button`,className:`hq-thinking-head`,onClick:()=>r(e=>!e),children:[(0,P.jsx)(`span`,{className:`hq-tool-caret`,children:n?(0,P.jsx)(f,{size:13}):(0,P.jsx)(t,{size:13})}),(0,P.jsx)(p,{size:13,className:`hq-thinking-icon`}),(0,P.jsx)(`span`,{className:`hq-thinking-label`,children:`thinking`}),!n&&(0,P.jsx)(`span`,{className:`hq-thinking-peek`,children:i})]}),n&&(0,P.jsx)(`div`,{className:`hq-thinking-body`,children:(0,P.jsx)(Ye,{text:e.text})})]})}var kt=(0,N.memo)(function({entry:e,running:t}){let n=ft(e.ts);return e.role===`tool`||e.role===`error`&&e.toolInput!==void 0?(0,P.jsx)(Dt,{entry:e,running:t??K(e)}):e.role===`thinking`?(0,P.jsx)(Ot,{entry:e}):e.role===`user`?(0,P.jsx)(`div`,{className:`hq-chat-turn user`,children:(0,P.jsxs)(`div`,{className:`hq-chat-bubble user`,children:[(0,P.jsxs)(`div`,{className:`hq-chat-role`,children:[`you`,e.agentId===void 0?``:` · ${e.agentId}`,n!==``&&(0,P.jsx)(`span`,{className:`hq-chat-clock`,children:n})]}),(0,P.jsx)(`div`,{className:`hq-chat-prose`,children:e.text})]})}):e.role===`assistant`?(0,P.jsx)(`div`,{className:`hq-chat-turn assistant`,children:(0,P.jsxs)(`div`,{className:`hq-chat-bubble assistant`,children:[(0,P.jsxs)(`div`,{className:`hq-chat-role`,children:[`agent`,e.agentId===void 0?``:` · ${e.agentId}`,n!==``&&(0,P.jsx)(`span`,{className:`hq-chat-clock`,children:n})]}),(0,P.jsx)(Ye,{text:e.text})]})}):e.role===`error`?(0,P.jsx)(`div`,{className:`hq-chat-turn error`,children:(0,P.jsxs)(`div`,{className:`hq-chat-bubble error`,children:[(0,P.jsxs)(`div`,{className:`hq-chat-role err`,children:[`error`,n!==``&&(0,P.jsx)(`span`,{className:`hq-chat-clock`,children:n})]}),(0,P.jsx)(`pre`,{className:`hq-tool-pre err`,children:e.text})]})}):e.text.trim()===``?null:(0,P.jsx)(`div`,{className:`hq-chat-turn system`,children:(0,P.jsxs)(`span`,{className:`hq-chat-system-line`,children:[e.text,n!==``&&(0,P.jsx)(`span`,{className:`hq-chat-clock`,children:n})]})})});function At(e,t,n){if(t===`all`||n===void 0||n.length===0)return e;let r=new Set;if(t===`machine`)for(let t of e.nodes)t.machineId===n&&r.add(t.id);else{let t=new Set;for(let i of e.nodes)i.projectId===n&&(r.add(i.id),i.machineId!==void 0&&t.add(i.machineId));for(let n of e.nodes)n.kind===`machine`&&n.machineId!==void 0&&t.has(n.machineId)&&r.add(n.id)}return{nodes:e.nodes.filter(e=>r.has(e.id)),edges:e.edges.filter(e=>r.has(e.source)&&r.has(e.target))}}function jt(e,t){let n=t.trim().toLocaleLowerCase();if(n.length===0)return e;let r=new Map(e.nodes.map(e=>[e.id,e])),i=new Map,a=new Map;for(let t of e.edges){i.set(t.target,t.source);let e=a.get(t.source)??[];e.push(t.target),a.set(t.source,e)}let o=new Set,s=new Set,c=e=>{let t=e;for(;t!==void 0&&!o.has(t);)o.add(t),t=i.get(t)},l=e=>{if(!s.has(e)){s.add(e),o.add(e);for(let t of a.get(e)??[])l(t)}};for(let t of e.nodes)[t.kind,t.label,t.sub,t.status,t.clientKind,t.serviceMode,t.machineId,t.projectId,t.clientId,t.sessionId,t.agentId,...t.chips].filter(e=>typeof e==`string`).join(` `).toLocaleLowerCase().includes(n)&&(c(t.id),l(t.id));for(let e of[...o])r.has(e)||o.delete(e);return{nodes:e.nodes.filter(e=>o.has(e.id)),edges:e.edges.filter(e=>o.has(e.source)&&o.has(e.target))}}function Mt(e){let t=new Map(e.nodes.map(e=>[e.id,e])),n=new Set(e.edges.map(e=>e.target)),r=new Map;for(let t of e.edges){let e=r.get(t.source)??[];e.push(t.target),r.set(t.source,e)}let i=[],a=new Set,o=e=>{if(a.has(e))return;a.add(e);let n=t.get(e);n!==void 0&&i.push(n);for(let t of r.get(e)??[])o(t)};for(let t of e.nodes)n.has(t.id)||o(t.id);for(let t of e.nodes)o(t.id);return i}function Nt(e){return e===`machine`?0:e===`project`?1:e===`terminal`?2:3}function Pt(e){let t=e.filter(e=>e.kind===`machine`),n=new Map,r=new Map,i=new Map;for(let t of e)if(t.kind===`project`&&t.machineId!==void 0){let e=n.get(t.machineId)??[];e.push(t),n.set(t.machineId,e)}else if(t.kind===`terminal`){let e=It(t.machineId??``,t.projectId??``),n=r.get(e)??[];n.push(t),r.set(e,n)}else if(t.kind===`agent`&&t.sessionId!==void 0){let e=i.get(t.sessionId)??[];e.push(t),i.set(t.sessionId,e)}let a=new Map,o=0,s=e=>e.length===0?0:((e[0]??0)+(e[e.length-1]??0))/2;for(let e of t){let t=n.get(e.machineId??``)??[],c=[];for(let e of t){let t=r.get(e.id)??[],n=[];for(let e of t){let t=i.get(e.sessionId??``)??[],r;if(t.length>0){let e=[];for(let n of t)a.set(n.id,o),e.push(o),o+=118;r=s(e)}else r=o,o+=118;a.set(e.id,r),n.push(r),o+=18}let l;n.length>0?l=s(n):(l=o,o+=118),a.set(e.id,l),c.push(l),o+=42}c.length>0?a.set(e.id,s(c)):(a.set(e.id,o),o+=118),o+=64}let c=new Map;for(let t of e)c.set(t.id,{x:Nt(t.kind)*300,y:a.get(t.id)??0});return c}function Ft(e){return`machine:${e}`}function It(e,t){return`project:${e}:${t}`}function Lt(e){return`terminal:${e}`}function Rt(e,t){return`agent:${e}:${t}`}function $(e,t,n,r){let i=`${n}->${r}`;t.has(i)||(t.add(i),e.push({id:i,source:n,target:r}))}function zt(e,t){return e?.projectName??t?.projectName??`unknown project`}function Bt(e,t){let n=e?.projectRootDisplay??t?.projectRoot;if(n!==void 0&&n.length!==0)return n.length>54?`…${n.slice(-51)}`:n}function Vt(e){return e.clientKind===`mailbox`?`MAILBOX SERVE · ${e.pid??e.sessionId.slice(-8)}`:`${e.clientKind.toUpperCase()} · ${e.sessionId.length>18?`…${e.sessionId.slice(-14)}`:e.sessionId}`}function Ht(e,t){return{sessionId:e.sessionId??`client:${e.clientId}`,clientId:e.clientId,clientKind:e.kind,machineId:e.machineId,...e.hostname===void 0?{}:{hostname:e.hostname},...e.pid===void 0?{}:{pid:e.pid},projectId:e.projectId,projectName:t?.projectName??e.projectId,projectRoot:t?.projectRootDisplay??``,...t?.gitBranch===void 0?{}:{gitBranch:t.gitBranch},status:e.connected&&e.capabilities.includes(`mailbox.serve`)?`active`:e.connected?`idle`:`stale`,startedAt:e.connectedAt??e.lastSeenAt,lastActivityAt:e.lastSeenAt,agentCount:0,agents:[]}}function Ut(e,t,n,r){let i=t.get(e),a=n.find(t=>t.machineId===e),o=r.find(t=>t.machineId===e),s=i?.hostname??a?.hostname??o?.hostname??e,c=i?.sessionCount??n.filter(t=>t.machineId===e).length,l=i?.agentCount??n.reduce((t,n)=>t+(n.machineId===e?n.agents.length:0),0),u=i?.clientCount??r.filter(t=>t.machineId===e&&t.connected).length,d=r.filter(t=>t.machineId===e&&t.connected&&t.capabilities.includes(`mailbox.serve`)).length;return{label:s,sub:e,chips:[`${u} client${u===1?``:`s`}`,`${c} terminal${c===1?``:`s`}`,`${l} agent${l===1?``:`s`}`,...d>0?[`mailbox serve ×${d}`]:[]]}}function Wt(e){if(e===null)return{nodes:[],edges:[]};let t=[],n=[],r=new Set,i=new Set,a=new Map((e.machines??[]).map(e=>[e.machineId,e])),o=new Map((e.projects??[]).map(e=>[e.projectId,e])),s=[...e.liveSessions??[]],c=new Set(s.map(e=>e.sessionId)),l=new Set(s.filter(e=>e.pid!==void 0).map(e=>`${e.machineId}:${e.pid}`)),u=Date.parse(e.generatedAt);for(let t of e.clients??[]){if(!t.connected)continue;let e=t.capabilities?.includes(`mailbox.serve`)===!0;if(!t.capabilities?.includes(`session.summary`)&&!e||t.pid!==void 0&&l.has(`${t.machineId}:${t.pid}`))continue;let n=Date.parse(t.connectedAt??t.lastSeenAt);if(!e&&Number.isFinite(u)&&Number.isFinite(n)&&u-n>45e3)continue;let r=t.sessionId??`client:${t.clientId}`;c.has(r)||(s.push(Ht(t,o.get(t.projectId))),c.add(r))}let d=new Set;for(let t of e.machines??[])d.add(t.machineId);for(let e of s)d.add(e.machineId);for(let t of e.clients??[])t.connected&&d.add(t.machineId);for(let n of d){let i=Ft(n),o=Ut(n,a,s,e.clients??[]);t.push({id:i,kind:`machine`,label:o.label,sub:o.sub,chips:o.chips,machineId:n}),r.add(i)}let f=s.sort((e,t)=>{let n=e.machineId.localeCompare(t.machineId);if(n!==0)return n;let r=e.projectName.localeCompare(t.projectName);return r===0?e.sessionId.localeCompare(t.sessionId):r});for(let a of f){let s=a.machineId,c=o.get(a.projectId),l=It(s,a.projectId);if(!r.has(l)){let n=[`${c?.activeClients??f.filter(e=>e.machineId===s&&e.projectId===a.projectId).length} client${(c?.activeClients??0)===1?``:`s`}`,`${c?.activeSessions??f.filter(e=>e.machineId===s&&e.projectId===a.projectId).length} terminal${(c?.activeSessions??0)===1?``:`s`}`];c?.gitBranch!==void 0&&n.push(c.gitBranch),(e.clients??[]).filter(e=>e.connected&&e.machineId===s&&e.projectId===a.projectId&&e.capabilities.includes(`mailbox.serve`)).length>0&&n.push(`mailbox serve`),t.push({id:l,kind:`project`,label:zt(c,a),sub:Bt(c,a),status:c?.status??a.status,chips:n,machineId:s,projectId:a.projectId}),r.add(l)}$(n,i,Ft(s),l);let u=Lt(a.sessionId);if(!r.has(u)){let e=a.sessionId.startsWith(`client:`)&&a.agents.length===0,n=a.clientKind===`mailbox`?`mailbox-serve`:void 0,i=[n===`mailbox-serve`?`mailbox serve`:a.clientKind,a.status,...n===void 0?[`${a.agentCount} agent${a.agentCount===1?``:`s`}`]:[]];a.gitBranch!==void 0&&i.push(a.gitBranch),t.push({id:u,kind:`terminal`,label:Vt(a),sub:n===`mailbox-serve`?`mailbox HTTP bridge`:e?`waiting for session telemetry`:a.projectName,status:a.status,chips:i,machineId:s,projectId:a.projectId,...a.clientId===void 0?{}:{clientId:a.clientId},sessionId:a.sessionId,clientKind:a.clientKind,session:a,isSyntheticSession:e,...n===void 0?{}:{serviceMode:n}}),r.add(u)}$(n,i,l,u);for(let e of a.agents){let r=Rt(a.sessionId,e.id);t.push({id:r,kind:`agent`,label:e.name||e.id,sub:e.currentTool??e.partialText,status:e.status,chips:[e.status,`${e.iterations} iter`,`${e.toolCalls} tools`,...e.model===void 0?[]:[e.model]],machineId:s,projectId:a.projectId,...a.clientId===void 0?{}:{clientId:a.clientId},sessionId:a.sessionId,agentId:e.id,agent:e,session:a}),$(n,i,u,r)}}return{nodes:t,edges:n}}export{Pt as a,Ue as c,Nt as i,Ke as l,At as n,Mt as o,jt as r,kt as s,Wt as t,Le as u};
9
+ `);if(n.length>5e3||r.length>5e3)return null;let i=n.length,a=r.length,o=Array.from({length:i+1},()=>Array(a+1).fill(0));for(let e=i-1;e>=0;e--)for(let t=a-1;t>=0;t--)o[e][t]=n[e]===r[t]?o[e+1][t+1]+1:Math.max(o[e+1][t],o[e][t+1]);let s=[],c=0,l=0;for(;c<i&&l<a;)n[c]===r[l]?(s.push({kind:`ctx`,text:n[c]}),c++,l++):o[c+1][l]>=o[c][l+1]?(s.push({kind:`del`,text:n[c]}),c++):(s.push({kind:`add`,text:r[l]}),l++);for(;c<i;)s.push({kind:`del`,text:n[c++]});for(;l<a;)s.push({kind:`add`,text:r[l++]});return s}function pt(e){let t=[],n=e.split(`
10
+ `);for(let e of n)e.startsWith(`@@`)||e.startsWith(`--- `)||e.startsWith(`+++ `)||e.startsWith(`diff `)||e.startsWith(`index `)||e.startsWith(`\\ `)?t.push({kind:`meta`,text:e}):e.startsWith(`+`)?t.push({kind:`add`,text:e.slice(1)}):e.startsWith(`-`)?t.push({kind:`del`,text:e.slice(1)}):t.push({kind:`ctx`,text:e.startsWith(` `)?e.slice(1):e});return t.length>0&&t[t.length-1].kind===`ctx`&&t[t.length-1].text===``&&t.pop(),t}function mt(e,t){let n=dt(e,t);return n?n.mode===`unified`?{caption:n.caption,rows:pt(n.patchText)}:{caption:n.caption,rows:ft(n.oldText,n.newText)}:null}[`var DIFF_MAX_LINES = 5000;`,`function __diffObj(input){`,` if(typeof input==="string"){ var s=input.trim(); if(s.charAt(0)==="{"||s.charAt(0)==="["){ try{ var p=JSON.parse(s); if(p&&typeof p==="object") return p; }catch(_e){} } return null; }`,` if(input&&typeof input==="object") return input; return null;`,`}`,`function diffFromToolInput(name, input){`,` if(!name) return null;`,` var obj=__diffObj(input); if(!obj) return null;`,` var n=String(name).toLowerCase();`,` var fp=String(obj.file_path!=null?obj.file_path:(obj.path!=null?obj.path:""));`,` if(n==="edit"||n==="str_replace"||n==="edit_file"||n==="multi_edit"){`,` var oldT=typeof obj.old_string==="string"?obj.old_string:"";`,` var newT=typeof obj.new_string==="string"?obj.new_string:"";`,` if(!oldT&&!newT) return null;`,` return { mode:"lcs", oldText:oldT, newText:newT, caption:("edit "+fp).replace(/\\s+$/,"") };`,` }`,` if(n==="write"||n==="write_file"||n==="create_file"){`,` var c=typeof obj.content==="string"?obj.content:"";`,` if(!c) return null;`,` return { mode:"lcs", oldText:"", newText:c, caption:("write "+fp+" (new)").replace(/\\s+/g," ").replace(/\\s+$/,"") };`,` }`,` if(n==="patch"){`,` var pt=typeof obj.patch==="string"?obj.patch:"";`,` if(!pt.replace(/\\s/g,"")) return null;`,` return { mode:"unified", patchText:pt, caption: fp ? ("patch "+fp) : "patch" };`,` }`,` return null;`,`}`,`function computeLineDiff(oldText, newText){`,` var a=oldText.split("\\n"), b=newText.split("\\n");`,` if(a.length>DIFF_MAX_LINES||b.length>DIFF_MAX_LINES) return null;`,` var nn=a.length, mm=b.length, i, j;`,` var dp=new Array(nn+1); for(i=0;i<=nn;i++){ dp[i]=new Array(mm+1); for(j=0;j<=mm;j++) dp[i][j]=0; }`,` for(i=nn-1;i>=0;i--){ for(j=mm-1;j>=0;j--){ dp[i][j]= a[i]===b[j] ? dp[i+1][j+1]+1 : Math.max(dp[i+1][j], dp[i][j+1]); } }`,` var rows=[]; i=0; j=0;`,` while(i<nn&&j<mm){ if(a[i]===b[j]){ rows.push({kind:"ctx",text:a[i]}); i++; j++; } else if(dp[i+1][j]>=dp[i][j+1]){ rows.push({kind:"del",text:a[i]}); i++; } else { rows.push({kind:"add",text:b[j]}); j++; } }`,` while(i<nn){ rows.push({kind:"del",text:a[i]}); i++; }`,` while(j<mm){ rows.push({kind:"add",text:b[j]}); j++; }`,` return rows;`,`}`,`function parseUnifiedDiff(patchText){`,` var rows=[], lines=patchText.split("\\n"), k, raw;`,` for(k=0;k<lines.length;k++){ raw=lines[k];`,` if(raw.indexOf("@@")===0||raw.indexOf("--- ")===0||raw.indexOf("+++ ")===0||raw.indexOf("diff ")===0||raw.indexOf("index ")===0||raw.indexOf("\\\\ ")===0){ rows.push({kind:"meta",text:raw}); }`,` else if(raw.charAt(0)==="+"){ rows.push({kind:"add",text:raw.slice(1)}); }`,` else if(raw.charAt(0)==="-"){ rows.push({kind:"del",text:raw.slice(1)}); }`,` else { rows.push({kind:"ctx",text: raw.charAt(0)===" " ? raw.slice(1) : raw}); }`,` }`,` if(rows.length>0 && rows[rows.length-1].kind==="ctx" && rows[rows.length-1].text===""){ rows.pop(); }`,` return rows;`,`}`,`function diffRowsFromToolInput(name, input){`,` var d=diffFromToolInput(name, input); if(!d) return null;`,` if(d.mode==="unified") return { caption:d.caption, rows:parseUnifiedDiff(d.patchText) };`,` return { caption:d.caption, rows:computeLineDiff(d.oldText, d.newText) };`,`}`].join(`
11
+ `);var ht={add:`+`,del:`-`,ctx:` `,meta:`@`};function gt({toolName:e,toolInput:t}){let n=(0,N.useMemo)(()=>mt(e,t),[e,t]);if(!n)return null;let{caption:r,rows:i}=n;if(i===null)return(0,P.jsxs)(`div`,{className:`hq-tool-empty`,children:[`diff too large to render — `,r]});let a=i.filter(e=>e.kind===`add`).length,o=i.filter(e=>e.kind===`del`).length;return(0,P.jsxs)(`div`,{className:`hq-diff`,children:[(0,P.jsxs)(`div`,{className:`hq-diff-stat`,children:[(0,P.jsx)(`span`,{className:`hq-diff-path`,title:r,children:r}),(0,P.jsxs)(`span`,{className:`hq-diff-add-count`,children:[`+`,a]}),(0,P.jsxs)(`span`,{className:`hq-diff-del-count`,children:[`-`,o]})]}),(0,P.jsx)(`pre`,{className:`hq-diff-body`,children:i.map((e,t)=>(0,P.jsxs)(`span`,{className:`hq-diff-line ${e.kind}`,children:[(0,P.jsx)(`span`,{className:`hq-diff-gutter`,children:ht[e.kind]}),e.text||` `]},t))})]})}function _t(e,t){return dt(e,t)!==null}var vt=25,Z=12;function Q({text:e,isError:t,wrap:n,framed:r=!0}){let i=(0,N.useMemo)(()=>e.split(`
12
+ `),[e]),a=i.length>vt,[o,s]=(0,N.useState)(!a),c=o?e:i.slice(0,Z).join(`
13
+ `);return(0,P.jsxs)(`div`,{className:`hq-result${r?``:` bare`}`,children:[(0,P.jsx)(`pre`,{className:`hq-result-pre ${n?`wrap`:`nowrap`}${t?` err`:``}`,children:c}),a&&(0,P.jsx)(`button`,{type:`button`,className:`hq-result-toggle`,onClick:()=>s(e=>!e),children:o?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(l,{size:12}),` collapse to `,Z,` lines`]}):(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(M,{size:12}),` show all `,i.length,` lines (+`,i.length-Z,` more)`]})})]})}function yt(e,t){let n=t.trim();if(/^\s*\d+→/m.test(t.slice(0,200)))return{kind:`numbered`};if(n.startsWith(`{`)&&n.endsWith(`}`)||n.startsWith(`[`)&&n.endsWith(`]`))try{let e=JSON.parse(n);if(typeof e==`object`&&e)return{kind:`json`,value:e}}catch{}let r=!!e&&/^(bash|shell|exec|run|powershell)/i.test(e),i=t.match(/(?:^|\n)\s*(?:\[?exit(?:\s*code)?\]?\s*[:=]?\s*)(\d+)\s*$/i),a=t.match(/(?:^|\s)(\d+\s*ms|\d+\.\d+s)\s*$/i);if(r||i){let e=t;return i&&(e=t.slice(0,i.index).trimEnd()),{kind:`bash`,stdout:e,exitCode:i?Number(i[1]):void 0,duration:a?.[1]}}return{kind:`plain`}}function bt({value:e,isError:n}){let r=(0,N.useMemo)(()=>{try{return JSON.stringify(e,null,2)}catch{return String(e)}},[e]),i=r.split(`
14
+ `).length,[a,o]=(0,N.useState)(i<30);return(0,P.jsxs)(`div`,{className:`hq-result${n?` err-frame`:``}`,children:[(0,P.jsxs)(`button`,{type:`button`,className:`hq-result-jsonbar`,onClick:()=>o(e=>!e),children:[(0,P.jsxs)(`span`,{className:`hq-result-jsonbar-left`,children:[a?(0,P.jsx)(f,{size:12}):(0,P.jsx)(t,{size:12}),(0,P.jsxs)(`span`,{children:[`JSON · `,i,` lines`]})]}),(0,P.jsx)(`span`,{children:a?`collapse`:`expand`})]}),a&&(0,P.jsx)(`pre`,{className:`hq-result-pre nowrap${n?` err`:``}`,children:r})]})}function xt({toolName:e,result:t,isError:n}){let r=(0,N.useMemo)(()=>yt(e,t),[e,t]);return r.kind===`json`?(0,P.jsx)(bt,{value:r.value,isError:n}):r.kind===`numbered`?(0,P.jsx)(Q,{text:t,isError:n,wrap:!1}):r.kind===`bash`?(0,P.jsxs)(`div`,{className:`hq-result hq-result-bash`,children:[r.stdout!==void 0&&r.stdout!==``&&(0,P.jsx)(Q,{text:r.stdout,isError:n,wrap:!0,framed:!1}),(r.exitCode!==void 0||r.duration!==void 0)&&(0,P.jsxs)(`div`,{className:`hq-result-exit${r.exitCode!==void 0&&r.exitCode!==0?` bad`:``}`,children:[r.exitCode!==void 0&&(0,P.jsxs)(`span`,{children:[`exit code `,r.exitCode]}),r.duration!==void 0&&(0,P.jsx)(`span`,{children:r.duration})]})]}):(0,P.jsx)(Q,{text:t,isError:n,wrap:!0})}var St={completed:`✔`,in_progress:`▶`,pending:`○`};function Ct({todos:e}){let t=e.filter(e=>e.status===`completed`).length;return(0,P.jsxs)(`div`,{className:`hq-tool-section`,children:[(0,P.jsxs)(`div`,{className:`hq-tool-section-label`,children:[`todos · `,t,`/`,e.length,` done`]}),(0,P.jsx)(`ul`,{className:`hq-todo-list`,children:e.map((e,t)=>(0,P.jsxs)(`li`,{className:`hq-todo ${e.status}`,children:[(0,P.jsx)(`span`,{className:`hq-todo-mark`,children:St[e.status]}),(0,P.jsx)(`span`,{className:`hq-todo-text`,children:e.content||`(empty)`})]},t))})]})}function wt({entry:e}){let t=nt(e.tool),n=_t(e.tool,e.toolInput),r=t===`todo`?ot(e.toolInput):null,i=e.text??``,a=i.trim()!==``;return(0,P.jsxs)(`div`,{className:`hq-tool-body`,children:[n?(0,P.jsxs)(`div`,{className:`hq-tool-section`,children:[(0,P.jsx)(`div`,{className:`hq-tool-section-label`,children:`changes`}),(0,P.jsx)(gt,{toolName:e.tool,toolInput:e.toolInput}),a&&!e.isError&&(0,P.jsx)(`div`,{className:`hq-tool-result-note`,children:i.split(`
15
+ `)[0]})]}):r?(0,P.jsx)(Ct,{todos:r}):e.toolInput!==void 0&&e.toolInput!==`{}`&&(0,P.jsxs)(`div`,{className:`hq-tool-section`,children:[(0,P.jsx)(`div`,{className:`hq-tool-section-label`,children:`input`}),(0,P.jsx)(`pre`,{className:`hq-tool-pre`,children:at(e.toolInput)})]}),!n&&a&&(0,P.jsxs)(`div`,{className:`hq-tool-section`,children:[(0,P.jsxs)(`div`,{className:`hq-tool-section-head`,children:[(0,P.jsx)(`span`,{className:`hq-tool-section-label`,children:e.isError?`error`:`output`}),(0,P.jsx)(We,{text:i,label:`copy`})]}),(0,P.jsx)(xt,{toolName:e.tool,result:i,isError:e.isError})]}),!a&&!e.isError&&!r&&!n&&(0,P.jsx)(`div`,{className:`hq-tool-empty`,children:`(no output)`})]})}function Tt({entry:e,running:n}){let[r,i]=(0,N.useState)(!1),o=it(e.tool,e.toolInput),s=st(e.durationMs),c=ct(e.tool),{Icon:l,color:u}=Ze(e.tool);return(0,P.jsxs)(`div`,{className:`hq-chat-turn tool ${e.isError?`err`:``}`,children:[(0,P.jsxs)(`button`,{type:`button`,className:`hq-tool-head`,onClick:()=>i(e=>!e),children:[(0,P.jsx)(`span`,{className:`hq-tool-caret`,children:r?(0,P.jsx)(f,{size:13}):(0,P.jsx)(t,{size:13})}),(0,P.jsx)(`span`,{className:`hq-tool-icon`,style:{color:u},children:(0,P.jsx)(l,{size:14})}),(0,P.jsx)(`span`,{className:`hq-tool-name`,children:c}),o!==``&&(0,P.jsx)(`span`,{className:`hq-tool-summary`,children:o}),s!==``&&(0,P.jsx)(`span`,{className:`hq-tool-dur`,children:s}),(0,P.jsx)(`span`,{className:`hq-tool-status`,"aria-hidden":!0,children:n?(0,P.jsx)(`span`,{className:`hq-tool-running-dot`,title:`running`}):e.isError?(0,P.jsx)(C,{size:14,className:`hq-status-err`}):(0,P.jsx)(a,{size:14,className:`hq-status-ok`})})]}),r&&(0,P.jsx)(wt,{entry:e})]})}function Et({entry:e}){let[n,r]=(0,N.useState)(!1),i=e.text.split(`
16
+ `)[0]??``;return(0,P.jsxs)(`div`,{className:`hq-chat-turn thinking`,children:[(0,P.jsxs)(`button`,{type:`button`,className:`hq-thinking-head`,onClick:()=>r(e=>!e),children:[(0,P.jsx)(`span`,{className:`hq-tool-caret`,children:n?(0,P.jsx)(f,{size:13}):(0,P.jsx)(t,{size:13})}),(0,P.jsx)(p,{size:13,className:`hq-thinking-icon`}),(0,P.jsx)(`span`,{className:`hq-thinking-label`,children:`thinking`}),!n&&(0,P.jsx)(`span`,{className:`hq-thinking-peek`,children:i})]}),n&&(0,P.jsx)(`div`,{className:`hq-thinking-body`,children:(0,P.jsx)(Ke,{text:e.text})})]})}var Dt=(0,N.memo)(function({entry:e,running:t}){let n=lt(e.ts);return e.role===`tool`||e.role===`error`&&e.toolInput!==void 0?(0,P.jsx)(Tt,{entry:e,running:t??q(e)}):e.role===`thinking`?(0,P.jsx)(Et,{entry:e}):e.role===`user`?(0,P.jsx)(`div`,{className:`hq-chat-turn user`,children:(0,P.jsxs)(`div`,{className:`hq-chat-bubble user`,children:[(0,P.jsxs)(`div`,{className:`hq-chat-role`,children:[`you`,e.agentId===void 0?``:` · ${e.agentId}`,n!==``&&(0,P.jsx)(`span`,{className:`hq-chat-clock`,children:n})]}),(0,P.jsx)(`div`,{className:`hq-chat-prose`,children:e.text})]})}):e.role===`assistant`?(0,P.jsx)(`div`,{className:`hq-chat-turn assistant`,children:(0,P.jsxs)(`div`,{className:`hq-chat-bubble assistant`,children:[(0,P.jsxs)(`div`,{className:`hq-chat-role`,children:[`agent`,e.agentId===void 0?``:` · ${e.agentId}`,n!==``&&(0,P.jsx)(`span`,{className:`hq-chat-clock`,children:n})]}),(0,P.jsx)(Ke,{text:e.text})]})}):e.role===`error`?(0,P.jsx)(`div`,{className:`hq-chat-turn error`,children:(0,P.jsxs)(`div`,{className:`hq-chat-bubble error`,children:[(0,P.jsxs)(`div`,{className:`hq-chat-role err`,children:[`error`,n!==``&&(0,P.jsx)(`span`,{className:`hq-chat-clock`,children:n})]}),(0,P.jsx)(`pre`,{className:`hq-tool-pre err`,children:e.text})]})}):e.text.trim()===``?null:(0,P.jsx)(`div`,{className:`hq-chat-turn system`,children:(0,P.jsxs)(`span`,{className:`hq-chat-system-line`,children:[e.text,n!==``&&(0,P.jsx)(`span`,{className:`hq-chat-clock`,children:n})]})})});function Ot(e,t,n){if(t===`all`||n===void 0||n.length===0)return e;let r=new Set;if(t===`machine`)for(let t of e.nodes)t.machineId===n&&r.add(t.id);else{let t=new Set;for(let i of e.nodes)i.projectId===n&&(r.add(i.id),i.machineId!==void 0&&t.add(i.machineId));for(let n of e.nodes)n.kind===`machine`&&n.machineId!==void 0&&t.has(n.machineId)&&r.add(n.id)}return{nodes:e.nodes.filter(e=>r.has(e.id)),edges:e.edges.filter(e=>r.has(e.source)&&r.has(e.target))}}function kt(e,t){let n=t.trim().toLocaleLowerCase();if(n.length===0)return e;let r=new Map(e.nodes.map(e=>[e.id,e])),i=new Map,a=new Map;for(let t of e.edges){i.set(t.target,t.source);let e=a.get(t.source)??[];e.push(t.target),a.set(t.source,e)}let o=new Set,s=new Set,c=e=>{let t=e;for(;t!==void 0&&!o.has(t);)o.add(t),t=i.get(t)},l=e=>{if(!s.has(e)){s.add(e),o.add(e);for(let t of a.get(e)??[])l(t)}};for(let t of e.nodes)[t.kind,t.label,t.sub,t.status,t.clientKind,t.serviceMode,t.machineId,t.projectId,t.clientId,t.sessionId,t.agentId,...t.chips].filter(e=>typeof e==`string`).join(` `).toLocaleLowerCase().includes(n)&&(c(t.id),l(t.id));for(let e of[...o])r.has(e)||o.delete(e);return{nodes:e.nodes.filter(e=>o.has(e.id)),edges:e.edges.filter(e=>o.has(e.source)&&o.has(e.target))}}function At(e){let t=new Map(e.nodes.map(e=>[e.id,e])),n=new Set(e.edges.map(e=>e.target)),r=new Map;for(let t of e.edges){let e=r.get(t.source)??[];e.push(t.target),r.set(t.source,e)}let i=[],a=new Set,o=e=>{if(a.has(e))return;a.add(e);let n=t.get(e);n!==void 0&&i.push(n);for(let t of r.get(e)??[])o(t)};for(let t of e.nodes)n.has(t.id)||o(t.id);for(let t of e.nodes)o(t.id);return i}function jt(e){return e===`machine`?0:e===`project`?1:e===`terminal`?2:3}function Mt(e){let t=e.filter(e=>e.kind===`machine`),n=new Map,r=new Map,i=new Map;for(let t of e)if(t.kind===`project`&&t.machineId!==void 0){let e=n.get(t.machineId)??[];e.push(t),n.set(t.machineId,e)}else if(t.kind===`terminal`){let e=Pt(t.machineId??``,t.projectId??``),n=r.get(e)??[];n.push(t),r.set(e,n)}else if(t.kind===`agent`&&t.sessionId!==void 0){let e=i.get(t.sessionId)??[];e.push(t),i.set(t.sessionId,e)}let a=new Map,o=0,s=e=>e.length===0?0:((e[0]??0)+(e[e.length-1]??0))/2;for(let e of t){let t=n.get(e.machineId??``)??[],c=[];for(let e of t){let t=r.get(e.id)??[],n=[];for(let e of t){let t=i.get(e.sessionId??``)??[],r;if(t.length>0){let e=[];for(let n of t)a.set(n.id,o),e.push(o),o+=118;r=s(e)}else r=o,o+=118;a.set(e.id,r),n.push(r),o+=18}let l;n.length>0?l=s(n):(l=o,o+=118),a.set(e.id,l),c.push(l),o+=42}c.length>0?a.set(e.id,s(c)):(a.set(e.id,o),o+=118),o+=64}let c=new Map;for(let t of e)c.set(t.id,{x:jt(t.kind)*300,y:a.get(t.id)??0});return c}function Nt(e){return`machine:${e}`}function Pt(e,t){return`project:${e}:${t}`}function Ft(e){return`terminal:${e}`}function It(e,t){return`agent:${e}:${t}`}function $(e,t,n,r){let i=`${n}->${r}`;t.has(i)||(t.add(i),e.push({id:i,source:n,target:r}))}function Lt(e,t){return e?.projectName??t?.projectName??`unknown project`}function Rt(e,t){let n=e?.projectRootDisplay??t?.projectRoot;if(n!==void 0&&n.length!==0)return n.length>54?`…${n.slice(-51)}`:n}function zt(e){return e.clientKind===`mailbox`?`MAILBOX SERVE · ${e.pid??e.sessionId.slice(-8)}`:`${e.clientKind.toUpperCase()} · ${e.sessionId.length>18?`…${e.sessionId.slice(-14)}`:e.sessionId}`}function Bt(e,t){return{sessionId:e.sessionId??`client:${e.clientId}`,clientId:e.clientId,clientKind:e.kind,machineId:e.machineId,...e.hostname===void 0?{}:{hostname:e.hostname},...e.pid===void 0?{}:{pid:e.pid},projectId:e.projectId,projectName:t?.projectName??e.projectId,projectRoot:t?.projectRootDisplay??``,...t?.gitBranch===void 0?{}:{gitBranch:t.gitBranch},status:e.connected&&e.capabilities.includes(`mailbox.serve`)?`active`:e.connected?`idle`:`stale`,startedAt:e.connectedAt??e.lastSeenAt,lastActivityAt:e.lastSeenAt,agentCount:0,agents:[]}}function Vt(e,t,n,r){let i=t.get(e),a=n.find(t=>t.machineId===e),o=r.find(t=>t.machineId===e),s=i?.hostname??a?.hostname??o?.hostname??e,c=i?.sessionCount??n.filter(t=>t.machineId===e).length,l=i?.agentCount??n.reduce((t,n)=>t+(n.machineId===e?n.agents.length:0),0),u=i?.clientCount??r.filter(t=>t.machineId===e&&t.connected).length,d=r.filter(t=>t.machineId===e&&t.connected&&t.capabilities.includes(`mailbox.serve`)).length;return{label:s,sub:e,chips:[`${u} client${u===1?``:`s`}`,`${c} terminal${c===1?``:`s`}`,`${l} agent${l===1?``:`s`}`,...d>0?[`mailbox serve ×${d}`]:[]]}}function Ht(e){if(e===null)return{nodes:[],edges:[]};let t=[],n=[],r=new Set,i=new Set,a=new Map((e.machines??[]).map(e=>[e.machineId,e])),o=new Map((e.projects??[]).map(e=>[e.projectId,e])),s=[...e.liveSessions??[]],c=new Set(s.map(e=>e.sessionId)),l=new Set(s.filter(e=>e.pid!==void 0).map(e=>`${e.machineId}:${e.pid}`)),u=Date.parse(e.generatedAt);for(let t of e.clients??[]){if(!t.connected)continue;let e=t.capabilities?.includes(`mailbox.serve`)===!0;if(!t.capabilities?.includes(`session.summary`)&&!e||t.pid!==void 0&&l.has(`${t.machineId}:${t.pid}`))continue;let n=Date.parse(t.connectedAt??t.lastSeenAt);if(!e&&Number.isFinite(u)&&Number.isFinite(n)&&u-n>45e3)continue;let r=t.sessionId??`client:${t.clientId}`;c.has(r)||(s.push(Bt(t,o.get(t.projectId))),c.add(r))}let d=new Set;for(let t of e.machines??[])d.add(t.machineId);for(let e of s)d.add(e.machineId);for(let t of e.clients??[])t.connected&&d.add(t.machineId);for(let n of d){let i=Nt(n),o=Vt(n,a,s,e.clients??[]);t.push({id:i,kind:`machine`,label:o.label,sub:o.sub,chips:o.chips,machineId:n}),r.add(i)}let f=s.sort((e,t)=>{let n=e.machineId.localeCompare(t.machineId);if(n!==0)return n;let r=e.projectName.localeCompare(t.projectName);return r===0?e.sessionId.localeCompare(t.sessionId):r});for(let a of f){let s=a.machineId,c=o.get(a.projectId),l=Pt(s,a.projectId);if(!r.has(l)){let n=[`${c?.activeClients??f.filter(e=>e.machineId===s&&e.projectId===a.projectId).length} client${(c?.activeClients??0)===1?``:`s`}`,`${c?.activeSessions??f.filter(e=>e.machineId===s&&e.projectId===a.projectId).length} terminal${(c?.activeSessions??0)===1?``:`s`}`];c?.gitBranch!==void 0&&n.push(c.gitBranch),(e.clients??[]).filter(e=>e.connected&&e.machineId===s&&e.projectId===a.projectId&&e.capabilities.includes(`mailbox.serve`)).length>0&&n.push(`mailbox serve`),t.push({id:l,kind:`project`,label:Lt(c,a),sub:Rt(c,a),status:c?.status??a.status,chips:n,machineId:s,projectId:a.projectId}),r.add(l)}$(n,i,Nt(s),l);let u=Ft(a.sessionId);if(!r.has(u)){let e=a.sessionId.startsWith(`client:`)&&a.agents.length===0,n=a.clientKind===`mailbox`?`mailbox-serve`:void 0,i=[n===`mailbox-serve`?`mailbox serve`:a.clientKind,a.status,...n===void 0?[`${a.agentCount} agent${a.agentCount===1?``:`s`}`]:[]];a.gitBranch!==void 0&&i.push(a.gitBranch),t.push({id:u,kind:`terminal`,label:zt(a),sub:n===`mailbox-serve`?`mailbox HTTP bridge`:e?`waiting for session telemetry`:a.projectName,status:a.status,chips:i,machineId:s,projectId:a.projectId,...a.clientId===void 0?{}:{clientId:a.clientId},sessionId:a.sessionId,clientKind:a.clientKind,session:a,isSyntheticSession:e,...n===void 0?{}:{serviceMode:n}}),r.add(u)}$(n,i,l,u);for(let e of a.agents){let r=It(a.sessionId,e.id);t.push({id:r,kind:`agent`,label:e.name||e.id,sub:e.currentTool??e.partialText,status:e.status,chips:[e.status,`${e.iterations} iter`,`${e.toolCalls} tools`,...e.model===void 0?[]:[e.model]],machineId:s,projectId:a.projectId,...a.clientId===void 0?{}:{clientId:a.clientId},sessionId:a.sessionId,agentId:e.id,agent:e,session:a}),$(n,i,u,r)}}return{nodes:t,edges:n}}export{Mt as a,Be as c,jt as i,Ue as l,Ot as n,At as o,kt as r,Dt as s,Ht as t,Pe as u};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/cockpit-_VEFDAml.js","assets/rolldown-runtime-hePW80VL.js","assets/icons-Cxo3pc0p.js","assets/markdown-jMopG_H4.js","assets/fleet-map-DvJUXycx.js","assets/vendor-ClUhoD-_.js","assets/fleet-topology-Cx3xkM7b.js","assets/live-console-CXIqWfTP.js","assets/mailbox-x3A7Q_14.js","assets/use-backfilled-events-DxJIXnP1.js","assets/kanban-CKsu6Ay6.js","assets/cost-DWIDsUOT.js","assets/brain-CMNIH1x1.js","assets/worktree-in2v3vuI.js","assets/trends-CYFmKvyZ.js","assets/alerts-JhEfQfJA.js","assets/control-Ch2TnZ61.js","assets/settings-B_GWACA6.js"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$ as t,A as n,Ct as r,F as i,Ft as a,Gt as o,I as s,O as c,Pt as l,S as u,Tt as d,Ut as f,W as p,Xt as ee,Zt as m,a as te,bt as ne,d as re,h,i as ie,j as ae,kt as oe,l as g,n as se,nt as _,o as ce,qt as v,rt as y,ut as b,v as x,w as S,y as le,yt as ue,z as C}from"./icons-Cxo3pc0p.js";import{t as de}from"./vendor-ClUhoD-_.js";import{i as w}from"./markdown-jMopG_H4.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var T={maxReconnectAttempts:10,initialBackoffMs:1e3,maxBackoffMs:3e4,backoffMultiplier:2,jitterRatio:0,queueLimit:1e3,heartbeatIntervalMs:0,heartbeatTimeoutMs:0};function E(){return{phase:`idle`,reconnectAttempt:0,lastActivityAt:null,stopped:!1}}function fe(e){return e.stopped?e:{...e,phase:`connecting`}}function pe(e,t=Date.now()){return{...e,phase:`open`,reconnectAttempt:0,lastActivityAt:t,stopped:!1}}function D(e,t=Date.now()){return{...e,lastActivityAt:t}}function me(e){return{...e,phase:`closed`,stopped:!0}}function he(e,t,n=Date.now(),r=Math.random){if(e.stopped||e.reconnectAttempt>=t.maxReconnectAttempts)return{state:{...e,phase:`closed`},plan:null};let i=e.reconnectAttempt+1,a=Math.min(t.initialBackoffMs*t.backoffMultiplier**(i-1),t.maxBackoffMs),o=(r()*2-1)*t.jitterRatio,s=Math.max(0,Math.round(a*(1+o)));return{state:{...e,phase:`reconnecting`,reconnectAttempt:i},plan:{attempt:i,delayMs:s,retryAt:n+s}}}function O(e,t,n=Date.now()){return e.phase!==`open`||e.lastActivityAt===null||t.heartbeatIntervalMs<=0?!1:n-e.lastActivityAt>t.heartbeatIntervalMs+t.heartbeatTimeoutMs}var ge=`abort,ping,user_message,tool.confirm_result,topic.advice,completion.request,model.switch,model.refine,model.fallback_choice,autonomy.switch,context.clear,context.compact,context.debug,context.editor.open,context.editor.validate,context.editor.apply,context.mode.create,context.mode.delete,context.mode.switch,context.mode.update,context.modes.list,context.repair,mode.switch,modes.list,session.checkpoints,session.delete,session.inspect,session.new,session.rename,session.resume,session.rewind,session.save,sessions.list,side_effects.list,stats.get,todo.update,todos.clear,todos.get,todos.remove`.split(`,`),_e=[`collab.join`,`collab.leave`,`collab.annotate`,`collab.resolve`,`collab.request_pause`,`collab.resume`,`collab.grant_control`,`collab.inject_tool`,`mailbox.action`,`mailbox.agents`,`mailbox.clear`,`mailbox.compact`,`mailbox.messages`,`mailbox.purge`,`mailbox.send`],ve=`brain.ask,brain.config.get,brain.config.set,brain.risk,brain.status,chronicle.facet,chronicle.facets,chronicle.graph,chronicle.metrics,chronicle.query,chronicle.status,config.doctor,design.list,design.materialize,design.set,design.state,design.swap,design.tune,design.use,design.verify,memory.list,memory.sage.backfillRecoverable,memory.sage.candidateResolve,memory.sage.delete,memory.sage.forFile,memory.sage.get,memory.sage.graph,memory.sage.list,memory.sage.listCandidates,memory.sage.listPage,memory.sage.recover,memory.sage.remember,memory.sage.searchBreakdown,memory.sage.update`.split(`,`),ye=`auth.oauth.cancel,auth.oauth.code,auth.oauth.start,mcp.add,mcp.disable,mcp.discover,mcp.enable,mcp.list,mcp.prompt.get,mcp.prompts,mcp.remove,mcp.resource.read,mcp.resources,mcp.restart,mcp.sleep,mcp.update,mcp.wake,prompts.content,prompts.create,prompts.favorite,prompts.journal,prompts.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.create,skills.edit,skills.export,skills.install,skills.list,skills.uninstall,skills.update`.split(`,`),be=`goal-state.get,goal.addTask,goal.assess,goal.assignTask,goal.clear,goal.get,goal.list,goal.load,goal.moveTask,goal.pause,goal.resume,goal.retryTask,goal.revert,goal.runTask,goal.save,goal.selectPhase,goal.start,goal.state,goal.status,goal.stop,goal.taskStatus,goal.toggleAutonomous,plan.get,plan.item.update,plan.template_use,task.update,tasks.get`.split(`,`),xe=`sdd.board.cancel_task,sdd.board.cleanup_worktrees,sdd.board.delete_task,sdd.board.destroy,sdd.board.get,sdd.board.list,sdd.board.pause,sdd.board.reassign,sdd.board.resume,sdd.board.retry,sdd.board.retry_all_failed,sdd.board.rollback,sdd.board.set_task_fallbacks,sdd.board.set_task_model,sdd.board.set_task_verification,sdd.board.split_task,sdd.board.stop,sdd.run.from_graph,sdd.run.from_spec,sdd.run.start,sdd.spec.approve,sdd.spec.discard,sdd.spec.get,sdd.spec.message,sdd.spec.rewind,sdd.spec.start,specs.get,specs.list,specs.taskStatus`.split(`,`),Se=`files.create,files.delete,files.list,files.move,files.read,files.rename,files.skeleton,files.tree,files.write,git.changes,git.diff,git.info,projects.add,projects.list,projects.select,working_dir.set,worktree.cleanup,worktree.diff,worktree.merge,worktree.remove,worktree.scan,shell.open,process.kill,process.killAll,process.list,terminal.close,terminal.create,terminal.input,terminal.resize`.split(`,`),Ce=`codebase.index.server.shutdown,connections.health,connections.service_action,diag.get,key.add,key.delete,key.set_active,key.update,prefs.get,prefs.update,provider.add,provider.clear_models,provider.custom_models.remove,provider.custom_models.set,provider.models,provider.models.search,provider.probe,provider.remove,provider.status.clear,provider.status.get,provider.status.retry,provider.undo_clear,provider.update,providers.list,providers.saved,tool.disable,tool.enable,tools.list,webui.shutdown`.split(`,`),we=`error,log,pong,side_effects,agent.status_changed,agent.timeline.message,client.status_update,chimera.report_available,compaction.failed,completion.result,context.compacted,context.debug,context.editor.snapshot,context.editor.validation,context.editor.applied,context.mode.changed,context.modes.list,context.repaired,ctx.max_context,ctx.pct,delegate.completed,delegate.started,iteration.completed,iteration.limit_reached,iteration.started,model.refine_result,modes.list,provider.active_blocked,provider.error,provider.fallback,provider.fallback_pending,provider.response,provider.retry,provider.status_changed,provider.stream_error,provider.text_delta,provider.thinking_delta,run.result,session.checkpoints,session.damaged,session.end,session.inspect,session.rewound,session.start,session.stats,sessions.list,sessions.status_update,stats.get,token.cost_estimate_unavailable,token.threshold,tool.confirm_needed,tool.disabled,tool.enabled,tool.executed,tool.loop_detected,tool.progress,tool.started,topic.advice_result,tools.list,trust.persisted`.split(`,`),Te=[`collab.annotation.added`,`collab.annotation.resolved`,`collab.event`,`collab.injection.granted`,`collab.participant.joined`,`collab.participant.left`,`collab.pause.granted`,`collab.pause.released`,`collab.state`,`mailbox.action_result`,`mailbox.agent_registered`,`mailbox.agent_deregistered`,`mailbox.agents`,`mailbox.cleared`,`mailbox.compacted`,`mailbox.event`,`mailbox.messages`,`mailbox.sent`,`mailbox.purged`,`mailbox.received`,`subagent.budget_extended`,`subagent.event`],Ee=`brain.answer,brain.config,brain.event,brain.status,chronicle.error,chronicle.facet_result,chronicle.facets_result,chronicle.graph_result,chronicle.metrics_result,chronicle.query_result,chronicle.status_result,config.doctor.result,design.list,design.materialize,design.set,design.state,design.swap,design.tune,design.use,design.verify,memory.event,memory.list,memory.sage.backfillRecoverable,memory.sage.candidateResolve,memory.sage.delete,memory.sage.forFile,memory.sage.get,memory.sage.graph,memory.sage.list,memory.sage.listCandidates,memory.sage.listPage,memory.sage.recover,memory.sage.remember,memory.sage.searchBreakdown,memory.sage.update`.split(`,`),De=`mcp.content.error,mcp.content.selected,mcp.list,mcp.operation_result,mcp.prompts,mcp.resources,mcp.server.added,mcp.server.connected,mcp.server.disconnected,mcp.server.discovered,mcp.server.error,mcp.server.reconnected,mcp.server.removed,mcp.server.sleeping,mcp.server.updated,mcp.server.waking,prompts.content,prompts.created,prompts.favorite,prompts.journal,prompts.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.created,skills.edited,skills.exported,skills.installed,skills.list,skills.uninstalled,skills.updated`.split(`,`),Oe=`budget.decision,budget.threshold_reached,coordinator.stats,coordinator.status,eternal.iteration,fleet.concurrency_update,goal-state.updated,goal.assess.result,goal.list,goal.paused,goal.resumed,goal.saved,goal.error,goal.stopped,goal.failed,goal.completed,goal.cleared,goal.reverted,goal.progress,goal.state,in_flight.ended,in_flight.started,plan.updated,task.completed,task.failed,task.pending,task.started,tasks.updated,todos.cleared,todos.updated`.split(`,`),ke=[`kanban.task.activity`,`sdd.board.lifecycle_result`,`sdd.board.list`,`sdd.board.snapshot`,`sdd.run.started`,`sdd.spec.agent_text`,`sdd.spec.error`,`sdd.spec.snapshot`,`specs.detail`,`specs.list`],Ae=[`consensus.vote_cast`,`consensus.vote_initiated`,`consensus.vote_resolved`,`cron.job_fired`,`cron.snapshot`,`techstack.job.cancelled`,`techstack.job.failed`,`techstack.job.progress`,`techstack.job.started`,`techstack.report.delivered`,`techstack.report.ready`,`techstack.snapshot.updated`,`techstack.workspace.completed`],je=`checkpoint.written,codemap.file_event,codemap.index_updated,codemap.tool_executed,codemap.tool_started,file.saved,files.created,files.deleted,files.list,files.moved,files.read,files.renamed,files.skeleton_result,files.tree,files.tree.changed,files.written,git.changes,git.diff,git.info,process.list,projects.added,projects.list,projects.selected,terminal.exit,terminal.output,working_dir.changed,worktree.cleanup_result,worktree.diff_result,worktree.event,worktree.merge_result,worktree.orphans,worktree.state`.split(`,`),Me=[`auth.oauth.status`,`codebase.index.server.shutdown_result`,`connections.auto_heal_status`,`connections.health_error`,`connections.health_result`,`connections.service_action_result`,`diag.get`,`key.operation_result`,`model.switch_result`,`prefs.updated`,`provider.catalog`,`provider.models`,`provider.models.search_result`,`provider.probe`,`provider.status.snapshot`,`providers.saved`],Ne=[...ge,..._e,...Se,...Ce,...be,...xe,...ve,...ye],Pe=[...we,...Te,...je,...Me,...Oe,...ke,...Ae,...Ee,...De];new Set(Ne),new Set(Pe);function k(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function A(e,t=0){return typeof e==`number`&&Number.isFinite(e)?e:t}function Fe(e){return e===void 0||Array.isArray(e)}function Ie(e){return A(e.activeProjects)===e.activeProjects&&A(e.activeClients)===e.activeClients&&A(e.activeSessions)===e.activeSessions&&A(e.activeSubagents)===e.activeSubagents&&A(e.unreadMailboxMessages)===e.unreadMailboxMessages&&A(e.incompleteMailboxMessages)===e.incompleteMailboxMessages&&A(e.totalCostUsd)===e.totalCostUsd}function Le(e){if(e.type!==`hq.snapshot`)return null;let t=k(e.snapshot),n=t?k(t.totals):null;return!t||typeof t.generatedAt!=`string`||!Array.isArray(t.clients)||!Array.isArray(t.projects)||!Array.isArray(t.sessions)||!Array.isArray(t.fleets)||!Array.isArray(t.mailboxes)||!n||!Ie(n)||!Fe(t.machines)||!Fe(t.liveSessions)||!Fe(t.mcpServers)?null:{kind:`hq-snapshot`,snapshot:t}}function Re(e){if(e.type!==`hq.event`)return null;let t=k(e.event);return!t||typeof t.id!=`string`||typeof t.type!=`string`||typeof t.timestamp!=`string`||typeof t.clientId!=`string`||typeof t.projectId!=`string`||typeof t.seq!=`number`?null:{kind:`hq-event`,event:t}}function ze(e){return e.type!==`hq.alert`||typeof e.severity!=`string`||![`info`,`warn`,`error`].includes(e.severity)||typeof e.message!=`string`||typeof e.timestamp!=`string`?null:{kind:`hq-alert`,alert:e}}function Be(e){if(e.type!==`hq.command_status`)return null;let t=k(e.command);return!t||typeof t.commandId!=`string`||typeof t.type!=`string`||typeof t.clientId!=`string`||typeof t.enqueuedBy!=`string`||typeof t.enqueuedAt!=`string`||typeof t.status!=`string`||![`queued`,`delivered`,`acked`].includes(t.status)?null:{kind:`hq-command-status`,command:t}}var j=e(m(),1),Ve=de(),He=e=>Symbol.iterator in e,Ue=e=>`entries`in e,We=(e,t)=>{let n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(let[e,t]of n)if(!r.has(e)||!Object.is(t,r.get(e)))return!1;return!0},Ge=(e,t)=>{let n=e[Symbol.iterator](),r=t[Symbol.iterator](),i=n.next(),a=r.next();for(;!i.done&&!a.done;){if(!Object.is(i.value,a.value))return!1;i=n.next(),a=r.next()}return!!i.done&&!!a.done};function Ke(e,t){return Object.is(e,t)?!0:typeof e!=`object`||!e||typeof t!=`object`||!t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:He(e)&&He(t)?Ue(e)&&Ue(t)?We(e,t):Ge(e,t):We({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function qe(e){let t=j.useRef(void 0);return n=>{let r=e(n);return Ke(t.current,r)?t.current:t.current=r}}var M=`wrongstack.hq.token.v1`;function Je(){if(typeof window>`u`)return null;try{let e=new URLSearchParams(window.location.search).get(`token`);return e!==null&&e.length>0?e:null}catch{return null}}function N(){if(typeof window>`u`)return null;try{return window.localStorage??null}catch{return null}}function P(){if(typeof window>`u`)return null;try{return window.sessionStorage??null}catch{return null}}function F(){try{let e=N()?.getItem(M)??null;if(e!==null&&e.length>0)return e}catch{}return Ye()}function Ye(){try{let e=P()?.getItem(M)??null;if(e===null||e.length===0)return null;let t=!1;try{let n=N();n!==null&&(n.setItem(M,e),t=n.getItem(M)===e)}catch{}if(t)try{P()?.removeItem(M)}catch{}return e}catch{return null}}function I(e){try{N()?.setItem(M,e)}catch{}}function L(){try{N()?.removeItem(M)}catch{}try{P()?.removeItem(M)}catch{}}function Xe(){let e=Je();return e===null?F():(I(e),e)}function Ze(){if(typeof window>`u`)return;let e=Je();if(e!==null&&(I(e),F()===e))try{let e=new URL(window.location.href);e.searchParams.delete(`token`),window.history.replaceState(null,``,`${e.pathname}${e.search}${e.hash}`)}catch{}}function Qe(){let e=Xe();return e===null?{}:{Authorization:`Bearer ${e}`}}function R(e,t){let n={...t?.headers??{},...Qe()};return fetch(e,{...t,headers:n})}function $e(e){let t=e.trim();if(!/[?&]token=/.test(t))return t;try{let e=typeof window>`u`?`http://127.0.0.1/`:window.location.href;return new URL(t,e).searchParams.get(`token`)?.trim()||t}catch{return t}}async function et(e){return fetch(`/api/auth/upgrade`,{method:`POST`,headers:{Authorization:`Bearer ${e}`},credentials:`same-origin`,signal:AbortSignal.timeout(1e4)})}async function tt(e){let t=$e(e);if(t.length===0)return{ok:!1,message:`Enter a browser token.`};try{let e=await et(t),n={};try{n=await e.json()}catch{}if(e.ok&&n.loggedIn===!0)return I(t),{ok:!0};let r=n.error;return{ok:!1,message:typeof r==`string`?r:typeof r?.message==`string`?r.message:e.status===401?`The browser token was rejected. It may be invalid, expired, or revoked.`:`HQ could not start a browser session with this token.`}}catch{return{ok:!1,message:`Could not reach the HQ server. Try again.`}}}function nt(){if(typeof window>`u`)return null;try{let e=window.location.hash;if(!e.startsWith(`#bootstrap=`))return null;let t=e.slice(11);return t.length>0?t:null}catch{return null}}function rt(){if(!(typeof window>`u`))try{let e=new URL(window.location.href);e.hash.startsWith(`#bootstrap=`)&&(e.hash=``,window.history.replaceState(null,``,`${e.pathname}${e.search}`))}catch{}}async function it(){let e=nt();if(e===null)return!1;try{return(await fetch(`/api/auth/bootstrap`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({code:e}),credentials:`same-origin`,signal:AbortSignal.timeout(1e4)})).ok?(rt(),L(),!0):!1}catch{return!1}}async function at(){let e=F();if(e===null)return!1;try{let t=await et(e);return!(!t.ok||(await t.json()).loggedIn!==!0)}catch{return!1}}var ot=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},st=(e=>e?ot(e):ot),ct=e=>e;function lt(e,t=ct){let n=j.useSyncExternalStore(e.subscribe,j.useCallback(()=>t(e.getState()),[e,t]),j.useCallback(()=>t(e.getInitialState()),[e,t]));return j.useDebugValue(n),n}var ut=e=>{let t=st(e),n=e=>lt(t,e);return Object.assign(n,t),n},dt=(e=>e?ut(e):ut),ft=6e3,pt=0,mt=dt()(e=>({toasts:[],addToast:(t,n=`info`,r=ft,i)=>{let a=`toast-${++pt}-${Date.now()}`,o={id:a,message:t,severity:n,createdAt:Date.now(),ttlMs:r,action:i};e(e=>({toasts:[...e.toasts.slice(-4),o]})),r>0&&setTimeout(()=>{e(e=>({toasts:e.toasts.filter(e=>e.id!==a)}))},r)},removeToast:t=>e(e=>({toasts:e.toasts.filter(e=>e.id!==t)})),clearToasts:()=>e({toasts:[]})})),z=w(),ht={error:(0,z.jsx)(oe,{size:16,"aria-hidden":`true`}),warning:(0,z.jsx)(g,{size:16,"aria-hidden":`true`}),info:(0,z.jsx)(_,{size:16,"aria-hidden":`true`}),success:(0,z.jsx)(a,{size:16,"aria-hidden":`true`})};function gt(){let{toasts:e,removeToast:t}=mt(qe(e=>({toasts:e.toasts,removeToast:e.removeToast})));return e.length===0?null:(0,z.jsx)(`div`,{className:`hq-toast-container`,role:`status`,"aria-live":`polite`,"aria-label":`Notifications`,children:e.map(e=>(0,z.jsxs)(`div`,{className:`hq-toast hq-toast--${e.severity}`,"data-severity":e.severity,children:[(0,z.jsx)(`span`,{className:`hq-toast-icon`,children:ht[e.severity]}),(0,z.jsx)(`span`,{className:`hq-toast-message`,children:e.message}),e.action?(0,z.jsx)(`span`,{className:`hq-toast-action`,children:e.action}):null,(0,z.jsx)(`button`,{type:`button`,className:`hq-toast-close`,"aria-label":`Dismiss notification`,onClick:()=>t(e.id),children:(0,z.jsx)(se,{size:12})})]},e.id))})}var _t=new Set([`graceful`,`crash`,`heartbeat-timeout`,`auth-revoked`]),B=`__hq_peer__`;function vt(e){return e===void 0||typeof e==`string`}function yt(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;return!(typeof t.projectId!=`string`||t.projectId.length===0||typeof t.machineId!=`string`||t.machineId.length===0||typeof t.leaderClientId!=`string`||t.leaderClientId.length===0||typeof t.previousLeaderHandle!=`string`||t.previousLeaderHandle.length===0||typeof t.reason!=`string`||!_t.has(t.reason)||typeof t.detectedAt!=`string`||!Number.isFinite(Date.parse(t.detectedAt))||!vt(t.rehydrateHint)||t.rehydrateHint!==void 0&&t.rehydrateHint.length>280||!vt(t.rehydrateCommandId))}function bt(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;return!(typeof t.projectId!=`string`||t.projectId.length===0||typeof t.machineId!=`string`||t.machineId.length===0||typeof t.leaderClientId!=`string`||t.leaderClientId.length===0||typeof t.previousLeaderHandle!=`string`||t.previousLeaderHandle.length===0||typeof t.reason!=`string`||!_t.has(t.reason)||typeof t.detectedAt!=`string`||!Number.isFinite(Date.parse(t.detectedAt)))}function xt(e,t){let n=t.liveSessions??[],r=e.selectedSessionId===null?void 0:n.find(t=>t.sessionId===e.selectedSessionId),i=e.selectedAgentId===null||r?.agents.some(t=>t.id===e.selectedAgentId)===!0,a=e.selectedClientId===null||t.clients.some(t=>t.clientId===e.selectedClientId);return{snapshot:t,...e.selectedSessionId!==null&&r===void 0?{selectedSessionId:null,selectedAgentId:null}:i?{}:{selectedAgentId:null},...a?{}:{selectedClientId:null}}}function St(e,t){return e.timestamp===t.timestamp&&e.severity===t.severity&&e.message===t.message}var V=dt()(e=>({snapshot:null,events:[],alerts:[],commandStatuses:[],activeView:`cockpit`,selectedSessionId:null,selectedAgentId:null,selectedClientId:null,connected:!1,authRequired:!1,resumeCursors:{},needsSnapshotRefresh:!1,peerRehydrate:null,setActiveView:t=>e({activeView:t}),selectSession:(t,n=null)=>e({selectedSessionId:t,selectedAgentId:n}),selectAgent:(t,n)=>e({selectedSessionId:t,selectedAgentId:n}),selectClient:t=>e({selectedClientId:t}),markAuthRequired:()=>e(e=>e.authRequired?{}:{authRequired:!0}),_hydrateSnapshot:t=>e(e=>e.snapshot===null?xt(e,t):{}),_onSnapshot:t=>e(e=>{let n=e.snapshot;return n!==null&&typeof n.generatedAt==`string`&&typeof t.generatedAt==`string`&&Date.parse(t.generatedAt)<Date.parse(n.generatedAt)?{}:{...xt(e,t),connected:!0}}),_resetResumeCursors:()=>e({resumeCursors:{}}),_onEvent:t=>e(e=>{let n=e.events.some(e=>e.id===t.id),r=n?{}:{events:[...e.events,t].slice(-500)},i=t.type===`peer.rehydrate`||t.type===`peer.lost`?e=>({}):n=>{let r=e.resumeCursors[n]??0,i=t.seq,a=r>0&&i>0&&i<=r/2&&t.type!==`client.hello`;return i>r||a?{resumeCursors:{...e.resumeCursors,[n]:i}}:{}};if(t.type===`peer.rehydrate`){if(!yt(t.payload))return r;let e={kind:`peer.rehydrate`,payload:t.payload,receivedAt:new Date().toISOString()};return{...r,...i(B),...n?{}:{peerRehydrate:e}}}if(t.type===`peer.lost`){if(!bt(t.payload))return r;let e={kind:`peer.lost`,payload:t.payload,receivedAt:new Date().toISOString()};return{...r,...i(B),...n?{}:{peerRehydrate:e}}}return{...r,...i(t.clientId)}}),_onAlert:t=>e(e=>e.alerts.some(e=>St(e,t))?{}:{alerts:[...e.alerts,t].slice(-100)}),_onCommandStatus:t=>e(e=>{let n=e.commandStatuses.findIndex(e=>e.commandId===t.commandId);if(n<0)return{commandStatuses:[...e.commandStatuses,t].slice(-200)};let r=[...e.commandStatuses];return r[n]=t,{commandStatuses:r}}),_setConnected:t=>e({connected:t}),_setNeedsSnapshotRefresh:t=>e(e=>e.needsSnapshotRefresh===t?{}:{needsSnapshotRefresh:t}),_dismissPeerRehydrate:()=>e({peerRehydrate:null})}));async function H(e){let t;try{t=await R(e)}catch{throw Error(`Network error fetching ${e}`)}if(t.status===401)throw V.getState().markAuthRequired(),Error(`401 Unauthorized fetching ${e} — browser token required`);if(!t.ok)throw Error(`${t.status} ${t.statusText}`);try{return await t.json()}catch{throw Error(`Invalid JSON response from ${e}: ${t.status}`)}}async function Ct(e){let t;try{t=await R(`/api/mailbox-send`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}catch{throw Error(`Network error sending mailbox message`)}if(t.status===401)throw V.getState().markAuthRequired(),Error(`401 Unauthorized — browser token required`);if(!t.ok){let e=await t.json().catch(()=>null),n=typeof e?.error==`string`?e.error:t.statusText||`HTTP ${t.status}`;throw Error(n)}try{return await t.json()}catch{throw Error(`Invalid JSON response from mailbox-send API`)}}async function wt(e,t,n){let r;try{r=await R(`/api/command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({clientId:e,type:t,payload:n})})}catch{throw Error(`Network error sending command`)}if(r.status===401)throw V.getState().markAuthRequired(),Error(`401 Unauthorized — browser token required`);if(!r.ok){let e=(await r.json().catch(()=>null))?.error??(r.statusText||`HTTP ${r.status}`);throw Error(e)}try{return await r.json()}catch{throw Error(`Invalid JSON response from command API`)}}var Tt=`wrongstack.hq.local-prefs.v1`,U={appearance:{theme:`dark`},fleet:{scope:`all`,layout:`map`,machineId:``,projectId:``},console:{delivery:`steer`,subject:``,body:``},control:{cmdType:`steer`,abortTarget:`leader`,spawnRole:`bug-hunter`,spawnTask:``,steerTo:`leader`,steerSubject:``,steerBody:``,broadcastSubject:``,broadcastBody:``},mailbox:{query:``,types:[],priorities:[],includeCompleted:!0}},W=null,Et=new Set;function G(){for(let e of Et)e()}function K(e){return typeof structuredClone==`function`?structuredClone(e):JSON.parse(JSON.stringify(e))}function q(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Dt(){if(typeof window>`u`||window.localStorage===void 0)return K(U);try{let e=window.localStorage.getItem(Tt);return e===null?K(U):Ot(JSON.parse(e))}catch{return K(U)}}function Ot(e){if(!q(e))return K(U);let t=q(e.appearance)?e.appearance:{},n=q(e.fleet)?e.fleet:{},r=q(e.console)?e.console:{},i=q(e.control)?e.control:{},a=q(e.mailbox)?e.mailbox:{};return{appearance:{theme:t.theme===`light`?`light`:`dark`},fleet:{scope:n.scope===`machine`||n.scope===`project`?n.scope:`all`,layout:n.layout===`compact`?`compact`:`map`,machineId:typeof n.machineId==`string`?n.machineId:``,projectId:typeof n.projectId==`string`?n.projectId:``},console:{delivery:r.delivery===`btw`||r.delivery===`queue`?r.delivery:`steer`,subject:typeof r.subject==`string`?r.subject:``,body:typeof r.body==`string`?r.body:``},control:{cmdType:i.cmdType===`btw`||i.cmdType===`queue`||i.cmdType===`abort`||i.cmdType===`spawn`||i.cmdType===`broadcast`||i.cmdType===`run-command`?i.cmdType:U.control.cmdType,abortTarget:i.abortTarget===`fleet`?`fleet`:`leader`,spawnRole:typeof i.spawnRole==`string`&&i.spawnRole.length>0?i.spawnRole:U.control.spawnRole,spawnTask:typeof i.spawnTask==`string`?i.spawnTask:U.control.spawnTask,steerTo:typeof i.steerTo==`string`?i.steerTo:U.control.steerTo,steerSubject:typeof i.steerSubject==`string`?i.steerSubject:U.control.steerSubject,steerBody:typeof i.steerBody==`string`?i.steerBody:U.control.steerBody,broadcastSubject:typeof i.broadcastSubject==`string`?i.broadcastSubject:U.control.broadcastSubject,broadcastBody:typeof i.broadcastBody==`string`?i.broadcastBody:U.control.broadcastBody},mailbox:{query:typeof a.query==`string`?a.query:U.mailbox.query,types:Array.isArray(a.types)?a.types.filter(e=>typeof e==`string`):[],priorities:Array.isArray(a.priorities)?a.priorities.filter(e=>typeof e==`string`):[],includeCompleted:typeof a.includeCompleted!=`boolean`||a.includeCompleted}}}function J(){return W===null&&(W=Dt()),W}function Y(e){if(!(typeof window>`u`||window.localStorage===void 0))try{window.localStorage.setItem(Tt,JSON.stringify(e))}catch{}}function kt(e){return Et.add(e),()=>Et.delete(e)}function At(){return J()}function jt(){return U}function Mt(){return(0,j.useSyncExternalStore)(kt,At,jt)}function Nt(e){let t=J();W={...t,control:{...t.control,...e}},Y(W),G()}function Pt(e){let t=J();W={...t,appearance:{...t.appearance,...e}},Y(W),G()}function Ft(e){let t=J();W={...t,fleet:{...t.fleet,...e}},Y(W),G()}function It(e){let t=J();W={...t,console:{...t.console,...e}},Y(W),G()}function Lt(e){let t=J();W={...t,mailbox:{...t.mailbox,...e}},Y(W),G()}function Rt({value:e,onChange:t,onKeyDown:n,inputRef:r,placeholder:i,autoComplete:a,minLength:o,maxLength:s,className:c,id:l}){let[u,d]=(0,j.useState)(!1);return(0,z.jsxs)(`div`,{className:`hq-password-input-wrapper`,children:[(0,z.jsx)(`input`,{ref:r,id:l,type:u?`text`:`password`,className:c??`hq-token-input`,placeholder:i,autoComplete:a,minLength:o,maxLength:s,value:e,onChange:e=>t(e.target.value),onKeyDown:n}),(0,z.jsx)(`button`,{type:`button`,className:`hq-password-toggle`,onMouseDown:e=>e.preventDefault(),onClick:()=>d(e=>!e),"aria-label":u?`Hide password`:`Show password`,"aria-pressed":u,children:u?(0,z.jsx)(ne,{size:14}):(0,z.jsx)(ue,{size:14})})]})}function zt({hadToken:e,onAuthenticated:t=()=>window.location.reload()}){let[n,r]=(0,j.useState)(null),[i,a]=(0,j.useState)(null);(0,j.useEffect)(()=>{fetch(`/api/auth/status`).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()}).then(r).catch(()=>a(`Could not load HQ auth status.`))},[]);let o=n?.tokenMode??!0,s=n?.passwordMode??!1,[c,l]=(0,j.useState)(null),u=c??(e&&o?`token`:s?`password`:`token`);return i?(0,z.jsx)(`div`,{className:`hq-token-gate`,children:(0,z.jsxs)(`div`,{className:`hq-token-card`,children:[(0,z.jsx)(`div`,{className:`hq-brand`,children:`WrongStack HQ`}),(0,z.jsx)(`div`,{className:`hq-token-title`,children:`Auth status unavailable`}),(0,z.jsx)(`p`,{className:`hq-token-text`,children:i})]})}):n?(0,z.jsx)(`div`,{className:`hq-token-gate`,children:(0,z.jsxs)(`div`,{className:`hq-token-card`,children:[(0,z.jsx)(`div`,{className:`hq-brand`,children:`WrongStack HQ`}),o&&s?(0,z.jsxs)(`div`,{className:`hq-token-tabs`,children:[(0,z.jsx)(`button`,{type:`button`,className:`hq-token-tab`+(u===`token`?` active`:``),onClick:()=>l(`token`),children:`Browser token`}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-tab`+(u===`password`?` active`:``),onClick:()=>l(`password`),children:`Password`})]}):null,u===`token`||!s?(0,z.jsx)(Bt,{hadToken:e,onAuthenticated:t}):(0,z.jsx)(Vt,{})]})}):(0,z.jsx)(`div`,{className:`hq-token-gate`,children:(0,z.jsxs)(`div`,{className:`hq-token-card`,children:[(0,z.jsx)(`div`,{className:`hq-brand`,children:`WrongStack HQ`}),(0,z.jsx)(`div`,{className:`hq-token-title`,children:`Checking auth mode…`})]})})}function Bt({hadToken:e,onAuthenticated:t}){let[n,r]=(0,j.useState)(``),[i,a]=(0,j.useState)(null),[o,s]=(0,j.useState)(!1),c=(0,j.useRef)(null),l=(0,j.useRef)(!1);(0,j.useEffect)(()=>{c.current?.focus()},[]);let u=async()=>{if(o||l.current||n.trim().length===0)return;l.current=!0,s(!0),a(null);let e=await tt(n);if(e.ok){t();return}a(e.message??`The browser token was rejected.`),l.current=!1,s(!1)};return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{className:`hq-token-title`,children:`Browser token required`}),(0,z.jsx)(`p`,{className:`hq-token-text`,children:e?`The saved token was rejected — it may have been revoked or the server was reset. Paste a current browser token.`:`This HQ server runs in token mode. Open a terminal and run wstack hq token create to mint a browser token, then paste the token value here. A complete legacy ?token= URL also works.`}),i?(0,z.jsx)(`p`,{className:`hq-token-error`,children:i}):null,(0,z.jsx)(Rt,{inputRef:c,value:n,onChange:r,onKeyDown:e=>{e.key===`Enter`&&u()},placeholder:`browser token`,autoComplete:`off`}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-submit`,onClick:()=>void u(),disabled:n.trim().length===0||o,children:o?`Connecting…`:`Connect`}),(0,z.jsxs)(`p`,{className:`hq-token-hint`,children:[`Open a terminal and run `,(0,z.jsx)(`code`,{children:`wstack hq token create`}),`, then paste the`,` `,(0,z.jsx)(`code`,{children:`token:`}),` value here. The secret is shown only once — it cannot be recovered from `,(0,z.jsx)(`code`,{children:`~/.wrongstack/hq/auth.json`}),` (only its hash is stored). Run`,` `,(0,z.jsx)(`code`,{children:`wstack hq help`}),` for all token commands.`]})]})}function Vt(){let[e,t]=(0,j.useState)(``),[n,r]=(0,j.useState)(``),[i,a]=(0,j.useState)(!1),[o,s]=(0,j.useState)(null),[c,l]=(0,j.useState)(!1),u=(0,j.useRef)(null),d=(0,j.useRef)(null),f=(0,j.useRef)(!1),p=(0,j.useRef)(!1);(0,j.useEffect)(()=>{if(i){d.current?.focus();return}u.current?.focus()},[i]);let ee=async()=>{if(c||f.current)return;let t=e;if(t.length!==0){f.current=!0,l(!0),s(null);try{let e=await fetch(`/api/login`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:t})});if(!e.ok){let t=`Login failed.`;try{let n=(await e.json()).error;typeof n==`string`?t=n:typeof n?.message==`string`&&(t=n.message)}catch{}s(t),f.current=!1,l(!1);return}if((await e.json()).totpRequired){a(!0),f.current=!1,l(!1);return}L(),window.location.reload()}catch{s(`Network error.`),f.current=!1,l(!1)}}},m=async()=>{if(c||p.current)return;let e=n.trim();if(e.length!==0){p.current=!0,l(!0),s(null);try{let t=e.includes(`-`)?{recoveryCode:e}:{code:e.replace(/\D/g,``).slice(0,6)},n=await fetch(`/api/login/verify`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=`Verification failed.`;try{let t=(await n.json()).error;typeof t==`string`?e=t:typeof t?.message==`string`&&(e=t.message)}catch{}s(e),p.current=!1,l(!1);return}L(),window.location.reload()}catch{s(`Network error.`),p.current=!1,l(!1)}}};return i?(0,z.jsxs)(z.Fragment,{children:[o?(0,z.jsx)(`p`,{className:`hq-token-error`,children:o}):null,(0,z.jsx)(`label`,{className:`hq-token-label`,htmlFor:`hq-totp-code`,children:`Authenticator code`}),(0,z.jsx)(`input`,{ref:d,id:`hq-totp-code`,className:`hq-token-input`,type:`text`,autoComplete:`one-time-code`,placeholder:`000000 or recovery code`,value:n,onChange:e=>r(e.target.value.slice(0,32)),onKeyDown:e=>{e.key===`Enter`&&m()}}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-submit`,onClick:()=>void m(),disabled:n.trim().length===0||c,children:c?`Verifying…`:`Verify`}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-hint`,onClick:()=>{a(!1),r(``),s(null)},children:`← Back to password`}),(0,z.jsx)(`p`,{className:`hq-token-hint`,children:`Enter the 6-digit code from your authenticator app, or paste a recovery code.`})]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{className:`hq-token-title`,children:`Password required`}),(0,z.jsx)(`p`,{className:`hq-token-text`,children:`This HQ server is protected by a password. Enter it to open the dashboard.`}),o?(0,z.jsx)(`p`,{className:`hq-token-error`,children:o}):null,(0,z.jsx)(Rt,{inputRef:u,value:e,onChange:t,onKeyDown:e=>{e.key===`Enter`&&ee()},placeholder:`password`,autoComplete:`current-password`}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-submit`,onClick:()=>void ee(),disabled:e.length===0||c,children:c?`Logging in…`:`Log in`}),(0,z.jsxs)(`p`,{className:`hq-token-hint`,children:[`Set or change the password with `,(0,z.jsx)(`code`,{children:`wstack --hq --password <secret>`}),`.`]})]})}var Ht=`modulepreload`,Ut=function(e){return`/`+e},Wt={},X=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=Ut(t,n),t=s(t),t in Wt)return;Wt[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:Ht,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Gt=216e5,Z=[{id:`cockpit`,label:`Cockpit`,eyebrow:`Fleet overview`,description:`Health, active work, alerts, cost and command shortcuts.`,group:`Operations`,icon:t,shortcut:1},{id:`fleet`,label:`Fleet Map`,eyebrow:`Topology`,description:`Machines, projects, terminals and agents in one live graph.`,group:`Operations`,icon:i,shortcut:2},{id:`console`,label:`Live Console`,eyebrow:`Transcripts`,description:`Stream and inspect session or agent conversations.`,group:`Operations`,icon:C,shortcut:3},{id:`mailbox`,label:`Mailbox`,eyebrow:`Coordination`,description:`Cross-project messages, unread work and direct delivery.`,group:`Operations`,icon:y,shortcut:4},{id:`kanban`,label:`Kanban`,eyebrow:`Project work`,description:`Read-only project boards synchronized across clones and machines.`,group:`Operations`,icon:d},{id:`alerts`,label:`Attention`,eyebrow:`Operator inbox`,description:`Alerts, waiting agents, governance warnings and failed commands.`,group:`Intelligence`,icon:v,shortcut:5},{id:`cost`,label:`Cost`,eyebrow:`Economics`,description:`Project, provider and model spending distribution.`,group:`Intelligence`,icon:l,shortcut:6},{id:`trends`,label:`Trends`,eyebrow:`Telemetry`,description:`Cost, token and tool activity over time.`,group:`Intelligence`,icon:f,shortcut:7},{id:`brain`,label:`Brain`,eyebrow:`Decisions`,description:`Autonomous decisions, escalations and interventions.`,group:`Intelligence`,icon:o,shortcut:8},{id:`worktree`,label:`Worktrees`,eyebrow:`Workspace`,description:`Distributed branches, worktrees and ownership state.`,group:`System`,icon:b,shortcut:9},{id:`control`,label:`Control`,eyebrow:`Command plane`,description:`Steer, queue, broadcast and audit remote commands.`,group:`System`,icon:c,shortcut:0},{id:`settings`,label:`Security`,eyebrow:`Access control`,description:`Manage the HQ browser password, authentication and active credentials.`,group:`System`,icon:x}],Kt=[`Operations`,`Intelligence`,`System`],qt={cockpit:(0,j.lazy)(()=>X(()=>import(`./cockpit-_VEFDAml.js`).then(e=>({default:e.CockpitView})),__vite__mapDeps([0,1,2,3]))),fleet:(0,j.lazy)(()=>X(()=>import(`./fleet-map-DvJUXycx.js`).then(e=>({default:e.FleetMapView})),__vite__mapDeps([4,1,2,5,3,6]))),console:(0,j.lazy)(()=>X(()=>import(`./live-console-CXIqWfTP.js`).then(e=>({default:e.LiveConsoleView})),__vite__mapDeps([7,1,2,3,6,5]))),mailbox:(0,j.lazy)(()=>X(()=>import(`./mailbox-x3A7Q_14.js`).then(e=>({default:e.MailboxView})),__vite__mapDeps([8,1,2,3,9]))),kanban:(0,j.lazy)(()=>X(()=>import(`./kanban-CKsu6Ay6.js`).then(e=>({default:e.KanbanView})),__vite__mapDeps([10,1,2,3]))),cost:(0,j.lazy)(()=>X(()=>import(`./cost-DWIDsUOT.js`).then(e=>({default:e.CostView})),__vite__mapDeps([11,1,2,3]))),brain:(0,j.lazy)(()=>X(()=>import(`./brain-CMNIH1x1.js`).then(e=>({default:e.BrainView})),__vite__mapDeps([12,1,2,3,9]))),worktree:(0,j.lazy)(()=>X(()=>import(`./worktree-in2v3vuI.js`).then(e=>({default:e.WorktreeView})),__vite__mapDeps([13,1,2,3,9]))),trends:(0,j.lazy)(()=>X(()=>import(`./trends-CYFmKvyZ.js`).then(e=>({default:e.TrendsView})),__vite__mapDeps([14,1,2,3]))),alerts:(0,j.lazy)(()=>X(()=>import(`./alerts-JhEfQfJA.js`).then(e=>({default:e.AlertsView})),__vite__mapDeps([15,1,2,3]))),control:(0,j.lazy)(()=>X(()=>import(`./control-Ch2TnZ61.js`).then(e=>({default:e.ControlView})),__vite__mapDeps([16,1,2,3]))),settings:(0,j.lazy)(()=>X(()=>import(`./settings-B_GWACA6.js`).then(e=>({default:e.SettingsView})),__vite__mapDeps([17,1,2,3])))};function Jt(e){return Z.find(t=>t.id===e)??Z[0]}var Yt=class extends j.Component{state={error:null};static getDerivedStateFromError(e){return{error:e instanceof Error?e.message:String(e)}}componentDidUpdate(e){e.view!==this.props.view&&this.state.error!==null&&this.setState({error:null})}render(){return this.state.error===null?this.props.children:(0,z.jsxs)(`div`,{className:`hq-view-error`,role:`alert`,children:[(0,z.jsx)(h,{size:22}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:`This HQ surface stopped safely.`}),(0,z.jsx)(`p`,{children:this.state.error})]}),(0,z.jsxs)(`button`,{type:`button`,className:`hq-btn secondary`,onClick:()=>this.setState({error:null}),children:[(0,z.jsx)(S,{size:13}),`Retry view`]})]})}};function Xt(){let{snapshot:e,alerts:t,commandStatuses:r,activeView:i,authRequired:a,connected:o,peerRehydrate:c}=V(qe(e=>({snapshot:e.snapshot,alerts:e.alerts,commandStatuses:e.commandStatuses,activeView:e.activeView,authRequired:e.authRequired,connected:e.connected,peerRehydrate:e.peerRehydrate}))),[d,f]=(0,j.useState)(()=>typeof window>`u`||window.innerWidth>=1180),[m,ne]=(0,j.useState)(null),[h,oe]=(0,j.useState)(null),[g,se]=(0,j.useState)(!1),[_,v]=(0,j.useState)(!1),[y,b]=(0,j.useState)(``),[x,S]=(0,j.useState)(0),ue=(0,j.useRef)(null),{theme:C}=Mt().appearance,de=(0,j.useRef)(!1),w=(0,j.useRef)(!1);(0,j.useEffect)(()=>{w.current&&o===!1?mt.getState().addToast(`Connection lost — reconnecting with backoff…`,`warning`,4e3):w.current&&de.current===!1&&o===!0&&mt.getState().addToast(`Reconnected to HQ server`,`success`,3e3),o&&(w.current=!0),de.current=o},[o]),(0,j.useEffect)(()=>(document.documentElement.dataset.hqTheme=C,()=>{delete document.documentElement.dataset.hqTheme}),[C]),(0,j.useEffect)(()=>{let e=!1;return H(`/api/snapshot`).then(t=>{e||V.getState()._hydrateSnapshot(t)}).catch(()=>{}),()=>{e=!0}},[]),(0,j.useEffect)(()=>{let e=!1;return H(`/api/auth/status`).then(t=>{e||oe(t)}).catch(()=>{}),()=>{e=!0}},[]),(0,j.useEffect)(()=>{let e=!1,t=()=>{H(`/api/system/update`).then(t=>{e||ne(t)}).catch(()=>{})};t();let n=window.setInterval(t,Gt);return()=>{e=!0,window.clearInterval(n)}},[]),(0,j.useEffect)(()=>{_&&ue.current?.focus()},[_]),(0,j.useEffect)(()=>{let e=e=>{if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`k`){e.preventDefault(),v(e=>!e),b(``),S(0);return}if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`b`){e.preventDefault(),f(e=>!e);return}if(e.altKey&&/^\d$/.test(e.key)){let t=Number(e.key),n=Z.find(e=>e.shortcut===t);n&&(e.preventDefault(),V.getState().setActiveView(n.id));return}if(e.key===`Escape`&&_){e.preventDefault(),v(!1);return}e.key===`Escape`&&d&&window.innerWidth<900&&f(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[_,d]);let T=(0,j.useMemo)(()=>{let e=y.trim().toLowerCase();return e.length===0?Z:Z.filter(t=>[t.label,t.eyebrow,t.description,t.group].join(` `).toLowerCase().includes(e))},[y]);if(a)return(0,z.jsx)(zt,{hadToken:Xe()!==null});let E=e?.totals,fe=E?.unreadMailboxMessages??0,pe=t.filter(e=>e.severity!==`info`).length+(e?.projects??[]).filter(e=>e.governance?.signal.level===`warning`||e.governance?.signal.level===`unavailable`).length+(e?.liveSessions??[]).flatMap(e=>e.agents??[]).filter(e=>e.status===`waiting_user`||e.status===`error`).length+(e?.clients??[]).filter(e=>!e.connected).length+r.filter(e=>e.ackStatus===`failed`||e.ackStatus===`rejected`).length,D=Jt(i),me=D.icon,he=qt[i],O=e=>{V.getState().setActiveView(e),v(!1),b(``),S(0),window.innerWidth<900&&f(!1)},ge=async()=>{se(!0);try{await R(`/api/logout`,{method:`POST`})}finally{L(),window.location.reload()}};return(0,z.jsxs)(`div`,{className:`hq-app`,"data-theme":C,"data-testid":`hq-workbench`,children:[(0,z.jsx)(`button`,{type:`button`,className:`hq-sidebar-scrim`,"data-open":d,"aria-label":`Close HQ navigation`,onClick:()=>f(!1)}),(0,z.jsxs)(`aside`,{className:`hq-secondary-nav`,"data-open":d,"aria-label":`HQ navigation`,children:[(0,z.jsxs)(`div`,{className:`hq-secondary-header`,children:[(0,z.jsxs)(`div`,{className:`hq-secondary-brand`,children:[(0,z.jsx)(`img`,{src:`/wrongstack.svg`,alt:``,"aria-hidden":`true`,draggable:!1}),(0,z.jsxs)(`div`,{className:`hq-secondary-copy`,children:[(0,z.jsx)(`span`,{className:`hq-secondary-eyebrow`,children:`Command center`}),(0,z.jsx)(`strong`,{children:`WrongStack HQ`})]})]}),(0,z.jsx)(`button`,{type:`button`,className:`hq-icon-button hq-secondary-close`,"aria-label":`Collapse HQ navigation`,title:`Collapse navigation (Ctrl+B)`,onClick:()=>f(!1),children:(0,z.jsx)(ae,{size:16})})]}),(0,z.jsx)(`div`,{className:`hq-secondary-scroll`,children:Kt.map(e=>(0,z.jsxs)(`section`,{className:`hq-nav-group`,children:[(0,z.jsx)(`div`,{className:`hq-nav-group-label`,children:e}),Z.filter(t=>t.group===e).map(e=>{let t=e.icon,n=e.id===`mailbox`?fe:e.id===`alerts`?pe:0;return(0,z.jsxs)(`button`,{type:`button`,className:`hq-nav-item`,"data-active":i===e.id,"aria-current":i===e.id?`page`:void 0,onClick:()=>O(e.id),children:[(0,z.jsx)(t,{size:15}),(0,z.jsx)(`span`,{children:e.label}),e.shortcut===void 0?null:(0,z.jsxs)(`kbd`,{children:[`Alt+`,e.shortcut]}),n>0?(0,z.jsx)(`span`,{className:`hq-nav-badge`,children:n}):null]},e.id)})]},e))}),(0,z.jsxs)(`div`,{className:`hq-secondary-footer`,children:[(0,z.jsxs)(`div`,{className:`hq-link-state`,"data-live":o,children:[(0,z.jsx)(`span`,{className:`hq-link-dot`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:o?`Connected`:`Reconnecting`}),(0,z.jsxs)(`span`,{children:[E?.activeMachines??0,` machines · `,E?.activeClients??0,` clients`]})]})]}),(0,z.jsx)(`span`,{className:`hq-build-label`,children:`@wrongstack/webui-hq`})]})]}),(0,z.jsxs)(`section`,{className:`hq-workbench`,"data-update-available":m?.outdated===!0,children:[(0,z.jsxs)(`header`,{className:`hq-header`,children:[(0,z.jsx)(`button`,{type:`button`,className:`hq-icon-button hq-sidebar-toggle`,"aria-label":d?`Collapse HQ navigation`:`Expand HQ navigation`,"aria-expanded":d,title:`Toggle navigation (Ctrl+B)`,onClick:()=>f(e=>!e),children:d?(0,z.jsx)(ae,{size:17}):(0,z.jsx)(n,{size:17})}),(0,z.jsx)(`div`,{className:`hq-view-icon`,"aria-hidden":`true`,children:(0,z.jsx)(me,{size:18})}),(0,z.jsxs)(`div`,{className:`hq-view-identity`,children:[(0,z.jsx)(`span`,{children:D.eyebrow}),(0,z.jsx)(`h1`,{children:D.label}),(0,z.jsx)(`p`,{children:D.description})]}),(0,z.jsxs)(`div`,{className:`hq-top-metrics`,children:[(0,z.jsx)(Q,{icon:le,label:`Machines`,value:E?.activeMachines??0}),(0,z.jsx)(Q,{icon:ce,label:`Agents`,value:E?.activeAgents??0}),(0,z.jsx)(Q,{icon:ee,label:`Sessions`,value:E?.activeSessions??0}),(0,z.jsx)(Q,{icon:l,label:`Cost`,value:`$${(E?.totalCostUsd??0).toFixed(2)}`,accent:!0})]}),(0,z.jsxs)(`button`,{type:`button`,className:`hq-command-trigger`,"aria-label":`Open HQ command palette`,"aria-expanded":_,onClick:()=>{v(!0),b(``),S(0)},children:[(0,z.jsx)(u,{size:14}),(0,z.jsx)(`span`,{children:`Jump to`}),(0,z.jsx)(`kbd`,{children:`Ctrl K`})]}),(0,z.jsxs)(`div`,{className:`hq-connection-pill`,"data-live":o,children:[o?(0,z.jsx)(ie,{size:13}):(0,z.jsx)(te,{size:13}),o?`Live`:`Reconnecting`]}),(0,z.jsx)(`button`,{type:`button`,className:`hq-icon-button hq-theme-toggle`,"aria-label":`Switch to ${C===`dark`?`light`:`dark`} mode`,title:`Switch to ${C===`dark`?`light`:`dark`} mode`,onClick:()=>Pt({theme:C===`dark`?`light`:`dark`}),children:C===`dark`?(0,z.jsx)(re,{size:16}):(0,z.jsx)(s,{size:16})}),h?.tokenMode||h?.passwordMode?(0,z.jsx)(`button`,{type:`button`,className:`hq-icon-button`,"aria-label":`Log out of HQ`,title:`Log out and clear this tab's HQ credentials`,disabled:g,onClick:()=>void ge(),children:(0,z.jsx)(p,{size:16})}):null]}),m?.outdated?(0,z.jsx)(Qt,{status:m}):null,c?(0,z.jsx)(Zt,{envelope:c}):null,(0,z.jsx)(`main`,{className:`hq-main`,id:`hq-main`,tabIndex:-1,children:(0,z.jsx)(Yt,{view:i,children:(0,z.jsx)(j.Suspense,{fallback:(0,z.jsx)($t,{label:D.label}),children:(0,z.jsx)(he,{})})})})]}),_?(0,z.jsxs)(`div`,{className:`hq-command-layer`,role:`presentation`,children:[(0,z.jsx)(`button`,{type:`button`,className:`hq-command-scrim`,"aria-label":`Close HQ command palette`,onClick:()=>v(!1)}),(0,z.jsxs)(`dialog`,{open:!0,className:`hq-command-palette`,"aria-label":`HQ command palette`,children:[(0,z.jsxs)(`div`,{className:`hq-command-search`,children:[(0,z.jsx)(u,{size:17,"aria-hidden":`true`}),(0,z.jsx)(`input`,{ref:ue,type:`search`,value:y,"aria-label":`Search HQ views`,placeholder:`Search views, telemetry and controls…`,onChange:e=>{b(e.target.value),S(0)},onKeyDown:e=>{e.key===`ArrowDown`?(e.preventDefault(),S(e=>T.length===0?0:(e+1)%T.length)):e.key===`ArrowUp`?(e.preventDefault(),S(e=>T.length===0?0:(e-1+T.length)%T.length)):e.key===`Enter`&&T[x]&&(e.preventDefault(),O(T[x].id))}}),(0,z.jsx)(`kbd`,{children:`Esc`})]}),(0,z.jsx)(`div`,{className:`hq-command-results`,role:`listbox`,"aria-label":`HQ destinations`,children:T.length===0?(0,z.jsxs)(`div`,{className:`hq-command-empty`,children:[`No HQ surface matches “`,y,`”.`]}):T.map((e,t)=>{let n=e.icon;return(0,z.jsxs)(`button`,{type:`button`,className:`hq-command-result`,role:`option`,"aria-selected":x===t,"data-current":i===e.id,onMouseEnter:()=>S(t),onClick:()=>O(e.id),children:[(0,z.jsx)(`span`,{className:`hq-command-result-icon`,children:(0,z.jsx)(n,{size:16})}),(0,z.jsxs)(`span`,{className:`hq-command-result-copy`,children:[(0,z.jsx)(`strong`,{children:e.label}),(0,z.jsx)(`small`,{children:e.description})]}),(0,z.jsx)(`span`,{className:`hq-command-result-group`,children:e.group}),e.shortcut===void 0?null:(0,z.jsxs)(`kbd`,{children:[`Alt `,e.shortcut]})]},e.id)})}),(0,z.jsxs)(`footer`,{className:`hq-command-footer`,children:[(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`kbd`,{children:`↑↓`}),` select`]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`kbd`,{children:`Enter`}),` open`]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`kbd`,{children:`Esc`}),` close`]}),(0,z.jsxs)(`span`,{children:[T.length,` destinations`]})]})]})]}):null,(0,z.jsx)(gt,{})]})}function Zt({envelope:e}){let t=e.kind===`peer.rehydrate`?`Leader session lost — survivor clients can rehydrate`:`Leader session lost — no survivor clients reported`,n=e.kind===`peer.rehydrate`&&e.payload.rehydrateHint?e.payload.rehydrateHint:`${e.payload.previousLeaderHandle} on ${e.payload.machineId} ended (${e.payload.reason}).`;return(0,z.jsxs)(`aside`,{className:`hq-peer-rehydrate-notice`,role:`status`,"aria-live":`polite`,children:[(0,z.jsx)(g,{size:16,"aria-hidden":`true`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:t}),(0,z.jsx)(`span`,{children:n})]}),(0,z.jsx)(`button`,{type:`button`,onClick:()=>V.getState()._dismissPeerRehydrate(),title:`Dismiss peer lifecycle notice`,children:`Dismiss`})]})}function Qt({status:e}){let[t,n]=(0,j.useState)(!1),i=async()=>{try{await navigator.clipboard.writeText(e.command),n(!0),window.setTimeout(()=>n(!1),1500)}catch{n(!1)}};return(0,z.jsxs)(`aside`,{className:`hq-update-notice`,role:`status`,"aria-live":`polite`,children:[(0,z.jsx)(g,{size:16,"aria-hidden":`true`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:`WrongStack update available`}),(0,z.jsxs)(`span`,{children:[`v`,e.current,` → v`,e.latest,`. Run `,(0,z.jsx)(`code`,{children:e.command}),` in your terminal, then restart HQ.`]})]}),(0,z.jsxs)(`button`,{type:`button`,onClick:()=>void i(),title:`Copy update command`,children:[(0,z.jsx)(r,{size:13,"aria-hidden":`true`}),t?`Copied`:`Copy command`]})]})}function Q({icon:e,label:t,value:n,accent:r=!1}){return(0,z.jsxs)(`div`,{className:`hq-top-metric`,"data-accent":r,children:[(0,z.jsx)(e,{size:12}),(0,z.jsx)(`span`,{children:t}),(0,z.jsx)(`strong`,{children:n})]})}function $t({label:e}){return(0,z.jsxs)(`div`,{className:`hq-view-loading`,role:`status`,children:[(0,z.jsx)(c,{size:18}),(0,z.jsxs)(`span`,{children:[`Loading `,e,`…`]})]})}var en=25e3,tn=1e4,nn=3e4,rn=32;function an(e){let t=e.toLowerCase().replace(/^\[(.*)\]$/,`$1`);if(t===`localhost`)return!0;let n=t.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);if(n){if(n[1]!==`127`)return!1;for(let e of n.slice(1))if(Number(e)>255)return!1;return!0}return t===`::1`||t===`0:0:0:0:0:0:0:1`||t.startsWith(`::ffff:127.`)}function on(e){if(!Number.isFinite(e))return 0;let t=Math.max(0,Math.trunc(e));return Number.isSafeInteger(t)?t:0}var sn=class{ws=null;handlers=new Set;stateHandlers=new Set;reconnectAttempt=0;connectionState=E();reconnectTimer=null;heartbeatTimer=null;lastMessageAt=0;stopped=!1;_state=`disconnected`;_url;resumeCursor;maxRetries;heartbeatIntervalMs;heartbeatTimeoutMs;maxBackoffMs;constructor(e){if(this.maxRetries=e?.maxRetries??1/0,this.heartbeatIntervalMs=e?.heartbeatIntervalMs??en,this.heartbeatTimeoutMs=e?.heartbeatTimeoutMs??tn,this.maxBackoffMs=e?.maxBackoffMs??nn,this.resumeCursor=e?.resumeCursor??(()=>({})),e?.url)this._url=e.url;else{let e=typeof window<`u`?window.location:{host:`127.0.0.1:3499`,protocol:`http:`,hostname:`127.0.0.1`},t=e.protocol===`https:`?`wss:`:`ws:`,n=Xe(),r=an(e.hostname),i=`${t}//${e.host}/ws/browser`;this._url=n!==null&&r?`${i}?token=${encodeURIComponent(n)}`:i}}get url(){return this._url}get state(){return this._state}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}connect(){if(this.stopped||this.ws!==null)return;this.connectionState=fe(this.connectionState),this.emitState(`connecting`);let e;try{e=new WebSocket(this._url)}catch{this.scheduleReconnect();return}this.ws=e,e.onopen=()=>{this.ws===e&&(this.reconnectAttempt=0,this.connectionState=pe(this.connectionState),this.lastMessageAt=Date.now(),this.connectionState=D(this.connectionState,this.lastMessageAt),this.emitState(`connected`),this.sendResume(),this.startHeartbeat())},e.onmessage=t=>{if(this.ws===e){this.lastMessageAt=Date.now(),this.connectionState=D(this.connectionState,this.lastMessageAt);try{let e=JSON.parse(typeof t.data==`string`?t.data:``);for(let t of this.handlers)try{t(e)}catch{}}catch{}}},e.onclose=()=>this.handleClose(e,`close`),e.onerror=()=>this.handleClose(e,`error`)}close(){this.stopped=!0,this.connectionState=me(this.connectionState),this.stopHeartbeat(),this.reconnectTimer!==null&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws?.close(1e3,`client closed`),this.ws=null,this.emitState(`disconnected`)}setResumeCursorProvider(e){this.resumeCursor=e}on(e){return this.handlers.add(e),()=>this.handlers.delete(e)}onStateChange(e){return this.stateHandlers.add(e),e(this._state),()=>this.stateHandlers.delete(e)}handleClose(e,t){this.ws===e&&(this.ws=null,this.stopHeartbeat(),this.scheduleReconnect())}scheduleReconnect(){if(this.stopped||this.reconnectTimer!==null)return;let e=he(this.connectionState,{...T,maxReconnectAttempts:this.maxRetries,maxBackoffMs:this.maxBackoffMs,heartbeatIntervalMs:this.heartbeatIntervalMs,heartbeatTimeoutMs:this.heartbeatTimeoutMs,jitterRatio:.5});if(this.connectionState=e.state,this.reconnectAttempt=e.state.reconnectAttempt,!e.plan){this.emitState(`disconnected`);return}this.emitState(`reconnecting`),this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},e.plan.delayMs)}sendResume(){if(this.ws?.readyState===WebSocket.OPEN)try{for(let e of this.resumeFrames())this.ws.send(JSON.stringify(e))}catch{}}resumeFrames(){try{let e=this.resumeCursor(),t=typeof e.entries==`function`?e.entries():Object.entries(e),n=[];for(let[e,r]of t){if(typeof e!=`string`||e.length===0)continue;let t=on(r);n.push({clientId:e,lastSeqSeen:t})}n.sort((e,t)=>t.lastSeqSeen===e.lastSeqSeen?e.clientId.localeCompare(t.clientId):t.lastSeqSeen-e.lastSeqSeen);let r=n.find(({clientId:e})=>e===B),i=r===void 0?rn:31,a=n.filter(({clientId:e})=>e!==B).slice(0,i);return r!==void 0&&a.unshift(r),a.map(({clientId:e,lastSeqSeen:t})=>({type:`client.resume`,clientId:e,lastSeqSeen:t}))}catch{return[]}}get isHeartbeatTimedOut(){return this.ws===null||O(this.connectionState,{...T,heartbeatIntervalMs:this.heartbeatIntervalMs,heartbeatTimeoutMs:this.heartbeatTimeoutMs})}startHeartbeat(){this.stopHeartbeat(),this.lastMessageAt=Date.now(),this.heartbeatTimer=setInterval(()=>{this.isHeartbeatTimedOut&&this.ws!==null&&(this.ws.close(4e3,`heartbeat timeout`),this.ws=null,this.scheduleReconnect())},this.heartbeatIntervalMs)}stopHeartbeat(){this.heartbeatTimer!==null&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null)}emitState(e){this._state=e;for(let t of this.stateHandlers)try{t(e)}catch{}}},$=null;function cn(e){if($===null)return $=new sn(e),$.connect(),$;if(e?.resumeCursor!==void 0&&$.setResumeCursorProvider(e.resumeCursor),e===void 0)return $;let t=[];return e.url!==void 0&&e.url!==$.url&&t.push(`url: ${e.url} vs ${$.url}`),e.heartbeatIntervalMs!==void 0&&e.heartbeatIntervalMs!==$.heartbeatIntervalMs&&t.push(`heartbeatIntervalMs: ${e.heartbeatIntervalMs} vs ${$.heartbeatIntervalMs}`),e.heartbeatTimeoutMs!==void 0&&e.heartbeatTimeoutMs!==$.heartbeatTimeoutMs&&t.push(`heartbeatTimeoutMs: ${e.heartbeatTimeoutMs} vs ${$.heartbeatTimeoutMs}`),e.maxBackoffMs!==void 0&&e.maxBackoffMs!==$.maxBackoffMs&&t.push(`maxBackoffMs: ${e.maxBackoffMs} vs ${$.maxBackoffMs}`),e.maxRetries!==void 0&&e.maxRetries!==$.maxRetries&&t.push(`maxRetries: ${e.maxRetries} vs ${$.maxRetries}`),t.length>0&&typeof console<`u`&&console.warn(`[hq-ws-client] getHqClient() called with options that conflict with the live singleton; ignoring: ${t.join(`, `)}. Call closeHqClient() first if you need to reconfigure.`),$}var ln=document.getElementById(`root`);ln!==null&&it().finally(()=>{Ze(),at();let e=cn({resumeCursor:()=>V.getState().resumeCursors});e.onStateChange(e=>{V.getState()._setConnected(e===`connected`)});let t=null,n=()=>{t===null&&(V.getState()._setNeedsSnapshotRefresh(!1),t=H(`/api/snapshot`).then(e=>{V.getState()._onSnapshot(e)}).catch(()=>void 0).finally(()=>{t=null}))};V.subscribe((e,t)=>{e.needsSnapshotRefresh&&!t.needsSnapshotRefresh&&n()}),e.on(e=>{if(e.type===`hq.snapshot`){let t=Le(e);t&&V.getState()._onSnapshot(t.snapshot)}else if(e.type===`hq.event`){let t=Re(e);t&&V.getState()._onEvent(t.event)}else if(e.type===`hq.alert`){let t=ze(e);t&&V.getState()._onAlert(t.alert)}else if(e.type===`hq.command_status`){let t=Be(e);t&&V.getState()._onCommandStatus(t.command)}else if(e.type===`hq.resume_gap`)for(let t of e.envelopes){let e=Re({type:`hq.event`,event:t});e&&V.getState()._onEvent(e.event)}else e.type===`hq.resume_reject`&&(V.getState()._resetResumeCursors(),V.getState()._setNeedsSnapshotRefresh(!0))}),(0,Ve.createRoot)(ln).render((0,z.jsx)(j.StrictMode,{children:(0,z.jsx)(Xt,{})}))});export{Lt as a,wt as c,R as d,L as f,Ft as i,Ct as l,It as n,Mt as o,qe as p,Nt as r,H as s,Rt as t,V as u};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/cockpit-C-PXTlIf.js","assets/rolldown-runtime-hePW80VL.js","assets/icons-Cxo3pc0p.js","assets/markdown-jMopG_H4.js","assets/fleet-map-DG8O3br5.js","assets/vendor-ClUhoD-_.js","assets/fleet-topology-BupZawpq.js","assets/live-console-D4fbGyJM.js","assets/mailbox-eWAmNL4x.js","assets/use-backfilled-events-CnQ_BlHx.js","assets/kanban-FnVQHZcq.js","assets/cost-BHY6zEoU.js","assets/brain-CasQFLGW.js","assets/worktree-B4kJFv93.js","assets/trends-DenFCLQy.js","assets/alerts-C9eBX9-8.js","assets/control-BnJmaNmt.js","assets/settings-B62Hxx2p.js"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$ as t,A as n,Ct as r,F as i,Ft as a,Gt as o,I as s,O as c,Pt as l,S as u,Tt as d,Ut as f,W as p,Xt as ee,Zt as m,a as te,bt as ne,d as re,h,i as ie,j as ae,kt as oe,l as g,n as se,nt as _,o as ce,qt as v,rt as y,ut as b,v as x,w as S,y as le,yt as ue,z as C}from"./icons-Cxo3pc0p.js";import{t as de}from"./vendor-ClUhoD-_.js";import{i as w}from"./markdown-jMopG_H4.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var T={maxReconnectAttempts:10,initialBackoffMs:1e3,maxBackoffMs:3e4,backoffMultiplier:2,jitterRatio:0,queueLimit:1e3,heartbeatIntervalMs:0,heartbeatTimeoutMs:0};function E(){return{phase:`idle`,reconnectAttempt:0,lastActivityAt:null,stopped:!1}}function fe(e){return e.stopped?e:{...e,phase:`connecting`}}function pe(e,t=Date.now()){return{...e,phase:`open`,reconnectAttempt:0,lastActivityAt:t,stopped:!1}}function D(e,t=Date.now()){return{...e,lastActivityAt:t}}function me(e){return{...e,phase:`closed`,stopped:!0}}function he(e,t,n=Date.now(),r=Math.random){if(e.stopped||e.reconnectAttempt>=t.maxReconnectAttempts)return{state:{...e,phase:`closed`},plan:null};let i=e.reconnectAttempt+1,a=Math.min(t.initialBackoffMs*t.backoffMultiplier**(i-1),t.maxBackoffMs),o=(r()*2-1)*t.jitterRatio,s=Math.max(0,Math.round(a*(1+o)));return{state:{...e,phase:`reconnecting`,reconnectAttempt:i},plan:{attempt:i,delayMs:s,retryAt:n+s}}}function O(e,t,n=Date.now()){return e.phase!==`open`||e.lastActivityAt===null||t.heartbeatIntervalMs<=0?!1:n-e.lastActivityAt>t.heartbeatIntervalMs+t.heartbeatTimeoutMs}var ge=`abort,ping,user_message,tool.confirm_result,topic.advice,completion.request,model.switch,model.refine,model.fallback_choice,autonomy.switch,context.clear,context.compact,context.debug,context.editor.open,context.editor.validate,context.editor.apply,context.mode.create,context.mode.delete,context.mode.switch,context.mode.update,context.modes.list,context.repair,mode.switch,modes.list,session.checkpoints,session.delete,session.inspect,session.new,session.rename,session.resume,session.rewind,session.save,sessions.list,side_effects.list,stats.get,todo.update,todos.clear,todos.get,todos.remove`.split(`,`),_e=[`collab.join`,`collab.leave`,`collab.annotate`,`collab.resolve`,`collab.request_pause`,`collab.resume`,`collab.grant_control`,`collab.inject_tool`,`mailbox.action`,`mailbox.agents`,`mailbox.clear`,`mailbox.compact`,`mailbox.messages`,`mailbox.purge`,`mailbox.send`],ve=`brain.ask,brain.config.get,brain.config.set,brain.risk,brain.status,chronicle.facet,chronicle.facets,chronicle.graph,chronicle.metrics,chronicle.query,chronicle.status,config.doctor,design.list,design.materialize,design.set,design.state,design.swap,design.tune,design.use,design.verify,memory.list,memory.sage.backfillRecoverable,memory.sage.candidateResolve,memory.sage.delete,memory.sage.forFile,memory.sage.get,memory.sage.graph,memory.sage.list,memory.sage.listCandidates,memory.sage.listPage,memory.sage.recover,memory.sage.remember,memory.sage.searchBreakdown,memory.sage.update`.split(`,`),ye=`auth.oauth.cancel,auth.oauth.code,auth.oauth.start,mcp.add,mcp.disable,mcp.discover,mcp.enable,mcp.list,mcp.prompt.get,mcp.prompts,mcp.remove,mcp.resource.read,mcp.resources,mcp.restart,mcp.sleep,mcp.update,mcp.wake,prompts.content,prompts.create,prompts.favorite,prompts.journal,prompts.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.create,skills.edit,skills.export,skills.install,skills.list,skills.uninstall,skills.update`.split(`,`),be=`goal-state.get,goal.addTask,goal.assess,goal.assignTask,goal.clear,goal.get,goal.list,goal.load,goal.moveTask,goal.pause,goal.resume,goal.retryTask,goal.revert,goal.runTask,goal.save,goal.selectPhase,goal.start,goal.state,goal.status,goal.stop,goal.taskStatus,goal.toggleAutonomous,plan.get,plan.item.update,plan.template_use,task.update,tasks.get`.split(`,`),xe=`sdd.board.cancel_task,sdd.board.cleanup_worktrees,sdd.board.delete_task,sdd.board.destroy,sdd.board.get,sdd.board.list,sdd.board.pause,sdd.board.reassign,sdd.board.resume,sdd.board.retry,sdd.board.retry_all_failed,sdd.board.rollback,sdd.board.set_task_fallbacks,sdd.board.set_task_model,sdd.board.set_task_verification,sdd.board.split_task,sdd.board.stop,sdd.run.from_graph,sdd.run.from_spec,sdd.run.start,sdd.spec.approve,sdd.spec.discard,sdd.spec.get,sdd.spec.message,sdd.spec.rewind,sdd.spec.start,specs.get,specs.list,specs.taskStatus`.split(`,`),Se=`files.create,files.delete,files.list,files.move,files.read,files.rename,files.skeleton,files.tree,files.write,git.changes,git.diff,git.info,projects.add,projects.list,projects.select,working_dir.set,worktree.cleanup,worktree.diff,worktree.merge,worktree.remove,worktree.scan,shell.open,process.kill,process.killAll,process.list,terminal.close,terminal.create,terminal.input,terminal.resize`.split(`,`),Ce=`codebase.index.server.shutdown,connections.health,connections.service_action,diag.get,key.add,key.delete,key.set_active,key.update,prefs.get,prefs.update,provider.add,provider.clear_models,provider.custom_models.remove,provider.custom_models.set,provider.models,provider.models.search,provider.probe,provider.remove,provider.status.clear,provider.status.get,provider.status.retry,provider.undo_clear,provider.update,providers.list,providers.saved,tool.disable,tool.enable,tools.list,webui.shutdown`.split(`,`),we=`error,log,pong,side_effects,agent.status_changed,agent.timeline.message,client.status_update,chimera.report_available,compaction.failed,completion.result,context.compacted,context.debug,context.editor.snapshot,context.editor.validation,context.editor.applied,context.mode.changed,context.modes.list,context.repaired,ctx.max_context,ctx.pct,delegate.completed,delegate.started,iteration.completed,iteration.limit_reached,iteration.started,model.refine_result,modes.list,provider.active_blocked,provider.error,provider.fallback,provider.fallback_pending,provider.response,provider.retry,provider.status_changed,provider.stream_error,provider.text_delta,provider.thinking_delta,run.result,session.checkpoints,session.damaged,session.end,session.inspect,session.rewound,session.start,session.stats,sessions.list,sessions.status_update,stats.get,token.cost_estimate_unavailable,token.threshold,tool.confirm_needed,tool.disabled,tool.enabled,tool.executed,tool.loop_detected,tool.progress,tool.started,topic.advice_result,tools.list,trust.persisted`.split(`,`),Te=[`collab.annotation.added`,`collab.annotation.resolved`,`collab.event`,`collab.injection.granted`,`collab.participant.joined`,`collab.participant.left`,`collab.pause.granted`,`collab.pause.released`,`collab.state`,`mailbox.action_result`,`mailbox.agent_registered`,`mailbox.agent_deregistered`,`mailbox.agents`,`mailbox.cleared`,`mailbox.compacted`,`mailbox.event`,`mailbox.messages`,`mailbox.sent`,`mailbox.purged`,`mailbox.received`,`subagent.budget_extended`,`subagent.event`],Ee=`brain.answer,brain.config,brain.event,brain.status,chronicle.error,chronicle.facet_result,chronicle.facets_result,chronicle.graph_result,chronicle.metrics_result,chronicle.query_result,chronicle.status_result,config.doctor.result,design.list,design.materialize,design.set,design.state,design.swap,design.tune,design.use,design.verify,memory.event,memory.list,memory.sage.backfillRecoverable,memory.sage.candidateResolve,memory.sage.delete,memory.sage.forFile,memory.sage.get,memory.sage.graph,memory.sage.list,memory.sage.listCandidates,memory.sage.listPage,memory.sage.recover,memory.sage.remember,memory.sage.searchBreakdown,memory.sage.update`.split(`,`),De=`mcp.content.error,mcp.content.selected,mcp.list,mcp.operation_result,mcp.prompts,mcp.resources,mcp.server.added,mcp.server.connected,mcp.server.disconnected,mcp.server.discovered,mcp.server.error,mcp.server.reconnected,mcp.server.removed,mcp.server.sleeping,mcp.server.updated,mcp.server.waking,prompts.content,prompts.created,prompts.favorite,prompts.journal,prompts.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.created,skills.edited,skills.exported,skills.installed,skills.list,skills.uninstalled,skills.updated`.split(`,`),Oe=`budget.decision,budget.threshold_reached,coordinator.stats,coordinator.status,eternal.iteration,fleet.concurrency_update,goal-state.updated,goal.assess.result,goal.list,goal.paused,goal.resumed,goal.saved,goal.error,goal.stopped,goal.failed,goal.completed,goal.cleared,goal.reverted,goal.progress,goal.state,in_flight.ended,in_flight.started,plan.updated,task.completed,task.failed,task.pending,task.started,tasks.updated,todos.cleared,todos.updated`.split(`,`),ke=[`kanban.task.activity`,`sdd.board.lifecycle_result`,`sdd.board.list`,`sdd.board.snapshot`,`sdd.run.started`,`sdd.spec.agent_text`,`sdd.spec.error`,`sdd.spec.snapshot`,`specs.detail`,`specs.list`],Ae=[`consensus.vote_cast`,`consensus.vote_initiated`,`consensus.vote_resolved`,`cron.job_fired`,`cron.snapshot`,`techstack.job.cancelled`,`techstack.job.failed`,`techstack.job.progress`,`techstack.job.started`,`techstack.report.delivered`,`techstack.report.ready`,`techstack.snapshot.updated`,`techstack.workspace.completed`],je=`checkpoint.written,codemap.file_event,codemap.index_updated,codemap.tool_executed,codemap.tool_started,file.saved,files.created,files.deleted,files.list,files.moved,files.read,files.renamed,files.skeleton_result,files.tree,files.tree.changed,files.written,git.changes,git.diff,git.info,process.list,projects.added,projects.list,projects.selected,terminal.exit,terminal.output,working_dir.changed,worktree.cleanup_result,worktree.diff_result,worktree.event,worktree.merge_result,worktree.orphans,worktree.state`.split(`,`),Me=[`auth.oauth.status`,`codebase.index.server.shutdown_result`,`connections.auto_heal_status`,`connections.health_error`,`connections.health_result`,`connections.service_action_result`,`diag.get`,`key.operation_result`,`model.switch_result`,`prefs.updated`,`provider.catalog`,`provider.models`,`provider.models.search_result`,`provider.probe`,`provider.status.snapshot`,`providers.saved`],Ne=[...ge,..._e,...Se,...Ce,...be,...xe,...ve,...ye],Pe=[...we,...Te,...je,...Me,...Oe,...ke,...Ae,...Ee,...De];new Set(Ne),new Set(Pe);function k(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function A(e,t=0){return typeof e==`number`&&Number.isFinite(e)?e:t}function Fe(e){return e===void 0||Array.isArray(e)}function Ie(e){return A(e.activeProjects)===e.activeProjects&&A(e.activeClients)===e.activeClients&&A(e.activeSessions)===e.activeSessions&&A(e.activeSubagents)===e.activeSubagents&&A(e.unreadMailboxMessages)===e.unreadMailboxMessages&&A(e.incompleteMailboxMessages)===e.incompleteMailboxMessages&&A(e.totalCostUsd)===e.totalCostUsd}function Le(e){if(e.type!==`hq.snapshot`)return null;let t=k(e.snapshot),n=t?k(t.totals):null;return!t||typeof t.generatedAt!=`string`||!Array.isArray(t.clients)||!Array.isArray(t.projects)||!Array.isArray(t.sessions)||!Array.isArray(t.fleets)||!Array.isArray(t.mailboxes)||!n||!Ie(n)||!Fe(t.machines)||!Fe(t.liveSessions)||!Fe(t.mcpServers)?null:{kind:`hq-snapshot`,snapshot:t}}function Re(e){if(e.type!==`hq.event`)return null;let t=k(e.event);return!t||typeof t.id!=`string`||typeof t.type!=`string`||typeof t.timestamp!=`string`||typeof t.clientId!=`string`||typeof t.projectId!=`string`||typeof t.seq!=`number`?null:{kind:`hq-event`,event:t}}function ze(e){return e.type!==`hq.alert`||typeof e.severity!=`string`||![`info`,`warn`,`error`].includes(e.severity)||typeof e.message!=`string`||typeof e.timestamp!=`string`?null:{kind:`hq-alert`,alert:e}}function Be(e){if(e.type!==`hq.command_status`)return null;let t=k(e.command);return!t||typeof t.commandId!=`string`||typeof t.type!=`string`||typeof t.clientId!=`string`||typeof t.enqueuedBy!=`string`||typeof t.enqueuedAt!=`string`||typeof t.status!=`string`||![`queued`,`delivered`,`acked`].includes(t.status)?null:{kind:`hq-command-status`,command:t}}var j=e(m(),1),Ve=de(),He=e=>Symbol.iterator in e,Ue=e=>`entries`in e,We=(e,t)=>{let n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(let[e,t]of n)if(!r.has(e)||!Object.is(t,r.get(e)))return!1;return!0},Ge=(e,t)=>{let n=e[Symbol.iterator](),r=t[Symbol.iterator](),i=n.next(),a=r.next();for(;!i.done&&!a.done;){if(!Object.is(i.value,a.value))return!1;i=n.next(),a=r.next()}return!!i.done&&!!a.done};function Ke(e,t){return Object.is(e,t)?!0:typeof e!=`object`||!e||typeof t!=`object`||!t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:He(e)&&He(t)?Ue(e)&&Ue(t)?We(e,t):Ge(e,t):We({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function qe(e){let t=j.useRef(void 0);return n=>{let r=e(n);return Ke(t.current,r)?t.current:t.current=r}}var M=`wrongstack.hq.token.v1`;function Je(){if(typeof window>`u`)return null;try{let e=new URLSearchParams(window.location.search).get(`token`);return e!==null&&e.length>0?e:null}catch{return null}}function N(){if(typeof window>`u`)return null;try{return window.localStorage??null}catch{return null}}function P(){if(typeof window>`u`)return null;try{return window.sessionStorage??null}catch{return null}}function F(){try{let e=N()?.getItem(M)??null;if(e!==null&&e.length>0)return e}catch{}return Ye()}function Ye(){try{let e=P()?.getItem(M)??null;if(e===null||e.length===0)return null;let t=!1;try{let n=N();n!==null&&(n.setItem(M,e),t=n.getItem(M)===e)}catch{}if(t)try{P()?.removeItem(M)}catch{}return e}catch{return null}}function I(e){try{N()?.setItem(M,e)}catch{}}function L(){try{N()?.removeItem(M)}catch{}try{P()?.removeItem(M)}catch{}}function Xe(){let e=Je();return e===null?F():(I(e),e)}function Ze(){if(typeof window>`u`)return;let e=Je();if(e!==null&&(I(e),F()===e))try{let e=new URL(window.location.href);e.searchParams.delete(`token`),window.history.replaceState(null,``,`${e.pathname}${e.search}${e.hash}`)}catch{}}function Qe(){let e=Xe();return e===null?{}:{Authorization:`Bearer ${e}`}}function R(e,t){let n={...t?.headers??{},...Qe()};return fetch(e,{...t,headers:n})}function $e(e){let t=e.trim();if(!/[?&]token=/.test(t))return t;try{let e=typeof window>`u`?`http://127.0.0.1/`:window.location.href;return new URL(t,e).searchParams.get(`token`)?.trim()||t}catch{return t}}async function et(e){return fetch(`/api/auth/upgrade`,{method:`POST`,headers:{Authorization:`Bearer ${e}`},credentials:`same-origin`,signal:AbortSignal.timeout(1e4)})}async function tt(e){let t=$e(e);if(t.length===0)return{ok:!1,message:`Enter a browser token.`};try{let e=await et(t),n={};try{n=await e.json()}catch{}if(e.ok&&n.loggedIn===!0)return I(t),{ok:!0};let r=n.error;return{ok:!1,message:typeof r==`string`?r:typeof r?.message==`string`?r.message:e.status===401?`The browser token was rejected. It may be invalid, expired, or revoked.`:`HQ could not start a browser session with this token.`}}catch{return{ok:!1,message:`Could not reach the HQ server. Try again.`}}}function nt(){if(typeof window>`u`)return null;try{let e=window.location.hash;if(!e.startsWith(`#bootstrap=`))return null;let t=e.slice(11);return t.length>0?t:null}catch{return null}}function rt(){if(!(typeof window>`u`))try{let e=new URL(window.location.href);e.hash.startsWith(`#bootstrap=`)&&(e.hash=``,window.history.replaceState(null,``,`${e.pathname}${e.search}`))}catch{}}async function it(){let e=nt();if(e===null)return!1;try{return(await fetch(`/api/auth/bootstrap`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({code:e}),credentials:`same-origin`,signal:AbortSignal.timeout(1e4)})).ok?(rt(),L(),!0):!1}catch{return!1}}async function at(){let e=F();if(e===null)return!1;try{let t=await et(e);return!(!t.ok||(await t.json()).loggedIn!==!0)}catch{return!1}}var ot=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},st=(e=>e?ot(e):ot),ct=e=>e;function lt(e,t=ct){let n=j.useSyncExternalStore(e.subscribe,j.useCallback(()=>t(e.getState()),[e,t]),j.useCallback(()=>t(e.getInitialState()),[e,t]));return j.useDebugValue(n),n}var ut=e=>{let t=st(e),n=e=>lt(t,e);return Object.assign(n,t),n},dt=(e=>e?ut(e):ut),ft=6e3,pt=0,mt=dt()(e=>({toasts:[],addToast:(t,n=`info`,r=ft,i)=>{let a=`toast-${++pt}-${Date.now()}`,o={id:a,message:t,severity:n,createdAt:Date.now(),ttlMs:r,action:i};e(e=>({toasts:[...e.toasts.slice(-4),o]})),r>0&&setTimeout(()=>{e(e=>({toasts:e.toasts.filter(e=>e.id!==a)}))},r)},removeToast:t=>e(e=>({toasts:e.toasts.filter(e=>e.id!==t)})),clearToasts:()=>e({toasts:[]})})),z=w(),ht={error:(0,z.jsx)(oe,{size:16,"aria-hidden":`true`}),warning:(0,z.jsx)(g,{size:16,"aria-hidden":`true`}),info:(0,z.jsx)(_,{size:16,"aria-hidden":`true`}),success:(0,z.jsx)(a,{size:16,"aria-hidden":`true`})};function gt(){let{toasts:e,removeToast:t}=mt(qe(e=>({toasts:e.toasts,removeToast:e.removeToast})));return e.length===0?null:(0,z.jsx)(`div`,{className:`hq-toast-container`,role:`status`,"aria-live":`polite`,"aria-label":`Notifications`,children:e.map(e=>(0,z.jsxs)(`div`,{className:`hq-toast hq-toast--${e.severity}`,"data-severity":e.severity,children:[(0,z.jsx)(`span`,{className:`hq-toast-icon`,children:ht[e.severity]}),(0,z.jsx)(`span`,{className:`hq-toast-message`,children:e.message}),e.action?(0,z.jsx)(`span`,{className:`hq-toast-action`,children:e.action}):null,(0,z.jsx)(`button`,{type:`button`,className:`hq-toast-close`,"aria-label":`Dismiss notification`,onClick:()=>t(e.id),children:(0,z.jsx)(se,{size:12})})]},e.id))})}var _t=new Set([`graceful`,`crash`,`heartbeat-timeout`,`auth-revoked`]),B=`__hq_peer__`;function vt(e){return e===void 0||typeof e==`string`}function yt(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;return!(typeof t.projectId!=`string`||t.projectId.length===0||typeof t.machineId!=`string`||t.machineId.length===0||typeof t.leaderClientId!=`string`||t.leaderClientId.length===0||typeof t.previousLeaderHandle!=`string`||t.previousLeaderHandle.length===0||typeof t.reason!=`string`||!_t.has(t.reason)||typeof t.detectedAt!=`string`||!Number.isFinite(Date.parse(t.detectedAt))||!vt(t.rehydrateHint)||t.rehydrateHint!==void 0&&t.rehydrateHint.length>280||!vt(t.rehydrateCommandId))}function bt(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;return!(typeof t.projectId!=`string`||t.projectId.length===0||typeof t.machineId!=`string`||t.machineId.length===0||typeof t.leaderClientId!=`string`||t.leaderClientId.length===0||typeof t.previousLeaderHandle!=`string`||t.previousLeaderHandle.length===0||typeof t.reason!=`string`||!_t.has(t.reason)||typeof t.detectedAt!=`string`||!Number.isFinite(Date.parse(t.detectedAt)))}function xt(e,t){let n=t.liveSessions??[],r=e.selectedSessionId===null?void 0:n.find(t=>t.sessionId===e.selectedSessionId),i=e.selectedAgentId===null||r?.agents.some(t=>t.id===e.selectedAgentId)===!0,a=e.selectedClientId===null||t.clients.some(t=>t.clientId===e.selectedClientId);return{snapshot:t,...e.selectedSessionId!==null&&r===void 0?{selectedSessionId:null,selectedAgentId:null}:i?{}:{selectedAgentId:null},...a?{}:{selectedClientId:null}}}function St(e,t){return e.timestamp===t.timestamp&&e.severity===t.severity&&e.message===t.message}var V=dt()(e=>({snapshot:null,events:[],alerts:[],commandStatuses:[],activeView:`cockpit`,selectedSessionId:null,selectedAgentId:null,selectedClientId:null,connected:!1,authRequired:!1,resumeCursors:{},needsSnapshotRefresh:!1,peerRehydrate:null,setActiveView:t=>e({activeView:t}),selectSession:(t,n=null)=>e({selectedSessionId:t,selectedAgentId:n}),selectAgent:(t,n)=>e({selectedSessionId:t,selectedAgentId:n}),selectClient:t=>e({selectedClientId:t}),markAuthRequired:()=>e(e=>e.authRequired?{}:{authRequired:!0}),_hydrateSnapshot:t=>e(e=>e.snapshot===null?xt(e,t):{}),_onSnapshot:t=>e(e=>{let n=e.snapshot;return n!==null&&typeof n.generatedAt==`string`&&typeof t.generatedAt==`string`&&Date.parse(t.generatedAt)<Date.parse(n.generatedAt)?{}:{...xt(e,t),connected:!0}}),_resetResumeCursors:()=>e({resumeCursors:{}}),_onEvent:t=>e(e=>{let n=e.events.some(e=>e.id===t.id),r=n?{}:{events:[...e.events,t].slice(-500)},i=t.type===`peer.rehydrate`||t.type===`peer.lost`?e=>({}):n=>{let r=e.resumeCursors[n]??0,i=t.seq,a=r>0&&i>0&&i<=r/2&&t.type!==`client.hello`;return i>r||a?{resumeCursors:{...e.resumeCursors,[n]:i}}:{}};if(t.type===`peer.rehydrate`){if(!yt(t.payload))return r;let e={kind:`peer.rehydrate`,payload:t.payload,receivedAt:new Date().toISOString()};return{...r,...i(B),...n?{}:{peerRehydrate:e}}}if(t.type===`peer.lost`){if(!bt(t.payload))return r;let e={kind:`peer.lost`,payload:t.payload,receivedAt:new Date().toISOString()};return{...r,...i(B),...n?{}:{peerRehydrate:e}}}return{...r,...i(t.clientId)}}),_onAlert:t=>e(e=>e.alerts.some(e=>St(e,t))?{}:{alerts:[...e.alerts,t].slice(-100)}),_onCommandStatus:t=>e(e=>{let n=e.commandStatuses.findIndex(e=>e.commandId===t.commandId);if(n<0)return{commandStatuses:[...e.commandStatuses,t].slice(-200)};let r=[...e.commandStatuses];return r[n]=t,{commandStatuses:r}}),_setConnected:t=>e({connected:t}),_setNeedsSnapshotRefresh:t=>e(e=>e.needsSnapshotRefresh===t?{}:{needsSnapshotRefresh:t}),_dismissPeerRehydrate:()=>e({peerRehydrate:null})}));async function H(e){let t;try{t=await R(e)}catch{throw Error(`Network error fetching ${e}`)}if(t.status===401)throw V.getState().markAuthRequired(),Error(`401 Unauthorized fetching ${e} — browser token required`);if(!t.ok)throw Error(`${t.status} ${t.statusText}`);try{return await t.json()}catch{throw Error(`Invalid JSON response from ${e}: ${t.status}`)}}async function Ct(e){let t;try{t=await R(`/api/mailbox-send`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}catch{throw Error(`Network error sending mailbox message`)}if(t.status===401)throw V.getState().markAuthRequired(),Error(`401 Unauthorized — browser token required`);if(!t.ok){let e=await t.json().catch(()=>null),n=typeof e?.error==`string`?e.error:t.statusText||`HTTP ${t.status}`;throw Error(n)}try{return await t.json()}catch{throw Error(`Invalid JSON response from mailbox-send API`)}}async function wt(e,t,n){let r;try{r=await R(`/api/command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({clientId:e,type:t,payload:n})})}catch{throw Error(`Network error sending command`)}if(r.status===401)throw V.getState().markAuthRequired(),Error(`401 Unauthorized — browser token required`);if(!r.ok){let e=(await r.json().catch(()=>null))?.error??(r.statusText||`HTTP ${r.status}`);throw Error(e)}try{return await r.json()}catch{throw Error(`Invalid JSON response from command API`)}}var Tt=`wrongstack.hq.local-prefs.v1`,U={appearance:{theme:`dark`},fleet:{scope:`all`,layout:`map`,machineId:``,projectId:``},console:{delivery:`steer`,subject:``,body:``},control:{cmdType:`steer`,abortTarget:`leader`,spawnRole:`bug-hunter`,spawnTask:``,steerTo:`leader`,steerSubject:``,steerBody:``,broadcastSubject:``,broadcastBody:``},mailbox:{query:``,types:[],priorities:[],includeCompleted:!0}},W=null,Et=new Set;function G(){for(let e of Et)e()}function K(e){return typeof structuredClone==`function`?structuredClone(e):JSON.parse(JSON.stringify(e))}function q(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Dt(){if(typeof window>`u`||window.localStorage===void 0)return K(U);try{let e=window.localStorage.getItem(Tt);return e===null?K(U):Ot(JSON.parse(e))}catch{return K(U)}}function Ot(e){if(!q(e))return K(U);let t=q(e.appearance)?e.appearance:{},n=q(e.fleet)?e.fleet:{},r=q(e.console)?e.console:{},i=q(e.control)?e.control:{},a=q(e.mailbox)?e.mailbox:{};return{appearance:{theme:t.theme===`light`?`light`:`dark`},fleet:{scope:n.scope===`machine`||n.scope===`project`?n.scope:`all`,layout:n.layout===`compact`?`compact`:`map`,machineId:typeof n.machineId==`string`?n.machineId:``,projectId:typeof n.projectId==`string`?n.projectId:``},console:{delivery:r.delivery===`btw`||r.delivery===`queue`?r.delivery:`steer`,subject:typeof r.subject==`string`?r.subject:``,body:typeof r.body==`string`?r.body:``},control:{cmdType:i.cmdType===`btw`||i.cmdType===`queue`||i.cmdType===`abort`||i.cmdType===`spawn`||i.cmdType===`broadcast`||i.cmdType===`run-command`?i.cmdType:U.control.cmdType,abortTarget:i.abortTarget===`fleet`?`fleet`:`leader`,spawnRole:typeof i.spawnRole==`string`&&i.spawnRole.length>0?i.spawnRole:U.control.spawnRole,spawnTask:typeof i.spawnTask==`string`?i.spawnTask:U.control.spawnTask,steerTo:typeof i.steerTo==`string`?i.steerTo:U.control.steerTo,steerSubject:typeof i.steerSubject==`string`?i.steerSubject:U.control.steerSubject,steerBody:typeof i.steerBody==`string`?i.steerBody:U.control.steerBody,broadcastSubject:typeof i.broadcastSubject==`string`?i.broadcastSubject:U.control.broadcastSubject,broadcastBody:typeof i.broadcastBody==`string`?i.broadcastBody:U.control.broadcastBody},mailbox:{query:typeof a.query==`string`?a.query:U.mailbox.query,types:Array.isArray(a.types)?a.types.filter(e=>typeof e==`string`):[],priorities:Array.isArray(a.priorities)?a.priorities.filter(e=>typeof e==`string`):[],includeCompleted:typeof a.includeCompleted!=`boolean`||a.includeCompleted}}}function J(){return W===null&&(W=Dt()),W}function Y(e){if(!(typeof window>`u`||window.localStorage===void 0))try{window.localStorage.setItem(Tt,JSON.stringify(e))}catch{}}function kt(e){return Et.add(e),()=>Et.delete(e)}function At(){return J()}function jt(){return U}function Mt(){return(0,j.useSyncExternalStore)(kt,At,jt)}function Nt(e){let t=J();W={...t,control:{...t.control,...e}},Y(W),G()}function Pt(e){let t=J();W={...t,appearance:{...t.appearance,...e}},Y(W),G()}function Ft(e){let t=J();W={...t,fleet:{...t.fleet,...e}},Y(W),G()}function It(e){let t=J();W={...t,console:{...t.console,...e}},Y(W),G()}function Lt(e){let t=J();W={...t,mailbox:{...t.mailbox,...e}},Y(W),G()}function Rt({value:e,onChange:t,onKeyDown:n,inputRef:r,placeholder:i,autoComplete:a,minLength:o,maxLength:s,className:c,id:l}){let[u,d]=(0,j.useState)(!1);return(0,z.jsxs)(`div`,{className:`hq-password-input-wrapper`,children:[(0,z.jsx)(`input`,{ref:r,id:l,type:u?`text`:`password`,className:c??`hq-token-input`,placeholder:i,autoComplete:a,minLength:o,maxLength:s,value:e,onChange:e=>t(e.target.value),onKeyDown:n}),(0,z.jsx)(`button`,{type:`button`,className:`hq-password-toggle`,onMouseDown:e=>e.preventDefault(),onClick:()=>d(e=>!e),"aria-label":u?`Hide password`:`Show password`,"aria-pressed":u,children:u?(0,z.jsx)(ne,{size:14}):(0,z.jsx)(ue,{size:14})})]})}function zt({hadToken:e,onAuthenticated:t=()=>window.location.reload()}){let[n,r]=(0,j.useState)(null),[i,a]=(0,j.useState)(null);(0,j.useEffect)(()=>{fetch(`/api/auth/status`).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status}`);return await e.json()}).then(r).catch(()=>a(`Could not load HQ auth status.`))},[]);let o=n?.tokenMode??!0,s=n?.passwordMode??!1,[c,l]=(0,j.useState)(null),u=c??(e&&o?`token`:s?`password`:`token`);return i?(0,z.jsx)(`div`,{className:`hq-token-gate`,children:(0,z.jsxs)(`div`,{className:`hq-token-card`,children:[(0,z.jsx)(`div`,{className:`hq-brand`,children:`WrongStack HQ`}),(0,z.jsx)(`div`,{className:`hq-token-title`,children:`Auth status unavailable`}),(0,z.jsx)(`p`,{className:`hq-token-text`,children:i})]})}):n?(0,z.jsx)(`div`,{className:`hq-token-gate`,children:(0,z.jsxs)(`div`,{className:`hq-token-card`,children:[(0,z.jsx)(`div`,{className:`hq-brand`,children:`WrongStack HQ`}),o&&s?(0,z.jsxs)(`div`,{className:`hq-token-tabs`,children:[(0,z.jsx)(`button`,{type:`button`,className:`hq-token-tab`+(u===`token`?` active`:``),onClick:()=>l(`token`),children:`Browser token`}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-tab`+(u===`password`?` active`:``),onClick:()=>l(`password`),children:`Password`})]}):null,u===`token`||!s?(0,z.jsx)(Bt,{hadToken:e,onAuthenticated:t}):(0,z.jsx)(Vt,{})]})}):(0,z.jsx)(`div`,{className:`hq-token-gate`,children:(0,z.jsxs)(`div`,{className:`hq-token-card`,children:[(0,z.jsx)(`div`,{className:`hq-brand`,children:`WrongStack HQ`}),(0,z.jsx)(`div`,{className:`hq-token-title`,children:`Checking auth mode…`})]})})}function Bt({hadToken:e,onAuthenticated:t}){let[n,r]=(0,j.useState)(``),[i,a]=(0,j.useState)(null),[o,s]=(0,j.useState)(!1),c=(0,j.useRef)(null),l=(0,j.useRef)(!1);(0,j.useEffect)(()=>{c.current?.focus()},[]);let u=async()=>{if(o||l.current||n.trim().length===0)return;l.current=!0,s(!0),a(null);let e=await tt(n);if(e.ok){t();return}a(e.message??`The browser token was rejected.`),l.current=!1,s(!1)};return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{className:`hq-token-title`,children:`Browser token required`}),(0,z.jsx)(`p`,{className:`hq-token-text`,children:e?`The saved token was rejected — it may have been revoked or the server was reset. Paste a current browser token.`:`This HQ server runs in token mode. Open a terminal and run wstack hq token create to mint a browser token, then paste the token value here. A complete legacy ?token= URL also works.`}),i?(0,z.jsx)(`p`,{className:`hq-token-error`,children:i}):null,(0,z.jsx)(Rt,{inputRef:c,value:n,onChange:r,onKeyDown:e=>{e.key===`Enter`&&u()},placeholder:`browser token`,autoComplete:`off`}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-submit`,onClick:()=>void u(),disabled:n.trim().length===0||o,children:o?`Connecting…`:`Connect`}),(0,z.jsxs)(`p`,{className:`hq-token-hint`,children:[`Open a terminal and run `,(0,z.jsx)(`code`,{children:`wstack hq token create`}),`, then paste the`,` `,(0,z.jsx)(`code`,{children:`token:`}),` value here. The secret is shown only once — it cannot be recovered from `,(0,z.jsx)(`code`,{children:`~/.wrongstack/hq/auth.json`}),` (only its hash is stored). Run`,` `,(0,z.jsx)(`code`,{children:`wstack hq help`}),` for all token commands.`]})]})}function Vt(){let[e,t]=(0,j.useState)(``),[n,r]=(0,j.useState)(``),[i,a]=(0,j.useState)(!1),[o,s]=(0,j.useState)(null),[c,l]=(0,j.useState)(!1),u=(0,j.useRef)(null),d=(0,j.useRef)(null),f=(0,j.useRef)(!1),p=(0,j.useRef)(!1);(0,j.useEffect)(()=>{if(i){d.current?.focus();return}u.current?.focus()},[i]);let ee=async()=>{if(c||f.current)return;let t=e;if(t.length!==0){f.current=!0,l(!0),s(null);try{let e=await fetch(`/api/login`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({password:t})});if(!e.ok){let t=`Login failed.`;try{let n=(await e.json()).error;typeof n==`string`?t=n:typeof n?.message==`string`&&(t=n.message)}catch{}s(t),f.current=!1,l(!1);return}if((await e.json()).totpRequired){a(!0),f.current=!1,l(!1);return}L(),window.location.reload()}catch{s(`Network error.`),f.current=!1,l(!1)}}},m=async()=>{if(c||p.current)return;let e=n.trim();if(e.length!==0){p.current=!0,l(!0),s(null);try{let t=e.includes(`-`)?{recoveryCode:e}:{code:e.replace(/\D/g,``).slice(0,6)},n=await fetch(`/api/login/verify`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=`Verification failed.`;try{let t=(await n.json()).error;typeof t==`string`?e=t:typeof t?.message==`string`&&(e=t.message)}catch{}s(e),p.current=!1,l(!1);return}L(),window.location.reload()}catch{s(`Network error.`),p.current=!1,l(!1)}}};return i?(0,z.jsxs)(z.Fragment,{children:[o?(0,z.jsx)(`p`,{className:`hq-token-error`,children:o}):null,(0,z.jsx)(`label`,{className:`hq-token-label`,htmlFor:`hq-totp-code`,children:`Authenticator code`}),(0,z.jsx)(`input`,{ref:d,id:`hq-totp-code`,className:`hq-token-input`,type:`text`,autoComplete:`one-time-code`,placeholder:`000000 or recovery code`,value:n,onChange:e=>r(e.target.value.slice(0,32)),onKeyDown:e=>{e.key===`Enter`&&m()}}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-submit`,onClick:()=>void m(),disabled:n.trim().length===0||c,children:c?`Verifying…`:`Verify`}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-hint`,onClick:()=>{a(!1),r(``),s(null)},children:`← Back to password`}),(0,z.jsx)(`p`,{className:`hq-token-hint`,children:`Enter the 6-digit code from your authenticator app, or paste a recovery code.`})]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{className:`hq-token-title`,children:`Password required`}),(0,z.jsx)(`p`,{className:`hq-token-text`,children:`This HQ server is protected by a password. Enter it to open the dashboard.`}),o?(0,z.jsx)(`p`,{className:`hq-token-error`,children:o}):null,(0,z.jsx)(Rt,{inputRef:u,value:e,onChange:t,onKeyDown:e=>{e.key===`Enter`&&ee()},placeholder:`password`,autoComplete:`current-password`}),(0,z.jsx)(`button`,{type:`button`,className:`hq-token-submit`,onClick:()=>void ee(),disabled:e.length===0||c,children:c?`Logging in…`:`Log in`}),(0,z.jsxs)(`p`,{className:`hq-token-hint`,children:[`Set or change the password with `,(0,z.jsx)(`code`,{children:`wstack --hq --password <secret>`}),`.`]})]})}var Ht=`modulepreload`,Ut=function(e){return`/`+e},Wt={},X=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=Ut(t,n),t=s(t),t in Wt)return;Wt[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:Ht,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Gt=216e5,Z=[{id:`cockpit`,label:`Cockpit`,eyebrow:`Fleet overview`,description:`Health, active work, alerts, cost and command shortcuts.`,group:`Operations`,icon:t,shortcut:1},{id:`fleet`,label:`Fleet Map`,eyebrow:`Topology`,description:`Machines, projects, terminals and agents in one live graph.`,group:`Operations`,icon:i,shortcut:2},{id:`console`,label:`Live Console`,eyebrow:`Transcripts`,description:`Stream and inspect session or agent conversations.`,group:`Operations`,icon:C,shortcut:3},{id:`mailbox`,label:`Mailbox`,eyebrow:`Coordination`,description:`Cross-project messages, unread work and direct delivery.`,group:`Operations`,icon:y,shortcut:4},{id:`kanban`,label:`Kanban`,eyebrow:`Project work`,description:`Read-only project boards synchronized across clones and machines.`,group:`Operations`,icon:d},{id:`alerts`,label:`Attention`,eyebrow:`Operator inbox`,description:`Alerts, waiting agents, governance warnings and failed commands.`,group:`Intelligence`,icon:v,shortcut:5},{id:`cost`,label:`Cost`,eyebrow:`Economics`,description:`Project, provider and model spending distribution.`,group:`Intelligence`,icon:l,shortcut:6},{id:`trends`,label:`Trends`,eyebrow:`Telemetry`,description:`Cost, token and tool activity over time.`,group:`Intelligence`,icon:f,shortcut:7},{id:`brain`,label:`Brain`,eyebrow:`Decisions`,description:`Autonomous decisions, escalations and interventions.`,group:`Intelligence`,icon:o,shortcut:8},{id:`worktree`,label:`Worktrees`,eyebrow:`Workspace`,description:`Distributed branches, worktrees and ownership state.`,group:`System`,icon:b,shortcut:9},{id:`control`,label:`Control`,eyebrow:`Command plane`,description:`Steer, queue, broadcast and audit remote commands.`,group:`System`,icon:c,shortcut:0},{id:`settings`,label:`Security`,eyebrow:`Access control`,description:`Manage the HQ browser password, authentication and active credentials.`,group:`System`,icon:x}],Kt=[`Operations`,`Intelligence`,`System`],qt={cockpit:(0,j.lazy)(()=>X(()=>import(`./cockpit-C-PXTlIf.js`).then(e=>({default:e.CockpitView})),__vite__mapDeps([0,1,2,3]))),fleet:(0,j.lazy)(()=>X(()=>import(`./fleet-map-DG8O3br5.js`).then(e=>({default:e.FleetMapView})),__vite__mapDeps([4,1,2,5,3,6]))),console:(0,j.lazy)(()=>X(()=>import(`./live-console-D4fbGyJM.js`).then(e=>({default:e.LiveConsoleView})),__vite__mapDeps([7,1,2,3,6,5]))),mailbox:(0,j.lazy)(()=>X(()=>import(`./mailbox-eWAmNL4x.js`).then(e=>({default:e.MailboxView})),__vite__mapDeps([8,1,2,3,9]))),kanban:(0,j.lazy)(()=>X(()=>import(`./kanban-FnVQHZcq.js`).then(e=>({default:e.KanbanView})),__vite__mapDeps([10,1,2,3]))),cost:(0,j.lazy)(()=>X(()=>import(`./cost-BHY6zEoU.js`).then(e=>({default:e.CostView})),__vite__mapDeps([11,1,2,3]))),brain:(0,j.lazy)(()=>X(()=>import(`./brain-CasQFLGW.js`).then(e=>({default:e.BrainView})),__vite__mapDeps([12,1,2,3,9]))),worktree:(0,j.lazy)(()=>X(()=>import(`./worktree-B4kJFv93.js`).then(e=>({default:e.WorktreeView})),__vite__mapDeps([13,1,2,3,9]))),trends:(0,j.lazy)(()=>X(()=>import(`./trends-DenFCLQy.js`).then(e=>({default:e.TrendsView})),__vite__mapDeps([14,1,2,3]))),alerts:(0,j.lazy)(()=>X(()=>import(`./alerts-C9eBX9-8.js`).then(e=>({default:e.AlertsView})),__vite__mapDeps([15,1,2,3]))),control:(0,j.lazy)(()=>X(()=>import(`./control-BnJmaNmt.js`).then(e=>({default:e.ControlView})),__vite__mapDeps([16,1,2,3]))),settings:(0,j.lazy)(()=>X(()=>import(`./settings-B62Hxx2p.js`).then(e=>({default:e.SettingsView})),__vite__mapDeps([17,1,2,3])))};function Jt(e){return Z.find(t=>t.id===e)??Z[0]}var Yt=class extends j.Component{state={error:null};static getDerivedStateFromError(e){return{error:e instanceof Error?e.message:String(e)}}componentDidUpdate(e){e.view!==this.props.view&&this.state.error!==null&&this.setState({error:null})}render(){return this.state.error===null?this.props.children:(0,z.jsxs)(`div`,{className:`hq-view-error`,role:`alert`,children:[(0,z.jsx)(h,{size:22}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:`This HQ surface stopped safely.`}),(0,z.jsx)(`p`,{children:this.state.error})]}),(0,z.jsxs)(`button`,{type:`button`,className:`hq-btn secondary`,onClick:()=>this.setState({error:null}),children:[(0,z.jsx)(S,{size:13}),`Retry view`]})]})}};function Xt(){let{snapshot:e,alerts:t,commandStatuses:r,activeView:i,authRequired:a,connected:o,peerRehydrate:c}=V(qe(e=>({snapshot:e.snapshot,alerts:e.alerts,commandStatuses:e.commandStatuses,activeView:e.activeView,authRequired:e.authRequired,connected:e.connected,peerRehydrate:e.peerRehydrate}))),[d,f]=(0,j.useState)(()=>typeof window>`u`||window.innerWidth>=1180),[m,ne]=(0,j.useState)(null),[h,oe]=(0,j.useState)(null),[g,se]=(0,j.useState)(!1),[_,v]=(0,j.useState)(!1),[y,b]=(0,j.useState)(``),[x,S]=(0,j.useState)(0),ue=(0,j.useRef)(null),{theme:C}=Mt().appearance,de=(0,j.useRef)(!1),w=(0,j.useRef)(!1);(0,j.useEffect)(()=>{w.current&&o===!1?mt.getState().addToast(`Connection lost — reconnecting with backoff…`,`warning`,4e3):w.current&&de.current===!1&&o===!0&&mt.getState().addToast(`Reconnected to HQ server`,`success`,3e3),o&&(w.current=!0),de.current=o},[o]),(0,j.useEffect)(()=>(document.documentElement.dataset.hqTheme=C,()=>{delete document.documentElement.dataset.hqTheme}),[C]),(0,j.useEffect)(()=>{let e=!1;return H(`/api/snapshot`).then(t=>{e||V.getState()._hydrateSnapshot(t)}).catch(()=>{}),()=>{e=!0}},[]),(0,j.useEffect)(()=>{let e=!1;return H(`/api/auth/status`).then(t=>{e||oe(t)}).catch(()=>{}),()=>{e=!0}},[]),(0,j.useEffect)(()=>{let e=!1,t=()=>{H(`/api/system/update`).then(t=>{e||ne(t)}).catch(()=>{})};t();let n=window.setInterval(t,Gt);return()=>{e=!0,window.clearInterval(n)}},[]),(0,j.useEffect)(()=>{_&&ue.current?.focus()},[_]),(0,j.useEffect)(()=>{let e=e=>{if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`k`){e.preventDefault(),v(e=>!e),b(``),S(0);return}if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`b`){e.preventDefault(),f(e=>!e);return}if(e.altKey&&/^\d$/.test(e.key)){let t=Number(e.key),n=Z.find(e=>e.shortcut===t);n&&(e.preventDefault(),V.getState().setActiveView(n.id));return}if(e.key===`Escape`&&_){e.preventDefault(),v(!1);return}e.key===`Escape`&&d&&window.innerWidth<900&&f(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[_,d]);let T=(0,j.useMemo)(()=>{let e=y.trim().toLowerCase();return e.length===0?Z:Z.filter(t=>[t.label,t.eyebrow,t.description,t.group].join(` `).toLowerCase().includes(e))},[y]);if(a)return(0,z.jsx)(zt,{hadToken:Xe()!==null});let E=e?.totals,fe=E?.unreadMailboxMessages??0,pe=t.filter(e=>e.severity!==`info`).length+(e?.projects??[]).filter(e=>e.governance?.signal.level===`warning`||e.governance?.signal.level===`unavailable`).length+(e?.liveSessions??[]).flatMap(e=>e.agents??[]).filter(e=>e.status===`waiting_user`||e.status===`error`).length+(e?.clients??[]).filter(e=>!e.connected).length+r.filter(e=>e.ackStatus===`failed`||e.ackStatus===`rejected`).length,D=Jt(i),me=D.icon,he=qt[i],O=e=>{V.getState().setActiveView(e),v(!1),b(``),S(0),window.innerWidth<900&&f(!1)},ge=async()=>{se(!0);try{await R(`/api/logout`,{method:`POST`})}finally{L(),window.location.reload()}};return(0,z.jsxs)(`div`,{className:`hq-app`,"data-theme":C,"data-testid":`hq-workbench`,children:[(0,z.jsx)(`button`,{type:`button`,className:`hq-sidebar-scrim`,"data-open":d,"aria-label":`Close HQ navigation`,onClick:()=>f(!1)}),(0,z.jsxs)(`aside`,{className:`hq-secondary-nav`,"data-open":d,"aria-label":`HQ navigation`,children:[(0,z.jsxs)(`div`,{className:`hq-secondary-header`,children:[(0,z.jsxs)(`div`,{className:`hq-secondary-brand`,children:[(0,z.jsx)(`img`,{src:`/wrongstack.svg`,alt:``,"aria-hidden":`true`,draggable:!1}),(0,z.jsxs)(`div`,{className:`hq-secondary-copy`,children:[(0,z.jsx)(`span`,{className:`hq-secondary-eyebrow`,children:`Command center`}),(0,z.jsx)(`strong`,{children:`WrongStack HQ`})]})]}),(0,z.jsx)(`button`,{type:`button`,className:`hq-icon-button hq-secondary-close`,"aria-label":`Collapse HQ navigation`,title:`Collapse navigation (Ctrl+B)`,onClick:()=>f(!1),children:(0,z.jsx)(ae,{size:16})})]}),(0,z.jsx)(`div`,{className:`hq-secondary-scroll`,children:Kt.map(e=>(0,z.jsxs)(`section`,{className:`hq-nav-group`,children:[(0,z.jsx)(`div`,{className:`hq-nav-group-label`,children:e}),Z.filter(t=>t.group===e).map(e=>{let t=e.icon,n=e.id===`mailbox`?fe:e.id===`alerts`?pe:0;return(0,z.jsxs)(`button`,{type:`button`,className:`hq-nav-item`,"data-active":i===e.id,"aria-current":i===e.id?`page`:void 0,onClick:()=>O(e.id),children:[(0,z.jsx)(t,{size:15}),(0,z.jsx)(`span`,{children:e.label}),e.shortcut===void 0?null:(0,z.jsxs)(`kbd`,{children:[`Alt+`,e.shortcut]}),n>0?(0,z.jsx)(`span`,{className:`hq-nav-badge`,children:n}):null]},e.id)})]},e))}),(0,z.jsxs)(`div`,{className:`hq-secondary-footer`,children:[(0,z.jsxs)(`div`,{className:`hq-link-state`,"data-live":o,children:[(0,z.jsx)(`span`,{className:`hq-link-dot`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:o?`Connected`:`Reconnecting`}),(0,z.jsxs)(`span`,{children:[E?.activeMachines??0,` machines · `,E?.activeClients??0,` clients`]})]})]}),(0,z.jsx)(`span`,{className:`hq-build-label`,children:`@wrongstack/webui-hq`})]})]}),(0,z.jsxs)(`section`,{className:`hq-workbench`,"data-update-available":m?.outdated===!0,children:[(0,z.jsxs)(`header`,{className:`hq-header`,children:[(0,z.jsx)(`button`,{type:`button`,className:`hq-icon-button hq-sidebar-toggle`,"aria-label":d?`Collapse HQ navigation`:`Expand HQ navigation`,"aria-expanded":d,title:`Toggle navigation (Ctrl+B)`,onClick:()=>f(e=>!e),children:d?(0,z.jsx)(ae,{size:17}):(0,z.jsx)(n,{size:17})}),(0,z.jsx)(`div`,{className:`hq-view-icon`,"aria-hidden":`true`,children:(0,z.jsx)(me,{size:18})}),(0,z.jsxs)(`div`,{className:`hq-view-identity`,children:[(0,z.jsx)(`span`,{children:D.eyebrow}),(0,z.jsx)(`h1`,{children:D.label}),(0,z.jsx)(`p`,{children:D.description})]}),(0,z.jsxs)(`div`,{className:`hq-top-metrics`,children:[(0,z.jsx)(Q,{icon:le,label:`Machines`,value:E?.activeMachines??0}),(0,z.jsx)(Q,{icon:ce,label:`Agents`,value:E?.activeAgents??0}),(0,z.jsx)(Q,{icon:ee,label:`Sessions`,value:E?.activeSessions??0}),(0,z.jsx)(Q,{icon:l,label:`Cost`,value:`$${(E?.totalCostUsd??0).toFixed(2)}`,accent:!0})]}),(0,z.jsxs)(`button`,{type:`button`,className:`hq-command-trigger`,"aria-label":`Open HQ command palette`,"aria-expanded":_,onClick:()=>{v(!0),b(``),S(0)},children:[(0,z.jsx)(u,{size:14}),(0,z.jsx)(`span`,{children:`Jump to`}),(0,z.jsx)(`kbd`,{children:`Ctrl K`})]}),(0,z.jsxs)(`div`,{className:`hq-connection-pill`,"data-live":o,children:[o?(0,z.jsx)(ie,{size:13}):(0,z.jsx)(te,{size:13}),o?`Live`:`Reconnecting`]}),(0,z.jsx)(`button`,{type:`button`,className:`hq-icon-button hq-theme-toggle`,"aria-label":`Switch to ${C===`dark`?`light`:`dark`} mode`,title:`Switch to ${C===`dark`?`light`:`dark`} mode`,onClick:()=>Pt({theme:C===`dark`?`light`:`dark`}),children:C===`dark`?(0,z.jsx)(re,{size:16}):(0,z.jsx)(s,{size:16})}),h?.tokenMode||h?.passwordMode?(0,z.jsx)(`button`,{type:`button`,className:`hq-icon-button`,"aria-label":`Log out of HQ`,title:`Log out and clear this tab's HQ credentials`,disabled:g,onClick:()=>void ge(),children:(0,z.jsx)(p,{size:16})}):null]}),m?.outdated?(0,z.jsx)(Qt,{status:m}):null,c?(0,z.jsx)(Zt,{envelope:c}):null,(0,z.jsx)(`main`,{className:`hq-main`,id:`hq-main`,tabIndex:-1,children:(0,z.jsx)(Yt,{view:i,children:(0,z.jsx)(j.Suspense,{fallback:(0,z.jsx)($t,{label:D.label}),children:(0,z.jsx)(he,{})})})})]}),_?(0,z.jsxs)(`div`,{className:`hq-command-layer`,role:`presentation`,children:[(0,z.jsx)(`button`,{type:`button`,className:`hq-command-scrim`,"aria-label":`Close HQ command palette`,onClick:()=>v(!1)}),(0,z.jsxs)(`dialog`,{open:!0,className:`hq-command-palette`,"aria-label":`HQ command palette`,children:[(0,z.jsxs)(`div`,{className:`hq-command-search`,children:[(0,z.jsx)(u,{size:17,"aria-hidden":`true`}),(0,z.jsx)(`input`,{ref:ue,type:`search`,value:y,"aria-label":`Search HQ views`,placeholder:`Search views, telemetry and controls…`,onChange:e=>{b(e.target.value),S(0)},onKeyDown:e=>{e.key===`ArrowDown`?(e.preventDefault(),S(e=>T.length===0?0:(e+1)%T.length)):e.key===`ArrowUp`?(e.preventDefault(),S(e=>T.length===0?0:(e-1+T.length)%T.length)):e.key===`Enter`&&T[x]&&(e.preventDefault(),O(T[x].id))}}),(0,z.jsx)(`kbd`,{children:`Esc`})]}),(0,z.jsx)(`div`,{className:`hq-command-results`,role:`listbox`,"aria-label":`HQ destinations`,children:T.length===0?(0,z.jsxs)(`div`,{className:`hq-command-empty`,children:[`No HQ surface matches “`,y,`”.`]}):T.map((e,t)=>{let n=e.icon;return(0,z.jsxs)(`button`,{type:`button`,className:`hq-command-result`,role:`option`,"aria-selected":x===t,"data-current":i===e.id,onMouseEnter:()=>S(t),onClick:()=>O(e.id),children:[(0,z.jsx)(`span`,{className:`hq-command-result-icon`,children:(0,z.jsx)(n,{size:16})}),(0,z.jsxs)(`span`,{className:`hq-command-result-copy`,children:[(0,z.jsx)(`strong`,{children:e.label}),(0,z.jsx)(`small`,{children:e.description})]}),(0,z.jsx)(`span`,{className:`hq-command-result-group`,children:e.group}),e.shortcut===void 0?null:(0,z.jsxs)(`kbd`,{children:[`Alt `,e.shortcut]})]},e.id)})}),(0,z.jsxs)(`footer`,{className:`hq-command-footer`,children:[(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`kbd`,{children:`↑↓`}),` select`]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`kbd`,{children:`Enter`}),` open`]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`kbd`,{children:`Esc`}),` close`]}),(0,z.jsxs)(`span`,{children:[T.length,` destinations`]})]})]})]}):null,(0,z.jsx)(gt,{})]})}function Zt({envelope:e}){let t=e.kind===`peer.rehydrate`?`Leader session lost — survivor clients can rehydrate`:`Leader session lost — no survivor clients reported`,n=e.kind===`peer.rehydrate`&&e.payload.rehydrateHint?e.payload.rehydrateHint:`${e.payload.previousLeaderHandle} on ${e.payload.machineId} ended (${e.payload.reason}).`;return(0,z.jsxs)(`aside`,{className:`hq-peer-rehydrate-notice`,role:`status`,"aria-live":`polite`,children:[(0,z.jsx)(g,{size:16,"aria-hidden":`true`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:t}),(0,z.jsx)(`span`,{children:n})]}),(0,z.jsx)(`button`,{type:`button`,onClick:()=>V.getState()._dismissPeerRehydrate(),title:`Dismiss peer lifecycle notice`,children:`Dismiss`})]})}function Qt({status:e}){let[t,n]=(0,j.useState)(!1),i=async()=>{try{await navigator.clipboard.writeText(e.command),n(!0),window.setTimeout(()=>n(!1),1500)}catch{n(!1)}};return(0,z.jsxs)(`aside`,{className:`hq-update-notice`,role:`status`,"aria-live":`polite`,children:[(0,z.jsx)(g,{size:16,"aria-hidden":`true`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:`WrongStack update available`}),(0,z.jsxs)(`span`,{children:[`v`,e.current,` → v`,e.latest,`. Run `,(0,z.jsx)(`code`,{children:e.command}),` in your terminal, then restart HQ.`]})]}),(0,z.jsxs)(`button`,{type:`button`,onClick:()=>void i(),title:`Copy update command`,children:[(0,z.jsx)(r,{size:13,"aria-hidden":`true`}),t?`Copied`:`Copy command`]})]})}function Q({icon:e,label:t,value:n,accent:r=!1}){return(0,z.jsxs)(`div`,{className:`hq-top-metric`,"data-accent":r,children:[(0,z.jsx)(e,{size:12}),(0,z.jsx)(`span`,{children:t}),(0,z.jsx)(`strong`,{children:n})]})}function $t({label:e}){return(0,z.jsxs)(`div`,{className:`hq-view-loading`,role:`status`,children:[(0,z.jsx)(c,{size:18}),(0,z.jsxs)(`span`,{children:[`Loading `,e,`…`]})]})}var en=25e3,tn=1e4,nn=3e4,rn=32;function an(e){let t=e.toLowerCase().replace(/^\[(.*)\]$/,`$1`);if(t===`localhost`)return!0;let n=t.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);if(n){if(n[1]!==`127`)return!1;for(let e of n.slice(1))if(Number(e)>255)return!1;return!0}return t===`::1`||t===`0:0:0:0:0:0:0:1`||t.startsWith(`::ffff:127.`)}function on(e){if(!Number.isFinite(e))return 0;let t=Math.max(0,Math.trunc(e));return Number.isSafeInteger(t)?t:0}var sn=class{ws=null;handlers=new Set;stateHandlers=new Set;reconnectAttempt=0;connectionState=E();reconnectTimer=null;heartbeatTimer=null;lastMessageAt=0;stopped=!1;_state=`disconnected`;_url;resumeCursor;maxRetries;heartbeatIntervalMs;heartbeatTimeoutMs;maxBackoffMs;constructor(e){if(this.maxRetries=e?.maxRetries??1/0,this.heartbeatIntervalMs=e?.heartbeatIntervalMs??en,this.heartbeatTimeoutMs=e?.heartbeatTimeoutMs??tn,this.maxBackoffMs=e?.maxBackoffMs??nn,this.resumeCursor=e?.resumeCursor??(()=>({})),e?.url)this._url=e.url;else{let e=typeof window<`u`?window.location:{host:`127.0.0.1:3499`,protocol:`http:`,hostname:`127.0.0.1`},t=e.protocol===`https:`?`wss:`:`ws:`,n=Xe(),r=an(e.hostname),i=`${t}//${e.host}/ws/browser`;this._url=n!==null&&r?`${i}?token=${encodeURIComponent(n)}`:i}}get url(){return this._url}get state(){return this._state}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}connect(){if(this.stopped||this.ws!==null)return;this.connectionState=fe(this.connectionState),this.emitState(`connecting`);let e;try{e=new WebSocket(this._url)}catch{this.scheduleReconnect();return}this.ws=e,e.onopen=()=>{this.ws===e&&(this.reconnectAttempt=0,this.connectionState=pe(this.connectionState),this.lastMessageAt=Date.now(),this.connectionState=D(this.connectionState,this.lastMessageAt),this.emitState(`connected`),this.sendResume(),this.startHeartbeat())},e.onmessage=t=>{if(this.ws===e){this.lastMessageAt=Date.now(),this.connectionState=D(this.connectionState,this.lastMessageAt);try{let e=JSON.parse(typeof t.data==`string`?t.data:``);for(let t of this.handlers)try{t(e)}catch{}}catch{}}},e.onclose=()=>this.handleClose(e,`close`),e.onerror=()=>this.handleClose(e,`error`)}close(){this.stopped=!0,this.connectionState=me(this.connectionState),this.stopHeartbeat(),this.reconnectTimer!==null&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws?.close(1e3,`client closed`),this.ws=null,this.emitState(`disconnected`)}setResumeCursorProvider(e){this.resumeCursor=e}on(e){return this.handlers.add(e),()=>this.handlers.delete(e)}onStateChange(e){return this.stateHandlers.add(e),e(this._state),()=>this.stateHandlers.delete(e)}handleClose(e,t){this.ws===e&&(this.ws=null,this.stopHeartbeat(),this.scheduleReconnect())}scheduleReconnect(){if(this.stopped||this.reconnectTimer!==null)return;let e=he(this.connectionState,{...T,maxReconnectAttempts:this.maxRetries,maxBackoffMs:this.maxBackoffMs,heartbeatIntervalMs:this.heartbeatIntervalMs,heartbeatTimeoutMs:this.heartbeatTimeoutMs,jitterRatio:.5});if(this.connectionState=e.state,this.reconnectAttempt=e.state.reconnectAttempt,!e.plan){this.emitState(`disconnected`);return}this.emitState(`reconnecting`),this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,this.connect()},e.plan.delayMs)}sendResume(){if(this.ws?.readyState===WebSocket.OPEN)try{for(let e of this.resumeFrames())this.ws.send(JSON.stringify(e))}catch{}}resumeFrames(){try{let e=this.resumeCursor(),t=typeof e.entries==`function`?e.entries():Object.entries(e),n=[];for(let[e,r]of t){if(typeof e!=`string`||e.length===0)continue;let t=on(r);n.push({clientId:e,lastSeqSeen:t})}n.sort((e,t)=>t.lastSeqSeen===e.lastSeqSeen?e.clientId.localeCompare(t.clientId):t.lastSeqSeen-e.lastSeqSeen);let r=n.find(({clientId:e})=>e===B),i=r===void 0?rn:31,a=n.filter(({clientId:e})=>e!==B).slice(0,i);return r!==void 0&&a.unshift(r),a.map(({clientId:e,lastSeqSeen:t})=>({type:`client.resume`,clientId:e,lastSeqSeen:t}))}catch{return[]}}get isHeartbeatTimedOut(){return this.ws===null||O(this.connectionState,{...T,heartbeatIntervalMs:this.heartbeatIntervalMs,heartbeatTimeoutMs:this.heartbeatTimeoutMs})}startHeartbeat(){this.stopHeartbeat(),this.lastMessageAt=Date.now(),this.heartbeatTimer=setInterval(()=>{this.isHeartbeatTimedOut&&this.ws!==null&&(this.ws.close(4e3,`heartbeat timeout`),this.ws=null,this.scheduleReconnect())},this.heartbeatIntervalMs)}stopHeartbeat(){this.heartbeatTimer!==null&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null)}emitState(e){this._state=e;for(let t of this.stateHandlers)try{t(e)}catch{}}},$=null;function cn(e){if($===null)return $=new sn(e),$.connect(),$;if(e?.resumeCursor!==void 0&&$.setResumeCursorProvider(e.resumeCursor),e===void 0)return $;let t=[];return e.url!==void 0&&e.url!==$.url&&t.push(`url: ${e.url} vs ${$.url}`),e.heartbeatIntervalMs!==void 0&&e.heartbeatIntervalMs!==$.heartbeatIntervalMs&&t.push(`heartbeatIntervalMs: ${e.heartbeatIntervalMs} vs ${$.heartbeatIntervalMs}`),e.heartbeatTimeoutMs!==void 0&&e.heartbeatTimeoutMs!==$.heartbeatTimeoutMs&&t.push(`heartbeatTimeoutMs: ${e.heartbeatTimeoutMs} vs ${$.heartbeatTimeoutMs}`),e.maxBackoffMs!==void 0&&e.maxBackoffMs!==$.maxBackoffMs&&t.push(`maxBackoffMs: ${e.maxBackoffMs} vs ${$.maxBackoffMs}`),e.maxRetries!==void 0&&e.maxRetries!==$.maxRetries&&t.push(`maxRetries: ${e.maxRetries} vs ${$.maxRetries}`),t.length>0&&typeof console<`u`&&console.warn(`[hq-ws-client] getHqClient() called with options that conflict with the live singleton; ignoring: ${t.join(`, `)}. Call closeHqClient() first if you need to reconfigure.`),$}var ln=document.getElementById(`root`);ln!==null&&it().finally(()=>{Ze(),at();let e=cn({resumeCursor:()=>V.getState().resumeCursors});e.onStateChange(e=>{V.getState()._setConnected(e===`connected`)});let t=null,n=()=>{t===null&&(V.getState()._setNeedsSnapshotRefresh(!1),t=H(`/api/snapshot`).then(e=>{V.getState()._onSnapshot(e)}).catch(()=>void 0).finally(()=>{t=null}))};V.subscribe((e,t)=>{e.needsSnapshotRefresh&&!t.needsSnapshotRefresh&&n()}),e.on(e=>{if(e.type===`hq.snapshot`){let t=Le(e);t&&V.getState()._onSnapshot(t.snapshot)}else if(e.type===`hq.event`){let t=Re(e);t&&V.getState()._onEvent(t.event)}else if(e.type===`hq.alert`){let t=ze(e);t&&V.getState()._onAlert(t.alert)}else if(e.type===`hq.command_status`){let t=Be(e);t&&V.getState()._onCommandStatus(t.command)}else if(e.type===`hq.resume_gap`)for(let t of e.envelopes){let e=Re({type:`hq.event`,event:t});e&&V.getState()._onEvent(e.event)}else e.type===`hq.resume_reject`&&(V.getState()._resetResumeCursors(),V.getState()._setNeedsSnapshotRefresh(!0))}),(0,Ve.createRoot)(ln).render((0,z.jsx)(j.StrictMode,{children:(0,z.jsx)(Xt,{})}))});export{Lt as a,wt as c,R as d,L as f,Ft as i,Ct as l,It as n,Mt as o,qe as p,Nt as r,H as s,Rt as t,V as u};