@dreb/dashboard 2.48.0 → 2.50.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.
package/README.md
CHANGED
|
@@ -41,7 +41,8 @@ Open `http://127.0.0.1:5343`.
|
|
|
41
41
|
- **Session view** — full chat parity: markdown streaming transcript, tool
|
|
42
42
|
cards with sanitized inline PNG/JPEG/GIF/WebP result images, thinking blocks,
|
|
43
43
|
inline provider/API failures with partial output preserved, compaction summaries,
|
|
44
|
-
per-message copy, tasks panel,
|
|
44
|
+
per-message copy, tasks panel, a bounded scrollable panel listing every retained
|
|
45
|
+
subagent newest-first (collapsed by default on mobile), suggest-next chip,
|
|
45
46
|
slash-command autocomplete, image attach/paste with sent-image previews retained in user transcript entries,
|
|
46
47
|
queued-message restore, persistent session-header live indicator, footer-parity info bar (branch, tokens, cost, ctx%,
|
|
47
48
|
median tok/s), stats/loaded-context/fork modals, steer/follow-up composer
|
|
@@ -63,17 +63,17 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
|
|
|
63
63
|
`).length}function Es(e){if(e.kind===`user`)return e.text;if(e.kind===`assistant`)return e.blocks.filter(e=>e.kind===`text`).map(e=>e.text).join(`
|
|
64
64
|
`)}function Ds(e){return e.match(/^\/skill:([\w-]+)/)?.[1]}function Os(e){if(e.status===`running`){let t=Math.floor((Date.now()-e.startedAt)/1e3);return{text:`● running${t>2?` ${t}s`:``}`,cls:`running`}}return e.status===`error`?{text:`✕ error`,cls:`error`}:{text:`done`,cls:``}}var ks=new Set([`subagent`,`skill`,`web_fetch`]);function As(e){let t=e.args;if(!t||typeof t!=`object`)return[];switch(e.toolName){case`bash`:case`bash (user)`:return[];case`read`:case`ls`:case`edit`:return[];case`suggest_next`:return[];case`write`:return e.resultText&&typeof t.content==`string`?[{label:`content`,text:String(t.content),language:bs(xs(t))}]:[];case`subagent`:{let e=[];return typeof t.task==`string`&&e.push({label:`task`,text:t.task,markdown:!0}),Array.isArray(t.tasks)&&t.tasks.forEach((t,n)=>{typeof t?.task==`string`&&e.push({label:`task ${n+1}${t.agent?` (${t.agent})`:``}`,text:t.task,markdown:!0})}),Array.isArray(t.chain)&&t.chain.forEach((t,n)=>{typeof t?.task==`string`&&e.push({label:`step ${n+1}${t.agent?` (${t.agent})`:``}`,text:t.task,markdown:!0})}),e}default:{let e=[];for(let[n,r]of Object.entries(t)){let t=typeof r==`string`?r:JSON.stringify(r,null,2);t&&t.length>80&&e.push({label:n,text:t})}return e}}}function js(e){return(()=>{var t=Ro();return X(t,U(W,{get each(){return e.text.split(`
|
|
65
65
|
`)},children:e=>[(()=>{var t=zo();return X(t,e),j(n=>{var r=!!e.startsWith(`+`),i=!!e.startsWith(`-`);return r!==n.e&&t.classList.toggle(`diff-add`,n.e=r),i!==n.t&&t.classList.toggle(`diff-del`,n.t=i),n},{e:void 0,t:void 0}),t})(),`
|
|
66
|
-
`]})),t})()}function Ms(e){if(e.toolName!==`edit`)return;let t=e.details?.diff;return typeof t==`string`?t:void 0}var Ns=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]),Ps=/^[0-9a-f]{64}$/,Fs=1024*1024;function Is(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:e>=1024?`${Math.ceil(e/1024)} KB`:`${e} B`}var Ls={alt:`Tool result`,originalAriaLabel:`Original tool-result image`,enlargedAlt:`Enlarged tool-result preview`},Rs={alt:`Uploaded image`,originalAriaLabel:`Original uploaded image`,enlargedAlt:`Enlarged uploaded-image preview`};function zs(e){let[t,n]=k(),[r,i]=k(),[a,o]=k(),[s,c]=k(!1),l=t=>lt(e.scope.runtimeKey,e.image.id,t,e.scope.agentId),u=e=>{let t=l(e);if(!t){o(`Invalid image reference`);return}o(void 0),i(e),n(t)};M(()=>{let e=Ao();c(!1),o(void 0),e===`previews`?u(`preview`):e===`originals`?u(`original`):(n(void 0),i(void 0))});let d=()=>{e.image.size>Fs&&!window.confirm(`Load the ${Is(e.image.size)} original image? This may use significant data.`)||u(`original`)},f=e=>{e.key===`Escape`&&c(!1)};return R(()=>window.addEventListener(`keydown`,f)),z(()=>window.removeEventListener(`keydown`,f)),(()=>{var l=Ho(),f=l.firstChild,p=f.firstChild,m=p.firstChild;return X(l,U(G,{get when(){return t()},get fallback(){return(()=>{var t=Uo(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return X(n,()=>e.image.mimeType.replace(`image/`,``).toUpperCase(),r),X(n,()=>Is(e.image.size),null),i.$$click=()=>u(`preview`),X(i,()=>a()?`retry preview`:`load preview`),t})()},children:t=>(()=>{var a=Wo(),s=a.firstChild;return a.$$click=()=>r()===`preview`&&c(!0),s.addEventListener(`error`,()=>{o(`Could not load ${r()??`image`}`),n(void 0),i(void 0)}),j(n=>{var i=r()!==`preview`,o=r()===`preview`?`Enlarge image preview`:e.labels.originalAriaLabel,c=e.labels.alt,l=t();return i!==n.e&&(a.disabled=n.e=i),o!==n.t&&Y(a,`aria-label`,n.t=o),c!==n.a&&Y(s,`alt`,n.a=c),l!==n.o&&Y(s,`src`,n.o=l),n},{e:void 0,t:void 0,a:void 0,o:void 0}),a})()}),f),X(p,()=>e.image.mimeType.replace(`image/`,``).toUpperCase(),m),X(p,()=>Is(e.image.size),null),X(f,U(G,{get when(){return r()!==`original`},get children(){var t=Bo();return t.firstChild,t.$$click=d,X(t,()=>Is(e.image.size),null),t}}),null),X(l,U(G,{get when(){return a()},children:e=>(()=>{var t=Go();return X(t,e),t})()}),null),X(l,U(G,{get when(){return q(()=>!!(s()&&r()===`preview`))()&&t()},get children(){var n=Vo(),r=n.firstChild,i=r.nextSibling.firstChild,a=i.nextSibling;return r.$$click=()=>c(!1),a.$$click=()=>c(!1),j(n=>{var r=t(),a=e.labels.enlargedAlt;return r!==n.e&&Y(i,`src`,n.e=r),a!==n.t&&Y(i,`alt`,n.t=a),n},{e:void 0,t:void 0}),n}}),null),l})()}function Bs(e){let t=()=>e.images.filter(e=>Ns.has(e.mimeType)&&Ps.test(e.id)&&Number.isSafeInteger(e.size)&&e.size>0);return U(G,{get when(){return t().length>0},get children(){var n=Ko();return X(n,U(W,{get each(){return t()},children:t=>U(zs,{image:t,get scope(){return e.scope},get labels(){return e.labels}})})),n}})}function Vs(e){let[t,n]=k(!1),r=()=>e.text.length>hs;M(()=>{r()||n(!1)});let i=()=>r()&&!t()?e.text.slice(-204800):e.text;return[U(G,{get when(){return q(()=>!!r())()&&!t()},get children(){var t=qo(),r=t.firstChild.nextSibling,i=r.nextSibling.nextSibling,a=i.nextSibling.nextSibling,o=a.firstChild.nextSibling;return o.nextSibling,X(t,()=>vs(hs),r),X(t,()=>vs(e.text.length),i),a.$$click=()=>n(!0),X(a,()=>vs(e.text.length),o),t}}),U(G,{get when(){return e.markdown},get fallback(){return U(Cs,{get text(){return i()},get language(){return e.language},get autoScroll(){return e.autoScroll},get throttle(){return e.throttle}})},get children(){return U(ys,{get text(){return i()},get throttle(){return e.throttle}})}})]}function Hs(e){let t=()=>Os(e.entry),n=()=>e.entry.args,r=()=>{if(e.entry.toolName===`suggest_next`)return e.entry.details},i=()=>Ms(e.entry),a=()=>e.entry.toolName===`write`&&!e.entry.resultText&&typeof n()?.content==`string`?String(n()?.content):e.entry.resultText,o=()=>{if(e.entry.toolName===`read`||e.entry.toolName===`write`&&!e.entry.resultText)return bs(xs(n()))},s=()=>ks.has(e.entry.toolName)&&e.entry.status!==`error`,c=()=>e.entry.toolName===`bash`||e.entry.toolName===`bash (user)`,l=()=>As(e.entry),u=()=>Po(e.entry.toolName),d=e.entry.toolName!==`ask_user`,[f,p]=k(u()||e.entry.status===`running`&&d),m=e.entry.status===`running`,h=!1,g=!1,_,v=e=>{f()!==e&&(g=!0,p(e),_&&clearTimeout(_),_=setTimeout(()=>{g=!1,_=void 0},0))};return M(()=>{let t=e.entry.status===`running`,n=u();t&&d?(h=!1,v(!0)):m?(h=!1,v(n)):h||v(n),m=t}),z(()=>{_&&clearTimeout(_)}),(()=>{var u=Xo(),m=u.firstChild.firstChild,v=m.nextSibling,y=v.nextSibling;return u.addEventListener(`toggle`,t=>{let n=t.currentTarget.open;if(g){p(n);return}if(e.entry.status===`running`&&d&&!n){g=!0,t.currentTarget.open=!0,p(!0),_&&clearTimeout(_),_=setTimeout(()=>{g=!1,_=void 0},0);return}h=!0,p(n)}),X(m,()=>e.entry.toolName),X(v,()=>ws(e.entry)),X(y,()=>t().text),X(u,U(G,{get when(){return f()},get children(){return[U(G,{get when(){return e.entry.toolName===`bash`||e.entry.toolName===`bash (user)`},get children(){var e=Jo(),t=e.firstChild;return X(t,()=>String(n()?.command??``)),e}}),U(W,{get each(){return l()},children:e=>(()=>{var t=Zo(),n=t.firstChild;return X(n,()=>e.label),X(t,U(G,{get when(){return e.markdown},get fallback(){return U(Cs,{get text(){return e.text},get language(){return e.language}})},get children(){return U(ys,{get text(){return e.text}})}}),null),t})()}),U(G,{get when(){return e.entry.images?.length},get children(){var t=Yo();return X(t,U(Bs,{get images(){return e.entry.images},get scope(){return e.imageScope},labels:Ls})),t}}),U(Ee,{get children(){return[U(K,{get when(){return r()},children:e=>(()=>{var t=Qo(),n=t.firstChild,r=n.firstChild.nextSibling;return X(t,U(G,{get when(){return e().summary},get children(){return U(ys,{get text(){return e().summary}})}}),n),X(r,()=>e().suggestion),t})()}),U(K,{get when(){return i()},children:e=>(()=>{var t=Yo();return X(t,U(js,{get text(){return e()}})),t})()}),U(K,{get when(){return a()},children:t=>(()=>{var n=Yo();return X(n,U(Vs,{get text(){return t()},get language(){return o()},get markdown(){return s()},get autoScroll(){return c()},get throttle(){return e.entry.status===`running`}})),n})()})]}})]}}),null),j(e=>{var n=f(),r=`tool-status ${t().cls}`;return n!==e.e&&(u.open=e.e=n),r!==e.t&&je(y,e.t=r),e},{e:void 0,t:void 0}),u})()}function Us(e){let[t,n]=k(`idle`);async function r(){if(e.text){try{await navigator.clipboard.writeText(e.text),n(`copied`)}catch{n(`failed`)}setTimeout(()=>n(`idle`),1200)}}return(()=>{var n=$o();return n.$$click=r,X(n,(()=>{var e=q(()=>t()===`copied`);return()=>e()?`copied`:t()===`failed`?`copy failed`:`copy`})()),j(()=>n.disabled=!e.text),n})()}function Ws(e){let t=()=>e.entry.blocks.filter(t=>e.entry.streaming||e.entry.stopReason!==`error`||t.kind!==`thinking`||t.text.trim().length>0);return(()=>{var n=ns(),r=n.firstChild,i=r.firstChild;return X(i,()=>e.who),X(r,U(G,{get when(){return e.entry.model},get children(){return[es(),(()=>{var t=zo();return X(t,()=>e.entry.model),t})()]}}),null),X(r,U(G,{get when(){return e.entry.streaming},get children(){return[es(),ts()]}}),null),X(r,U(Us,{get text(){return Es(e.entry)}}),null),X(n,U(W,{get each(){return t()},children:(n,r)=>U(G,{get when(){return n.kind===`thinking`},get fallback(){return(()=>{var i=is();return X(i,U(ys,{get text(){return n.text},get classList(){return{"streaming-cursor":e.entry.streaming&&r()===t().length-1}},get throttle(){return e.entry.streaming}})),i})()},get children(){var t=rs();return t.firstChild,X(t,U(ys,{get text(){return n.text},class:`thinking-body markdown-body`,get throttle(){return e.entry.streaming}}),null),j(()=>t.open=ko()),t}})}),null),X(n,U(G,{get when(){return q(()=>e.entry.stopReason===`error`)()&&e.entry.errorMessage},children:e=>(()=>{var t=as();return t.firstChild,X(t,e,null),t})()}),null),n})()}function Gs(e,t){return e?.kind===`entry`&&e.entry===t}function Ks(e){let[t,n]=k(e);return{kind:`assistant-turn`,lead:e[0],entries:t,setEntries:n}}function qs(e,t=[]){let n=[],r=0;for(;r<e.length;){let i=e[r];if(i?.kind===`assistant`){let a=[i];for(r+=1;e[r]?.kind===`tool`;)a.push(e[r]),r+=1;let o=t[n.length];if(o?.kind===`assistant-turn`&&o.lead===i){let e=L(o.entries);(e.length!==a.length||a.some((t,n)=>t!==e[n]))&&o.setEntries(a),n.push(o)}else n.push(Ks(a));continue}if(i){let e=t[n.length];n.push(Gs(e,i)?e:{kind:`entry`,entry:i})}r+=1}return n}function Js(e){return U(Ee,{get children(){return[U(K,{get when(){return e.entry.kind===`user`},get children(){var t=os(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return X(n,U(G,{get when(){return Ds(e.entry.text)},children:e=>(()=>{var t=ls();return t.firstChild,X(t,e,null),t})()}),r),X(n,U(Us,{get text(){return Es(e.entry)}}),r),X(r,()=>e.userLabel),X(i,()=>e.entry.text),X(t,U(G,{get when(){return e.entry.images?.length},get children(){return U(Bs,{get images(){return e.entry.images},get scope(){return e.imageScope},labels:Rs})}}),null),t}}),U(K,{get when(){return e.entry.kind===`agent-result`},get children(){return U(Ys,{get entry(){return e.entry}})}}),U(K,{get when(){return e.entry.kind===`assistant`},get children(){return U(Ws,{get entry(){return e.entry},get who(){return e.who}})}}),U(K,{get when(){return e.entry.kind===`tool`},get children(){return U(Hs,{get entry(){return e.entry},get imageScope(){return e.imageScope}})}}),U(K,{get when(){return e.entry.kind===`summary`},get children(){var t=ss(),n=t.firstChild.firstChild,r=n.nextSibling;return X(n,()=>e.entry.label===`compaction`?`context compacted`:`branch summary`,null),X(n,U(G,{get when(){return e.entry.tokensBefore},get children(){return[` `,`— `,q(()=>e.entry.tokensBefore.toLocaleString()),` tokens summarized`]}}),null),X(r,()=>e.entry.text),t}}),U(K,{get when(){return e.entry.kind===`custom`},get children(){var t=cs(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return X(r,()=>e.entry.tag),X(i,()=>e.entry.text),t}})]}})}function Ys(e){return(()=>{var t=ds(),n=t.firstChild,r=n.firstChild;return r.firstChild,X(r,U(G,{get when(){return e.entry.header},get children(){var t=us();return X(t,()=>e.entry.header),t}}),null),X(n,U(ys,{get text(){return e.entry.text},class:`entry-body markdown-body`}),null),t})()}function Xs(e){let t=()=>e.who??`dreb`,n=()=>e.userLabel??`you`,r=()=>e.imageScope??{runtimeKey:``},i=N(t=>qs(e.entries,t)),[a,o]=k(150),s;M(()=>{let t=e.resetKey??e.entries;t!==s&&(s=t,o(150))});let c=N(()=>{let e=i(),t=a();return e.length>t?e.slice(-t):e}),l=()=>Math.max(0,i().length-c().length);return[U(G,{get when(){return l()>0},get children(){var e=fs(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;return r.nextSibling,t.$$click=()=>o(Math.min(i().length,a()+150)),X(t,()=>Math.min(150,l()),n),X(t,l,r),e}}),U(W,{get each(){return c()},children:e=>U(Ee,{get children(){return[U(K,{get when(){return e.kind===`assistant-turn`},get children(){var i=ps();return X(i,U(W,{get each(){return e.entries()},children:e=>U(Js,{entry:e,get who(){return t()},get userLabel(){return n()},get imageScope(){return r()}})})),i}}),U(K,{get when(){return e.kind===`entry`},get children(){return U(Js,{get entry(){return e.entry},get who(){return t()},get userLabel(){return n()},get imageScope(){return r()}})}})]}})})]}Ae([`click`]);function Zs(e){return typeof DOMException<`u`&&e instanceof DOMException&&e.name===`AbortError`?!0:typeof e==`object`&&!!e&&`name`in e&&e.name===`AbortError`}var Qs=new Map,$s=new Map;function ec(e){return $s.get(e)}function tc(e,t){$s.set(e,t)}function nc(e){return Qs.get(e)??[]}function rc(e,t){let n=Qs.get(e)??[];n.push(t),Qs.set(e,n.slice(-100))}function ic(e){Qs.delete(e),$s.delete(e)}var ac=J(`<p style=margin-bottom:12px>`),oc=J(`<div class=recent-projects>`),sc=J(`<div class=field><input type=text>`),cc=J(`<div class=field><textarea rows=8>`),lc=J(`<button type=button class="btn btn-small">cancel`),uc=J(`<button type=button class="btn btn-small btn-primary">confirm`),dc=J(`<button type=button class="btn btn-small btn-primary">submit`),fc=J(`<button type=button>`),pc=J(`<span class=ask-inline-countdown> (auto-stops in <!>s)`),mc=J(`<fieldset class=ask-options><legend class=ask-options-legend>Answer options`),hc=J(`<textarea rows=5>`),gc=J(`<div class=field><label class=ask-custom-label>`),_c=J(`<section class=ask-inline><header class=ask-inline-header></header><div class=ask-inline-actions><button type=button class="btn btn-small btn-danger"></button><button type=button class="btn btn-small btn-primary">submit`),vc=J(`<label class=ask-option><input><span>`),yc=J(`<input type=text placeholder="Type a different answer…">`),bc=J(`<ul>`),xc=J(`<section class=context-section><h3>`),Sc=J(`<p class="muted small">none`),Cc=J(`<p class=pair-error>`),wc=J(`<p class="muted small">loading…`),Tc=J(`<p class="muted small">system prompt: custom`),Ec=J(`<div class=context-modal-body>`),Dc=J(`<li>`),Oc=J(`<span class=muted> — `),kc=J(`<li><span>`),Ac=J(`<li><span></span><span class=muted> — `),jc=J(`<div class=model-scope-tabs role=tablist aria-label="model scope"><button type=button role=tab>scoped</button><button type=button role=tab>all`),Mc=J(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),Nc=J(`<div class="model-list session-model-list"style=max-height:320px>`),Pc=J(`<p class="muted small">No matching models.`),Fc=J(`<section class=model-provider-group><div class=model-provider-heading>`),Ic=J(`<span class=model-name>`),Lc=J(`<span class=model-reasoning>think`),Rc=J(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),zc=J(`<span class=project>`),Bc=J(`<output class=switcher><span class=label>ctx</span> `),Vc=J(`<span class=right><button type=button class="switcher optional model-switcher"><span class=label>model</span> <span class=value></span></button><button type=button class="switcher optional"><span class=label>think</span> </button><button type=button class=switcher>⋯`),Hc=J(`<div class=stats-popover>`),Uc=J(`<div class="session-bar-inner session-info-bar"><span class=session-info-left></span><button type=button class="session-info-right stats-trigger">`),Wc=J(`<button type=button class="btn btn-small">model: `),Gc=J(`<button type=button class="btn btn-small">think: `),Kc=J(`<div class=session-bar-inner style=justify-content:flex-end;gap:8px><a class="btn btn-small">export HTML</a><button type=button class="btn btn-small">compact now</button><button type=button class="btn btn-small">expand tools</button><button type=button class="btn btn-small">collapse tools</button><button type=button class="btn btn-small">rename</button><button type=button class="btn btn-small">fork</button><button type=button class="btn btn-small">loaded context</button><button type=button class="btn btn-small btn-danger">`),qc=J(`<div class=container style=padding-top:8px><div class=fallback-banner><span>◆ </span><button type=button class="btn btn-small dismiss">dismiss`),Jc=J(`<span class=dock-collapsed-hint>`),Yc=J(`<details class=tasks><summary>tasks — <!> of <!> done</summary><ul>`),Xc=J(`<span class=collapsed-hint>subagent panel hidden`),Zc=J(`<div class=subagent-strip><button type=button class=subagent-toggle></button><span class=count>⚡ <!> running · <!> done`),Qc=J(`<span class=working>● working`),$c=J(`<span class=error>`),el=J(`<button type=button class="btn btn-small btn-danger">`),tl=J(`<div class=status-line>`),nl=J(`<div class=queued-message-row><button type=button class="btn btn-small">restore to composer`),rl=J(`<div class=attachment-strip>`),il=J(`<div class=command-popover role=listbox id=command-listbox aria-label="slash commands">`),al=J(`<span class=mode-toggle role=radiogroup aria-label="send mode"><button type=button title="Deliver now — injected into the running turn">steer</button><button type=button title="Queue — delivered after the agent finishes">follow-up`),ol=J(`<button type=button class=ghost-suggest>suggested: <code></code> <span class=key>tap`),sl=J(`<div class=dock-inner><div class=composer><textarea></textarea><div class=composer-row><input type=file multiple class=hidden-file-input><input type=file accept=image/* multiple class=hidden-file-input><button type=button class="btn btn-small"title="attach file (uploads to workspace and sends path)">📎 file</button><button type=button class="btn btn-small"title="attach image inline">🖼 photo</button><button type=button class="btn btn-primary btn-small send">send ↵`),cl=J(`<p>Summarize older context to free window space. The transcript keeps a summary card.`),ll=J(`<div class=fork-message-list>`),ul=J(`<div class=session-screen><header class=session-bar><div class="session-bar-inner session-bar-main"><a class=back href=#/>← fleet</a><span class=title></span><button type=button class=chrome-toggle></button></div></header><main class=chat><div class=chat-inner></div></main><footer class=dock><div class=dock-collapse-row><button type=button class=chrome-toggle>`),dl=J(`<span>`),fl=J(`<p class="muted small">loading stats…`),pl=J(`<div class=stats-grid><span>user messages</span><strong></strong><span>assistant messages</span><strong></strong><span>tool calls/results</span><strong>/</strong><span>input/output</span><strong> / </strong><span>cache read/write</span><strong> / </strong><span>total tokens</span><strong></strong><span>cost</span><strong>$`),ml=J(`<p class=muted>loading transcript…`),hl=J(`<div class=widget-block>`),gl=J(`<li> `),_l=J(`<button type=button class=agent-chip title="view this subagent's session"><span></span><span class=task> — `),vl=J(`<button type=button class="btn btn-small btn-danger inline-stop">stop`),yl=J(`<span class=queued-chip><span class=queued-kind>`),bl=J(`<span class=attachment-file><span>📎 </span><span class=muted></span><button type=button aria-label="remove file attachment">×`),xl=J(`<span class=attachment-thumb><img><button type=button aria-label="remove image">×`),Sl=J(`<span class=command-description>`),Cl=J(`<button type=button role=option class=command-option><span class=command-name>/</span><span class=command-source>`),wl=J(`<button type=button class="btn btn-small btn-primary">compact`),Tl=J(`<p class="muted small">loading forkable messages…`),El=J(`<button type=button class=fork-message><span class=fork-entry-id></span><span>`),Dl=J(`<button type=button class="btn btn-small btn-primary">rename`),Ol=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],kl=10*1024*1024,Al=`.dreb-dashboard-uploads`;function jl(e){return e?`${e.provider}/${e.id}`:`—`}function Ml(e){if(!e)return`—`;let t=`${e.provider}/${e.id}`;return e.name?`${t} — ${e.name}`:t}function Nl(e){return e<1e3?e.toString():e<1e4?`${(e/1e3).toFixed(1)}k`:e<1e6?`${Math.round(e/1e3)}k`:e<1e7?`${(e/1e6).toFixed(1)}M`:`${Math.round(e/1e6)}M`}function Pl(e){return e.replace(/^\/home\/[^/]+/,`~`)}function Fl(e,t){return`${e.replace(/\/+$/,``)}/${t}`}function Il(e){let t=e.trim().replace(/[\\/\0]/g,`_`);return t&&t!==`.`&&t!==`..`?t:`upload.bin`}function Ll(e,t){return`${new Date().toISOString().replace(/[:.]/g,`-`)}-${t+1}-${Il(e.name||`upload.bin`)}`}function Rl(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${(e/(1024*1024*1024)).toFixed(1)} GB`}function zl(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function Bl(e){let t=new Map;for(let n of e){let e=t.get(n.provider)??[];e.push(n),t.set(n.provider,e)}return[...t.entries()].map(([e,t])=>({provider:e,models:t}))}function Vl(e){e.style.height=`auto`;let t=Math.max(120,Math.floor((window.innerHeight||800)*.4)),n=Math.min(e.scrollHeight,t);n>0&&(e.style.height=`${n}px`),e.style.overflowY=e.scrollHeight>t?`auto`:`hidden`}function Hl(e){let[t,n]=k(e.request.prefill??``),r=t=>e.onRespond({type:`extension_ui_response`,id:e.request.id,...t});return U(nt,{get title(){return e.request.title},onDismiss:()=>r({cancelled:!0}),get actions(){return U(G,{get when(){return e.request.method!==`select`},get children(){return[(()=>{var e=lc();return e.$$click=()=>r({cancelled:!0}),e})(),U(G,{get when(){return e.request.method===`confirm`},get children(){var e=uc();return e.$$click=()=>r({confirmed:!0}),e}}),U(G,{get when(){return e.request.method===`input`||e.request.method===`editor`},get children(){var e=dc();return e.$$click=()=>r({value:t()}),e}})]}})},get children(){return[U(G,{get when(){return e.request.message},get children(){var t=ac();return X(t,()=>e.request.message),t}}),U(G,{get when(){return e.request.method===`select`},get children(){var t=oc();return X(t,U(W,{get each(){return e.request.options??[]},children:e=>(()=>{var t=fc();return t.$$click=()=>r({value:e}),X(t,e),t})()})),t}}),U(G,{get when(){return e.request.method===`input`},get children(){var r=sc(),i=r.firstChild;return i.$$input=e=>n(e.currentTarget.value),j(()=>Y(i,`placeholder`,e.request.placeholder)),j(()=>i.value=t()),r}}),U(G,{get when(){return e.request.method===`editor`},get children(){var e=cc(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e}})]}})}function Ul(e){let t=()=>e.request.options??[],n=()=>e.request.allowFreeText!==!1,r=()=>e.request.multiSelect===!0&&t().length>0,[i,a]=k([]),[o,s]=k(``),c=t=>e.onRespond({type:`extension_ui_response`,id:e.request.id,...t}),l=e=>{r()?a(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]):a([e])},u=()=>{let e=o().trim();return{selected:i(),customText:e||void 0}},d=()=>u().selected.length>0||u().customText!==void 0,f=()=>{d()&&c(u())},p=()=>{e.stopping||e.onStop()},m=e=>{e.key===`Escape`&&(e.preventDefault(),p())};R(()=>window.addEventListener(`keydown`,m)),z(()=>window.removeEventListener(`keydown`,m));let h=typeof e.request.expiresAt==`number`?e.request.expiresAt:e.request.timeout&&e.request.timeout>0?Date.now()+e.request.timeout:void 0,g=()=>h===void 0?0:Math.max(0,Math.ceil((h-Date.now())/1e3)),[_,v]=k(g());if(h!==void 0){let e,t=()=>{let t=g();v(t),t<=0&&(e!==void 0&&clearInterval(e),e=void 0,p())};R(()=>{t(),h>Date.now()&&(e=setInterval(t,1e3))}),z(()=>{e!==void 0&&clearInterval(e)})}return(()=>{var a=_c(),c=a.firstChild,u=c.nextSibling,m=u.firstChild,g=m.nextSibling;return X(c,()=>e.request.title,null),X(c,U(G,{when:h!==void 0,get children(){var e=pc(),t=e.firstChild.nextSibling;return t.nextSibling,X(e,_,t),e}}),null),X(a,U(G,{get when(){return e.request.question},get children(){return U(ys,{get text(){return e.request.question??``},class:`ask-inline-question markdown-body`})}}),u),X(a,U(G,{get when(){return t().length>0},get children(){var n=mc();return n.firstChild,X(n,U(W,{get each(){return t()},children:t=>(()=>{var n=vc(),a=n.firstChild,o=a.nextSibling;return a.addEventListener(`change`,()=>l(t)),X(o,t),j(o=>{var s=!!i().includes(t),c=r()?`checkbox`:`radio`,l=`ask-${e.request.id}`;return s!==o.e&&n.classList.toggle(`selected`,o.e=s),c!==o.t&&Y(a,`type`,o.t=c),l!==o.a&&Y(a,`name`,o.a=l),o},{e:void 0,t:void 0,a:void 0}),j(()=>a.checked=i().includes(t)),n})()}),null),n}}),u),X(a,U(G,{get when(){return n()},get children(){var n=gc(),r=n.firstChild;return X(r,()=>t().length>0?`Or type your own answer`:`Your answer`),X(n,U(G,{get when(){return e.request.multiline},get fallback(){return(()=>{var t=yc();return t.$$input=e=>s(e.currentTarget.value),j(()=>Y(t,`id`,`ask-custom-${e.request.id}`)),j(()=>t.value=o()),t})()},get children(){var t=hc();return t.$$input=e=>s(e.currentTarget.value),j(()=>Y(t,`id`,`ask-custom-${e.request.id}`)),j(()=>t.value=o()),t}}),null),j(()=>Y(r,`for`,`ask-custom-${e.request.id}`)),n}}),u),m.$$click=p,X(m,()=>e.stopping?`stopping…`:`■ stop agent`),g.$$click=f,j(t=>{var n=e.request.title,r=e.stopping,i=!d();return n!==t.e&&Y(a,`aria-label`,t.e=n),r!==t.t&&(m.disabled=t.t=r),i!==t.a&&(g.disabled=t.a=i),t},{e:void 0,t:void 0,a:void 0}),a})()}function Wl(e){let t=(e,t)=>(()=>{var n=xc(),r=n.firstChild;return X(r,e),X(n,U(G,{get when(){return t.length>0},get fallback(){return Sc()},get children(){var e=bc();return X(e,t),e}}),null),n})();return U(nt,{title:`loaded context`,get onDismiss(){return e.onClose},get children(){return[U(G,{get when(){return e.error},get children(){var t=Cc();return X(t,()=>e.error),t}}),U(G,{get when(){return e.resources},get fallback(){return wc()},children:e=>(()=>{var n=Ec();return X(n,()=>t(`context files`,e().contextFiles.map(e=>(()=>{var t=Dc();return X(t,()=>Pl(e.path)),j(()=>Y(t,`title`,e.path)),t})())),null),X(n,()=>t(`skills`,e().skills.map(e=>(()=>{var t=kc(),n=t.firstChild;return X(n,()=>e.name),X(t,U(G,{get when(){return e.description},get children(){var t=Oc();return t.firstChild,X(t,()=>e.description,null),t}}),null),t})())),null),X(n,()=>t(`extensions`,e().extensions.map(e=>(()=>{var t=Ac(),n=t.firstChild,r=n.nextSibling;return r.firstChild,X(n,()=>e.name??`extension`),X(r,()=>Pl(e.path),null),j(()=>Y(t,`title`,e.path)),t})())),null),X(n,()=>t(`prompt templates`,e().promptTemplates.map(e=>(()=>{var t=Dc();return X(t,()=>e.name),t})())),null),X(n,U(G,{get when(){return e().systemPromptPresent},get children(){return Tc()}}),null),n})()})]}})}function Gl(e){let[t,n]=k([]),[r,i]=k(``),[a,o]=k((e.state?.scopedModels?.length??0)>0?`scoped`:`all`),[s,c]=k();R(async()=>{try{let{models:t}=await Q.models(e.sessionKey);n(t)}catch(e){c(e instanceof Error?e.message:String(e))}});let l=N(()=>(e.state?.scopedModels??[]).map(e=>({provider:e.provider,id:e.id,name:e.name,reasoning:e.reasoning}))),u=()=>l().length>0,d=()=>a()===`scoped`&&u()?l():t(),f=N(()=>{let e=r().toLowerCase();return Bl(d().filter(t=>!e||zl(t,e)).slice(0,100))}),p=t=>e.state?.model?.provider===t.provider&&e.state?.model?.id===t.id;async function m(t){try{let n=await Q.setModel(e.sessionKey,t.provider,t.id);e.onSelected(n),e.onClose()}catch(e){c(e instanceof Error?e.message:String(e))}}return U(nt,{title:`select model`,get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[U(G,{get when(){return u()},get children(){var e=jc(),t=e.firstChild,n=t.nextSibling;return t.$$click=()=>o(`scoped`),n.$$click=()=>o(`all`),j(e=>{var r=a()===`scoped`,i=a()===`scoped`,o=a()===`all`,s=a()===`all`;return r!==e.e&&Y(t,`aria-selected`,e.e=r),i!==e.t&&t.classList.toggle(`selected`,e.t=i),o!==e.a&&Y(n,`aria-selected`,e.a=o),s!==e.o&&n.classList.toggle(`selected`,e.o=s),e},{e:void 0,t:void 0,a:void 0,o:void 0}),e}}),(()=>{var e=Mc(),t=e.firstChild;return t.$$input=e=>i(e.currentTarget.value),j(()=>t.value=r()),e})(),U(G,{get when(){return s()},get children(){var e=Cc();return X(e,s),e}}),(()=>{var e=Nc();return X(e,U(G,{get when(){return f().length>0},get fallback(){return Pc()},get children(){return U(W,{get each(){return f()},children:e=>(()=>{var t=Fc(),n=t.firstChild;return X(n,()=>e.provider),X(t,U(W,{get each(){return e.models},children:e=>(()=>{var t=Rc(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling;return t.$$click=()=>m(e),X(n,()=>p(e)?`✓`:``),X(r,()=>e.id),X(t,U(G,{get when(){return e.name},get children(){var t=Ic();return X(t,()=>e.name),t}}),i),X(i,()=>e.provider),X(t,U(G,{get when(){return e.reasoning},get children(){return Lc()}}),null),j(n=>{var r=!!p(e),i=Ml(e);return r!==n.e&&t.classList.toggle(`current`,n.e=r),i!==n.t&&Y(t,`title`,n.t=i),n},{e:void 0,t:void 0}),t})()}),null),t})()})}})),e})()]}})}function Kl(e){let t=()=>e.store.sessions[e.sessionKey],n=N(()=>e.store.fleet().runtimes.find(t=>t.key===e.sessionKey)),[r,i]=k(ec(e.sessionKey)??``),[a,o]=k(`steer`),[s,c]=k(!1),[l,u]=k(!1),[d,f]=k(!1),[p,m]=k(!1),[h,g]=k(!1),[_,v]=k(!1),[y,b]=k(!1),[x,S]=k(!1),[C,w]=k(!1),[T,E]=k(!1),[D,O]=k(!1),[A,P]=k(),[F,I]=k(0),[L,ee]=k(),[te,ne]=k(),[re,ie]=k(),[ae,B]=k(),[oe,V]=k([]),[se,H]=k(!1),[ce,le]=k(0),[ue,de]=k(),[fe,pe]=k(),[me,he]=k({steering:[],followUp:[]}),[ge,_e]=k([]),[ve,ye]=k([]),[be,xe]=k(),[Se,Ce]=k(!1),[we,Te]=k([]),[Ee,K]=k(),[De,Oe]=k(!1),[ke,J]=k(),Ae,Me,Ne,Fe,Ie,Le,Re=!1,ze=()=>t()?.streaming??!1,Be=()=>t()?.compacting??!1,Ve=()=>(t()?.statusEntries??[]).some(e=>e.key===`paused`),He=()=>Object.values(t()?.backgroundAgents??{}).some(e=>e.status===`running`),Ue=()=>ze()||Be()||Ve()||He(),We=oo({scroller:()=>Ae});async function Ge(t=!1){let[n,r,i]=await Promise.allSettled([Q.stats(e.sessionKey),Q.performance(e.sessionKey),Q.branch(e.sessionKey)]),a=t?await Promise.allSettled([Q.dailyCost()]):void 0;if(Re)return;n.status===`fulfilled`&&ee(n.value),r.status===`fulfilled`&&ne(r.value),i.status===`fulfilled`&&ie(i.value.branch),a?.[0]?.status===`fulfilled`&&B(a[0].value.cost);let o=[n,r,i,...a??[]].find(e=>e.status===`rejected`);o?.status===`rejected`&&P(o.reason instanceof Error?o.reason.message:String(o.reason))}async function Ke(){try{let{commands:t}=await Q.commands(e.sessionKey);Re||V(t)}catch(e){Re||P(e instanceof Error?e.message:String(e))}}async function qe(){E(!0),pe(void 0);try{de(await Q.resources(e.sessionKey))}catch(e){pe(e instanceof Error?e.message:String(e))}}async function Je(){try{he(await Q.pending(e.sessionKey))}catch(e){P(e instanceof Error?e.message:String(e))}}let Ye=new Set,Xe=async t=>{let n=typeof t.id==`string`?t.id:void 0;if(!(n&&Ye.has(n))){n&&Ye.add(n);try{await Q.extensionUiResponse(e.sessionKey,t),n&&e.store.resolveUiRequest(e.sessionKey,n)}catch(e){P(e instanceof Error?e.message:String(e))}finally{n&&Ye.delete(n)}}};function Ze(e){let t=atob(e);return Uint8Array.from(t,e=>e.charCodeAt(0))}function Qe(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode(...e.subarray(r,r+n));return btoa(t)}async function $e(e){return Qe(new Uint8Array(await e.arrayBuffer()))}function et(e){URL.revokeObjectURL(e.previewUrl)}function rt(){for(let e of ge())et(e);_e([])}function it(e){_e(t=>{let n=t[e];return n&&et(n),t.filter((t,n)=>n!==e)})}function at(e){if(ge().reduce((e,t)=>e+t.size,0)+e>Dn)throw Error(`Images too large: total inline images exceed ${Rl(Dn)}`)}function ot(e,t,n){return{blob:e,mimeType:t,fileName:n,size:e.size,previewUrl:URL.createObjectURL(e)}}function Z(e,t,n){let r=Ze(e.data);return ot(new Blob([r],{type:e.mimeType}),e.mimeType,`queued-image-${t+1}-${n+1}`)}function st(e){return[...e.steeringMessages??e.steering.map(e=>({text:e})),...e.followUpMessages??e.followUp.map(e=>({text:e}))]}function ct(e){let t=[];for(let[n,r]of e.entries())for(let[e,i]of(r.images??[]).entries())t.push(Z(i,n,e));return t}function lt(e){for(let t of e)et(t)}function ut(e){let t=e.map(e=>e.text).join(`
|
|
66
|
+
`]})),t})()}function Ms(e){if(e.toolName!==`edit`)return;let t=e.details?.diff;return typeof t==`string`?t:void 0}var Ns=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]),Ps=/^[0-9a-f]{64}$/,Fs=1024*1024;function Is(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:e>=1024?`${Math.ceil(e/1024)} KB`:`${e} B`}var Ls={alt:`Tool result`,originalAriaLabel:`Original tool-result image`,enlargedAlt:`Enlarged tool-result preview`},Rs={alt:`Uploaded image`,originalAriaLabel:`Original uploaded image`,enlargedAlt:`Enlarged uploaded-image preview`};function zs(e){let[t,n]=k(),[r,i]=k(),[a,o]=k(),[s,c]=k(!1),l=t=>lt(e.scope.runtimeKey,e.image.id,t,e.scope.agentId),u=e=>{let t=l(e);if(!t){o(`Invalid image reference`);return}o(void 0),i(e),n(t)};M(()=>{let e=Ao();c(!1),o(void 0),e===`previews`?u(`preview`):e===`originals`?u(`original`):(n(void 0),i(void 0))});let d=()=>{e.image.size>Fs&&!window.confirm(`Load the ${Is(e.image.size)} original image? This may use significant data.`)||u(`original`)},f=e=>{e.key===`Escape`&&c(!1)};return R(()=>window.addEventListener(`keydown`,f)),z(()=>window.removeEventListener(`keydown`,f)),(()=>{var l=Ho(),f=l.firstChild,p=f.firstChild,m=p.firstChild;return X(l,U(G,{get when(){return t()},get fallback(){return(()=>{var t=Uo(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return X(n,()=>e.image.mimeType.replace(`image/`,``).toUpperCase(),r),X(n,()=>Is(e.image.size),null),i.$$click=()=>u(`preview`),X(i,()=>a()?`retry preview`:`load preview`),t})()},children:t=>(()=>{var a=Wo(),s=a.firstChild;return a.$$click=()=>r()===`preview`&&c(!0),s.addEventListener(`error`,()=>{o(`Could not load ${r()??`image`}`),n(void 0),i(void 0)}),j(n=>{var i=r()!==`preview`,o=r()===`preview`?`Enlarge image preview`:e.labels.originalAriaLabel,c=e.labels.alt,l=t();return i!==n.e&&(a.disabled=n.e=i),o!==n.t&&Y(a,`aria-label`,n.t=o),c!==n.a&&Y(s,`alt`,n.a=c),l!==n.o&&Y(s,`src`,n.o=l),n},{e:void 0,t:void 0,a:void 0,o:void 0}),a})()}),f),X(p,()=>e.image.mimeType.replace(`image/`,``).toUpperCase(),m),X(p,()=>Is(e.image.size),null),X(f,U(G,{get when(){return r()!==`original`},get children(){var t=Bo();return t.firstChild,t.$$click=d,X(t,()=>Is(e.image.size),null),t}}),null),X(l,U(G,{get when(){return a()},children:e=>(()=>{var t=Go();return X(t,e),t})()}),null),X(l,U(G,{get when(){return q(()=>!!(s()&&r()===`preview`))()&&t()},get children(){var n=Vo(),r=n.firstChild,i=r.nextSibling.firstChild,a=i.nextSibling;return r.$$click=()=>c(!1),a.$$click=()=>c(!1),j(n=>{var r=t(),a=e.labels.enlargedAlt;return r!==n.e&&Y(i,`src`,n.e=r),a!==n.t&&Y(i,`alt`,n.t=a),n},{e:void 0,t:void 0}),n}}),null),l})()}function Bs(e){let t=()=>e.images.filter(e=>Ns.has(e.mimeType)&&Ps.test(e.id)&&Number.isSafeInteger(e.size)&&e.size>0);return U(G,{get when(){return t().length>0},get children(){var n=Ko();return X(n,U(W,{get each(){return t()},children:t=>U(zs,{image:t,get scope(){return e.scope},get labels(){return e.labels}})})),n}})}function Vs(e){let[t,n]=k(!1),r=()=>e.text.length>hs;M(()=>{r()||n(!1)});let i=()=>r()&&!t()?e.text.slice(-204800):e.text;return[U(G,{get when(){return q(()=>!!r())()&&!t()},get children(){var t=qo(),r=t.firstChild.nextSibling,i=r.nextSibling.nextSibling,a=i.nextSibling.nextSibling,o=a.firstChild.nextSibling;return o.nextSibling,X(t,()=>vs(hs),r),X(t,()=>vs(e.text.length),i),a.$$click=()=>n(!0),X(a,()=>vs(e.text.length),o),t}}),U(G,{get when(){return e.markdown},get fallback(){return U(Cs,{get text(){return i()},get language(){return e.language},get autoScroll(){return e.autoScroll},get throttle(){return e.throttle}})},get children(){return U(ys,{get text(){return i()},get throttle(){return e.throttle}})}})]}function Hs(e){let t=()=>Os(e.entry),n=()=>e.entry.args,r=()=>{if(e.entry.toolName===`suggest_next`)return e.entry.details},i=()=>Ms(e.entry),a=()=>e.entry.toolName===`write`&&!e.entry.resultText&&typeof n()?.content==`string`?String(n()?.content):e.entry.resultText,o=()=>{if(e.entry.toolName===`read`||e.entry.toolName===`write`&&!e.entry.resultText)return bs(xs(n()))},s=()=>ks.has(e.entry.toolName)&&e.entry.status!==`error`,c=()=>e.entry.toolName===`bash`||e.entry.toolName===`bash (user)`,l=()=>As(e.entry),u=()=>Po(e.entry.toolName),d=e.entry.toolName!==`ask_user`,[f,p]=k(u()||e.entry.status===`running`&&d),m=e.entry.status===`running`,h=!1,g=!1,_,v=e=>{f()!==e&&(g=!0,p(e),_&&clearTimeout(_),_=setTimeout(()=>{g=!1,_=void 0},0))};return M(()=>{let t=e.entry.status===`running`,n=u();t&&d?(h=!1,v(!0)):m?(h=!1,v(n)):h||v(n),m=t}),z(()=>{_&&clearTimeout(_)}),(()=>{var u=Xo(),m=u.firstChild.firstChild,v=m.nextSibling,y=v.nextSibling;return u.addEventListener(`toggle`,t=>{let n=t.currentTarget.open;if(g){p(n);return}if(e.entry.status===`running`&&d&&!n){g=!0,t.currentTarget.open=!0,p(!0),_&&clearTimeout(_),_=setTimeout(()=>{g=!1,_=void 0},0);return}h=!0,p(n)}),X(m,()=>e.entry.toolName),X(v,()=>ws(e.entry)),X(y,()=>t().text),X(u,U(G,{get when(){return f()},get children(){return[U(G,{get when(){return e.entry.toolName===`bash`||e.entry.toolName===`bash (user)`},get children(){var e=Jo(),t=e.firstChild;return X(t,()=>String(n()?.command??``)),e}}),U(W,{get each(){return l()},children:e=>(()=>{var t=Zo(),n=t.firstChild;return X(n,()=>e.label),X(t,U(G,{get when(){return e.markdown},get fallback(){return U(Cs,{get text(){return e.text},get language(){return e.language}})},get children(){return U(ys,{get text(){return e.text}})}}),null),t})()}),U(G,{get when(){return e.entry.images?.length},get children(){var t=Yo();return X(t,U(Bs,{get images(){return e.entry.images},get scope(){return e.imageScope},labels:Ls})),t}}),U(Ee,{get children(){return[U(K,{get when(){return r()},children:e=>(()=>{var t=Qo(),n=t.firstChild,r=n.firstChild.nextSibling;return X(t,U(G,{get when(){return e().summary},get children(){return U(ys,{get text(){return e().summary}})}}),n),X(r,()=>e().suggestion),t})()}),U(K,{get when(){return i()},children:e=>(()=>{var t=Yo();return X(t,U(js,{get text(){return e()}})),t})()}),U(K,{get when(){return a()},children:t=>(()=>{var n=Yo();return X(n,U(Vs,{get text(){return t()},get language(){return o()},get markdown(){return s()},get autoScroll(){return c()},get throttle(){return e.entry.status===`running`}})),n})()})]}})]}}),null),j(e=>{var n=f(),r=`tool-status ${t().cls}`;return n!==e.e&&(u.open=e.e=n),r!==e.t&&je(y,e.t=r),e},{e:void 0,t:void 0}),u})()}function Us(e){let[t,n]=k(`idle`);async function r(){if(e.text){try{await navigator.clipboard.writeText(e.text),n(`copied`)}catch{n(`failed`)}setTimeout(()=>n(`idle`),1200)}}return(()=>{var n=$o();return n.$$click=r,X(n,(()=>{var e=q(()=>t()===`copied`);return()=>e()?`copied`:t()===`failed`?`copy failed`:`copy`})()),j(()=>n.disabled=!e.text),n})()}function Ws(e){let t=()=>e.entry.blocks.filter(t=>e.entry.streaming||e.entry.stopReason!==`error`||t.kind!==`thinking`||t.text.trim().length>0);return(()=>{var n=ns(),r=n.firstChild,i=r.firstChild;return X(i,()=>e.who),X(r,U(G,{get when(){return e.entry.model},get children(){return[es(),(()=>{var t=zo();return X(t,()=>e.entry.model),t})()]}}),null),X(r,U(G,{get when(){return e.entry.streaming},get children(){return[es(),ts()]}}),null),X(r,U(Us,{get text(){return Es(e.entry)}}),null),X(n,U(W,{get each(){return t()},children:(n,r)=>U(G,{get when(){return n.kind===`thinking`},get fallback(){return(()=>{var i=is();return X(i,U(ys,{get text(){return n.text},get classList(){return{"streaming-cursor":e.entry.streaming&&r()===t().length-1}},get throttle(){return e.entry.streaming}})),i})()},get children(){var t=rs();return t.firstChild,X(t,U(ys,{get text(){return n.text},class:`thinking-body markdown-body`,get throttle(){return e.entry.streaming}}),null),j(()=>t.open=ko()),t}})}),null),X(n,U(G,{get when(){return q(()=>e.entry.stopReason===`error`)()&&e.entry.errorMessage},children:e=>(()=>{var t=as();return t.firstChild,X(t,e,null),t})()}),null),n})()}function Gs(e,t){return e?.kind===`entry`&&e.entry===t}function Ks(e){let[t,n]=k(e);return{kind:`assistant-turn`,lead:e[0],entries:t,setEntries:n}}function qs(e,t=[]){let n=[],r=0;for(;r<e.length;){let i=e[r];if(i?.kind===`assistant`){let a=[i];for(r+=1;e[r]?.kind===`tool`;)a.push(e[r]),r+=1;let o=t[n.length];if(o?.kind===`assistant-turn`&&o.lead===i){let e=L(o.entries);(e.length!==a.length||a.some((t,n)=>t!==e[n]))&&o.setEntries(a),n.push(o)}else n.push(Ks(a));continue}if(i){let e=t[n.length];n.push(Gs(e,i)?e:{kind:`entry`,entry:i})}r+=1}return n}function Js(e){return U(Ee,{get children(){return[U(K,{get when(){return e.entry.kind===`user`},get children(){var t=os(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return X(n,U(G,{get when(){return Ds(e.entry.text)},children:e=>(()=>{var t=ls();return t.firstChild,X(t,e,null),t})()}),r),X(n,U(Us,{get text(){return Es(e.entry)}}),r),X(r,()=>e.userLabel),X(i,()=>e.entry.text),X(t,U(G,{get when(){return e.entry.images?.length},get children(){return U(Bs,{get images(){return e.entry.images},get scope(){return e.imageScope},labels:Rs})}}),null),t}}),U(K,{get when(){return e.entry.kind===`agent-result`},get children(){return U(Ys,{get entry(){return e.entry}})}}),U(K,{get when(){return e.entry.kind===`assistant`},get children(){return U(Ws,{get entry(){return e.entry},get who(){return e.who}})}}),U(K,{get when(){return e.entry.kind===`tool`},get children(){return U(Hs,{get entry(){return e.entry},get imageScope(){return e.imageScope}})}}),U(K,{get when(){return e.entry.kind===`summary`},get children(){var t=ss(),n=t.firstChild.firstChild,r=n.nextSibling;return X(n,()=>e.entry.label===`compaction`?`context compacted`:`branch summary`,null),X(n,U(G,{get when(){return e.entry.tokensBefore},get children(){return[` `,`— `,q(()=>e.entry.tokensBefore.toLocaleString()),` tokens summarized`]}}),null),X(r,()=>e.entry.text),t}}),U(K,{get when(){return e.entry.kind===`custom`},get children(){var t=cs(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return X(r,()=>e.entry.tag),X(i,()=>e.entry.text),t}})]}})}function Ys(e){return(()=>{var t=ds(),n=t.firstChild,r=n.firstChild;return r.firstChild,X(r,U(G,{get when(){return e.entry.header},get children(){var t=us();return X(t,()=>e.entry.header),t}}),null),X(n,U(ys,{get text(){return e.entry.text},class:`entry-body markdown-body`}),null),t})()}function Xs(e){let t=()=>e.who??`dreb`,n=()=>e.userLabel??`you`,r=()=>e.imageScope??{runtimeKey:``},i=N(t=>qs(e.entries,t)),[a,o]=k(150),s;M(()=>{let t=e.resetKey??e.entries;t!==s&&(s=t,o(150))});let c=N(()=>{let e=i(),t=a();return e.length>t?e.slice(-t):e}),l=()=>Math.max(0,i().length-c().length);return[U(G,{get when(){return l()>0},get children(){var e=fs(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;return r.nextSibling,t.$$click=()=>o(Math.min(i().length,a()+150)),X(t,()=>Math.min(150,l()),n),X(t,l,r),e}}),U(W,{get each(){return c()},children:e=>U(Ee,{get children(){return[U(K,{get when(){return e.kind===`assistant-turn`},get children(){var i=ps();return X(i,U(W,{get each(){return e.entries()},children:e=>U(Js,{entry:e,get who(){return t()},get userLabel(){return n()},get imageScope(){return r()}})})),i}}),U(K,{get when(){return e.kind===`entry`},get children(){return U(Js,{get entry(){return e.entry},get who(){return t()},get userLabel(){return n()},get imageScope(){return r()}})}})]}})})]}Ae([`click`]);function Zs(e){return typeof DOMException<`u`&&e instanceof DOMException&&e.name===`AbortError`?!0:typeof e==`object`&&!!e&&`name`in e&&e.name===`AbortError`}var Qs=new Map,$s=new Map;function ec(e){return $s.get(e)}function tc(e,t){$s.set(e,t)}function nc(e){return Qs.get(e)??[]}function rc(e,t){let n=Qs.get(e)??[];n.push(t),Qs.set(e,n.slice(-100))}function ic(e){Qs.delete(e),$s.delete(e)}var ac=J(`<p style=margin-bottom:12px>`),oc=J(`<div class=recent-projects>`),sc=J(`<div class=field><input type=text>`),cc=J(`<div class=field><textarea rows=8>`),lc=J(`<button type=button class="btn btn-small">cancel`),uc=J(`<button type=button class="btn btn-small btn-primary">confirm`),dc=J(`<button type=button class="btn btn-small btn-primary">submit`),fc=J(`<button type=button>`),pc=J(`<span class=ask-inline-countdown> (auto-stops in <!>s)`),mc=J(`<fieldset class=ask-options><legend class=ask-options-legend>Answer options`),hc=J(`<textarea rows=5>`),gc=J(`<div class=field><label class=ask-custom-label>`),_c=J(`<section class=ask-inline><header class=ask-inline-header></header><div class=ask-inline-actions><button type=button class="btn btn-small btn-danger"></button><button type=button class="btn btn-small btn-primary">submit`),vc=J(`<label class=ask-option><input><span>`),yc=J(`<input type=text placeholder="Type a different answer…">`),bc=J(`<ul>`),xc=J(`<section class=context-section><h3>`),Sc=J(`<p class="muted small">none`),Cc=J(`<p class=pair-error>`),wc=J(`<p class="muted small">loading…`),Tc=J(`<p class="muted small">system prompt: custom`),Ec=J(`<div class=context-modal-body>`),Dc=J(`<li>`),Oc=J(`<span class=muted> — `),kc=J(`<li><span>`),Ac=J(`<li><span></span><span class=muted> — `),jc=J(`<div class=model-scope-tabs role=tablist aria-label="model scope"><button type=button role=tab>scoped</button><button type=button role=tab>all`),Mc=J(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),Nc=J(`<div class="model-list session-model-list"style=max-height:320px>`),Pc=J(`<p class="muted small">No matching models.`),Fc=J(`<section class=model-provider-group><div class=model-provider-heading>`),Ic=J(`<span class=model-name>`),Lc=J(`<span class=model-reasoning>think`),Rc=J(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),zc=J(`<span class=project>`),Bc=J(`<output class=switcher><span class=label>ctx</span> `),Vc=J(`<span class=right><button type=button class="switcher optional model-switcher"><span class=label>model</span> <span class=value></span></button><button type=button class="switcher optional"><span class=label>think</span> </button><button type=button class=switcher>⋯`),Hc=J(`<div class=stats-popover>`),Uc=J(`<div class="session-bar-inner session-info-bar"><span class=session-info-left></span><button type=button class="session-info-right stats-trigger">`),Wc=J(`<button type=button class="btn btn-small">model: `),Gc=J(`<button type=button class="btn btn-small">think: `),Kc=J(`<div class=session-bar-inner style=justify-content:flex-end;gap:8px><a class="btn btn-small">export HTML</a><button type=button class="btn btn-small">compact now</button><button type=button class="btn btn-small">expand tools</button><button type=button class="btn btn-small">collapse tools</button><button type=button class="btn btn-small">rename</button><button type=button class="btn btn-small">fork</button><button type=button class="btn btn-small">loaded context</button><button type=button class="btn btn-small btn-danger">`),qc=J(`<div class=container style=padding-top:8px><div class=fallback-banner><span>◆ </span><button type=button class="btn btn-small dismiss">dismiss`),Jc=J(`<span class=dock-collapsed-hint>`),Yc=J(`<details class=tasks><summary>tasks — <!> of <!> done</summary><ul>`),Xc=J(`<details class="tasks subagents"><summary>subagents — <!> running · <!> done</summary><ul class=subagent-list>`),Zc=J(`<span class=working>● working`),Qc=J(`<span class=error>`),$c=J(`<button type=button class="btn btn-small btn-danger">`),el=J(`<div class=status-line>`),tl=J(`<div class=queued-message-row><button type=button class="btn btn-small">restore to composer`),nl=J(`<div class=attachment-strip>`),rl=J(`<div class=command-popover role=listbox id=command-listbox aria-label="slash commands">`),il=J(`<span class=mode-toggle role=radiogroup aria-label="send mode"><button type=button title="Deliver now — injected into the running turn">steer</button><button type=button title="Queue — delivered after the agent finishes">follow-up`),al=J(`<button type=button class=ghost-suggest>suggested: <code></code> <span class=key>tap`),ol=J(`<div class=dock-inner><div class=composer><textarea></textarea><div class=composer-row><input type=file multiple class=hidden-file-input><input type=file accept=image/* multiple class=hidden-file-input><button type=button class="btn btn-small"title="attach file (uploads to workspace and sends path)">📎 file</button><button type=button class="btn btn-small"title="attach image inline">🖼 photo</button><button type=button class="btn btn-primary btn-small send">send ↵`),sl=J(`<p>Summarize older context to free window space. The transcript keeps a summary card.`),cl=J(`<div class=fork-message-list>`),ll=J(`<div class=session-screen><header class=session-bar><div class="session-bar-inner session-bar-main"><a class=back href=#/>← fleet</a><span class=title></span><button type=button class=chrome-toggle></button></div></header><main class=chat><div class=chat-inner></div></main><footer class=dock><div class=dock-collapse-row><button type=button class=chrome-toggle>`),ul=J(`<span>`),dl=J(`<p class="muted small">loading stats…`),fl=J(`<div class=stats-grid><span>user messages</span><strong></strong><span>assistant messages</span><strong></strong><span>tool calls/results</span><strong>/</strong><span>input/output</span><strong> / </strong><span>cache read/write</span><strong> / </strong><span>total tokens</span><strong></strong><span>cost</span><strong>$`),pl=J(`<p class=muted>loading transcript…`),ml=J(`<div class=widget-block>`),hl=J(`<li> `),gl=J(`<li><button type=button class=agent-chip title="view this subagent's session"><span></span><span class=task> — `),_l=J(`<button type=button class="btn btn-small btn-danger inline-stop">stop`),vl=J(`<span class=queued-chip><span class=queued-kind>`),yl=J(`<span class=attachment-file><span>📎 </span><span class=muted></span><button type=button aria-label="remove file attachment">×`),bl=J(`<span class=attachment-thumb><img><button type=button aria-label="remove image">×`),xl=J(`<span class=command-description>`),Sl=J(`<button type=button role=option class=command-option><span class=command-name>/</span><span class=command-source>`),Cl=J(`<button type=button class="btn btn-small btn-primary">compact`),wl=J(`<p class="muted small">loading forkable messages…`),Tl=J(`<button type=button class=fork-message><span class=fork-entry-id></span><span>`),El=J(`<button type=button class="btn btn-small btn-primary">rename`),Dl=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],Ol=10*1024*1024,kl=`.dreb-dashboard-uploads`;function Al(e){return e?`${e.provider}/${e.id}`:`—`}function jl(e){if(!e)return`—`;let t=`${e.provider}/${e.id}`;return e.name?`${t} — ${e.name}`:t}function Ml(e){return e<1e3?e.toString():e<1e4?`${(e/1e3).toFixed(1)}k`:e<1e6?`${Math.round(e/1e3)}k`:e<1e7?`${(e/1e6).toFixed(1)}M`:`${Math.round(e/1e6)}M`}function Nl(e){return e.replace(/^\/home\/[^/]+/,`~`)}function Pl(e,t){return`${e.replace(/\/+$/,``)}/${t}`}function Fl(e){let t=e.trim().replace(/[\\/\0]/g,`_`);return t&&t!==`.`&&t!==`..`?t:`upload.bin`}function Il(e,t){return`${new Date().toISOString().replace(/[:.]/g,`-`)}-${t+1}-${Fl(e.name||`upload.bin`)}`}function Ll(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${(e/(1024*1024*1024)).toFixed(1)} GB`}function Rl(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function zl(e){let t=new Map;for(let n of e){let e=t.get(n.provider)??[];e.push(n),t.set(n.provider,e)}return[...t.entries()].map(([e,t])=>({provider:e,models:t}))}function Bl(e){e.style.height=`auto`;let t=Math.max(120,Math.floor((window.innerHeight||800)*.4)),n=Math.min(e.scrollHeight,t);n>0&&(e.style.height=`${n}px`),e.style.overflowY=e.scrollHeight>t?`auto`:`hidden`}function Vl(e){let[t,n]=k(e.request.prefill??``),r=t=>e.onRespond({type:`extension_ui_response`,id:e.request.id,...t});return U(nt,{get title(){return e.request.title},onDismiss:()=>r({cancelled:!0}),get actions(){return U(G,{get when(){return e.request.method!==`select`},get children(){return[(()=>{var e=lc();return e.$$click=()=>r({cancelled:!0}),e})(),U(G,{get when(){return e.request.method===`confirm`},get children(){var e=uc();return e.$$click=()=>r({confirmed:!0}),e}}),U(G,{get when(){return e.request.method===`input`||e.request.method===`editor`},get children(){var e=dc();return e.$$click=()=>r({value:t()}),e}})]}})},get children(){return[U(G,{get when(){return e.request.message},get children(){var t=ac();return X(t,()=>e.request.message),t}}),U(G,{get when(){return e.request.method===`select`},get children(){var t=oc();return X(t,U(W,{get each(){return e.request.options??[]},children:e=>(()=>{var t=fc();return t.$$click=()=>r({value:e}),X(t,e),t})()})),t}}),U(G,{get when(){return e.request.method===`input`},get children(){var r=sc(),i=r.firstChild;return i.$$input=e=>n(e.currentTarget.value),j(()=>Y(i,`placeholder`,e.request.placeholder)),j(()=>i.value=t()),r}}),U(G,{get when(){return e.request.method===`editor`},get children(){var e=cc(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e}})]}})}function Hl(e){let t=()=>e.request.options??[],n=()=>e.request.allowFreeText!==!1,r=()=>e.request.multiSelect===!0&&t().length>0,[i,a]=k([]),[o,s]=k(``),c=t=>e.onRespond({type:`extension_ui_response`,id:e.request.id,...t}),l=e=>{r()?a(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]):a([e])},u=()=>{let e=o().trim();return{selected:i(),customText:e||void 0}},d=()=>u().selected.length>0||u().customText!==void 0,f=()=>{d()&&c(u())},p=()=>{e.stopping||e.onStop()},m=e=>{e.key===`Escape`&&(e.preventDefault(),p())};R(()=>window.addEventListener(`keydown`,m)),z(()=>window.removeEventListener(`keydown`,m));let h=typeof e.request.expiresAt==`number`?e.request.expiresAt:e.request.timeout&&e.request.timeout>0?Date.now()+e.request.timeout:void 0,g=()=>h===void 0?0:Math.max(0,Math.ceil((h-Date.now())/1e3)),[_,v]=k(g());if(h!==void 0){let e,t=()=>{let t=g();v(t),t<=0&&(e!==void 0&&clearInterval(e),e=void 0,p())};R(()=>{t(),h>Date.now()&&(e=setInterval(t,1e3))}),z(()=>{e!==void 0&&clearInterval(e)})}return(()=>{var a=_c(),c=a.firstChild,u=c.nextSibling,m=u.firstChild,g=m.nextSibling;return X(c,()=>e.request.title,null),X(c,U(G,{when:h!==void 0,get children(){var e=pc(),t=e.firstChild.nextSibling;return t.nextSibling,X(e,_,t),e}}),null),X(a,U(G,{get when(){return e.request.question},get children(){return U(ys,{get text(){return e.request.question??``},class:`ask-inline-question markdown-body`})}}),u),X(a,U(G,{get when(){return t().length>0},get children(){var n=mc();return n.firstChild,X(n,U(W,{get each(){return t()},children:t=>(()=>{var n=vc(),a=n.firstChild,o=a.nextSibling;return a.addEventListener(`change`,()=>l(t)),X(o,t),j(o=>{var s=!!i().includes(t),c=r()?`checkbox`:`radio`,l=`ask-${e.request.id}`;return s!==o.e&&n.classList.toggle(`selected`,o.e=s),c!==o.t&&Y(a,`type`,o.t=c),l!==o.a&&Y(a,`name`,o.a=l),o},{e:void 0,t:void 0,a:void 0}),j(()=>a.checked=i().includes(t)),n})()}),null),n}}),u),X(a,U(G,{get when(){return n()},get children(){var n=gc(),r=n.firstChild;return X(r,()=>t().length>0?`Or type your own answer`:`Your answer`),X(n,U(G,{get when(){return e.request.multiline},get fallback(){return(()=>{var t=yc();return t.$$input=e=>s(e.currentTarget.value),j(()=>Y(t,`id`,`ask-custom-${e.request.id}`)),j(()=>t.value=o()),t})()},get children(){var t=hc();return t.$$input=e=>s(e.currentTarget.value),j(()=>Y(t,`id`,`ask-custom-${e.request.id}`)),j(()=>t.value=o()),t}}),null),j(()=>Y(r,`for`,`ask-custom-${e.request.id}`)),n}}),u),m.$$click=p,X(m,()=>e.stopping?`stopping…`:`■ stop agent`),g.$$click=f,j(t=>{var n=e.request.title,r=e.stopping,i=!d();return n!==t.e&&Y(a,`aria-label`,t.e=n),r!==t.t&&(m.disabled=t.t=r),i!==t.a&&(g.disabled=t.a=i),t},{e:void 0,t:void 0,a:void 0}),a})()}function Ul(e){let t=(e,t)=>(()=>{var n=xc(),r=n.firstChild;return X(r,e),X(n,U(G,{get when(){return t.length>0},get fallback(){return Sc()},get children(){var e=bc();return X(e,t),e}}),null),n})();return U(nt,{title:`loaded context`,get onDismiss(){return e.onClose},get children(){return[U(G,{get when(){return e.error},get children(){var t=Cc();return X(t,()=>e.error),t}}),U(G,{get when(){return e.resources},get fallback(){return wc()},children:e=>(()=>{var n=Ec();return X(n,()=>t(`context files`,e().contextFiles.map(e=>(()=>{var t=Dc();return X(t,()=>Nl(e.path)),j(()=>Y(t,`title`,e.path)),t})())),null),X(n,()=>t(`skills`,e().skills.map(e=>(()=>{var t=kc(),n=t.firstChild;return X(n,()=>e.name),X(t,U(G,{get when(){return e.description},get children(){var t=Oc();return t.firstChild,X(t,()=>e.description,null),t}}),null),t})())),null),X(n,()=>t(`extensions`,e().extensions.map(e=>(()=>{var t=Ac(),n=t.firstChild,r=n.nextSibling;return r.firstChild,X(n,()=>e.name??`extension`),X(r,()=>Nl(e.path),null),j(()=>Y(t,`title`,e.path)),t})())),null),X(n,()=>t(`prompt templates`,e().promptTemplates.map(e=>(()=>{var t=Dc();return X(t,()=>e.name),t})())),null),X(n,U(G,{get when(){return e().systemPromptPresent},get children(){return Tc()}}),null),n})()})]}})}function Wl(e){let[t,n]=k([]),[r,i]=k(``),[a,o]=k((e.state?.scopedModels?.length??0)>0?`scoped`:`all`),[s,c]=k();R(async()=>{try{let{models:t}=await Q.models(e.sessionKey);n(t)}catch(e){c(e instanceof Error?e.message:String(e))}});let l=N(()=>(e.state?.scopedModels??[]).map(e=>({provider:e.provider,id:e.id,name:e.name,reasoning:e.reasoning}))),u=()=>l().length>0,d=()=>a()===`scoped`&&u()?l():t(),f=N(()=>{let e=r().toLowerCase();return zl(d().filter(t=>!e||Rl(t,e)).slice(0,100))}),p=t=>e.state?.model?.provider===t.provider&&e.state?.model?.id===t.id;async function m(t){try{let n=await Q.setModel(e.sessionKey,t.provider,t.id);e.onSelected(n),e.onClose()}catch(e){c(e instanceof Error?e.message:String(e))}}return U(nt,{title:`select model`,get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[U(G,{get when(){return u()},get children(){var e=jc(),t=e.firstChild,n=t.nextSibling;return t.$$click=()=>o(`scoped`),n.$$click=()=>o(`all`),j(e=>{var r=a()===`scoped`,i=a()===`scoped`,o=a()===`all`,s=a()===`all`;return r!==e.e&&Y(t,`aria-selected`,e.e=r),i!==e.t&&t.classList.toggle(`selected`,e.t=i),o!==e.a&&Y(n,`aria-selected`,e.a=o),s!==e.o&&n.classList.toggle(`selected`,e.o=s),e},{e:void 0,t:void 0,a:void 0,o:void 0}),e}}),(()=>{var e=Mc(),t=e.firstChild;return t.$$input=e=>i(e.currentTarget.value),j(()=>t.value=r()),e})(),U(G,{get when(){return s()},get children(){var e=Cc();return X(e,s),e}}),(()=>{var e=Nc();return X(e,U(G,{get when(){return f().length>0},get fallback(){return Pc()},get children(){return U(W,{get each(){return f()},children:e=>(()=>{var t=Fc(),n=t.firstChild;return X(n,()=>e.provider),X(t,U(W,{get each(){return e.models},children:e=>(()=>{var t=Rc(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling;return t.$$click=()=>m(e),X(n,()=>p(e)?`✓`:``),X(r,()=>e.id),X(t,U(G,{get when(){return e.name},get children(){var t=Ic();return X(t,()=>e.name),t}}),i),X(i,()=>e.provider),X(t,U(G,{get when(){return e.reasoning},get children(){return Lc()}}),null),j(n=>{var r=!!p(e),i=jl(e);return r!==n.e&&t.classList.toggle(`current`,n.e=r),i!==n.t&&Y(t,`title`,n.t=i),n},{e:void 0,t:void 0}),t})()}),null),t})()})}})),e})()]}})}function Gl(e){let t=()=>e.store.sessions[e.sessionKey],n=N(()=>e.store.fleet().runtimes.find(t=>t.key===e.sessionKey)),[r,i]=k(ec(e.sessionKey)??``),[a,o]=k(`steer`),[s,c]=k(!1),[l,u]=k(!1),[d,f]=k(!1),[p,m]=k(!1),[h,g]=k(!1),[_,v]=k(!1),[y,b]=k(!1),[x,S]=k(!1),[C,w]=k(!1),[T,E]=k(!1),[D,O]=k(),[A,P]=k(0),[F,I]=k(),[L,ee]=k(),[te,ne]=k(),[re,ie]=k(),[ae,B]=k([]),[oe,V]=k(!1),[se,H]=k(0),[ce,le]=k(),[ue,de]=k(),[fe,pe]=k({steering:[],followUp:[]}),[me,he]=k([]),[ge,_e]=k([]),[ve,ye]=k(),[be,xe]=k(!1),[Se,Ce]=k([]),[we,Te]=k(),[Ee,K]=k(!1),[De,Oe]=k(),ke,J,Ae,Me,Ne,Fe,Ie=!1,Le=()=>t()?.streaming??!1,Re=()=>t()?.compacting??!1,ze=()=>(t()?.statusEntries??[]).some(e=>e.key===`paused`),Be=()=>Object.values(t()?.backgroundAgents??{}).some(e=>e.status===`running`),Ve=()=>Le()||Re()||ze()||Be(),He=oo({scroller:()=>ke});async function Ue(t=!1){let[n,r,i]=await Promise.allSettled([Q.stats(e.sessionKey),Q.performance(e.sessionKey),Q.branch(e.sessionKey)]),a=t?await Promise.allSettled([Q.dailyCost()]):void 0;if(Ie)return;n.status===`fulfilled`&&I(n.value),r.status===`fulfilled`&&ee(r.value),i.status===`fulfilled`&&ne(i.value.branch),a?.[0]?.status===`fulfilled`&&ie(a[0].value.cost);let o=[n,r,i,...a??[]].find(e=>e.status===`rejected`);o?.status===`rejected`&&O(o.reason instanceof Error?o.reason.message:String(o.reason))}async function We(){try{let{commands:t}=await Q.commands(e.sessionKey);Ie||B(t)}catch(e){Ie||O(e instanceof Error?e.message:String(e))}}async function Ge(){w(!0),de(void 0);try{le(await Q.resources(e.sessionKey))}catch(e){de(e instanceof Error?e.message:String(e))}}async function Ke(){try{pe(await Q.pending(e.sessionKey))}catch(e){O(e instanceof Error?e.message:String(e))}}let qe=new Set,Je=async t=>{let n=typeof t.id==`string`?t.id:void 0;if(!(n&&qe.has(n))){n&&qe.add(n);try{await Q.extensionUiResponse(e.sessionKey,t),n&&e.store.resolveUiRequest(e.sessionKey,n)}catch(e){O(e instanceof Error?e.message:String(e))}finally{n&&qe.delete(n)}}};function Ye(e){let t=atob(e);return Uint8Array.from(t,e=>e.charCodeAt(0))}function Xe(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode(...e.subarray(r,r+n));return btoa(t)}async function Ze(e){return Xe(new Uint8Array(await e.arrayBuffer()))}function Qe(e){URL.revokeObjectURL(e.previewUrl)}function $e(){for(let e of me())Qe(e);he([])}function et(e){he(t=>{let n=t[e];return n&&Qe(n),t.filter((t,n)=>n!==e)})}function rt(e){if(me().reduce((e,t)=>e+t.size,0)+e>Dn)throw Error(`Images too large: total inline images exceed ${Ll(Dn)}`)}function it(e,t,n){return{blob:e,mimeType:t,fileName:n,size:e.size,previewUrl:URL.createObjectURL(e)}}function at(e,t,n){let r=Ye(e.data);return it(new Blob([r],{type:e.mimeType}),e.mimeType,`queued-image-${t+1}-${n+1}`)}function ot(e){return[...e.steeringMessages??e.steering.map(e=>({text:e})),...e.followUpMessages??e.followUp.map(e=>({text:e}))]}function Z(e){let t=[];for(let[n,r]of e.entries())for(let[e,i]of(r.images??[]).entries())t.push(at(i,n,e));return t}function st(e){for(let t of e)Qe(t)}function ct(e){let t=e.map(e=>e.text).join(`
|
|
67
67
|
|
|
68
68
|
`),n=r();i([t,n].filter(e=>e.trim()).join(`
|
|
69
69
|
|
|
70
|
-
`))}async function
|
|
71
|
-
`)),
|
|
70
|
+
`))}async function lt(){let t=[];try{let n=await Q.pending(e.sessionKey);t.push(...Z(ot(n))),rt(t.reduce((e,t)=>e+t.size,0))}catch(e){st(t),O(e instanceof Error?e.message:String(e));return}st(t);let n=[],r=!1;try{let t=ot(await Q.dequeue(e.sessionKey));pe({steering:[],followUp:[],steeringMessages:[],followUpMessages:[]}),ct(t);try{n.push(...Z(t)),rt(n.reduce((e,t)=>e+t.size,0))}catch(e){throw Error(`Queued image restore failed after restoring text: ${e instanceof Error?e.message:String(e)}`)}n.length>0&&(he(e=>[...n,...e]),r=!0),queueMicrotask(()=>Ae?.focus())}catch(e){r||st(n),O(e instanceof Error?e.message:String(e))}}function ut(e){if(!e.type.startsWith(`image/`))throw Error(`Not an image: ${e.name||e.type}`);if(e.size>Ol)throw Error(`Image too large: ${e.name||e.type} exceeds 10MB`);return it(e,e.type,e.name||`image`)}async function dt(e){let t=[...e];if(t.length===0)return;let n=[];try{for(let e of t){if(!e.type.startsWith(`image/`))throw Error(`Not an image: ${e.name||e.type}`);if(e.size>Ol)throw Error(`Image too large: ${e.name||e.type} exceeds 10MB`)}rt(t.reduce((e,t)=>e+t.size,0));for(let e of t)n.push(ut(e));he(e=>[...e,...n])}catch(e){for(let e of n)Qe(e);O(e instanceof Error?e.message:String(e))}}async function ft(e){let t=Pl(e,kl);try{return await Q.listFiles(t),t}catch{return await Q.mkdir(e,kl),t}}async function pt(e){let t=[...e];if(t.length===0)return;let r=n()?.cwd;if(!r){O(`Cannot attach files until the runtime is loaded.`);return}O(void 0);try{let e=await ft(r),n=[];for(let[r,i]of t.entries()){let t=Il(i,r),a=await Q.upload(e,new File([i],t,{type:i.type}),!1);n.push({fileName:i.name||t,size:i.size,mimeType:i.type||`application/octet-stream`,path:a.path})}_e(e=>[...e,...n])}catch(e){O(e instanceof Error?e.message:String(e))}}async function mt(){xe(!0),Te(void 0),Ce([]);try{let{messages:t}=await Q.forkMessages(e.sessionKey);Ce(t)}catch(e){Te(e instanceof Error?e.message:String(e))}}async function ht(t){Te(void 0);try{let n=await Q.fork(e.sessionKey,t);n.cancelled||i(n.text),await e.store.hydrateSession(e.sessionKey),await e.store.refreshDiskSessions(),xe(!1)}catch(e){Te(e instanceof Error?e.message:String(e))}}async function gt(){K(!0),Oe(void 0);try{I(await Q.stats(e.sessionKey))}catch(e){Oe(e instanceof Error?e.message:String(e))}}R(()=>{let t=new AbortController;e.store.hydrateSession(e.sessionKey,t.signal).catch(e=>{t.signal.aborted&&Zs(e)||O(e instanceof Error?e.message:String(e))}),Ue(!0),We(),Ke();let n=setInterval(()=>void Ue(!1),5e3);z(()=>{Ie=!0,t.abort(),clearInterval(n)})});let _t=e=>{if(!Ee())return;let t=e.target;t&&Fe?.contains(t)||K(!1)},vt=e=>{e.key===`Escape`&&K(!1)};document.addEventListener(`mousedown`,_t),document.addEventListener(`keydown`,vt),z(()=>{document.removeEventListener(`mousedown`,_t),document.removeEventListener(`keydown`,vt)});let yt=setInterval(()=>{let e=t()?.workingSince;P(e?Math.floor((Date.now()-e)/1e3):0)},1e3);z(()=>{clearInterval(yt),He.dispose(),$e()}),M(()=>{let e=t()?.composerPrefill;e&&i(e)}),M(()=>{r(),Ae&&queueMicrotask(()=>Ae&&Bl(Ae))}),M(()=>{e.store.revisions[e.sessionKey],t()?.entries.length,He.notifyContentChanged()}),R(()=>{He.observeContent(J),He.observeViewport(ke),ke&&z(co(He,ke,{keyboard:`window`}))});let bt=!1;M(()=>{let e=Le();bt&&!e&&Ue(!0),bt!==e&&Ke(),bt=e}),M(()=>{n()?.state.pendingMessageCount,Ke()}),M(()=>{tc(e.sessionKey,r())});function xt(e){let t=[];return ge().length>0&&t.push([`Attached files uploaded to the host (paths only; inspect deliberately if needed):`,...ge().map(e=>`- ${e.path} (${e.fileName}, ${Ll(e.size)}, ${e.mimeType||`unknown type`})`)].join(`
|
|
71
|
+
`)),me().length>0&&t.push([`Attached images included inline with this turn:`,...me().map((e,t)=>`- image ${t+1}: ${e.fileName} (${Ll(e.size)}, ${e.mimeType})`)].join(`
|
|
72
72
|
`)),[e,...t].filter(e=>e.trim()).join(`
|
|
73
73
|
|
|
74
|
-
`)}async function wt(){let t=r().trim();if(!t&&ve().length===0&&ge().length===0)return;let n=Ct(t||`Please review the attached item(s). `);P(void 0);try{let t=ge(),r=t.length>0?await Promise.all(t.map(async({blob:e,mimeType:t})=>({data:await $e(e),mimeType:t}))):void 0;ze()?await Q.prompt(e.sessionKey,n,a(),r):r?await Q.prompt(e.sessionKey,n,void 0,r):await Q.prompt(e.sessionKey,n),rc(e.sessionKey,n),xe(void 0),i(``),rt(),ye([]),Je()}catch(e){P(e instanceof Error?e.message:String(e))}}async function Tt(){c(!0);try{await Q.abort(e.sessionKey),await dt()}catch(e){P(e instanceof Error?e.message:String(e))}finally{c(!1)}}async function Et(){if(!l()){u(!0),P(void 0);try{await Q.stopRuntime(e.sessionKey),await e.store.removeRuntime(e.sessionKey),e.store.navigate({screen:`fleet`})}catch(e){P(e instanceof Error?e.message:String(e))}finally{u(!1)}}}async function Dt(t){try{t===`compaction`?await Q.abortCompaction(e.sessionKey):t===`retry`&&await Q.abortRetry(e.sessionKey)}catch(e){P(e instanceof Error?e.message:String(e))}}function Ot(e){Ae?.querySelectorAll(`details.tool`).forEach(t=>{t.open=e})}let kt=()=>Object.values(t()?.backgroundAgents??{}).filter(e=>e.status===`running`),At=()=>Object.values(t()?.backgroundAgents??{}).filter(e=>e.status!==`running`),jt=()=>t()?.tasks??[],Mt=()=>jt().filter(e=>e.status===`completed`).length,Nt=()=>n()?.state.contextUsage??L()?.contextUsage,Pt=()=>typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 700px)`).matches,Ft=()=>t()?.sessionName??n()?.state.sessionName,It=()=>Ft()??t()?.title??e.sessionKey,Lt=()=>{let e=n()?.cwd;if(!e)return;let t=re();return`${Pl(e)}${t?` (${t})`:``}`},Rt=()=>{let e=Lt(),t=Ft();return e&&t?`${e} • ${t}`:e??t??`session`},zt=()=>{let e=L()?.tokens;if(!e)return;let t=[];return e.input&&t.push(`↑${Nl(e.input)}`),e.output&&t.push(`↓${Nl(e.output)}`),e.cacheRead&&t.push(`R${Nl(e.cacheRead)}`),e.cacheWrite&&t.push(`W${Nl(e.cacheWrite)}`),t.length>0?t.join(` `):void 0},Bt=()=>{let e=L()?.cost??0,t=n()?.state.usingSubscription??!1;if(!e&&!t)return;let r=`$${e.toFixed(3)}${t?` (sub)`:``}`,i=ae();return i!==void 0&&i>e&&(r+=`, today: $${i.toFixed(2)}`),r},Vt=()=>{let e=Nt();if(e)return`ctx ${e.percent===null?`?`:`${e.percent.toFixed(0)}%`}/${Nl(e.contextWindow)}`},Ht=()=>{let e=n()?.state.model;if(!e)return;let t=te()?.models.find(t=>t.provider===e.provider&&t.modelId===e.id);if(!(!t||t.count<3))return`${Math.round(t.median)} tok/s`},Ut=()=>[zt(),Bt(),Vt(),Ht()].filter(Boolean),Wt=()=>[...(me().steeringMessages??me().steering.map(e=>({text:e}))).map(e=>({kind:`steer`,text:e.images?.length?`${e.text} (${e.images.length} image(s))`:e.text})),...(me().followUpMessages??me().followUp.map(e=>({text:e}))).map(e=>({kind:`follow-up`,text:e.images?.length?`${e.text} (${e.images.length} image(s))`:e.text}))],Gt=()=>{let e=r();if(se()||!e.startsWith(`/`))return;let t=e.slice(1);if(!/\s/.test(t))return t.toLowerCase()},Kt=N(()=>{let e=Gt();return e===void 0?[]:oe().filter(t=>{let n=t.name.toLowerCase();return!e||n.startsWith(e)||n.includes(e)}).sort((t,n)=>!t.name.toLowerCase().startsWith(e)-+!n.name.toLowerCase().startsWith(e)||t.name.localeCompare(n.name)).slice(0,8)}),qt=()=>Kt().length>0,Jt=e=>{i(`/${e.name} `),H(!0),queueMicrotask(()=>Ne?.focus())};return M(()=>{let e=Kt().length;ce()>=e&&le(Math.max(0,e-1))}),(()=>{var c=ul(),u=c.firstChild,k=u.firstChild,M=k.firstChild.nextSibling,N=M.nextSibling,I=u.nextSibling,R=I.firstChild,z=I.nextSibling,ee=z.firstChild,te=ee.firstChild;X(M,It),X(k,U(G,{get when(){return!h()},get children(){var e=zc();return X(e,(()=>{var e=q(()=>!!n()?.cwd);return()=>e()?Pl(n().cwd):void 0})()),e}}),N),X(k,U(tt,{get store(){return e.store},class:`session-connection-indicator`}),N),X(k,U(G,{get when(){return!h()},get children(){var t=Vc(),r=t.firstChild,i=r.firstChild.nextSibling.nextSibling,a=r.nextSibling;a.firstChild.nextSibling;var o=a.nextSibling;return r.$$click=()=>f(!0),X(i,()=>jl(n()?.state.model)),a.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=Ol[(Ol.indexOf(t)+1)%Ol.length];try{await Q.setThinking(e.sessionKey,r),e.store.setRuntimeThinkingLevel(e.sessionKey,r)}catch(e){P(e instanceof Error?e.message:String(e))}},X(a,()=>n()?.state.thinkingLevel??`—`,null),X(t,U(G,{get when(){return Nt()},get children(){var e=Bc();return e.firstChild.nextSibling,X(e,(()=>{var e=q(()=>Nt().percent===null);return()=>e()?`?`:`${Nt().percent.toFixed(0)}%`})(),null),e}}),o),o.$$click=()=>m(!p()),j(()=>Y(r,`title`,Ml(n()?.state.model))),t}}),N),N.$$click=()=>g(!h()),X(N,()=>h()?`details ▾`:`details ▴`),X(u,U(G,{get when(){return!h()},get children(){return[(()=>{var e=Uc(),t=e.firstChild,n=t.nextSibling;return X(t,Rt),n.$$click=vt,X(n,U(W,{get each(){return Ut()},children:e=>(()=>{var t=dl();return X(t,e),t})()})),X(e,U(G,{get when(){return De()},get children(){var e=Hc(),t=Le;return typeof t==`function`?Pe(t,e):Le=e,X(e,U(G,{get when(){return ke()},get children(){var e=Cc();return X(e,ke),e}}),null),X(e,U(G,{get when(){return L()},get fallback(){return fl()},children:e=>(()=>{var t=pl(),n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling,i=r.nextSibling.nextSibling,a=i.firstChild,o=i.nextSibling.nextSibling,s=o.firstChild,c=o.nextSibling.nextSibling,l=c.firstChild,u=c.nextSibling.nextSibling,d=u.nextSibling.nextSibling;return d.firstChild,X(n,()=>e().userMessages),X(r,()=>e().assistantMessages),X(i,()=>e().toolCalls,a),X(i,()=>e().toolResults,null),X(o,()=>Nl(e().tokens.input),s),X(o,()=>Nl(e().tokens.output),null),X(c,()=>Nl(e().tokens.cacheRead),l),X(c,()=>Nl(e().tokens.cacheWrite),null),X(u,()=>Nl(e().tokens.total)),X(d,()=>e().cost.toFixed(4),null),t})()}),null),e}}),null),e})(),U(G,{get when(){return p()},get children(){var t=Kc(),r=t.firstChild,i=r.nextSibling,a=i.nextSibling,o=a.nextSibling,s=o.nextSibling,c=s.nextSibling,u=c.nextSibling,d=u.nextSibling;return i.$$click=()=>S(!0),a.$$click=()=>Ot(!0),o.$$click=()=>Ot(!1),s.$$click=()=>w(!0),c.$$click=gt,u.$$click=qe,X(t,U(G,{get when(){return Pt()},get children(){return[(()=>{var e=Wc();return e.firstChild,e.$$click=()=>f(!0),X(e,()=>jl(n()?.state.model),null),e})(),(()=>{var t=Gc();return t.firstChild,t.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=Ol[(Ol.indexOf(t)+1)%Ol.length];try{await Q.setThinking(e.sessionKey,r),e.store.setRuntimeThinkingLevel(e.sessionKey,r)}catch(e){P(e instanceof Error?e.message:String(e))}},X(t,()=>n()?.state.thinkingLevel??`—`,null),t})()]}}),d),d.$$click=Et,X(d,()=>l()?`stopping runtime…`:`stop runtime`),j(t=>{var n=Q.exportHtmlUrl(e.sessionKey),i=l();return n!==t.e&&Y(r,`href`,t.e=n),i!==t.t&&(d.disabled=t.t=i),t},{e:void 0,t:void 0}),t}})]}}),null),X(c,U(G,{get when(){return q(()=>!!(!h()&&n()?.state.modelFallbackMessage))()&&!D()},get children(){var e=qc(),t=e.firstChild.firstChild;t.firstChild;var r=t.nextSibling;return X(t,()=>n().state.modelFallbackMessage,null),r.$$click=()=>O(!0),e}}),I);var ne=Ae;typeof ne==`function`?Pe(ne,I):Ae=I;var re=Me;return typeof re==`function`?Pe(re,R):Me=R,X(R,U(G,{get when(){return t()},get fallback(){return ml()},get children(){return[U(W,{get each(){return t().widgets.above},children:e=>(()=>{var t=hl();return X(t,e),t})()}),U(Xs,{get entries(){return t().entries},get resetKey(){return e.sessionKey},get imageScope(){return{runtimeKey:e.sessionKey}}}),U(G,{get when(){return t().uiRequests[0]},keyed:!0,children:e=>U(G,{get when(){return e.method===`ask`},get children(){return U(Ul,{request:e,onRespond:Xe,onStop:()=>void Tt(),get stopping(){return s()}})}})}),U(W,{get each(){return t().widgets.below},children:e=>(()=>{var t=hl();return X(t,e),t})()})]}})),te.$$click=()=>v(!_()),X(te,()=>_()?`compose ▴`:`compose ▾`),X(ee,U(G,{get when(){return _()},get children(){var e=Jc();return X(e,(()=>{var e=q(()=>!!Ue());return()=>e()?`agent working — open controls to stop or steer`:q(()=>Wt().length>0)()?`${Wt().length} queued message(s)`:`composer hidden for transcript reading`})()),e}}),null),X(z,U(G,{get when(){return!_()},get children(){var n=sl(),c=n.firstChild,l=c.firstChild,u=l.nextSibling,d=u.firstChild,f=d.nextSibling,p=f.nextSibling,m=p.nextSibling,h=m.nextSibling;X(n,U(G,{get when(){return jt().length>0},get children(){var e=Yc(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;r.nextSibling;var i=t.nextSibling;return X(t,Mt,n),X(t,()=>jt().length,r),X(i,U(W,{get each(){return jt()},children:e=>(()=>{var t=gl(),n=t.firstChild;return X(t,(()=>{var t=q(()=>e.status===`completed`);return()=>t()?`☑`:e.status===`in_progress`?`⧖`:`☐`})(),n),X(t,()=>e.title,null),j(n=>{var r=e.status===`completed`,i=e.status===`in_progress`;return r!==n.e&&t.classList.toggle(`done`,n.e=r),i!==n.t&&t.classList.toggle(`active`,n.t=i),n},{e:void 0,t:void 0}),t})()})),j(()=>e.open=!Pt()),e}}),c),X(n,U(G,{get when(){return kt().length+At().length>0},get children(){var t=Zc(),n=t.firstChild,r=n.nextSibling,i=r.firstChild.nextSibling,a=i.nextSibling.nextSibling;return a.nextSibling,n.$$click=()=>b(!y()),X(n,()=>y()?`subagents ▴`:`subagents ▾`),X(r,()=>kt().length,i),X(r,()=>At().length,a),X(t,U(G,{get when(){return y()},get children(){return Xc()}}),null),X(t,U(G,{get when(){return!y()},get children(){return U(W,{get each(){return[...kt(),...At()].slice(0,4)},children:t=>(()=>{var n=_l(),r=n.firstChild,i=r.nextSibling,a=i.firstChild;return n.$$click=()=>e.store.navigate({screen:`subagent`,key:e.sessionKey,agentId:t.agentId}),X(r,(()=>{var e=q(()=>t.status===`running`);return()=>e()?`●`:t.status===`completed`?`✓`:`✕`})()),X(i,()=>t.agentType,a),X(i,()=>t.taskSummary,null),X(i,U(G,{get when(){return t.arbitrations?.at(-1)},children:e=>e().status===`failure`?` · arbitration failed`:` · ${e().final?.model??e().proposed.model} @ ${e().final?.thinking??e().proposed.thinking}`}),null),j(()=>je(r,t.status===`running`?`live`:`done`)),n})()})}}),null),j(e=>{var r=!!y(),i=y()?`show subagents`:`hide subagents`;return r!==e.e&&t.classList.toggle(`collapsed`,e.e=r),i!==e.t&&Y(n,`title`,e.t=i),e},{e:void 0,t:void 0}),t}}),c),X(n,U(G,{get when(){return Ue()||(t()?.statusEntries.length??0)>0||A()},get children(){var e=tl();return X(e,U(G,{get when(){return ze()},get children(){var e=Qc();return e.firstChild,X(e,(()=>{var e=q(()=>!!t()?.workingText);return()=>e()?` — ${t().workingText}`:``})(),null),X(e,(()=>{var e=q(()=>F()>2);return()=>e()?` (${F()}s)`:``})(),null),e}}),null),X(e,U(W,{get each(){return t()?.statusEntries??[]},children:e=>(()=>{var t=dl();return X(t,()=>e.text,null),X(t,U(G,{get when(){return e.key===`compaction`||e.key===`retry`},get children(){var t=vl();return t.$$click=()=>Dt(e.key),t}}),null),j(()=>je(t,e.tone===`info`?`queued`:e.tone)),t})()}),null),X(e,U(G,{get when(){return A()},get children(){var e=$c();return X(e,A),e}}),null),X(e,U(G,{get when(){return Ue()},get children(){var e=el();return e.$$click=Tt,X(e,()=>s()?`stopping…`:`■ stop`),j(()=>e.disabled=s()),e}}),null),e}}),c),X(c,U(G,{get when(){return Wt().length>0},get children(){var e=nl(),t=e.firstChild;return X(e,U(W,{get each(){return Wt()},children:e=>(()=>{var t=yl(),n=t.firstChild;return X(n,()=>e.kind),X(t,()=>e.text,null),j(()=>Y(t,`title`,e.text)),t})()}),t),t.$$click=dt,e}}),l),X(c,U(G,{get when(){return ve().length>0||ge().length>0},get children(){var e=rl();return X(e,U(W,{get each(){return ve()},children:(e,t)=>(()=>{var n=bl(),r=n.firstChild;r.firstChild;var i=r.nextSibling,a=i.nextSibling;return X(r,()=>e.fileName,null),X(i,()=>Rl(e.size)),a.$$click=()=>ye(e=>e.filter((e,n)=>n!==t())),j(()=>Y(n,`title`,e.path)),n})()}),null),X(e,U(W,{get each(){return ge()},children:(e,t)=>(()=>{var n=xl(),r=n.firstChild,i=r.nextSibling;return i.$$click=()=>it(t()),j(t=>{var i=`${e.fileName} (${Rl(e.size)})`,a=e.previewUrl,o=e.fileName;return i!==t.e&&Y(n,`title`,t.e=i),a!==t.t&&Y(r,`src`,t.t=a),o!==t.a&&Y(r,`alt`,t.a=o),t},{e:void 0,t:void 0,a:void 0}),n})()}),null),e}}),l),X(c,U(G,{get when(){return qt()},get children(){var e=il();return X(e,U(W,{get each(){return Kt()},children:(e,t)=>(()=>{var n=Cl(),r=n.firstChild;r.firstChild;var i=r.nextSibling;return n.$$click=()=>Jt(e),n.addEventListener(`mouseenter`,()=>le(t())),X(r,()=>e.name,null),X(n,U(G,{get when(){return e.description},get children(){var t=Sl();return X(t,()=>e.description),t}}),i),X(i,()=>e.source),j(e=>{var r=`command-option-${t()}`,i=ce()===t(),a=ce()===t();return r!==e.e&&Y(n,`id`,e.e=r),i!==e.t&&Y(n,`aria-selected`,e.t=i),a!==e.a&&n.classList.toggle(`selected`,e.a=a),e},{e:void 0,t:void 0,a:void 0}),n})()})),e}}),l),l.$$keydown=t=>{if(qt()){if(t.key===`ArrowDown`){t.preventDefault(),le((ce()+1)%Kt().length);return}if(t.key===`ArrowUp`){t.preventDefault(),le((ce()-1+Kt().length)%Kt().length);return}if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey&&!Pt()){t.preventDefault();let e=Kt()[ce()];e&&Jt(e);return}if(t.key===`Escape`){t.preventDefault(),H(!0);return}}if((t.key===`ArrowUp`||t.key===`ArrowDown`)&&(r()===``||be()!==void 0)){let n=nc(e.sessionKey);if(n.length>0){if(t.preventDefault(),t.key===`ArrowUp`){let e=be()===void 0?n.length-1:Math.max(0,be()-1);xe(e),i(n[e]??``)}else if(be()!==void 0){let e=be()+1;e>=n.length?(xe(void 0),i(``)):(xe(e),i(n[e]??``))}}return}t.key===`Enter`&&!t.shiftKey&&!Pt()&&(t.preventDefault(),wt())},l.$$input=e=>{H(!1),le(0),xe(void 0),i(e.currentTarget.value),Vl(e.currentTarget)},l.addEventListener(`paste`,e=>{let t=[...e.clipboardData?.items??[]].filter(e=>e.type.startsWith(`image/`)).map(e=>e.getAsFile()).filter(e=>!!e);t.length>0&&(e.preventDefault(),pt(t))});var g=Ne;typeof g==`function`?Pe(g,l):Ne=l,d.addEventListener(`change`,e=>{ht(e.currentTarget.files??[]),e.currentTarget.value=``});var _=Fe;typeof _==`function`?Pe(_,d):Fe=d,f.addEventListener(`change`,e=>{pt(e.currentTarget.files??[]),e.currentTarget.value=``});var v=Ie;return typeof v==`function`?Pe(v,f):Ie=f,p.$$click=()=>Fe?.click(),m.$$click=()=>Ie?.click(),X(u,U(G,{get when(){return ze()},get children(){var e=al(),t=e.firstChild,n=t.nextSibling;return t.$$click=()=>o(`steer`),n.$$click=()=>o(`follow_up`),j(e=>{var r=a()===`steer`,i=a()===`follow_up`;return r!==e.e&&t.classList.toggle(`selected`,e.e=r),i!==e.t&&n.classList.toggle(`selected`,e.t=i),e},{e:void 0,t:void 0}),e}}),h),X(u,U(G,{get when(){return t()?.suggestedCommand},get children(){var e=ol(),n=e.firstChild.nextSibling;return e.$$click=()=>i(t().suggestedCommand),X(n,()=>t().suggestedCommand),e}}),h),h.$$click=wt,j(e=>{var t=ze()?`Message dreb — sends as steer while it works…`:`Message dreb…`,n=qt()?`command-listbox`:void 0,r=qt()?`command-option-${ce()}`:void 0;return t!==e.e&&Y(l,`placeholder`,e.e=t),n!==e.t&&Y(l,`aria-controls`,e.t=n),r!==e.a&&Y(l,`aria-activedescendant`,e.a=r),e},{e:void 0,t:void 0,a:void 0}),j(()=>l.value=r()),n}}),null),X(c,U(G,{get when(){return t()?.uiRequests[0]},keyed:!0,children:e=>U(G,{get when(){return e.method!==`ask`},get children(){return U(Hl,{request:e,onRespond:Xe})}})}),null),X(c,U(G,{get when(){return d()},get children(){return U(Gl,{get sessionKey(){return e.sessionKey},get state(){return n()?.state},onClose:()=>f(!1),onSelected:t=>e.store.setRuntimeModel(e.sessionKey,t)})}}),null),X(c,U(G,{get when(){return x()},get children(){return U(nt,{title:`compact context`,onDismiss:()=>S(!1),get actions(){return[(()=>{var e=lc();return e.$$click=()=>S(!1),e})(),(()=>{var t=wl();return t.$$click=async()=>{S(!1);try{await Q.compact(e.sessionKey)}catch(e){P(e instanceof Error?e.message:String(e))}},t})()]},get children(){return cl()}})}}),null),X(c,U(G,{get when(){return T()},get children(){return U(Wl,{get resources(){return ue()},get error(){return fe()},onClose:()=>E(!1)})}}),null),X(c,U(G,{get when(){return Se()},get children(){return U(nt,{title:`fork from message`,onDismiss:()=>Ce(!1),get children(){return[U(G,{get when(){return Ee()},get children(){var e=Cc();return X(e,Ee),e}}),U(G,{get when(){return we().length>0},get fallback(){return Tl()},get children(){var e=ll();return X(e,U(W,{get each(){return we()},children:e=>(()=>{var t=El(),n=t.firstChild,r=n.nextSibling;return t.$$click=()=>_t(e.entryId),X(n,()=>e.entryId),X(r,()=>e.text),t})()})),e}})]}})}}),null),X(c,U(G,{get when(){return C()},get children(){return U(ql,{get current(){return Ft()??``},onClose:()=>w(!1),onRename:async t=>{try{await Q.rename(e.sessionKey,t),w(!1)}catch(e){P(e instanceof Error?e.message:String(e))}}})}}),null),j(e=>{var t=!!h(),n=h()?`show session details`:`hide session details`,r=!!_(),i=_()?`show composer and controls`:`hide composer and controls`;return t!==e.e&&u.classList.toggle(`collapsed`,e.e=t),n!==e.t&&Y(N,`title`,e.t=n),r!==e.a&&z.classList.toggle(`collapsed`,e.a=r),i!==e.o&&Y(te,`title`,e.o=i),e},{e:void 0,t:void 0,a:void 0,o:void 0}),c})()}function ql(e){let[t,n]=k(e.current);return U(nt,{title:`rename session`,get onDismiss(){return e.onClose},get actions(){return[(()=>{var t=lc();return Me(t,`click`,e.onClose,!0),t})(),(()=>{var n=Dl();return n.$$click=()=>e.onRename(t().trim()),j(()=>n.disabled=!t().trim()),n})()]},get children(){var e=sc(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e}})}Ae([`input`,`click`,`keydown`]);var Jl=[{id:`default`,label:`entropist.ca`},{id:`dim`,label:`Dim`},{id:`solarized`,label:`Solarized`},{id:`gruvbox`,label:`Gruvbox`},{id:`qud`,label:`Caves of Qud`},{id:`vangogh`,label:`Van Gogh`},{id:`okabe`,label:`Colorblind-safe (Okabe-Ito)`},{id:`tol`,label:`Colorblind-safe (Paul Tol)`}],Yl=Jl.map(e=>e.id),Xl=[`system`,`light`,`dark`],Zl=`dreb.dashboard.theme`,Ql=`dreb.dashboard.colorMode`,$l=`default`,eu=`system`;function tu(e){return typeof e==`string`&&Yl.includes(e)}function nu(e){return typeof e==`string`&&Xl.includes(e)}function ru(){if(typeof window>`u`)return $l;try{let e=window.localStorage.getItem(Zl);return tu(e)?e:$l}catch{return $l}}function iu(){if(typeof window>`u`)return eu;try{let e=window.localStorage.getItem(Ql);return nu(e)?e:eu}catch{return eu}}function au(e,t,n){if(!(typeof window>`u`))try{t===n?window.localStorage.removeItem(e):window.localStorage.setItem(e,t)}catch{}}var[ou,su]=k(ru()),[cu,lu]=k(iu()),uu=ou,du=cu;function fu(e){let t=e.defaultView??(typeof window<`u`?window:void 0);return!t||typeof t.getComputedStyle!=`function`?``:t.getComputedStyle(e.documentElement).getPropertyValue(`--bg`).trim()}function pu(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=t.documentElement;if(!n)return;let r=ou(),i=cu();if(r===$l?n.removeAttribute(`data-theme`):n.setAttribute(`data-theme`,r),i===eu?n.removeAttribute(`data-color-mode`):n.setAttribute(`data-color-mode`,i),!(r!==$l||i!==eu))n.style.removeProperty(`color-scheme`);else{let e=i===`light`?`light`:i===`dark`?`dark`:`light dark`;n.style.setProperty(`color-scheme`,e)}}catch{}}function mu(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=fu(t);if(!n)return;let r=t.querySelector(`meta[name="theme-color"]:not([media])`);if(!r){r=t.createElement(`meta`),r.setAttribute(`name`,`theme-color`);let e=t.head??t.getElementsByTagName(`head`)[0];e&&e.insertBefore(r,e.firstChild)}r.setAttribute(`content`,n)}catch{}}function hu(e){let t=tu(e)?e:$l;su(t),au(Zl,t,$l),pu(),mu()}function gu(e){let t=nu(e)?e:eu;lu(t),au(Ql,t,eu),pu(),mu()}var _u=null,vu=!1;function yu(){cu()===eu&&mu()}function bu(e){e.key!==null&&e.key!==`dreb.dashboard.theme`&&e.key!==`dreb.dashboard.colorMode`||xu()}function xu(){su(ru()),lu(iu()),pu(),mu()}function Su(){if(!(typeof window>`u`)){try{typeof window.matchMedia==`function`&&(_u=window.matchMedia(`(prefers-color-scheme: dark)`),typeof _u.addEventListener==`function`?_u.addEventListener(`change`,yu):typeof _u.addListener==`function`&&_u.addListener(yu))}catch{}try{window.addEventListener(`storage`,bu)}catch{}}}function Cu(){xu(),!vu&&(vu=!0,Su())}var wu=J(`<div class=appearance-controls><div class=setting-row><span class=setting-label><span class=name>color mode</span><span class=hint>this browser only — “system” follows your OS light/dark preference</span></span><span class=setting-control><select id=pref-color-mode></select></span></div><div class=theme-gallery>`),Tu=J(`<option>`),Eu=J(`<button type=button class=theme-card><div class=theme-card-preview><div class=theme-card-swatch><span class=theme-card-name></span><span class=theme-card-muted>The quick brown fox.</span></div><div class=theme-card-chips></div><pre class=theme-card-code><code class=hljs><span class=hljs-keyword>const</span> <span class=hljs-variable>count</span><span class=hljs-operator> = </span><span class=hljs-number>42</span><span class=hljs-punctuation>;</span>
|
|
74
|
+
`)}async function St(){let t=r().trim();if(!t&&ge().length===0&&me().length===0)return;let n=xt(t||`Please review the attached item(s). `);O(void 0);try{let t=me(),r=t.length>0?await Promise.all(t.map(async({blob:e,mimeType:t})=>({data:await Ze(e),mimeType:t}))):void 0;Le()?await Q.prompt(e.sessionKey,n,a(),r):r?await Q.prompt(e.sessionKey,n,void 0,r):await Q.prompt(e.sessionKey,n),rc(e.sessionKey,n),ye(void 0),i(``),$e(),_e([]),Ke()}catch(e){O(e instanceof Error?e.message:String(e))}}async function Ct(){c(!0);try{await Q.abort(e.sessionKey),await lt()}catch(e){O(e instanceof Error?e.message:String(e))}finally{c(!1)}}async function wt(){if(!l()){u(!0),O(void 0);try{await Q.stopRuntime(e.sessionKey),await e.store.removeRuntime(e.sessionKey),e.store.navigate({screen:`fleet`})}catch(e){O(e instanceof Error?e.message:String(e))}finally{u(!1)}}}async function Tt(t){try{t===`compaction`?await Q.abortCompaction(e.sessionKey):t===`retry`&&await Q.abortRetry(e.sessionKey)}catch(e){O(e instanceof Error?e.message:String(e))}}function Et(e){ke?.querySelectorAll(`details.tool`).forEach(t=>{t.open=e})}let Dt=()=>Object.values(t()?.backgroundAgents??{}).filter(e=>e.status===`running`),Ot=()=>Object.values(t()?.backgroundAgents??{}).filter(e=>e.status!==`running`),kt=()=>Object.values(t()?.backgroundAgents??{}).sort((e,t)=>Date.parse(t.startedAt)-Date.parse(e.startedAt)),At=()=>t()?.tasks??[],jt=()=>At().filter(e=>e.status===`completed`).length,Mt=()=>n()?.state.contextUsage??F()?.contextUsage,Nt=()=>typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 700px)`).matches,Pt=()=>t()?.sessionName??n()?.state.sessionName,Ft=()=>Pt()??t()?.title??e.sessionKey,It=()=>{let e=n()?.cwd;if(!e)return;let t=te();return`${Nl(e)}${t?` (${t})`:``}`},Lt=()=>{let e=It(),t=Pt();return e&&t?`${e} • ${t}`:e??t??`session`},Rt=()=>{let e=F()?.tokens;if(!e)return;let t=[];return e.input&&t.push(`↑${Ml(e.input)}`),e.output&&t.push(`↓${Ml(e.output)}`),e.cacheRead&&t.push(`R${Ml(e.cacheRead)}`),e.cacheWrite&&t.push(`W${Ml(e.cacheWrite)}`),t.length>0?t.join(` `):void 0},zt=()=>{let e=F()?.cost??0,t=n()?.state.usingSubscription??!1;if(!e&&!t)return;let r=`$${e.toFixed(3)}${t?` (sub)`:``}`,i=re();return i!==void 0&&i>e&&(r+=`, today: $${i.toFixed(2)}`),r},Bt=()=>{let e=Mt();if(e)return`ctx ${e.percent===null?`?`:`${e.percent.toFixed(0)}%`}/${Ml(e.contextWindow)}`},Vt=()=>{let e=n()?.state.model;if(!e)return;let t=L()?.models.find(t=>t.provider===e.provider&&t.modelId===e.id);if(!(!t||t.count<3))return`${Math.round(t.median)} tok/s`},Ht=()=>[Rt(),zt(),Bt(),Vt()].filter(Boolean),Ut=()=>[...(fe().steeringMessages??fe().steering.map(e=>({text:e}))).map(e=>({kind:`steer`,text:e.images?.length?`${e.text} (${e.images.length} image(s))`:e.text})),...(fe().followUpMessages??fe().followUp.map(e=>({text:e}))).map(e=>({kind:`follow-up`,text:e.images?.length?`${e.text} (${e.images.length} image(s))`:e.text}))],Wt=()=>{let e=r();if(oe()||!e.startsWith(`/`))return;let t=e.slice(1);if(!/\s/.test(t))return t.toLowerCase()},Gt=N(()=>{let e=Wt();return e===void 0?[]:ae().filter(t=>{let n=t.name.toLowerCase();return!e||n.startsWith(e)||n.includes(e)}).sort((t,n)=>!t.name.toLowerCase().startsWith(e)-+!n.name.toLowerCase().startsWith(e)||t.name.localeCompare(n.name)).slice(0,8)}),Kt=()=>Gt().length>0,qt=e=>{i(`/${e.name} `),V(!0),queueMicrotask(()=>Ae?.focus())};return M(()=>{let e=Gt().length;se()>=e&&H(Math.max(0,e-1))}),(()=>{var c=ll(),u=c.firstChild,k=u.firstChild,M=k.firstChild.nextSibling,N=M.nextSibling,P=u.nextSibling,I=P.firstChild,L=P.nextSibling,R=L.firstChild,z=R.firstChild;X(M,Ft),X(k,U(G,{get when(){return!h()},get children(){var e=zc();return X(e,(()=>{var e=q(()=>!!n()?.cwd);return()=>e()?Nl(n().cwd):void 0})()),e}}),N),X(k,U(tt,{get store(){return e.store},class:`session-connection-indicator`}),N),X(k,U(G,{get when(){return!h()},get children(){var t=Vc(),r=t.firstChild,i=r.firstChild.nextSibling.nextSibling,a=r.nextSibling;a.firstChild.nextSibling;var o=a.nextSibling;return r.$$click=()=>f(!0),X(i,()=>Al(n()?.state.model)),a.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=Dl[(Dl.indexOf(t)+1)%Dl.length];try{await Q.setThinking(e.sessionKey,r),e.store.setRuntimeThinkingLevel(e.sessionKey,r)}catch(e){O(e instanceof Error?e.message:String(e))}},X(a,()=>n()?.state.thinkingLevel??`—`,null),X(t,U(G,{get when(){return Mt()},get children(){var e=Bc();return e.firstChild.nextSibling,X(e,(()=>{var e=q(()=>Mt().percent===null);return()=>e()?`?`:`${Mt().percent.toFixed(0)}%`})(),null),e}}),o),o.$$click=()=>m(!p()),j(()=>Y(r,`title`,jl(n()?.state.model))),t}}),N),N.$$click=()=>g(!h()),X(N,()=>h()?`details ▾`:`details ▴`),X(u,U(G,{get when(){return!h()},get children(){return[(()=>{var e=Uc(),t=e.firstChild,n=t.nextSibling;return X(t,Lt),n.$$click=gt,X(n,U(W,{get each(){return Ht()},children:e=>(()=>{var t=ul();return X(t,e),t})()})),X(e,U(G,{get when(){return Ee()},get children(){var e=Hc(),t=Fe;return typeof t==`function`?Pe(t,e):Fe=e,X(e,U(G,{get when(){return De()},get children(){var e=Cc();return X(e,De),e}}),null),X(e,U(G,{get when(){return F()},get fallback(){return dl()},children:e=>(()=>{var t=fl(),n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling,i=r.nextSibling.nextSibling,a=i.firstChild,o=i.nextSibling.nextSibling,s=o.firstChild,c=o.nextSibling.nextSibling,l=c.firstChild,u=c.nextSibling.nextSibling,d=u.nextSibling.nextSibling;return d.firstChild,X(n,()=>e().userMessages),X(r,()=>e().assistantMessages),X(i,()=>e().toolCalls,a),X(i,()=>e().toolResults,null),X(o,()=>Ml(e().tokens.input),s),X(o,()=>Ml(e().tokens.output),null),X(c,()=>Ml(e().tokens.cacheRead),l),X(c,()=>Ml(e().tokens.cacheWrite),null),X(u,()=>Ml(e().tokens.total)),X(d,()=>e().cost.toFixed(4),null),t})()}),null),e}}),null),e})(),U(G,{get when(){return p()},get children(){var t=Kc(),r=t.firstChild,i=r.nextSibling,a=i.nextSibling,o=a.nextSibling,s=o.nextSibling,c=s.nextSibling,u=c.nextSibling,d=u.nextSibling;return i.$$click=()=>b(!0),a.$$click=()=>Et(!0),o.$$click=()=>Et(!1),s.$$click=()=>S(!0),c.$$click=mt,u.$$click=Ge,X(t,U(G,{get when(){return Nt()},get children(){return[(()=>{var e=Wc();return e.firstChild,e.$$click=()=>f(!0),X(e,()=>Al(n()?.state.model),null),e})(),(()=>{var t=Gc();return t.firstChild,t.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=Dl[(Dl.indexOf(t)+1)%Dl.length];try{await Q.setThinking(e.sessionKey,r),e.store.setRuntimeThinkingLevel(e.sessionKey,r)}catch(e){O(e instanceof Error?e.message:String(e))}},X(t,()=>n()?.state.thinkingLevel??`—`,null),t})()]}}),d),d.$$click=wt,X(d,()=>l()?`stopping runtime…`:`stop runtime`),j(t=>{var n=Q.exportHtmlUrl(e.sessionKey),i=l();return n!==t.e&&Y(r,`href`,t.e=n),i!==t.t&&(d.disabled=t.t=i),t},{e:void 0,t:void 0}),t}})]}}),null),X(c,U(G,{get when(){return q(()=>!!(!h()&&n()?.state.modelFallbackMessage))()&&!T()},get children(){var e=qc(),t=e.firstChild.firstChild;t.firstChild;var r=t.nextSibling;return X(t,()=>n().state.modelFallbackMessage,null),r.$$click=()=>E(!0),e}}),P);var ee=ke;typeof ee==`function`?Pe(ee,P):ke=P;var te=J;return typeof te==`function`?Pe(te,I):J=I,X(I,U(G,{get when(){return t()},get fallback(){return pl()},get children(){return[U(W,{get each(){return t().widgets.above},children:e=>(()=>{var t=ml();return X(t,e),t})()}),U(Xs,{get entries(){return t().entries},get resetKey(){return e.sessionKey},get imageScope(){return{runtimeKey:e.sessionKey}}}),U(G,{get when(){return t().uiRequests[0]},keyed:!0,children:e=>U(G,{get when(){return e.method===`ask`},get children(){return U(Hl,{request:e,onRespond:Je,onStop:()=>void Ct(),get stopping(){return s()}})}})}),U(W,{get each(){return t().widgets.below},children:e=>(()=>{var t=ml();return X(t,e),t})()})]}})),z.$$click=()=>v(!_()),X(z,()=>_()?`compose ▴`:`compose ▾`),X(R,U(G,{get when(){return _()},get children(){var e=Jc();return X(e,(()=>{var e=q(()=>!!Ve());return()=>e()?`agent working — open controls to stop or steer`:q(()=>Ut().length>0)()?`${Ut().length} queued message(s)`:`composer hidden for transcript reading`})()),e}}),null),X(L,U(G,{get when(){return!_()},get children(){var n=ol(),c=n.firstChild,l=c.firstChild,u=l.nextSibling,d=u.firstChild,f=d.nextSibling,p=f.nextSibling,m=p.nextSibling,h=m.nextSibling;X(n,U(G,{get when(){return At().length>0},get children(){var e=Yc(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;r.nextSibling;var i=t.nextSibling;return X(t,jt,n),X(t,()=>At().length,r),X(i,U(W,{get each(){return At()},children:e=>(()=>{var t=hl(),n=t.firstChild;return X(t,(()=>{var t=q(()=>e.status===`completed`);return()=>t()?`☑`:e.status===`in_progress`?`⧖`:`☐`})(),n),X(t,()=>e.title,null),j(n=>{var r=e.status===`completed`,i=e.status===`in_progress`;return r!==n.e&&t.classList.toggle(`done`,n.e=r),i!==n.t&&t.classList.toggle(`active`,n.t=i),n},{e:void 0,t:void 0}),t})()})),j(()=>e.open=!Nt()),e}}),c),X(n,U(G,{get when(){return Dt().length+Ot().length>0},get children(){var t=Xc(),n=t.firstChild,r=n.firstChild.nextSibling,i=r.nextSibling.nextSibling;i.nextSibling;var a=n.nextSibling;return X(n,()=>Dt().length,r),X(n,()=>Ot().length,i),X(a,U(W,{get each(){return kt()},children:t=>(()=>{var n=gl(),r=n.firstChild,i=r.firstChild,a=i.nextSibling,o=a.firstChild;return r.$$click=()=>e.store.navigate({screen:`subagent`,key:e.sessionKey,agentId:t.agentId}),X(i,(()=>{var e=q(()=>t.status===`running`);return()=>e()?`●`:t.status===`completed`?`✓`:`✕`})()),X(a,()=>t.agentType,o),X(a,()=>t.taskSummary,null),X(a,U(G,{get when(){return t.arbitrations?.at(-1)},children:e=>e().status===`failure`?` · arbitration failed`:` · ${e().final?.model??e().proposed.model} @ ${e().final?.thinking??e().proposed.thinking}`}),null),j(()=>je(i,t.status===`running`?`live`:`done`)),n})()})),j(()=>t.open=!Nt()),t}}),c),X(n,U(G,{get when(){return Ve()||(t()?.statusEntries.length??0)>0||D()},get children(){var e=el();return X(e,U(G,{get when(){return Le()},get children(){var e=Zc();return e.firstChild,X(e,(()=>{var e=q(()=>!!t()?.workingText);return()=>e()?` — ${t().workingText}`:``})(),null),X(e,(()=>{var e=q(()=>A()>2);return()=>e()?` (${A()}s)`:``})(),null),e}}),null),X(e,U(W,{get each(){return t()?.statusEntries??[]},children:e=>(()=>{var t=ul();return X(t,()=>e.text,null),X(t,U(G,{get when(){return e.key===`compaction`||e.key===`retry`},get children(){var t=_l();return t.$$click=()=>Tt(e.key),t}}),null),j(()=>je(t,e.tone===`info`?`queued`:e.tone)),t})()}),null),X(e,U(G,{get when(){return D()},get children(){var e=Qc();return X(e,D),e}}),null),X(e,U(G,{get when(){return Ve()},get children(){var e=$c();return e.$$click=Ct,X(e,()=>s()?`stopping…`:`■ stop`),j(()=>e.disabled=s()),e}}),null),e}}),c),X(c,U(G,{get when(){return Ut().length>0},get children(){var e=tl(),t=e.firstChild;return X(e,U(W,{get each(){return Ut()},children:e=>(()=>{var t=vl(),n=t.firstChild;return X(n,()=>e.kind),X(t,()=>e.text,null),j(()=>Y(t,`title`,e.text)),t})()}),t),t.$$click=lt,e}}),l),X(c,U(G,{get when(){return ge().length>0||me().length>0},get children(){var e=nl();return X(e,U(W,{get each(){return ge()},children:(e,t)=>(()=>{var n=yl(),r=n.firstChild;r.firstChild;var i=r.nextSibling,a=i.nextSibling;return X(r,()=>e.fileName,null),X(i,()=>Ll(e.size)),a.$$click=()=>_e(e=>e.filter((e,n)=>n!==t())),j(()=>Y(n,`title`,e.path)),n})()}),null),X(e,U(W,{get each(){return me()},children:(e,t)=>(()=>{var n=bl(),r=n.firstChild,i=r.nextSibling;return i.$$click=()=>et(t()),j(t=>{var i=`${e.fileName} (${Ll(e.size)})`,a=e.previewUrl,o=e.fileName;return i!==t.e&&Y(n,`title`,t.e=i),a!==t.t&&Y(r,`src`,t.t=a),o!==t.a&&Y(r,`alt`,t.a=o),t},{e:void 0,t:void 0,a:void 0}),n})()}),null),e}}),l),X(c,U(G,{get when(){return Kt()},get children(){var e=rl();return X(e,U(W,{get each(){return Gt()},children:(e,t)=>(()=>{var n=Sl(),r=n.firstChild;r.firstChild;var i=r.nextSibling;return n.$$click=()=>qt(e),n.addEventListener(`mouseenter`,()=>H(t())),X(r,()=>e.name,null),X(n,U(G,{get when(){return e.description},get children(){var t=xl();return X(t,()=>e.description),t}}),i),X(i,()=>e.source),j(e=>{var r=`command-option-${t()}`,i=se()===t(),a=se()===t();return r!==e.e&&Y(n,`id`,e.e=r),i!==e.t&&Y(n,`aria-selected`,e.t=i),a!==e.a&&n.classList.toggle(`selected`,e.a=a),e},{e:void 0,t:void 0,a:void 0}),n})()})),e}}),l),l.$$keydown=t=>{if(Kt()){if(t.key===`ArrowDown`){t.preventDefault(),H((se()+1)%Gt().length);return}if(t.key===`ArrowUp`){t.preventDefault(),H((se()-1+Gt().length)%Gt().length);return}if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey&&!Nt()){t.preventDefault();let e=Gt()[se()];e&&qt(e);return}if(t.key===`Escape`){t.preventDefault(),V(!0);return}}if((t.key===`ArrowUp`||t.key===`ArrowDown`)&&(r()===``||ve()!==void 0)){let n=nc(e.sessionKey);if(n.length>0){if(t.preventDefault(),t.key===`ArrowUp`){let e=ve()===void 0?n.length-1:Math.max(0,ve()-1);ye(e),i(n[e]??``)}else if(ve()!==void 0){let e=ve()+1;e>=n.length?(ye(void 0),i(``)):(ye(e),i(n[e]??``))}}return}t.key===`Enter`&&!t.shiftKey&&!Nt()&&(t.preventDefault(),St())},l.$$input=e=>{V(!1),H(0),ye(void 0),i(e.currentTarget.value),Bl(e.currentTarget)},l.addEventListener(`paste`,e=>{let t=[...e.clipboardData?.items??[]].filter(e=>e.type.startsWith(`image/`)).map(e=>e.getAsFile()).filter(e=>!!e);t.length>0&&(e.preventDefault(),dt(t))});var g=Ae;typeof g==`function`?Pe(g,l):Ae=l,d.addEventListener(`change`,e=>{pt(e.currentTarget.files??[]),e.currentTarget.value=``});var _=Me;typeof _==`function`?Pe(_,d):Me=d,f.addEventListener(`change`,e=>{dt(e.currentTarget.files??[]),e.currentTarget.value=``});var v=Ne;return typeof v==`function`?Pe(v,f):Ne=f,p.$$click=()=>Me?.click(),m.$$click=()=>Ne?.click(),X(u,U(G,{get when(){return Le()},get children(){var e=il(),t=e.firstChild,n=t.nextSibling;return t.$$click=()=>o(`steer`),n.$$click=()=>o(`follow_up`),j(e=>{var r=a()===`steer`,i=a()===`follow_up`;return r!==e.e&&t.classList.toggle(`selected`,e.e=r),i!==e.t&&n.classList.toggle(`selected`,e.t=i),e},{e:void 0,t:void 0}),e}}),h),X(u,U(G,{get when(){return t()?.suggestedCommand},get children(){var e=al(),n=e.firstChild.nextSibling;return e.$$click=()=>i(t().suggestedCommand),X(n,()=>t().suggestedCommand),e}}),h),h.$$click=St,j(e=>{var t=Le()?`Message dreb — sends as steer while it works…`:`Message dreb…`,n=Kt()?`command-listbox`:void 0,r=Kt()?`command-option-${se()}`:void 0;return t!==e.e&&Y(l,`placeholder`,e.e=t),n!==e.t&&Y(l,`aria-controls`,e.t=n),r!==e.a&&Y(l,`aria-activedescendant`,e.a=r),e},{e:void 0,t:void 0,a:void 0}),j(()=>l.value=r()),n}}),null),X(c,U(G,{get when(){return t()?.uiRequests[0]},keyed:!0,children:e=>U(G,{get when(){return e.method!==`ask`},get children(){return U(Vl,{request:e,onRespond:Je})}})}),null),X(c,U(G,{get when(){return d()},get children(){return U(Wl,{get sessionKey(){return e.sessionKey},get state(){return n()?.state},onClose:()=>f(!1),onSelected:t=>e.store.setRuntimeModel(e.sessionKey,t)})}}),null),X(c,U(G,{get when(){return y()},get children(){return U(nt,{title:`compact context`,onDismiss:()=>b(!1),get actions(){return[(()=>{var e=lc();return e.$$click=()=>b(!1),e})(),(()=>{var t=Cl();return t.$$click=async()=>{b(!1);try{await Q.compact(e.sessionKey)}catch(e){O(e instanceof Error?e.message:String(e))}},t})()]},get children(){return sl()}})}}),null),X(c,U(G,{get when(){return C()},get children(){return U(Ul,{get resources(){return ce()},get error(){return ue()},onClose:()=>w(!1)})}}),null),X(c,U(G,{get when(){return be()},get children(){return U(nt,{title:`fork from message`,onDismiss:()=>xe(!1),get children(){return[U(G,{get when(){return we()},get children(){var e=Cc();return X(e,we),e}}),U(G,{get when(){return Se().length>0},get fallback(){return wl()},get children(){var e=cl();return X(e,U(W,{get each(){return Se()},children:e=>(()=>{var t=Tl(),n=t.firstChild,r=n.nextSibling;return t.$$click=()=>ht(e.entryId),X(n,()=>e.entryId),X(r,()=>e.text),t})()})),e}})]}})}}),null),X(c,U(G,{get when(){return x()},get children(){return U(Kl,{get current(){return Pt()??``},onClose:()=>S(!1),onRename:async t=>{try{await Q.rename(e.sessionKey,t),S(!1)}catch(e){O(e instanceof Error?e.message:String(e))}}})}}),null),j(e=>{var t=!!h(),n=h()?`show session details`:`hide session details`,r=!!_(),i=_()?`show composer and controls`:`hide composer and controls`;return t!==e.e&&u.classList.toggle(`collapsed`,e.e=t),n!==e.t&&Y(N,`title`,e.t=n),r!==e.a&&L.classList.toggle(`collapsed`,e.a=r),i!==e.o&&Y(z,`title`,e.o=i),e},{e:void 0,t:void 0,a:void 0,o:void 0}),c})()}function Kl(e){let[t,n]=k(e.current);return U(nt,{title:`rename session`,get onDismiss(){return e.onClose},get actions(){return[(()=>{var t=lc();return Me(t,`click`,e.onClose,!0),t})(),(()=>{var n=El();return n.$$click=()=>e.onRename(t().trim()),j(()=>n.disabled=!t().trim()),n})()]},get children(){var e=sc(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e}})}Ae([`input`,`click`,`keydown`]);var ql=[{id:`default`,label:`entropist.ca`},{id:`dim`,label:`Dim`},{id:`solarized`,label:`Solarized`},{id:`gruvbox`,label:`Gruvbox`},{id:`qud`,label:`Caves of Qud`},{id:`vangogh`,label:`Van Gogh`},{id:`okabe`,label:`Colorblind-safe (Okabe-Ito)`},{id:`tol`,label:`Colorblind-safe (Paul Tol)`}],Jl=ql.map(e=>e.id),Yl=[`system`,`light`,`dark`],Xl=`dreb.dashboard.theme`,Zl=`dreb.dashboard.colorMode`,Ql=`default`,$l=`system`;function eu(e){return typeof e==`string`&&Jl.includes(e)}function tu(e){return typeof e==`string`&&Yl.includes(e)}function nu(){if(typeof window>`u`)return Ql;try{let e=window.localStorage.getItem(Xl);return eu(e)?e:Ql}catch{return Ql}}function ru(){if(typeof window>`u`)return $l;try{let e=window.localStorage.getItem(Zl);return tu(e)?e:$l}catch{return $l}}function iu(e,t,n){if(!(typeof window>`u`))try{t===n?window.localStorage.removeItem(e):window.localStorage.setItem(e,t)}catch{}}var[au,ou]=k(nu()),[su,cu]=k(ru()),lu=au,uu=su;function du(e){let t=e.defaultView??(typeof window<`u`?window:void 0);return!t||typeof t.getComputedStyle!=`function`?``:t.getComputedStyle(e.documentElement).getPropertyValue(`--bg`).trim()}function fu(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=t.documentElement;if(!n)return;let r=au(),i=su();if(r===Ql?n.removeAttribute(`data-theme`):n.setAttribute(`data-theme`,r),i===$l?n.removeAttribute(`data-color-mode`):n.setAttribute(`data-color-mode`,i),!(r!==Ql||i!==$l))n.style.removeProperty(`color-scheme`);else{let e=i===`light`?`light`:i===`dark`?`dark`:`light dark`;n.style.setProperty(`color-scheme`,e)}}catch{}}function pu(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=du(t);if(!n)return;let r=t.querySelector(`meta[name="theme-color"]:not([media])`);if(!r){r=t.createElement(`meta`),r.setAttribute(`name`,`theme-color`);let e=t.head??t.getElementsByTagName(`head`)[0];e&&e.insertBefore(r,e.firstChild)}r.setAttribute(`content`,n)}catch{}}function mu(e){let t=eu(e)?e:Ql;ou(t),iu(Xl,t,Ql),fu(),pu()}function hu(e){let t=tu(e)?e:$l;cu(t),iu(Zl,t,$l),fu(),pu()}var gu=null,_u=!1;function vu(){su()===$l&&pu()}function yu(e){e.key!==null&&e.key!==`dreb.dashboard.theme`&&e.key!==`dreb.dashboard.colorMode`||bu()}function bu(){ou(nu()),cu(ru()),fu(),pu()}function xu(){if(!(typeof window>`u`)){try{typeof window.matchMedia==`function`&&(gu=window.matchMedia(`(prefers-color-scheme: dark)`),typeof gu.addEventListener==`function`?gu.addEventListener(`change`,vu):typeof gu.addListener==`function`&&gu.addListener(vu))}catch{}try{window.addEventListener(`storage`,yu)}catch{}}}function Su(){bu(),!_u&&(_u=!0,xu())}var Cu=J(`<div class=appearance-controls><div class=setting-row><span class=setting-label><span class=name>color mode</span><span class=hint>this browser only — “system” follows your OS light/dark preference</span></span><span class=setting-control><select id=pref-color-mode></select></span></div><div class=theme-gallery>`),wu=J(`<option>`),Tu=J(`<button type=button class=theme-card><div class=theme-card-preview><div class=theme-card-swatch><span class=theme-card-name></span><span class=theme-card-muted>The quick brown fox.</span></div><div class=theme-card-chips></div><pre class=theme-card-code><code class=hljs><span class=hljs-keyword>const</span> <span class=hljs-variable>count</span><span class=hljs-operator> = </span><span class=hljs-number>42</span><span class=hljs-punctuation>;</span>
|
|
75
75
|
<span class=hljs-comment>// preview</span>
|
|
76
|
-
<span class=hljs-function>render</span><span class=hljs-punctuation>(</span><span class=hljs-string>"ok"</span><span class=hljs-punctuation>)</span><span class=hljs-punctuation>;</span></code></pre></div><span class=theme-card-footer><span class=theme-card-title></span><span class=theme-card-state>`),Du=[`running`,`attention`,`idle`,`error`];function Ou(){let e=()=>{let e=du();return e===`system`?void 0:e};return(()=>{var t=wu(),n=t.firstChild,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling;return r.addEventListener(`change`,e=>gu(e.currentTarget.value)),X(r,U(W,{each:Xl,children:e=>(()=>{var t=Tu();return t.value=e,X(t,e),t})()})),X(i,U(W,{each:Jl,children:t=>{let n=()=>uu()===t.id;return(()=>{var r=Eu(),i=r.firstChild,a=i.firstChild,o=a.firstChild,s=a.nextSibling,c=i.nextSibling.firstChild,l=c.nextSibling;return r.$$click=()=>hu(t.id),X(o,()=>t.label),X(s,U(W,{each:Du,children:e=>U(Qe,{status:e,label:``})})),X(c,()=>t.label),X(l,()=>n()?`✓ active`:`select`),j(i=>{var a=!!n(),o=t.id,s=t.id,c=e(),l=n(),u=n()?`true`:void 0,d=`use the ${t.label} theme`;return a!==i.e&&r.classList.toggle(`active`,i.e=a),o!==i.t&&Y(r,`data-theme-card`,i.t=o),s!==i.a&&Y(r,`data-theme`,i.a=s),c!==i.o&&Y(r,`data-color-mode`,i.o=c),l!==i.i&&Y(r,`aria-pressed`,i.i=l),u!==i.n&&Y(r,`aria-current`,i.n=u),d!==i.s&&Y(r,`title`,i.s=d),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),r})()}})),j(()=>r.value=du()),t})()}Ae([`click`]);var ku=J(`<select><option value=on>on</option><option value=off>off`),Au=J(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),ju=J(`<div class=model-list style=max-height:320px>`),Mu=J(`<p class="muted small">No matching models.`),Nu=J(`<section class=model-provider-group><div class=model-provider-heading>`),Pu=J(`<span class=model-name>`),Fu=J(`<span class=model-reasoning>think`),Iu=J(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),Lu=J(`<div class=settings-error>`),Ru=J(`<div class=settings-warning>`),zu=J(`<p class="muted small"style=margin-bottom:16px>✓ saved`),Bu=J(`<div class=setting-row><span class=setting-label><span class=name>pairing code</span><span class=hint>new devices enter this in the pairing screen; it rotates every 30s</span></span><span class=setting-control><code style=font-size:var(--fs-h2);letter-spacing:0.08em>`),Vu=J(`<p class="muted small"style=padding-top:8px>No remote devices paired. Launch with <code>--remote --allow <identity></code> to enable Tailscale access.`),Hu=J(`<p>This exits the dashboard server process and terminates <strong>all running sessions</strong>.`),Uu=J(`<div class=screen-fill><main class="container settings-wrap"><h1>settings</h1><p class=settings-intro>Ordinary defaults apply only to new sessions. Dispatch Arbiter changes apply to subsequent child spawns. Context trust changes apply to subsequent lazy loads in live sessions; already injected content cannot be retracted. Writes go to the global settings file on the host.</p><section class=settings-section><h2>dashboard</h2><div class=appearance-block><div class="setting-row appearance-heading-row"><span class=setting-label><span class=name>appearance</span><span class=hint>this browser only — theme and light/dark mode are stored in localStorage and are independent of the TUI theme. Okabe-Ito and Paul Tol are colorblind-safe palettes.</span></span></div></div><div class=setting-row><label class=setting-label for=pref-image-display-mode><span class=name>tool-result images</span><span class=hint>this browser only — placeholders make no automatic request, previews are bounded to 1024 px and 256 KiB, and originals automatically transfer full files. Choosing originals is the informed network-data opt-in.</span></label><span class=setting-control><select id=pref-image-display-mode><option value=placeholders>placeholders</option><option value=previews>bounded previews</option><option value=originals>automatic originals</option></select></span></div><div class=setting-row><span class=setting-label><span class=name>always expand thinking</span><span class=hint>this browser only — stored in localStorage, not the host settings file</span></span><span class=setting-control><label class=checkbox-control><input id=pref-expand-thinking type=checkbox><span>open by default</span></label></span></div><div class=setting-row><span class=setting-label><span class=name>auto-expand tool cards</span><span class=hint>this browser only — stored in localStorage, not the host settings file</span></span><span class=setting-control style=display:grid;gap:6px></span></div><div class=setting-row><span class=setting-label><span class=name>needs-attention notifications</span><span class=hint></span></span><span class=setting-control><label class=checkbox-control><input id=pref-notifications type=checkbox><span></span></label></span></div><div class=setting-row><span class=setting-label><span class=name>restart dashboard service</span><span class=hint></span></span><span class=setting-control><button type=button class="btn btn-small btn-danger"></button></span></div></section><section class=settings-section><h2>devices</h2><div class=device-row><span>this machine <span class=this-device></span></span><span class=meta>local · always allowed</span></div></section><footer>dreb<!> · dashboard`),Wu=J(`<div>`),Gu=J(`<p class=muted>`),Ku=J(`<section class=settings-section><h2>model</h2><div class=setting-row><span class=setting-label><span class=name>default model</span><span class=hint>used by new sessions; validated against configured providers</span></span><span class=setting-control><button type=button class="btn btn-small model-picker-button"></button></span></div><div class=setting-row><span class=setting-label><span class=name>default thinking level</span><span class=hint></span></span><span class=setting-control><select></select></span></div><div class=setting-row><span class=setting-label><span class=name>transport</span><span class=hint>preferred model transport for new sessions</span></span><span class=setting-control><select>`),qu=J(`<section class="settings-section dispatch-arbiter-settings"><h2>dispatch arbiter</h2><p class="muted small"style=margin-bottom:8px>Global-only, fully headless pre-spawn routing. Project settings cannot change it. When enabled, invalid model, scope, guide, inference, or output prevents the affected child from spawning.</p><div class=setting-row><span class=setting-label><span class=name>enabled</span><span class=hint>disabled by default; fail closed when enabled</span></span><span class=setting-control></span></div><div class=setting-row><span class=setting-label><span class=name>arbiter model</span><span class=hint>exact authenticated provider/model; no fallback</span></span><span class=setting-control><button type=button class="btn btn-small model-picker-button"></button></span></div><div class=setting-row><span class=setting-label><span class=name>arbiter thinking</span><span class=hint>validated against the selected arbiter model</span></span><span class=setting-control><select></select></span></div><div class=setting-row><label class=setting-label for=dispatch-arbiter-guide-path><span class=name>routing guide path</span><span class=hint>blank uses ~/.dreb/agent/model-routing-guide.md</span></label><span class=setting-control><input id=dispatch-arbiter-guide-path type=text placeholder=~/.dreb/agent/model-routing-guide.md></span></div><div data-testid=dispatch-arbiter-readiness><strong>status:</strong> `),Ju=J(`<div class="setting-row agent-context-row"><span class=setting-label><span class=name>agent definition context</span><span class=hint>choose a project to include its .dreb/agents definitions</span></span><span class=setting-control><select><option value>global/home only`),Yu=J(`<section class=settings-section><h2>agent models</h2><p class="muted small"style=margin-bottom:8px>Per-agent fallback lists. First available model wins; empty lists revert to the default model. Agent definitions are loaded from an explicit project context so project-local agents do not depend on which runtime opened first.`),Xu=J(`<section class=settings-section><h2>images</h2><div class=setting-row><span class=setting-label><span class=name>auto-resize images</span><span class=hint>resize image inputs before sending them to providers</span></span><span class=setting-control></span></div><div class=setting-row><span class=setting-label><span class=name>block images</span><span class=hint>prevent image inputs from being sent to providers</span></span><span class=setting-control>`),Zu=J(`<section class=settings-section><h2>queueing</h2><div class=setting-row><span class=setting-label><span class=name>steering delivery</span><span class=hint>deliver queued steers all at once, or one per turn</span></span><span class=setting-control><select></select></span></div><div class=setting-row><span class=setting-label><span class=name>follow-up delivery</span><span class=hint>deliver queued follow-ups all at once, or one per turn</span></span><span class=setting-control><select>`),Qu=J(`<section class=settings-section><h2>behavior</h2><div class=setting-row><span class=setting-label><span class=name>skill slash commands</span><span class=hint>register skills as slash commands in new sessions</span></span><span class=setting-control></span></div><div class=context-trust-subsection><h3>trusted context folders</h3><p class="muted small">Specific global roots that may lazy-load nested AGENTS.md/CLAUDE.md and all descendants.</p><div class="settings-warning context-trust-global-warning"><strong>Global-only policy.</strong> Project <code>.dreb/settings.json</code> cannot enable, disable, or extend nested-context trust. Only these global settings and the Files view can; a cloned repository cannot grant itself trust.</div><form class=trusted-context-folder-add><label for=trusted-context-folder-path>add folder by path</label><input id=trusted-context-folder-path type=text placeholder=/path/to/project><button type=submit class="btn btn-small"></button></form></div><div class=setting-row><span class=setting-label><span class=name>global expert nested-context trust</span><span class=hint>allow nested AGENTS.md/CLAUDE.md from any resolvable directory</span></span><span class=setting-control></span></div><div class="settings-warning context-expert-warning"><strong>Expert global override.</strong> Project <code>.dreb/settings.json</code> cannot enable, disable, or extend nested-context trust; a cloned repository cannot grant itself trust. When ON, nested instructions from any resolvable directory may load, including untrusted prompt-injection content. Leave this OFF and use trusted folders for projects you control.</div><div class=setting-row><span class=setting-label><span class=name>hide thinking blocks</span><span class=hint>hide raw thinking blocks in rendered transcripts</span></span><span class=setting-control>`),$u=J(`<section class=settings-section><h2>reliability</h2><div class=setting-row><span class=setting-label><span class=name>auto-compaction</span><span class=hint>summarize old context when the window fills</span></span><span class=setting-control></span></div><div class=setting-row><span class=setting-label><span class=name>auto-retry</span><span class=hint>retry transient stream errors (rate limits, 5xx)</span></span><span class=setting-control>`),ed=J(`<p class="muted small settings-footnote">TUI-only settings (cursor, editor) are managed in the terminal /settings menu. The dashboard appearance (theme + light/dark mode) is set here, per-browser, and is independent of the TUI theme.`),td=J(`<option>`),nd=J(`<p class="muted small">No agent definitions found.`),rd=J(`<div class=agent-model-editor><button type=button class="btn btn-small">add model…`),id=J(`<div class=agent-model-row><div class=agent-model-summary><span class=agent-model-name></span><span class=agent-model-description></span></div><div class=agent-model-fallbacks></div><button type=button class="btn btn-small agent-model-edit">`),ad=J(`<span class="muted small">default`),od=J(`<span class=agent-model-chip>. `),sd=J(`<p class="muted small">Using the default model.`),cd=J(`<div class=agent-model-entry><span></span><div class=agent-model-entry-actions><button type=button class="btn btn-small">↑</button><button type=button class="btn btn-small">↓</button><button type=button class="btn btn-small">×`),ld=J(`<p class="muted small trusted-context-empty">No trusted folders. Use the Files view to trust a project folder and its descendants.`),ud=J(`<div class=trusted-context-folder-row><code></code><span class=meta>and all descendants</span><button type=button class="btn btn-small btn-danger">`),dd=J(`<label class=checkbox-control><input type=checkbox><span>`),fd=J(`<div class=device-row><span></span><span class=meta> · paired </span><span class=actions><button type=button class="btn btn-small btn-danger">unpair`),pd=J(`<button type=button class="btn btn-small">cancel`),md=J(`<button type=button class="btn btn-small btn-danger">restart`),hd=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],gd=[`all`,`one-at-a-time`],_d=[`sse`,`websocket`,`auto`];function vd(e){return`${e.provider}/${e.id}`}function yd(e){let t=vd(e);return e.name?`${t} — ${e.name}`:t}function bd(e){return e.defaultProvider&&e.defaultModel?`${e.defaultProvider}/${e.defaultModel}`:`choose model…`}function xd(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function Sd(){if(typeof Notification>`u`){if(window.isSecureContext===!1)return`insecure`;let e=/iPad|iPhone|iPod/.test(navigator.userAgent),t=navigator.standalone===!0||window.matchMedia?.(`(display-mode: standalone)`)?.matches===!0;return e&&!t?`ios-install`:`unsupported`}return Notification.permission}function Cd(e){let t=new Map;for(let n of e){let e=t.get(n.provider)??[];e.push(n),t.set(n.provider,e)}return[...t.entries()].map(([e,t])=>({provider:e,models:t}))}function wd(e,t,n){let r=t+n;if(r<0||r>=e.length)return e;let i=[...e];return[i[t],i[r]]=[i[r],i[t]],i}function Td(e){return(()=>{var t=ku();return t.addEventListener(`change`,t=>{e.onChange(t.currentTarget.value===`on`)===!1&&(t.currentTarget.value=e.value?`on`:`off`)}),j(()=>t.value=e.value?`on`:`off`),t})()}function Ed(e){let[t,n]=k(``),r=()=>new Set(e.selected??[]),i=N(()=>{let n=t().toLowerCase();return Cd(e.models.filter(e=>!n||xd(e,n)).slice(0,100))}),a=e=>r().has(vd(e));return U(nt,{get title(){return e.title},get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[(()=>{var e=Au(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e})(),(()=>{var t=ju();return X(t,U(G,{get when(){return i().length>0},get fallback(){return Mu()},get children(){return U(W,{get each(){return i()},children:t=>(()=>{var n=Nu(),r=n.firstChild;return X(r,()=>t.provider),X(n,U(W,{get each(){return t.models},children:t=>(()=>{var n=Iu(),r=n.firstChild,i=r.nextSibling,o=i.nextSibling;return n.$$click=()=>e.onPick(t),X(r,()=>a(t)?`✓`:``),X(i,()=>t.id),X(n,U(G,{get when(){return t.name},get children(){var e=Pu();return X(e,()=>t.name),e}}),o),X(o,()=>t.provider),X(n,U(G,{get when(){return t.reasoning},get children(){return Fu()}}),null),j(e=>{var r=!!a(t),i=yd(t);return r!==e.e&&n.classList.toggle(`current`,e.e=r),i!==e.t&&Y(n,`title`,e.t=i),e},{e:void 0,t:void 0}),n})()}),null),n})()})}})),t})()]}})}function Dd(e){let[t,n]=k(),[r,i]=k([]),[a,o]=k(!1),[s,c]=k(),[l,u]=k(),[d,f]=k(),[p,m]=k(``),[h,g]=k(!1),[_,v]=k(Sd()),[y,{mutate:b,refetch:x}]=F(async()=>{n(void 0);try{return await Q.settings()}catch(e){n(e instanceof Error?e.message:String(e));return}}),[S]=F(y,async()=>{try{let{models:e}=await Q.settingsModels();return e}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),C=N(()=>{let t=new Set;for(let n of e.store.fleet().runtimes)t.add(n.cwd);for(let n of e.store.fleet().diskSessions)t.add(n.cwd);return[...t].sort((e,t)=>e.localeCompare(t))}),[w]=F(()=>({settings:y(),cwd:d()}),async({cwd:e})=>{if(!y())return[];try{let{agentTypes:t}=await Q.agentTypes(e);return t}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),[T,{refetch:E}]=F(async()=>{let{devices:e}=await Q.devices();return e}),[D,O]=k(),A;function M(){A&&clearTimeout(A),A=void 0}function P(e){M();let t=Math.max(250,e??3e4)+100;A=setTimeout(()=>void I(),t)}async function I(){try{let e=await Q.pairingCode();if(!e.enabled||!e.code){O(void 0),M();return}O(e),P(e.expiresInMs)}catch(e){console.warn(`pairing code unavailable`,e),O(void 0),M()}}let[L]=F(async()=>{try{let{version:e}=await Q.version();return e}catch{return}}),[ee]=F(async()=>{try{return await Q.serverInfo()}catch{return}}),[te,ne]=k(!1),[re,ie]=k(!1),[ae,B]=k();async function oe(){B(void 0),ie(!0);try{await Q.restartServer()}catch(e){B(e instanceof Error?e.message:String(e)),ie(!1)}}async function V(e){n(void 0),i([]),o(!1);try{let t=await Q.saveSettings(e);b(t),i(t.warnings??[]),o(!0),setTimeout(()=>o(!1),2e3)}catch(e){n(e instanceof Error?e.message:String(e)),await x()}}let se=Promise.resolve(),H;function ce(){return H??y()?.subagentArbiter??{}}function le(e){let t={...ce(),...e};H=t;let r=y();r&&b({...r,subagentArbiter:t}),se=se.then(async()=>{n(void 0),i([]),o(!1);try{let e=await Q.saveSettings({subagentArbiter:t});i(e.warnings??[]),o(!0),setTimeout(()=>o(!1),2e3),H===t?(H=e.subagentArbiter??void 0,b(e)):b({...e,subagentArbiter:H})}catch(e){let r=e instanceof Error?e.message:String(e),i=await x();n(r),H===t?H=i?.subagentArbiter??void 0:i&&b({...i,subagentArbiter:H})}})}async function ue(e,t){await V({agentModels:{[e]:t}})}async function de(e){n(void 0),g(!0);try{let t=await Q.trustContextFolder(e);b(t.settings),m(``)}catch(e){n(e instanceof Error?e.message:String(e))}finally{g(!1)}}async function fe(e){n(void 0),g(!0);try{let t=await Q.removeTrustedContextFolder(e);b(t.settings)}catch(e){n(e instanceof Error?e.message:String(e))}finally{g(!1)}}function pe(e){return y()?.agentModels?.[e]??[]}function me(e){let t=e.subagentArbiter;return t?.enabled===!0?typeof t.model!=`string`||!t.model.trim()?{ready:!1,message:`not ready — choose an arbiter model`}:t.thinking!==void 0&&!hd.some(e=>e===t.thinking)?{ready:!1,message:`not ready — arbiter thinking setting is invalid`}:t.guidePath!==void 0&&typeof t.guidePath!=`string`?{ready:!1,message:`not ready — routing guide path is invalid`}:t.guidePath?.trim()?{ready:!0,message:`enabled — live scope and guide are validated before every child spawn`}:{ready:!0,message:`enabled — using ~/.dreb/agent/model-routing-guide.md; live scope/guide checked at dispatch`}:{ready:!1,message:`disabled`}}async function he(){typeof Notification>`u`||v(await Notification.requestPermission())}R(()=>void I()),z(M);let ge=()=>e.store.auth();return(()=>{var i=Uu(),o=i.firstChild,g=o.firstChild.nextSibling.nextSibling,v=g.firstChild.nextSibling;v.firstChild;var b=v.nextSibling,x=b.firstChild.nextSibling.firstChild,O=b.nextSibling,k=O.firstChild.nextSibling.firstChild.firstChild,A=O.nextSibling,M=A.firstChild.nextSibling,N=A.nextSibling,P=N.firstChild,F=P.firstChild.nextSibling,I=P.nextSibling.firstChild.firstChild,R=I.nextSibling,z=N.nextSibling.firstChild,ie=z.firstChild.nextSibling,B=z.nextSibling.firstChild,se=g.nextSibling,H=se.firstChild.nextSibling.firstChild.firstChild.nextSibling,_e=se.nextSibling,ve=_e.firstChild.nextSibling;return ve.nextSibling,X(i,U(et,{get store(){return e.store},active:`settings`}),o),X(o,U(G,{get when(){return t()},get children(){var e=Lu();return X(e,t),e}}),g),X(o,U(G,{get when(){return r().length>0},get children(){var e=Ru();return X(e,U(W,{get each(){return r()},children:e=>(()=>{var t=Wu();return X(t,e),t})()})),e}}),g),X(o,U(G,{get when(){return a()},get children(){return zu()}}),g),X(o,U(G,{get when(){return y()},get fallback(){return(()=>{var e=Gu();return X(e,()=>t()?`Settings could not be loaded — see the error above.`:`Loading settings…`),e})()},children:e=>[(()=>{var t=Ku(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling,a=i.firstChild,o=a.firstChild.nextSibling,s=a.nextSibling.firstChild,l=i.nextSibling.firstChild.nextSibling.firstChild;return r.$$click=()=>c({kind:`default`}),X(r,()=>bd(e())),X(o,()=>hd.join(` · `)),s.addEventListener(`change`,e=>V({defaultThinkingLevel:e.currentTarget.value})),X(s,U(W,{each:hd,children:e=>(()=>{var t=td();return t.value=e,X(t,e),t})()})),l.addEventListener(`change`,e=>V({transport:e.currentTarget.value})),X(l,U(W,{get each(){return[..._d]},children:e=>(()=>{var t=td();return t.value=e,X(t,e),t})()})),j(()=>s.value=e().defaultThinkingLevel??`off`),j(()=>l.value=e().transport??`sse`),t})(),(()=>{var t=qu(),r=t.firstChild.nextSibling.nextSibling,i=r.firstChild.nextSibling,a=r.nextSibling,o=a.firstChild.nextSibling.firstChild,s=a.nextSibling,l=s.firstChild.nextSibling.firstChild,u=s.nextSibling,d=u.firstChild.nextSibling.firstChild,f=u.nextSibling;return f.firstChild.nextSibling,X(i,U(Td,{get value(){return e().subagentArbiter?.enabled===!0},onChange:e=>{let t=ce();return e&&(typeof t.model!=`string`||!t.model.trim())?(n(`Choose an exact Dispatch Arbiter model before enabling it.`),c({kind:`arbiter`}),!1):(le({enabled:e}),!0)}})),o.$$click=()=>c({kind:`arbiter`}),X(o,(()=>{var t=q(()=>typeof e().subagentArbiter?.model==`string`);return()=>t()?e().subagentArbiter?.model:`choose model…`})()),l.addEventListener(`change`,e=>le({thinking:e.currentTarget.value})),X(l,U(W,{each:hd,children:e=>(()=>{var t=td();return t.value=e,X(t,e),t})()})),d.addEventListener(`change`,e=>{le({guidePath:e.currentTarget.value.trim()||void 0})}),X(f,()=>me(e()).message,null),j(()=>je(f,me(e()).ready?`settings-warning`:`muted small`)),j(()=>l.value=typeof e().subagentArbiter?.thinking==`string`&&hd.some(t=>t===e().subagentArbiter?.thinking)?e().subagentArbiter?.thinking:`off`),j(()=>d.value=typeof e().subagentArbiter?.guidePath==`string`?e().subagentArbiter?.guidePath:``),t})(),(()=>{var t=Yu();return t.firstChild.nextSibling,X(t,U(G,{get when(){return C().length>0},get children(){var e=Ju(),t=e.firstChild.nextSibling.firstChild;return t.firstChild,t.addEventListener(`change`,e=>f(e.currentTarget.value||void 0)),X(t,U(W,{get each(){return C()},children:e=>(()=>{var t=td();return t.value=e,X(t,e),t})()}),null),j(()=>Y(t,`title`,d()??`global/home only`)),j(()=>t.value=d()??``),e}}),null),X(t,U(G,{get when(){return(w()??[]).length>0},get fallback(){return nd()},get children(){return U(W,{get each(){return w()??[]},children:t=>{let n=()=>e().agentModels?.[t.name]??[];return(()=>{var e=id(),r=e.firstChild,i=r.firstChild,a=i.nextSibling,o=r.nextSibling,s=o.nextSibling;return X(i,()=>t.name),X(a,()=>t.description),X(o,U(G,{get when(){return n().length>0},get fallback(){return ad()},get children(){return U(W,{get each(){return n()},children:(e,t)=>(()=>{var n=od(),r=n.firstChild;return X(n,()=>t()+1,r),X(n,e,null),n})()})}})),s.$$click=()=>u(l()===t.name?void 0:t.name),X(s,()=>l()===t.name?`done`:`edit`),X(e,U(G,{get when(){return l()===t.name},get children(){var e=rd(),r=e.firstChild;return X(e,U(G,{get when(){return n().length>0},get fallback(){return sd()},get children(){return U(W,{get each(){return n()},children:(e,r)=>(()=>{var i=cd(),a=i.firstChild,o=a.nextSibling.firstChild,s=o.nextSibling,c=s.nextSibling;return X(a,e),o.$$click=()=>void ue(t.name,wd(n(),r(),-1)),s.$$click=()=>void ue(t.name,wd(n(),r(),1)),c.$$click=()=>void ue(t.name,n().filter((e,t)=>t!==r())),j(e=>{var t=r()===0,i=r()===n().length-1;return t!==e.e&&(o.disabled=e.e=t),i!==e.t&&(s.disabled=e.t=i),e},{e:void 0,t:void 0}),i})()})}}),r),r.$$click=()=>c({kind:`agent`,agentName:t.name}),e}}),null),e})()}})}}),null),t})(),(()=>{var t=Xu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return X(r,U(Td,{get value(){return e().imageAutoResize!==!1},onChange:e=>V({imageAutoResize:e})})),X(i,U(Td,{get value(){return e().blockImages===!0},onChange:e=>V({blockImages:e})})),t})(),(()=>{var t=Zu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling.firstChild.nextSibling.firstChild;return r.addEventListener(`change`,e=>V({steeringMode:e.currentTarget.value})),X(r,U(W,{get each(){return[...gd]},children:e=>(()=>{var t=td();return t.value=e,X(t,e),t})()})),i.addEventListener(`change`,e=>V({followUpMode:e.currentTarget.value})),X(i,U(W,{get each(){return[...gd]},children:e=>(()=>{var t=td();return t.value=e,X(t,e),t})()})),j(()=>r.value=e().steeringMode??`all`),j(()=>i.value=e().followUpMode??`all`),t})(),(()=>{var t=Qu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling,a=i.firstChild.nextSibling.nextSibling.nextSibling,o=a.firstChild.nextSibling,s=o.nextSibling,c=i.nextSibling,l=c.firstChild.nextSibling,u=c.nextSibling.nextSibling.firstChild.nextSibling;return X(r,U(Td,{get value(){return e().enableSkillCommands!==!1},onChange:e=>V({enableSkillCommands:e})})),X(i,U(G,{get when(){return(e().trustedContextFolders??[]).length>0},get fallback(){return ld()},get children(){return U(W,{get each(){return e().trustedContextFolders??[]},children:e=>(()=>{var t=ud(),n=t.firstChild,r=n.nextSibling.nextSibling;return X(n,e),r.$$click=()=>void fe(e),X(r,()=>h()?`revoking…`:`revoke trust`),j(()=>r.disabled=h()),t})()})}}),a),a.addEventListener(`submit`,e=>{e.preventDefault();let t=p().trim();t&&de(t)}),o.$$input=e=>m(e.currentTarget.value),X(s,()=>h()?`trusting…`:`trust folder`),X(l,U(Td,{get value(){return e().autoLoadNestedContext===!0},onChange:e=>V({autoLoadNestedContext:e})})),X(u,U(Td,{get value(){return e().hideThinkingBlock===!0},onChange:e=>V({hideThinkingBlock:e})})),j(()=>s.disabled=h()||!p().trim()),j(()=>o.value=p()),t})(),(()=>{var t=$u(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return X(r,U(Td,{get value(){return e().compactionEnabled!==!1},onChange:e=>V({compactionEnabled:e})})),X(i,U(Td,{get value(){return e().retryEnabled!==!1},onChange:e=>V({retryEnabled:e})})),t})(),ed()]}),g),X(v,U(Ou,{}),null),x.addEventListener(`change`,e=>Mo(e.currentTarget.value)),k.addEventListener(`change`,e=>jo(e.currentTarget.checked)),X(M,U(W,{each:po,children:e=>(()=>{var t=dd(),n=t.firstChild,r=n.nextSibling;return n.addEventListener(`change`,t=>No(e,t.currentTarget.checked)),Y(n,`id`,`pref-tool-expand-${e}`),X(r,e),j(()=>n.checked=Po(e)),t})()})),X(F,(()=>{var e=q(()=>_()===`denied`);return()=>e()?`blocked by browser settings — re-enable notifications in site permissions`:q(()=>_()===`insecure`)()?`this page is not a secure context — notifications need HTTPS. Run the server with --https (tailscale cert <host>.<tailnet>.ts.net) and open it via the https:// hostname`:q(()=>_()===`ios-install`)()?`iOS notifications need the installed PWA — tap Share → Add to Home Screen, then open dreb from the home screen icon`:_()===`unsupported`?`browser notifications are unavailable in this environment`:`show a notification when the tab needs input (Android/desktop need the app installed on mobile; works over HTTPS or localhost)`})()),I.addEventListener(`change`,e=>{e.currentTarget.checked&&he()}),X(R,()=>_()===`granted`?`enabled`:`enable notifications`),X(ie,()=>ee()?.supervised?`restarts the server process (a supervisor respawns it with the latest build) — kills all running sessions`:`exits the server process — only auto-restarts if run under a supervisor (systemd, pm2, …); otherwise the dashboard goes down. kills all running sessions`),B.$$click=()=>ne(!0),X(B,()=>re()?`restarting…`:`restart`),X(g,U(G,{get when(){return ae()},get children(){var e=Lu();return X(e,ae),e}}),null),X(H,()=>ge()?.mode===`local`?`local`:`host`),X(se,U(G,{get when(){return q(()=>!!D()?.enabled)()&&D()?.code},get children(){var e=Bu(),t=e.firstChild.nextSibling.firstChild;return X(t,()=>D().code),e}}),null),X(se,U(W,{get each(){return T()??[]},children:e=>(()=>{var t=fd(),n=t.firstChild,r=n.nextSibling,i=r.firstChild,a=r.nextSibling.firstChild;return X(n,()=>e.device??e.id),X(r,()=>e.identity,i),X(r,()=>it(e.createdAt),null),a.$$click=async()=>{await Q.unpair(e.id),await E()},t})()}),null),X(se,U(G,{get when(){return(T()??[]).length===0},get children(){return Vu()}}),null),X(_e,(()=>{var e=q(()=>!!ee()?.version);return()=>e()?` v${ee().version}`:q(()=>!!L())()?` v${L()}`:``})(),ve),X(_e,U(G,{get when(){return ee()?.startedAt},get children(){return[` · server build, up `,q(()=>it(ee().startedAt))]}}),null),X(i,U(G,{get when(){return te()},get children(){return U(nt,{title:`restart dashboard service?`,onDismiss:()=>ne(!1),get actions(){return[(()=>{var e=pd();return e.$$click=()=>ne(!1),e})(),(()=>{var e=md();return e.$$click=()=>{ne(!1),oe()},e})()]},get children(){var e=Hu();return e.firstChild.nextSibling.nextSibling,X(e,()=>ee()?.supervised?` A supervisor is detected — the server should respawn automatically with the latest build.`:` No supervisor was detected — the dashboard will NOT come back on its own; you'll need to relaunch it manually.`,null),e}})}}),null),X(i,U(G,{get when(){return s()},children:e=>{let t=()=>{let t=e();return t.kind==="default"?`select default model`:t.kind===`arbiter`?`select Dispatch Arbiter model`:`add model for ${t.agentName}`},n=()=>{let t=e();return t.kind==="default"?y()?.defaultProvider&&y()?.defaultModel?[`${y().defaultProvider}/${y().defaultModel}`]:[]:t.kind===`arbiter`?y()?.subagentArbiter?.model?[y().subagentArbiter.model]:[]:pe(t.agentName)};return U(Ed,{get title(){return t()},get models(){return S()??[]},get selected(){return n()},onClose:()=>c(void 0),onPick:t=>{let n=e();if(c(void 0),n.kind==="default"){V({defaultProvider:t.provider,defaultModel:t.id});return}if(n.kind===`arbiter`){le({model:vd(t)});return}let r=vd(t),i=pe(n.agentName);i.includes(r)||ue(n.agentName,[...i,r])}})}}),null),j(e=>{var t=_()===`denied`||_()===`unsupported`||_()===`ios-install`||_()===`insecure`,n=re();return t!==e.e&&(I.disabled=e.e=t),n!==e.t&&(B.disabled=e.t=n),e},{e:void 0,t:void 0}),j(()=>x.value=Ao()),j(()=>k.checked=ko()),j(()=>I.checked=_()===`granted`),i})()}Ae([`input`,`click`]);var Od=J(`<div class="status-line arbitration-history">`),kd=J(`<p class=pair-error>`),Ad=J(`<div class=status-line><span class=working>● working`),jd=J(`<div class=session-screen><header class=session-bar><div class=session-bar-inner><a class=back>← </a><span class=agent-type>subagent · </span><span class=title></span><span class=right></span></div></header><main class=chat><div class=chat-inner></div></main><footer class=dock><div class=dock-inner><div class=readonly-note>viewing live — subagents can't be steered yet; the parent session controls this agent.`),Md=J(`<span>arbiter: `),Nd=J(`<p class=muted>`);function Pd(e){let t=e.step===void 0?``:`step ${e.step}: `;return e.status===`failure`?`${t}failed — ${e.errorMessage??e.errorCode??`unknown error`}`:!e.final||e.changed.length===0?`${t}kept ${e.proposed.agent} · ${e.proposed.model} · ${e.proposed.thinking}`:`${t}${e.changed.join(`, `)} changed → ${e.final.agent} · ${e.final.model} · ${e.final.thinking}`}function Fd(e){let t=()=>e.store.sessions[e.sessionKey],n=N(()=>t()?.backgroundAgents[e.agentId]),r=()=>t()?.subagents[e.agentId],i=N(()=>e.store.fleet().runtimes.find(t=>t.key===e.sessionKey)),a=()=>i()?.state.sessionName??e.sessionKey,[o,s]=k(),c,l,u=oo({scroller:()=>c});return R(()=>{let t=new AbortController;e.store.hydrateSubagent(e.sessionKey,e.agentId,t.signal).catch(e=>{t.signal.aborted&&Zs(e)||s(e instanceof Error?e.message:String(e))}),z(()=>t.abort())}),M(()=>{e.store.revisions[e.sessionKey],u.notifyContentChanged()}),R(()=>{u.observeContent(l),u.observeViewport(c),c&&z(co(u,c,{keyboard:`window`}))}),z(()=>u.dispose()),(()=>{var t=jd(),i=t.firstChild,s=i.firstChild.firstChild;s.firstChild;var u=s.nextSibling;u.firstChild;var d=u.nextSibling,f=d.nextSibling,p=i.nextSibling,m=p.firstChild,h=p.nextSibling.firstChild,g=h.firstChild;X(s,a,null),X(u,()=>n()?.agentType??`unknown`,null),X(d,()=>n()?.taskSummary??e.agentId),X(f,U(G,{get when(){return n()?.status===`running`},get fallback(){return U(Qe,{get status(){return n()?.status===`failed`?`error`:`idle`},get label(){return n()?.status}})},get children(){return U(Qe,{status:`running`})}}));var _=c;typeof _==`function`?Pe(_,p):c=p;var v=l;return typeof v==`function`?Pe(v,m):l=m,X(m,U(G,{get when(){return(n()?.arbitrations?.length??0)>0},get children(){var e=Od();return X(e,U(W,{get each(){return n()?.arbitrations??[]},children:e=>(()=>{var t=Md();return t.firstChild,X(t,()=>Pd(e),null),j(()=>je(t,e.status===`failure`?`error-reason`:`muted`)),t})()})),e}}),null),X(m,U(G,{get when(){return o()},get children(){var e=kd();return X(e,o),e}}),null),X(m,U(G,{get when(){return q(()=>!!r())()&&r().entries.length>0},get fallback(){return(()=>{var e=Nd();return X(e,()=>n()?`waiting for output from this agent…`:`no data for this agent — it may not have started writing its session log yet.`),e})()},get children(){return U(Xs,{get entries(){return r().entries},get who(){return n()?.agentType??`agent`},userLabel:`task from parent`,get resetKey(){return`${e.sessionKey}:${e.agentId}`},get imageScope(){return{runtimeKey:e.sessionKey,agentId:e.agentId}}})}}),null),X(h,U(G,{get when(){return r()?.streaming},get children(){return Ad()}}),g),j(()=>Y(s,`href`,`#/session/${e.sessionKey}`)),t})()}function Id(e){let t=e?.method;if(t===`select`||t===`confirm`||t===`input`||t===`editor`)return{id:String(e.id),method:t,title:String(e.title??``),message:e.message,options:e.options,prefill:e.prefill,placeholder:e.placeholder};if(t===`ask`)return{id:String(e.id),method:`ask`,title:String(e.title??`Question`),question:String(e.question??``),options:e.options,allowFreeText:e.allowFreeText,multiSelect:e.multiSelect,multiline:e.multiline,timeout:typeof e.timeout==`number`?e.timeout:void 0,expiresAt:typeof e.expiresAt==`number`?e.expiresAt:void 0}}function Ld(e){return{key:e,entries:[],streaming:!1,compacting:!1,statusEntries:[],tasks:[],backgroundAgents:{},uiRequests:[],toasts:[],widgets:{above:[],below:[]},needsAttention:!1,subagents:{}}}var Rd=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]),zd=/^[0-9a-f]{64}$/;function Bd(e){if(typeof e==`string`)return{text:e,images:[]};if(!Array.isArray(e))return{text:``,images:[]};let t=[],n=[];for(let r of e){let e=r;typeof e?.text==`string`?t.push(e.text):e?.type===`image_reference`&&typeof e.id==`string`&&zd.test(e.id)&&typeof e.mimeType==`string`&&Rd.has(e.mimeType)&&typeof e.size==`number`&&Number.isSafeInteger(e.size)&&e.size>0&&n.push({id:e.id,mimeType:e.mimeType,size:e.size})}return{text:t.join(`
|
|
77
|
-
`),images:n}}function
|
|
76
|
+
<span class=hljs-function>render</span><span class=hljs-punctuation>(</span><span class=hljs-string>"ok"</span><span class=hljs-punctuation>)</span><span class=hljs-punctuation>;</span></code></pre></div><span class=theme-card-footer><span class=theme-card-title></span><span class=theme-card-state>`),Eu=[`running`,`attention`,`idle`,`error`];function Du(){let e=()=>{let e=uu();return e===`system`?void 0:e};return(()=>{var t=Cu(),n=t.firstChild,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling;return r.addEventListener(`change`,e=>hu(e.currentTarget.value)),X(r,U(W,{each:Yl,children:e=>(()=>{var t=wu();return t.value=e,X(t,e),t})()})),X(i,U(W,{each:ql,children:t=>{let n=()=>lu()===t.id;return(()=>{var r=Tu(),i=r.firstChild,a=i.firstChild,o=a.firstChild,s=a.nextSibling,c=i.nextSibling.firstChild,l=c.nextSibling;return r.$$click=()=>mu(t.id),X(o,()=>t.label),X(s,U(W,{each:Eu,children:e=>U(Qe,{status:e,label:``})})),X(c,()=>t.label),X(l,()=>n()?`✓ active`:`select`),j(i=>{var a=!!n(),o=t.id,s=t.id,c=e(),l=n(),u=n()?`true`:void 0,d=`use the ${t.label} theme`;return a!==i.e&&r.classList.toggle(`active`,i.e=a),o!==i.t&&Y(r,`data-theme-card`,i.t=o),s!==i.a&&Y(r,`data-theme`,i.a=s),c!==i.o&&Y(r,`data-color-mode`,i.o=c),l!==i.i&&Y(r,`aria-pressed`,i.i=l),u!==i.n&&Y(r,`aria-current`,i.n=u),d!==i.s&&Y(r,`title`,i.s=d),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),r})()}})),j(()=>r.value=uu()),t})()}Ae([`click`]);var Ou=J(`<select><option value=on>on</option><option value=off>off`),ku=J(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),Au=J(`<div class=model-list style=max-height:320px>`),ju=J(`<p class="muted small">No matching models.`),Mu=J(`<section class=model-provider-group><div class=model-provider-heading>`),Nu=J(`<span class=model-name>`),Pu=J(`<span class=model-reasoning>think`),Fu=J(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),Iu=J(`<div class=settings-error>`),Lu=J(`<div class=settings-warning>`),Ru=J(`<p class="muted small"style=margin-bottom:16px>✓ saved`),zu=J(`<div class=setting-row><span class=setting-label><span class=name>pairing code</span><span class=hint>new devices enter this in the pairing screen; it rotates every 30s</span></span><span class=setting-control><code style=font-size:var(--fs-h2);letter-spacing:0.08em>`),Bu=J(`<p class="muted small"style=padding-top:8px>No remote devices paired. Launch with <code>--remote --allow <identity></code> to enable Tailscale access.`),Vu=J(`<p>This exits the dashboard server process and terminates <strong>all running sessions</strong>.`),Hu=J(`<div class=screen-fill><main class="container settings-wrap"><h1>settings</h1><p class=settings-intro>Ordinary defaults apply only to new sessions. Dispatch Arbiter changes apply to subsequent child spawns. Context trust changes apply to subsequent lazy loads in live sessions; already injected content cannot be retracted. Writes go to the global settings file on the host.</p><section class=settings-section><h2>dashboard</h2><div class=appearance-block><div class="setting-row appearance-heading-row"><span class=setting-label><span class=name>appearance</span><span class=hint>this browser only — theme and light/dark mode are stored in localStorage and are independent of the TUI theme. Okabe-Ito and Paul Tol are colorblind-safe palettes.</span></span></div></div><div class=setting-row><label class=setting-label for=pref-image-display-mode><span class=name>tool-result images</span><span class=hint>this browser only — placeholders make no automatic request, previews are bounded to 1024 px and 256 KiB, and originals automatically transfer full files. Choosing originals is the informed network-data opt-in.</span></label><span class=setting-control><select id=pref-image-display-mode><option value=placeholders>placeholders</option><option value=previews>bounded previews</option><option value=originals>automatic originals</option></select></span></div><div class=setting-row><span class=setting-label><span class=name>always expand thinking</span><span class=hint>this browser only — stored in localStorage, not the host settings file</span></span><span class=setting-control><label class=checkbox-control><input id=pref-expand-thinking type=checkbox><span>open by default</span></label></span></div><div class=setting-row><span class=setting-label><span class=name>auto-expand tool cards</span><span class=hint>this browser only — stored in localStorage, not the host settings file</span></span><span class=setting-control style=display:grid;gap:6px></span></div><div class=setting-row><span class=setting-label><span class=name>needs-attention notifications</span><span class=hint></span></span><span class=setting-control><label class=checkbox-control><input id=pref-notifications type=checkbox><span></span></label></span></div><div class=setting-row><span class=setting-label><span class=name>restart dashboard service</span><span class=hint></span></span><span class=setting-control><button type=button class="btn btn-small btn-danger"></button></span></div></section><section class=settings-section><h2>devices</h2><div class=device-row><span>this machine <span class=this-device></span></span><span class=meta>local · always allowed</span></div></section><footer>dreb<!> · dashboard`),Uu=J(`<div>`),Wu=J(`<p class=muted>`),Gu=J(`<section class=settings-section><h2>model</h2><div class=setting-row><span class=setting-label><span class=name>default model</span><span class=hint>used by new sessions; validated against configured providers</span></span><span class=setting-control><button type=button class="btn btn-small model-picker-button"></button></span></div><div class=setting-row><span class=setting-label><span class=name>default thinking level</span><span class=hint></span></span><span class=setting-control><select></select></span></div><div class=setting-row><span class=setting-label><span class=name>transport</span><span class=hint>preferred model transport for new sessions</span></span><span class=setting-control><select>`),Ku=J(`<section class="settings-section dispatch-arbiter-settings"><h2>dispatch arbiter</h2><p class="muted small"style=margin-bottom:8px>Global-only, fully headless pre-spawn routing. Project settings cannot change it. When enabled, invalid model, scope, guide, inference, or output prevents the affected child from spawning.</p><div class=setting-row><span class=setting-label><span class=name>enabled</span><span class=hint>disabled by default; fail closed when enabled</span></span><span class=setting-control></span></div><div class=setting-row><span class=setting-label><span class=name>arbiter model</span><span class=hint>exact authenticated provider/model; no fallback</span></span><span class=setting-control><button type=button class="btn btn-small model-picker-button"></button></span></div><div class=setting-row><span class=setting-label><span class=name>arbiter thinking</span><span class=hint>validated against the selected arbiter model</span></span><span class=setting-control><select></select></span></div><div class=setting-row><label class=setting-label for=dispatch-arbiter-guide-path><span class=name>routing guide path</span><span class=hint>blank uses ~/.dreb/agent/model-routing-guide.md</span></label><span class=setting-control><input id=dispatch-arbiter-guide-path type=text placeholder=~/.dreb/agent/model-routing-guide.md></span></div><div data-testid=dispatch-arbiter-readiness><strong>status:</strong> `),qu=J(`<div class="setting-row agent-context-row"><span class=setting-label><span class=name>agent definition context</span><span class=hint>choose a project to include its .dreb/agents definitions</span></span><span class=setting-control><select><option value>global/home only`),Ju=J(`<section class=settings-section><h2>agent models</h2><p class="muted small"style=margin-bottom:8px>Per-agent fallback lists. First available model wins; empty lists revert to the default model. Agent definitions are loaded from an explicit project context so project-local agents do not depend on which runtime opened first.`),Yu=J(`<section class=settings-section><h2>images</h2><div class=setting-row><span class=setting-label><span class=name>auto-resize images</span><span class=hint>resize image inputs before sending them to providers</span></span><span class=setting-control></span></div><div class=setting-row><span class=setting-label><span class=name>block images</span><span class=hint>prevent image inputs from being sent to providers</span></span><span class=setting-control>`),Xu=J(`<section class=settings-section><h2>queueing</h2><div class=setting-row><span class=setting-label><span class=name>steering delivery</span><span class=hint>deliver queued steers all at once, or one per turn</span></span><span class=setting-control><select></select></span></div><div class=setting-row><span class=setting-label><span class=name>follow-up delivery</span><span class=hint>deliver queued follow-ups all at once, or one per turn</span></span><span class=setting-control><select>`),Zu=J(`<section class=settings-section><h2>behavior</h2><div class=setting-row><span class=setting-label><span class=name>skill slash commands</span><span class=hint>register skills as slash commands in new sessions</span></span><span class=setting-control></span></div><div class=context-trust-subsection><h3>trusted context folders</h3><p class="muted small">Specific global roots that may lazy-load nested AGENTS.md/CLAUDE.md and all descendants.</p><div class="settings-warning context-trust-global-warning"><strong>Global-only policy.</strong> Project <code>.dreb/settings.json</code> cannot enable, disable, or extend nested-context trust. Only these global settings and the Files view can; a cloned repository cannot grant itself trust.</div><form class=trusted-context-folder-add><label for=trusted-context-folder-path>add folder by path</label><input id=trusted-context-folder-path type=text placeholder=/path/to/project><button type=submit class="btn btn-small"></button></form></div><div class=setting-row><span class=setting-label><span class=name>global expert nested-context trust</span><span class=hint>allow nested AGENTS.md/CLAUDE.md from any resolvable directory</span></span><span class=setting-control></span></div><div class="settings-warning context-expert-warning"><strong>Expert global override.</strong> Project <code>.dreb/settings.json</code> cannot enable, disable, or extend nested-context trust; a cloned repository cannot grant itself trust. When ON, nested instructions from any resolvable directory may load, including untrusted prompt-injection content. Leave this OFF and use trusted folders for projects you control.</div><div class=setting-row><span class=setting-label><span class=name>hide thinking blocks</span><span class=hint>hide raw thinking blocks in rendered transcripts</span></span><span class=setting-control>`),Qu=J(`<section class=settings-section><h2>reliability</h2><div class=setting-row><span class=setting-label><span class=name>auto-compaction</span><span class=hint>summarize old context when the window fills</span></span><span class=setting-control></span></div><div class=setting-row><span class=setting-label><span class=name>auto-retry</span><span class=hint>retry transient stream errors (rate limits, 5xx)</span></span><span class=setting-control>`),$u=J(`<p class="muted small settings-footnote">TUI-only settings (cursor, editor) are managed in the terminal /settings menu. The dashboard appearance (theme + light/dark mode) is set here, per-browser, and is independent of the TUI theme.`),ed=J(`<option>`),td=J(`<p class="muted small">No agent definitions found.`),nd=J(`<div class=agent-model-editor><button type=button class="btn btn-small">add model…`),rd=J(`<div class=agent-model-row><div class=agent-model-summary><span class=agent-model-name></span><span class=agent-model-description></span></div><div class=agent-model-fallbacks></div><button type=button class="btn btn-small agent-model-edit">`),id=J(`<span class="muted small">default`),ad=J(`<span class=agent-model-chip>. `),od=J(`<p class="muted small">Using the default model.`),sd=J(`<div class=agent-model-entry><span></span><div class=agent-model-entry-actions><button type=button class="btn btn-small">↑</button><button type=button class="btn btn-small">↓</button><button type=button class="btn btn-small">×`),cd=J(`<p class="muted small trusted-context-empty">No trusted folders. Use the Files view to trust a project folder and its descendants.`),ld=J(`<div class=trusted-context-folder-row><code></code><span class=meta>and all descendants</span><button type=button class="btn btn-small btn-danger">`),ud=J(`<label class=checkbox-control><input type=checkbox><span>`),dd=J(`<div class=device-row><span></span><span class=meta> · paired </span><span class=actions><button type=button class="btn btn-small btn-danger">unpair`),fd=J(`<button type=button class="btn btn-small">cancel`),pd=J(`<button type=button class="btn btn-small btn-danger">restart`),md=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],hd=[`all`,`one-at-a-time`],gd=[`sse`,`websocket`,`auto`];function _d(e){return`${e.provider}/${e.id}`}function vd(e){let t=_d(e);return e.name?`${t} — ${e.name}`:t}function yd(e){return e.defaultProvider&&e.defaultModel?`${e.defaultProvider}/${e.defaultModel}`:`choose model…`}function bd(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function xd(){if(typeof Notification>`u`){if(window.isSecureContext===!1)return`insecure`;let e=/iPad|iPhone|iPod/.test(navigator.userAgent),t=navigator.standalone===!0||window.matchMedia?.(`(display-mode: standalone)`)?.matches===!0;return e&&!t?`ios-install`:`unsupported`}return Notification.permission}function Sd(e){let t=new Map;for(let n of e){let e=t.get(n.provider)??[];e.push(n),t.set(n.provider,e)}return[...t.entries()].map(([e,t])=>({provider:e,models:t}))}function Cd(e,t,n){let r=t+n;if(r<0||r>=e.length)return e;let i=[...e];return[i[t],i[r]]=[i[r],i[t]],i}function wd(e){return(()=>{var t=Ou();return t.addEventListener(`change`,t=>{e.onChange(t.currentTarget.value===`on`)===!1&&(t.currentTarget.value=e.value?`on`:`off`)}),j(()=>t.value=e.value?`on`:`off`),t})()}function Td(e){let[t,n]=k(``),r=()=>new Set(e.selected??[]),i=N(()=>{let n=t().toLowerCase();return Sd(e.models.filter(e=>!n||bd(e,n)).slice(0,100))}),a=e=>r().has(_d(e));return U(nt,{get title(){return e.title},get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[(()=>{var e=ku(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e})(),(()=>{var t=Au();return X(t,U(G,{get when(){return i().length>0},get fallback(){return ju()},get children(){return U(W,{get each(){return i()},children:t=>(()=>{var n=Mu(),r=n.firstChild;return X(r,()=>t.provider),X(n,U(W,{get each(){return t.models},children:t=>(()=>{var n=Fu(),r=n.firstChild,i=r.nextSibling,o=i.nextSibling;return n.$$click=()=>e.onPick(t),X(r,()=>a(t)?`✓`:``),X(i,()=>t.id),X(n,U(G,{get when(){return t.name},get children(){var e=Nu();return X(e,()=>t.name),e}}),o),X(o,()=>t.provider),X(n,U(G,{get when(){return t.reasoning},get children(){return Pu()}}),null),j(e=>{var r=!!a(t),i=vd(t);return r!==e.e&&n.classList.toggle(`current`,e.e=r),i!==e.t&&Y(n,`title`,e.t=i),e},{e:void 0,t:void 0}),n})()}),null),n})()})}})),t})()]}})}function Ed(e){let[t,n]=k(),[r,i]=k([]),[a,o]=k(!1),[s,c]=k(),[l,u]=k(),[d,f]=k(),[p,m]=k(``),[h,g]=k(!1),[_,v]=k(xd()),[y,{mutate:b,refetch:x}]=F(async()=>{n(void 0);try{return await Q.settings()}catch(e){n(e instanceof Error?e.message:String(e));return}}),[S]=F(y,async()=>{try{let{models:e}=await Q.settingsModels();return e}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),C=N(()=>{let t=new Set;for(let n of e.store.fleet().runtimes)t.add(n.cwd);for(let n of e.store.fleet().diskSessions)t.add(n.cwd);return[...t].sort((e,t)=>e.localeCompare(t))}),[w]=F(()=>({settings:y(),cwd:d()}),async({cwd:e})=>{if(!y())return[];try{let{agentTypes:t}=await Q.agentTypes(e);return t}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),[T,{refetch:E}]=F(async()=>{let{devices:e}=await Q.devices();return e}),[D,O]=k(),A;function M(){A&&clearTimeout(A),A=void 0}function P(e){M();let t=Math.max(250,e??3e4)+100;A=setTimeout(()=>void I(),t)}async function I(){try{let e=await Q.pairingCode();if(!e.enabled||!e.code){O(void 0),M();return}O(e),P(e.expiresInMs)}catch(e){console.warn(`pairing code unavailable`,e),O(void 0),M()}}let[L]=F(async()=>{try{let{version:e}=await Q.version();return e}catch{return}}),[ee]=F(async()=>{try{return await Q.serverInfo()}catch{return}}),[te,ne]=k(!1),[re,ie]=k(!1),[ae,B]=k();async function oe(){B(void 0),ie(!0);try{await Q.restartServer()}catch(e){B(e instanceof Error?e.message:String(e)),ie(!1)}}async function V(e){n(void 0),i([]),o(!1);try{let t=await Q.saveSettings(e);b(t),i(t.warnings??[]),o(!0),setTimeout(()=>o(!1),2e3)}catch(e){n(e instanceof Error?e.message:String(e)),await x()}}let se=Promise.resolve(),H;function ce(){return H??y()?.subagentArbiter??{}}function le(e){let t={...ce(),...e};H=t;let r=y();r&&b({...r,subagentArbiter:t}),se=se.then(async()=>{n(void 0),i([]),o(!1);try{let e=await Q.saveSettings({subagentArbiter:t});i(e.warnings??[]),o(!0),setTimeout(()=>o(!1),2e3),H===t?(H=e.subagentArbiter??void 0,b(e)):b({...e,subagentArbiter:H})}catch(e){let r=e instanceof Error?e.message:String(e),i=await x();n(r),H===t?H=i?.subagentArbiter??void 0:i&&b({...i,subagentArbiter:H})}})}async function ue(e,t){await V({agentModels:{[e]:t}})}async function de(e){n(void 0),g(!0);try{let t=await Q.trustContextFolder(e);b(t.settings),m(``)}catch(e){n(e instanceof Error?e.message:String(e))}finally{g(!1)}}async function fe(e){n(void 0),g(!0);try{let t=await Q.removeTrustedContextFolder(e);b(t.settings)}catch(e){n(e instanceof Error?e.message:String(e))}finally{g(!1)}}function pe(e){return y()?.agentModels?.[e]??[]}function me(e){let t=e.subagentArbiter;return t?.enabled===!0?typeof t.model!=`string`||!t.model.trim()?{ready:!1,message:`not ready — choose an arbiter model`}:t.thinking!==void 0&&!md.some(e=>e===t.thinking)?{ready:!1,message:`not ready — arbiter thinking setting is invalid`}:t.guidePath!==void 0&&typeof t.guidePath!=`string`?{ready:!1,message:`not ready — routing guide path is invalid`}:t.guidePath?.trim()?{ready:!0,message:`enabled — live scope and guide are validated before every child spawn`}:{ready:!0,message:`enabled — using ~/.dreb/agent/model-routing-guide.md; live scope/guide checked at dispatch`}:{ready:!1,message:`disabled`}}async function he(){typeof Notification>`u`||v(await Notification.requestPermission())}R(()=>void I()),z(M);let ge=()=>e.store.auth();return(()=>{var i=Hu(),o=i.firstChild,g=o.firstChild.nextSibling.nextSibling,v=g.firstChild.nextSibling;v.firstChild;var b=v.nextSibling,x=b.firstChild.nextSibling.firstChild,O=b.nextSibling,k=O.firstChild.nextSibling.firstChild.firstChild,A=O.nextSibling,M=A.firstChild.nextSibling,N=A.nextSibling,P=N.firstChild,F=P.firstChild.nextSibling,I=P.nextSibling.firstChild.firstChild,R=I.nextSibling,z=N.nextSibling.firstChild,ie=z.firstChild.nextSibling,B=z.nextSibling.firstChild,se=g.nextSibling,H=se.firstChild.nextSibling.firstChild.firstChild.nextSibling,_e=se.nextSibling,ve=_e.firstChild.nextSibling;return ve.nextSibling,X(i,U(et,{get store(){return e.store},active:`settings`}),o),X(o,U(G,{get when(){return t()},get children(){var e=Iu();return X(e,t),e}}),g),X(o,U(G,{get when(){return r().length>0},get children(){var e=Lu();return X(e,U(W,{get each(){return r()},children:e=>(()=>{var t=Uu();return X(t,e),t})()})),e}}),g),X(o,U(G,{get when(){return a()},get children(){return Ru()}}),g),X(o,U(G,{get when(){return y()},get fallback(){return(()=>{var e=Wu();return X(e,()=>t()?`Settings could not be loaded — see the error above.`:`Loading settings…`),e})()},children:e=>[(()=>{var t=Gu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling,a=i.firstChild,o=a.firstChild.nextSibling,s=a.nextSibling.firstChild,l=i.nextSibling.firstChild.nextSibling.firstChild;return r.$$click=()=>c({kind:`default`}),X(r,()=>yd(e())),X(o,()=>md.join(` · `)),s.addEventListener(`change`,e=>V({defaultThinkingLevel:e.currentTarget.value})),X(s,U(W,{each:md,children:e=>(()=>{var t=ed();return t.value=e,X(t,e),t})()})),l.addEventListener(`change`,e=>V({transport:e.currentTarget.value})),X(l,U(W,{get each(){return[...gd]},children:e=>(()=>{var t=ed();return t.value=e,X(t,e),t})()})),j(()=>s.value=e().defaultThinkingLevel??`off`),j(()=>l.value=e().transport??`sse`),t})(),(()=>{var t=Ku(),r=t.firstChild.nextSibling.nextSibling,i=r.firstChild.nextSibling,a=r.nextSibling,o=a.firstChild.nextSibling.firstChild,s=a.nextSibling,l=s.firstChild.nextSibling.firstChild,u=s.nextSibling,d=u.firstChild.nextSibling.firstChild,f=u.nextSibling;return f.firstChild.nextSibling,X(i,U(wd,{get value(){return e().subagentArbiter?.enabled===!0},onChange:e=>{let t=ce();return e&&(typeof t.model!=`string`||!t.model.trim())?(n(`Choose an exact Dispatch Arbiter model before enabling it.`),c({kind:`arbiter`}),!1):(le({enabled:e}),!0)}})),o.$$click=()=>c({kind:`arbiter`}),X(o,(()=>{var t=q(()=>typeof e().subagentArbiter?.model==`string`);return()=>t()?e().subagentArbiter?.model:`choose model…`})()),l.addEventListener(`change`,e=>le({thinking:e.currentTarget.value})),X(l,U(W,{each:md,children:e=>(()=>{var t=ed();return t.value=e,X(t,e),t})()})),d.addEventListener(`change`,e=>{le({guidePath:e.currentTarget.value.trim()||void 0})}),X(f,()=>me(e()).message,null),j(()=>je(f,me(e()).ready?`settings-warning`:`muted small`)),j(()=>l.value=typeof e().subagentArbiter?.thinking==`string`&&md.some(t=>t===e().subagentArbiter?.thinking)?e().subagentArbiter?.thinking:`off`),j(()=>d.value=typeof e().subagentArbiter?.guidePath==`string`?e().subagentArbiter?.guidePath:``),t})(),(()=>{var t=Ju();return t.firstChild.nextSibling,X(t,U(G,{get when(){return C().length>0},get children(){var e=qu(),t=e.firstChild.nextSibling.firstChild;return t.firstChild,t.addEventListener(`change`,e=>f(e.currentTarget.value||void 0)),X(t,U(W,{get each(){return C()},children:e=>(()=>{var t=ed();return t.value=e,X(t,e),t})()}),null),j(()=>Y(t,`title`,d()??`global/home only`)),j(()=>t.value=d()??``),e}}),null),X(t,U(G,{get when(){return(w()??[]).length>0},get fallback(){return td()},get children(){return U(W,{get each(){return w()??[]},children:t=>{let n=()=>e().agentModels?.[t.name]??[];return(()=>{var e=rd(),r=e.firstChild,i=r.firstChild,a=i.nextSibling,o=r.nextSibling,s=o.nextSibling;return X(i,()=>t.name),X(a,()=>t.description),X(o,U(G,{get when(){return n().length>0},get fallback(){return id()},get children(){return U(W,{get each(){return n()},children:(e,t)=>(()=>{var n=ad(),r=n.firstChild;return X(n,()=>t()+1,r),X(n,e,null),n})()})}})),s.$$click=()=>u(l()===t.name?void 0:t.name),X(s,()=>l()===t.name?`done`:`edit`),X(e,U(G,{get when(){return l()===t.name},get children(){var e=nd(),r=e.firstChild;return X(e,U(G,{get when(){return n().length>0},get fallback(){return od()},get children(){return U(W,{get each(){return n()},children:(e,r)=>(()=>{var i=sd(),a=i.firstChild,o=a.nextSibling.firstChild,s=o.nextSibling,c=s.nextSibling;return X(a,e),o.$$click=()=>void ue(t.name,Cd(n(),r(),-1)),s.$$click=()=>void ue(t.name,Cd(n(),r(),1)),c.$$click=()=>void ue(t.name,n().filter((e,t)=>t!==r())),j(e=>{var t=r()===0,i=r()===n().length-1;return t!==e.e&&(o.disabled=e.e=t),i!==e.t&&(s.disabled=e.t=i),e},{e:void 0,t:void 0}),i})()})}}),r),r.$$click=()=>c({kind:`agent`,agentName:t.name}),e}}),null),e})()}})}}),null),t})(),(()=>{var t=Yu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return X(r,U(wd,{get value(){return e().imageAutoResize!==!1},onChange:e=>V({imageAutoResize:e})})),X(i,U(wd,{get value(){return e().blockImages===!0},onChange:e=>V({blockImages:e})})),t})(),(()=>{var t=Xu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling.firstChild.nextSibling.firstChild;return r.addEventListener(`change`,e=>V({steeringMode:e.currentTarget.value})),X(r,U(W,{get each(){return[...hd]},children:e=>(()=>{var t=ed();return t.value=e,X(t,e),t})()})),i.addEventListener(`change`,e=>V({followUpMode:e.currentTarget.value})),X(i,U(W,{get each(){return[...hd]},children:e=>(()=>{var t=ed();return t.value=e,X(t,e),t})()})),j(()=>r.value=e().steeringMode??`all`),j(()=>i.value=e().followUpMode??`all`),t})(),(()=>{var t=Zu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling,a=i.firstChild.nextSibling.nextSibling.nextSibling,o=a.firstChild.nextSibling,s=o.nextSibling,c=i.nextSibling,l=c.firstChild.nextSibling,u=c.nextSibling.nextSibling.firstChild.nextSibling;return X(r,U(wd,{get value(){return e().enableSkillCommands!==!1},onChange:e=>V({enableSkillCommands:e})})),X(i,U(G,{get when(){return(e().trustedContextFolders??[]).length>0},get fallback(){return cd()},get children(){return U(W,{get each(){return e().trustedContextFolders??[]},children:e=>(()=>{var t=ld(),n=t.firstChild,r=n.nextSibling.nextSibling;return X(n,e),r.$$click=()=>void fe(e),X(r,()=>h()?`revoking…`:`revoke trust`),j(()=>r.disabled=h()),t})()})}}),a),a.addEventListener(`submit`,e=>{e.preventDefault();let t=p().trim();t&&de(t)}),o.$$input=e=>m(e.currentTarget.value),X(s,()=>h()?`trusting…`:`trust folder`),X(l,U(wd,{get value(){return e().autoLoadNestedContext===!0},onChange:e=>V({autoLoadNestedContext:e})})),X(u,U(wd,{get value(){return e().hideThinkingBlock===!0},onChange:e=>V({hideThinkingBlock:e})})),j(()=>s.disabled=h()||!p().trim()),j(()=>o.value=p()),t})(),(()=>{var t=Qu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return X(r,U(wd,{get value(){return e().compactionEnabled!==!1},onChange:e=>V({compactionEnabled:e})})),X(i,U(wd,{get value(){return e().retryEnabled!==!1},onChange:e=>V({retryEnabled:e})})),t})(),$u()]}),g),X(v,U(Du,{}),null),x.addEventListener(`change`,e=>Mo(e.currentTarget.value)),k.addEventListener(`change`,e=>jo(e.currentTarget.checked)),X(M,U(W,{each:po,children:e=>(()=>{var t=ud(),n=t.firstChild,r=n.nextSibling;return n.addEventListener(`change`,t=>No(e,t.currentTarget.checked)),Y(n,`id`,`pref-tool-expand-${e}`),X(r,e),j(()=>n.checked=Po(e)),t})()})),X(F,(()=>{var e=q(()=>_()===`denied`);return()=>e()?`blocked by browser settings — re-enable notifications in site permissions`:q(()=>_()===`insecure`)()?`this page is not a secure context — notifications need HTTPS. Run the server with --https (tailscale cert <host>.<tailnet>.ts.net) and open it via the https:// hostname`:q(()=>_()===`ios-install`)()?`iOS notifications need the installed PWA — tap Share → Add to Home Screen, then open dreb from the home screen icon`:_()===`unsupported`?`browser notifications are unavailable in this environment`:`show a notification when the tab needs input (Android/desktop need the app installed on mobile; works over HTTPS or localhost)`})()),I.addEventListener(`change`,e=>{e.currentTarget.checked&&he()}),X(R,()=>_()===`granted`?`enabled`:`enable notifications`),X(ie,()=>ee()?.supervised?`restarts the server process (a supervisor respawns it with the latest build) — kills all running sessions`:`exits the server process — only auto-restarts if run under a supervisor (systemd, pm2, …); otherwise the dashboard goes down. kills all running sessions`),B.$$click=()=>ne(!0),X(B,()=>re()?`restarting…`:`restart`),X(g,U(G,{get when(){return ae()},get children(){var e=Iu();return X(e,ae),e}}),null),X(H,()=>ge()?.mode===`local`?`local`:`host`),X(se,U(G,{get when(){return q(()=>!!D()?.enabled)()&&D()?.code},get children(){var e=zu(),t=e.firstChild.nextSibling.firstChild;return X(t,()=>D().code),e}}),null),X(se,U(W,{get each(){return T()??[]},children:e=>(()=>{var t=dd(),n=t.firstChild,r=n.nextSibling,i=r.firstChild,a=r.nextSibling.firstChild;return X(n,()=>e.device??e.id),X(r,()=>e.identity,i),X(r,()=>it(e.createdAt),null),a.$$click=async()=>{await Q.unpair(e.id),await E()},t})()}),null),X(se,U(G,{get when(){return(T()??[]).length===0},get children(){return Bu()}}),null),X(_e,(()=>{var e=q(()=>!!ee()?.version);return()=>e()?` v${ee().version}`:q(()=>!!L())()?` v${L()}`:``})(),ve),X(_e,U(G,{get when(){return ee()?.startedAt},get children(){return[` · server build, up `,q(()=>it(ee().startedAt))]}}),null),X(i,U(G,{get when(){return te()},get children(){return U(nt,{title:`restart dashboard service?`,onDismiss:()=>ne(!1),get actions(){return[(()=>{var e=fd();return e.$$click=()=>ne(!1),e})(),(()=>{var e=pd();return e.$$click=()=>{ne(!1),oe()},e})()]},get children(){var e=Vu();return e.firstChild.nextSibling.nextSibling,X(e,()=>ee()?.supervised?` A supervisor is detected — the server should respawn automatically with the latest build.`:` No supervisor was detected — the dashboard will NOT come back on its own; you'll need to relaunch it manually.`,null),e}})}}),null),X(i,U(G,{get when(){return s()},children:e=>{let t=()=>{let t=e();return t.kind==="default"?`select default model`:t.kind===`arbiter`?`select Dispatch Arbiter model`:`add model for ${t.agentName}`},n=()=>{let t=e();return t.kind==="default"?y()?.defaultProvider&&y()?.defaultModel?[`${y().defaultProvider}/${y().defaultModel}`]:[]:t.kind===`arbiter`?y()?.subagentArbiter?.model?[y().subagentArbiter.model]:[]:pe(t.agentName)};return U(Td,{get title(){return t()},get models(){return S()??[]},get selected(){return n()},onClose:()=>c(void 0),onPick:t=>{let n=e();if(c(void 0),n.kind==="default"){V({defaultProvider:t.provider,defaultModel:t.id});return}if(n.kind===`arbiter`){le({model:_d(t)});return}let r=_d(t),i=pe(n.agentName);i.includes(r)||ue(n.agentName,[...i,r])}})}}),null),j(e=>{var t=_()===`denied`||_()===`unsupported`||_()===`ios-install`||_()===`insecure`,n=re();return t!==e.e&&(I.disabled=e.e=t),n!==e.t&&(B.disabled=e.t=n),e},{e:void 0,t:void 0}),j(()=>x.value=Ao()),j(()=>k.checked=ko()),j(()=>I.checked=_()===`granted`),i})()}Ae([`input`,`click`]);var Dd=J(`<div class="status-line arbitration-history">`),Od=J(`<p class=pair-error>`),kd=J(`<div class=status-line><span class=working>● working`),Ad=J(`<div class=session-screen><header class=session-bar><div class=session-bar-inner><a class=back>← </a><span class=agent-type>subagent · </span><span class=title></span><span class=right></span></div></header><main class=chat><div class=chat-inner></div></main><footer class=dock><div class=dock-inner><div class=readonly-note>viewing live — subagents can't be steered yet; the parent session controls this agent.`),jd=J(`<span>arbiter: `),Md=J(`<p class=muted>`);function Nd(e){let t=e.step===void 0?``:`step ${e.step}: `;return e.status===`failure`?`${t}failed — ${e.errorMessage??e.errorCode??`unknown error`}`:!e.final||e.changed.length===0?`${t}kept ${e.proposed.agent} · ${e.proposed.model} · ${e.proposed.thinking}`:`${t}${e.changed.join(`, `)} changed → ${e.final.agent} · ${e.final.model} · ${e.final.thinking}`}function Pd(e){let t=()=>e.store.sessions[e.sessionKey],n=N(()=>t()?.backgroundAgents[e.agentId]),r=()=>t()?.subagents[e.agentId],i=N(()=>e.store.fleet().runtimes.find(t=>t.key===e.sessionKey)),a=()=>i()?.state.sessionName??e.sessionKey,[o,s]=k(),c,l,u=oo({scroller:()=>c});return R(()=>{let t=new AbortController;e.store.hydrateSubagent(e.sessionKey,e.agentId,t.signal).catch(e=>{t.signal.aborted&&Zs(e)||s(e instanceof Error?e.message:String(e))}),z(()=>t.abort())}),M(()=>{e.store.revisions[e.sessionKey],u.notifyContentChanged()}),R(()=>{u.observeContent(l),u.observeViewport(c),c&&z(co(u,c,{keyboard:`window`}))}),z(()=>u.dispose()),(()=>{var t=Ad(),i=t.firstChild,s=i.firstChild.firstChild;s.firstChild;var u=s.nextSibling;u.firstChild;var d=u.nextSibling,f=d.nextSibling,p=i.nextSibling,m=p.firstChild,h=p.nextSibling.firstChild,g=h.firstChild;X(s,a,null),X(u,()=>n()?.agentType??`unknown`,null),X(d,()=>n()?.taskSummary??e.agentId),X(f,U(G,{get when(){return n()?.status===`running`},get fallback(){return U(Qe,{get status(){return n()?.status===`failed`?`error`:`idle`},get label(){return n()?.status}})},get children(){return U(Qe,{status:`running`})}}));var _=c;typeof _==`function`?Pe(_,p):c=p;var v=l;return typeof v==`function`?Pe(v,m):l=m,X(m,U(G,{get when(){return(n()?.arbitrations?.length??0)>0},get children(){var e=Dd();return X(e,U(W,{get each(){return n()?.arbitrations??[]},children:e=>(()=>{var t=jd();return t.firstChild,X(t,()=>Nd(e),null),j(()=>je(t,e.status===`failure`?`error-reason`:`muted`)),t})()})),e}}),null),X(m,U(G,{get when(){return o()},get children(){var e=Od();return X(e,o),e}}),null),X(m,U(G,{get when(){return q(()=>!!r())()&&r().entries.length>0},get fallback(){return(()=>{var e=Md();return X(e,()=>n()?`waiting for output from this agent…`:`no data for this agent — it may not have started writing its session log yet.`),e})()},get children(){return U(Xs,{get entries(){return r().entries},get who(){return n()?.agentType??`agent`},userLabel:`task from parent`,get resetKey(){return`${e.sessionKey}:${e.agentId}`},get imageScope(){return{runtimeKey:e.sessionKey,agentId:e.agentId}}})}}),null),X(h,U(G,{get when(){return r()?.streaming},get children(){return kd()}}),g),j(()=>Y(s,`href`,`#/session/${e.sessionKey}`)),t})()}function Fd(e){let t=e?.method;if(t===`select`||t===`confirm`||t===`input`||t===`editor`)return{id:String(e.id),method:t,title:String(e.title??``),message:e.message,options:e.options,prefill:e.prefill,placeholder:e.placeholder};if(t===`ask`)return{id:String(e.id),method:`ask`,title:String(e.title??`Question`),question:String(e.question??``),options:e.options,allowFreeText:e.allowFreeText,multiSelect:e.multiSelect,multiline:e.multiline,timeout:typeof e.timeout==`number`?e.timeout:void 0,expiresAt:typeof e.expiresAt==`number`?e.expiresAt:void 0}}function Id(e){return{key:e,entries:[],streaming:!1,compacting:!1,statusEntries:[],tasks:[],backgroundAgents:{},uiRequests:[],toasts:[],widgets:{above:[],below:[]},needsAttention:!1,subagents:{}}}var Ld=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]),Rd=/^[0-9a-f]{64}$/;function zd(e){if(typeof e==`string`)return{text:e,images:[]};if(!Array.isArray(e))return{text:``,images:[]};let t=[],n=[];for(let r of e){let e=r;typeof e?.text==`string`?t.push(e.text):e?.type===`image_reference`&&typeof e.id==`string`&&Rd.test(e.id)&&typeof e.mimeType==`string`&&Ld.has(e.mimeType)&&typeof e.size==`number`&&Number.isSafeInteger(e.size)&&e.size>0&&n.push({id:e.id,mimeType:e.mimeType,size:e.size})}return{text:t.join(`
|
|
77
|
+
`),images:n}}function Bd(e){return zd(e).text}function Vd(e,t){let n=e.match(/<background-agent-complete>\n?([\s\S]*?)\n?<\/background-agent-complete>/)?.[1]?.trim();if(!n)return;let r=n.split(`
|
|
78
78
|
`),i=r.findIndex(e=>e.trim().length>0),a,o=n;return i>=0&&/^Background agent .+\.$/.test(r[i]?.trim()??``)&&(a=r[i].trim(),o=r.slice(i+1).join(`
|
|
79
|
-
`).trim()||a),{kind:`agent-result`,text:o,header:a,raw:e,timestamp:t}}function Ud(e){let{text:t,images:n}=Bd(e.content);return Hd(t,e.timestamp)??{kind:`user`,text:t,images:n.length>0?n:void 0,timestamp:e.timestamp}}function Wd(e){if(!(e?.role!==`assistant`||e.stopReason!==`error`))return typeof e.errorMessage==`string`&&e.errorMessage.trim().length>0?e.errorMessage:`Unknown error`}function Gd(e){let t=[],n=new Map;for(let r of e)if(r.role===`user`)t.push(Ud(r));else if(r.role===`assistant`){let e=[],i=[],a=()=>{if(e.length===0)return;let n={kind:`assistant`,blocks:e,model:r.model,streaming:!1,timestamp:r.timestamp};i.push(n),t.push(n),e=[]};if(Array.isArray(r.content)){for(let i of r.content)if(i.type===`text`&&typeof i.text==`string`)e.push({kind:`text`,text:i.text});else if(i.type===`thinking`&&typeof i.thinking==`string`)e.push({kind:`thinking`,text:i.thinking});else if(i.type===`toolCall`){a();let e=i,o={kind:`tool`,toolCallId:String(e.id??``),toolName:String(e.name??`tool`),args:e.arguments,status:`running`,resultText:``,startedAt:r.timestamp??Date.now()};n.set(o.toolCallId,o),t.push(o)}}a();let o=Wd(r);if(o&&i.length===0){let e={kind:`assistant`,blocks:[],model:r.model,streaming:!1,timestamp:r.timestamp};i.push(e),t.push(e)}let s=i.at(-1);s&&(s.stopReason=r.stopReason,s.errorMessage=o)}else if(r.role===`toolResult`){let e=n.get(String(r.toolCallId));if(e){e.status=r.isError?`error`:`done`;let t=Bd(r.content);e.resultText=t.text,t.images.length>0&&(e.images=t.images),e.details=r.details,e.endedAt=r.timestamp}}else if(r.role===`bashExecution`){let e=r;t.push({kind:`tool`,toolCallId:`bash-exec-${t.length}`,toolName:`bash (user)`,args:{command:e.command},status:`done`,resultText:e.output??``,startedAt:r.timestamp??Date.now()})}else if(r.role===`custom`){let e=r;t.push({kind:`custom`,tag:e.customType??`extension`,text:e.displayText??Vd(r.content)})}return t}var Kd=0,qd=20;function Jd(e){let t=e.toasts.length-qd;t>0&&e.toasts.splice(0,t)}function Yd(e){let t=Date.parse(e.startedAt);return Number.isFinite(t)?t:0}function Xd(e){let t=Object.values(e.backgroundAgents).filter(e=>e.status!==`running`).sort((e,t)=>Yd(e)-Yd(t)||e.agentId.localeCompare(t.agentId)),n=t.length-20;if(!(n<=0))for(let r of t.slice(0,n))delete e.backgroundAgents[r.agentId],delete e.subagents[r.agentId]}function Zd(e){e.needsAttention=e.uiRequests.length>0||e.statusEntries.some(e=>e.tone===`error`)||!!e.suggestedCommand}var Qd=`provider-error`;function $d(e){e.statusEntries=e.statusEntries.filter(e=>e.key!==Qd),e.lastError=void 0}function ef(e,t){$d(e),e.statusEntries.push({key:Qd,text:t,tone:`error`}),e.lastError=t}function tf(e,t,n){if($d(e),!n)for(let n=t.length-1;n>=0;--n){let r=t[n];if(r?.role!==`assistant`)continue;let i=Wd(r);i&&ef(e,i);break}Zd(e)}function nf(e){for(let t=e.entries.length-1;t>=0;t--){let n=e.entries[t];if(n.kind===`assistant`)return n}}function rf(e,t){for(let n=e.entries.length-1;n>=0;n--){let r=e.entries[n];if(r.kind===`tool`&&r.toolCallId===t)return r}}function af(e,t,n){let r=e.entries.indexOf(t);if(r<0)return;let i=new Set,a=n.map(t=>{if(t.kind!==`tool`)return t;let n=rf(e,t.toolCallId);return n?(i.add(n),n):t}),o=new Set([t,...i]),s=e.entries.slice(0,r).filter(e=>!o.has(e)).length,c=e.entries.filter(e=>!o.has(e));c.splice(s,0,...a),e.entries.splice(0,e.entries.length,...c)}function of(e,t){switch(t.type){case`agent_start`:e.streaming=!0;break;case`agent_end`:{e.streaming=!1;let t=nf(e);t&&(t.streaming=!1);break}case`message_start`:{let n=t.message;n?.role===`user`?e.entries.push(Ud(n)):n?.role===`assistant`&&e.entries.push({kind:`assistant`,blocks:[],model:n.model,streaming:!0,timestamp:n.timestamp});break}case`message_update`:{let n=t.assistantMessageEvent;if(!n)break;let r=nf(e);if((!r||!r.streaming)&&(r={kind:`assistant`,blocks:[],streaming:!0},e.entries.push(r)),n.type===`text_start`)r.blocks.push({kind:`text`,text:``});else if(n.type===`thinking_start`)r.blocks.push({kind:`thinking`,text:``});else if(n.type===`text_delta`||n.type===`thinking_delta`){let e=r.blocks[r.blocks.length-1];e&&(e.text+=n.delta??``)}else if(n.type===`text_end`||n.type===`thinking_end`){let e=r.blocks[r.blocks.length-1];e&&typeof n.content==`string`&&(e.text=n.content)}break}case`message_end`:{let n=t.message;if(n?.role===`assistant`){let t=nf(e),r=Gd([n]);t?.streaming?af(e,t,r):e.entries.push(...r)}else if(n?.role===`user`){let t=e.entries[e.entries.length-1],r=Ud(n);r.kind===`agent-result`?t?.kind===`agent-result`&&t.raw===r.raw||e.entries.push(r):t?.kind===`user`&&t.text===r.text?r.images&&(t.images=r.images):e.entries.push(r)}break}case`tool_execution_start`:{let n=String(t.toolCallId),r=rf(e,n);r?(r.toolName=String(t.toolName),r.args=t.args,r.status=`running`,r.resultText=``,r.images=void 0,r.details=void 0,r.startedAt=Date.now(),r.endedAt=void 0):e.entries.push({kind:`tool`,toolCallId:n,toolName:String(t.toolName),args:t.args,status:`running`,resultText:``,startedAt:Date.now()});break}case`tool_execution_update`:{let n=rf(e,String(t.toolCallId));if(n){let e=t.partialResult;if(typeof e==`string`)n.resultText=e,n.images=void 0;else if(e?.content){let t=Bd(e.content);n.resultText=t.text,n.images=t.images.length>0?t.images:void 0}}break}case`tool_execution_end`:{let n=rf(e,String(t.toolCallId));if(n){n.status=t.isError?`error`:`done`;let e=t.result;if(typeof e==`string`)n.resultText=e,n.images=void 0;else if(e?.content){let t=Bd(e.content);n.resultText=t.text,n.images=t.images.length>0?t.images:void 0}n.details=t.result?.details,n.endedAt=Date.now()}break}default:break}}function sf(e,t){switch(of(e,t),t.type){case`agent_start`:e.workingText=`working`,e.workingSince=Date.now(),$d(e),e.suggestedCommand=void 0,e.uiRequests=[];break;case`agent_end`:e.workingText=void 0,e.workingSince=void 0,e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`&&e.key!==`paused`);break;case`message_end`:{let n=t.message;if(n?.role===`assistant`){let t=Wd(n);t?ef(e,t):$d(e)}break}case`tool_execution_start`:e.workingText=`${t.toolName}`;break;case`auto_compaction_start`:e.compacting=!0,t.reason===`overflow`&&$d(e),e.statusEntries.push({key:`compaction`,text:`compacting context…`,tone:`info`});break;case`auto_compaction_end`:{e.compacting=!1,e.statusEntries=e.statusEntries.filter(e=>e.key!==`compaction`);let n=t.result;n&&!t.aborted&&e.entries.push({kind:`summary`,label:`compaction`,text:n.summary??`context compacted`,tokensBefore:n.tokensBefore}),t.errorMessage&&e.statusEntries.push({key:`compaction-error`,text:String(t.errorMessage),tone:`error`});break}case`auto_retry_start`:$d(e),e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`),e.statusEntries.push({key:`retry`,text:`retrying (${t.attempt}/${t.maxAttempts}) — ${t.errorMessage}`,tone:`warning`});break;case`auto_retry_end`:e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`),!t.success&&t.finalError?ef(e,String(t.finalError)):t.success&&$d(e);break;case`stream_retry`:{e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`),e.statusEntries.push({key:`retry`,text:`stream dropped, retrying (${t.attempt}/${t.maxAttempts})`,tone:`warning`});let n=nf(e);n?.streaming&&e.entries.splice(e.entries.indexOf(n),1);break}case`length_retry`:{e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`),e.statusEntries.push({key:`retry`,text:`response truncated, retrying with larger budget (${t.attempt}/${t.maxAttempts})`,tone:`warning`});let n=nf(e);n?.streaming&&e.entries.splice(e.entries.indexOf(n),1);break}case`tasks_update`:e.tasks=t.tasks??[];break;case`suggest_next`:e.suggestedCommand=String(t.command);break;case`session_name_changed`:e.sessionName=String(t.name??``);break;case`background_agent_start`:e.backgroundAgents[String(t.agentId)]={agentId:String(t.agentId),agentType:String(t.agentType),taskSummary:String(t.taskSummary),startedAt:new Date().toISOString(),status:`running`,sessionDir:t.sessionDir};break;case`subagent_arbitration`:{let n=e.backgroundAgents[String(t.agentId)];if(n){let e={status:t.status,proposed:t.proposed,final:t.final??null,changed:t.changed??[],step:t.step,errorCode:t.errorCode,errorMessage:t.errorMessage};n.arbitrations=[...n.arbitrations??[],e],e.status===`success`&&e.final&&(n.agentType=e.final.agent)}break}case`background_agent_end`:{let n=e.backgroundAgents[String(t.agentId)];n&&(n.status=t.success?`completed`:`failed`,n.sessionFile=t.sessionFile??n.sessionFile);let r=e.subagents[String(t.agentId)];r&&(r.streaming=!1),Xd(e);break}case`background_agent_event`:{let n=String(t.agentId),r=e.subagents[n];r||(r={agentId:n,entries:[],streaming:!0},e.subagents[n]=r);let i=t.event;if(i?.type===`session`)break;i?.type===`agent_start`&&i.model&&(r.model=i.model.id),of(r,i);break}case`parent_paused_for_background_agents`:e.statusEntries=e.statusEntries.filter(e=>e.key!==`paused`),e.statusEntries.push({key:`paused`,text:`paused — waiting on ${t.runningAgentCount} background agent${t.runningAgentCount===1?``:`s`}`,tone:`warning`});break;case`extension_ui_response_handled`:lf(e,String(t.id));break;case`extension_ui_request`:{let n=t.method,r=Id(t);if(r)e.uiRequests.push(r);else if(n===`notify`){Kd+=1;let n=t.notifyType??`info`;e.toasts.push({id:Kd,text:String(t.message??``),tone:n}),Jd(e)}else if(n===`setStatus`){let n=`ext:${t.statusKey??`default`}`;e.statusEntries=e.statusEntries.filter(e=>e.key!==n),t.statusText&&e.statusEntries.push({key:n,text:String(t.statusText),tone:`info`})}else if(n===`setWidget`){let n=t.widgetPlacement===`belowEditor`?`below`:`above`;e.widgets[n]=Array.isArray(t.widgetLines)?t.widgetLines:[]}else n===`setTitle`?e.title=String(t.title??``):n===`set_editor_text`&&(e.composerPrefill=String(t.text??``));break}case`extension_error`:Kd+=1,e.toasts.push({id:Kd,text:`extension error: ${t.error}`,tone:`error`}),Jd(e);break;default:break}Zd(e)}function cf(e,t){e.toasts=e.toasts.filter(e=>e.id!==t)}function lf(e,t){e.uiRequests=e.uiRequests.filter(e=>e.id!==t),Zd(e)}var uf=Symbol(`store-raw`),df=Symbol(`store-node`),ff=Symbol(`store-has`),pf=Symbol(`store-self`);function mf(e){let t=e[p];if(!t&&(Object.defineProperty(e,p,{value:t=new Proxy(e,Sf)}),!Array.isArray(e))){let n=Object.keys(e),r=Object.getOwnPropertyDescriptors(e),i=Object.getPrototypeOf(e),a=i!==null&&typeof e==`object`&&!!e&&!Array.isArray(e)&&i!==Object.prototype;if(a){let e=Object.getOwnPropertyDescriptors(i);n.push(...Object.keys(e)),Object.assign(r,e)}for(let i=0,o=n.length;i<o;i++){let o=n[i];a&&o===`constructor`||r[o].get&&Object.defineProperty(e,o,{configurable:!0,enumerable:r[o].enumerable,get:r[o].get.bind(t)})}}return t}function hf(e){let t;return typeof e==`object`&&!!e&&(e[p]||!(t=Object.getPrototypeOf(e))||t===Object.prototype||Array.isArray(e))}function gf(e,t=new Set){let n,r,i,a;if(n=e!=null&&e[uf])return n;if(!hf(e)||t.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):t.add(e);for(let n=0,a=e.length;n<a;n++)i=e[n],(r=gf(i,t))!==i&&(e[n]=r)}else{Object.isFrozen(e)?e=Object.assign({},e):t.add(e);let n=Object.keys(e),o=Object.getOwnPropertyDescriptors(e);for(let s=0,c=n.length;s<c;s++)a=n[s],!o[a].get&&(i=e[a],(r=gf(i,t))!==i&&(e[a]=r))}return e}function _f(e,t){let n=e[t];return n||Object.defineProperty(e,t,{value:n=Object.create(null)}),n}function vf(e,t,n){if(e[t])return e[t];let[r,i]=k(n,{equals:!1,internal:!0});return r.$=i,e[t]=r}function yf(e,t){let n=Reflect.getOwnPropertyDescriptor(e,t);return!n||n.get||!n.configurable||t===p||t===df?n:(delete n.value,delete n.writable,n.get=()=>e[p][t],n)}function bf(e){ee()&&vf(_f(e,df),pf)()}function xf(e){return bf(e),Reflect.ownKeys(e)}var Sf={get(e,t,n){if(t===uf)return e;if(t===p)return n;if(t===m)return bf(e),n;let r=_f(e,df),i=r[t],a=i?i():e[t];if(t===df||t===ff||t===`__proto__`)return a;if(!i){let n=Object.getOwnPropertyDescriptor(e,t);ee()&&(typeof a!=`function`||Object.prototype.hasOwnProperty.call(e,t))&&!(n&&n.get)&&(a=vf(r,t,a)())}return hf(a)?mf(a):a},has(e,t){return t===uf||t===p||t===m||t===df||t===ff||t===`__proto__`?!0:(ee()&&vf(_f(e,ff),t)(),t in e)},set(){return!0},deleteProperty(){return!0},ownKeys:xf,getOwnPropertyDescriptor:yf};function Cf(e,t,n,r=!1){if(t===`__proto__`||!r&&e[t]===n)return;let i=e[t],a=e.length;n===void 0?(delete e[t],e[ff]&&e[ff][t]&&i!==void 0&&e[ff][t].$()):(e[t]=n,e[ff]&&e[ff][t]&&i===void 0&&e[ff][t].$());let o=_f(e,df),s;if((s=vf(o,t,i))&&s.$(()=>n),Array.isArray(e)&&e.length!==a){for(let t=e.length;t<a;t++)(s=o[t])&&s.$();(s=vf(o,`length`,a))&&s.$(e.length)}(s=o[pf])&&s.$()}function wf(e,t){let n=Object.keys(t);for(let r=0;r<n.length;r+=1){let i=n[r];Tf(i)||Cf(e,i,t[i])}}function Tf(e){return e===`__proto__`||e===`constructor`||e===`prototype`}function Ef(e,t){if(typeof t==`function`&&(t=t(e)),t=gf(t),Array.isArray(t)){if(e===t)return;let n=0,r=t.length;for(;n<r;n++){let r=t[n];e[n]!==r&&Cf(e,n,r)}Cf(e,`length`,r)}else wf(e,t)}function Df(e,t,n=[]){let r,i=e;if(t.length>1){r=t.shift();let a=typeof r,o=Array.isArray(e);if(a===`string`&&(r===`__proto__`||t.length>1&&Tf(r)))return;if(Array.isArray(r)){for(let i=0;i<r.length;i++)Df(e,[r[i]].concat(t),n);return}else if(o&&a===`function`){for(let i=0;i<e.length;i++)r(e[i],i)&&Df(e,[i].concat(t),n);return}else if(o&&a===`object`){let{from:i=0,to:a=e.length-1,by:o=1}=r;for(let r=i;r<=a;r+=o)Df(e,[r].concat(t),n);return}else if(t.length>1){Df(e[r],t,[r].concat(n));return}i=e[r],n=[r].concat(n)}let a=t[0];typeof a==`function`&&(a=a(i,n),a===i)||r===void 0&&a==null||(a=gf(a),r===void 0||hf(i)&&hf(a)&&!Array.isArray(a)?wf(i,a):Cf(e,r,a))}function Of(...[e,t]){let n=gf(e||{}),r=Array.isArray(n),i=mf(n);function a(...e){I(()=>{r&&e.length===1?Ef(n,e[0]):Df(n,e)})}return[i,a]}var kf=new WeakMap,Af={get(e,t){if(t===uf)return e;let n=e[t];if(t===p||t===m||t===df||t===ff||t===`__proto__`)return n;let r;return hf(n)?kf.get(n)||(kf.set(n,r=new Proxy(n,Af)),r):n},set(e,t,n){return Cf(e,t,gf(n)),!0},deleteProperty(e,t){return Cf(e,t,void 0,!0),!0}};function jf(e){return t=>{if(hf(t)){let n;(n=kf.get(t))||kf.set(t,n=new Proxy(t,Af)),e(n)}return t}}function Mf(){let[e,...t]=window.location.hash.replace(/^#\/?/,``).split(`/`);return e===`session`&&t[0]?t[1]===`subagent`&&t[2]?{screen:`subagent`,key:t[0],agentId:t[2]}:{screen:`session`,key:t[0]}:e===`files`?{screen:`files`,path:t.length?decodeURIComponent(t.join(`/`)):void 0}:e===`settings`?{screen:`settings`}:e===`pairing`?{screen:`pairing`}:{screen:`fleet`}}function Nf(e){switch(e.screen){case`fleet`:return`#/`;case`session`:return`#/session/${e.key}`;case`subagent`:return`#/session/${e.key}/subagent/${e.agentId}`;case`files`:return e.path?`#/files/${encodeURIComponent(e.path)}`:`#/files`;case`settings`:return`#/settings`;case`pairing`:return`#/pairing`}}var Pf=2e3,Ff=3*1024*1024,If=Pf,Lf=Ff,Rf=3e4,zf=1e4,Bf=1e3,Vf=3e4,Hf=new TextEncoder;function Uf(e,t,n){e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`);let r=n.retryAttempt??0;if(n.isRetrying&&r>0){let t=e.entries.findLast(e=>e.kind===`assistant`&&e.stopReason===`error`),n=t?.errorMessage?` — ${t.errorMessage}`:``;e.statusEntries.push({key:`retry`,text:`retrying (attempt ${r})${n}`,tone:`warning`})}tf(e,t,n.isStreaming||n.isRetrying||n.isCompacting)}function Wf(){let[e,t]=Of({}),[n,r]=Of({}),[i,a]=k(Mf()),[o,s]=k({runtimes:[],diskSessions:[]}),[c,l]=k(),[u,d]=k(),[f,p]=k(),[m,h]=k(!1),[g,_]=k(),[v,y]=k({state:`disconnected`,attempt:0}),b=()=>v().state===`connected`,[x,S]=k([]),C=new Map,w=new Map,T=new Map,E=0,D=0,O,A,j,M,N=!1,P=0,F=!1,I,L=0,R=new Map,z=new Map,ee=new Map,te=0,ne=0,re,ie=new Set,ae=!1;window.addEventListener(`hashchange`,()=>a(Mf()));function B(e){window.location.hash=Nf(e)}function oe(e){return n[e]??0}function V(e){return C.get(e)??0}function se(e){return w.get(e)??0}function H(e){w.set(e,se(e)+1)}function ce(e){C.set(e,V(e)+1)}function le(e){return{revision:oe(e),generation:V(e),epoch:E}}function ue(e,t){return V(e)===t.generation&&E===t.epoch}function de(e,t){return oe(e)===t.revision&&ue(e,t)}function fe(e,t){t&&T.get(e)!==t||(T.delete(e),t&&(t.queued=[],t.queuedBytes=0))}function pe(e){r(e,oe(e)+1)}function me(n){e[n]||t(n,Ld(n))}function he(e,n){me(e),t(e,jf(n)),pe(e)}function ge(e){fe(e),ce(e),w.delete(e),t(e,void 0),r(e,void 0),ic(e)}function _e(){let e=Mf();return e.screen===`session`||e.screen===`subagent`?e.key:void 0}function ve(e,t=`info`){--D,S(n=>[...n,{id:D,text:e,tone:t}].slice(-20))}function ye(e){return R.get(e)??0}function be(e,t,n){let r=new Map(e.map(e=>[e.key,JSON.stringify(e.state)])),i=new Map(t.map(e=>[e.key,JSON.stringify(e.state)]));for(let e of new Set([...r.keys(),...i.keys()])){if(r.get(e)===i.get(e))continue;let t=ye(e)+1;R.set(e,t),n===void 0?z.set(e,t):ee.set(e,Math.max(ee.get(e)??-1,n))}}function xe(e,t){s(n=>{let r=e(n);return L+=1,be(n.runtimes,r.runtimes,t),r})}function Se(e){ie.clear(),xe(()=>e)}function Ce(e,t){let n=new Set(e.filter(e=>!ie.has(e.key)).map(e=>e.key)),r=n.size!==o().runtimes.length||o().runtimes.some(e=>!n.has(e.key));xe(t=>{let n=new Map(t.runtimes.map(e=>[e.key,e]));return{...t,runtimes:e.filter(e=>!ie.has(e.key)).map(e=>{let t=n.get(e.key);return{...e,state:{...e.state,contextUsage:t?.state.contextUsage??e.state.contextUsage},...t?.stats===void 0?{}:{stats:t.stats},...t?.lastAssistantText===void 0?{}:{lastAssistantText:t.lastAssistantText}}})}},t),r&&Te().catch(()=>{})}function we(e){let t=ie.has(e);return ie.add(e),t?(ge(e),Promise.resolve()):(xe(t=>({...t,runtimes:t.runtimes.filter(t=>t.key!==e)})),ge(e),Te())}function U(){let e=++te,t=L;return Q.fleet().then(n=>{e!==te||t!==L||(Se(n),l(void 0))},n=>{throw e===te&&t===L&&l(n instanceof Error?n.message:String(n)),n})}function Te(){let e=++ne;return Q.sessions().then(t=>{e===ne&&(xe(e=>({...e,diskSessions:t.sessions})),l(void 0))},t=>{throw e===ne&&l(t instanceof Error?t.message:String(t)),t})}function W(e){ie.delete(e.key),xe(t=>{let n=t.runtimes.findIndex(t=>t.key===e.key);if(n===-1)return{...t,runtimes:[...t.runtimes,e]};let r=[...t.runtimes];return r[n]=e,{...t,runtimes:r}})}function G(e,t,n,r){if(o().runtimes.some(t=>t.key===e)){if(n!==void 0&&ye(e)!==n){let t=z.get(e)??0,i=ee.get(e);if(t>n||i===void 0||i>r)return}xe(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:t}:n)}))}}function Ee(e,t){xe(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:{...n.state,model:t}}:n)}))}function K(e,t){xe(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:{...n.state,thinkingLevel:t}}:n)}))}function q(e,t,n){return{...e,state:{...e.state,...t.contextUsage===void 0?{}:{contextUsage:t.contextUsage},messageCount:n?e.state.messageCount:t.totalMessages},stats:{tokensTotal:t.tokens.total,cost:t.cost}}}function De(e){let t=new AbortController,n,r=new Promise((r,i)=>{n=setTimeout(()=>{let n=Error(`Stats request for runtime ${e} timed out after ${zf} ms`);i(n),t.abort(n)},zf)});return Promise.race([Q.stats(e,t.signal),r]).finally(()=>{n!==void 0&&clearTimeout(n)})}function Oe(){if(re)return re;let e=o().runtimes.map(e=>e.key),t=new Map(e.map(e=>[e,ye(e)])),n=e.map(e=>De(e)),r=Promise.allSettled(n).then(n=>{let r=new Map,i=[];for(let[t,a]of n.entries())a.status===`fulfilled`?r.set(e[t],a.value):i.push(a.reason instanceof Error?a.reason.message:String(a.reason));r.size>0&&xe(e=>({...e,runtimes:e.runtimes.map(e=>{let n=r.get(e.key),i=t.get(e.key),a=i===void 0||ye(e.key)!==i;return n?q(e,n,a):e})})),d(i.length>0?i.join(`; `):void 0)}).finally(()=>{re===r&&(re=void 0)});return re=r,r}function ke(e){return Hf.encode(JSON.stringify(e)).byteLength}function J(e){e.queued=[],e.queuedBytes=0}function Ae(){j!==void 0&&clearTimeout(j),j=void 0}function Y(){return Math.min(Vf,Bf*2**Math.max(0,P-1))}function je(){if(ae||j!==void 0)return;P+=1;let e=Y();h(!1),M||=v(),y(t=>t.state===`auth_failed`?t:(N=!0,{...t,state:`retrying`,attempt:Math.max(t.attempt,P),retryDelayMs:e,retryAt:Date.now()+e})),j=setTimeout(()=>{j=void 0,Fe()},e)}function Me(){let e=M,t=N;M=void 0,N=!1,!(!t||e?.state!==`connected`||v().state!==`retrying`)&&y({state:`connected`,attempt:e.attempt,lastAppliedSeq:e.lastAppliedSeq})}function Ne(e){let t=e.event?.type;if(t===`fleet_snapshot`)Ce(e.event.runtimes,e.seq);else if(t===`disk_sessions_changed`)Te().catch(()=>{});else if(t===`runtime_removed`){if(e.key){let t=_e()===e.key;we(e.key).catch(()=>{}),t&&(ve(`session ${e.key} was stopped`,`warning`),B({screen:`fleet`}))}}else e.key&&(he(e.key,t=>sf(t,e.event)),t===`tasks_update`&&H(e.key))}function Pe(e){let t=e.subagent;he(e.key,n=>{let r=e.messages;if(n.entries=Gd(r),n.tasks=(e.state.tasks??[]).map(e=>({...e})),n.streaming=e.state.isStreaming,n.compacting=e.state.isCompacting,n.sessionName=e.state.sessionName,n.model=e.state.model?.id,n.contextUsage=e.state.contextUsage,n.uiRequests=(e.pendingExtensionUiRequests??[]).map(e=>Id(e)).filter(e=>e!==void 0),n.statusEntries=[],n.suggestedCommand=void 0,n.lastError=void 0,n.widgets={above:[],below:[]},n.toasts=[],n.title=void 0,n.composerPrefill=void 0,Uf(n,r,e.state),n.streaming?(n.workingSince=Date.now(),n.workingText=`working`):(n.workingSince=void 0,n.workingText=void 0),n.backgroundAgents=Object.fromEntries(e.backgroundAgents.map(e=>[e.agentId,e])),Xd(n),t){let r=e.backgroundAgents.find(e=>e.agentId===t.agentId)??t.agent;n.backgroundAgents[t.agentId]=r,n.subagents[t.agentId]={agentId:t.agentId,entries:Gd(t.messages),streaming:r.status===`running`}}Zd(n)}),H(e.key)}function X(e,t){if(A!==e||e.state!==`active`||e.barrierSeq===void 0)return;Ae(),P=0,Me();let n=e.barrierSeq;if(I=n,Se(t.fleet),l(void 0),t.active)Pe(t.active);else{let e=_e();e&&(ge(e),ve(`session ${e} was stopped`,`warning`),B({screen:`fleet`}))}let r=[...e.queued].sort((e,t)=>e.seq-t.seq),i=t.active?.subagent;if(i&&t.active)for(let e of r)e.seq>i.barrierSeq&&e.seq<=n&&e.key===t.active.key&&e.event.type===`background_agent_event`&&String(e.event.agentId)===i.agentId&&Ne(e);for(let e of r)e.seq>n&&Ne(e);J(e),A=void 0,h(!1),p(void 0)}function Fe(e=!1){if(ae)return Promise.resolve();if(O)return(e||A?.state===`failed`)&&(F=!0),O;Ae();let t=i(),n=t.screen===`session`||t.screen===`subagent`?t.key:void 0,r=t.screen===`subagent`?t.agentId:void 0,a={queued:[],queuedBytes:0,state:`active`,controller:new AbortController};A=a,E+=1;for(let[e,t]of T)fe(e,t);h(!0),p(void 0);let o=setTimeout(()=>a.controller.abort(`Dashboard recovery timed out`),Rf),s=Q.resync(n,r,a.controller.signal).then(e=>{a.barrierSeq=e.barrierSeq,X(a,e)}).catch(e=>{if(A!==a)return;a.state=`failed`,J(a);let t=a.controller.signal.reason;p(typeof t==`string`?t:e instanceof Error?e.message:String(e)),je(),j===void 0&&h(!1)}).finally(()=>{clearTimeout(o),O===s&&(O=void 0),!ae&&F&&(F=!1,Fe())});return O=s,s}function Ie(){return Fe(!0)}function Le(e){if(e.event?.type===`dashboard_resync`){Fe(!0);return}if(A){if(A.state===`failed`)throw je(),Error(`Dashboard recovery is failed; refusing to acknowledge live envelope before resync succeeds`);let t=ke(e);if(A.queued.length>=Pf||A.queuedBytes+t>Ff){J(A),A.state=`failed`;let e=`Dashboard recovery queue overflowed; waiting for a newer authoritative snapshot`;throw p(e),A.controller.abort(e),je(),j===void 0&&h(!1),Error(e)}A.queued.push(e),A.queuedBytes+=t;return}if(I!==void 0&&e.seq<=I)return;let t=e.key?T.get(e.key):void 0;if(t){let n=ke(e);if(t.queued.length>=If||t.queuedBytes+n>Lf)throw fe(e.key,t),Error(`Dashboard hydration queue overflowed for ${e.key}; refusing an incomplete snapshot replay`);t.queued.push(e),t.queuedBytes+=n}Ne(e)}let Re;async function ze(){ae=!1;try{let e=await Q.auth();_(e)}catch(e){_({mode:`remote`,needsPairing:e?.body?.needsPairing??!1,identity:e?.body?.identity,error:e?.message}),B({screen:`pairing`});return}await U().catch(()=>{}),Re=ht({onEnvelope:Le,onStatusChange:e=>{N=!1,M=e.state===`connected`?e:void 0,y(e)},onRecovery:()=>{Fe()}})}function Be(){ae=!0,Re?.(),Ae(),M=void 0,N=!1,F=!1;let e=A;A=void 0,e&&J(e),e?.controller.abort(`Dashboard stopped`);for(let[e,t]of T)fe(e,t)}function Ve(t){if(x().some(e=>e.id===t)){S(e=>e.filter(e=>e.id!==t));return}for(let[n,r]of Object.entries(e))if(r.toasts.some(e=>e.id===t)){he(n,e=>cf(e,t));return}}async function He(e,t){fe(e);let n=ye(e),r={guard:le(e),queued:[],queuedBytes:0};T.set(e,r);let i=()=>fe(e,r);t?.addEventListener(`abort`,i,{once:!0}),t?.aborted&&i();try{let i=await Q.hydrate(e,t);if(t?.aborted||T.get(e)!==r||!ue(e,r.guard))return;he(e,e=>{let t=i.messages;e.entries=Gd(t),e.backgroundAgents=Object.fromEntries(i.backgroundAgents.map(e=>[e.agentId,e])),Xd(e),e.streaming=i.state.isStreaming,e.compacting=i.state.isCompacting,e.tasks=(i.state.tasks??[]).map(e=>({...e})),i.state.isStreaming?(e.workingSince=Date.now(),e.workingText=`working`):(e.workingSince=void 0,e.workingText=void 0),e.uiRequests=(i.pendingExtensionUiRequests??[]).map(e=>Id(e)).filter(e=>e!==void 0),Uf(e,t,i.state),Zd(e)}),H(e),G(e,i.state,n,i.barrierSeq);for(let e of[...r.queued].sort((e,t)=>e.seq-t.seq))e.seq>i.barrierSeq&&Ne(e)}finally{t?.removeEventListener(`abort`,i),fe(e,r)}}async function Ue(e,t,n){let r=le(e),{agent:i,messages:a}=await Q.subagentMessages(e,t,n);n?.aborted||!de(e,r)||he(e,e=>{e.backgroundAgents[t]=i;let n=e.subagents[t];n||(n={agentId:t,entries:[],streaming:i.status===`running`},e.subagents[t]=n),a.length>0&&(n.entries=Gd(a)),n.streaming=i.status===`running`})}return{sessions:e,revisions:n,route:i,navigate:B,fleet:o,fleetError:c,fleetStatsError:u,refreshFleet:U,refreshDiskSessions:Te,refreshFleetStats:Oe,removeRuntime:we,upsertRuntime:W,setRuntimeModel:Ee,setRuntimeThinkingLevel:K,resyncing:m,resyncError:f,retryResync:Ie,auth:g,connected:b,connection:v,notices:x,start:ze,stop:Be,dismissToast:Ve,resolveUiRequest(e,t){he(e,e=>lf(e,t))},hydrateSession:He,hydrateSubagent:Ue}}var Gf=5e3;function Kf(e){let t;return Promise.race([e,new Promise((e,n)=>{t=setTimeout(()=>n(Error(`service worker not ready`)),Gf)})]).finally(()=>{t&&clearTimeout(t)})}function qf(){let e=Wf();R(()=>{e.start(),`serviceWorker`in navigator&&(navigator.serviceWorker.addEventListener(`message`,t=>{if(t.data?.type===`navigate-session`&&typeof t.data.sessionKey==`string`){let n=t.data.sessionKey,r=!!e.sessions[n]||e.fleet().runtimes.some(e=>e.key===n);e.navigate(r?{screen:`session`,key:n}:{screen:`fleet`})}}),navigator.serviceWorker.register(`./sw.js`).catch(e=>{console.warn(`dashboard: service worker registration failed`,e)}))}),z(()=>e.stop());let t=new Set,n=new Set,r=t=>!!(e.fleet().runtimes.find(e=>e.key===t)?.needsAttention||e.sessions[t]?.needsAttention);M(()=>{let i=new Map;for(let t of e.fleet().runtimes)t.needsAttention&&i.set(t.key,{name:t.state.sessionName??t.state.sessionId.slice(0,8),reason:`needs attention`});for(let t of Object.values(e.sessions))t.needsAttention&&i.set(t.key,{name:t.sessionName??t.title??t.key,reason:t.uiRequests[0]?.title?`waiting for input — ${t.uiRequests[0].title}`:t.statusEntries.find(e=>e.tone===`error`)?.text??`needs attention`});let a=i.size>0,o=e.route(),s=o.screen===`session`||o.screen===`subagent`?o.key:void 0,c=s?e.sessions[s]:void 0,l=s?e.fleet().runtimes.find(e=>e.key===s):void 0,u=c?.title??c?.sessionName??l?.state.sessionName,d=u?`${u} — dreb`:`dreb`;document.title=a?`◆ ${d}`:d;for(let[e,a]of i)n.has(e)||t.has(e)||typeof Notification<`u`&&Notification.permission===`granted`&&document.visibilityState!==`visible`&&`serviceWorker`in navigator&&(t.add(e),Kf(navigator.serviceWorker.ready).then(t=>t.showNotification(`dreb — ${a.name}`,{body:a.reason,tag:e,data:{sessionKey:e}})).then(()=>{t.delete(e),r(e)?n.add(e):n.delete(e)}).catch(n=>{t.delete(e),console.warn(`dashboard: showNotification failed`,n)}));for(let e of[...n])i.has(e)||n.delete(e);for(let e of[...t])i.has(e)||t.delete(e)});let i=()=>[...Object.values(e.sessions).flatMap(e=>e.toasts.map(t=>({...t,sessionKey:e.key}))),...e.notices()].slice(-5);return[U(Ee,{get fallback(){return U(bn,{store:e})},get children(){return[U(K,{get when(){return e.route().screen===`session`},get children(){return U(Kl,{store:e,get sessionKey(){return e.route().key}})}}),U(K,{get when(){return e.route().screen===`subagent`},get children(){return U(Fd,{store:e,get sessionKey(){return e.route().key},get agentId(){return e.route().agentId}})}}),U(K,{get when(){return e.route().screen===`files`},get children(){return U(Ft,{store:e,get initialPath(){return e.route().path}})}}),U(K,{get when(){return e.route().screen===`settings`},get children(){return U(Dd,{store:e})}}),U(K,{get when(){return e.route().screen===`pairing`},get children(){return U(En,{store:e})}})]}}),U(rt,{get toasts(){return i()},onDismiss:t=>e.dismissToast(t)})]}Cu();var Jf=document.getElementById(`root`);if(!Jf)throw Error(`dashboard: #root element missing from index.html`);ke(()=>U(qf,{}),Jf);
|
|
79
|
+
`).trim()||a),{kind:`agent-result`,text:o,header:a,raw:e,timestamp:t}}function Hd(e){let{text:t,images:n}=zd(e.content);return Vd(t,e.timestamp)??{kind:`user`,text:t,images:n.length>0?n:void 0,timestamp:e.timestamp}}function Ud(e){if(!(e?.role!==`assistant`||e.stopReason!==`error`))return typeof e.errorMessage==`string`&&e.errorMessage.trim().length>0?e.errorMessage:`Unknown error`}function Wd(e){let t=[],n=new Map;for(let r of e)if(r.role===`user`)t.push(Hd(r));else if(r.role===`assistant`){let e=[],i=[],a=()=>{if(e.length===0)return;let n={kind:`assistant`,blocks:e,model:r.model,streaming:!1,timestamp:r.timestamp};i.push(n),t.push(n),e=[]};if(Array.isArray(r.content)){for(let i of r.content)if(i.type===`text`&&typeof i.text==`string`)e.push({kind:`text`,text:i.text});else if(i.type===`thinking`&&typeof i.thinking==`string`)e.push({kind:`thinking`,text:i.thinking});else if(i.type===`toolCall`){a();let e=i,o={kind:`tool`,toolCallId:String(e.id??``),toolName:String(e.name??`tool`),args:e.arguments,status:`running`,resultText:``,startedAt:r.timestamp??Date.now()};n.set(o.toolCallId,o),t.push(o)}}a();let o=Ud(r);if(o&&i.length===0){let e={kind:`assistant`,blocks:[],model:r.model,streaming:!1,timestamp:r.timestamp};i.push(e),t.push(e)}let s=i.at(-1);s&&(s.stopReason=r.stopReason,s.errorMessage=o)}else if(r.role===`toolResult`){let e=n.get(String(r.toolCallId));if(e){e.status=r.isError?`error`:`done`;let t=zd(r.content);e.resultText=t.text,t.images.length>0&&(e.images=t.images),e.details=r.details,e.endedAt=r.timestamp}}else if(r.role===`bashExecution`){let e=r;t.push({kind:`tool`,toolCallId:`bash-exec-${t.length}`,toolName:`bash (user)`,args:{command:e.command},status:`done`,resultText:e.output??``,startedAt:r.timestamp??Date.now()})}else if(r.role===`custom`){let e=r;t.push({kind:`custom`,tag:e.customType??`extension`,text:e.displayText??Bd(r.content)})}return t}var Gd=0,Kd=20;function qd(e){let t=e.toasts.length-Kd;t>0&&e.toasts.splice(0,t)}function Jd(e){let t=Date.parse(e.startedAt);return Number.isFinite(t)?t:0}function Yd(e){let t=Object.values(e.backgroundAgents).filter(e=>e.status!==`running`).sort((e,t)=>Jd(e)-Jd(t)||e.agentId.localeCompare(t.agentId)),n=t.length-20;if(!(n<=0))for(let r of t.slice(0,n))delete e.backgroundAgents[r.agentId],delete e.subagents[r.agentId]}function Xd(e){e.needsAttention=e.uiRequests.length>0||e.statusEntries.some(e=>e.tone===`error`)||!!e.suggestedCommand}var Zd=`provider-error`;function Qd(e){e.statusEntries=e.statusEntries.filter(e=>e.key!==Zd),e.lastError=void 0}function $d(e,t){Qd(e),e.statusEntries.push({key:Zd,text:t,tone:`error`}),e.lastError=t}function ef(e,t,n){if(Qd(e),!n)for(let n=t.length-1;n>=0;--n){let r=t[n];if(r?.role!==`assistant`)continue;let i=Ud(r);i&&$d(e,i);break}Xd(e)}function tf(e){for(let t=e.entries.length-1;t>=0;t--){let n=e.entries[t];if(n.kind===`assistant`)return n}}function nf(e,t){for(let n=e.entries.length-1;n>=0;n--){let r=e.entries[n];if(r.kind===`tool`&&r.toolCallId===t)return r}}function rf(e,t,n){let r=e.entries.indexOf(t);if(r<0)return;let i=new Set,a=n.map(t=>{if(t.kind!==`tool`)return t;let n=nf(e,t.toolCallId);return n?(i.add(n),n):t}),o=new Set([t,...i]),s=e.entries.slice(0,r).filter(e=>!o.has(e)).length,c=e.entries.filter(e=>!o.has(e));c.splice(s,0,...a),e.entries.splice(0,e.entries.length,...c)}function af(e,t){switch(t.type){case`agent_start`:e.streaming=!0;break;case`agent_end`:{e.streaming=!1;let t=tf(e);t&&(t.streaming=!1);break}case`message_start`:{let n=t.message;n?.role===`user`?e.entries.push(Hd(n)):n?.role===`assistant`&&e.entries.push({kind:`assistant`,blocks:[],model:n.model,streaming:!0,timestamp:n.timestamp});break}case`message_update`:{let n=t.assistantMessageEvent;if(!n)break;let r=tf(e);if((!r||!r.streaming)&&(r={kind:`assistant`,blocks:[],streaming:!0},e.entries.push(r)),n.type===`text_start`)r.blocks.push({kind:`text`,text:``});else if(n.type===`thinking_start`)r.blocks.push({kind:`thinking`,text:``});else if(n.type===`text_delta`||n.type===`thinking_delta`){let e=r.blocks[r.blocks.length-1];e&&(e.text+=n.delta??``)}else if(n.type===`text_end`||n.type===`thinking_end`){let e=r.blocks[r.blocks.length-1];e&&typeof n.content==`string`&&(e.text=n.content)}break}case`message_end`:{let n=t.message;if(n?.role===`assistant`){let t=tf(e),r=Wd([n]);t?.streaming?rf(e,t,r):e.entries.push(...r)}else if(n?.role===`user`){let t=e.entries[e.entries.length-1],r=Hd(n);r.kind===`agent-result`?t?.kind===`agent-result`&&t.raw===r.raw||e.entries.push(r):t?.kind===`user`&&t.text===r.text?r.images&&(t.images=r.images):e.entries.push(r)}break}case`tool_execution_start`:{let n=String(t.toolCallId),r=nf(e,n);r?(r.toolName=String(t.toolName),r.args=t.args,r.status=`running`,r.resultText=``,r.images=void 0,r.details=void 0,r.startedAt=Date.now(),r.endedAt=void 0):e.entries.push({kind:`tool`,toolCallId:n,toolName:String(t.toolName),args:t.args,status:`running`,resultText:``,startedAt:Date.now()});break}case`tool_execution_update`:{let n=nf(e,String(t.toolCallId));if(n){let e=t.partialResult;if(typeof e==`string`)n.resultText=e,n.images=void 0;else if(e?.content){let t=zd(e.content);n.resultText=t.text,n.images=t.images.length>0?t.images:void 0}}break}case`tool_execution_end`:{let n=nf(e,String(t.toolCallId));if(n){n.status=t.isError?`error`:`done`;let e=t.result;if(typeof e==`string`)n.resultText=e,n.images=void 0;else if(e?.content){let t=zd(e.content);n.resultText=t.text,n.images=t.images.length>0?t.images:void 0}n.details=t.result?.details,n.endedAt=Date.now()}break}default:break}}function of(e,t){switch(af(e,t),t.type){case`agent_start`:e.workingText=`working`,e.workingSince=Date.now(),Qd(e),e.suggestedCommand=void 0,e.uiRequests=[];break;case`agent_end`:e.workingText=void 0,e.workingSince=void 0,e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`&&e.key!==`paused`);break;case`message_end`:{let n=t.message;if(n?.role===`assistant`){let t=Ud(n);t?$d(e,t):Qd(e)}break}case`tool_execution_start`:e.workingText=`${t.toolName}`;break;case`auto_compaction_start`:e.compacting=!0,t.reason===`overflow`&&Qd(e),e.statusEntries.push({key:`compaction`,text:`compacting context…`,tone:`info`});break;case`auto_compaction_end`:{e.compacting=!1,e.statusEntries=e.statusEntries.filter(e=>e.key!==`compaction`);let n=t.result;n&&!t.aborted&&e.entries.push({kind:`summary`,label:`compaction`,text:n.summary??`context compacted`,tokensBefore:n.tokensBefore}),t.errorMessage&&e.statusEntries.push({key:`compaction-error`,text:String(t.errorMessage),tone:`error`});break}case`auto_retry_start`:Qd(e),e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`),e.statusEntries.push({key:`retry`,text:`retrying (${t.attempt}/${t.maxAttempts}) — ${t.errorMessage}`,tone:`warning`});break;case`auto_retry_end`:e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`),!t.success&&t.finalError?$d(e,String(t.finalError)):t.success&&Qd(e);break;case`stream_retry`:{e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`),e.statusEntries.push({key:`retry`,text:`stream dropped, retrying (${t.attempt}/${t.maxAttempts})`,tone:`warning`});let n=tf(e);n?.streaming&&e.entries.splice(e.entries.indexOf(n),1);break}case`length_retry`:{e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`),e.statusEntries.push({key:`retry`,text:`response truncated, retrying with larger budget (${t.attempt}/${t.maxAttempts})`,tone:`warning`});let n=tf(e);n?.streaming&&e.entries.splice(e.entries.indexOf(n),1);break}case`tasks_update`:e.tasks=t.tasks??[];break;case`suggest_next`:e.suggestedCommand=String(t.command);break;case`session_name_changed`:e.sessionName=String(t.name??``);break;case`background_agent_start`:e.backgroundAgents[String(t.agentId)]={agentId:String(t.agentId),agentType:String(t.agentType),taskSummary:String(t.taskSummary),startedAt:new Date().toISOString(),status:`running`,sessionDir:t.sessionDir};break;case`subagent_arbitration`:{let n=e.backgroundAgents[String(t.agentId)];if(n){let e={status:t.status,proposed:t.proposed,final:t.final??null,changed:t.changed??[],step:t.step,errorCode:t.errorCode,errorMessage:t.errorMessage};n.arbitrations=[...n.arbitrations??[],e],e.status===`success`&&e.final&&(n.agentType=e.final.agent)}break}case`background_agent_end`:{let n=e.backgroundAgents[String(t.agentId)];n&&(n.status=t.success?`completed`:`failed`,n.sessionFile=t.sessionFile??n.sessionFile);let r=e.subagents[String(t.agentId)];r&&(r.streaming=!1),Yd(e);break}case`background_agent_event`:{let n=String(t.agentId),r=e.subagents[n];r||(r={agentId:n,entries:[],streaming:!0},e.subagents[n]=r);let i=t.event;if(i?.type===`session`)break;i?.type===`agent_start`&&i.model&&(r.model=i.model.id),af(r,i);break}case`parent_paused_for_background_agents`:e.statusEntries=e.statusEntries.filter(e=>e.key!==`paused`),e.statusEntries.push({key:`paused`,text:`paused — waiting on ${t.runningAgentCount} background agent${t.runningAgentCount===1?``:`s`}`,tone:`warning`});break;case`extension_ui_response_handled`:cf(e,String(t.id));break;case`extension_ui_request`:{let n=t.method,r=Fd(t);if(r)e.uiRequests.push(r);else if(n===`notify`){Gd+=1;let n=t.notifyType??`info`;e.toasts.push({id:Gd,text:String(t.message??``),tone:n}),qd(e)}else if(n===`setStatus`){let n=`ext:${t.statusKey??`default`}`;e.statusEntries=e.statusEntries.filter(e=>e.key!==n),t.statusText&&e.statusEntries.push({key:n,text:String(t.statusText),tone:`info`})}else if(n===`setWidget`){let n=t.widgetPlacement===`belowEditor`?`below`:`above`;e.widgets[n]=Array.isArray(t.widgetLines)?t.widgetLines:[]}else n===`setTitle`?e.title=String(t.title??``):n===`set_editor_text`&&(e.composerPrefill=String(t.text??``));break}case`extension_error`:Gd+=1,e.toasts.push({id:Gd,text:`extension error: ${t.error}`,tone:`error`}),qd(e);break;default:break}Xd(e)}function sf(e,t){e.toasts=e.toasts.filter(e=>e.id!==t)}function cf(e,t){e.uiRequests=e.uiRequests.filter(e=>e.id!==t),Xd(e)}var lf=Symbol(`store-raw`),uf=Symbol(`store-node`),df=Symbol(`store-has`),ff=Symbol(`store-self`);function pf(e){let t=e[p];if(!t&&(Object.defineProperty(e,p,{value:t=new Proxy(e,xf)}),!Array.isArray(e))){let n=Object.keys(e),r=Object.getOwnPropertyDescriptors(e),i=Object.getPrototypeOf(e),a=i!==null&&typeof e==`object`&&!!e&&!Array.isArray(e)&&i!==Object.prototype;if(a){let e=Object.getOwnPropertyDescriptors(i);n.push(...Object.keys(e)),Object.assign(r,e)}for(let i=0,o=n.length;i<o;i++){let o=n[i];a&&o===`constructor`||r[o].get&&Object.defineProperty(e,o,{configurable:!0,enumerable:r[o].enumerable,get:r[o].get.bind(t)})}}return t}function mf(e){let t;return typeof e==`object`&&!!e&&(e[p]||!(t=Object.getPrototypeOf(e))||t===Object.prototype||Array.isArray(e))}function hf(e,t=new Set){let n,r,i,a;if(n=e!=null&&e[lf])return n;if(!mf(e)||t.has(e))return e;if(Array.isArray(e)){Object.isFrozen(e)?e=e.slice(0):t.add(e);for(let n=0,a=e.length;n<a;n++)i=e[n],(r=hf(i,t))!==i&&(e[n]=r)}else{Object.isFrozen(e)?e=Object.assign({},e):t.add(e);let n=Object.keys(e),o=Object.getOwnPropertyDescriptors(e);for(let s=0,c=n.length;s<c;s++)a=n[s],!o[a].get&&(i=e[a],(r=hf(i,t))!==i&&(e[a]=r))}return e}function gf(e,t){let n=e[t];return n||Object.defineProperty(e,t,{value:n=Object.create(null)}),n}function _f(e,t,n){if(e[t])return e[t];let[r,i]=k(n,{equals:!1,internal:!0});return r.$=i,e[t]=r}function vf(e,t){let n=Reflect.getOwnPropertyDescriptor(e,t);return!n||n.get||!n.configurable||t===p||t===uf?n:(delete n.value,delete n.writable,n.get=()=>e[p][t],n)}function yf(e){ee()&&_f(gf(e,uf),ff)()}function bf(e){return yf(e),Reflect.ownKeys(e)}var xf={get(e,t,n){if(t===lf)return e;if(t===p)return n;if(t===m)return yf(e),n;let r=gf(e,uf),i=r[t],a=i?i():e[t];if(t===uf||t===df||t===`__proto__`)return a;if(!i){let n=Object.getOwnPropertyDescriptor(e,t);ee()&&(typeof a!=`function`||Object.prototype.hasOwnProperty.call(e,t))&&!(n&&n.get)&&(a=_f(r,t,a)())}return mf(a)?pf(a):a},has(e,t){return t===lf||t===p||t===m||t===uf||t===df||t===`__proto__`?!0:(ee()&&_f(gf(e,df),t)(),t in e)},set(){return!0},deleteProperty(){return!0},ownKeys:bf,getOwnPropertyDescriptor:vf};function Sf(e,t,n,r=!1){if(t===`__proto__`||!r&&e[t]===n)return;let i=e[t],a=e.length;n===void 0?(delete e[t],e[df]&&e[df][t]&&i!==void 0&&e[df][t].$()):(e[t]=n,e[df]&&e[df][t]&&i===void 0&&e[df][t].$());let o=gf(e,uf),s;if((s=_f(o,t,i))&&s.$(()=>n),Array.isArray(e)&&e.length!==a){for(let t=e.length;t<a;t++)(s=o[t])&&s.$();(s=_f(o,`length`,a))&&s.$(e.length)}(s=o[ff])&&s.$()}function Cf(e,t){let n=Object.keys(t);for(let r=0;r<n.length;r+=1){let i=n[r];wf(i)||Sf(e,i,t[i])}}function wf(e){return e===`__proto__`||e===`constructor`||e===`prototype`}function Tf(e,t){if(typeof t==`function`&&(t=t(e)),t=hf(t),Array.isArray(t)){if(e===t)return;let n=0,r=t.length;for(;n<r;n++){let r=t[n];e[n]!==r&&Sf(e,n,r)}Sf(e,`length`,r)}else Cf(e,t)}function Ef(e,t,n=[]){let r,i=e;if(t.length>1){r=t.shift();let a=typeof r,o=Array.isArray(e);if(a===`string`&&(r===`__proto__`||t.length>1&&wf(r)))return;if(Array.isArray(r)){for(let i=0;i<r.length;i++)Ef(e,[r[i]].concat(t),n);return}else if(o&&a===`function`){for(let i=0;i<e.length;i++)r(e[i],i)&&Ef(e,[i].concat(t),n);return}else if(o&&a===`object`){let{from:i=0,to:a=e.length-1,by:o=1}=r;for(let r=i;r<=a;r+=o)Ef(e,[r].concat(t),n);return}else if(t.length>1){Ef(e[r],t,[r].concat(n));return}i=e[r],n=[r].concat(n)}let a=t[0];typeof a==`function`&&(a=a(i,n),a===i)||r===void 0&&a==null||(a=hf(a),r===void 0||mf(i)&&mf(a)&&!Array.isArray(a)?Cf(i,a):Sf(e,r,a))}function Df(...[e,t]){let n=hf(e||{}),r=Array.isArray(n),i=pf(n);function a(...e){I(()=>{r&&e.length===1?Tf(n,e[0]):Ef(n,e)})}return[i,a]}var Of=new WeakMap,kf={get(e,t){if(t===lf)return e;let n=e[t];if(t===p||t===m||t===uf||t===df||t===`__proto__`)return n;let r;return mf(n)?Of.get(n)||(Of.set(n,r=new Proxy(n,kf)),r):n},set(e,t,n){return Sf(e,t,hf(n)),!0},deleteProperty(e,t){return Sf(e,t,void 0,!0),!0}};function Af(e){return t=>{if(mf(t)){let n;(n=Of.get(t))||Of.set(t,n=new Proxy(t,kf)),e(n)}return t}}function jf(){let[e,...t]=window.location.hash.replace(/^#\/?/,``).split(`/`);return e===`session`&&t[0]?t[1]===`subagent`&&t[2]?{screen:`subagent`,key:t[0],agentId:t[2]}:{screen:`session`,key:t[0]}:e===`files`?{screen:`files`,path:t.length?decodeURIComponent(t.join(`/`)):void 0}:e===`settings`?{screen:`settings`}:e===`pairing`?{screen:`pairing`}:{screen:`fleet`}}function Mf(e){switch(e.screen){case`fleet`:return`#/`;case`session`:return`#/session/${e.key}`;case`subagent`:return`#/session/${e.key}/subagent/${e.agentId}`;case`files`:return e.path?`#/files/${encodeURIComponent(e.path)}`:`#/files`;case`settings`:return`#/settings`;case`pairing`:return`#/pairing`}}var Nf=2e3,Pf=3*1024*1024,Ff=Nf,If=Pf,Lf=3e4,Rf=1e4,zf=1e3,Bf=3e4,Vf=new TextEncoder;function Hf(e,t,n){e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`);let r=n.retryAttempt??0;if(n.isRetrying&&r>0){let t=e.entries.findLast(e=>e.kind===`assistant`&&e.stopReason===`error`),n=t?.errorMessage?` — ${t.errorMessage}`:``;e.statusEntries.push({key:`retry`,text:`retrying (attempt ${r})${n}`,tone:`warning`})}ef(e,t,n.isStreaming||n.isRetrying||n.isCompacting)}function Uf(){let[e,t]=Df({}),[n,r]=Df({}),[i,a]=k(jf()),[o,s]=k({runtimes:[],diskSessions:[]}),[c,l]=k(),[u,d]=k(),[f,p]=k(),[m,h]=k(!1),[g,_]=k(),[v,y]=k({state:`disconnected`,attempt:0}),b=()=>v().state===`connected`,[x,S]=k([]),C=new Map,w=new Map,T=new Map,E=0,D=0,O,A,j,M,N=!1,P=0,F=!1,I,L=0,R=new Map,z=new Map,ee=new Map,te=0,ne=0,re,ie=new Set,ae=!1;window.addEventListener(`hashchange`,()=>a(jf()));function B(e){window.location.hash=Mf(e)}function oe(e){return n[e]??0}function V(e){return C.get(e)??0}function se(e){return w.get(e)??0}function H(e){w.set(e,se(e)+1)}function ce(e){C.set(e,V(e)+1)}function le(e){return{revision:oe(e),generation:V(e),epoch:E}}function ue(e,t){return V(e)===t.generation&&E===t.epoch}function de(e,t){return oe(e)===t.revision&&ue(e,t)}function fe(e,t){t&&T.get(e)!==t||(T.delete(e),t&&(t.queued=[],t.queuedBytes=0))}function pe(e){r(e,oe(e)+1)}function me(n){e[n]||t(n,Id(n))}function he(e,n){me(e),t(e,Af(n)),pe(e)}function ge(e){fe(e),ce(e),w.delete(e),t(e,void 0),r(e,void 0),ic(e)}function _e(){let e=jf();return e.screen===`session`||e.screen===`subagent`?e.key:void 0}function ve(e,t=`info`){--D,S(n=>[...n,{id:D,text:e,tone:t}].slice(-20))}function ye(e){return R.get(e)??0}function be(e,t,n){let r=new Map(e.map(e=>[e.key,JSON.stringify(e.state)])),i=new Map(t.map(e=>[e.key,JSON.stringify(e.state)]));for(let e of new Set([...r.keys(),...i.keys()])){if(r.get(e)===i.get(e))continue;let t=ye(e)+1;R.set(e,t),n===void 0?z.set(e,t):ee.set(e,Math.max(ee.get(e)??-1,n))}}function xe(e,t){s(n=>{let r=e(n);return L+=1,be(n.runtimes,r.runtimes,t),r})}function Se(e){ie.clear(),xe(()=>e)}function Ce(e,t){let n=new Set(e.filter(e=>!ie.has(e.key)).map(e=>e.key)),r=n.size!==o().runtimes.length||o().runtimes.some(e=>!n.has(e.key));xe(t=>{let n=new Map(t.runtimes.map(e=>[e.key,e]));return{...t,runtimes:e.filter(e=>!ie.has(e.key)).map(e=>{let t=n.get(e.key);return{...e,state:{...e.state,contextUsage:t?.state.contextUsage??e.state.contextUsage},...t?.stats===void 0?{}:{stats:t.stats},...t?.lastAssistantText===void 0?{}:{lastAssistantText:t.lastAssistantText}}})}},t),r&&Te().catch(()=>{})}function we(e){let t=ie.has(e);return ie.add(e),t?(ge(e),Promise.resolve()):(xe(t=>({...t,runtimes:t.runtimes.filter(t=>t.key!==e)})),ge(e),Te())}function U(){let e=++te,t=L;return Q.fleet().then(n=>{e!==te||t!==L||(Se(n),l(void 0))},n=>{throw e===te&&t===L&&l(n instanceof Error?n.message:String(n)),n})}function Te(){let e=++ne;return Q.sessions().then(t=>{e===ne&&(xe(e=>({...e,diskSessions:t.sessions})),l(void 0))},t=>{throw e===ne&&l(t instanceof Error?t.message:String(t)),t})}function W(e){ie.delete(e.key),xe(t=>{let n=t.runtimes.findIndex(t=>t.key===e.key);if(n===-1)return{...t,runtimes:[...t.runtimes,e]};let r=[...t.runtimes];return r[n]=e,{...t,runtimes:r}})}function G(e,t,n,r){if(o().runtimes.some(t=>t.key===e)){if(n!==void 0&&ye(e)!==n){let t=z.get(e)??0,i=ee.get(e);if(t>n||i===void 0||i>r)return}xe(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:t}:n)}))}}function Ee(e,t){xe(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:{...n.state,model:t}}:n)}))}function K(e,t){xe(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:{...n.state,thinkingLevel:t}}:n)}))}function q(e,t,n){return{...e,state:{...e.state,...t.contextUsage===void 0?{}:{contextUsage:t.contextUsage},messageCount:n?e.state.messageCount:t.totalMessages},stats:{tokensTotal:t.tokens.total,cost:t.cost}}}function De(e){let t=new AbortController,n,r=new Promise((r,i)=>{n=setTimeout(()=>{let n=Error(`Stats request for runtime ${e} timed out after ${Rf} ms`);i(n),t.abort(n)},Rf)});return Promise.race([Q.stats(e,t.signal),r]).finally(()=>{n!==void 0&&clearTimeout(n)})}function Oe(){if(re)return re;let e=o().runtimes.map(e=>e.key),t=new Map(e.map(e=>[e,ye(e)])),n=e.map(e=>De(e)),r=Promise.allSettled(n).then(n=>{let r=new Map,i=[];for(let[t,a]of n.entries())a.status===`fulfilled`?r.set(e[t],a.value):i.push(a.reason instanceof Error?a.reason.message:String(a.reason));r.size>0&&xe(e=>({...e,runtimes:e.runtimes.map(e=>{let n=r.get(e.key),i=t.get(e.key),a=i===void 0||ye(e.key)!==i;return n?q(e,n,a):e})})),d(i.length>0?i.join(`; `):void 0)}).finally(()=>{re===r&&(re=void 0)});return re=r,r}function ke(e){return Vf.encode(JSON.stringify(e)).byteLength}function J(e){e.queued=[],e.queuedBytes=0}function Ae(){j!==void 0&&clearTimeout(j),j=void 0}function Y(){return Math.min(Bf,zf*2**Math.max(0,P-1))}function je(){if(ae||j!==void 0)return;P+=1;let e=Y();h(!1),M||=v(),y(t=>t.state===`auth_failed`?t:(N=!0,{...t,state:`retrying`,attempt:Math.max(t.attempt,P),retryDelayMs:e,retryAt:Date.now()+e})),j=setTimeout(()=>{j=void 0,Fe()},e)}function Me(){let e=M,t=N;M=void 0,N=!1,!(!t||e?.state!==`connected`||v().state!==`retrying`)&&y({state:`connected`,attempt:e.attempt,lastAppliedSeq:e.lastAppliedSeq})}function Ne(e){let t=e.event?.type;if(t===`fleet_snapshot`)Ce(e.event.runtimes,e.seq);else if(t===`disk_sessions_changed`)Te().catch(()=>{});else if(t===`runtime_removed`){if(e.key){let t=_e()===e.key;we(e.key).catch(()=>{}),t&&(ve(`session ${e.key} was stopped`,`warning`),B({screen:`fleet`}))}}else e.key&&(he(e.key,t=>of(t,e.event)),t===`tasks_update`&&H(e.key))}function Pe(e){let t=e.subagent;he(e.key,n=>{let r=e.messages;if(n.entries=Wd(r),n.tasks=(e.state.tasks??[]).map(e=>({...e})),n.streaming=e.state.isStreaming,n.compacting=e.state.isCompacting,n.sessionName=e.state.sessionName,n.model=e.state.model?.id,n.contextUsage=e.state.contextUsage,n.uiRequests=(e.pendingExtensionUiRequests??[]).map(e=>Fd(e)).filter(e=>e!==void 0),n.statusEntries=[],n.suggestedCommand=void 0,n.lastError=void 0,n.widgets={above:[],below:[]},n.toasts=[],n.title=void 0,n.composerPrefill=void 0,Hf(n,r,e.state),n.streaming?(n.workingSince=Date.now(),n.workingText=`working`):(n.workingSince=void 0,n.workingText=void 0),n.backgroundAgents=Object.fromEntries(e.backgroundAgents.map(e=>[e.agentId,e])),Yd(n),t){let r=e.backgroundAgents.find(e=>e.agentId===t.agentId)??t.agent;n.backgroundAgents[t.agentId]=r,n.subagents[t.agentId]={agentId:t.agentId,entries:Wd(t.messages),streaming:r.status===`running`}}Xd(n)}),H(e.key)}function X(e,t){if(A!==e||e.state!==`active`||e.barrierSeq===void 0)return;Ae(),P=0,Me();let n=e.barrierSeq;if(I=n,Se(t.fleet),l(void 0),t.active)Pe(t.active);else{let e=_e();e&&(ge(e),ve(`session ${e} was stopped`,`warning`),B({screen:`fleet`}))}let r=[...e.queued].sort((e,t)=>e.seq-t.seq),i=t.active?.subagent;if(i&&t.active)for(let e of r)e.seq>i.barrierSeq&&e.seq<=n&&e.key===t.active.key&&e.event.type===`background_agent_event`&&String(e.event.agentId)===i.agentId&&Ne(e);for(let e of r)e.seq>n&&Ne(e);J(e),A=void 0,h(!1),p(void 0)}function Fe(e=!1){if(ae)return Promise.resolve();if(O)return(e||A?.state===`failed`)&&(F=!0),O;Ae();let t=i(),n=t.screen===`session`||t.screen===`subagent`?t.key:void 0,r=t.screen===`subagent`?t.agentId:void 0,a={queued:[],queuedBytes:0,state:`active`,controller:new AbortController};A=a,E+=1;for(let[e,t]of T)fe(e,t);h(!0),p(void 0);let o=setTimeout(()=>a.controller.abort(`Dashboard recovery timed out`),Lf),s=Q.resync(n,r,a.controller.signal).then(e=>{a.barrierSeq=e.barrierSeq,X(a,e)}).catch(e=>{if(A!==a)return;a.state=`failed`,J(a);let t=a.controller.signal.reason;p(typeof t==`string`?t:e instanceof Error?e.message:String(e)),je(),j===void 0&&h(!1)}).finally(()=>{clearTimeout(o),O===s&&(O=void 0),!ae&&F&&(F=!1,Fe())});return O=s,s}function Ie(){return Fe(!0)}function Le(e){if(e.event?.type===`dashboard_resync`){Fe(!0);return}if(A){if(A.state===`failed`)throw je(),Error(`Dashboard recovery is failed; refusing to acknowledge live envelope before resync succeeds`);let t=ke(e);if(A.queued.length>=Nf||A.queuedBytes+t>Pf){J(A),A.state=`failed`;let e=`Dashboard recovery queue overflowed; waiting for a newer authoritative snapshot`;throw p(e),A.controller.abort(e),je(),j===void 0&&h(!1),Error(e)}A.queued.push(e),A.queuedBytes+=t;return}if(I!==void 0&&e.seq<=I)return;let t=e.key?T.get(e.key):void 0;if(t){let n=ke(e);if(t.queued.length>=Ff||t.queuedBytes+n>If)throw fe(e.key,t),Error(`Dashboard hydration queue overflowed for ${e.key}; refusing an incomplete snapshot replay`);t.queued.push(e),t.queuedBytes+=n}Ne(e)}let Re;async function ze(){ae=!1;try{let e=await Q.auth();_(e)}catch(e){_({mode:`remote`,needsPairing:e?.body?.needsPairing??!1,identity:e?.body?.identity,error:e?.message}),B({screen:`pairing`});return}await U().catch(()=>{}),Re=ht({onEnvelope:Le,onStatusChange:e=>{N=!1,M=e.state===`connected`?e:void 0,y(e)},onRecovery:()=>{Fe()}})}function Be(){ae=!0,Re?.(),Ae(),M=void 0,N=!1,F=!1;let e=A;A=void 0,e&&J(e),e?.controller.abort(`Dashboard stopped`);for(let[e,t]of T)fe(e,t)}function Ve(t){if(x().some(e=>e.id===t)){S(e=>e.filter(e=>e.id!==t));return}for(let[n,r]of Object.entries(e))if(r.toasts.some(e=>e.id===t)){he(n,e=>sf(e,t));return}}async function He(e,t){fe(e);let n=ye(e),r={guard:le(e),queued:[],queuedBytes:0};T.set(e,r);let i=()=>fe(e,r);t?.addEventListener(`abort`,i,{once:!0}),t?.aborted&&i();try{let i=await Q.hydrate(e,t);if(t?.aborted||T.get(e)!==r||!ue(e,r.guard))return;he(e,e=>{let t=i.messages;e.entries=Wd(t),e.backgroundAgents=Object.fromEntries(i.backgroundAgents.map(e=>[e.agentId,e])),Yd(e),e.streaming=i.state.isStreaming,e.compacting=i.state.isCompacting,e.tasks=(i.state.tasks??[]).map(e=>({...e})),i.state.isStreaming?(e.workingSince=Date.now(),e.workingText=`working`):(e.workingSince=void 0,e.workingText=void 0),e.uiRequests=(i.pendingExtensionUiRequests??[]).map(e=>Fd(e)).filter(e=>e!==void 0),Hf(e,t,i.state),Xd(e)}),H(e),G(e,i.state,n,i.barrierSeq);for(let e of[...r.queued].sort((e,t)=>e.seq-t.seq))e.seq>i.barrierSeq&&Ne(e)}finally{t?.removeEventListener(`abort`,i),fe(e,r)}}async function Ue(e,t,n){let r=le(e),{agent:i,messages:a}=await Q.subagentMessages(e,t,n);n?.aborted||!de(e,r)||he(e,e=>{e.backgroundAgents[t]=i;let n=e.subagents[t];n||(n={agentId:t,entries:[],streaming:i.status===`running`},e.subagents[t]=n),a.length>0&&(n.entries=Wd(a)),n.streaming=i.status===`running`})}return{sessions:e,revisions:n,route:i,navigate:B,fleet:o,fleetError:c,fleetStatsError:u,refreshFleet:U,refreshDiskSessions:Te,refreshFleetStats:Oe,removeRuntime:we,upsertRuntime:W,setRuntimeModel:Ee,setRuntimeThinkingLevel:K,resyncing:m,resyncError:f,retryResync:Ie,auth:g,connected:b,connection:v,notices:x,start:ze,stop:Be,dismissToast:Ve,resolveUiRequest(e,t){he(e,e=>cf(e,t))},hydrateSession:He,hydrateSubagent:Ue}}var Wf=5e3;function Gf(e){let t;return Promise.race([e,new Promise((e,n)=>{t=setTimeout(()=>n(Error(`service worker not ready`)),Wf)})]).finally(()=>{t&&clearTimeout(t)})}function Kf(){let e=Uf();R(()=>{e.start(),`serviceWorker`in navigator&&(navigator.serviceWorker.addEventListener(`message`,t=>{if(t.data?.type===`navigate-session`&&typeof t.data.sessionKey==`string`){let n=t.data.sessionKey,r=!!e.sessions[n]||e.fleet().runtimes.some(e=>e.key===n);e.navigate(r?{screen:`session`,key:n}:{screen:`fleet`})}}),navigator.serviceWorker.register(`./sw.js`).catch(e=>{console.warn(`dashboard: service worker registration failed`,e)}))}),z(()=>e.stop());let t=new Set,n=new Set,r=t=>!!(e.fleet().runtimes.find(e=>e.key===t)?.needsAttention||e.sessions[t]?.needsAttention);M(()=>{let i=new Map;for(let t of e.fleet().runtimes)t.needsAttention&&i.set(t.key,{name:t.state.sessionName??t.state.sessionId.slice(0,8),reason:`needs attention`});for(let t of Object.values(e.sessions))t.needsAttention&&i.set(t.key,{name:t.sessionName??t.title??t.key,reason:t.uiRequests[0]?.title?`waiting for input — ${t.uiRequests[0].title}`:t.statusEntries.find(e=>e.tone===`error`)?.text??`needs attention`});let a=i.size>0,o=e.route(),s=o.screen===`session`||o.screen===`subagent`?o.key:void 0,c=s?e.sessions[s]:void 0,l=s?e.fleet().runtimes.find(e=>e.key===s):void 0,u=c?.title??c?.sessionName??l?.state.sessionName,d=u?`${u} — dreb`:`dreb`;document.title=a?`◆ ${d}`:d;for(let[e,a]of i)n.has(e)||t.has(e)||typeof Notification<`u`&&Notification.permission===`granted`&&document.visibilityState!==`visible`&&`serviceWorker`in navigator&&(t.add(e),Gf(navigator.serviceWorker.ready).then(t=>t.showNotification(`dreb — ${a.name}`,{body:a.reason,tag:e,data:{sessionKey:e}})).then(()=>{t.delete(e),r(e)?n.add(e):n.delete(e)}).catch(n=>{t.delete(e),console.warn(`dashboard: showNotification failed`,n)}));for(let e of[...n])i.has(e)||n.delete(e);for(let e of[...t])i.has(e)||t.delete(e)});let i=()=>[...Object.values(e.sessions).flatMap(e=>e.toasts.map(t=>({...t,sessionKey:e.key}))),...e.notices()].slice(-5);return[U(Ee,{get fallback(){return U(bn,{store:e})},get children(){return[U(K,{get when(){return e.route().screen===`session`},get children(){return U(Gl,{store:e,get sessionKey(){return e.route().key}})}}),U(K,{get when(){return e.route().screen===`subagent`},get children(){return U(Pd,{store:e,get sessionKey(){return e.route().key},get agentId(){return e.route().agentId}})}}),U(K,{get when(){return e.route().screen===`files`},get children(){return U(Ft,{store:e,get initialPath(){return e.route().path}})}}),U(K,{get when(){return e.route().screen===`settings`},get children(){return U(Ed,{store:e})}}),U(K,{get when(){return e.route().screen===`pairing`},get children(){return U(En,{store:e})}})]}}),U(rt,{get toasts(){return i()},onDismiss:t=>e.dismissToast(t)})]}Su();var qf=document.getElementById(`root`);if(!qf)throw Error(`dashboard: #root element missing from index.html`);ke(()=>U(Kf,{}),qf);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--bg:#fff;--text:#000;--border:#e0e0e0;--muted:#666;--status-running:#00871f;--status-attention:#8a5400;--status-idle:#666;--status-error:#d10041;--mono-font:"IBM Plex Mono", "Courier New", monospace;--fs-small:12px;--fs-secondary:13px;--fs-body:14px;--fs-h3:16px;--fs-h2:18px;--fs-h1:24px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--radius:3px;--hairline:1px solid var(--border)}@media (prefers-color-scheme:dark){:root{--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d}}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}img,svg{max-width:100%;display:block}button,input,textarea,select{font:inherit;color:inherit}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius)}::-webkit-scrollbar-thumb:hover{background:var(--muted)}::-webkit-scrollbar-corner{background:0 0}body{background:var(--bg);color:var(--text);font-family:var(--mono-font);font-size:var(--fs-body);overflow-wrap:break-word;line-height:1.6;overflow-x:hidden}h1{font-size:var(--fs-h1);font-weight:500}h2{font-size:var(--fs-h2);font-weight:500}h3{font-size:var(--fs-h3);font-weight:500}a{color:var(--text);cursor:pointer}a:hover{color:var(--muted)}code,pre{font-family:var(--mono-font);font-size:var(--fs-secondary)}pre{border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);white-space:pre-wrap;word-break:break-word;overflow-x:auto}::placeholder{color:var(--muted);opacity:1}:focus-visible{outline:1px solid var(--text);outline-offset:2px}.muted{color:var(--muted)}.small{font-size:var(--fs-small)}.container{width:100%;max-width:1200px;padding:var(--space-4) var(--space-5);margin:0 auto}.topbar{border-bottom:var(--hairline);padding-top:env(safe-area-inset-top,0px)}.topbar-inner{max-width:1200px;padding:var(--space-3) var(--space-5);align-items:center;gap:var(--space-4);flex-wrap:wrap;margin:0 auto;display:flex}.wordmark{font-size:var(--fs-h2);letter-spacing:.04em;font-weight:600;text-decoration:none}.topbar nav{gap:var(--space-4);align-items:center;display:flex}.topbar nav a{padding:var(--space-1) 0;border-bottom:1px solid #0000;text-decoration:none}.topbar nav a:hover{color:var(--text);border-bottom-color:var(--text)}.topbar nav a[aria-current=page]{border-bottom-color:var(--text)}.topbar-spacer{margin-left:auto}.connection-indicator{align-items:center;gap:var(--space-2);display:inline-flex}footer{border-top:var(--hairline);margin-top:var(--space-7);padding:var(--space-4) 0;font-size:var(--fs-secondary);color:var(--muted)}.btn{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);cursor:pointer;font-size:var(--fs-body);text-decoration:none;transition:border-color .2s;display:inline-flex}.btn:hover{border-color:var(--text);color:var(--text)}.btn-primary{background:var(--text);color:var(--bg);border-color:var(--text)}.btn-primary:hover{color:var(--bg)}.btn-danger:hover{border-color:var(--status-error);color:var(--status-error)}.btn-small{padding:2px var(--space-2);font-size:var(--fs-small)}.chip{padding:1px var(--space-2);border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);white-space:nowrap;align-items:center;gap:6px;line-height:1.5;display:inline-flex}.chip .dot{font-size:10px}.chip-running{border-color:var(--status-running);color:var(--status-running)}.chip-attention{background:var(--status-attention);border-color:var(--status-attention);color:var(--bg);font-weight:600}.chip-idle{border-color:var(--border);color:var(--status-idle)}.chip-error{border-color:var(--status-error);color:var(--status-error)}.chip-plain{border-color:var(--border);color:var(--muted)}.card{border:var(--hairline);border-radius:var(--radius);padding:var(--space-4);transition:border-color .2s}a.card{text-decoration:none;display:block}.card:hover{border-color:var(--text);color:var(--text)}.input,.textarea,.select{width:100%;padding:var(--space-2) var(--space-3);border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-size:var(--fs-body);transition:border-color .2s}.input:hover,.textarea:hover,.select:hover{border-color:var(--text)}.textarea{resize:vertical;min-height:72px;line-height:1.6}.field{gap:var(--space-1);margin-bottom:var(--space-4);flex-direction:column;display:flex}.field>label{font-size:var(--fs-secondary)}.field>.hint{font-size:var(--fs-small);color:var(--muted)}.toggle{border:var(--hairline);border-radius:var(--radius);display:inline-flex;overflow:hidden}.toggle span{padding:2px var(--space-3);font-size:var(--fs-small);color:var(--muted)}.toggle .on{background:var(--text);color:var(--bg)}.table{border-collapse:collapse;width:100%;font-size:var(--fs-body)}.table th{text-align:left;font-weight:500;font-size:var(--fs-small);color:var(--muted);padding:var(--space-2) var(--space-3);border-bottom:var(--hairline)}.table td{padding:var(--space-2) var(--space-3);border-bottom:var(--hairline)}.modal-backdrop{padding:var(--space-4);background:#80808040;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg);border:1px solid var(--text);border-radius:var(--radius);width:100%;max-width:480px;padding:var(--space-5)}.modal h3{margin-bottom:var(--space-3)}.modal-actions{gap:var(--space-2);margin-top:var(--space-5);justify-content:flex-end;display:flex}.row{align-items:center;gap:var(--space-2);display:flex}.stack{gap:var(--space-2);flex-direction:column;display:flex}.hidden{display:none}:root{--syntax-comment:green;--syntax-keyword:#00f;--syntax-string:#a31515;--syntax-number:#098658;--syntax-function:#795e26;--syntax-type:#267f99;--syntax-variable:#001080;--syntax-operator:#000;--syntax-punctuation:#000}@media (prefers-color-scheme:dark){:root{--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}}html,body,#root{width:100%;min-width:0;max-width:100%}#root{flex-direction:column;min-height:100vh;display:flex}.screen-fill{flex-direction:column;flex:1;min-height:0;display:flex}.fleet-head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin:var(--space-5) 0 var(--space-6);flex-wrap:wrap;display:flex}.live-sessions{margin-bottom:var(--space-6)}.past-sessions-head{font-size:var(--fs-h3);color:var(--muted);border-bottom:var(--hairline);padding-bottom:var(--space-2);margin-bottom:var(--space-4)}.project-group{margin-bottom:var(--space-5)}.group-head{align-items:baseline;gap:var(--space-3);padding-bottom:var(--space-1);margin-bottom:var(--space-1);flex-wrap:wrap;display:flex}.group-head h2,.group-head h3{font-size:var(--fs-secondary);font-weight:600}.group-head .btn{margin-left:auto}.session-grid{gap:var(--space-4);margin-bottom:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(340px,1fr));display:grid}.session-card{border:var(--hairline);border-radius:var(--radius);min-width:0;padding:var(--space-4);gap:var(--space-2);flex-direction:column;transition:border-color .2s;display:flex}.session-card:hover{border-color:var(--text)}.session-card.attention{border-color:var(--status-attention)}.session-card.error{border-color:var(--status-error)}.session-title{justify-content:space-between;align-items:baseline;gap:var(--space-2);min-width:0;display:flex}.session-title .name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.session-project{font-size:var(--fs-small);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.attention-reason{font-weight:600;font-size:var(--fs-secondary)}.error-reason{color:var(--status-error);font-size:var(--fs-secondary)}.activity{font-size:var(--fs-secondary);color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.subagents{border-left:var(--hairline);padding-left:var(--space-3);font-size:var(--fs-small);flex-direction:column;gap:2px;display:flex}.subagents .agent-line{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.subagents .agent-line .live{color:var(--status-running)}.session-meta{font-size:var(--fs-small);color:var(--muted);gap:var(--space-1);flex-wrap:wrap;display:flex}.session-actions{gap:var(--space-2);padding-top:var(--space-2);flex-wrap:wrap;margin-top:auto;display:flex}.disk-row{align-items:center;gap:var(--space-3);border-bottom:var(--hairline);font-size:var(--fs-secondary);padding:2px 0;display:flex}.disk-row .name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.disk-row .meta{color:var(--muted);font-size:var(--fs-small);white-space:nowrap;margin-left:auto}.disk-row .actions{gap:var(--space-2);flex-shrink:0;display:flex}.disk-more{margin-top:var(--space-1);font-size:var(--fs-small);color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;text-decoration:underline;display:inline-block}.disk-more:hover{color:var(--text)}.empty-state{border:var(--hairline);border-radius:var(--radius);padding:var(--space-6);text-align:center;color:var(--muted);margin-top:var(--space-6)}.session-screen{flex-direction:column;width:100%;min-width:0;max-width:100%;height:100dvh;display:flex;overflow:hidden}.session-bar{border-bottom:var(--hairline);padding-top:env(safe-area-inset-top,0px);flex-shrink:0}.session-bar-inner{width:100%;min-width:0;max-width:960px;padding:var(--space-2) var(--space-4);align-items:center;gap:var(--space-3);flex-wrap:wrap;margin:0 auto;display:flex}.session-bar .back{white-space:nowrap;text-decoration:none}.session-bar .title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.session-bar .project,.session-bar .agent-type{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}.session-bar .right{align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0;margin-left:auto;display:flex}.session-connection-indicator{flex-wrap:wrap;flex:0 auto;min-width:0}.session-connection-indicator .chip,.session-connection-indicator .btn{font-size:var(--fs-small);padding:1px var(--space-2)}.session-info-bar{font-size:var(--fs-small);color:var(--muted);justify-content:space-between;padding-top:0}.session-info-left{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.session-info-right{gap:var(--space-2);flex-wrap:wrap;justify-content:flex-end;margin-left:auto;display:flex}.stats-trigger{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.stats-popover{right:max(var(--space-4), calc((100vw - 960px) / 2 + var(--space-4)));z-index:10;border:var(--hairline);border-radius:var(--radius);background:var(--bg);padding:var(--space-3);min-width:280px;position:absolute;top:78px;box-shadow:0 12px 32px #0000002e}.stats-grid{gap:var(--space-1) var(--space-3);font-size:var(--fs-small);grid-template-columns:1fr auto;display:grid}.stats-grid span{color:var(--muted)}.session-info-right span+span:before{content:"·";margin-right:var(--space-2);color:var(--muted)}.switcher{min-width:0;padding:1px var(--space-2);border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);background:var(--bg);color:var(--text);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;font-family:inherit;transition:border-color .2s;display:inline-flex}.switcher:hover{border-color:var(--text)}.switcher .label{color:var(--muted)}.switcher .value{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.model-switcher{max-width:min(340px,45vw)}.session-bar.collapsed{background:var(--bg)}.session-bar-main .chrome-toggle{margin-left:auto}.chrome-toggle{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--muted);font:inherit;font-size:var(--fs-small);padding:1px var(--space-2);cursor:pointer;white-space:nowrap}.chrome-toggle:hover{border-color:var(--text);color:var(--text)}.chat{flex:1;min-height:0;overflow-y:auto}.chat-inner{max-width:960px;padding:var(--space-4);gap:var(--space-4);flex-direction:column;margin:0 auto;display:flex}.assistant-turn{border-left:var(--hairline);padding-left:var(--space-3);gap:var(--space-3);flex-direction:column;display:flex}.entry{min-width:0}.entry-head{font-size:var(--fs-small);color:var(--muted);margin-bottom:var(--space-1);gap:var(--space-2);align-items:baseline;display:flex}.entry-action{color:var(--muted);font:inherit;font-size:var(--fs-small);cursor:pointer;opacity:.65;background:0 0;border:none;padding:0}.entry-action:hover{opacity:1;text-decoration:underline}.skill-badge,.queued-kind{border:var(--hairline);border-radius:var(--radius);padding:0 var(--space-1);font-size:var(--fs-small);color:var(--muted)}.entry.user{align-self:flex-end;max-width:85%}.entry.user .entry-body{border:1px solid var(--text);border-radius:var(--radius);padding:var(--space-2) var(--space-3);white-space:pre-wrap}.entry.user .entry-head{justify-content:flex-end}.entry.user>.tool-images{margin-top:var(--space-2)}.entry.assistant{max-width:100%}.entry.assistant .entry-body{white-space:normal}.assistant-error{color:var(--status-error);font-size:var(--fs-secondary);margin:var(--space-2) 0 0;white-space:pre-wrap;font-weight:500}.markdown-body{color:var(--text)}.markdown-body,.markdown-body *{-webkit-text-fill-color:currentColor}.markdown-body p,.markdown-body ul,.markdown-body ol,.markdown-body pre,.markdown-body blockquote,.markdown-body table{margin:0 0 var(--space-2)}.markdown-body :last-child{margin-bottom:0}.markdown-body ul,.markdown-body ol{padding-left:var(--space-5)}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{font-size:var(--fs-h3);margin:var(--space-2) 0 var(--space-1);font-weight:500}.markdown-body code{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-secondary);padding:0 4px}.markdown-body pre{background:var(--bg);margin-top:var(--space-1)}.markdown-body pre code{border:none;padding:0}.markdown-body a{text-decoration:underline}.markdown-body table{border-collapse:collapse;width:100%;font-size:var(--fs-secondary)}.markdown-body th,.markdown-body td{border:var(--hairline);padding:var(--space-1) var(--space-2);text-align:left}.markdown-body blockquote{border-left:var(--hairline);padding-left:var(--space-3);color:var(--muted)}.entry-body code{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-secondary);padding:0 4px}details.thinking{border-left:var(--hairline);padding-left:var(--space-3);margin-bottom:var(--space-3)}details.thinking summary{cursor:pointer;font-size:var(--fs-small);color:var(--muted);-webkit-user-select:none;user-select:none;list-style:none}details.thinking summary:before{content:"▸ "}details.thinking[open] summary:before{content:"▾ "}details.thinking .thinking-body{color:var(--muted);font-size:var(--fs-secondary);padding-top:var(--space-1);white-space:pre-wrap}.tool{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-secondary)}.tool summary{cursor:pointer;-webkit-user-select:none;user-select:none;gap:var(--space-2);padding:var(--space-1) var(--space-3);align-items:baseline;list-style:none;display:flex}.tool summary:before{content:"▸";color:var(--muted)}.tool[open] summary:before{content:"▾"}.tool .tool-name{font-weight:600}.tool .tool-arg{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.tool .tool-status{white-space:nowrap;font-size:var(--fs-small);color:var(--muted);margin-left:auto}.tool .tool-status.running{color:var(--status-running)}.tool .tool-status.error{color:var(--status-error)}.tool .tool-command{border-top:var(--hairline);padding:var(--space-2) var(--space-3) 0;overflow-x:auto}.tool .tool-command code{border:var(--hairline);border-radius:var(--radius);padding:var(--space-1) var(--space-2);white-space:pre-wrap;display:block}.tool .tool-input{border-top:var(--hairline);padding:var(--space-2) var(--space-3);overflow-x:auto}.tool .tool-input-label{font-size:var(--fs-small);color:var(--muted);margin-bottom:var(--space-1);display:block}.tool .tool-input pre{font-size:var(--fs-small);white-space:pre-wrap;border:none;padding:0}.tool .suggested-command{margin-top:var(--space-1)}.tool .suggested-command code{border:var(--hairline);border-radius:var(--radius);padding:1px var(--space-2)}.tool .tool-result{border-top:var(--hairline);padding:var(--space-2) var(--space-3);overflow-x:auto}.tool-output-truncated,.transcript-window-control{color:var(--muted);font-size:var(--fs-small);margin-bottom:var(--space-2)}.transcript-window-control{text-align:center}.tool .tool-command+.tool-result,.tool .tool-input+.tool-result{border-top:none}.tool-images{gap:var(--space-3);flex-wrap:wrap;display:flex}.tool-image-item{gap:var(--space-2);max-width:100%;display:grid}.tool-image-button{appearance:none;color:inherit;cursor:zoom-in;text-align:left;background:0 0;border:0;padding:0}.tool-image-button:disabled{cursor:default;opacity:1}.tool-image{object-fit:contain;border:var(--hairline);border-radius:var(--radius);width:auto;max-width:100%;height:auto;max-height:480px;display:block}.tool-image-placeholder{place-items:center;gap:var(--space-2);min-width:min(320px,75vw);min-height:140px;padding:var(--space-3);border:1px dashed var(--border);border-radius:var(--radius);background:var(--surface-raised);color:var(--muted);font-size:var(--fs-small);display:grid}.tool-image-actions{justify-content:space-between;align-items:center;gap:var(--space-2);color:var(--muted);font-size:var(--fs-small);flex-wrap:wrap;display:flex}.tool-image-error{color:var(--status-error);font-size:var(--fs-small);margin:0}.image-lightbox{z-index:1000;padding:var(--space-4);place-items:center;display:grid;position:fixed;inset:0}.image-lightbox-backdrop{background:#000000c7;border:0;width:100%;height:100%;position:absolute;inset:0}.image-lightbox-content{justify-items:end;gap:var(--space-2);max-width:100%;max-height:100%;display:grid;position:relative}.image-lightbox-content img{max-width:calc(100vw - 2 * var(--space-4));object-fit:contain;border-radius:var(--radius);max-height:calc(100vh - 5rem)}.tool .tool-result pre{font-size:var(--fs-small);border:none;padding:0}.tool .tool-result pre,.tool .tool-input pre{max-height:340px;overflow-y:auto}.hljs{color:var(--text);background:0 0}.hljs-comment,.hljs-quote{color:var(--syntax-comment)}.hljs-keyword,.hljs-selector-tag{color:var(--syntax-keyword)}.hljs-number,.hljs-literal{color:var(--syntax-number)}.hljs-string,.hljs-doctag{color:var(--syntax-string)}.hljs-function,.hljs-title,.hljs-title.function_,.hljs-section,.hljs-name{color:var(--syntax-function)}.hljs-type,.hljs-class,.hljs-title.class_,.hljs-built_in{color:var(--syntax-type)}.hljs-attr,.hljs-variable,.hljs-variable.language_,.hljs-params,.hljs-property{color:var(--syntax-variable)}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:var(--syntax-keyword)}.hljs-operator{color:var(--syntax-operator)}.hljs-punctuation{color:var(--syntax-punctuation)}.hljs-subst{color:var(--text)}.diff-add{color:var(--status-running)}.diff-del{color:var(--status-error)}.entry.summary-card .entry-body{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);color:var(--muted);font-size:var(--fs-secondary)}.entry.summary-card summary{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--muted);font-size:var(--fs-secondary);list-style:none}.entry.summary-card summary:before{content:"▸ "}.entry.summary-card details[open] summary:before{content:"▾ "}.entry.custom-card .entry-body,.entry.agent-result-card details{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary)}.entry.agent-result-card summary{cursor:pointer;-webkit-user-select:none;user-select:none;gap:var(--space-2);color:var(--muted);align-items:baseline;list-style:none;display:flex}.entry.agent-result-card summary:before{content:"▸ "}.entry.agent-result-card details[open] summary:before{content:"▾ "}.agent-result-header{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.entry.agent-result-card .entry-body{margin-top:var(--space-2)}.streaming-cursor:after{content:"▌";color:var(--status-running)}.dock{border-top:var(--hairline);flex-shrink:0}.dock.collapsed{background:var(--bg)}.dock-collapse-row{max-width:960px;padding:var(--space-1) calc(var(--space-4) + env(safe-area-inset-right,0px)) calc(var(--space-1) + env(safe-area-inset-bottom,0px)) calc(var(--space-4) + env(safe-area-inset-left,0px));align-items:center;gap:var(--space-3);font-size:var(--fs-small);color:var(--muted);flex-wrap:wrap;margin:0 auto;display:flex}.dock-collapsed-hint{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.dock-inner{max-width:960px;padding:var(--space-3) calc(var(--space-4) + env(safe-area-inset-right,0px)) calc(var(--space-3) + env(safe-area-inset-bottom,0px)) calc(var(--space-4) + env(safe-area-inset-left,0px));gap:var(--space-2);flex-direction:column;margin:0 auto;display:flex}.tasks{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary)}.tasks summary{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--muted);font-size:var(--fs-small);list-style:none}.tasks summary:before{content:"▸ "}.tasks[open] summary:before{content:"▾ "}.tasks ul{padding-top:var(--space-1);list-style:none}.tasks .done{color:var(--muted)}.tasks .active{font-weight:600}.subagents .subagent-list{padding-top:var(--space-1);gap:var(--space-1);flex-direction:column;max-height:10rem;list-style:none;display:flex;overflow-y:auto}.subagents .agent-chip{border:var(--hairline);border-radius:var(--radius);padding:1px var(--space-2);font-size:var(--fs-small);background:var(--bg);color:var(--text);cursor:pointer;text-align:left;align-items:center;gap:6px;width:100%;font-family:inherit;transition:border-color .2s;display:flex}.subagents .agent-chip:hover{border-color:var(--text)}.subagents .agent-chip .live{color:var(--status-running)}.subagents .agent-chip .done{color:var(--muted)}.subagents .agent-chip .task{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.status-line{align-items:center;gap:var(--space-3);font-size:var(--fs-secondary);flex-wrap:wrap;display:flex}.status-line .working{color:var(--status-running)}.status-line .warning{color:var(--status-attention)}.status-line .error{color:var(--status-error)}.status-line .queued{color:var(--muted);font-size:var(--fs-small)}.status-line .btn{margin-left:auto}.status-line .inline-stop{margin-left:var(--space-2)}.composer{gap:var(--space-2);flex-direction:column;display:flex;position:relative}.queued-message-row{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2);align-items:center;gap:var(--space-2);font-size:var(--fs-small);flex-wrap:wrap;display:flex}.queued-chip{align-items:baseline;gap:var(--space-1);text-overflow:ellipsis;white-space:nowrap;max-width:240px;color:var(--muted);display:inline-flex;overflow:hidden}.attachment-strip{gap:var(--space-2);flex-wrap:wrap;display:flex}.attachment-thumb,.attachment-file{border:var(--hairline);border-radius:var(--radius);padding:2px;position:relative}.attachment-file{align-items:baseline;gap:var(--space-2);padding:2px var(--space-2);font-size:var(--fs-small);overflow-wrap:anywhere;max-width:100%;display:inline-flex}.attachment-thumb img{object-fit:cover;width:72px;height:54px;display:block}.attachment-thumb button,.attachment-file button{border:var(--hairline);background:var(--bg);color:var(--text);cursor:pointer;border-radius:999px;position:absolute;top:-8px;right:-8px}.command-popover{left:0;right:0;bottom:calc(100% + var(--space-2));border:var(--hairline);border-radius:var(--radius);background:var(--bg);padding:var(--space-1);z-index:5;max-height:260px;position:absolute;overflow-y:auto}.command-option{background:var(--bg);width:100%;color:var(--text);font:inherit;text-align:left;padding:var(--space-2);border-radius:var(--radius);gap:var(--space-2);cursor:pointer;border:none;grid-template-columns:minmax(120px,max-content) 1fr max-content;align-items:baseline;display:grid}.command-option:hover,.command-option.selected{background:var(--text);color:var(--bg)}.command-name{font-weight:500}.command-description{color:var(--muted);font-size:var(--fs-small);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.command-source{border:var(--hairline);border-radius:var(--radius);color:var(--muted);font-size:var(--fs-small);padding:0 var(--space-1)}.command-option.selected .command-description,.command-option:hover .command-description,.command-option.selected .command-source,.command-option:hover .command-source{color:var(--bg)}.composer textarea{border:var(--hairline);border-radius:var(--radius);background:var(--bg);width:100%;color:var(--text);padding:var(--space-2) var(--space-3);font-size:var(--fs-body);resize:vertical;min-height:60px;max-height:40vh;font-family:inherit;line-height:1.6;transition:border-color .2s;overflow-y:hidden}.composer textarea:hover,.composer textarea:focus{border-color:var(--text);outline:none}.hidden-file-input{display:none}.composer-row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.mode-toggle{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);display:inline-flex;overflow:hidden}.mode-toggle button{background:var(--bg);color:var(--muted);padding:2px var(--space-3);cursor:pointer;border:none;font-family:inherit}.mode-toggle button.selected{background:var(--text);color:var(--bg)}.composer-row .send{margin-left:auto}.ghost-suggest{font-size:var(--fs-small);color:var(--muted);cursor:pointer;background:0 0;border:none;font-family:inherit}.ghost-suggest .key{border:var(--hairline);border-radius:var(--radius);padding:0 4px}.readonly-note{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);color:var(--muted)}.fallback-banner{border:1px solid var(--status-attention);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);gap:var(--space-3);align-items:baseline;display:flex}.fallback-banner .dismiss{margin-left:auto}.widget-block{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-small);color:var(--muted);white-space:pre-wrap}.toast-region{bottom:var(--space-4);right:var(--space-4);gap:var(--space-2);z-index:50;flex-direction:column;max-width:360px;display:flex;position:fixed}.toast{border:var(--hairline);border-radius:var(--radius);background:var(--bg);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);gap:var(--space-2);align-items:baseline;display:flex}.toast.warning{border-color:var(--status-attention)}.toast.error{border-color:var(--status-error)}.files-head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin:var(--space-5) 0 var(--space-4);flex-wrap:wrap;display:flex}.crumbs{font-size:var(--fs-secondary);flex-wrap:wrap;align-items:baseline;gap:2px;display:flex}.crumbs .sep{color:var(--muted);margin:0 2px}.scope-note{color:var(--muted);font-size:var(--fs-small);margin-top:var(--space-1)}.context-trust{border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);margin-bottom:var(--space-4);font-size:var(--fs-secondary)}.context-trust p{color:var(--muted);font-size:var(--fs-small);margin:var(--space-1) 0 var(--space-2);overflow-wrap:anywhere}.context-trust-impact{margin-bottom:0!important}.context-trust-warning{color:var(--status-attention)}.context-trust-warning a{color:inherit}.head-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.places{gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;align-items:baseline;display:flex}.places .label{color:var(--muted);font-size:var(--fs-small)}.place-chip{border:var(--hairline);border-radius:var(--radius);padding:1px var(--space-2);font-size:var(--fs-small);background:var(--bg);color:var(--text);cursor:pointer;font-family:inherit;text-decoration:none;transition:border-color .2s}.place-chip:hover{border-color:var(--text)}.file-table{border-collapse:collapse;width:100%;font-size:var(--fs-secondary)}.file-table th{text-align:left;font-size:var(--fs-small);color:var(--muted);border-bottom:var(--hairline);padding:var(--space-1) var(--space-2);font-weight:400}.file-table td{border-bottom:var(--hairline);padding:var(--space-2)}.file-table .name{color:var(--text);cursor:pointer;font-family:inherit;font-size:inherit;background:0 0;border:none;padding:0;text-decoration:none}.file-table .name .icon{color:var(--muted);margin-right:var(--space-1)}.file-table .meta{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}.file-table .actions{text-align:right}.drop-zone{border:1px dashed var(--border);border-radius:var(--radius);padding:var(--space-4);text-align:center;color:var(--muted);font-size:var(--fs-small);margin-top:var(--space-4);transition:border-color .2s}.drop-zone.active{border-color:var(--text);color:var(--text)}.upload-warning{font-size:var(--fs-small);color:var(--muted);margin-top:var(--space-2)}.settings-wrap{max-width:720px}.settings-intro{color:var(--muted);font-size:var(--fs-secondary);margin:var(--space-2) 0 var(--space-5)}.settings-section{margin-bottom:var(--space-6)}.settings-section h2{font-size:var(--fs-h3);border-bottom:var(--hairline);padding-bottom:var(--space-2);margin-bottom:var(--space-3)}.setting-row{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-2) 0;display:flex}.setting-label{flex-direction:column;gap:2px;min-width:0;display:flex}.setting-label .name{font-size:var(--fs-secondary)}.setting-label .hint{font-size:var(--fs-small);color:var(--muted)}.setting-control{min-width:0;max-width:100%}.agent-context-row .setting-label{flex-shrink:0}.setting-control select,.setting-control input{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:2px var(--space-2);max-width:100%}.checkbox-control{align-items:center;gap:var(--space-2);font-size:var(--fs-secondary);display:inline-flex}.checkbox-control input{width:auto}.settings-error{border:1px solid var(--status-error);border-radius:var(--radius);color:var(--status-error);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);margin-bottom:var(--space-4);white-space:pre-wrap}.settings-warning{border:1px solid var(--status-attention);border-radius:var(--radius);color:var(--status-attention);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);margin-bottom:var(--space-4);white-space:pre-wrap}.model-picker-button{white-space:normal;overflow-wrap:anywhere;text-align:left;min-width:0;max-width:min(100%,520px)}.agent-model-row{gap:var(--space-3);padding:var(--space-2) 0;border-bottom:var(--hairline);grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) auto;align-items:start;display:grid}.agent-model-summary{flex-direction:column;gap:2px;min-width:0;display:flex}.agent-model-name{font-size:var(--fs-secondary);font-weight:600}.agent-model-description{color:var(--muted);font-size:var(--fs-small)}.agent-model-fallbacks{gap:var(--space-1);flex-wrap:wrap;min-width:0;display:flex}.agent-model-chip{border:var(--hairline);border-radius:var(--radius);color:var(--muted);font-size:var(--fs-small);padding:0 var(--space-1);overflow-wrap:anywhere;white-space:normal;min-width:0;max-width:100%}.agent-model-editor{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);padding:var(--space-2);flex-direction:column;grid-column:1/-1;display:flex}.agent-model-entry{justify-content:space-between;gap:var(--space-2);font-size:var(--fs-secondary);align-items:center;min-width:0;display:flex}.agent-model-entry>span:first-child{overflow-wrap:anywhere;min-width:0}.agent-model-entry-actions{gap:var(--space-1);flex-shrink:0;display:flex}.context-trust-subsection{margin:var(--space-4) 0}.context-trust-subsection h3{font-size:var(--fs-secondary);margin-bottom:var(--space-1)}.context-trust-global-warning,.trusted-context-empty{margin:var(--space-3) 0}.trusted-context-folder-row{align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:var(--hairline);font-size:var(--fs-secondary);display:flex}.trusted-context-folder-row code{overflow-wrap:anywhere;min-width:0}.trusted-context-folder-row .meta{color:var(--muted);font-size:var(--fs-small);margin-left:auto}.trusted-context-folder-row .btn{flex-shrink:0}.trusted-context-folder-add{align-items:center;gap:var(--space-2);margin-top:var(--space-3);display:flex}.trusted-context-folder-add label{font-size:var(--fs-small);white-space:nowrap}.trusted-context-folder-add input{border:var(--hairline);border-radius:var(--radius);background:var(--bg);min-width:0;color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:2px var(--space-2);flex:1}.settings-footnote{margin-top:calc(-1 * var(--space-3));margin-bottom:var(--space-5)}.appearance-block{margin-bottom:var(--space-4)}.appearance-heading-row .name{font-weight:600}.theme-gallery{gap:var(--space-3);margin-top:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.theme-card{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);padding:var(--space-2);text-align:left;cursor:pointer;flex-direction:column;font-family:inherit;transition:border-color .2s;display:flex}.theme-card:hover{border-color:var(--muted)}.theme-card.active{border-color:var(--text)}.theme-card-preview{gap:var(--space-2);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-2);flex-direction:column;display:flex;overflow:hidden}.theme-card-swatch{flex-direction:column;gap:2px;min-width:0;display:flex}.theme-card-name{font-size:var(--fs-secondary);color:var(--text);font-weight:600}.theme-card-muted{font-size:var(--fs-small);color:var(--muted)}.theme-card-chips{gap:var(--space-1);flex-wrap:wrap;display:flex}.theme-card-code{font-size:var(--fs-small);white-space:pre;margin:0;font-family:IBM Plex Mono,Courier New,monospace;line-height:1.4;overflow:hidden}.theme-card-code .hljs{background:0 0;padding:0}.theme-card-footer{justify-content:space-between;align-items:baseline;gap:var(--space-2);font-size:var(--fs-small);display:flex}.theme-card-title{font-size:var(--fs-secondary);color:var(--text)}.theme-card-state{color:var(--muted)}.theme-card.active .theme-card-state{color:var(--text)}@media (width<=700px){.theme-gallery{grid-template-columns:1fr}}.device-row{align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:var(--hairline);font-size:var(--fs-secondary);display:flex}.device-row .meta{color:var(--muted);font-size:var(--fs-small);margin-left:auto}.this-device{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);color:var(--muted);padding:0 var(--space-1);margin-left:var(--space-1)}.pair-wrap{min-height:100vh;padding:var(--space-4);justify-content:center;align-items:center;display:flex}.pair-card{border:var(--hairline);border-radius:var(--radius);width:100%;max-width:460px;padding:var(--space-6);gap:var(--space-4);flex-direction:column;display:flex}.pair-card h1{font-size:var(--fs-h2)}.pair-card .sub{color:var(--muted);font-size:var(--fs-secondary)}.identity{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);font-size:var(--fs-secondary);flex-direction:column;display:flex}.identity .row-line{justify-content:space-between;gap:var(--space-3);display:flex}.identity .k{color:var(--muted);font-size:var(--fs-small)}.pin-input{text-align:center;width:100%;font-size:var(--fs-h1);letter-spacing:.5em;border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);padding:var(--space-2);font-family:inherit}.pin-input:focus{border-color:var(--text);outline:none}.pin-hint{font-size:var(--fs-small);color:var(--muted)}.security-note{border-top:var(--hairline);padding-top:var(--space-3);gap:var(--space-2);font-size:var(--fs-small);color:var(--muted);flex-direction:column;display:flex}.pair-error{color:var(--status-error);font-size:var(--fs-secondary)}.denied-card{border:1px solid var(--status-error);border-radius:var(--radius);width:100%;max-width:460px;padding:var(--space-6);gap:var(--space-3);flex-direction:column;display:flex}.field{gap:var(--space-1);flex-direction:column;display:flex}.field label{font-size:var(--fs-small);color:var(--muted)}.field input,.field textarea,.field select{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:var(--space-2)}.field input:focus,.field textarea:focus{border-color:var(--text);outline:none}.ask-inline{gap:var(--space-2);margin:var(--space-3) 0;padding:var(--space-3);border:var(--hairline);border-left:3px solid var(--status-attention);border-radius:var(--radius);background:color-mix(in srgb, var(--status-attention) 6%, var(--surface,transparent));flex-direction:column;display:flex}.ask-inline-header{color:var(--text);font-weight:600}.ask-inline-countdown{color:var(--muted);font-weight:400}.ask-inline-question{margin:0 0 var(--space-2);color:var(--text)}.ask-inline-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-1);display:flex}.ask-options{gap:var(--space-2);margin:0 0 var(--space-3);border:0;flex-direction:column;min-width:0;padding:0;display:flex}.ask-options-legend{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ask-option{align-items:center;gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);cursor:pointer;color:var(--text);display:flex}.ask-option:hover{border-color:var(--text)}.ask-option.selected{border-color:var(--status-running);background:color-mix(in srgb, var(--status-running) 12%, transparent)}.ask-option input{width:auto;accent-color:var(--status-running);cursor:pointer;margin:0}.ask-custom-label{font-size:var(--fs-small);color:var(--muted)}.recent-projects{flex-direction:column;gap:2px;max-height:160px;display:flex;overflow-y:auto}.recent-projects button{text-align:left;color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:var(--space-1) var(--space-2);cursor:pointer;border-radius:var(--radius);background:0 0;border:none}.recent-projects button:hover{background:var(--border)}.model-scope-tabs{border:var(--hairline);border-radius:var(--radius);margin-bottom:var(--space-3);font-size:var(--fs-small);display:inline-flex;overflow:hidden}.model-scope-tabs button{background:var(--bg);color:var(--muted);padding:2px var(--space-3);cursor:pointer;border:none;font-family:inherit}.model-scope-tabs button.selected{background:var(--text);color:var(--bg)}.model-picker-modal{min-width:min(360px,100vw - 32px);max-width:min(900px,100vw - 32px);overflow:auto}@media (width>=701px){.model-picker-modal{resize:horizontal}}.model-list{gap:var(--space-2);flex-direction:column;min-width:0;display:flex;overflow:hidden auto}.model-provider-group{flex-direction:column;gap:2px;display:flex}.model-provider-heading{background:var(--bg);color:var(--muted);font-size:var(--fs-small);border-bottom:var(--hairline);padding:var(--space-1) var(--space-2);z-index:1;position:sticky;top:0}.model-row{align-items:start;gap:2px var(--space-2);text-align:left;border:var(--hairline);border-radius:var(--radius);color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:var(--space-1) var(--space-2);cursor:pointer;background:0 0;grid-template-columns:18px minmax(0,1fr) auto auto;min-width:0;display:grid}.model-row:hover,.model-row.current{border-color:var(--text)}.model-current{color:var(--status-running);grid-area:1/1}.model-id{overflow-wrap:anywhere;white-space:normal;grid-area:1/2;min-width:0;font-weight:600}.model-name{color:var(--muted);font-size:var(--fs-small);overflow-wrap:anywhere;white-space:normal;grid-area:2/2/auto/-1;min-width:0}.model-provider-badge,.model-reasoning{color:var(--muted);font-size:var(--fs-small);white-space:nowrap;border:var(--hairline);border-radius:var(--radius);padding:0 var(--space-1);grid-row:1}.model-provider-badge{grid-column:3}.model-reasoning{grid-column:4}.context-modal-body{gap:var(--space-4);flex-direction:column;display:flex}.context-section h3{font-size:var(--fs-secondary);margin-bottom:var(--space-1)}.context-section ul{gap:var(--space-1);font-size:var(--fs-small);flex-direction:column;list-style:none;display:flex}.context-section li{overflow-wrap:anywhere}.fork-message-list{gap:var(--space-2);flex-direction:column;max-height:360px;display:flex;overflow-y:auto}.fork-message{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font:inherit;text-align:left;padding:var(--space-2);cursor:pointer;gap:var(--space-2);display:flex}.fork-message:hover{border-color:var(--text)}.fork-entry-id{color:var(--muted);font-size:var(--fs-small);flex:none}@media (width<=700px){.container,.topbar-inner,.session-bar-inner,.dock-inner,.dock-collapse-row,.chat-inner{width:100%;min-width:0;max-width:100%;padding-left:var(--space-3);padding-right:var(--space-3)}.session-grid{grid-template-columns:minmax(0,1fr)}.session-card,.disk-row,.session-meta,.session-actions,.disk-row .actions{min-width:0;max-width:100%}.disk-row,.session-meta,.session-actions,.disk-row .actions{flex-wrap:wrap}.session-title{flex-wrap:wrap;justify-content:flex-start;min-width:0;max-width:100%}.session-title .name{text-overflow:clip;white-space:normal;overflow-wrap:anywhere;flex:12rem;min-width:0;max-width:100%;overflow:visible}.session-title .chip{flex:none;max-width:100%}.session-project,.attention-reason,.error-reason,.activity,.subagents,.session-meta,.group-head h3{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.session-project{text-overflow:clip;overflow:visible}.activity{text-overflow:clip}.subagents .agent-line{text-overflow:clip;white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%;overflow:visible}.session-meta>span{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.group-head h3{flex:1 1 0}.disk-row .name,.disk-row .meta{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.disk-row .name{text-overflow:clip;flex:1 1 0;overflow:visible}.disk-row .meta{order:3;width:100%;margin-left:0}.session-bar .project{display:none}.session-bar .right{align-items:stretch;width:100%;margin-left:0}.session-bar .right .switcher{justify-content:center}.session-bar .right .model-switcher{flex:100%;max-width:100%}.entry.user{max-width:100%}.file-table .cols{display:none}.setting-row{flex-direction:column;align-items:stretch}.setting-control{align-self:flex-end}.agent-model-row{grid-template-columns:1fr}.agent-model-edit{justify-self:start}.agent-model-entry{flex-direction:column;align-items:flex-start}.trusted-context-folder-row{flex-wrap:wrap;align-items:flex-start}.trusted-context-folder-row code{flex-basis:100%}.trusted-context-folder-row .meta{margin-left:0}.trusted-context-folder-add{flex-direction:column;align-items:stretch}.trusted-context-folder-add label{white-space:normal}.trusted-context-folder-add .btn{align-self:flex-start}.head-actions .btn{flex:1}.composer textarea{font-size:16px}}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(./jetbrains-mono-BCtJif-v.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:italic;font-weight:100 800;font-display:swap;src:url(./jetbrains-mono-italic-WKDR0M8A.woff2)format("woff2")}[data-color-mode=light]:not([data-theme]){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--text:#000;--border:#e0e0e0;--muted:#666;--status-running:#00871f;--status-attention:#8a5400;--status-idle:#666;--status-error:#d10041;--syntax-comment:green;--syntax-keyword:#00f;--syntax-string:#a31515;--syntax-number:#098658;--syntax-function:#795e26;--syntax-type:#267f99;--syntax-variable:#001080;--syntax-operator:#000;--syntax-punctuation:#000}[data-color-mode=dark]:not([data-theme]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d;--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}[data-theme=default]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:#fff;--text:#000;--border:#e0e0e0;--muted:#666;--status-running:#00871f;--status-attention:#8a5400;--status-idle:#666;--status-error:#d10041;--syntax-comment:green;--syntax-keyword:#00f;--syntax-string:#a31515;--syntax-number:#098658;--syntax-function:#795e26;--syntax-type:#267f99;--syntax-variable:#001080;--syntax-operator:#000;--syntax-punctuation:#000}[data-theme=default][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d;--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}@media (prefers-color-scheme:dark){[data-theme=default]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d;--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}}[data-theme=dim]{--dim-d-bg:#1e1f22;--dim-d-text:#d7d8da;--dim-d-border:#3a3c40;--dim-d-muted:#9a9ea6;--dim-d-running:#5ec27a;--dim-d-attention:#d8a341;--dim-d-idle:#9a9ea6;--dim-d-error:#f0637f;--dim-d-comment:#8b9199;--dim-d-keyword:#8ab4f8;--dim-d-string:#c3956a;--dim-d-number:#9fce8a;--dim-d-function:#d9c46e;--dim-d-type:#5cc2b0;--dim-d-variable:#9cc7e8;--dim-d-operator:#c3c6cb;--dim-d-punctuation:#c3c6cb;--dim-l-bg:#f0f0ee;--dim-l-text:#33353a;--dim-l-border:#d3d4d1;--dim-l-muted:#5c5f66;--dim-l-running:#1c7a37;--dim-l-attention:#8a5400;--dim-l-idle:#5c5f66;--dim-l-error:#c01743;--dim-l-comment:#4f6e42;--dim-l-keyword:#1a4fc0;--dim-l-string:#9a3a20;--dim-l-number:#1f7a4a;--dim-l-function:#6f5a12;--dim-l-type:#136b7a;--dim-l-variable:#123a9c;--dim-l-operator:#33353a;--dim-l-punctuation:#33353a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--dim-l-bg);--text:var(--dim-l-text);--border:var(--dim-l-border);--muted:var(--dim-l-muted);--status-running:var(--dim-l-running);--status-attention:var(--dim-l-attention);--status-idle:var(--dim-l-idle);--status-error:var(--dim-l-error);--syntax-comment:var(--dim-l-comment);--syntax-keyword:var(--dim-l-keyword);--syntax-string:var(--dim-l-string);--syntax-number:var(--dim-l-number);--syntax-function:var(--dim-l-function);--syntax-type:var(--dim-l-type);--syntax-variable:var(--dim-l-variable);--syntax-operator:var(--dim-l-operator);--syntax-punctuation:var(--dim-l-punctuation)}[data-theme=dim][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--dim-d-bg);--text:var(--dim-d-text);--border:var(--dim-d-border);--muted:var(--dim-d-muted);--status-running:var(--dim-d-running);--status-attention:var(--dim-d-attention);--status-idle:var(--dim-d-idle);--status-error:var(--dim-d-error);--syntax-comment:var(--dim-d-comment);--syntax-keyword:var(--dim-d-keyword);--syntax-string:var(--dim-d-string);--syntax-number:var(--dim-d-number);--syntax-function:var(--dim-d-function);--syntax-type:var(--dim-d-type);--syntax-variable:var(--dim-d-variable);--syntax-operator:var(--dim-d-operator);--syntax-punctuation:var(--dim-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=dim]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--dim-d-bg);--text:var(--dim-d-text);--border:var(--dim-d-border);--muted:var(--dim-d-muted);--status-running:var(--dim-d-running);--status-attention:var(--dim-d-attention);--status-idle:var(--dim-d-idle);--status-error:var(--dim-d-error);--syntax-comment:var(--dim-d-comment);--syntax-keyword:var(--dim-d-keyword);--syntax-string:var(--dim-d-string);--syntax-number:var(--dim-d-number);--syntax-function:var(--dim-d-function);--syntax-type:var(--dim-d-type);--syntax-variable:var(--dim-d-variable);--syntax-operator:var(--dim-d-operator);--syntax-punctuation:var(--dim-d-punctuation)}}[data-theme=solarized]{--sol-d-bg:#002b36;--sol-d-text:#93a1a1;--sol-d-border:#0a4b5a;--sol-d-muted:#839496;--sol-d-running:#859900;--sol-d-attention:#cb8b18;--sol-d-idle:#839496;--sol-d-error:#fa6459;--sol-d-comment:#7e9295;--sol-d-keyword:#6c8fd6;--sol-d-string:#2aa198;--sol-d-number:#b58900;--sol-d-function:#4a9fdb;--sol-d-type:#b58900;--sol-d-variable:#93a1a1;--sol-d-operator:#93a1a1;--sol-d-punctuation:#93a1a1;--sol-l-bg:#fdf6e3;--sol-l-text:#586e75;--sol-l-border:#e7e0cb;--sol-l-muted:#5b6f76;--sol-l-running:#567500;--sol-l-attention:#a35700;--sol-l-idle:#5b6f76;--sol-l-error:#c9412f;--sol-l-comment:#5e7272;--sol-l-keyword:#5d62bd;--sol-l-string:#147878;--sol-l-number:#8a6d00;--sol-l-function:#1f6fa8;--sol-l-type:#a35700;--sol-l-variable:#586e75;--sol-l-operator:#586e75;--sol-l-punctuation:#586e75;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--sol-l-bg);--text:var(--sol-l-text);--border:var(--sol-l-border);--muted:var(--sol-l-muted);--status-running:var(--sol-l-running);--status-attention:var(--sol-l-attention);--status-idle:var(--sol-l-idle);--status-error:var(--sol-l-error);--syntax-comment:var(--sol-l-comment);--syntax-keyword:var(--sol-l-keyword);--syntax-string:var(--sol-l-string);--syntax-number:var(--sol-l-number);--syntax-function:var(--sol-l-function);--syntax-type:var(--sol-l-type);--syntax-variable:var(--sol-l-variable);--syntax-operator:var(--sol-l-operator);--syntax-punctuation:var(--sol-l-punctuation)}[data-theme=solarized][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--sol-d-bg);--text:var(--sol-d-text);--border:var(--sol-d-border);--muted:var(--sol-d-muted);--status-running:var(--sol-d-running);--status-attention:var(--sol-d-attention);--status-idle:var(--sol-d-idle);--status-error:var(--sol-d-error);--syntax-comment:var(--sol-d-comment);--syntax-keyword:var(--sol-d-keyword);--syntax-string:var(--sol-d-string);--syntax-number:var(--sol-d-number);--syntax-function:var(--sol-d-function);--syntax-type:var(--sol-d-type);--syntax-variable:var(--sol-d-variable);--syntax-operator:var(--sol-d-operator);--syntax-punctuation:var(--sol-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=solarized]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--sol-d-bg);--text:var(--sol-d-text);--border:var(--sol-d-border);--muted:var(--sol-d-muted);--status-running:var(--sol-d-running);--status-attention:var(--sol-d-attention);--status-idle:var(--sol-d-idle);--status-error:var(--sol-d-error);--syntax-comment:var(--sol-d-comment);--syntax-keyword:var(--sol-d-keyword);--syntax-string:var(--sol-d-string);--syntax-number:var(--sol-d-number);--syntax-function:var(--sol-d-function);--syntax-type:var(--sol-d-type);--syntax-variable:var(--sol-d-variable);--syntax-operator:var(--sol-d-operator);--syntax-punctuation:var(--sol-d-punctuation)}}[data-theme=gruvbox]{--gruv-d-bg:#282828;--gruv-d-text:#ebdbb2;--gruv-d-border:#504945;--gruv-d-muted:#a89984;--gruv-d-running:#b8bb26;--gruv-d-attention:#fabd2f;--gruv-d-idle:#a89984;--gruv-d-error:#fc6a58;--gruv-d-comment:#a08f7d;--gruv-d-keyword:#fc6a58;--gruv-d-string:#b8bb26;--gruv-d-number:#d3869b;--gruv-d-function:#b8bb26;--gruv-d-type:#fabd2f;--gruv-d-variable:#83a598;--gruv-d-operator:#ebdbb2;--gruv-d-punctuation:#ebdbb2;--gruv-l-bg:#fbf1c7;--gruv-l-text:#3c3836;--gruv-l-border:#e6dcae;--gruv-l-muted:#665c54;--gruv-l-running:#557000;--gruv-l-attention:#a35a00;--gruv-l-idle:#665c54;--gruv-l-error:#9d0006;--gruv-l-comment:#6f6358;--gruv-l-keyword:#9d0006;--gruv-l-string:#557000;--gruv-l-number:#8f3f71;--gruv-l-function:#6d680c;--gruv-l-type:#97600f;--gruv-l-variable:#076678;--gruv-l-operator:#3c3836;--gruv-l-punctuation:#3c3836;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"JetBrains Mono", "IBM Plex Mono", "Courier New", monospace;--bg:var(--gruv-l-bg);--text:var(--gruv-l-text);--border:var(--gruv-l-border);--muted:var(--gruv-l-muted);--status-running:var(--gruv-l-running);--status-attention:var(--gruv-l-attention);--status-idle:var(--gruv-l-idle);--status-error:var(--gruv-l-error);--syntax-comment:var(--gruv-l-comment);--syntax-keyword:var(--gruv-l-keyword);--syntax-string:var(--gruv-l-string);--syntax-number:var(--gruv-l-number);--syntax-function:var(--gruv-l-function);--syntax-type:var(--gruv-l-type);--syntax-variable:var(--gruv-l-variable);--syntax-operator:var(--gruv-l-operator);--syntax-punctuation:var(--gruv-l-punctuation)}[data-theme=gruvbox][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--gruv-d-bg);--text:var(--gruv-d-text);--border:var(--gruv-d-border);--muted:var(--gruv-d-muted);--status-running:var(--gruv-d-running);--status-attention:var(--gruv-d-attention);--status-idle:var(--gruv-d-idle);--status-error:var(--gruv-d-error);--syntax-comment:var(--gruv-d-comment);--syntax-keyword:var(--gruv-d-keyword);--syntax-string:var(--gruv-d-string);--syntax-number:var(--gruv-d-number);--syntax-function:var(--gruv-d-function);--syntax-type:var(--gruv-d-type);--syntax-variable:var(--gruv-d-variable);--syntax-operator:var(--gruv-d-operator);--syntax-punctuation:var(--gruv-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=gruvbox]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--gruv-d-bg);--text:var(--gruv-d-text);--border:var(--gruv-d-border);--muted:var(--gruv-d-muted);--status-running:var(--gruv-d-running);--status-attention:var(--gruv-d-attention);--status-idle:var(--gruv-d-idle);--status-error:var(--gruv-d-error);--syntax-comment:var(--gruv-d-comment);--syntax-keyword:var(--gruv-d-keyword);--syntax-string:var(--gruv-d-string);--syntax-number:var(--gruv-d-number);--syntax-function:var(--gruv-d-function);--syntax-type:var(--gruv-d-type);--syntax-variable:var(--gruv-d-variable);--syntax-operator:var(--gruv-d-operator);--syntax-punctuation:var(--gruv-d-punctuation)}}[data-theme=qud]{--qud-d-bg:#0f3b3a;--qud-d-text:#d7e4de;--qud-d-border:#1f5b57;--qud-d-muted:#8fb3aa;--qud-d-running:#00c420;--qud-d-attention:#e99f10;--qud-d-idle:#8fb3aa;--qud-d-error:#ff8a70;--qud-d-comment:#8ab0a1;--qud-d-keyword:#3aa6ff;--qud-d-string:#cfc041;--qud-d-number:#e894e2;--qud-d-function:#3fd45f;--qud-d-type:#77bfcf;--qud-d-variable:#8fd0dd;--qud-d-operator:#b1c9c3;--qud-d-punctuation:#b1c9c3;--qud-l-bg:#e8efe9;--qud-l-text:#123b38;--qud-l-border:#cdddd6;--qud-l-muted:#3c655d;--qud-l-running:#0a6b1f;--qud-l-attention:#8a5400;--qud-l-idle:#3c655d;--qud-l-error:#b3341a;--qud-l-comment:#3f6a5e;--qud-l-keyword:#12489c;--qud-l-string:#7a6a00;--qud-l-number:#8f3a86;--qud-l-function:#0a6b1f;--qud-l-type:#0f6070;--qud-l-variable:#155352;--qud-l-operator:#123b38;--qud-l-punctuation:#123b38;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--qud-l-bg);--text:var(--qud-l-text);--border:var(--qud-l-border);--muted:var(--qud-l-muted);--status-running:var(--qud-l-running);--status-attention:var(--qud-l-attention);--status-idle:var(--qud-l-idle);--status-error:var(--qud-l-error);--syntax-comment:var(--qud-l-comment);--syntax-keyword:var(--qud-l-keyword);--syntax-string:var(--qud-l-string);--syntax-number:var(--qud-l-number);--syntax-function:var(--qud-l-function);--syntax-type:var(--qud-l-type);--syntax-variable:var(--qud-l-variable);--syntax-operator:var(--qud-l-operator);--syntax-punctuation:var(--qud-l-punctuation)}[data-theme=qud][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--qud-d-bg);--text:var(--qud-d-text);--border:var(--qud-d-border);--muted:var(--qud-d-muted);--status-running:var(--qud-d-running);--status-attention:var(--qud-d-attention);--status-idle:var(--qud-d-idle);--status-error:var(--qud-d-error);--syntax-comment:var(--qud-d-comment);--syntax-keyword:var(--qud-d-keyword);--syntax-string:var(--qud-d-string);--syntax-number:var(--qud-d-number);--syntax-function:var(--qud-d-function);--syntax-type:var(--qud-d-type);--syntax-variable:var(--qud-d-variable);--syntax-operator:var(--qud-d-operator);--syntax-punctuation:var(--qud-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=qud]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--qud-d-bg);--text:var(--qud-d-text);--border:var(--qud-d-border);--muted:var(--qud-d-muted);--status-running:var(--qud-d-running);--status-attention:var(--qud-d-attention);--status-idle:var(--qud-d-idle);--status-error:var(--qud-d-error);--syntax-comment:var(--qud-d-comment);--syntax-keyword:var(--qud-d-keyword);--syntax-string:var(--qud-d-string);--syntax-number:var(--qud-d-number);--syntax-function:var(--qud-d-function);--syntax-type:var(--qud-d-type);--syntax-variable:var(--qud-d-variable);--syntax-operator:var(--qud-d-operator);--syntax-punctuation:var(--qud-d-punctuation)}}[data-theme=vangogh]{--vg-d-bg:#0d1b3d;--vg-d-text:#f0e6c8;--vg-d-border:#2a3e6a;--vg-d-muted:#aab4d2;--vg-d-running:#8fbf6a;--vg-d-attention:#f5db37;--vg-d-idle:#aab4d2;--vg-d-error:#f07a52;--vg-d-comment:#8c96b8;--vg-d-keyword:#f5db37;--vg-d-string:#7fc5dc;--vg-d-number:#e0a95a;--vg-d-function:#5fb0e0;--vg-d-type:#c9b26a;--vg-d-variable:#a9c7ea;--vg-d-operator:#dad69f;--vg-d-punctuation:#dad69f;--vg-l-bg:#f4ecd2;--vg-l-text:#1a2a52;--vg-l-border:#e0d4ad;--vg-l-muted:#4a557d;--vg-l-running:#4a6b1f;--vg-l-attention:#855000;--vg-l-idle:#4a557d;--vg-l-error:#b03a1a;--vg-l-comment:#5a6488;--vg-l-keyword:#1a3a8c;--vg-l-string:#1f6f8c;--vg-l-number:#8a5a12;--vg-l-function:#2a4e93;--vg-l-type:#6a5a12;--vg-l-variable:#2a3e83;--vg-l-operator:#1a2a52;--vg-l-punctuation:#1a2a52;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--vg-l-bg);--text:var(--vg-l-text);--border:var(--vg-l-border);--muted:var(--vg-l-muted);--status-running:var(--vg-l-running);--status-attention:var(--vg-l-attention);--status-idle:var(--vg-l-idle);--status-error:var(--vg-l-error);--syntax-comment:var(--vg-l-comment);--syntax-keyword:var(--vg-l-keyword);--syntax-string:var(--vg-l-string);--syntax-number:var(--vg-l-number);--syntax-function:var(--vg-l-function);--syntax-type:var(--vg-l-type);--syntax-variable:var(--vg-l-variable);--syntax-operator:var(--vg-l-operator);--syntax-punctuation:var(--vg-l-punctuation)}[data-theme=vangogh][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--vg-d-bg);--text:var(--vg-d-text);--border:var(--vg-d-border);--muted:var(--vg-d-muted);--status-running:var(--vg-d-running);--status-attention:var(--vg-d-attention);--status-idle:var(--vg-d-idle);--status-error:var(--vg-d-error);--syntax-comment:var(--vg-d-comment);--syntax-keyword:var(--vg-d-keyword);--syntax-string:var(--vg-d-string);--syntax-number:var(--vg-d-number);--syntax-function:var(--vg-d-function);--syntax-type:var(--vg-d-type);--syntax-variable:var(--vg-d-variable);--syntax-operator:var(--vg-d-operator);--syntax-punctuation:var(--vg-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=vangogh]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--vg-d-bg);--text:var(--vg-d-text);--border:var(--vg-d-border);--muted:var(--vg-d-muted);--status-running:var(--vg-d-running);--status-attention:var(--vg-d-attention);--status-idle:var(--vg-d-idle);--status-error:var(--vg-d-error);--syntax-comment:var(--vg-d-comment);--syntax-keyword:var(--vg-d-keyword);--syntax-string:var(--vg-d-string);--syntax-number:var(--vg-d-number);--syntax-function:var(--vg-d-function);--syntax-type:var(--vg-d-type);--syntax-variable:var(--vg-d-variable);--syntax-operator:var(--vg-d-operator);--syntax-punctuation:var(--vg-d-punctuation)}}[data-theme=okabe]{--okabe-d-bg:#16181d;--okabe-d-text:#eceef2;--okabe-d-border:#363a42;--okabe-d-muted:#9ba1ab;--okabe-d-running:#56b4e9;--okabe-d-attention:#f0e442;--okabe-d-idle:#9ba1ab;--okabe-d-error:#f57a48;--okabe-d-comment:#8b95a3;--okabe-d-keyword:#56b4e9;--okabe-d-string:#4fc6a0;--okabe-d-number:#e08cc6;--okabe-d-function:#f0c04a;--okabe-d-type:#8fd4f0;--okabe-d-variable:#d7dbe1;--okabe-d-operator:#cdd2d9;--okabe-d-punctuation:#cdd2d9;--okabe-l-bg:#f6f6f3;--okabe-l-text:#1a1a1a;--okabe-l-border:#dcdcd6;--okabe-l-muted:#565b62;--okabe-l-running:#0067a3;--okabe-l-attention:#8a5a00;--okabe-l-idle:#565b62;--okabe-l-error:#b8430a;--okabe-l-comment:#4a5560;--okabe-l-keyword:#0067a3;--okabe-l-string:#077a5a;--okabe-l-number:#9a4a86;--okabe-l-function:#7a5500;--okabe-l-type:#0f6a86;--okabe-l-variable:#333;--okabe-l-operator:#1a1a1a;--okabe-l-punctuation:#1a1a1a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--okabe-l-bg);--text:var(--okabe-l-text);--border:var(--okabe-l-border);--muted:var(--okabe-l-muted);--status-running:var(--okabe-l-running);--status-attention:var(--okabe-l-attention);--status-idle:var(--okabe-l-idle);--status-error:var(--okabe-l-error);--syntax-comment:var(--okabe-l-comment);--syntax-keyword:var(--okabe-l-keyword);--syntax-string:var(--okabe-l-string);--syntax-number:var(--okabe-l-number);--syntax-function:var(--okabe-l-function);--syntax-type:var(--okabe-l-type);--syntax-variable:var(--okabe-l-variable);--syntax-operator:var(--okabe-l-operator);--syntax-punctuation:var(--okabe-l-punctuation)}[data-theme=okabe][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--okabe-d-bg);--text:var(--okabe-d-text);--border:var(--okabe-d-border);--muted:var(--okabe-d-muted);--status-running:var(--okabe-d-running);--status-attention:var(--okabe-d-attention);--status-idle:var(--okabe-d-idle);--status-error:var(--okabe-d-error);--syntax-comment:var(--okabe-d-comment);--syntax-keyword:var(--okabe-d-keyword);--syntax-string:var(--okabe-d-string);--syntax-number:var(--okabe-d-number);--syntax-function:var(--okabe-d-function);--syntax-type:var(--okabe-d-type);--syntax-variable:var(--okabe-d-variable);--syntax-operator:var(--okabe-d-operator);--syntax-punctuation:var(--okabe-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=okabe]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--okabe-d-bg);--text:var(--okabe-d-text);--border:var(--okabe-d-border);--muted:var(--okabe-d-muted);--status-running:var(--okabe-d-running);--status-attention:var(--okabe-d-attention);--status-idle:var(--okabe-d-idle);--status-error:var(--okabe-d-error);--syntax-comment:var(--okabe-d-comment);--syntax-keyword:var(--okabe-d-keyword);--syntax-string:var(--okabe-d-string);--syntax-number:var(--okabe-d-number);--syntax-function:var(--okabe-d-function);--syntax-type:var(--okabe-d-type);--syntax-variable:var(--okabe-d-variable);--syntax-operator:var(--okabe-d-operator);--syntax-punctuation:var(--okabe-d-punctuation)}}[data-theme=tol]{--tol-d-bg:#1b1d21;--tol-d-text:#e9eaec;--tol-d-border:#363a43;--tol-d-muted:#9a9ea6;--tol-d-running:#3fc0a8;--tol-d-attention:#d9c94a;--tol-d-idle:#9a9ea6;--tol-d-error:#f0687a;--tol-d-comment:#8a929c;--tol-d-keyword:#6ce;--tol-d-string:#4fc08a;--tol-d-number:#c9d;--tol-d-function:#eb5;--tol-d-type:#7fd0f0;--tol-d-variable:#d6d9de;--tol-d-operator:#cbcfd5;--tol-d-punctuation:#cbcfd5;--tol-l-bg:#f4f4f6;--tol-l-text:#1a1c22;--tol-l-border:#dadae0;--tol-l-muted:#565a62;--tol-l-running:#007a68;--tol-l-attention:#8a6a00;--tol-l-idle:#565a62;--tol-l-error:#c23346;--tol-l-comment:#565a62;--tol-l-keyword:#1a5a8c;--tol-l-string:#0a6a52;--tol-l-number:#8a3a77;--tol-l-function:#8a5a12;--tol-l-type:#0f6a86;--tol-l-variable:#2a2e83;--tol-l-operator:#1a1c22;--tol-l-punctuation:#1a1c22;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--tol-l-bg);--text:var(--tol-l-text);--border:var(--tol-l-border);--muted:var(--tol-l-muted);--status-running:var(--tol-l-running);--status-attention:var(--tol-l-attention);--status-idle:var(--tol-l-idle);--status-error:var(--tol-l-error);--syntax-comment:var(--tol-l-comment);--syntax-keyword:var(--tol-l-keyword);--syntax-string:var(--tol-l-string);--syntax-number:var(--tol-l-number);--syntax-function:var(--tol-l-function);--syntax-type:var(--tol-l-type);--syntax-variable:var(--tol-l-variable);--syntax-operator:var(--tol-l-operator);--syntax-punctuation:var(--tol-l-punctuation)}[data-theme=tol][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--tol-d-bg);--text:var(--tol-d-text);--border:var(--tol-d-border);--muted:var(--tol-d-muted);--status-running:var(--tol-d-running);--status-attention:var(--tol-d-attention);--status-idle:var(--tol-d-idle);--status-error:var(--tol-d-error);--syntax-comment:var(--tol-d-comment);--syntax-keyword:var(--tol-d-keyword);--syntax-string:var(--tol-d-string);--syntax-number:var(--tol-d-number);--syntax-function:var(--tol-d-function);--syntax-type:var(--tol-d-type);--syntax-variable:var(--tol-d-variable);--syntax-operator:var(--tol-d-operator);--syntax-punctuation:var(--tol-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=tol]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--tol-d-bg);--text:var(--tol-d-text);--border:var(--tol-d-border);--muted:var(--tol-d-muted);--status-running:var(--tol-d-running);--status-attention:var(--tol-d-attention);--status-idle:var(--tol-d-idle);--status-error:var(--tol-d-error);--syntax-comment:var(--tol-d-comment);--syntax-keyword:var(--tol-d-keyword);--syntax-string:var(--tol-d-string);--syntax-number:var(--tol-d-number);--syntax-function:var(--tol-d-function);--syntax-type:var(--tol-d-type);--syntax-variable:var(--tol-d-variable);--syntax-operator:var(--tol-d-operator);--syntax-punctuation:var(--tol-d-punctuation)}}
|
package/dist/static/index.html
CHANGED
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
} catch (e) {}
|
|
56
56
|
})();
|
|
57
57
|
</script>
|
|
58
|
-
<script type="module" crossorigin src="./assets/index-
|
|
59
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
58
|
+
<script type="module" crossorigin src="./assets/index-C7qCfUnx.js"></script>
|
|
59
|
+
<link rel="stylesheet" crossorigin href="./assets/index-CTdlsjOK.css">
|
|
60
60
|
</head>
|
|
61
61
|
<body>
|
|
62
62
|
<div id="root"></div>
|
package/dist/static/sw.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
// Replaced at build time; see vite.config.ts generateBundle hook.
|
|
17
|
-
const SW_CACHE_VERSION = "2.
|
|
17
|
+
const SW_CACHE_VERSION = "2.50.0";
|
|
18
18
|
const SHELL_CACHE = `dreb-dashboard-shell-v${SW_CACHE_VERSION}`;
|
|
19
19
|
|
|
20
20
|
// Shell assets (HTML, JS, CSS) get a network-first strategy. The dashboard
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--bg:#fff;--text:#000;--border:#e0e0e0;--muted:#666;--status-running:#00871f;--status-attention:#8a5400;--status-idle:#666;--status-error:#d10041;--mono-font:"IBM Plex Mono", "Courier New", monospace;--fs-small:12px;--fs-secondary:13px;--fs-body:14px;--fs-h3:16px;--fs-h2:18px;--fs-h1:24px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--radius:3px;--hairline:1px solid var(--border)}@media (prefers-color-scheme:dark){:root{--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d}}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}img,svg{max-width:100%;display:block}button,input,textarea,select{font:inherit;color:inherit}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius)}::-webkit-scrollbar-thumb:hover{background:var(--muted)}::-webkit-scrollbar-corner{background:0 0}body{background:var(--bg);color:var(--text);font-family:var(--mono-font);font-size:var(--fs-body);overflow-wrap:break-word;line-height:1.6;overflow-x:hidden}h1{font-size:var(--fs-h1);font-weight:500}h2{font-size:var(--fs-h2);font-weight:500}h3{font-size:var(--fs-h3);font-weight:500}a{color:var(--text);cursor:pointer}a:hover{color:var(--muted)}code,pre{font-family:var(--mono-font);font-size:var(--fs-secondary)}pre{border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);white-space:pre-wrap;word-break:break-word;overflow-x:auto}::placeholder{color:var(--muted);opacity:1}:focus-visible{outline:1px solid var(--text);outline-offset:2px}.muted{color:var(--muted)}.small{font-size:var(--fs-small)}.container{width:100%;max-width:1200px;padding:var(--space-4) var(--space-5);margin:0 auto}.topbar{border-bottom:var(--hairline);padding-top:env(safe-area-inset-top,0px)}.topbar-inner{max-width:1200px;padding:var(--space-3) var(--space-5);align-items:center;gap:var(--space-4);flex-wrap:wrap;margin:0 auto;display:flex}.wordmark{font-size:var(--fs-h2);letter-spacing:.04em;font-weight:600;text-decoration:none}.topbar nav{gap:var(--space-4);align-items:center;display:flex}.topbar nav a{padding:var(--space-1) 0;border-bottom:1px solid #0000;text-decoration:none}.topbar nav a:hover{color:var(--text);border-bottom-color:var(--text)}.topbar nav a[aria-current=page]{border-bottom-color:var(--text)}.topbar-spacer{margin-left:auto}.connection-indicator{align-items:center;gap:var(--space-2);display:inline-flex}footer{border-top:var(--hairline);margin-top:var(--space-7);padding:var(--space-4) 0;font-size:var(--fs-secondary);color:var(--muted)}.btn{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);cursor:pointer;font-size:var(--fs-body);text-decoration:none;transition:border-color .2s;display:inline-flex}.btn:hover{border-color:var(--text);color:var(--text)}.btn-primary{background:var(--text);color:var(--bg);border-color:var(--text)}.btn-primary:hover{color:var(--bg)}.btn-danger:hover{border-color:var(--status-error);color:var(--status-error)}.btn-small{padding:2px var(--space-2);font-size:var(--fs-small)}.chip{padding:1px var(--space-2);border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);white-space:nowrap;align-items:center;gap:6px;line-height:1.5;display:inline-flex}.chip .dot{font-size:10px}.chip-running{border-color:var(--status-running);color:var(--status-running)}.chip-attention{background:var(--status-attention);border-color:var(--status-attention);color:var(--bg);font-weight:600}.chip-idle{border-color:var(--border);color:var(--status-idle)}.chip-error{border-color:var(--status-error);color:var(--status-error)}.chip-plain{border-color:var(--border);color:var(--muted)}.card{border:var(--hairline);border-radius:var(--radius);padding:var(--space-4);transition:border-color .2s}a.card{text-decoration:none;display:block}.card:hover{border-color:var(--text);color:var(--text)}.input,.textarea,.select{width:100%;padding:var(--space-2) var(--space-3);border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-size:var(--fs-body);transition:border-color .2s}.input:hover,.textarea:hover,.select:hover{border-color:var(--text)}.textarea{resize:vertical;min-height:72px;line-height:1.6}.field{gap:var(--space-1);margin-bottom:var(--space-4);flex-direction:column;display:flex}.field>label{font-size:var(--fs-secondary)}.field>.hint{font-size:var(--fs-small);color:var(--muted)}.toggle{border:var(--hairline);border-radius:var(--radius);display:inline-flex;overflow:hidden}.toggle span{padding:2px var(--space-3);font-size:var(--fs-small);color:var(--muted)}.toggle .on{background:var(--text);color:var(--bg)}.table{border-collapse:collapse;width:100%;font-size:var(--fs-body)}.table th{text-align:left;font-weight:500;font-size:var(--fs-small);color:var(--muted);padding:var(--space-2) var(--space-3);border-bottom:var(--hairline)}.table td{padding:var(--space-2) var(--space-3);border-bottom:var(--hairline)}.modal-backdrop{padding:var(--space-4);background:#80808040;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg);border:1px solid var(--text);border-radius:var(--radius);width:100%;max-width:480px;padding:var(--space-5)}.modal h3{margin-bottom:var(--space-3)}.modal-actions{gap:var(--space-2);margin-top:var(--space-5);justify-content:flex-end;display:flex}.row{align-items:center;gap:var(--space-2);display:flex}.stack{gap:var(--space-2);flex-direction:column;display:flex}.hidden{display:none}:root{--syntax-comment:green;--syntax-keyword:#00f;--syntax-string:#a31515;--syntax-number:#098658;--syntax-function:#795e26;--syntax-type:#267f99;--syntax-variable:#001080;--syntax-operator:#000;--syntax-punctuation:#000}@media (prefers-color-scheme:dark){:root{--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}}html,body,#root{width:100%;min-width:0;max-width:100%}#root{flex-direction:column;min-height:100vh;display:flex}.screen-fill{flex-direction:column;flex:1;min-height:0;display:flex}.fleet-head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin:var(--space-5) 0 var(--space-6);flex-wrap:wrap;display:flex}.live-sessions{margin-bottom:var(--space-6)}.past-sessions-head{font-size:var(--fs-h3);color:var(--muted);border-bottom:var(--hairline);padding-bottom:var(--space-2);margin-bottom:var(--space-4)}.project-group{margin-bottom:var(--space-5)}.group-head{align-items:baseline;gap:var(--space-3);padding-bottom:var(--space-1);margin-bottom:var(--space-1);flex-wrap:wrap;display:flex}.group-head h2,.group-head h3{font-size:var(--fs-secondary);font-weight:600}.group-head .btn{margin-left:auto}.session-grid{gap:var(--space-4);margin-bottom:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(340px,1fr));display:grid}.session-card{border:var(--hairline);border-radius:var(--radius);min-width:0;padding:var(--space-4);gap:var(--space-2);flex-direction:column;transition:border-color .2s;display:flex}.session-card:hover{border-color:var(--text)}.session-card.attention{border-color:var(--status-attention)}.session-card.error{border-color:var(--status-error)}.session-title{justify-content:space-between;align-items:baseline;gap:var(--space-2);min-width:0;display:flex}.session-title .name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.session-project{font-size:var(--fs-small);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.attention-reason{font-weight:600;font-size:var(--fs-secondary)}.error-reason{color:var(--status-error);font-size:var(--fs-secondary)}.activity{font-size:var(--fs-secondary);color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.subagents{border-left:var(--hairline);padding-left:var(--space-3);font-size:var(--fs-small);flex-direction:column;gap:2px;display:flex}.subagents .agent-line{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.subagents .agent-line .live{color:var(--status-running)}.session-meta{font-size:var(--fs-small);color:var(--muted);gap:var(--space-1);flex-wrap:wrap;display:flex}.session-actions{gap:var(--space-2);padding-top:var(--space-2);flex-wrap:wrap;margin-top:auto;display:flex}.disk-row{align-items:center;gap:var(--space-3);border-bottom:var(--hairline);font-size:var(--fs-secondary);padding:2px 0;display:flex}.disk-row .name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.disk-row .meta{color:var(--muted);font-size:var(--fs-small);white-space:nowrap;margin-left:auto}.disk-row .actions{gap:var(--space-2);flex-shrink:0;display:flex}.disk-more{margin-top:var(--space-1);font-size:var(--fs-small);color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;text-decoration:underline;display:inline-block}.disk-more:hover{color:var(--text)}.empty-state{border:var(--hairline);border-radius:var(--radius);padding:var(--space-6);text-align:center;color:var(--muted);margin-top:var(--space-6)}.session-screen{flex-direction:column;width:100%;min-width:0;max-width:100%;height:100dvh;display:flex;overflow:hidden}.session-bar{border-bottom:var(--hairline);padding-top:env(safe-area-inset-top,0px);flex-shrink:0}.session-bar-inner{width:100%;min-width:0;max-width:960px;padding:var(--space-2) var(--space-4);align-items:center;gap:var(--space-3);flex-wrap:wrap;margin:0 auto;display:flex}.session-bar .back{white-space:nowrap;text-decoration:none}.session-bar .title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.session-bar .project,.session-bar .agent-type{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}.session-bar .right{align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0;margin-left:auto;display:flex}.session-connection-indicator{flex-wrap:wrap;flex:0 auto;min-width:0}.session-connection-indicator .chip,.session-connection-indicator .btn{font-size:var(--fs-small);padding:1px var(--space-2)}.session-info-bar{font-size:var(--fs-small);color:var(--muted);justify-content:space-between;padding-top:0}.session-info-left{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.session-info-right{gap:var(--space-2);flex-wrap:wrap;justify-content:flex-end;margin-left:auto;display:flex}.stats-trigger{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.stats-popover{right:max(var(--space-4), calc((100vw - 960px) / 2 + var(--space-4)));z-index:10;border:var(--hairline);border-radius:var(--radius);background:var(--bg);padding:var(--space-3);min-width:280px;position:absolute;top:78px;box-shadow:0 12px 32px #0000002e}.stats-grid{gap:var(--space-1) var(--space-3);font-size:var(--fs-small);grid-template-columns:1fr auto;display:grid}.stats-grid span{color:var(--muted)}.session-info-right span+span:before{content:"·";margin-right:var(--space-2);color:var(--muted)}.switcher{min-width:0;padding:1px var(--space-2);border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);background:var(--bg);color:var(--text);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;font-family:inherit;transition:border-color .2s;display:inline-flex}.switcher:hover{border-color:var(--text)}.switcher .label{color:var(--muted)}.switcher .value{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.model-switcher{max-width:min(340px,45vw)}.session-bar.collapsed{background:var(--bg)}.session-bar-main .chrome-toggle{margin-left:auto}.chrome-toggle{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--muted);font:inherit;font-size:var(--fs-small);padding:1px var(--space-2);cursor:pointer;white-space:nowrap}.chrome-toggle:hover{border-color:var(--text);color:var(--text)}.chat{flex:1;min-height:0;overflow-y:auto}.chat-inner{max-width:960px;padding:var(--space-4);gap:var(--space-4);flex-direction:column;margin:0 auto;display:flex}.assistant-turn{border-left:var(--hairline);padding-left:var(--space-3);gap:var(--space-3);flex-direction:column;display:flex}.entry{min-width:0}.entry-head{font-size:var(--fs-small);color:var(--muted);margin-bottom:var(--space-1);gap:var(--space-2);align-items:baseline;display:flex}.entry-action{color:var(--muted);font:inherit;font-size:var(--fs-small);cursor:pointer;opacity:.65;background:0 0;border:none;padding:0}.entry-action:hover{opacity:1;text-decoration:underline}.skill-badge,.queued-kind{border:var(--hairline);border-radius:var(--radius);padding:0 var(--space-1);font-size:var(--fs-small);color:var(--muted)}.entry.user{align-self:flex-end;max-width:85%}.entry.user .entry-body{border:1px solid var(--text);border-radius:var(--radius);padding:var(--space-2) var(--space-3);white-space:pre-wrap}.entry.user .entry-head{justify-content:flex-end}.entry.user>.tool-images{margin-top:var(--space-2)}.entry.assistant{max-width:100%}.entry.assistant .entry-body{white-space:normal}.assistant-error{color:var(--status-error);font-size:var(--fs-secondary);margin:var(--space-2) 0 0;white-space:pre-wrap;font-weight:500}.markdown-body{color:var(--text)}.markdown-body,.markdown-body *{-webkit-text-fill-color:currentColor}.markdown-body p,.markdown-body ul,.markdown-body ol,.markdown-body pre,.markdown-body blockquote,.markdown-body table{margin:0 0 var(--space-2)}.markdown-body :last-child{margin-bottom:0}.markdown-body ul,.markdown-body ol{padding-left:var(--space-5)}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{font-size:var(--fs-h3);margin:var(--space-2) 0 var(--space-1);font-weight:500}.markdown-body code{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-secondary);padding:0 4px}.markdown-body pre{background:var(--bg);margin-top:var(--space-1)}.markdown-body pre code{border:none;padding:0}.markdown-body a{text-decoration:underline}.markdown-body table{border-collapse:collapse;width:100%;font-size:var(--fs-secondary)}.markdown-body th,.markdown-body td{border:var(--hairline);padding:var(--space-1) var(--space-2);text-align:left}.markdown-body blockquote{border-left:var(--hairline);padding-left:var(--space-3);color:var(--muted)}.entry-body code{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-secondary);padding:0 4px}details.thinking{border-left:var(--hairline);padding-left:var(--space-3);margin-bottom:var(--space-3)}details.thinking summary{cursor:pointer;font-size:var(--fs-small);color:var(--muted);-webkit-user-select:none;user-select:none;list-style:none}details.thinking summary:before{content:"▸ "}details.thinking[open] summary:before{content:"▾ "}details.thinking .thinking-body{color:var(--muted);font-size:var(--fs-secondary);padding-top:var(--space-1);white-space:pre-wrap}.tool{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-secondary)}.tool summary{cursor:pointer;-webkit-user-select:none;user-select:none;gap:var(--space-2);padding:var(--space-1) var(--space-3);align-items:baseline;list-style:none;display:flex}.tool summary:before{content:"▸";color:var(--muted)}.tool[open] summary:before{content:"▾"}.tool .tool-name{font-weight:600}.tool .tool-arg{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.tool .tool-status{white-space:nowrap;font-size:var(--fs-small);color:var(--muted);margin-left:auto}.tool .tool-status.running{color:var(--status-running)}.tool .tool-status.error{color:var(--status-error)}.tool .tool-command{border-top:var(--hairline);padding:var(--space-2) var(--space-3) 0;overflow-x:auto}.tool .tool-command code{border:var(--hairline);border-radius:var(--radius);padding:var(--space-1) var(--space-2);white-space:pre-wrap;display:block}.tool .tool-input{border-top:var(--hairline);padding:var(--space-2) var(--space-3);overflow-x:auto}.tool .tool-input-label{font-size:var(--fs-small);color:var(--muted);margin-bottom:var(--space-1);display:block}.tool .tool-input pre{font-size:var(--fs-small);white-space:pre-wrap;border:none;padding:0}.tool .suggested-command{margin-top:var(--space-1)}.tool .suggested-command code{border:var(--hairline);border-radius:var(--radius);padding:1px var(--space-2)}.tool .tool-result{border-top:var(--hairline);padding:var(--space-2) var(--space-3);overflow-x:auto}.tool-output-truncated,.transcript-window-control{color:var(--muted);font-size:var(--fs-small);margin-bottom:var(--space-2)}.transcript-window-control{text-align:center}.tool .tool-command+.tool-result,.tool .tool-input+.tool-result{border-top:none}.tool-images{gap:var(--space-3);flex-wrap:wrap;display:flex}.tool-image-item{gap:var(--space-2);max-width:100%;display:grid}.tool-image-button{appearance:none;color:inherit;cursor:zoom-in;text-align:left;background:0 0;border:0;padding:0}.tool-image-button:disabled{cursor:default;opacity:1}.tool-image{object-fit:contain;border:var(--hairline);border-radius:var(--radius);width:auto;max-width:100%;height:auto;max-height:480px;display:block}.tool-image-placeholder{place-items:center;gap:var(--space-2);min-width:min(320px,75vw);min-height:140px;padding:var(--space-3);border:1px dashed var(--border);border-radius:var(--radius);background:var(--surface-raised);color:var(--muted);font-size:var(--fs-small);display:grid}.tool-image-actions{justify-content:space-between;align-items:center;gap:var(--space-2);color:var(--muted);font-size:var(--fs-small);flex-wrap:wrap;display:flex}.tool-image-error{color:var(--status-error);font-size:var(--fs-small);margin:0}.image-lightbox{z-index:1000;padding:var(--space-4);place-items:center;display:grid;position:fixed;inset:0}.image-lightbox-backdrop{background:#000000c7;border:0;width:100%;height:100%;position:absolute;inset:0}.image-lightbox-content{justify-items:end;gap:var(--space-2);max-width:100%;max-height:100%;display:grid;position:relative}.image-lightbox-content img{max-width:calc(100vw - 2 * var(--space-4));object-fit:contain;border-radius:var(--radius);max-height:calc(100vh - 5rem)}.tool .tool-result pre{font-size:var(--fs-small);border:none;padding:0}.tool .tool-result pre,.tool .tool-input pre{max-height:340px;overflow-y:auto}.hljs{color:var(--text);background:0 0}.hljs-comment,.hljs-quote{color:var(--syntax-comment)}.hljs-keyword,.hljs-selector-tag{color:var(--syntax-keyword)}.hljs-number,.hljs-literal{color:var(--syntax-number)}.hljs-string,.hljs-doctag{color:var(--syntax-string)}.hljs-function,.hljs-title,.hljs-title.function_,.hljs-section,.hljs-name{color:var(--syntax-function)}.hljs-type,.hljs-class,.hljs-title.class_,.hljs-built_in{color:var(--syntax-type)}.hljs-attr,.hljs-variable,.hljs-variable.language_,.hljs-params,.hljs-property{color:var(--syntax-variable)}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:var(--syntax-keyword)}.hljs-operator{color:var(--syntax-operator)}.hljs-punctuation{color:var(--syntax-punctuation)}.hljs-subst{color:var(--text)}.diff-add{color:var(--status-running)}.diff-del{color:var(--status-error)}.entry.summary-card .entry-body{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);color:var(--muted);font-size:var(--fs-secondary)}.entry.summary-card summary{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--muted);font-size:var(--fs-secondary);list-style:none}.entry.summary-card summary:before{content:"▸ "}.entry.summary-card details[open] summary:before{content:"▾ "}.entry.custom-card .entry-body,.entry.agent-result-card details{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary)}.entry.agent-result-card summary{cursor:pointer;-webkit-user-select:none;user-select:none;gap:var(--space-2);color:var(--muted);align-items:baseline;list-style:none;display:flex}.entry.agent-result-card summary:before{content:"▸ "}.entry.agent-result-card details[open] summary:before{content:"▾ "}.agent-result-header{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.entry.agent-result-card .entry-body{margin-top:var(--space-2)}.streaming-cursor:after{content:"▌";color:var(--status-running)}.dock{border-top:var(--hairline);flex-shrink:0}.dock.collapsed{background:var(--bg)}.dock-collapse-row{max-width:960px;padding:var(--space-1) calc(var(--space-4) + env(safe-area-inset-right,0px)) calc(var(--space-1) + env(safe-area-inset-bottom,0px)) calc(var(--space-4) + env(safe-area-inset-left,0px));align-items:center;gap:var(--space-3);font-size:var(--fs-small);color:var(--muted);flex-wrap:wrap;margin:0 auto;display:flex}.dock-collapsed-hint{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.dock-inner{max-width:960px;padding:var(--space-3) calc(var(--space-4) + env(safe-area-inset-right,0px)) calc(var(--space-3) + env(safe-area-inset-bottom,0px)) calc(var(--space-4) + env(safe-area-inset-left,0px));gap:var(--space-2);flex-direction:column;margin:0 auto;display:flex}.tasks{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary)}.tasks summary{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--muted);font-size:var(--fs-small);list-style:none}.tasks summary:before{content:"▸ "}.tasks[open] summary:before{content:"▾ "}.tasks ul{padding-top:var(--space-1);list-style:none}.tasks .done{color:var(--muted)}.tasks .active{font-weight:600}.subagent-strip{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.subagent-strip .count,.subagent-strip .collapsed-hint{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}.subagent-strip .subagent-toggle{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-family:inherit;font-size:var(--fs-small);padding:1px var(--space-2);cursor:pointer}.subagent-strip .subagent-toggle:hover{border-color:var(--text)}.subagent-strip.collapsed{padding-block:var(--space-1)}.subagent-strip .agent-chip{border:var(--hairline);border-radius:var(--radius);padding:1px var(--space-2);font-size:var(--fs-small);background:var(--bg);color:var(--text);cursor:pointer;align-items:center;gap:6px;max-width:260px;font-family:inherit;transition:border-color .2s;display:inline-flex}.subagent-strip .agent-chip:hover{border-color:var(--text)}.subagent-strip .agent-chip .live{color:var(--status-running)}.subagent-strip .agent-chip .done{color:var(--muted)}.subagent-strip .agent-chip .task{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.status-line{align-items:center;gap:var(--space-3);font-size:var(--fs-secondary);flex-wrap:wrap;display:flex}.status-line .working{color:var(--status-running)}.status-line .warning{color:var(--status-attention)}.status-line .error{color:var(--status-error)}.status-line .queued{color:var(--muted);font-size:var(--fs-small)}.status-line .btn{margin-left:auto}.status-line .inline-stop{margin-left:var(--space-2)}.composer{gap:var(--space-2);flex-direction:column;display:flex;position:relative}.queued-message-row{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2);align-items:center;gap:var(--space-2);font-size:var(--fs-small);flex-wrap:wrap;display:flex}.queued-chip{align-items:baseline;gap:var(--space-1);text-overflow:ellipsis;white-space:nowrap;max-width:240px;color:var(--muted);display:inline-flex;overflow:hidden}.attachment-strip{gap:var(--space-2);flex-wrap:wrap;display:flex}.attachment-thumb,.attachment-file{border:var(--hairline);border-radius:var(--radius);padding:2px;position:relative}.attachment-file{align-items:baseline;gap:var(--space-2);padding:2px var(--space-2);font-size:var(--fs-small);overflow-wrap:anywhere;max-width:100%;display:inline-flex}.attachment-thumb img{object-fit:cover;width:72px;height:54px;display:block}.attachment-thumb button,.attachment-file button{border:var(--hairline);background:var(--bg);color:var(--text);cursor:pointer;border-radius:999px;position:absolute;top:-8px;right:-8px}.command-popover{left:0;right:0;bottom:calc(100% + var(--space-2));border:var(--hairline);border-radius:var(--radius);background:var(--bg);padding:var(--space-1);z-index:5;max-height:260px;position:absolute;overflow-y:auto}.command-option{background:var(--bg);width:100%;color:var(--text);font:inherit;text-align:left;padding:var(--space-2);border-radius:var(--radius);gap:var(--space-2);cursor:pointer;border:none;grid-template-columns:minmax(120px,max-content) 1fr max-content;align-items:baseline;display:grid}.command-option:hover,.command-option.selected{background:var(--text);color:var(--bg)}.command-name{font-weight:500}.command-description{color:var(--muted);font-size:var(--fs-small);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.command-source{border:var(--hairline);border-radius:var(--radius);color:var(--muted);font-size:var(--fs-small);padding:0 var(--space-1)}.command-option.selected .command-description,.command-option:hover .command-description,.command-option.selected .command-source,.command-option:hover .command-source{color:var(--bg)}.composer textarea{border:var(--hairline);border-radius:var(--radius);background:var(--bg);width:100%;color:var(--text);padding:var(--space-2) var(--space-3);font-size:var(--fs-body);resize:vertical;min-height:60px;max-height:40vh;font-family:inherit;line-height:1.6;transition:border-color .2s;overflow-y:hidden}.composer textarea:hover,.composer textarea:focus{border-color:var(--text);outline:none}.hidden-file-input{display:none}.composer-row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.mode-toggle{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);display:inline-flex;overflow:hidden}.mode-toggle button{background:var(--bg);color:var(--muted);padding:2px var(--space-3);cursor:pointer;border:none;font-family:inherit}.mode-toggle button.selected{background:var(--text);color:var(--bg)}.composer-row .send{margin-left:auto}.ghost-suggest{font-size:var(--fs-small);color:var(--muted);cursor:pointer;background:0 0;border:none;font-family:inherit}.ghost-suggest .key{border:var(--hairline);border-radius:var(--radius);padding:0 4px}.readonly-note{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);color:var(--muted)}.fallback-banner{border:1px solid var(--status-attention);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);gap:var(--space-3);align-items:baseline;display:flex}.fallback-banner .dismiss{margin-left:auto}.widget-block{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-small);color:var(--muted);white-space:pre-wrap}.toast-region{bottom:var(--space-4);right:var(--space-4);gap:var(--space-2);z-index:50;flex-direction:column;max-width:360px;display:flex;position:fixed}.toast{border:var(--hairline);border-radius:var(--radius);background:var(--bg);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);gap:var(--space-2);align-items:baseline;display:flex}.toast.warning{border-color:var(--status-attention)}.toast.error{border-color:var(--status-error)}.files-head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin:var(--space-5) 0 var(--space-4);flex-wrap:wrap;display:flex}.crumbs{font-size:var(--fs-secondary);flex-wrap:wrap;align-items:baseline;gap:2px;display:flex}.crumbs .sep{color:var(--muted);margin:0 2px}.scope-note{color:var(--muted);font-size:var(--fs-small);margin-top:var(--space-1)}.context-trust{border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);margin-bottom:var(--space-4);font-size:var(--fs-secondary)}.context-trust p{color:var(--muted);font-size:var(--fs-small);margin:var(--space-1) 0 var(--space-2);overflow-wrap:anywhere}.context-trust-impact{margin-bottom:0!important}.context-trust-warning{color:var(--status-attention)}.context-trust-warning a{color:inherit}.head-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.places{gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;align-items:baseline;display:flex}.places .label{color:var(--muted);font-size:var(--fs-small)}.place-chip{border:var(--hairline);border-radius:var(--radius);padding:1px var(--space-2);font-size:var(--fs-small);background:var(--bg);color:var(--text);cursor:pointer;font-family:inherit;text-decoration:none;transition:border-color .2s}.place-chip:hover{border-color:var(--text)}.file-table{border-collapse:collapse;width:100%;font-size:var(--fs-secondary)}.file-table th{text-align:left;font-size:var(--fs-small);color:var(--muted);border-bottom:var(--hairline);padding:var(--space-1) var(--space-2);font-weight:400}.file-table td{border-bottom:var(--hairline);padding:var(--space-2)}.file-table .name{color:var(--text);cursor:pointer;font-family:inherit;font-size:inherit;background:0 0;border:none;padding:0;text-decoration:none}.file-table .name .icon{color:var(--muted);margin-right:var(--space-1)}.file-table .meta{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}.file-table .actions{text-align:right}.drop-zone{border:1px dashed var(--border);border-radius:var(--radius);padding:var(--space-4);text-align:center;color:var(--muted);font-size:var(--fs-small);margin-top:var(--space-4);transition:border-color .2s}.drop-zone.active{border-color:var(--text);color:var(--text)}.upload-warning{font-size:var(--fs-small);color:var(--muted);margin-top:var(--space-2)}.settings-wrap{max-width:720px}.settings-intro{color:var(--muted);font-size:var(--fs-secondary);margin:var(--space-2) 0 var(--space-5)}.settings-section{margin-bottom:var(--space-6)}.settings-section h2{font-size:var(--fs-h3);border-bottom:var(--hairline);padding-bottom:var(--space-2);margin-bottom:var(--space-3)}.setting-row{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-2) 0;display:flex}.setting-label{flex-direction:column;gap:2px;min-width:0;display:flex}.setting-label .name{font-size:var(--fs-secondary)}.setting-label .hint{font-size:var(--fs-small);color:var(--muted)}.setting-control{min-width:0;max-width:100%}.agent-context-row .setting-label{flex-shrink:0}.setting-control select,.setting-control input{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:2px var(--space-2);max-width:100%}.checkbox-control{align-items:center;gap:var(--space-2);font-size:var(--fs-secondary);display:inline-flex}.checkbox-control input{width:auto}.settings-error{border:1px solid var(--status-error);border-radius:var(--radius);color:var(--status-error);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);margin-bottom:var(--space-4);white-space:pre-wrap}.settings-warning{border:1px solid var(--status-attention);border-radius:var(--radius);color:var(--status-attention);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);margin-bottom:var(--space-4);white-space:pre-wrap}.model-picker-button{white-space:normal;overflow-wrap:anywhere;text-align:left;min-width:0;max-width:min(100%,520px)}.agent-model-row{gap:var(--space-3);padding:var(--space-2) 0;border-bottom:var(--hairline);grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) auto;align-items:start;display:grid}.agent-model-summary{flex-direction:column;gap:2px;min-width:0;display:flex}.agent-model-name{font-size:var(--fs-secondary);font-weight:600}.agent-model-description{color:var(--muted);font-size:var(--fs-small)}.agent-model-fallbacks{gap:var(--space-1);flex-wrap:wrap;min-width:0;display:flex}.agent-model-chip{border:var(--hairline);border-radius:var(--radius);color:var(--muted);font-size:var(--fs-small);padding:0 var(--space-1);overflow-wrap:anywhere;white-space:normal;min-width:0;max-width:100%}.agent-model-editor{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);padding:var(--space-2);flex-direction:column;grid-column:1/-1;display:flex}.agent-model-entry{justify-content:space-between;gap:var(--space-2);font-size:var(--fs-secondary);align-items:center;min-width:0;display:flex}.agent-model-entry>span:first-child{overflow-wrap:anywhere;min-width:0}.agent-model-entry-actions{gap:var(--space-1);flex-shrink:0;display:flex}.context-trust-subsection{margin:var(--space-4) 0}.context-trust-subsection h3{font-size:var(--fs-secondary);margin-bottom:var(--space-1)}.context-trust-global-warning,.trusted-context-empty{margin:var(--space-3) 0}.trusted-context-folder-row{align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:var(--hairline);font-size:var(--fs-secondary);display:flex}.trusted-context-folder-row code{overflow-wrap:anywhere;min-width:0}.trusted-context-folder-row .meta{color:var(--muted);font-size:var(--fs-small);margin-left:auto}.trusted-context-folder-row .btn{flex-shrink:0}.trusted-context-folder-add{align-items:center;gap:var(--space-2);margin-top:var(--space-3);display:flex}.trusted-context-folder-add label{font-size:var(--fs-small);white-space:nowrap}.trusted-context-folder-add input{border:var(--hairline);border-radius:var(--radius);background:var(--bg);min-width:0;color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:2px var(--space-2);flex:1}.settings-footnote{margin-top:calc(-1 * var(--space-3));margin-bottom:var(--space-5)}.appearance-block{margin-bottom:var(--space-4)}.appearance-heading-row .name{font-weight:600}.theme-gallery{gap:var(--space-3);margin-top:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.theme-card{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);padding:var(--space-2);text-align:left;cursor:pointer;flex-direction:column;font-family:inherit;transition:border-color .2s;display:flex}.theme-card:hover{border-color:var(--muted)}.theme-card.active{border-color:var(--text)}.theme-card-preview{gap:var(--space-2);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-2);flex-direction:column;display:flex;overflow:hidden}.theme-card-swatch{flex-direction:column;gap:2px;min-width:0;display:flex}.theme-card-name{font-size:var(--fs-secondary);color:var(--text);font-weight:600}.theme-card-muted{font-size:var(--fs-small);color:var(--muted)}.theme-card-chips{gap:var(--space-1);flex-wrap:wrap;display:flex}.theme-card-code{font-size:var(--fs-small);white-space:pre;margin:0;font-family:IBM Plex Mono,Courier New,monospace;line-height:1.4;overflow:hidden}.theme-card-code .hljs{background:0 0;padding:0}.theme-card-footer{justify-content:space-between;align-items:baseline;gap:var(--space-2);font-size:var(--fs-small);display:flex}.theme-card-title{font-size:var(--fs-secondary);color:var(--text)}.theme-card-state{color:var(--muted)}.theme-card.active .theme-card-state{color:var(--text)}@media (width<=700px){.theme-gallery{grid-template-columns:1fr}}.device-row{align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:var(--hairline);font-size:var(--fs-secondary);display:flex}.device-row .meta{color:var(--muted);font-size:var(--fs-small);margin-left:auto}.this-device{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);color:var(--muted);padding:0 var(--space-1);margin-left:var(--space-1)}.pair-wrap{min-height:100vh;padding:var(--space-4);justify-content:center;align-items:center;display:flex}.pair-card{border:var(--hairline);border-radius:var(--radius);width:100%;max-width:460px;padding:var(--space-6);gap:var(--space-4);flex-direction:column;display:flex}.pair-card h1{font-size:var(--fs-h2)}.pair-card .sub{color:var(--muted);font-size:var(--fs-secondary)}.identity{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);font-size:var(--fs-secondary);flex-direction:column;display:flex}.identity .row-line{justify-content:space-between;gap:var(--space-3);display:flex}.identity .k{color:var(--muted);font-size:var(--fs-small)}.pin-input{text-align:center;width:100%;font-size:var(--fs-h1);letter-spacing:.5em;border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);padding:var(--space-2);font-family:inherit}.pin-input:focus{border-color:var(--text);outline:none}.pin-hint{font-size:var(--fs-small);color:var(--muted)}.security-note{border-top:var(--hairline);padding-top:var(--space-3);gap:var(--space-2);font-size:var(--fs-small);color:var(--muted);flex-direction:column;display:flex}.pair-error{color:var(--status-error);font-size:var(--fs-secondary)}.denied-card{border:1px solid var(--status-error);border-radius:var(--radius);width:100%;max-width:460px;padding:var(--space-6);gap:var(--space-3);flex-direction:column;display:flex}.field{gap:var(--space-1);flex-direction:column;display:flex}.field label{font-size:var(--fs-small);color:var(--muted)}.field input,.field textarea,.field select{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:var(--space-2)}.field input:focus,.field textarea:focus{border-color:var(--text);outline:none}.ask-inline{gap:var(--space-2);margin:var(--space-3) 0;padding:var(--space-3);border:var(--hairline);border-left:3px solid var(--status-attention);border-radius:var(--radius);background:color-mix(in srgb, var(--status-attention) 6%, var(--surface,transparent));flex-direction:column;display:flex}.ask-inline-header{color:var(--text);font-weight:600}.ask-inline-countdown{color:var(--muted);font-weight:400}.ask-inline-question{margin:0 0 var(--space-2);color:var(--text)}.ask-inline-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-1);display:flex}.ask-options{gap:var(--space-2);margin:0 0 var(--space-3);border:0;flex-direction:column;min-width:0;padding:0;display:flex}.ask-options-legend{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ask-option{align-items:center;gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);cursor:pointer;color:var(--text);display:flex}.ask-option:hover{border-color:var(--text)}.ask-option.selected{border-color:var(--status-running);background:color-mix(in srgb, var(--status-running) 12%, transparent)}.ask-option input{width:auto;accent-color:var(--status-running);cursor:pointer;margin:0}.ask-custom-label{font-size:var(--fs-small);color:var(--muted)}.recent-projects{flex-direction:column;gap:2px;max-height:160px;display:flex;overflow-y:auto}.recent-projects button{text-align:left;color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:var(--space-1) var(--space-2);cursor:pointer;border-radius:var(--radius);background:0 0;border:none}.recent-projects button:hover{background:var(--border)}.model-scope-tabs{border:var(--hairline);border-radius:var(--radius);margin-bottom:var(--space-3);font-size:var(--fs-small);display:inline-flex;overflow:hidden}.model-scope-tabs button{background:var(--bg);color:var(--muted);padding:2px var(--space-3);cursor:pointer;border:none;font-family:inherit}.model-scope-tabs button.selected{background:var(--text);color:var(--bg)}.model-picker-modal{min-width:min(360px,100vw - 32px);max-width:min(900px,100vw - 32px);overflow:auto}@media (width>=701px){.model-picker-modal{resize:horizontal}}.model-list{gap:var(--space-2);flex-direction:column;min-width:0;display:flex;overflow:hidden auto}.model-provider-group{flex-direction:column;gap:2px;display:flex}.model-provider-heading{background:var(--bg);color:var(--muted);font-size:var(--fs-small);border-bottom:var(--hairline);padding:var(--space-1) var(--space-2);z-index:1;position:sticky;top:0}.model-row{align-items:start;gap:2px var(--space-2);text-align:left;border:var(--hairline);border-radius:var(--radius);color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:var(--space-1) var(--space-2);cursor:pointer;background:0 0;grid-template-columns:18px minmax(0,1fr) auto auto;min-width:0;display:grid}.model-row:hover,.model-row.current{border-color:var(--text)}.model-current{color:var(--status-running);grid-area:1/1}.model-id{overflow-wrap:anywhere;white-space:normal;grid-area:1/2;min-width:0;font-weight:600}.model-name{color:var(--muted);font-size:var(--fs-small);overflow-wrap:anywhere;white-space:normal;grid-area:2/2/auto/-1;min-width:0}.model-provider-badge,.model-reasoning{color:var(--muted);font-size:var(--fs-small);white-space:nowrap;border:var(--hairline);border-radius:var(--radius);padding:0 var(--space-1);grid-row:1}.model-provider-badge{grid-column:3}.model-reasoning{grid-column:4}.context-modal-body{gap:var(--space-4);flex-direction:column;display:flex}.context-section h3{font-size:var(--fs-secondary);margin-bottom:var(--space-1)}.context-section ul{gap:var(--space-1);font-size:var(--fs-small);flex-direction:column;list-style:none;display:flex}.context-section li{overflow-wrap:anywhere}.fork-message-list{gap:var(--space-2);flex-direction:column;max-height:360px;display:flex;overflow-y:auto}.fork-message{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font:inherit;text-align:left;padding:var(--space-2);cursor:pointer;gap:var(--space-2);display:flex}.fork-message:hover{border-color:var(--text)}.fork-entry-id{color:var(--muted);font-size:var(--fs-small);flex:none}@media (width<=700px){.container,.topbar-inner,.session-bar-inner,.dock-inner,.dock-collapse-row,.chat-inner{width:100%;min-width:0;max-width:100%;padding-left:var(--space-3);padding-right:var(--space-3)}.session-grid{grid-template-columns:minmax(0,1fr)}.session-card,.disk-row,.session-meta,.session-actions,.disk-row .actions{min-width:0;max-width:100%}.disk-row,.session-meta,.session-actions,.disk-row .actions{flex-wrap:wrap}.session-title{flex-wrap:wrap;justify-content:flex-start;min-width:0;max-width:100%}.session-title .name{text-overflow:clip;white-space:normal;overflow-wrap:anywhere;flex:12rem;min-width:0;max-width:100%;overflow:visible}.session-title .chip{flex:none;max-width:100%}.session-project,.attention-reason,.error-reason,.activity,.subagents,.session-meta,.group-head h3{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.session-project{text-overflow:clip;overflow:visible}.activity{text-overflow:clip}.subagents .agent-line{text-overflow:clip;white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%;overflow:visible}.session-meta>span{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.group-head h3{flex:1 1 0}.disk-row .name,.disk-row .meta{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.disk-row .name{text-overflow:clip;flex:1 1 0;overflow:visible}.disk-row .meta{order:3;width:100%;margin-left:0}.session-bar .project{display:none}.session-bar .right{align-items:stretch;width:100%;margin-left:0}.session-bar .right .switcher{justify-content:center}.session-bar .right .model-switcher{flex:100%;max-width:100%}.entry.user{max-width:100%}.file-table .cols{display:none}.setting-row{flex-direction:column;align-items:stretch}.setting-control{align-self:flex-end}.agent-model-row{grid-template-columns:1fr}.agent-model-edit{justify-self:start}.agent-model-entry{flex-direction:column;align-items:flex-start}.trusted-context-folder-row{flex-wrap:wrap;align-items:flex-start}.trusted-context-folder-row code{flex-basis:100%}.trusted-context-folder-row .meta{margin-left:0}.trusted-context-folder-add{flex-direction:column;align-items:stretch}.trusted-context-folder-add label{white-space:normal}.trusted-context-folder-add .btn{align-self:flex-start}.subagent-strip{align-items:stretch;gap:var(--space-2)}.subagent-strip .subagent-toggle{flex:none;min-height:32px}.subagent-strip .count,.subagent-strip .collapsed-hint{white-space:normal}.subagent-strip .agent-chip{max-width:100%}.head-actions .btn{flex:1}.composer textarea{font-size:16px}}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(./jetbrains-mono-BCtJif-v.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:italic;font-weight:100 800;font-display:swap;src:url(./jetbrains-mono-italic-WKDR0M8A.woff2)format("woff2")}[data-color-mode=light]:not([data-theme]){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--text:#000;--border:#e0e0e0;--muted:#666;--status-running:#00871f;--status-attention:#8a5400;--status-idle:#666;--status-error:#d10041;--syntax-comment:green;--syntax-keyword:#00f;--syntax-string:#a31515;--syntax-number:#098658;--syntax-function:#795e26;--syntax-type:#267f99;--syntax-variable:#001080;--syntax-operator:#000;--syntax-punctuation:#000}[data-color-mode=dark]:not([data-theme]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d;--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}[data-theme=default]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:#fff;--text:#000;--border:#e0e0e0;--muted:#666;--status-running:#00871f;--status-attention:#8a5400;--status-idle:#666;--status-error:#d10041;--syntax-comment:green;--syntax-keyword:#00f;--syntax-string:#a31515;--syntax-number:#098658;--syntax-function:#795e26;--syntax-type:#267f99;--syntax-variable:#001080;--syntax-operator:#000;--syntax-punctuation:#000}[data-theme=default][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d;--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}@media (prefers-color-scheme:dark){[data-theme=default]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d;--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}}[data-theme=dim]{--dim-d-bg:#1e1f22;--dim-d-text:#d7d8da;--dim-d-border:#3a3c40;--dim-d-muted:#9a9ea6;--dim-d-running:#5ec27a;--dim-d-attention:#d8a341;--dim-d-idle:#9a9ea6;--dim-d-error:#f0637f;--dim-d-comment:#8b9199;--dim-d-keyword:#8ab4f8;--dim-d-string:#c3956a;--dim-d-number:#9fce8a;--dim-d-function:#d9c46e;--dim-d-type:#5cc2b0;--dim-d-variable:#9cc7e8;--dim-d-operator:#c3c6cb;--dim-d-punctuation:#c3c6cb;--dim-l-bg:#f0f0ee;--dim-l-text:#33353a;--dim-l-border:#d3d4d1;--dim-l-muted:#5c5f66;--dim-l-running:#1c7a37;--dim-l-attention:#8a5400;--dim-l-idle:#5c5f66;--dim-l-error:#c01743;--dim-l-comment:#4f6e42;--dim-l-keyword:#1a4fc0;--dim-l-string:#9a3a20;--dim-l-number:#1f7a4a;--dim-l-function:#6f5a12;--dim-l-type:#136b7a;--dim-l-variable:#123a9c;--dim-l-operator:#33353a;--dim-l-punctuation:#33353a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--dim-l-bg);--text:var(--dim-l-text);--border:var(--dim-l-border);--muted:var(--dim-l-muted);--status-running:var(--dim-l-running);--status-attention:var(--dim-l-attention);--status-idle:var(--dim-l-idle);--status-error:var(--dim-l-error);--syntax-comment:var(--dim-l-comment);--syntax-keyword:var(--dim-l-keyword);--syntax-string:var(--dim-l-string);--syntax-number:var(--dim-l-number);--syntax-function:var(--dim-l-function);--syntax-type:var(--dim-l-type);--syntax-variable:var(--dim-l-variable);--syntax-operator:var(--dim-l-operator);--syntax-punctuation:var(--dim-l-punctuation)}[data-theme=dim][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--dim-d-bg);--text:var(--dim-d-text);--border:var(--dim-d-border);--muted:var(--dim-d-muted);--status-running:var(--dim-d-running);--status-attention:var(--dim-d-attention);--status-idle:var(--dim-d-idle);--status-error:var(--dim-d-error);--syntax-comment:var(--dim-d-comment);--syntax-keyword:var(--dim-d-keyword);--syntax-string:var(--dim-d-string);--syntax-number:var(--dim-d-number);--syntax-function:var(--dim-d-function);--syntax-type:var(--dim-d-type);--syntax-variable:var(--dim-d-variable);--syntax-operator:var(--dim-d-operator);--syntax-punctuation:var(--dim-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=dim]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--dim-d-bg);--text:var(--dim-d-text);--border:var(--dim-d-border);--muted:var(--dim-d-muted);--status-running:var(--dim-d-running);--status-attention:var(--dim-d-attention);--status-idle:var(--dim-d-idle);--status-error:var(--dim-d-error);--syntax-comment:var(--dim-d-comment);--syntax-keyword:var(--dim-d-keyword);--syntax-string:var(--dim-d-string);--syntax-number:var(--dim-d-number);--syntax-function:var(--dim-d-function);--syntax-type:var(--dim-d-type);--syntax-variable:var(--dim-d-variable);--syntax-operator:var(--dim-d-operator);--syntax-punctuation:var(--dim-d-punctuation)}}[data-theme=solarized]{--sol-d-bg:#002b36;--sol-d-text:#93a1a1;--sol-d-border:#0a4b5a;--sol-d-muted:#839496;--sol-d-running:#859900;--sol-d-attention:#cb8b18;--sol-d-idle:#839496;--sol-d-error:#fa6459;--sol-d-comment:#7e9295;--sol-d-keyword:#6c8fd6;--sol-d-string:#2aa198;--sol-d-number:#b58900;--sol-d-function:#4a9fdb;--sol-d-type:#b58900;--sol-d-variable:#93a1a1;--sol-d-operator:#93a1a1;--sol-d-punctuation:#93a1a1;--sol-l-bg:#fdf6e3;--sol-l-text:#586e75;--sol-l-border:#e7e0cb;--sol-l-muted:#5b6f76;--sol-l-running:#567500;--sol-l-attention:#a35700;--sol-l-idle:#5b6f76;--sol-l-error:#c9412f;--sol-l-comment:#5e7272;--sol-l-keyword:#5d62bd;--sol-l-string:#147878;--sol-l-number:#8a6d00;--sol-l-function:#1f6fa8;--sol-l-type:#a35700;--sol-l-variable:#586e75;--sol-l-operator:#586e75;--sol-l-punctuation:#586e75;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--sol-l-bg);--text:var(--sol-l-text);--border:var(--sol-l-border);--muted:var(--sol-l-muted);--status-running:var(--sol-l-running);--status-attention:var(--sol-l-attention);--status-idle:var(--sol-l-idle);--status-error:var(--sol-l-error);--syntax-comment:var(--sol-l-comment);--syntax-keyword:var(--sol-l-keyword);--syntax-string:var(--sol-l-string);--syntax-number:var(--sol-l-number);--syntax-function:var(--sol-l-function);--syntax-type:var(--sol-l-type);--syntax-variable:var(--sol-l-variable);--syntax-operator:var(--sol-l-operator);--syntax-punctuation:var(--sol-l-punctuation)}[data-theme=solarized][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--sol-d-bg);--text:var(--sol-d-text);--border:var(--sol-d-border);--muted:var(--sol-d-muted);--status-running:var(--sol-d-running);--status-attention:var(--sol-d-attention);--status-idle:var(--sol-d-idle);--status-error:var(--sol-d-error);--syntax-comment:var(--sol-d-comment);--syntax-keyword:var(--sol-d-keyword);--syntax-string:var(--sol-d-string);--syntax-number:var(--sol-d-number);--syntax-function:var(--sol-d-function);--syntax-type:var(--sol-d-type);--syntax-variable:var(--sol-d-variable);--syntax-operator:var(--sol-d-operator);--syntax-punctuation:var(--sol-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=solarized]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--sol-d-bg);--text:var(--sol-d-text);--border:var(--sol-d-border);--muted:var(--sol-d-muted);--status-running:var(--sol-d-running);--status-attention:var(--sol-d-attention);--status-idle:var(--sol-d-idle);--status-error:var(--sol-d-error);--syntax-comment:var(--sol-d-comment);--syntax-keyword:var(--sol-d-keyword);--syntax-string:var(--sol-d-string);--syntax-number:var(--sol-d-number);--syntax-function:var(--sol-d-function);--syntax-type:var(--sol-d-type);--syntax-variable:var(--sol-d-variable);--syntax-operator:var(--sol-d-operator);--syntax-punctuation:var(--sol-d-punctuation)}}[data-theme=gruvbox]{--gruv-d-bg:#282828;--gruv-d-text:#ebdbb2;--gruv-d-border:#504945;--gruv-d-muted:#a89984;--gruv-d-running:#b8bb26;--gruv-d-attention:#fabd2f;--gruv-d-idle:#a89984;--gruv-d-error:#fc6a58;--gruv-d-comment:#a08f7d;--gruv-d-keyword:#fc6a58;--gruv-d-string:#b8bb26;--gruv-d-number:#d3869b;--gruv-d-function:#b8bb26;--gruv-d-type:#fabd2f;--gruv-d-variable:#83a598;--gruv-d-operator:#ebdbb2;--gruv-d-punctuation:#ebdbb2;--gruv-l-bg:#fbf1c7;--gruv-l-text:#3c3836;--gruv-l-border:#e6dcae;--gruv-l-muted:#665c54;--gruv-l-running:#557000;--gruv-l-attention:#a35a00;--gruv-l-idle:#665c54;--gruv-l-error:#9d0006;--gruv-l-comment:#6f6358;--gruv-l-keyword:#9d0006;--gruv-l-string:#557000;--gruv-l-number:#8f3f71;--gruv-l-function:#6d680c;--gruv-l-type:#97600f;--gruv-l-variable:#076678;--gruv-l-operator:#3c3836;--gruv-l-punctuation:#3c3836;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"JetBrains Mono", "IBM Plex Mono", "Courier New", monospace;--bg:var(--gruv-l-bg);--text:var(--gruv-l-text);--border:var(--gruv-l-border);--muted:var(--gruv-l-muted);--status-running:var(--gruv-l-running);--status-attention:var(--gruv-l-attention);--status-idle:var(--gruv-l-idle);--status-error:var(--gruv-l-error);--syntax-comment:var(--gruv-l-comment);--syntax-keyword:var(--gruv-l-keyword);--syntax-string:var(--gruv-l-string);--syntax-number:var(--gruv-l-number);--syntax-function:var(--gruv-l-function);--syntax-type:var(--gruv-l-type);--syntax-variable:var(--gruv-l-variable);--syntax-operator:var(--gruv-l-operator);--syntax-punctuation:var(--gruv-l-punctuation)}[data-theme=gruvbox][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--gruv-d-bg);--text:var(--gruv-d-text);--border:var(--gruv-d-border);--muted:var(--gruv-d-muted);--status-running:var(--gruv-d-running);--status-attention:var(--gruv-d-attention);--status-idle:var(--gruv-d-idle);--status-error:var(--gruv-d-error);--syntax-comment:var(--gruv-d-comment);--syntax-keyword:var(--gruv-d-keyword);--syntax-string:var(--gruv-d-string);--syntax-number:var(--gruv-d-number);--syntax-function:var(--gruv-d-function);--syntax-type:var(--gruv-d-type);--syntax-variable:var(--gruv-d-variable);--syntax-operator:var(--gruv-d-operator);--syntax-punctuation:var(--gruv-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=gruvbox]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--gruv-d-bg);--text:var(--gruv-d-text);--border:var(--gruv-d-border);--muted:var(--gruv-d-muted);--status-running:var(--gruv-d-running);--status-attention:var(--gruv-d-attention);--status-idle:var(--gruv-d-idle);--status-error:var(--gruv-d-error);--syntax-comment:var(--gruv-d-comment);--syntax-keyword:var(--gruv-d-keyword);--syntax-string:var(--gruv-d-string);--syntax-number:var(--gruv-d-number);--syntax-function:var(--gruv-d-function);--syntax-type:var(--gruv-d-type);--syntax-variable:var(--gruv-d-variable);--syntax-operator:var(--gruv-d-operator);--syntax-punctuation:var(--gruv-d-punctuation)}}[data-theme=qud]{--qud-d-bg:#0f3b3a;--qud-d-text:#d7e4de;--qud-d-border:#1f5b57;--qud-d-muted:#8fb3aa;--qud-d-running:#00c420;--qud-d-attention:#e99f10;--qud-d-idle:#8fb3aa;--qud-d-error:#ff8a70;--qud-d-comment:#8ab0a1;--qud-d-keyword:#3aa6ff;--qud-d-string:#cfc041;--qud-d-number:#e894e2;--qud-d-function:#3fd45f;--qud-d-type:#77bfcf;--qud-d-variable:#8fd0dd;--qud-d-operator:#b1c9c3;--qud-d-punctuation:#b1c9c3;--qud-l-bg:#e8efe9;--qud-l-text:#123b38;--qud-l-border:#cdddd6;--qud-l-muted:#3c655d;--qud-l-running:#0a6b1f;--qud-l-attention:#8a5400;--qud-l-idle:#3c655d;--qud-l-error:#b3341a;--qud-l-comment:#3f6a5e;--qud-l-keyword:#12489c;--qud-l-string:#7a6a00;--qud-l-number:#8f3a86;--qud-l-function:#0a6b1f;--qud-l-type:#0f6070;--qud-l-variable:#155352;--qud-l-operator:#123b38;--qud-l-punctuation:#123b38;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--qud-l-bg);--text:var(--qud-l-text);--border:var(--qud-l-border);--muted:var(--qud-l-muted);--status-running:var(--qud-l-running);--status-attention:var(--qud-l-attention);--status-idle:var(--qud-l-idle);--status-error:var(--qud-l-error);--syntax-comment:var(--qud-l-comment);--syntax-keyword:var(--qud-l-keyword);--syntax-string:var(--qud-l-string);--syntax-number:var(--qud-l-number);--syntax-function:var(--qud-l-function);--syntax-type:var(--qud-l-type);--syntax-variable:var(--qud-l-variable);--syntax-operator:var(--qud-l-operator);--syntax-punctuation:var(--qud-l-punctuation)}[data-theme=qud][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--qud-d-bg);--text:var(--qud-d-text);--border:var(--qud-d-border);--muted:var(--qud-d-muted);--status-running:var(--qud-d-running);--status-attention:var(--qud-d-attention);--status-idle:var(--qud-d-idle);--status-error:var(--qud-d-error);--syntax-comment:var(--qud-d-comment);--syntax-keyword:var(--qud-d-keyword);--syntax-string:var(--qud-d-string);--syntax-number:var(--qud-d-number);--syntax-function:var(--qud-d-function);--syntax-type:var(--qud-d-type);--syntax-variable:var(--qud-d-variable);--syntax-operator:var(--qud-d-operator);--syntax-punctuation:var(--qud-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=qud]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--qud-d-bg);--text:var(--qud-d-text);--border:var(--qud-d-border);--muted:var(--qud-d-muted);--status-running:var(--qud-d-running);--status-attention:var(--qud-d-attention);--status-idle:var(--qud-d-idle);--status-error:var(--qud-d-error);--syntax-comment:var(--qud-d-comment);--syntax-keyword:var(--qud-d-keyword);--syntax-string:var(--qud-d-string);--syntax-number:var(--qud-d-number);--syntax-function:var(--qud-d-function);--syntax-type:var(--qud-d-type);--syntax-variable:var(--qud-d-variable);--syntax-operator:var(--qud-d-operator);--syntax-punctuation:var(--qud-d-punctuation)}}[data-theme=vangogh]{--vg-d-bg:#0d1b3d;--vg-d-text:#f0e6c8;--vg-d-border:#2a3e6a;--vg-d-muted:#aab4d2;--vg-d-running:#8fbf6a;--vg-d-attention:#f5db37;--vg-d-idle:#aab4d2;--vg-d-error:#f07a52;--vg-d-comment:#8c96b8;--vg-d-keyword:#f5db37;--vg-d-string:#7fc5dc;--vg-d-number:#e0a95a;--vg-d-function:#5fb0e0;--vg-d-type:#c9b26a;--vg-d-variable:#a9c7ea;--vg-d-operator:#dad69f;--vg-d-punctuation:#dad69f;--vg-l-bg:#f4ecd2;--vg-l-text:#1a2a52;--vg-l-border:#e0d4ad;--vg-l-muted:#4a557d;--vg-l-running:#4a6b1f;--vg-l-attention:#855000;--vg-l-idle:#4a557d;--vg-l-error:#b03a1a;--vg-l-comment:#5a6488;--vg-l-keyword:#1a3a8c;--vg-l-string:#1f6f8c;--vg-l-number:#8a5a12;--vg-l-function:#2a4e93;--vg-l-type:#6a5a12;--vg-l-variable:#2a3e83;--vg-l-operator:#1a2a52;--vg-l-punctuation:#1a2a52;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--vg-l-bg);--text:var(--vg-l-text);--border:var(--vg-l-border);--muted:var(--vg-l-muted);--status-running:var(--vg-l-running);--status-attention:var(--vg-l-attention);--status-idle:var(--vg-l-idle);--status-error:var(--vg-l-error);--syntax-comment:var(--vg-l-comment);--syntax-keyword:var(--vg-l-keyword);--syntax-string:var(--vg-l-string);--syntax-number:var(--vg-l-number);--syntax-function:var(--vg-l-function);--syntax-type:var(--vg-l-type);--syntax-variable:var(--vg-l-variable);--syntax-operator:var(--vg-l-operator);--syntax-punctuation:var(--vg-l-punctuation)}[data-theme=vangogh][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--vg-d-bg);--text:var(--vg-d-text);--border:var(--vg-d-border);--muted:var(--vg-d-muted);--status-running:var(--vg-d-running);--status-attention:var(--vg-d-attention);--status-idle:var(--vg-d-idle);--status-error:var(--vg-d-error);--syntax-comment:var(--vg-d-comment);--syntax-keyword:var(--vg-d-keyword);--syntax-string:var(--vg-d-string);--syntax-number:var(--vg-d-number);--syntax-function:var(--vg-d-function);--syntax-type:var(--vg-d-type);--syntax-variable:var(--vg-d-variable);--syntax-operator:var(--vg-d-operator);--syntax-punctuation:var(--vg-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=vangogh]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--vg-d-bg);--text:var(--vg-d-text);--border:var(--vg-d-border);--muted:var(--vg-d-muted);--status-running:var(--vg-d-running);--status-attention:var(--vg-d-attention);--status-idle:var(--vg-d-idle);--status-error:var(--vg-d-error);--syntax-comment:var(--vg-d-comment);--syntax-keyword:var(--vg-d-keyword);--syntax-string:var(--vg-d-string);--syntax-number:var(--vg-d-number);--syntax-function:var(--vg-d-function);--syntax-type:var(--vg-d-type);--syntax-variable:var(--vg-d-variable);--syntax-operator:var(--vg-d-operator);--syntax-punctuation:var(--vg-d-punctuation)}}[data-theme=okabe]{--okabe-d-bg:#16181d;--okabe-d-text:#eceef2;--okabe-d-border:#363a42;--okabe-d-muted:#9ba1ab;--okabe-d-running:#56b4e9;--okabe-d-attention:#f0e442;--okabe-d-idle:#9ba1ab;--okabe-d-error:#f57a48;--okabe-d-comment:#8b95a3;--okabe-d-keyword:#56b4e9;--okabe-d-string:#4fc6a0;--okabe-d-number:#e08cc6;--okabe-d-function:#f0c04a;--okabe-d-type:#8fd4f0;--okabe-d-variable:#d7dbe1;--okabe-d-operator:#cdd2d9;--okabe-d-punctuation:#cdd2d9;--okabe-l-bg:#f6f6f3;--okabe-l-text:#1a1a1a;--okabe-l-border:#dcdcd6;--okabe-l-muted:#565b62;--okabe-l-running:#0067a3;--okabe-l-attention:#8a5a00;--okabe-l-idle:#565b62;--okabe-l-error:#b8430a;--okabe-l-comment:#4a5560;--okabe-l-keyword:#0067a3;--okabe-l-string:#077a5a;--okabe-l-number:#9a4a86;--okabe-l-function:#7a5500;--okabe-l-type:#0f6a86;--okabe-l-variable:#333;--okabe-l-operator:#1a1a1a;--okabe-l-punctuation:#1a1a1a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--okabe-l-bg);--text:var(--okabe-l-text);--border:var(--okabe-l-border);--muted:var(--okabe-l-muted);--status-running:var(--okabe-l-running);--status-attention:var(--okabe-l-attention);--status-idle:var(--okabe-l-idle);--status-error:var(--okabe-l-error);--syntax-comment:var(--okabe-l-comment);--syntax-keyword:var(--okabe-l-keyword);--syntax-string:var(--okabe-l-string);--syntax-number:var(--okabe-l-number);--syntax-function:var(--okabe-l-function);--syntax-type:var(--okabe-l-type);--syntax-variable:var(--okabe-l-variable);--syntax-operator:var(--okabe-l-operator);--syntax-punctuation:var(--okabe-l-punctuation)}[data-theme=okabe][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--okabe-d-bg);--text:var(--okabe-d-text);--border:var(--okabe-d-border);--muted:var(--okabe-d-muted);--status-running:var(--okabe-d-running);--status-attention:var(--okabe-d-attention);--status-idle:var(--okabe-d-idle);--status-error:var(--okabe-d-error);--syntax-comment:var(--okabe-d-comment);--syntax-keyword:var(--okabe-d-keyword);--syntax-string:var(--okabe-d-string);--syntax-number:var(--okabe-d-number);--syntax-function:var(--okabe-d-function);--syntax-type:var(--okabe-d-type);--syntax-variable:var(--okabe-d-variable);--syntax-operator:var(--okabe-d-operator);--syntax-punctuation:var(--okabe-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=okabe]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--okabe-d-bg);--text:var(--okabe-d-text);--border:var(--okabe-d-border);--muted:var(--okabe-d-muted);--status-running:var(--okabe-d-running);--status-attention:var(--okabe-d-attention);--status-idle:var(--okabe-d-idle);--status-error:var(--okabe-d-error);--syntax-comment:var(--okabe-d-comment);--syntax-keyword:var(--okabe-d-keyword);--syntax-string:var(--okabe-d-string);--syntax-number:var(--okabe-d-number);--syntax-function:var(--okabe-d-function);--syntax-type:var(--okabe-d-type);--syntax-variable:var(--okabe-d-variable);--syntax-operator:var(--okabe-d-operator);--syntax-punctuation:var(--okabe-d-punctuation)}}[data-theme=tol]{--tol-d-bg:#1b1d21;--tol-d-text:#e9eaec;--tol-d-border:#363a43;--tol-d-muted:#9a9ea6;--tol-d-running:#3fc0a8;--tol-d-attention:#d9c94a;--tol-d-idle:#9a9ea6;--tol-d-error:#f0687a;--tol-d-comment:#8a929c;--tol-d-keyword:#6ce;--tol-d-string:#4fc08a;--tol-d-number:#c9d;--tol-d-function:#eb5;--tol-d-type:#7fd0f0;--tol-d-variable:#d6d9de;--tol-d-operator:#cbcfd5;--tol-d-punctuation:#cbcfd5;--tol-l-bg:#f4f4f6;--tol-l-text:#1a1c22;--tol-l-border:#dadae0;--tol-l-muted:#565a62;--tol-l-running:#007a68;--tol-l-attention:#8a6a00;--tol-l-idle:#565a62;--tol-l-error:#c23346;--tol-l-comment:#565a62;--tol-l-keyword:#1a5a8c;--tol-l-string:#0a6a52;--tol-l-number:#8a3a77;--tol-l-function:#8a5a12;--tol-l-type:#0f6a86;--tol-l-variable:#2a2e83;--tol-l-operator:#1a1c22;--tol-l-punctuation:#1a1c22;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--tol-l-bg);--text:var(--tol-l-text);--border:var(--tol-l-border);--muted:var(--tol-l-muted);--status-running:var(--tol-l-running);--status-attention:var(--tol-l-attention);--status-idle:var(--tol-l-idle);--status-error:var(--tol-l-error);--syntax-comment:var(--tol-l-comment);--syntax-keyword:var(--tol-l-keyword);--syntax-string:var(--tol-l-string);--syntax-number:var(--tol-l-number);--syntax-function:var(--tol-l-function);--syntax-type:var(--tol-l-type);--syntax-variable:var(--tol-l-variable);--syntax-operator:var(--tol-l-operator);--syntax-punctuation:var(--tol-l-punctuation)}[data-theme=tol][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--tol-d-bg);--text:var(--tol-d-text);--border:var(--tol-d-border);--muted:var(--tol-d-muted);--status-running:var(--tol-d-running);--status-attention:var(--tol-d-attention);--status-idle:var(--tol-d-idle);--status-error:var(--tol-d-error);--syntax-comment:var(--tol-d-comment);--syntax-keyword:var(--tol-d-keyword);--syntax-string:var(--tol-d-string);--syntax-number:var(--tol-d-number);--syntax-function:var(--tol-d-function);--syntax-type:var(--tol-d-type);--syntax-variable:var(--tol-d-variable);--syntax-operator:var(--tol-d-operator);--syntax-punctuation:var(--tol-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=tol]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--tol-d-bg);--text:var(--tol-d-text);--border:var(--tol-d-border);--muted:var(--tol-d-muted);--status-running:var(--tol-d-running);--status-attention:var(--tol-d-attention);--status-idle:var(--tol-d-idle);--status-error:var(--tol-d-error);--syntax-comment:var(--tol-d-comment);--syntax-keyword:var(--tol-d-keyword);--syntax-string:var(--tol-d-string);--syntax-number:var(--tol-d-number);--syntax-function:var(--tol-d-function);--syntax-type:var(--tol-d-type);--syntax-variable:var(--tol-d-variable);--syntax-operator:var(--tol-d-operator);--syntax-punctuation:var(--tol-d-punctuation)}}
|