@dreb/dashboard 2.60.1 → 2.61.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.
|
@@ -66,14 +66,14 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
|
|
|
66
66
|
`).length}function ic(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(`
|
|
67
67
|
`)}function ac(e){return e.match(/^\/skill:([\w-]+)/)?.[1]}function oc(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 sc=new Set([`subagent`,`skill`,`web_fetch`]);function cc(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:Qs($s(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 lc(e){return(()=>{var t=gs();return Z(t,W(G,{get each(){return e.text.split(`
|
|
68
68
|
`)},children:e=>[(()=>{var t=_s();return Z(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})(),`
|
|
69
|
-
`]})),t})()}function uc(e){if(e.toolName!==`edit`)return;let t=e.details?.diff;return typeof t==`string`?t:void 0}var dc=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]),fc=/^[0-9a-f]{64}$/,pc=1024*1024;function mc(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:e>=1024?`${Math.ceil(e/1024)} KB`:`${e} B`}var hc={alt:`Tool result`,originalAriaLabel:`Original tool-result image`,enlargedAlt:`Enlarged tool-result preview`},gc={alt:`Uploaded image`,originalAriaLabel:`Original uploaded image`,enlargedAlt:`Enlarged uploaded-image preview`};function _c(e){let[t,n]=k(),[r,i]=k(),[a,o]=k(),[s,c]=k(!1),l=t=>gt(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=cs();c(!1),o(void 0),e===`previews`?u(`preview`):e===`originals`?u(`original`):(n(void 0),i(void 0))});let d=()=>{e.image.size>pc&&!window.confirm(`Load the ${mc(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=bs(),f=l.firstChild,p=f.firstChild,m=p.firstChild;return Z(l,W(K,{get when(){return t()},get fallback(){return(()=>{var t=xs(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return Z(n,()=>e.image.mimeType.replace(`image/`,``).toUpperCase(),r),Z(n,()=>mc(e.image.size),null),i.$$click=()=>u(`preview`),Z(i,()=>a()?`retry preview`:`load preview`),t})()},children:t=>(()=>{var a=Ss(),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&&X(a,`aria-label`,n.t=o),c!==n.a&&X(s,`alt`,n.a=c),l!==n.o&&X(s,`src`,n.o=l),n},{e:void 0,t:void 0,a:void 0,o:void 0}),a})()}),f),Z(p,()=>e.image.mimeType.replace(`image/`,``).toUpperCase(),m),Z(p,()=>mc(e.image.size),null),Z(f,W(K,{get when(){return r()!==`original`},get children(){var t=vs();return t.firstChild,t.$$click=d,Z(t,()=>mc(e.image.size),null),t}}),null),Z(l,W(K,{get when(){return a()},children:e=>(()=>{var t=Cs();return Z(t,e),t})()}),null),Z(l,W(K,{get when(){return J(()=>!!(s()&&r()===`preview`))()&&t()},get children(){var n=ys(),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&&X(i,`src`,n.e=r),a!==n.t&&X(i,`alt`,n.t=a),n},{e:void 0,t:void 0}),n}}),null),l})()}function vc(e){let t=()=>e.images.filter(e=>dc.has(e.mimeType)&&fc.test(e.id)&&Number.isSafeInteger(e.size)&&e.size>0);return W(K,{get when(){return t().length>0},get children(){var n=ws();return Z(n,W(G,{get each(){return t()},children:t=>W(_c,{image:t,get scope(){return e.scope},get labels(){return e.labels}})})),n}})}function yc(e){let[t,n]=k(!1),r=()=>e.text.length>qs;M(()=>{r()||n(!1)});let i=()=>r()&&!t()?e.text.slice(-204800):e.text;return[W(K,{get when(){return J(()=>!!r())()&&!t()},get children(){var t=Ts(),r=t.firstChild.nextSibling,i=r.nextSibling.nextSibling,a=i.nextSibling.nextSibling,o=a.firstChild.nextSibling;return o.nextSibling,Z(t,()=>Xs(qs),r),Z(t,()=>Xs(e.text.length),i),a.$$click=()=>n(!0),Z(a,()=>Xs(e.text.length),o),t}}),W(K,{get when(){return e.markdown},get fallback(){return W(tc,{get text(){return i()},get language(){return e.language},get autoScroll(){return e.autoScroll},get throttle(){return e.throttle}})},get children(){return W(Zs,{get text(){return i()},get throttle(){return e.throttle}})}})]}function bc(e){let t=()=>oc(e.entry),n=()=>e.entry.args,r=()=>{if(e.entry.toolName===`suggest_next`)return e.entry.details},i=()=>uc(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 Qs($s(n()))},s=()=>sc.has(e.entry.toolName)&&e.entry.status!==`error`,c=()=>e.entry.toolName===`bash`||e.entry.toolName===`bash (user)`,l=()=>cc(e.entry),u=()=>fs(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=Os(),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)}),Z(m,()=>e.entry.toolName),Z(v,()=>nc(e.entry)),Z(y,()=>t().text),Z(u,W(K,{get when(){return f()},get children(){return[W(K,{get when(){return e.entry.toolName===`bash`||e.entry.toolName===`bash (user)`},get children(){var e=Es(),t=e.firstChild;return Z(t,()=>String(n()?.command??``)),e}}),W(G,{get each(){return l()},children:e=>(()=>{var t=ks(),n=t.firstChild;return Z(n,()=>e.label),Z(t,W(K,{get when(){return e.markdown},get fallback(){return W(tc,{get text(){return e.text},get language(){return e.language}})},get children(){return W(Zs,{get text(){return e.text}})}}),null),t})()}),W(K,{get when(){return e.entry.images?.length},get children(){var t=Ds();return Z(t,W(vc,{get images(){return e.entry.images},get scope(){return e.imageScope},labels:hc})),t}}),W(Te,{get children(){return[W(q,{get when(){return r()},children:e=>(()=>{var t=As(),n=t.firstChild,r=n.firstChild.nextSibling;return Z(t,W(K,{get when(){return e().summary},get children(){return W(Zs,{get text(){return e().summary}})}}),n),Z(r,()=>e().suggestion),t})()}),W(q,{get when(){return i()},children:e=>(()=>{var t=Ds();return Z(t,W(lc,{get text(){return e()}})),t})()}),W(q,{get when(){return a()},children:t=>(()=>{var n=Ds();return Z(n,W(yc,{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&&Ae(y,e.t=r),e},{e:void 0,t:void 0}),u})()}function xc(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=js();return n.$$click=r,Z(n,(()=>{var e=J(()=>t()===`copied`);return()=>e()?`copied`:t()===`failed`?`copy failed`:`copy`})()),j(()=>n.disabled=!e.text),n})()}function Sc(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=Ps(),r=n.firstChild,i=r.firstChild;return Z(i,()=>e.who),Z(r,W(K,{get when(){return e.entry.model},get children(){return[Ms(),(()=>{var t=_s();return Z(t,()=>e.entry.model),t})()]}}),null),Z(r,W(K,{get when(){return e.entry.streaming},get children(){return[Ms(),Ns()]}}),null),Z(r,W(xc,{get text(){return ic(e.entry)}}),null),Z(n,W(G,{get each(){return t()},children:(n,r)=>W(K,{get when(){return n.kind===`thinking`},get fallback(){return(()=>{var i=Is();return Z(i,W(Zs,{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=Fs();return t.firstChild,Z(t,W(Zs,{get text(){return n.text},class:`thinking-body markdown-body`,get throttle(){return e.entry.streaming}}),null),j(()=>t.open=ss()),t}})}),null),Z(n,W(K,{get when(){return J(()=>e.entry.stopReason===`error`)()&&e.entry.errorMessage},children:e=>(()=>{var t=Ls();return t.firstChild,Z(t,e,null),t})()}),null),n})()}function Cc(e,t){return e?.kind===`entry`&&e.entry===t}function wc(e){let[t,n]=k(e);return{kind:`assistant-turn`,lead:e[0],entries:t,setEntries:n}}function Tc(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(wc(a));continue}if(i){let e=t[n.length];n.push(Cc(e,i)?e:{kind:`entry`,entry:i})}r+=1}return n}function Ec(e){return W(Te,{get children(){return[W(q,{get when(){return e.entry.kind===`user`},get children(){var t=Rs(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return Z(n,W(K,{get when(){return ac(e.entry.text)},children:e=>(()=>{var t=Vs();return t.firstChild,Z(t,e,null),t})()}),r),Z(n,W(xc,{get text(){return ic(e.entry)}}),r),Z(r,()=>e.userLabel),Z(i,()=>e.entry.text),Z(t,W(K,{get when(){return e.entry.images?.length},get children(){return W(vc,{get images(){return e.entry.images},get scope(){return e.imageScope},labels:gc})}}),null),t}}),W(q,{get when(){return e.entry.kind===`agent-result`},get children(){return W(Dc,{get entry(){return e.entry}})}}),W(q,{get when(){return e.entry.kind===`assistant`},get children(){return W(Sc,{get entry(){return e.entry},get who(){return e.who}})}}),W(q,{get when(){return e.entry.kind===`tool`},get children(){return W(bc,{get entry(){return e.entry},get imageScope(){return e.imageScope}})}}),W(q,{get when(){return e.entry.kind===`summary`},get children(){var t=zs(),n=t.firstChild.firstChild,r=n.nextSibling;return Z(n,()=>e.entry.label===`compaction`?`context compacted`:`branch summary`,null),Z(n,W(K,{get when(){return e.entry.tokensBefore},get children(){return[` `,`— `,J(()=>e.entry.tokensBefore.toLocaleString()),` tokens summarized`]}}),null),Z(r,()=>e.entry.text),t}}),W(q,{get when(){return e.entry.kind===`custom`},get children(){var t=Bs(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return Z(r,()=>e.entry.tag),Z(i,()=>e.entry.text),t}})]}})}function Dc(e){return(()=>{var t=Us(),n=t.firstChild,r=n.firstChild;return r.firstChild,Z(r,W(K,{get when(){return e.entry.header},get children(){var t=Hs();return Z(t,()=>e.entry.header),t}}),null),Z(n,W(Zs,{get text(){return e.entry.text},class:`entry-body markdown-body`}),null),t})()}function Oc(e){let t=()=>e.who??`dreb`,n=()=>e.userLabel??`you`,r=()=>e.imageScope??{runtimeKey:``},i=N(t=>Tc(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[W(K,{get when(){return l()>0},get children(){var e=Ws(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;return r.nextSibling,t.$$click=()=>o(Math.min(i().length,a()+150)),Z(t,()=>Math.min(150,l()),n),Z(t,l,r),e}}),W(G,{get each(){return c()},children:e=>W(Te,{get children(){return[W(q,{get when(){return e.kind===`assistant-turn`},get children(){var i=Gs();return Z(i,W(G,{get each(){return e.entries()},children:e=>W(Ec,{entry:e,get who(){return t()},get userLabel(){return n()},get imageScope(){return r()}})})),i}}),W(q,{get when(){return e.kind===`entry`},get children(){return W(Ec,{get entry(){return e.entry},get who(){return t()},get userLabel(){return n()},get imageScope(){return r()}})}})]}})})]}ke([`click`]);var kc=Y(`<p class=settings-error>`),Ac=Y(`<p class=settings-success>`),jc=Y(`<button type=button class=memory-nav-item><span>MEMORY.md</span><small>complete editable index`),Mc=Y(`<div class=context-trust-warning><strong>Complete index warning:</strong> MEMORY.md is over 200 lines. The dashboard shows the full file for repair, while the agent prompt may only load the indexed prefix.`),Nc=Y(`<div class=screen-fill><main class="container memories-screen"><div class=memories-head><div><h1>Memories</h1><p class=scope-note>Edit dreb memory only: global ~/.dreb/memory plus known project .dreb/memory scopes. Claude memory paths are never included.</p></div><button type=button class=btn>refresh</button></div><div class=memories-layout><aside class=memories-sidebar><section class=memory-panel><h2>Scopes</h2></section><section class=memory-panel><h2>Documents</h2></section></aside><section class=memory-editor>`),Pc=Y(`<p class=muted>loading scopes…`),Fc=Y(`<p class=muted>No active dreb memory scopes.`),Ic=Y(`<button type=button class=memory-nav-item><span></span><small>`),Lc=Y(`<p class=muted>loading documents…`),Rc=Y(`<p class=muted>Memory directory is missing; nothing to edit.`),zc=Y(`<p class=muted>MEMORY.md index missing.`),Bc=Y(`<p class=muted>No memory entries.`),Vc=Y(`<output class=memory-loading>loading selected memory…`),Hc=Y(`<p class=muted>Select an existing memory document.`),Uc=Y(`<button type=button class="btn btn-danger">delete entry`),Wc=Y(`<div class=memory-doc-head><div><h2></h2><p class=scope-note> · revision </p></div><div class=head-actions><button type=button class=btn>reload`),Gc=Y(`<p class=settings-error>Metadata error: `),Kc=Y(`<div class=memory-edit-actions><button type=button class="btn btn-primary"></button><button type=button class=btn>revert draft</button><span class=muted>`),qc=Y(`<textarea class=memory-textarea>`),Jc=Y(`<details class=memory-preview open><summary>preview`),Yc=Y(`<div class=memory-metadata><strong></strong><span></span><span>`),Xc=Y(`<p>This deletes the entry file and first removes matching <code>[…](<!>)</code> or <code>[…](./<!>)</code> lines from MEMORY.md. If the index changed, deletion will fail with a conflict instead of leaving a dangling link.`),Zc=Y(`<button type=button class=btn>cancel`),Qc=Y(`<button type=button class="btn btn-danger">`),$c=`MEMORY.md`;function el(e){return e.metadata?`${e.metadata.name} · ${e.metadata.type}`:e.metadataError?`metadata error: ${e.metadataError}`:`metadata unavailable`}function tl(e,t){return e?e.kind===`index`?`MEMORY.md index`:e.metadata?.name??e.file:t??`memory`}function nl(e){if(e)return e.indexContent===null?e.entries[0]?.file:$c}function rl(e,t){if(!e||!t)return;let n;try{n=decodeURIComponent(e)}catch{return}if(n.startsWith(`./`)&&(n=n.slice(2)),!(!n||n.includes(`/`)||n.includes(`\\`)||n.includes(`?`)||n.includes(`#`)))return t.entries.some(e=>e.file===n)?n:void 0}function il(e){let[t,n]=k(),[r,i]=k(),[a,o]=k(),[s,c]=k(),[l,u]=k(``),[d,f]=k(!1),[p,m]=k(!1),[h,g]=k(),[_,{refetch:v}]=F(async()=>{try{return(await $.memoryScopes()).scopes}catch(e){return o(e instanceof Error?e.message:String(e)),[]}});M(()=>{let e=_();if(!e?.length)return;let r=t();(!r||!e.some(e=>e.id===r))&&n(e[0].id)});let[y,{mutate:b,refetch:x}]=F(()=>t(),async e=>{o(void 0),c(void 0);try{return await $.memoryListing(e)}catch(e){o(e instanceof Error?e.message:String(e));return}});M(()=>{let e=y();if(!e)return;let t=r(),n=new Set([...e.indexContent===null?[]:[$c],...e.entries.map(e=>e.file)]);(!t||!n.has(t))&&i(nl(e))});let[S,{mutate:C,refetch:w}]=F(()=>{let e=t(),n=r();return e&&n?{scopeId:e,file:n}:void 0},async e=>{o(void 0),c(void 0);try{return await $.memoryDocument(e.scopeId,e.file)}catch(e){o(e instanceof Error?e.message:String(e));return}});M(()=>{let e=S();!e||d()||u(e.content)});function T(e){t()!==e.id&&I(()=>{i(void 0),n(e.id),C(void 0),f(!1),u(``)})}function E(e){r()!==e&&(i(e),C(void 0),f(!1),u(``))}function D(e){let t=e.target?.closest(`a`);if(!(t instanceof HTMLAnchorElement))return;let n=rl(t.getAttribute(`href`),y());n&&(e.preventDefault(),E(n))}async function O(){await v(),await x(),r()&&await w()}async function A(){let e=t(),n=S();if(!(!e||!n)){m(!0),o(void 0),c(void 0);try{let t=await $.saveMemoryDocument(e,n.file,l(),n.revision);b(t.listing),t.document&&C(t.document),u(t.document?.content??l()),f(!1),c(`saved`)}catch(e){o(e?.status===409?`${e.message} Your draft is still here.`:e instanceof Error?e.message:String(e))}finally{m(!1)}}}async function N(){let e=t(),n=h(),r=y();if(!(!e||!n||n.kind!==`entry`||!r)){m(!0),o(void 0),c(void 0);try{let t=await $.deleteMemoryEntry(e,n.file,n.revision,r.indexRevision);b(t.listing),C(void 0),g(void 0),i(nl(t.listing)),f(!1),u(``),c(`deleted ${n.file}; index links cleaned up`)}catch(e){o(e instanceof Error?e.message:String(e))}finally{m(!1)}}}return(()=>{var n=Nc(),i=n.firstChild,o=i.firstChild,c=o.firstChild.nextSibling,m=o.nextSibling,v=m.firstChild,b=v.firstChild;b.firstChild;var x=b.nextSibling;x.firstChild;var C=v.nextSibling;return Z(n,W(it,{get store(){return e.store},active:`memories`}),i),c.$$click=()=>void O(),Z(i,W(K,{get when(){return a()},get children(){var e=kc();return Z(e,a),e}}),m),Z(i,W(K,{get when(){return s()},get children(){var e=Ac();return Z(e,s),e}}),m),Z(b,W(K,{get when(){return!_.loading},get fallback(){return Pc()},get children(){return W(K,{get when(){return(_()??[]).length>0},get fallback(){return Fc()},get children(){return W(G,{get each(){return _()??[]},children:e=>(()=>{var n=Ic(),r=n.firstChild,i=r.nextSibling;return n.$$click=()=>T(e),Z(r,(()=>{var t=J(()=>e.kind===`global`);return()=>t()?`global`:e.label})()),Z(i,(()=>{var t=J(()=>!!e.exists);return()=>t()?e.memoryDir:`${e.memoryDir} (missing)`})()),j(()=>n.classList.toggle(`active`,t()===e.id)),n})()})}})}}),null),Z(x,W(K,{get when(){return!y.loading},get fallback(){return Lc()},get children(){return W(K,{get when(){return y()?.scope.exists},get fallback(){return Rc()},get children(){return[W(K,{get when(){return y()?.indexContent!==null},get fallback(){return zc()},get children(){var e=jc();return e.$$click=()=>E($c),j(()=>e.classList.toggle(`active`,r()===$c)),e}}),W(K,{get when(){return(y()?.entries.length??0)>0},get fallback(){return Bc()},get children(){return W(G,{get each(){return y()?.entries??[]},children:e=>(()=>{var t=Ic(),n=t.firstChild,i=n.nextSibling;return t.$$click=()=>E(e.file),Z(n,()=>e.file),Z(i,()=>el(e)),j(n=>{var i=r()===e.file,a=!!e.metadataError;return i!==n.e&&t.classList.toggle(`active`,n.e=i),a!==n.t&&t.classList.toggle(`error`,n.t=a),n},{e:void 0,t:void 0}),t})()})}})]}})}}),null),Z(C,W(K,{get when(){return J(()=>!y.loading)()&&!S.loading},get fallback(){return Vc()},get children(){return[W(K,{get when(){return y()?.indexOverLimit},get children(){return Mc()}}),W(K,{get when(){return S()},get fallback(){return Hc()},children:e=>[(()=>{var t=Wc(),n=t.firstChild,i=n.firstChild,a=i.nextSibling,o=a.firstChild,s=n.nextSibling,c=s.firstChild;return Z(i,()=>tl(e(),r())),Z(a,()=>e().file,o),Z(a,()=>e().revision.slice(0,12),null),c.$$click=()=>void w(),Z(s,W(K,{get when(){return e().kind===`entry`},get children(){var t=Uc();return t.$$click=()=>g(e()),t}}),null),j(()=>c.disabled=S.loading),t})(),W(K,{get when(){return e().metadata},children:e=>(()=>{var t=Yc(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling;return Z(n,()=>e().name),Z(r,()=>e().type),Z(i,()=>e().description),t})()}),W(K,{get when(){return e().metadataError},get children(){var t=Gc();return t.firstChild,Z(t,()=>e().metadataError,null),t}}),(()=>{var t=Kc(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling;return n.$$click=()=>void A(),Z(n,()=>p()?`saving…`:`save`),r.$$click=()=>{u(e().content),f(!1)},Z(i,()=>d()?`unsaved draft`:`saved revision loaded`),j(e=>{var t=!d()||p(),i=!d()||p();return t!==e.e&&(n.disabled=e.e=t),i!==e.t&&(r.disabled=e.t=i),e},{e:void 0,t:void 0}),t})(),(()=>{var t=qc();return t.$$input=t=>{u(t.currentTarget.value),f(t.currentTarget.value!==e().content)},j(()=>t.value=l()),t})(),(()=>{var e=Jc();return e.firstChild,e.$$keydown=e=>{e.key===`Enter`&&D(e)},e.$$click=D,Z(e,W(Zs,{get text(){return l()},throttle:!0}),null),e})()]})]}})),Z(i,W(K,{get when(){return h()},children:e=>W(ot,{get title(){return`Delete ${e().file}?`},onDismiss:()=>g(void 0),get actions(){return[(()=>{var e=Zc();return e.$$click=()=>g(void 0),e})(),(()=>{var e=Qc();return e.$$click=()=>void N(),Z(e,()=>p()?`deleting…`:`delete entry`),j(()=>e.disabled=p()),e})()]},get children(){var t=Xc(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling;r.nextSibling;var i=n.nextSibling.nextSibling,a=i.firstChild.nextSibling;return a.nextSibling,Z(n,()=>e().file,r),Z(i,()=>e().file,a),t}})}),null),j(e=>{var t=_.loading||y.loading,n=y.loading||S.loading;return t!==e.e&&(c.disabled=e.e=t),n!==e.t&&X(C,`aria-busy`,e.t=n),e},{e:void 0,t:void 0}),n})()}ke([`click`,`input`,`keydown`]);var al=Y(`<p class=pair-error>`),ol=Y(`<main class=pair-card><span class=wordmark>dreb</span><h1>pair this device</h1><p class=sub>First login from a new device needs the current pairing code.</p><div class=identity><span class=row-line><span class=k>tailscale identity</span><span></span></span><span class=row-line><span class=k>allowlist</span><span class="chip chip-running"style=align-self:flex-end><span class=dot>●</span> allowed</span></span></div><div class=field><label for=pairing-pin>6-digit code</label><input id=pairing-pin class=pin-input type=text inputmode=numeric maxlength=6 autocomplete=one-time-code></div><p class=pin-hint>The code is shown in the dashboard <strong>Settings tab on the host machine</strong>. It rotates every 30 seconds.</p><div class=pair-actions><button type=button class="btn btn-primary"></button></div><div class=security-note><p><strong>Why a PIN?</strong> Your network identity got you here, but identity alone doesn't grant control. The code proves you can see the host machine's local dashboard — so a stolen or shared allowlist entry can't quietly gain access.</p><p><strong>What pairing grants.</strong> This browser gets a signed cookie for this host. It can chat with agents, run commands through them, browse the host's files, and upload/download — the same power as sitting at the terminal. Unpair anytime from settings → devices.`),sl=Y(`<div class=pair-wrap>`),cl=Y(`<p class="muted small">rejected identity: `),ll=Y(`<main class=denied-card><span class=wordmark>dreb</span><h1>access denied</h1><p></p><p class="muted small">If this device should have access, add its Tailscale identity to the dashboard allowlist on the host and reload.`);function ul(e){let[t,n]=k(``),[r,i]=k(),[a,o]=k(!1),s=()=>e.store.auth(),c=()=>s()?.error&&!s()?.needsPairing,l=()=>typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 700px)`).matches;async function u(){o(!0),i(void 0);try{await $.pair(t()),await e.store.start(),e.store.navigate({screen:`fleet`})}catch(e){i(e instanceof Error?e.message:String(e))}finally{o(!1)}}return(()=>{var e=sl();return Z(e,W(K,{get when(){return!c()},get fallback(){return(()=>{var e=ll(),t=e.firstChild.nextSibling.nextSibling,n=t.nextSibling;return Z(t,()=>s()?.error),Z(e,W(K,{get when(){return s()?.identity},get children(){var e=cl();return e.firstChild,Z(e,()=>s().identity,null),e}}),n),e})()},get children(){var e=ol(),i=e.firstChild.nextSibling.nextSibling.nextSibling,o=i.firstChild,c=o.firstChild.nextSibling;o.nextSibling.firstChild.nextSibling;var d=i.nextSibling,f=d.firstChild.nextSibling,p=d.nextSibling.nextSibling,m=p.firstChild;return Z(c,()=>s()?.identity??`unknown`),f.$$keydown=e=>{e.key===`Enter`&&t().length===6&&!l()&&u()},f.$$input=e=>n(e.currentTarget.value.replace(/\D/g,``).slice(0,6)),Z(e,W(K,{get when(){return r()},get children(){var e=al();return Z(e,r),e}}),p),m.$$click=u,Z(m,()=>a()?`pairing…`:`pair device`),j(()=>m.disabled=t().length!==6||a()),j(()=>f.value=t()),e}})),e})()}ke([`input`,`keydown`,`click`]);function dl(e,t){let n=e.trim(),r=/^\/([^\s]+)(?:\s+([\s\S]*))?$/.exec(n);if(!r)return;let i=t.find(e=>e.source===`builtin`&&e.name===r[1]);if(i)return{command:i,args:(r[2]??``).trim()}}async function fl(e,t,n){let r=t[e.command.name];if(r){await r(e.args);return}if(e.command.dashboard===!1){n(`/${e.command.name} is available only in the terminal UI.`);return}n(`/${e.command.name} isn't implemented in the dashboard yet — use the terminal UI.`)}function pl(e,t,n=8){let r=new Map;for(let t of e)(!r.get(t.name)||t.source===`builtin`)&&r.set(t.name,t);return[...r.values()].filter(e=>e.source!==`builtin`||e.dashboard!==!1).filter(e=>{let n=e.name.toLowerCase();return!t||n.startsWith(t)||n.includes(t)}).sort((e,n)=>{let r=e.name.toLowerCase(),i=n.name.toLowerCase();return(t?+!r.startsWith(t):+(e.source===`builtin`))-(t?+!i.startsWith(t):+(n.source===`builtin`))||e.name.localeCompare(n.name)}).slice(0,n)}function ml(e,t){return Math.max(120,Math.floor((e||800)*(t?.26:.4)))}function hl(e){return typeof DOMException<`u`&&e instanceof DOMException&&e.name===`AbortError`?!0:typeof e==`object`&&!!e&&`name`in e&&e.name===`AbortError`}var gl=new Map,_l=new Map;function vl(e){return _l.get(e)}function yl(e,t){_l.set(e,t)}function bl(e){return gl.get(e)??[]}function xl(e,t){let n=gl.get(e)??[];n.push(t),gl.set(e,n.slice(-100))}function Sl(e){gl.delete(e),_l.delete(e)}var Cl=Y(`<p style=margin-bottom:12px>`),wl=Y(`<div class=recent-projects>`),Tl=Y(`<div class=field><input type=text>`),El=Y(`<div class=field><textarea rows=8>`),Dl=Y(`<button type=button class="btn btn-small">cancel`),Ol=Y(`<button type=button class="btn btn-small btn-primary">confirm`),kl=Y(`<button type=button class="btn btn-small btn-primary">submit`),Al=Y(`<button type=button>`),jl=Y(`<h4 class=ask-question-title>`),Ml=Y(`<fieldset class=ask-options><legend class=ask-options-legend>Answer options`),Nl=Y(`<textarea rows=5>`),Pl=Y(`<div class="field ask-custom-field"><label class=ask-custom-label>`),Fl=Y(`<div class=ask-actions><button type=button class="btn btn-small btn-danger"></button><button type=button class="btn btn-small btn-primary">submit`),Il=Y(`<div class=ask-question role=tabpanel>`),Ll=Y(`<span class=ask-option-check>✔`),Rl=Y(`<label class=ask-option><span class=ask-option-index></span><input><span class=ask-option-label>`),zl=Y(`<input type=text placeholder="Type a different answer…">`),Bl=Y(`<span class=ask-wizard-countdown> (auto-stops in <!>s)`),Vl=Y(`<div class=ask-tab-strip role=tablist aria-label=questions><button type=button role=tab class="ask-tab ask-tab-submit">Submit`),Hl=Y(`<div class=ask-tab-panel><div class=ask-review role=tabpanel><ul class=ask-review-list></ul><div class=ask-actions><button type=button class="btn btn-small btn-danger"></button><button type=button class="btn btn-small btn-primary">Submit all`),Ul=Y(`<section class=ask-wizard><header class=ask-wizard-header><span class=ask-wizard-title>`),Wl=Y(`<span class=ask-tab-check role=img aria-label=answered>✓`),Gl=Y(`<button type=button role=tab class=ask-tab>. `),Kl=Y(`<div class=ask-tab-panel>`),ql=Y(`<li class=ask-review-item><span class=ask-review-question>`),Jl=Y(`<span class="ask-review-answer muted">(unanswered)`),Yl=Y(`<span class=ask-review-answer>`),Xl=Y(`<ul>`),Zl=Y(`<section class=context-section><h3>`),Ql=Y(`<p class="muted small">none`),$l=Y(`<p class=pair-error>`),eu=Y(`<p class="muted small">loading…`),tu=Y(`<p class="muted small">system prompt: custom`),nu=Y(`<div class=context-modal-body>`),ru=Y(`<li>`),iu=Y(`<span class=muted> — `),au=Y(`<li><span>`),ou=Y(`<li><span></span><span class=muted> — `),su=Y(`<div class=model-scope-tabs role=tablist aria-label="model scope"><button type=button role=tab>scoped</button><button type=button role=tab>all`),cu=Y(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),lu=Y(`<div class="model-list session-model-list"style=max-height:320px>`),uu=Y(`<p class="muted small">No matching models.`),du=Y(`<section class=model-provider-group><div class=model-provider-heading>`),fu=Y(`<span class=model-name>`),pu=Y(`<span class=model-reasoning>think`),mu=Y(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),hu=Y(`<div class=fork-message-list>`),gu=Y(`<p class="muted small">`),_u=Y(`<span class="muted small">current`),vu=Y(`<button type=button class=fork-message><span class=fork-entry-id></span><span>`),yu=Y(`<button type=button class=fork-message><span></span><span class="muted small"> messages`),bu=Y(`<p class="muted small">Replace the current session with a JSONL session file.`),xu=Y(`<div class=field><input type=text placeholder=/path/to/session.jsonl>`),Su=Y(`<button type=button class="btn btn-small btn-primary">import and replace`),Cu=Y(`<span class=project>`),wu=Y(`<output class=switcher><span class=label>ctx</span> `),Tu=Y(`<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>⋯`),Eu=Y(`<div class=stats-popover>`),Du=Y(`<div class="session-bar-inner session-info-bar"><span class=session-info-left></span><button type=button class="session-info-right stats-trigger">`),Ou=Y(`<button type=button class="btn btn-small">model: `),ku=Y(`<button type=button class="btn btn-small">think: `),Au=Y(`<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">`),ju=Y(`<span class=dock-collapsed-hint>`),Mu=Y(`<details class=tasks><summary>tasks — <!> of <!> done</summary><ul>`),Nu=Y(`<details class="tasks subagents"><summary>subagents — <!> running · <!> done</summary><ul class=subagent-list>`),Pu=Y(`<span class=working>● working`),Fu=Y(`<button type=button class="btn btn-small btn-danger">`),Iu=Y(`<div class=status-line>`),Lu=Y(`<div class=dock-panels>`),Ru=Y(`<div class=queued-message-row><button type=button class="btn btn-small">restore to composer`),zu=Y(`<div class=attachment-strip>`),Bu=Y(`<div class=command-popover role=listbox id=command-listbox aria-label="slash commands">`),Vu=Y(`<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`),Hu=Y(`<button type=button class=ghost-suggest>suggested: <code></code> <span class=key>tap`),Uu=Y(`<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 ↵`),Wu=Y(`<div class=dock-inner>`),Gu=Y(`<p>Summarize older context to free window space. The transcript keeps a summary card.`),Ku=Y(`<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>`),qu=Y(`<span>`),Ju=Y(`<p class="muted small">loading stats…`),Yu=Y(`<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>$`),Xu=Y(`<p class=muted>loading transcript…`),Zu=Y(`<div class=widget-block>`),Qu=Y(`<li> `),$u=Y(`<li><button type=button class=agent-chip title="view this subagent's session"><span></span><span class=task> — `),ed=Y(`<button type=button class="btn btn-small btn-danger inline-stop">stop `),td=Y(`<div class=readonly-note>This session is closed; its transcript is read-only.`),nd=Y(`<span class=queued-chip><span class=queued-kind>`),rd=Y(`<span class=attachment-file><span>📎 </span><span class=muted></span><button type=button aria-label="remove file attachment">×`),id=Y(`<span class=attachment-thumb><img><button type=button aria-label="remove image">×`),ad=Y(`<span class=command-description>`),od=Y(`<button type=button role=option class=command-option><span class=command-name>/</span><span class=command-source>`),sd=Y(`<button type=button class="btn btn-small btn-primary">compact`),cd=Y(`<p class="muted small">loading forkable messages…`),ld=Y(`<button type=button class="btn btn-small btn-primary">rename`),ud=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],dd=10*1024*1024,fd=`.dreb-dashboard-uploads`;function pd(e){return e?`${e.provider}/${e.id}`:`—`}function md(e){if(!e)return`—`;let t=`${e.provider}/${e.id}`;return e.name?`${t} — ${e.name}`:t}function hd(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 gd(e){if(!e||e.rolling.count<3)return;let t={above:`↑`,below:`↓`,stable:`→`},n=e.delta.direction===`stable`?0:Math.round(Math.abs(e.delta.percentDelta)),r=e.delta.recentCount>=3&&e.delta.baselineCount>=3?` · ${n}% ${t[e.delta.direction]} median [${e.delta.baselineCount}]`:``;return`~${Math.round(e.rolling.median)} tok/s [${e.rolling.count}]${r}`}function _d(e,t){if(!t)return;let n=e?.models.find(e=>e.provider===t.provider&&e.modelId===t.id);return gd(n)}function vd(e){return e.replace(/^\/home\/[^/]+/,`~`)}function yd(e,t){return`${e.replace(/\/+$/,``)}/${t}`}function bd(e){let t=e.trim().replace(/[\\/\0]/g,`_`);return t&&t!==`.`&&t!==`..`?t:`upload.bin`}function xd(e,t){return`${new Date().toISOString().replace(/[:.]/g,`-`)}-${t+1}-${bd(e.name||`upload.bin`)}`}function Sd(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 Cd(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function wd(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 Td(e){e.style.height=`auto`;let t=window.matchMedia?.(`(max-width: 700px)`)?.matches??!1,n=ml(window.innerHeight,t),r=Math.min(e.scrollHeight,n);r>0&&(e.style.height=`${r}px`),e.style.overflowY=e.scrollHeight>n?`auto`:`hidden`}function Ed(e){let[t,n]=k(e.request.prefill??``),r=t=>e.onRespond({type:`extension_ui_response`,id:e.request.id,...t});return W(ot,{get title(){return e.request.title},onDismiss:()=>r({cancelled:!0}),get actions(){return W(K,{get when(){return e.request.method!==`select`},get children(){return[(()=>{var e=Dl();return e.$$click=()=>r({cancelled:!0}),e})(),W(K,{get when(){return e.request.method===`confirm`},get children(){var e=Ol();return e.$$click=()=>r({confirmed:!0}),e}}),W(K,{get when(){return e.request.method===`input`||e.request.method===`editor`},get children(){var e=kl();return e.$$click=()=>r({value:t()}),e}})]}})},get children(){return[W(K,{get when(){return e.request.message},get children(){var t=Cl();return Z(t,()=>e.request.message),t}}),W(K,{get when(){return e.request.method===`select`},get children(){var t=wl();return Z(t,W(G,{get each(){return e.request.options??[]},children:e=>(()=>{var t=Al();return t.$$click=()=>r({value:e}),Z(t,e),t})()})),t}}),W(K,{get when(){return e.request.method===`input`},get children(){var r=Tl(),i=r.firstChild;return i.$$input=e=>n(e.currentTarget.value),j(()=>X(i,`placeholder`,e.request.placeholder)),j(()=>i.value=t()),r}}),W(K,{get when(){return e.request.method===`editor`},get children(){var e=El(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e}})]}})}function Dd(e){let t=e.target,n=t?.tagName;return n===`INPUT`||n===`TEXTAREA`||t?.isContentEditable===!0}function Od(e){let t=()=>e.request.questions??[],n=()=>t().length,r=()=>n()>=2,i,[a,o]=k(t().map(()=>({selected:[],customText:``})));M(()=>{let e=n();o(n=>n.length===e?n:t().map((e,t)=>n[t]??{selected:[],customText:``}))});let[s,c]=k(0),l=()=>r()&&s()===n(),u=t=>e.onRespond({type:`extension_ui_response`,id:e.request.id,...t}),d=e=>t()[e]?.options??[],f=e=>t()[e]?.allowFreeText!==!1,p=e=>t()[e]?.multiSelect===!0&&d(e).length>0,m=(e,t)=>o(n=>n.map((n,r)=>r===e?t(n):n)),h=(e,t)=>{m(e,n=>{if(p(e)){let e=n.selected.includes(t)?n.selected.filter(e=>e!==t):[...n.selected,t];return{...n,selected:e}}return{...n,selected:[t]}})},g=(e,t)=>m(e,e=>({...e,customText:t})),_=e=>{let t=a()[e];return t?t.selected.length>0||t.customText.trim().length>0:!1},v=e=>{let t=a()[e];if(!t)return;let n=[...t.selected],r=t.customText.trim();return r&&n.push(r),n.length>0?n.join(`, `):void 0},y=()=>{e.stopping||e.onStop()},b=()=>{let e=a().map(e=>{let t=e.selected,n=e.customText.trim()||void 0;return t.length>0||n?{selected:t,customText:n}:{selected:[],skipped:!0}});u({answers:e})},x=e=>{if(e.key===`Escape`){e.preventDefault(),y();return}if(e.key===`Enter`&&n()===1&&!l()){let t=e.target;t&&i?.contains(t)&&t.tagName!==`TEXTAREA`&&t.tagName!==`BUTTON`&&(e.preventDefault(),b());return}if(r()&&(e.key===`ArrowLeft`||e.key===`ArrowRight`||e.key===`Tab`)){if(Dd(e))return;let t=n(),r=e.key===`ArrowLeft`?-1:1;e.preventDefault(),c(e=>{let n=e+r;return n<0?t:n>t?0:n});return}if(!l()&&/^[1-9]$/.test(e.key)&&!Dd(e)){let t=s(),n=d(t),r=Number(e.key)-1;r<n.length&&(e.preventDefault(),h(t,n[r]))}};R(()=>window.addEventListener(`keydown`,x)),z(()=>window.removeEventListener(`keydown`,x));let S=typeof e.request.expiresAt==`number`?e.request.expiresAt:e.request.timeout&&e.request.timeout>0?Date.now()+e.request.timeout:void 0,C=()=>S===void 0?0:Math.max(0,Math.ceil((S-Date.now())/1e3)),[w,T]=k(C());if(S!==void 0){let e,t=()=>{let t=C();T(t),t<=0&&(e!==void 0&&clearInterval(e),e=void 0,y())};R(()=>{t(),S>Date.now()&&(e=setInterval(t,1e3))}),z(()=>{e!==void 0&&clearInterval(e)})}let E=(t,r)=>(()=>{var i=Il();return Z(i,W(K,{get when(){return t.title},get children(){var e=jl();return Z(e,()=>t.title),e}}),null),Z(i,W(Zs,{get text(){return t.question??``},class:`ask-question-body markdown-body`}),null),Z(i,W(K,{get when(){return d(r).length>0},get children(){var t=Ml();return t.firstChild,Z(t,W(G,{get each(){return d(r)},children:(t,n)=>(()=>{var i=Rl(),o=i.firstChild,s=o.nextSibling,c=s.nextSibling;return Z(o,()=>n()+1),s.addEventListener(`change`,()=>h(r,t)),Z(c,t),Z(i,W(K,{get when(){return a()[r]?.selected.includes(t)},get children(){return Ll()}}),null),j(n=>{var o=!!a()[r]?.selected.includes(t),c=p(r)?`checkbox`:`radio`,l=p(r)?void 0:`ask-option-input--hidden`,u=`ask-${e.request.id}-${r}`;return o!==n.e&&i.classList.toggle(`selected`,n.e=o),c!==n.t&&X(s,`type`,n.t=c),l!==n.a&&Ae(s,n.a=l),u!==n.o&&X(s,`name`,n.o=u),n},{e:void 0,t:void 0,a:void 0,o:void 0}),j(()=>s.checked=a()[r]?.selected.includes(t)),i})()}),null),t}}),null),Z(i,W(K,{get when(){return f(r)},get children(){var n=Pl(),i=n.firstChild;return Z(i,()=>d(r).length>0?`Or type your own answer`:`Your answer`),Z(n,W(K,{get when(){return t.multiline},get fallback(){return(()=>{var t=zl();return t.$$input=e=>g(r,e.currentTarget.value),j(()=>X(t,`id`,`ask-custom-${e.request.id}-${r}`)),j(()=>t.value=a()[r]?.customText??``),t})()},get children(){var t=Nl();return t.$$input=e=>g(r,e.currentTarget.value),j(()=>X(t,`id`,`ask-custom-${e.request.id}-${r}`)),j(()=>t.value=a()[r]?.customText??``),t}}),null),j(()=>X(i,`for`,`ask-custom-${e.request.id}-${r}`)),n}}),null),Z(i,W(K,{get when(){return n()===1},get children(){var t=Fl(),n=t.firstChild,r=n.nextSibling;return n.$$click=y,Z(n,()=>e.stopping?`stopping…`:`■ stop agent`),r.$$click=b,j(()=>n.disabled=e.stopping),t}}),null),i})();return(()=>{var a=Ul(),o=a.firstChild,u=o.firstChild,d=i;return typeof d==`function`?Pe(d,a):i=a,Z(u,()=>e.request.title),Z(o,W(K,{when:S!==void 0,get children(){var e=Bl(),t=e.firstChild.nextSibling;return t.nextSibling,Z(e,w,t),e}}),null),Z(a,W(K,{get when(){return r()},get children(){var e=Vl(),r=e.firstChild;return Z(e,W(G,{get each(){return t()},children:(e,t)=>(()=>{var n=Gl(),r=n.firstChild;return n.$$click=()=>c(t()),Z(n,()=>t()+1,r),Z(n,()=>e.title??e.question,null),Z(n,W(K,{get when(){return _(t())},get children(){return Wl()}}),null),j(e=>{var r=s()===t(),i=s()===t(),a=!!_(t());return r!==e.e&&X(n,`aria-selected`,e.e=r),i!==e.t&&n.classList.toggle(`selected`,e.t=i),a!==e.a&&n.classList.toggle(`answered`,e.a=a),e},{e:void 0,t:void 0,a:void 0}),n})()}),r),r.$$click=()=>c(n()),j(e=>{var t=l(),n=!!l();return t!==e.e&&X(r,`aria-selected`,e.e=t),n!==e.t&&r.classList.toggle(`selected`,e.t=n),e},{e:void 0,t:void 0}),e}}),null),Z(a,W(G,{get each(){return t()},children:(e,t)=>(()=>{var n=Kl();return Z(n,()=>E(e,t())),j(()=>n.classList.toggle(`hidden`,s()!==t())),n})()}),null),Z(a,W(K,{get when(){return r()},get children(){var n=Hl(),r=n.firstChild.firstChild,i=r.nextSibling.firstChild,a=i.nextSibling;return Z(r,W(G,{get each(){return t()},children:(e,t)=>(()=>{var n=ql(),r=n.firstChild;return Z(r,()=>e.title??e.question),Z(n,W(K,{get when(){return v(t())},get fallback(){return Jl()},children:e=>(()=>{var t=Yl();return Z(t,e),t})()}),null),n})()})),i.$$click=y,Z(i,()=>e.stopping?`stopping…`:`cancel`),a.$$click=b,j(t=>{var r=!l(),a=e.stopping;return r!==t.e&&n.classList.toggle(`hidden`,t.e=r),a!==t.t&&(i.disabled=t.t=a),t},{e:void 0,t:void 0}),n}}),null),j(()=>X(a,`aria-label`,e.request.title)),a})()}function kd(e){let t=(e,t)=>(()=>{var n=Zl(),r=n.firstChild;return Z(r,e),Z(n,W(K,{get when(){return t.length>0},get fallback(){return Ql()},get children(){var e=Xl();return Z(e,t),e}}),null),n})();return W(ot,{title:`loaded context`,get onDismiss(){return e.onClose},get children(){return[W(K,{get when(){return e.error},get children(){var t=$l();return Z(t,()=>e.error),t}}),W(K,{get when(){return e.resources},get fallback(){return eu()},children:e=>(()=>{var n=nu();return Z(n,()=>t(`context files`,e().contextFiles.map(e=>(()=>{var t=ru();return Z(t,()=>vd(e.path)),j(()=>X(t,`title`,e.path)),t})())),null),Z(n,()=>t(`skills`,e().skills.map(e=>(()=>{var t=au(),n=t.firstChild;return Z(n,()=>e.name),Z(t,W(K,{get when(){return e.description},get children(){var t=iu();return t.firstChild,Z(t,()=>e.description,null),t}}),null),t})())),null),Z(n,()=>t(`extensions`,e().extensions.map(e=>(()=>{var t=ou(),n=t.firstChild,r=n.nextSibling;return r.firstChild,Z(n,()=>e.name??`extension`),Z(r,()=>vd(e.path),null),j(()=>X(t,`title`,e.path)),t})())),null),Z(n,()=>t(`prompt templates`,e().promptTemplates.map(e=>(()=>{var t=ru();return Z(t,()=>e.name),t})())),null),Z(n,W(K,{get when(){return e().systemPromptPresent},get children(){return tu()}}),null),n})()})]}})}function Ad(e){let[t,n]=k([]),[r,i]=k(e.initialFilter??``),[a,o]=k((e.state?.scopedModels?.length??0)>0?`scoped`:`all`),[s,c]=k();R(async()=>{try{let{models:t}=await $.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 wd(d().filter(t=>!e||Cd(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 $.setModel(e.sessionKey,t.provider,t.id);e.onSelected(n),e.onClose()}catch(e){c(e instanceof Error?e.message:String(e))}}return W(ot,{title:`select model`,get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[W(K,{get when(){return u()},get children(){var e=su(),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&&X(t,`aria-selected`,e.e=r),i!==e.t&&t.classList.toggle(`selected`,e.t=i),o!==e.a&&X(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=cu(),t=e.firstChild;return t.$$input=e=>i(e.currentTarget.value),j(()=>t.value=r()),e})(),W(K,{get when(){return s()},get children(){var e=$l();return Z(e,s),e}}),(()=>{var e=lu();return Z(e,W(K,{get when(){return f().length>0},get fallback(){return uu()},get children(){return W(G,{get each(){return f()},children:e=>(()=>{var t=du(),n=t.firstChild;return Z(n,()=>e.provider),Z(t,W(G,{get each(){return e.models},children:e=>(()=>{var t=mu(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling;return t.$$click=()=>m(e),Z(n,()=>p(e)?`✓`:``),Z(r,()=>e.id),Z(t,W(K,{get when(){return e.name},get children(){var t=fu();return Z(t,()=>e.name),t}}),i),Z(i,()=>e.provider),Z(t,W(K,{get when(){return e.reasoning},get children(){return pu()}}),null),j(n=>{var r=!!p(e),i=md(e);return r!==n.e&&t.classList.toggle(`current`,n.e=r),i!==n.t&&X(t,`title`,n.t=i),n},{e:void 0,t:void 0}),t})()}),null),t})()})}})),e})()]}})}function jd(e){let t=[],n=[...e].reverse().map(e=>({node:e,depth:0}));for(;n.length>0;){let e=n.pop();if(!e)break;t.push(e);for(let t=e.node.children.length-1;t>=0;--t)n.push({node:e.node.children[t],depth:e.depth+1})}return t}function Md(e){return W(ot,{title:`session tree`,get onDismiss(){return e.onClose},get children(){return[W(K,{get when(){return e.error},get children(){var t=$l();return Z(t,()=>e.error),t}}),W(K,{get when(){return e.roots.length>0},get fallback(){return(()=>{var t=gu();return Z(t,()=>e.loading?`loading tree…`:`No session entries yet.`),t})()},get children(){var t=hu();return Z(t,W(G,{get each(){return jd(e.roots)},children:({node:t,depth:n})=>(()=>{var r=vu(),i=r.firstChild,a=i.nextSibling;return r.$$click=()=>e.onNavigate(t.id),Ne(r,`padding-left`,`${12+n*18}px`),Z(i,()=>t.id.slice(0,8)),Z(a,()=>t.label??(t.preview||t.type)),Z(r,W(K,{get when(){return t.id===e.leafId},get children(){return _u()}}),null),j(()=>r.disabled=t.id===e.leafId),r})()})),t}})]}})}function Nd(e){return W(ot,{title:`resume session`,get onDismiss(){return e.onClose},get children(){return[W(K,{get when(){return e.error},get children(){var t=$l();return Z(t,()=>e.error),t}}),W(K,{get when(){return e.sessions.length>0},get fallback(){return(()=>{var t=gu();return Z(t,()=>e.loading?`loading sessions…`:`No other sessions found.`),t})()},get children(){var t=hu();return Z(t,W(G,{get each(){return e.sessions},children:t=>(()=>{var n=yu(),r=n.firstChild,i=r.nextSibling,a=i.firstChild;return n.$$click=()=>e.onResume(t.path),Z(r,()=>t.name??(t.firstMessage||t.path)),Z(i,()=>t.messageCount,a),n})()})),t}})]}})}function Pd(e){let[t,n]=k(e.initialPath);return W(ot,{title:`import session`,get onDismiss(){return e.onClose},get actions(){return[(()=>{var t=Dl();return je(t,`click`,e.onClose,!0),t})(),(()=>{var n=Su();return n.$$click=()=>e.onImport(t().trim()),j(()=>n.disabled=!t().trim()),n})()]},get children(){return[bu(),(()=>{var e=xu(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e})(),W(K,{get when(){return e.error},get children(){var t=$l();return Z(t,()=>e.error),t}})]}})}function Fd(e){let t=()=>e.store.sessions[e.sessionKey],n=N(()=>e.store.fleet().runtimes.find(t=>t.key===e.sessionKey)),[r,i]=k(vl(e.sessionKey)??``),[a,o]=k(`steer`),[s,c]=k(!1),[l,u]=k(!1),[d,f]=k(!1),[p,m]=k(``),[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(),[L,ee]=k(0),[te,ne]=k(),[re,ie]=k(),[ae,B]=k(),[oe,V]=k(),[se,H]=k([]),[ce,le]=k(!1),[U,ue]=k(0),[de,fe]=k(),[pe,me]=k(),[he,ge]=k({steering:[],followUp:[]}),[_e,ve]=k([]),[ye,be]=k([]),[xe,Se]=k(),[Ce,we]=k(!1),[Te,q]=k([]),[Ee,De]=k(),[Oe,Y]=k(!1),[ke,je]=k([]),[Me,Ne]=k(null),[Fe,Ie]=k(!1),[Le,Re]=k(),[ze,Be]=k(!1),[Ve,He]=k([]),[Ue,We]=k(!1),[Ge,Ke]=k(),[qe,Je]=k(!1),[Ye,Xe]=k(``),[Ze,Qe]=k(),[$e,et]=k(!1),[tt,nt]=k(),rt,it,ct,lt,ut,dt,Q=!1,ft=0,pt=()=>t()?.closed,mt=()=>!pt()&&(t()?.streaming??!1),ht=()=>!pt()&&(t()?.compacting??!1),gt=()=>(t()?.statusEntries??[]).some(e=>e.key===`paused`),_t=()=>Object.values(t()?.backgroundAgents??{}).some(e=>e.status===`running`),vt=()=>!pt()&&(mt()||ht()||gt()||_t()),yt=()=>pt()?[]:(t()?.statusEntries??[]).filter(e=>e.key===`compaction`||e.key===`retry`),bt=zo({scroller:()=>rt});async function xt(t=!1){if(pt())return;let n=++ft,[r,i,a]=await Promise.allSettled([e.store.refreshRuntimeStats(e.sessionKey),$.performance(e.sessionKey),$.branch(e.sessionKey)]),o=t?await Promise.allSettled([$.dailyCost()]):void 0;if(Q||pt()||n!==ft)return;r.status===`fulfilled`&&ne(r.value),i.status===`fulfilled`&&ie(i.value),a.status===`fulfilled`&&B(a.value.branch),o?.[0]?.status===`fulfilled`&&V(o[0].value.cost);let s=[r,i,a,...o??[]].find(e=>e.status===`rejected`);s?.status===`rejected`&&P(s.reason instanceof Error?s.reason.message:String(s.reason))}async function St(){if(!pt())try{let{commands:t}=await $.commands(e.sessionKey);Q||H(t)}catch(e){!Q&&!pt()&&P(e instanceof Error?e.message:String(e))}}async function Ct(){E(!0),me(void 0);try{fe(await $.resources(e.sessionKey))}catch(e){me(e instanceof Error?e.message:String(e))}}async function wt(){if(!pt())try{ge(await $.pending(e.sessionKey))}catch(e){pt()||P(e instanceof Error?e.message:String(e))}}let Tt=new Set,Et=async t=>{let n=typeof t.id==`string`?t.id:void 0;if(!(n&&Tt.has(n))){n&&Tt.add(n);try{await $.extensionUiResponse(e.sessionKey,t),n&&e.store.resolveUiRequest(e.sessionKey,n)}catch(e){P(e instanceof Error?e.message:String(e))}finally{n&&Tt.delete(n)}}};function Dt(e){let t=atob(e);return Uint8Array.from(t,e=>e.charCodeAt(0))}function Ot(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 kt(e){return Ot(new Uint8Array(await e.arrayBuffer()))}function At(e){URL.revokeObjectURL(e.previewUrl)}function jt(){for(let e of _e())At(e);ve([])}function Mt(e){ve(t=>{let n=t[e];return n&&At(n),t.filter((t,n)=>n!==e)})}function Nt(e){if(_e().reduce((e,t)=>e+t.size,0)+e>Ut)throw Error(`Images too large: total inline images exceed ${Sd(Ut)}`)}function Pt(e,t,n){return{blob:e,mimeType:t,fileName:n,size:e.size,previewUrl:URL.createObjectURL(e)}}function Ft(e,t,n){let r=Dt(e.data);return Pt(new Blob([r],{type:e.mimeType}),e.mimeType,`queued-image-${t+1}-${n+1}`)}function It(e){return[...e.steeringMessages??e.steering.map(e=>({text:e})),...e.followUpMessages??e.followUp.map(e=>({text:e}))]}function Lt(e){let t=[];for(let[n,r]of e.entries())for(let[e,i]of(r.images??[]).entries())t.push(Ft(i,n,e));return t}function Rt(e){for(let t of e)At(t)}function zt(e){let t=e.map(e=>e.text).join(`
|
|
69
|
+
`]})),t})()}function uc(e){if(e.toolName!==`edit`)return;let t=e.details?.diff;return typeof t==`string`?t:void 0}var dc=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]),fc=/^[0-9a-f]{64}$/,pc=1024*1024;function mc(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:e>=1024?`${Math.ceil(e/1024)} KB`:`${e} B`}var hc={alt:`Tool result`,originalAriaLabel:`Original tool-result image`,enlargedAlt:`Enlarged tool-result preview`},gc={alt:`Uploaded image`,originalAriaLabel:`Original uploaded image`,enlargedAlt:`Enlarged uploaded-image preview`};function _c(e){let[t,n]=k(),[r,i]=k(),[a,o]=k(),[s,c]=k(!1),l=t=>gt(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=cs();c(!1),o(void 0),e===`previews`?u(`preview`):e===`originals`?u(`original`):(n(void 0),i(void 0))});let d=()=>{e.image.size>pc&&!window.confirm(`Load the ${mc(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=bs(),f=l.firstChild,p=f.firstChild,m=p.firstChild;return Z(l,W(K,{get when(){return t()},get fallback(){return(()=>{var t=xs(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return Z(n,()=>e.image.mimeType.replace(`image/`,``).toUpperCase(),r),Z(n,()=>mc(e.image.size),null),i.$$click=()=>u(`preview`),Z(i,()=>a()?`retry preview`:`load preview`),t})()},children:t=>(()=>{var a=Ss(),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&&X(a,`aria-label`,n.t=o),c!==n.a&&X(s,`alt`,n.a=c),l!==n.o&&X(s,`src`,n.o=l),n},{e:void 0,t:void 0,a:void 0,o:void 0}),a})()}),f),Z(p,()=>e.image.mimeType.replace(`image/`,``).toUpperCase(),m),Z(p,()=>mc(e.image.size),null),Z(f,W(K,{get when(){return r()!==`original`},get children(){var t=vs();return t.firstChild,t.$$click=d,Z(t,()=>mc(e.image.size),null),t}}),null),Z(l,W(K,{get when(){return a()},children:e=>(()=>{var t=Cs();return Z(t,e),t})()}),null),Z(l,W(K,{get when(){return J(()=>!!(s()&&r()===`preview`))()&&t()},get children(){var n=ys(),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&&X(i,`src`,n.e=r),a!==n.t&&X(i,`alt`,n.t=a),n},{e:void 0,t:void 0}),n}}),null),l})()}function vc(e){let t=()=>e.images.filter(e=>dc.has(e.mimeType)&&fc.test(e.id)&&Number.isSafeInteger(e.size)&&e.size>0);return W(K,{get when(){return t().length>0},get children(){var n=ws();return Z(n,W(G,{get each(){return t()},children:t=>W(_c,{image:t,get scope(){return e.scope},get labels(){return e.labels}})})),n}})}function yc(e){let[t,n]=k(!1),r=()=>e.text.length>qs;M(()=>{r()||n(!1)});let i=()=>r()&&!t()?e.text.slice(-204800):e.text;return[W(K,{get when(){return J(()=>!!r())()&&!t()},get children(){var t=Ts(),r=t.firstChild.nextSibling,i=r.nextSibling.nextSibling,a=i.nextSibling.nextSibling,o=a.firstChild.nextSibling;return o.nextSibling,Z(t,()=>Xs(qs),r),Z(t,()=>Xs(e.text.length),i),a.$$click=()=>n(!0),Z(a,()=>Xs(e.text.length),o),t}}),W(K,{get when(){return e.markdown},get fallback(){return W(tc,{get text(){return i()},get language(){return e.language},get autoScroll(){return e.autoScroll},get throttle(){return e.throttle}})},get children(){return W(Zs,{get text(){return i()},get throttle(){return e.throttle}})}})]}function bc(e){let t=()=>oc(e.entry),n=()=>e.entry.args,r=()=>{if(e.entry.toolName===`suggest_next`)return e.entry.details},i=()=>uc(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 Qs($s(n()))},s=()=>sc.has(e.entry.toolName)&&e.entry.status!==`error`,c=()=>e.entry.toolName===`bash`||e.entry.toolName===`bash (user)`,l=()=>cc(e.entry),u=()=>fs(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=Os(),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)}),Z(m,()=>e.entry.toolName),Z(v,()=>nc(e.entry)),Z(y,()=>t().text),Z(u,W(K,{get when(){return f()},get children(){return[W(K,{get when(){return e.entry.toolName===`bash`||e.entry.toolName===`bash (user)`},get children(){var e=Es(),t=e.firstChild;return Z(t,()=>String(n()?.command??``)),e}}),W(G,{get each(){return l()},children:e=>(()=>{var t=ks(),n=t.firstChild;return Z(n,()=>e.label),Z(t,W(K,{get when(){return e.markdown},get fallback(){return W(tc,{get text(){return e.text},get language(){return e.language}})},get children(){return W(Zs,{get text(){return e.text}})}}),null),t})()}),W(K,{get when(){return e.entry.images?.length},get children(){var t=Ds();return Z(t,W(vc,{get images(){return e.entry.images},get scope(){return e.imageScope},labels:hc})),t}}),W(Te,{get children(){return[W(q,{get when(){return r()},children:e=>(()=>{var t=As(),n=t.firstChild,r=n.firstChild.nextSibling;return Z(t,W(K,{get when(){return e().summary},get children(){return W(Zs,{get text(){return e().summary}})}}),n),Z(r,()=>e().suggestion),t})()}),W(q,{get when(){return i()},children:e=>(()=>{var t=Ds();return Z(t,W(lc,{get text(){return e()}})),t})()}),W(q,{get when(){return a()},children:t=>(()=>{var n=Ds();return Z(n,W(yc,{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&&Ae(y,e.t=r),e},{e:void 0,t:void 0}),u})()}function xc(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=js();return n.$$click=r,Z(n,(()=>{var e=J(()=>t()===`copied`);return()=>e()?`copied`:t()===`failed`?`copy failed`:`copy`})()),j(()=>n.disabled=!e.text),n})()}function Sc(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=Ps(),r=n.firstChild,i=r.firstChild;return Z(i,()=>e.who),Z(r,W(K,{get when(){return e.entry.model},get children(){return[Ms(),(()=>{var t=_s();return Z(t,()=>e.entry.model),t})()]}}),null),Z(r,W(K,{get when(){return e.entry.streaming},get children(){return[Ms(),Ns()]}}),null),Z(r,W(xc,{get text(){return ic(e.entry)}}),null),Z(n,W(G,{get each(){return t()},children:(n,r)=>W(K,{get when(){return n.kind===`thinking`},get fallback(){return(()=>{var i=Is();return Z(i,W(Zs,{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=Fs();return t.firstChild,Z(t,W(Zs,{get text(){return n.text},class:`thinking-body markdown-body`,get throttle(){return e.entry.streaming}}),null),j(()=>t.open=ss()),t}})}),null),Z(n,W(K,{get when(){return J(()=>e.entry.stopReason===`error`)()&&e.entry.errorMessage},children:e=>(()=>{var t=Ls();return t.firstChild,Z(t,e,null),t})()}),null),n})()}function Cc(e,t){return e?.kind===`entry`&&e.entry===t}function wc(e){let[t,n]=k(e);return{kind:`assistant-turn`,lead:e[0],entries:t,setEntries:n}}function Tc(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(wc(a));continue}if(i){let e=t[n.length];n.push(Cc(e,i)?e:{kind:`entry`,entry:i})}r+=1}return n}function Ec(e){return W(Te,{get children(){return[W(q,{get when(){return e.entry.kind===`user`},get children(){var t=Rs(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return Z(n,W(K,{get when(){return ac(e.entry.text)},children:e=>(()=>{var t=Vs();return t.firstChild,Z(t,e,null),t})()}),r),Z(n,W(xc,{get text(){return ic(e.entry)}}),r),Z(r,()=>e.userLabel),Z(i,()=>e.entry.text),Z(t,W(K,{get when(){return e.entry.images?.length},get children(){return W(vc,{get images(){return e.entry.images},get scope(){return e.imageScope},labels:gc})}}),null),t}}),W(q,{get when(){return e.entry.kind===`agent-result`},get children(){return W(Dc,{get entry(){return e.entry}})}}),W(q,{get when(){return e.entry.kind===`assistant`},get children(){return W(Sc,{get entry(){return e.entry},get who(){return e.who}})}}),W(q,{get when(){return e.entry.kind===`tool`},get children(){return W(bc,{get entry(){return e.entry},get imageScope(){return e.imageScope}})}}),W(q,{get when(){return e.entry.kind===`summary`},get children(){var t=zs(),n=t.firstChild.firstChild,r=n.nextSibling;return Z(n,()=>e.entry.label===`compaction`?`context compacted`:`branch summary`,null),Z(n,W(K,{get when(){return e.entry.tokensBefore},get children(){return[` `,`— `,J(()=>e.entry.tokensBefore.toLocaleString()),` tokens summarized`]}}),null),Z(r,()=>e.entry.text),t}}),W(q,{get when(){return e.entry.kind===`custom`},get children(){var t=Bs(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return Z(r,()=>e.entry.tag),Z(i,()=>e.entry.text),t}})]}})}function Dc(e){return(()=>{var t=Us(),n=t.firstChild,r=n.firstChild;return r.firstChild,Z(r,W(K,{get when(){return e.entry.header},get children(){var t=Hs();return Z(t,()=>e.entry.header),t}}),null),Z(n,W(Zs,{get text(){return e.entry.text},class:`entry-body markdown-body`}),null),t})()}function Oc(e){let t=()=>e.who??`dreb`,n=()=>e.userLabel??`you`,r=()=>e.imageScope??{runtimeKey:``},i=N(t=>Tc(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[W(K,{get when(){return l()>0},get children(){var e=Ws(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;return r.nextSibling,t.$$click=()=>o(Math.min(i().length,a()+150)),Z(t,()=>Math.min(150,l()),n),Z(t,l,r),e}}),W(G,{get each(){return c()},children:e=>W(Te,{get children(){return[W(q,{get when(){return e.kind===`assistant-turn`},get children(){var i=Gs();return Z(i,W(G,{get each(){return e.entries()},children:e=>W(Ec,{entry:e,get who(){return t()},get userLabel(){return n()},get imageScope(){return r()}})})),i}}),W(q,{get when(){return e.kind===`entry`},get children(){return W(Ec,{get entry(){return e.entry},get who(){return t()},get userLabel(){return n()},get imageScope(){return r()}})}})]}})})]}ke([`click`]);var kc=Y(`<p class=settings-error>`),Ac=Y(`<p class=settings-success>`),jc=Y(`<button type=button class=memory-nav-item><span>MEMORY.md</span><small>complete editable index`),Mc=Y(`<div class=context-trust-warning><strong>Complete index warning:</strong> MEMORY.md is over 200 lines. The dashboard shows the full file for repair, while the agent prompt may only load the indexed prefix.`),Nc=Y(`<div class=screen-fill><main class="container memories-screen"><div class=memories-head><div><h1>Memories</h1><p class=scope-note>Edit dreb memory only: global ~/.dreb/memory plus known project .dreb/memory scopes. Claude memory paths are never included.</p></div><button type=button class=btn>refresh</button></div><div class=memories-layout><aside class=memories-sidebar><section class=memory-panel><h2>Scopes</h2></section><section class=memory-panel><h2>Documents</h2></section></aside><section class=memory-editor>`),Pc=Y(`<p class=muted>loading scopes…`),Fc=Y(`<p class=muted>No active dreb memory scopes.`),Ic=Y(`<button type=button class=memory-nav-item><span></span><small>`),Lc=Y(`<p class=muted>loading documents…`),Rc=Y(`<p class=muted>Memory directory is missing; nothing to edit.`),zc=Y(`<p class=muted>MEMORY.md index missing.`),Bc=Y(`<p class=muted>No memory entries.`),Vc=Y(`<output class=memory-loading>loading selected memory…`),Hc=Y(`<p class=muted>Select an existing memory document.`),Uc=Y(`<button type=button class="btn btn-danger">delete entry`),Wc=Y(`<div class=memory-doc-head><div><h2></h2><p class=scope-note> · revision </p></div><div class=head-actions><button type=button class=btn>reload`),Gc=Y(`<p class=settings-error>Metadata error: `),Kc=Y(`<div class=memory-edit-actions><button type=button class="btn btn-primary"></button><button type=button class=btn>revert draft</button><span class=muted>`),qc=Y(`<textarea class=memory-textarea>`),Jc=Y(`<details class=memory-preview open><summary>preview`),Yc=Y(`<div class=memory-metadata><strong></strong><span></span><span>`),Xc=Y(`<p>This deletes the entry file and first removes matching <code>[…](<!>)</code> or <code>[…](./<!>)</code> lines from MEMORY.md. If the index changed, deletion will fail with a conflict instead of leaving a dangling link.`),Zc=Y(`<button type=button class=btn>cancel`),Qc=Y(`<button type=button class="btn btn-danger">`),$c=`MEMORY.md`;function el(e){return e.metadata?`${e.metadata.name} · ${e.metadata.type}`:e.metadataError?`metadata error: ${e.metadataError}`:`metadata unavailable`}function tl(e,t){return e?e.kind===`index`?`MEMORY.md index`:e.metadata?.name??e.file:t??`memory`}function nl(e){if(e)return e.indexContent===null?e.entries[0]?.file:$c}function rl(e,t){if(!e||!t)return;let n;try{n=decodeURIComponent(e)}catch{return}if(n.startsWith(`./`)&&(n=n.slice(2)),!(!n||n.includes(`/`)||n.includes(`\\`)||n.includes(`?`)||n.includes(`#`)))return t.entries.some(e=>e.file===n)?n:void 0}function il(e){let[t,n]=k(),[r,i]=k(),[a,o]=k(),[s,c]=k(),[l,u]=k(``),[d,f]=k(!1),[p,m]=k(!1),[h,g]=k(),[_,{refetch:v}]=F(async()=>{try{return(await $.memoryScopes()).scopes}catch(e){return o(e instanceof Error?e.message:String(e)),[]}});M(()=>{let e=_();if(!e?.length)return;let r=t();(!r||!e.some(e=>e.id===r))&&n(e[0].id)});let[y,{mutate:b,refetch:x}]=F(()=>t(),async e=>{o(void 0),c(void 0);try{return await $.memoryListing(e)}catch(e){o(e instanceof Error?e.message:String(e));return}});M(()=>{let e=y();if(!e)return;let t=r(),n=new Set([...e.indexContent===null?[]:[$c],...e.entries.map(e=>e.file)]);(!t||!n.has(t))&&i(nl(e))});let[S,{mutate:C,refetch:w}]=F(()=>{let e=t(),n=r();return e&&n?{scopeId:e,file:n}:void 0},async e=>{o(void 0),c(void 0);try{return await $.memoryDocument(e.scopeId,e.file)}catch(e){o(e instanceof Error?e.message:String(e));return}});M(()=>{let e=S();!e||d()||u(e.content)});function T(e){t()!==e.id&&I(()=>{i(void 0),n(e.id),C(void 0),f(!1),u(``)})}function E(e){r()!==e&&(i(e),C(void 0),f(!1),u(``))}function D(e){let t=e.target?.closest(`a`);if(!(t instanceof HTMLAnchorElement))return;let n=rl(t.getAttribute(`href`),y());n&&(e.preventDefault(),E(n))}async function O(){await v(),await x(),r()&&await w()}async function A(){let e=t(),n=S();if(!(!e||!n)){m(!0),o(void 0),c(void 0);try{let t=await $.saveMemoryDocument(e,n.file,l(),n.revision);b(t.listing),t.document&&C(t.document),u(t.document?.content??l()),f(!1),c(`saved`)}catch(e){o(e?.status===409?`${e.message} Your draft is still here.`:e instanceof Error?e.message:String(e))}finally{m(!1)}}}async function N(){let e=t(),n=h(),r=y();if(!(!e||!n||n.kind!==`entry`||!r)){m(!0),o(void 0),c(void 0);try{let t=await $.deleteMemoryEntry(e,n.file,n.revision,r.indexRevision);b(t.listing),C(void 0),g(void 0),i(nl(t.listing)),f(!1),u(``),c(`deleted ${n.file}; index links cleaned up`)}catch(e){o(e instanceof Error?e.message:String(e))}finally{m(!1)}}}return(()=>{var n=Nc(),i=n.firstChild,o=i.firstChild,c=o.firstChild.nextSibling,m=o.nextSibling,v=m.firstChild,b=v.firstChild;b.firstChild;var x=b.nextSibling;x.firstChild;var C=v.nextSibling;return Z(n,W(it,{get store(){return e.store},active:`memories`}),i),c.$$click=()=>void O(),Z(i,W(K,{get when(){return a()},get children(){var e=kc();return Z(e,a),e}}),m),Z(i,W(K,{get when(){return s()},get children(){var e=Ac();return Z(e,s),e}}),m),Z(b,W(K,{get when(){return!_.loading},get fallback(){return Pc()},get children(){return W(K,{get when(){return(_()??[]).length>0},get fallback(){return Fc()},get children(){return W(G,{get each(){return _()??[]},children:e=>(()=>{var n=Ic(),r=n.firstChild,i=r.nextSibling;return n.$$click=()=>T(e),Z(r,(()=>{var t=J(()=>e.kind===`global`);return()=>t()?`global`:e.label})()),Z(i,(()=>{var t=J(()=>!!e.exists);return()=>t()?e.memoryDir:`${e.memoryDir} (missing)`})()),j(()=>n.classList.toggle(`active`,t()===e.id)),n})()})}})}}),null),Z(x,W(K,{get when(){return!y.loading},get fallback(){return Lc()},get children(){return W(K,{get when(){return y()?.scope.exists},get fallback(){return Rc()},get children(){return[W(K,{get when(){return y()?.indexContent!==null},get fallback(){return zc()},get children(){var e=jc();return e.$$click=()=>E($c),j(()=>e.classList.toggle(`active`,r()===$c)),e}}),W(K,{get when(){return(y()?.entries.length??0)>0},get fallback(){return Bc()},get children(){return W(G,{get each(){return y()?.entries??[]},children:e=>(()=>{var t=Ic(),n=t.firstChild,i=n.nextSibling;return t.$$click=()=>E(e.file),Z(n,()=>e.file),Z(i,()=>el(e)),j(n=>{var i=r()===e.file,a=!!e.metadataError;return i!==n.e&&t.classList.toggle(`active`,n.e=i),a!==n.t&&t.classList.toggle(`error`,n.t=a),n},{e:void 0,t:void 0}),t})()})}})]}})}}),null),Z(C,W(K,{get when(){return J(()=>!y.loading)()&&!S.loading},get fallback(){return Vc()},get children(){return[W(K,{get when(){return y()?.indexOverLimit},get children(){return Mc()}}),W(K,{get when(){return S()},get fallback(){return Hc()},children:e=>[(()=>{var t=Wc(),n=t.firstChild,i=n.firstChild,a=i.nextSibling,o=a.firstChild,s=n.nextSibling,c=s.firstChild;return Z(i,()=>tl(e(),r())),Z(a,()=>e().file,o),Z(a,()=>e().revision.slice(0,12),null),c.$$click=()=>void w(),Z(s,W(K,{get when(){return e().kind===`entry`},get children(){var t=Uc();return t.$$click=()=>g(e()),t}}),null),j(()=>c.disabled=S.loading),t})(),W(K,{get when(){return e().metadata},children:e=>(()=>{var t=Yc(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling;return Z(n,()=>e().name),Z(r,()=>e().type),Z(i,()=>e().description),t})()}),W(K,{get when(){return e().metadataError},get children(){var t=Gc();return t.firstChild,Z(t,()=>e().metadataError,null),t}}),(()=>{var t=Kc(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling;return n.$$click=()=>void A(),Z(n,()=>p()?`saving…`:`save`),r.$$click=()=>{u(e().content),f(!1)},Z(i,()=>d()?`unsaved draft`:`saved revision loaded`),j(e=>{var t=!d()||p(),i=!d()||p();return t!==e.e&&(n.disabled=e.e=t),i!==e.t&&(r.disabled=e.t=i),e},{e:void 0,t:void 0}),t})(),(()=>{var t=qc();return t.$$input=t=>{u(t.currentTarget.value),f(t.currentTarget.value!==e().content)},j(()=>t.value=l()),t})(),(()=>{var e=Jc();return e.firstChild,e.$$keydown=e=>{e.key===`Enter`&&D(e)},e.$$click=D,Z(e,W(Zs,{get text(){return l()},throttle:!0}),null),e})()]})]}})),Z(i,W(K,{get when(){return h()},children:e=>W(ot,{get title(){return`Delete ${e().file}?`},onDismiss:()=>g(void 0),get actions(){return[(()=>{var e=Zc();return e.$$click=()=>g(void 0),e})(),(()=>{var e=Qc();return e.$$click=()=>void N(),Z(e,()=>p()?`deleting…`:`delete entry`),j(()=>e.disabled=p()),e})()]},get children(){var t=Xc(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling;r.nextSibling;var i=n.nextSibling.nextSibling,a=i.firstChild.nextSibling;return a.nextSibling,Z(n,()=>e().file,r),Z(i,()=>e().file,a),t}})}),null),j(e=>{var t=_.loading||y.loading,n=y.loading||S.loading;return t!==e.e&&(c.disabled=e.e=t),n!==e.t&&X(C,`aria-busy`,e.t=n),e},{e:void 0,t:void 0}),n})()}ke([`click`,`input`,`keydown`]);var al=Y(`<p class=pair-error>`),ol=Y(`<main class=pair-card><span class=wordmark>dreb</span><h1>pair this device</h1><p class=sub>First login from a new device needs the current pairing code.</p><div class=identity><span class=row-line><span class=k>tailscale identity</span><span></span></span><span class=row-line><span class=k>allowlist</span><span class="chip chip-running"style=align-self:flex-end><span class=dot>●</span> allowed</span></span></div><div class=field><label for=pairing-pin>6-digit code</label><input id=pairing-pin class=pin-input type=text inputmode=numeric maxlength=6 autocomplete=one-time-code></div><p class=pin-hint>The code is shown in the dashboard <strong>Settings tab on the host machine</strong>. It rotates every 30 seconds.</p><div class=pair-actions><button type=button class="btn btn-primary"></button></div><div class=security-note><p><strong>Why a PIN?</strong> Your network identity got you here, but identity alone doesn't grant control. The code proves you can see the host machine's local dashboard — so a stolen or shared allowlist entry can't quietly gain access.</p><p><strong>What pairing grants.</strong> This browser gets a signed cookie for this host. It can chat with agents, run commands through them, browse the host's files, and upload/download — the same power as sitting at the terminal. Unpair anytime from settings → devices.`),sl=Y(`<div class=pair-wrap>`),cl=Y(`<p class="muted small">rejected identity: `),ll=Y(`<main class=denied-card><span class=wordmark>dreb</span><h1>access denied</h1><p></p><p class="muted small">If this device should have access, add its Tailscale identity to the dashboard allowlist on the host and reload.`);function ul(e){let[t,n]=k(``),[r,i]=k(),[a,o]=k(!1),s=()=>e.store.auth(),c=()=>s()?.error&&!s()?.needsPairing,l=()=>typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 700px)`).matches;async function u(){o(!0),i(void 0);try{await $.pair(t()),await e.store.start(),e.store.navigate({screen:`fleet`})}catch(e){i(e instanceof Error?e.message:String(e))}finally{o(!1)}}return(()=>{var e=sl();return Z(e,W(K,{get when(){return!c()},get fallback(){return(()=>{var e=ll(),t=e.firstChild.nextSibling.nextSibling,n=t.nextSibling;return Z(t,()=>s()?.error),Z(e,W(K,{get when(){return s()?.identity},get children(){var e=cl();return e.firstChild,Z(e,()=>s().identity,null),e}}),n),e})()},get children(){var e=ol(),i=e.firstChild.nextSibling.nextSibling.nextSibling,o=i.firstChild,c=o.firstChild.nextSibling;o.nextSibling.firstChild.nextSibling;var d=i.nextSibling,f=d.firstChild.nextSibling,p=d.nextSibling.nextSibling,m=p.firstChild;return Z(c,()=>s()?.identity??`unknown`),f.$$keydown=e=>{e.key===`Enter`&&t().length===6&&!l()&&u()},f.$$input=e=>n(e.currentTarget.value.replace(/\D/g,``).slice(0,6)),Z(e,W(K,{get when(){return r()},get children(){var e=al();return Z(e,r),e}}),p),m.$$click=u,Z(m,()=>a()?`pairing…`:`pair device`),j(()=>m.disabled=t().length!==6||a()),j(()=>f.value=t()),e}})),e})()}ke([`input`,`keydown`,`click`]);function dl(e,t){let n=e.trim(),r=/^\/([^\s]+)(?:\s+([\s\S]*))?$/.exec(n);if(!r)return;let i=t.find(e=>e.source===`builtin`&&e.name===r[1]);if(i)return{command:i,args:(r[2]??``).trim()}}async function fl(e,t,n){let r=t[e.command.name];if(r){await r(e.args);return}if(e.command.dashboard===!1){n(`/${e.command.name} is available only in the terminal UI.`);return}n(`/${e.command.name} isn't implemented in the dashboard yet — use the terminal UI.`)}function pl(e,t,n=8){let r=new Map;for(let t of e)(!r.get(t.name)||t.source===`builtin`)&&r.set(t.name,t);return[...r.values()].filter(e=>e.source!==`builtin`||e.dashboard!==!1).filter(e=>{let n=e.name.toLowerCase();return!t||n.startsWith(t)||n.includes(t)}).sort((e,n)=>{let r=e.name.toLowerCase(),i=n.name.toLowerCase();return(t?+!r.startsWith(t):+(e.source===`builtin`))-(t?+!i.startsWith(t):+(n.source===`builtin`))||e.name.localeCompare(n.name)}).slice(0,n)}function ml(e,t){return Math.max(120,Math.floor((e||800)*(t?.26:.4)))}function hl(e){return typeof DOMException<`u`&&e instanceof DOMException&&e.name===`AbortError`?!0:typeof e==`object`&&!!e&&`name`in e&&e.name===`AbortError`}var gl=new Map,_l=new Map;function vl(e){return _l.get(e)}function yl(e,t){_l.set(e,t)}function bl(e){return gl.get(e)??[]}function xl(e,t){let n=gl.get(e)??[];n.push(t),gl.set(e,n.slice(-100))}function Sl(e){gl.delete(e),_l.delete(e)}var Cl=Y(`<p style=margin-bottom:12px>`),wl=Y(`<div class=recent-projects>`),Tl=Y(`<div class=field><input type=text>`),El=Y(`<div class=field><textarea rows=8>`),Dl=Y(`<button type=button class="btn btn-small">cancel`),Ol=Y(`<button type=button class="btn btn-small btn-primary">confirm`),kl=Y(`<button type=button class="btn btn-small btn-primary">submit`),Al=Y(`<button type=button>`),jl=Y(`<h4 class=ask-question-title>`),Ml=Y(`<fieldset class=ask-options><legend class=ask-options-legend>Answer options`),Nl=Y(`<textarea rows=5>`),Pl=Y(`<div class="field ask-custom-field"><label class=ask-custom-label>`),Fl=Y(`<div class=ask-actions><button type=button class="btn btn-small btn-danger"></button><button type=button class="btn btn-small btn-primary">submit`),Il=Y(`<div class=ask-question role=tabpanel>`),Ll=Y(`<span class=ask-option-check>✔`),Rl=Y(`<label class=ask-option><span class=ask-option-index></span><input><span class=ask-option-label>`),zl=Y(`<input type=text placeholder="Type a different answer…">`),Bl=Y(`<span class=ask-wizard-countdown> (auto-stops in <!>s)`),Vl=Y(`<div class=ask-tab-strip role=tablist aria-label=questions><button type=button role=tab class="ask-tab ask-tab-submit">Submit`),Hl=Y(`<div class=ask-tab-panel><div class=ask-review role=tabpanel><ul class=ask-review-list></ul><div class=ask-actions><button type=button class="btn btn-small btn-danger"></button><button type=button class="btn btn-small btn-primary">Submit all`),Ul=Y(`<section class=ask-wizard><header class=ask-wizard-header><span class=ask-wizard-title>`),Wl=Y(`<span class=ask-tab-check role=img aria-label=answered>✓`),Gl=Y(`<button type=button role=tab class=ask-tab>. `),Kl=Y(`<div class=ask-tab-panel>`),ql=Y(`<li class=ask-review-item><span class=ask-review-question>`),Jl=Y(`<span class="ask-review-answer muted">(unanswered)`),Yl=Y(`<span class=ask-review-answer>`),Xl=Y(`<ul>`),Zl=Y(`<section class=context-section><h3>`),Ql=Y(`<p class="muted small">none`),$l=Y(`<p class=pair-error>`),eu=Y(`<p class="muted small">loading…`),tu=Y(`<p class="muted small">system prompt: custom`),nu=Y(`<div class=context-modal-body>`),ru=Y(`<li>`),iu=Y(`<span class=muted> — `),au=Y(`<li><span>`),ou=Y(`<li><span></span><span class=muted> — `),su=Y(`<div class=model-scope-tabs role=tablist aria-label="model scope"><button type=button role=tab>scoped</button><button type=button role=tab>all`),cu=Y(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),lu=Y(`<div class="model-list session-model-list"style=max-height:320px>`),uu=Y(`<p class="muted small">No matching models.`),du=Y(`<section class=model-provider-group><div class=model-provider-heading>`),fu=Y(`<span class=model-name>`),pu=Y(`<span class=model-reasoning>think`),mu=Y(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),hu=Y(`<div class=fork-message-list>`),gu=Y(`<p class="muted small">`),_u=Y(`<span class="muted small">current`),vu=Y(`<button type=button class=fork-message><span class=fork-entry-id></span><span>`),yu=Y(`<button type=button class=fork-message><span></span><span class="muted small"> messages`),bu=Y(`<p class="muted small">Replace the current session with a JSONL session file.`),xu=Y(`<div class=field><input type=text placeholder=/path/to/session.jsonl>`),Su=Y(`<button type=button class="btn btn-small btn-primary">import and replace`),Cu=Y(`<span class=project>`),wu=Y(`<output class=switcher><span class=label>ctx</span> `),Tu=Y(`<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>⋯`),Eu=Y(`<div class=stats-popover>`),Du=Y(`<div class="session-bar-inner session-info-bar"><span class=session-info-left></span><button type=button class="session-info-right stats-trigger">`),Ou=Y(`<button type=button class="btn btn-small">model: `),ku=Y(`<button type=button class="btn btn-small">think: `),Au=Y(`<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">`),ju=Y(`<span class=dock-collapsed-hint>`),Mu=Y(`<details class=tasks><summary>tasks — <!> of <!> done</summary><ul>`),Nu=Y(`<details class="tasks subagents"><summary>subagents — <!> running · <!> done</summary><ul class=subagent-list>`),Pu=Y(`<span class=working>● working`),Fu=Y(`<button type=button class="btn btn-small btn-danger">`),Iu=Y(`<div class=status-line>`),Lu=Y(`<div class=dock-panels>`),Ru=Y(`<div class=queued-message-row><button type=button class="btn btn-small">restore to composer`),zu=Y(`<div class=attachment-strip>`),Bu=Y(`<div class=command-popover role=listbox id=command-listbox aria-label="slash commands">`),Vu=Y(`<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`),Hu=Y(`<button type=button class=ghost-suggest>suggested: <code></code> <span class=key>tap`),Uu=Y(`<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 ↵`),Wu=Y(`<div class=dock-inner>`),Gu=Y(`<p>Summarize older context to free window space. The transcript keeps a summary card.`),Ku=Y(`<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>`),qu=Y(`<span>`),Ju=Y(`<p class="muted small">loading stats…`),Yu=Y(`<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>$`),Xu=Y(`<p class=muted>loading transcript…`),Zu=Y(`<div class=widget-block>`),Qu=Y(`<li> `),$u=Y(`<li><button type=button class=agent-chip title="view this subagent's session"><span></span><span class=task> — `),ed=Y(`<button type=button class="btn btn-small btn-danger inline-stop">stop `),td=Y(`<div class=readonly-note>This session is closed; its transcript is read-only.`),nd=Y(`<span class=queued-chip><span class=queued-kind>`),rd=Y(`<span class=attachment-file><span>📎 </span><span class=muted></span><button type=button aria-label="remove file attachment">×`),id=Y(`<span class=attachment-thumb><img><button type=button aria-label="remove image">×`),ad=Y(`<span class=command-description>`),od=Y(`<button type=button role=option class=command-option><span class=command-name>/</span><span class=command-source>`),sd=Y(`<button type=button class="btn btn-small btn-primary">compact`),cd=Y(`<p class="muted small">loading forkable messages…`),ld=Y(`<button type=button class=fork-message><span class=fork-role></span><span>`),ud=Y(`<button type=button class="btn btn-small btn-primary">rename`),dd=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],fd=10*1024*1024,pd=`.dreb-dashboard-uploads`;function md(e){return e?`${e.provider}/${e.id}`:`—`}function hd(e){if(!e)return`—`;let t=`${e.provider}/${e.id}`;return e.name?`${t} — ${e.name}`:t}function gd(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 _d(e){if(!e||e.rolling.count<3)return;let t={above:`↑`,below:`↓`,stable:`→`},n=e.delta.direction===`stable`?0:Math.round(Math.abs(e.delta.percentDelta)),r=e.delta.recentCount>=3&&e.delta.baselineCount>=3?` · ${n}% ${t[e.delta.direction]} median [${e.delta.baselineCount}]`:``;return`~${Math.round(e.rolling.median)} tok/s [${e.rolling.count}]${r}`}function vd(e,t){if(!t)return;let n=e?.models.find(e=>e.provider===t.provider&&e.modelId===t.id);return _d(n)}function yd(e){return e.replace(/^\/home\/[^/]+/,`~`)}function bd(e,t){return`${e.replace(/\/+$/,``)}/${t}`}function xd(e){let t=e.trim().replace(/[\\/\0]/g,`_`);return t&&t!==`.`&&t!==`..`?t:`upload.bin`}function Sd(e,t){return`${new Date().toISOString().replace(/[:.]/g,`-`)}-${t+1}-${xd(e.name||`upload.bin`)}`}function Cd(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 wd(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function Td(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 Ed(e){e.style.height=`auto`;let t=window.matchMedia?.(`(max-width: 700px)`)?.matches??!1,n=ml(window.innerHeight,t),r=Math.min(e.scrollHeight,n);r>0&&(e.style.height=`${r}px`),e.style.overflowY=e.scrollHeight>n?`auto`:`hidden`}function Dd(e){let[t,n]=k(e.request.prefill??``),r=t=>e.onRespond({type:`extension_ui_response`,id:e.request.id,...t});return W(ot,{get title(){return e.request.title},onDismiss:()=>r({cancelled:!0}),get actions(){return W(K,{get when(){return e.request.method!==`select`},get children(){return[(()=>{var e=Dl();return e.$$click=()=>r({cancelled:!0}),e})(),W(K,{get when(){return e.request.method===`confirm`},get children(){var e=Ol();return e.$$click=()=>r({confirmed:!0}),e}}),W(K,{get when(){return e.request.method===`input`||e.request.method===`editor`},get children(){var e=kl();return e.$$click=()=>r({value:t()}),e}})]}})},get children(){return[W(K,{get when(){return e.request.message},get children(){var t=Cl();return Z(t,()=>e.request.message),t}}),W(K,{get when(){return e.request.method===`select`},get children(){var t=wl();return Z(t,W(G,{get each(){return e.request.options??[]},children:e=>(()=>{var t=Al();return t.$$click=()=>r({value:e}),Z(t,e),t})()})),t}}),W(K,{get when(){return e.request.method===`input`},get children(){var r=Tl(),i=r.firstChild;return i.$$input=e=>n(e.currentTarget.value),j(()=>X(i,`placeholder`,e.request.placeholder)),j(()=>i.value=t()),r}}),W(K,{get when(){return e.request.method===`editor`},get children(){var e=El(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e}})]}})}function Od(e){let t=e.target,n=t?.tagName;return n===`INPUT`||n===`TEXTAREA`||t?.isContentEditable===!0}function kd(e){let t=()=>e.request.questions??[],n=()=>t().length,r=()=>n()>=2,i,[a,o]=k(t().map(()=>({selected:[],customText:``})));M(()=>{let e=n();o(n=>n.length===e?n:t().map((e,t)=>n[t]??{selected:[],customText:``}))});let[s,c]=k(0),l=()=>r()&&s()===n(),u=t=>e.onRespond({type:`extension_ui_response`,id:e.request.id,...t}),d=e=>t()[e]?.options??[],f=e=>t()[e]?.allowFreeText!==!1,p=e=>t()[e]?.multiSelect===!0&&d(e).length>0,m=(e,t)=>o(n=>n.map((n,r)=>r===e?t(n):n)),h=(e,t)=>{m(e,n=>{if(p(e)){let e=n.selected.includes(t)?n.selected.filter(e=>e!==t):[...n.selected,t];return{...n,selected:e}}return{...n,selected:[t]}})},g=(e,t)=>m(e,e=>({...e,customText:t})),_=e=>{let t=a()[e];return t?t.selected.length>0||t.customText.trim().length>0:!1},v=e=>{let t=a()[e];if(!t)return;let n=[...t.selected],r=t.customText.trim();return r&&n.push(r),n.length>0?n.join(`, `):void 0},y=()=>{e.stopping||e.onStop()},b=()=>{let e=a().map(e=>{let t=e.selected,n=e.customText.trim()||void 0;return t.length>0||n?{selected:t,customText:n}:{selected:[],skipped:!0}});u({answers:e})},x=e=>{if(e.key===`Escape`){e.preventDefault(),y();return}if(e.key===`Enter`&&n()===1&&!l()){let t=e.target;t&&i?.contains(t)&&t.tagName!==`TEXTAREA`&&t.tagName!==`BUTTON`&&(e.preventDefault(),b());return}if(r()&&(e.key===`ArrowLeft`||e.key===`ArrowRight`||e.key===`Tab`)){if(Od(e))return;let t=n(),r=e.key===`ArrowLeft`?-1:1;e.preventDefault(),c(e=>{let n=e+r;return n<0?t:n>t?0:n});return}if(!l()&&/^[1-9]$/.test(e.key)&&!Od(e)){let t=s(),n=d(t),r=Number(e.key)-1;r<n.length&&(e.preventDefault(),h(t,n[r]))}};R(()=>window.addEventListener(`keydown`,x)),z(()=>window.removeEventListener(`keydown`,x));let S=typeof e.request.expiresAt==`number`?e.request.expiresAt:e.request.timeout&&e.request.timeout>0?Date.now()+e.request.timeout:void 0,C=()=>S===void 0?0:Math.max(0,Math.ceil((S-Date.now())/1e3)),[w,T]=k(C());if(S!==void 0){let e,t=()=>{let t=C();T(t),t<=0&&(e!==void 0&&clearInterval(e),e=void 0,y())};R(()=>{t(),S>Date.now()&&(e=setInterval(t,1e3))}),z(()=>{e!==void 0&&clearInterval(e)})}let E=(t,r)=>(()=>{var i=Il();return Z(i,W(K,{get when(){return t.title},get children(){var e=jl();return Z(e,()=>t.title),e}}),null),Z(i,W(Zs,{get text(){return t.question??``},class:`ask-question-body markdown-body`}),null),Z(i,W(K,{get when(){return d(r).length>0},get children(){var t=Ml();return t.firstChild,Z(t,W(G,{get each(){return d(r)},children:(t,n)=>(()=>{var i=Rl(),o=i.firstChild,s=o.nextSibling,c=s.nextSibling;return Z(o,()=>n()+1),s.addEventListener(`change`,()=>h(r,t)),Z(c,t),Z(i,W(K,{get when(){return a()[r]?.selected.includes(t)},get children(){return Ll()}}),null),j(n=>{var o=!!a()[r]?.selected.includes(t),c=p(r)?`checkbox`:`radio`,l=p(r)?void 0:`ask-option-input--hidden`,u=`ask-${e.request.id}-${r}`;return o!==n.e&&i.classList.toggle(`selected`,n.e=o),c!==n.t&&X(s,`type`,n.t=c),l!==n.a&&Ae(s,n.a=l),u!==n.o&&X(s,`name`,n.o=u),n},{e:void 0,t:void 0,a:void 0,o:void 0}),j(()=>s.checked=a()[r]?.selected.includes(t)),i})()}),null),t}}),null),Z(i,W(K,{get when(){return f(r)},get children(){var n=Pl(),i=n.firstChild;return Z(i,()=>d(r).length>0?`Or type your own answer`:`Your answer`),Z(n,W(K,{get when(){return t.multiline},get fallback(){return(()=>{var t=zl();return t.$$input=e=>g(r,e.currentTarget.value),j(()=>X(t,`id`,`ask-custom-${e.request.id}-${r}`)),j(()=>t.value=a()[r]?.customText??``),t})()},get children(){var t=Nl();return t.$$input=e=>g(r,e.currentTarget.value),j(()=>X(t,`id`,`ask-custom-${e.request.id}-${r}`)),j(()=>t.value=a()[r]?.customText??``),t}}),null),j(()=>X(i,`for`,`ask-custom-${e.request.id}-${r}`)),n}}),null),Z(i,W(K,{get when(){return n()===1},get children(){var t=Fl(),n=t.firstChild,r=n.nextSibling;return n.$$click=y,Z(n,()=>e.stopping?`stopping…`:`■ stop agent`),r.$$click=b,j(()=>n.disabled=e.stopping),t}}),null),i})();return(()=>{var a=Ul(),o=a.firstChild,u=o.firstChild,d=i;return typeof d==`function`?Pe(d,a):i=a,Z(u,()=>e.request.title),Z(o,W(K,{when:S!==void 0,get children(){var e=Bl(),t=e.firstChild.nextSibling;return t.nextSibling,Z(e,w,t),e}}),null),Z(a,W(K,{get when(){return r()},get children(){var e=Vl(),r=e.firstChild;return Z(e,W(G,{get each(){return t()},children:(e,t)=>(()=>{var n=Gl(),r=n.firstChild;return n.$$click=()=>c(t()),Z(n,()=>t()+1,r),Z(n,()=>e.title??e.question,null),Z(n,W(K,{get when(){return _(t())},get children(){return Wl()}}),null),j(e=>{var r=s()===t(),i=s()===t(),a=!!_(t());return r!==e.e&&X(n,`aria-selected`,e.e=r),i!==e.t&&n.classList.toggle(`selected`,e.t=i),a!==e.a&&n.classList.toggle(`answered`,e.a=a),e},{e:void 0,t:void 0,a:void 0}),n})()}),r),r.$$click=()=>c(n()),j(e=>{var t=l(),n=!!l();return t!==e.e&&X(r,`aria-selected`,e.e=t),n!==e.t&&r.classList.toggle(`selected`,e.t=n),e},{e:void 0,t:void 0}),e}}),null),Z(a,W(G,{get each(){return t()},children:(e,t)=>(()=>{var n=Kl();return Z(n,()=>E(e,t())),j(()=>n.classList.toggle(`hidden`,s()!==t())),n})()}),null),Z(a,W(K,{get when(){return r()},get children(){var n=Hl(),r=n.firstChild.firstChild,i=r.nextSibling.firstChild,a=i.nextSibling;return Z(r,W(G,{get each(){return t()},children:(e,t)=>(()=>{var n=ql(),r=n.firstChild;return Z(r,()=>e.title??e.question),Z(n,W(K,{get when(){return v(t())},get fallback(){return Jl()},children:e=>(()=>{var t=Yl();return Z(t,e),t})()}),null),n})()})),i.$$click=y,Z(i,()=>e.stopping?`stopping…`:`cancel`),a.$$click=b,j(t=>{var r=!l(),a=e.stopping;return r!==t.e&&n.classList.toggle(`hidden`,t.e=r),a!==t.t&&(i.disabled=t.t=a),t},{e:void 0,t:void 0}),n}}),null),j(()=>X(a,`aria-label`,e.request.title)),a})()}function Ad(e){let t=(e,t)=>(()=>{var n=Zl(),r=n.firstChild;return Z(r,e),Z(n,W(K,{get when(){return t.length>0},get fallback(){return Ql()},get children(){var e=Xl();return Z(e,t),e}}),null),n})();return W(ot,{title:`loaded context`,get onDismiss(){return e.onClose},get children(){return[W(K,{get when(){return e.error},get children(){var t=$l();return Z(t,()=>e.error),t}}),W(K,{get when(){return e.resources},get fallback(){return eu()},children:e=>(()=>{var n=nu();return Z(n,()=>t(`context files`,e().contextFiles.map(e=>(()=>{var t=ru();return Z(t,()=>yd(e.path)),j(()=>X(t,`title`,e.path)),t})())),null),Z(n,()=>t(`skills`,e().skills.map(e=>(()=>{var t=au(),n=t.firstChild;return Z(n,()=>e.name),Z(t,W(K,{get when(){return e.description},get children(){var t=iu();return t.firstChild,Z(t,()=>e.description,null),t}}),null),t})())),null),Z(n,()=>t(`extensions`,e().extensions.map(e=>(()=>{var t=ou(),n=t.firstChild,r=n.nextSibling;return r.firstChild,Z(n,()=>e.name??`extension`),Z(r,()=>yd(e.path),null),j(()=>X(t,`title`,e.path)),t})())),null),Z(n,()=>t(`prompt templates`,e().promptTemplates.map(e=>(()=>{var t=ru();return Z(t,()=>e.name),t})())),null),Z(n,W(K,{get when(){return e().systemPromptPresent},get children(){return tu()}}),null),n})()})]}})}function jd(e){let[t,n]=k([]),[r,i]=k(e.initialFilter??``),[a,o]=k((e.state?.scopedModels?.length??0)>0?`scoped`:`all`),[s,c]=k();R(async()=>{try{let{models:t}=await $.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 Td(d().filter(t=>!e||wd(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 $.setModel(e.sessionKey,t.provider,t.id);e.onSelected(n),e.onClose()}catch(e){c(e instanceof Error?e.message:String(e))}}return W(ot,{title:`select model`,get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[W(K,{get when(){return u()},get children(){var e=su(),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&&X(t,`aria-selected`,e.e=r),i!==e.t&&t.classList.toggle(`selected`,e.t=i),o!==e.a&&X(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=cu(),t=e.firstChild;return t.$$input=e=>i(e.currentTarget.value),j(()=>t.value=r()),e})(),W(K,{get when(){return s()},get children(){var e=$l();return Z(e,s),e}}),(()=>{var e=lu();return Z(e,W(K,{get when(){return f().length>0},get fallback(){return uu()},get children(){return W(G,{get each(){return f()},children:e=>(()=>{var t=du(),n=t.firstChild;return Z(n,()=>e.provider),Z(t,W(G,{get each(){return e.models},children:e=>(()=>{var t=mu(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling;return t.$$click=()=>m(e),Z(n,()=>p(e)?`✓`:``),Z(r,()=>e.id),Z(t,W(K,{get when(){return e.name},get children(){var t=fu();return Z(t,()=>e.name),t}}),i),Z(i,()=>e.provider),Z(t,W(K,{get when(){return e.reasoning},get children(){return pu()}}),null),j(n=>{var r=!!p(e),i=hd(e);return r!==n.e&&t.classList.toggle(`current`,n.e=r),i!==n.t&&X(t,`title`,n.t=i),n},{e:void 0,t:void 0}),t})()}),null),t})()})}})),e})()]}})}function Md(e){let t=[],n=[...e].reverse().map(e=>({node:e,depth:0}));for(;n.length>0;){let e=n.pop();if(!e)break;t.push(e);for(let t=e.node.children.length-1;t>=0;--t)n.push({node:e.node.children[t],depth:e.depth+1})}return t}function Nd(e){return W(ot,{title:`session tree`,get onDismiss(){return e.onClose},get children(){return[W(K,{get when(){return e.error},get children(){var t=$l();return Z(t,()=>e.error),t}}),W(K,{get when(){return e.roots.length>0},get fallback(){return(()=>{var t=gu();return Z(t,()=>e.loading?`loading tree…`:`No session entries yet.`),t})()},get children(){var t=hu();return Z(t,W(G,{get each(){return Md(e.roots)},children:({node:t,depth:n})=>(()=>{var r=vu(),i=r.firstChild,a=i.nextSibling;return r.$$click=()=>e.onNavigate(t.id),Ne(r,`padding-left`,`${12+n*18}px`),Z(i,()=>t.id.slice(0,8)),Z(a,()=>t.label??(t.preview||t.type)),Z(r,W(K,{get when(){return t.id===e.leafId},get children(){return _u()}}),null),j(()=>r.disabled=t.id===e.leafId),r})()})),t}})]}})}function Pd(e){return W(ot,{title:`resume session`,get onDismiss(){return e.onClose},get children(){return[W(K,{get when(){return e.error},get children(){var t=$l();return Z(t,()=>e.error),t}}),W(K,{get when(){return e.sessions.length>0},get fallback(){return(()=>{var t=gu();return Z(t,()=>e.loading?`loading sessions…`:`No other sessions found.`),t})()},get children(){var t=hu();return Z(t,W(G,{get each(){return e.sessions},children:t=>(()=>{var n=yu(),r=n.firstChild,i=r.nextSibling,a=i.firstChild;return n.$$click=()=>e.onResume(t.path),Z(r,()=>t.name??(t.firstMessage||t.path)),Z(i,()=>t.messageCount,a),n})()})),t}})]}})}function Fd(e){let[t,n]=k(e.initialPath);return W(ot,{title:`import session`,get onDismiss(){return e.onClose},get actions(){return[(()=>{var t=Dl();return je(t,`click`,e.onClose,!0),t})(),(()=>{var n=Su();return n.$$click=()=>e.onImport(t().trim()),j(()=>n.disabled=!t().trim()),n})()]},get children(){return[bu(),(()=>{var e=xu(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e})(),W(K,{get when(){return e.error},get children(){var t=$l();return Z(t,()=>e.error),t}})]}})}function Id(e){let t=()=>e.store.sessions[e.sessionKey],n=N(()=>e.store.fleet().runtimes.find(t=>t.key===e.sessionKey)),[r,i]=k(vl(e.sessionKey)??``),[a,o]=k(`steer`),[s,c]=k(!1),[l,u]=k(!1),[d,f]=k(!1),[p,m]=k(``),[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(),[L,ee]=k(0),[te,ne]=k(),[re,ie]=k(),[ae,B]=k(),[oe,V]=k(),[se,H]=k([]),[ce,le]=k(!1),[U,ue]=k(0),[de,fe]=k(),[pe,me]=k(),[he,ge]=k({steering:[],followUp:[]}),[_e,ve]=k([]),[ye,be]=k([]),[xe,Se]=k(),[Ce,we]=k(!1),[Te,q]=k([]),[Ee,De]=k(),[Oe,Y]=k(!1),[ke,je]=k([]),[Me,Ne]=k(null),[Fe,Ie]=k(!1),[Le,Re]=k(),[ze,Be]=k(!1),[Ve,He]=k([]),[Ue,We]=k(!1),[Ge,Ke]=k(),[qe,Je]=k(!1),[Ye,Xe]=k(``),[Ze,Qe]=k(),[$e,et]=k(!1),[tt,nt]=k(),rt,it,ct,lt,ut,dt,Q=!1,ft=0,pt=()=>t()?.closed,mt=()=>!pt()&&(t()?.streaming??!1),ht=()=>!pt()&&(t()?.compacting??!1),gt=()=>(t()?.statusEntries??[]).some(e=>e.key===`paused`),_t=()=>Object.values(t()?.backgroundAgents??{}).some(e=>e.status===`running`),vt=()=>!pt()&&(mt()||ht()||gt()||_t()),yt=()=>pt()?[]:(t()?.statusEntries??[]).filter(e=>e.key===`compaction`||e.key===`retry`),bt=zo({scroller:()=>rt});async function xt(t=!1){if(pt())return;let n=++ft,[r,i,a]=await Promise.allSettled([e.store.refreshRuntimeStats(e.sessionKey),$.performance(e.sessionKey),$.branch(e.sessionKey)]),o=t?await Promise.allSettled([$.dailyCost()]):void 0;if(Q||pt()||n!==ft)return;r.status===`fulfilled`&&ne(r.value),i.status===`fulfilled`&&ie(i.value),a.status===`fulfilled`&&B(a.value.branch),o?.[0]?.status===`fulfilled`&&V(o[0].value.cost);let s=[r,i,a,...o??[]].find(e=>e.status===`rejected`);s?.status===`rejected`&&P(s.reason instanceof Error?s.reason.message:String(s.reason))}async function St(){if(!pt())try{let{commands:t}=await $.commands(e.sessionKey);Q||H(t)}catch(e){!Q&&!pt()&&P(e instanceof Error?e.message:String(e))}}async function Ct(){E(!0),me(void 0);try{fe(await $.resources(e.sessionKey))}catch(e){me(e instanceof Error?e.message:String(e))}}async function wt(){if(!pt())try{ge(await $.pending(e.sessionKey))}catch(e){pt()||P(e instanceof Error?e.message:String(e))}}let Tt=new Set,Et=async t=>{let n=typeof t.id==`string`?t.id:void 0;if(!(n&&Tt.has(n))){n&&Tt.add(n);try{await $.extensionUiResponse(e.sessionKey,t),n&&e.store.resolveUiRequest(e.sessionKey,n)}catch(e){P(e instanceof Error?e.message:String(e))}finally{n&&Tt.delete(n)}}};function Dt(e){let t=atob(e);return Uint8Array.from(t,e=>e.charCodeAt(0))}function Ot(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 kt(e){return Ot(new Uint8Array(await e.arrayBuffer()))}function At(e){URL.revokeObjectURL(e.previewUrl)}function jt(){for(let e of _e())At(e);ve([])}function Mt(e){ve(t=>{let n=t[e];return n&&At(n),t.filter((t,n)=>n!==e)})}function Nt(e){if(_e().reduce((e,t)=>e+t.size,0)+e>Ut)throw Error(`Images too large: total inline images exceed ${Cd(Ut)}`)}function Pt(e,t,n){return{blob:e,mimeType:t,fileName:n,size:e.size,previewUrl:URL.createObjectURL(e)}}function Ft(e,t,n){let r=Dt(e.data);return Pt(new Blob([r],{type:e.mimeType}),e.mimeType,`queued-image-${t+1}-${n+1}`)}function It(e){return[...e.steeringMessages??e.steering.map(e=>({text:e})),...e.followUpMessages??e.followUp.map(e=>({text:e}))]}function Lt(e){let t=[];for(let[n,r]of e.entries())for(let[e,i]of(r.images??[]).entries())t.push(Ft(i,n,e));return t}function Rt(e){for(let t of e)At(t)}function zt(e){let t=e.map(e=>e.text).join(`
|
|
70
70
|
|
|
71
71
|
`),n=r();i([t,n].filter(e=>e.trim()).join(`
|
|
72
72
|
|
|
73
|
-
`))}async function Bt(){let t=[];try{let n=await $.pending(e.sessionKey);t.push(...Lt(It(n))),Nt(t.reduce((e,t)=>e+t.size,0))}catch(e){Rt(t),P(e instanceof Error?e.message:String(e));return}Rt(t);let n=[],r=!1;try{let t=It(await $.dequeue(e.sessionKey));ge({steering:[],followUp:[],steeringMessages:[],followUpMessages:[]}),zt(t);try{n.push(...Lt(t)),Nt(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&&(ve(e=>[...n,...e]),r=!0),queueMicrotask(()=>ct?.focus())}catch(e){r||Rt(n),P(e instanceof Error?e.message:String(e))}}function Vt(e){if(!e.type.startsWith(`image/`))throw Error(`Not an image: ${e.name||e.type}`);if(e.size>
|
|
74
|
-
`)),_e().length>0&&t.push([`Attached images included inline with this turn:`,..._e().map((e,t)=>`- image ${t+1}: ${e.fileName} (${
|
|
73
|
+
`))}async function Bt(){let t=[];try{let n=await $.pending(e.sessionKey);t.push(...Lt(It(n))),Nt(t.reduce((e,t)=>e+t.size,0))}catch(e){Rt(t),P(e instanceof Error?e.message:String(e));return}Rt(t);let n=[],r=!1;try{let t=It(await $.dequeue(e.sessionKey));ge({steering:[],followUp:[],steeringMessages:[],followUpMessages:[]}),zt(t);try{n.push(...Lt(t)),Nt(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&&(ve(e=>[...n,...e]),r=!0),queueMicrotask(()=>ct?.focus())}catch(e){r||Rt(n),P(e instanceof Error?e.message:String(e))}}function Vt(e){if(!e.type.startsWith(`image/`))throw Error(`Not an image: ${e.name||e.type}`);if(e.size>fd)throw Error(`Image too large: ${e.name||e.type} exceeds 10MB`);return Pt(e,e.type,e.name||`image`)}async function Ht(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>fd)throw Error(`Image too large: ${e.name||e.type} exceeds 10MB`)}Nt(t.reduce((e,t)=>e+t.size,0));for(let e of t)n.push(Vt(e));ve(e=>[...e,...n])}catch(e){for(let e of n)At(e);P(e instanceof Error?e.message:String(e))}}async function Wt(e){let t=bd(e,pd);try{return await $.listFiles(t),t}catch{return await $.mkdir(e,pd),t}}async function Gt(e){let t=[...e];if(t.length===0)return;let r=n()?.cwd;if(!r){P(`Cannot attach files until the runtime is loaded.`);return}P(void 0);try{let e=await Wt(r),n=[];for(let[r,i]of t.entries()){let t=Sd(i,r),a=await $.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})}be(e=>[...e,...n])}catch(e){P(e instanceof Error?e.message:String(e))}}async function Kt(){Y(!0),Re(void 0),je([]),Ie(!0);try{let t=await $.tree(e.sessionKey);je(t.roots),Ne(t.leafId)}catch(e){Re(e instanceof Error?e.message:String(e))}finally{Ie(!1)}}async function qt(t){Re(void 0);try{let n=await $.navigateTree(e.sessionKey,t);if(n.cancelled)return;n.editorText&&i(n.editorText),await e.store.hydrateSession(e.sessionKey),Y(!1)}catch(e){Re(e instanceof Error?e.message:String(e))}}async function Jt(){Be(!0),Ke(void 0),He([]),We(!0);try{He((await $.runtimeSessions(e.sessionKey)).sessions)}catch(e){Ke(e instanceof Error?e.message:String(e))}finally{We(!1)}}async function Yt(t){Ke(void 0);try{if((await $.resume(e.sessionKey,t)).cancelled)return;await e.store.hydrateSession(e.sessionKey),await e.store.refreshDiskSessions(),Be(!1)}catch(e){Ke(e instanceof Error?e.message:String(e))}}async function Xt(t){Qe(void 0);try{if((await $.importJsonl(e.sessionKey,t)).cancelled)return;await e.store.hydrateSession(e.sessionKey),await e.store.refreshDiskSessions(),Je(!1)}catch(e){Qe(e instanceof Error?e.message:String(e))}}async function Zt(){we(!0),De(void 0),q([]);try{let{messages:t}=await $.forkMessages(e.sessionKey);q(t)}catch(e){De(e instanceof Error?e.message:String(e))}}async function Qt(t,n){De(void 0);try{let r=await t();if(r.cancelled){De(n);return}r.text&&i(r.text),await e.store.hydrateSession(e.sessionKey),await e.store.refreshDiskSessions(),we(!1)}catch(e){De(e instanceof Error?e.message:String(e))}}let $t=t=>Qt(()=>$.fork(e.sessionKey,t),`Fork cancelled — no new branch was created.`);async function en(){if(!pt()){et(!0),nt(void 0);try{ne(await $.stats(e.sessionKey))}catch(e){nt(e instanceof Error?e.message:String(e))}}}R(()=>{let t=new AbortController;pt()||e.store.hydrateSession(e.sessionKey,t.signal).catch(e=>{t.signal.aborted&&hl(e)||pt()||P(e instanceof Error?e.message:String(e))}),xt(!0),St(),wt();let n=setInterval(()=>void xt(!1),5e3);z(()=>{Q=!0,t.abort(),clearInterval(n)})});let tn=e=>{if(!$e())return;let t=e.target;t&&dt?.contains(t)||et(!1)},nn=e=>{e.key===`Escape`&&et(!1)};document.addEventListener(`mousedown`,tn),document.addEventListener(`keydown`,nn),z(()=>{document.removeEventListener(`mousedown`,tn),document.removeEventListener(`keydown`,nn)});let rn=setInterval(()=>{let e=t()?.workingSince;ee(e?Math.floor((Date.now()-e)/1e3):0)},1e3);z(()=>{clearInterval(rn),bt.dispose(),jt()}),M(()=>{pt()&&(f(!1),S(!1),w(!1),E(!1),we(!1),Y(!1),Be(!1),Je(!1),g(!1),b(!1))}),M(()=>{let e=t()?.composerPrefill;e&&i(e)}),M(()=>{r(),ct&&queueMicrotask(()=>ct&&Ed(ct))}),M(()=>{e.store.revisions[e.sessionKey],t()?.entries.length,bt.notifyContentChanged()}),R(()=>{bt.observeContent(it),bt.observeViewport(rt),rt&&z(Vo(bt,rt,{keyboard:`window`}))});let an=!1;M(()=>{let e=mt();an&&!e&&xt(!0),an!==e&&wt(),an=e});let on=!1;M(()=>{let e=ht();on&&!e&&xt(!0),on=e}),M(()=>{n()?.state.pendingMessageCount,wt()}),M(()=>{yl(e.sessionKey,r())});function sn(e){let t=[];return ye().length>0&&t.push([`Attached files uploaded to the host (paths only; inspect deliberately if needed):`,...ye().map(e=>`- ${e.path} (${e.fileName}, ${Cd(e.size)}, ${e.mimeType||`unknown type`})`)].join(`
|
|
74
|
+
`)),_e().length>0&&t.push([`Attached images included inline with this turn:`,..._e().map((e,t)=>`- image ${t+1}: ${e.fileName} (${Cd(e.size)}, ${e.mimeType})`)].join(`
|
|
75
75
|
`)),[e,...t].filter(e=>e.trim()).join(`
|
|
76
76
|
|
|
77
|
-
`)}function sn(e,t,n=`/${e}`){return t?(I(`Usage: ${n}`),!0):!1}function cn(){let t=document.createElement(`a`);t.href=$.exportHtmlUrl(e.sessionKey),t.download=``,document.body.append(t),t.click(),t.remove()}let ln={settings:async t=>{sn(`settings`,t)||e.store.navigate({screen:`settings`})},"scoped-models":async t=>{if(sn(`scoped-models`,t))return;let r=n()?.cwd;if(!r)throw Error(`Cannot open scoped models: the runtime project directory is unavailable`);e.store.navigate({screen:`settings`,target:`scoped-models`,cwd:r})},model:async e=>{m(e),f(!0)},export:async e=>{sn(`export`,e)||cn()},import:async e=>{Xe(e),Qe(void 0),Je(!0)},name:async t=>{t?await $.rename(e.sessionKey,t):w(!0)},session:async e=>{sn(`session`,e)||(v(!1),await $t())},fork:async e=>{sn(`fork`,e)||await Zt()},tree:async e=>{sn(`tree`,e)||await Kt()},new:async t=>{if(!sn(`new`,t)){if(mt()||ht()){I(`Wait for the current operation to finish before starting a new session.`);return}(await $.newSession(e.sessionKey)).cancelled?I(`New session cancelled.`):(await e.store.hydrateSession(e.sessionKey),await e.store.refreshDiskSessions())}},compact:async t=>{t?(await $.compact(e.sessionKey,t),I(`Compaction started.`)):S(!0)},dream:async t=>{let n=await $.dream(e.sessionKey,t||void 0);I(n.message)},resume:async e=>{sn(`resume`,e)||await Jt()},reload:async t=>{if(sn(`reload`,t))return;if(mt()||ht()){I(`Wait for the current operation to finish before reloading.`);return}await $.reload(e.sessionKey);let[{commands:n}]=await Promise.all([$.commands(e.sessionKey),e.store.hydrateSession(e.sessionKey)]);H(n),I(`Reloaded extensions, skills, prompts, themes, and settings.`)},quit:async e=>{sn(`quit`,e)||await fn()}};async function un(){let t=r().trim();if(!t&&ye().length===0&&_e().length===0)return;P(void 0),I(void 0);let n=dl(t,se());if(n){if(ye().length>0||_e().length>0){I(`Remove attachments before running a built-in command; nothing was sent or discarded.`);return}try{await fl(n,ln,I),i(``),Se(void 0)}catch(e){P(e instanceof Error?e.message:String(e))}return}let o=on(t||`Please review the attached item(s). `);try{let t=_e(),n=t.length>0?await Promise.all(t.map(async({blob:e,mimeType:t})=>({data:await kt(e),mimeType:t}))):void 0;mt()?await $.prompt(e.sessionKey,o,a(),n):n?await $.prompt(e.sessionKey,o,void 0,n):await $.prompt(e.sessionKey,o),xl(e.sessionKey,o),Se(void 0),i(``),jt(),be([]),wt()}catch(e){P(e instanceof Error?e.message:String(e))}}async function dn(){c(!0);try{await $.abort(e.sessionKey),await Bt()}catch(e){P(e instanceof Error?e.message:String(e))}finally{c(!1)}}async function fn(){if(!l()){u(!0),P(void 0);try{await e.store.stopRuntime(e.sessionKey)}catch(e){P(e instanceof Error?e.message:String(e))}finally{u(!1)}}}async function pn(t){try{t===`compaction`?await $.abortCompaction(e.sessionKey):t===`retry`&&await $.abortRetry(e.sessionKey)}catch(e){P(e instanceof Error?e.message:String(e))}}function mn(e){rt?.querySelectorAll(`details.tool`).forEach(t=>{t.open=e})}let hn=()=>pt()?[]:Object.values(t()?.backgroundAgents??{}).filter(e=>e.status===`running`),gn=()=>Object.values(t()?.backgroundAgents??{}).filter(e=>pt()||e.status!==`running`),_n=()=>Object.values(t()?.backgroundAgents??{}).sort((e,t)=>Date.parse(t.startedAt)-Date.parse(e.startedAt)),vn=()=>t()?.tasks??[],yn=()=>vn().filter(e=>e.status===`completed`).length,bn=()=>te()?.contextUsage??n()?.state.contextUsage,xn=()=>typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 700px)`).matches,Sn=()=>t()?.sessionName??n()?.state.sessionName,Cn=()=>Sn()??t()?.title??e.sessionKey,wn=()=>n()?.cwd??pt()?.cwd,Tn=()=>{let e=wn();if(!e)return;let t=ae();return`${vd(e)}${t?` (${t})`:``}`},En=()=>{let e=Tn(),t=Sn();return e&&t?`${e} • ${t}`:e??t??`session`},Dn=()=>{let e=te()?.tokens;if(!e)return;let t=[];return e.input&&t.push(`↑${hd(e.input)}`),e.output&&t.push(`↓${hd(e.output)}`),e.cacheRead&&t.push(`R${hd(e.cacheRead)}`),e.cacheWrite&&t.push(`W${hd(e.cacheWrite)}`),t.length>0?t.join(` `):void 0},On=()=>{let e=te()?.cost??0,t=n()?.state.usingSubscription??!1;if(!e&&!t)return;let r=`$${e.toFixed(3)}${t?` (sub)`:``}`,i=oe();return i!==void 0&&i>e&&(r+=`, today: $${i.toFixed(2)}`),r},kn=()=>{let e=bn();if(e)return`ctx ${e.percent===null?`?`:`${e.percent.toFixed(0)}%`}/${hd(e.contextWindow)}`},An=()=>_d(re(),n()?.state.model),jn=()=>[Dn(),On(),kn(),An()].filter(Boolean),Mn=()=>[...(he().steeringMessages??he().steering.map(e=>({text:e}))).map(e=>({kind:`steer`,text:e.images?.length?`${e.text} (${e.images.length} image(s))`:e.text})),...(he().followUpMessages??he().followUp.map(e=>({text:e}))).map(e=>({kind:`follow-up`,text:e.images?.length?`${e.text} (${e.images.length} image(s))`:e.text}))],Nn=()=>{let e=r();if(ce()||!e.startsWith(`/`))return;let t=e.slice(1);if(!/\s/.test(t))return t.toLowerCase()},Pn=N(()=>{let e=Nn();return e===void 0?[]:pl(se(),e)}),Fn=()=>Pn().length>0,In=e=>{i(`/${e.name} `),le(!0),queueMicrotask(()=>ct?.focus())};M(()=>{let e=Pn().length;U()>=e&&ue(Math.max(0,e-1))});let Ln=N(()=>{let r=[],i=pt();if(i&&!i.bannerDismissed){let t=i.resumeError?`\nResume failed: ${i.resumeError}`:``,n=[];i.cwd&&i.sessionFile&&n.push({label:i.resuming?`resuming…`:`Resume session`,run:()=>e.store.resumeClosedSession(e.sessionKey),disabled:i.resuming}),n.push({label:`Return to fleet`,run:()=>e.store.navigate({screen:`fleet`}),disabled:i.resuming}),r.push({key:`closed`,text:`session ${e.sessionKey} was closed${t}`,tone:i.resumeError?`error`:`warning`,onDismiss:()=>e.store.dismissClosedBanner(e.sessionKey),actions:n})}let a=n()?.state.modelFallbackMessage;a&&!D()&&r.push({key:`fallback`,text:a,tone:`warning`,onDismiss:()=>O(!0)});for(let n of t()?.statusEntries??[])n.dismissed||r.push({key:`status:${n.id}`,text:n.text,tone:n.tone,onDismiss:()=>e.store.dismissStatusBanner(e.sessionKey,n.id)});for(let n of t()?.toasts??[])r.push({key:`toast:${n.id}`,text:n.text,tone:n.tone,onDismiss:()=>e.store.dismissToast(n.id)});return A()&&r.push({key:`action-error`,text:A(),tone:`error`,onDismiss:()=>P(void 0)}),F()&&r.push({key:`action-notice`,text:F(),tone:`info`,onDismiss:()=>I(void 0)}),r});return(()=>{var c=Ku(),u=c.firstChild,D=u.firstChild,O=D.firstChild.nextSibling,k=O.nextSibling,A=u.nextSibling,M=A.firstChild,N=A.nextSibling,F=N.firstChild,I=F.firstChild;Z(O,Cn),Z(D,W(K,{get when(){return!_()},get children(){var e=Cu();return Z(e,(()=>{var e=J(()=>!!wn());return()=>e()?vd(wn()):void 0})()),e}}),k),Z(D,W(at,{get store(){return e.store},class:`session-connection-indicator`}),k),Z(D,W(K,{get when(){return J(()=>!_())()&&!pt()},get children(){var t=Tu(),r=t.firstChild,i=r.firstChild.nextSibling.nextSibling,a=r.nextSibling;a.firstChild.nextSibling;var o=a.nextSibling;return r.$$click=()=>f(!0),Z(i,()=>pd(n()?.state.model)),a.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=ud[(ud.indexOf(t)+1)%ud.length];try{let t=await $.setThinking(e.sessionKey,r);e.store.setRuntimeThinkingLevel(e.sessionKey,r,t.settingsRevision)}catch(e){P(e instanceof Error?e.message:String(e))}},Z(a,()=>n()?.state.thinkingLevel??`—`,null),Z(t,W(K,{get when(){return bn()},get children(){var e=wu();return e.firstChild.nextSibling,Z(e,(()=>{var e=J(()=>bn().percent===null);return()=>e()?`?`:`${bn().percent.toFixed(0)}%`})(),null),e}}),o),o.$$click=()=>g(!h()),j(()=>X(r,`title`,md(n()?.state.model))),t}}),k),k.$$click=()=>v(!_()),Z(k,()=>_()?`details ▾`:`details ▴`),Z(u,W(K,{get when(){return!_()},get children(){return[(()=>{var e=Du(),t=e.firstChild,n=t.nextSibling;return Z(t,En),n.$$click=$t,Z(n,W(G,{get each(){return jn()},children:e=>(()=>{var t=qu();return Z(t,e),t})()})),Z(e,W(K,{get when(){return $e()},get children(){var e=Eu(),t=dt;return typeof t==`function`?Pe(t,e):dt=e,Z(e,W(K,{get when(){return tt()},get children(){var e=$l();return Z(e,tt),e}}),null),Z(e,W(K,{get when(){return te()},get fallback(){return Ju()},children:e=>(()=>{var t=Yu(),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,Z(n,()=>e().userMessages),Z(r,()=>e().assistantMessages),Z(i,()=>e().toolCalls,a),Z(i,()=>e().toolResults,null),Z(o,()=>hd(e().tokens.input),s),Z(o,()=>hd(e().tokens.output),null),Z(c,()=>hd(e().tokens.cacheRead),l),Z(c,()=>hd(e().tokens.cacheWrite),null),Z(u,()=>hd(e().tokens.total)),Z(d,()=>e().cost.toFixed(4),null),t})()}),null),e}}),null),j(()=>n.disabled=!!pt()),e})(),W(K,{get when(){return h()},get children(){var t=Au(),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=()=>mn(!0),o.$$click=()=>mn(!1),s.$$click=()=>w(!0),c.$$click=Zt,u.$$click=Ct,Z(t,W(K,{get when(){return xn()},get children(){return[(()=>{var e=Ou();return e.firstChild,e.$$click=()=>f(!0),Z(e,()=>pd(n()?.state.model),null),e})(),(()=>{var t=ku();return t.firstChild,t.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=ud[(ud.indexOf(t)+1)%ud.length];try{let t=await $.setThinking(e.sessionKey,r);e.store.setRuntimeThinkingLevel(e.sessionKey,r,t.settingsRevision)}catch(e){P(e instanceof Error?e.message:String(e))}},Z(t,()=>n()?.state.thinkingLevel??`—`,null),t})()]}}),d),d.$$click=fn,Z(d,()=>l()?`stopping runtime…`:`stop runtime`),j(t=>{var n=$.exportHtmlUrl(e.sessionKey),i=l();return n!==t.e&&X(r,`href`,t.e=n),i!==t.t&&(d.disabled=t.t=i),t},{e:void 0,t:void 0}),t}})]}}),null),Z(c,W(st,{get banners(){return Ln()}}),A);var R=rt;typeof R==`function`?Pe(R,A):rt=A;var z=it;return typeof z==`function`?Pe(z,M):it=M,Z(M,W(K,{get when(){return t()},get fallback(){return Xu()},get children(){return[W(G,{get each(){return t().widgets.above},children:e=>(()=>{var t=Zu();return Z(t,e),t})()}),W(Oc,{get entries(){return t().entries},get resetKey(){return e.sessionKey},get imageScope(){return{runtimeKey:e.sessionKey}}}),W(K,{get when(){return t().uiRequests.find(e=>e.method===`ask`)},children:e=>W(Od,{get request(){return e()},onRespond:Et,onStop:()=>void dn(),get stopping(){return s()}})}),W(G,{get each(){return t().widgets.below},children:e=>(()=>{var t=Zu();return Z(t,e),t})()})]}})),I.$$click=()=>b(!y()),Z(I,(()=>{var e=J(()=>!!pt());return()=>e()?`closed`:y()?`compose ▴`:`compose ▾`})()),Z(F,W(K,{get when(){return y()},get children(){var e=ju();return Z(e,(()=>{var e=J(()=>!!vt());return()=>e()?`agent working — open controls to stop or steer`:J(()=>Mn().length>0)()?`${Mn().length} queued message(s)`:`composer hidden for transcript reading`})()),e}}),null),Z(N,W(K,{get when(){return!y()},get children(){var n=Wu();return Z(n,W(K,{get when(){return vn().length>0||hn().length+gn().length>0||vt()||yt().length>0},get children(){var n=Lu();return Z(n,W(K,{get when(){return vn().length>0},get children(){var e=Mu(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;r.nextSibling;var i=t.nextSibling;return Z(t,yn,n),Z(t,()=>vn().length,r),Z(i,W(G,{get each(){return vn()},children:e=>(()=>{var t=Qu(),n=t.firstChild;return Z(t,(()=>{var t=J(()=>e.status===`completed`);return()=>t()?`☑`:e.status===`in_progress`?`⧖`:`☐`})(),n),Z(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=!xn()),e}}),null),Z(n,W(K,{get when(){return hn().length+gn().length>0},get children(){var t=Nu(),n=t.firstChild,r=n.firstChild.nextSibling,i=r.nextSibling.nextSibling;i.nextSibling;var a=n.nextSibling;return Z(n,()=>hn().length,r),Z(n,()=>gn().length,i),Z(a,W(G,{get each(){return _n()},children:t=>(()=>{var n=$u(),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}),Z(i,(()=>{var e=J(()=>t.status===`running`);return()=>e()?pt()?`○`:`●`:t.status===`completed`?`✓`:`✕`})()),Z(a,()=>t.agentType,o),Z(a,()=>t.taskSummary,null),Z(a,W(K,{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(()=>Ae(i,t.status===`running`&&!pt()?`live`:`done`)),n})()})),j(()=>t.open=!xn()),t}}),null),Z(n,W(K,{get when(){return vt()||yt().length>0},get children(){var e=Iu();return Z(e,W(K,{get when(){return mt()},get children(){var e=Pu();return e.firstChild,Z(e,(()=>{var e=J(()=>!!t()?.workingText);return()=>e()?` — ${t().workingText}`:``})(),null),Z(e,(()=>{var e=J(()=>L()>2);return()=>e()?` (${L()}s)`:``})(),null),e}}),null),Z(e,W(G,{get each(){return yt()},children:e=>(()=>{var t=ed();return t.firstChild,t.$$click=()=>pn(e.key),Z(t,()=>e.key,null),t})()}),null),Z(e,W(K,{get when(){return vt()},get children(){var e=Fu();return e.$$click=dn,Z(e,()=>s()?`stopping…`:`■ stop`),j(()=>e.disabled=s()),e}}),null),e}}),null),n}}),null),Z(n,W(K,{get when(){return!pt()},get fallback(){return td()},get children(){var n=Uu(),s=n.firstChild,c=s.nextSibling,l=c.firstChild,u=l.nextSibling,d=u.nextSibling,f=d.nextSibling,p=f.nextSibling;Z(n,W(K,{get when(){return Mn().length>0},get children(){var e=Ru(),t=e.firstChild;return Z(e,W(G,{get each(){return Mn()},children:e=>(()=>{var t=nd(),n=t.firstChild;return Z(n,()=>e.kind),Z(t,()=>e.text,null),j(()=>X(t,`title`,e.text)),t})()}),t),t.$$click=Bt,e}}),s),Z(n,W(K,{get when(){return ye().length>0||_e().length>0},get children(){var e=zu();return Z(e,W(G,{get each(){return ye()},children:(e,t)=>(()=>{var n=rd(),r=n.firstChild;r.firstChild;var i=r.nextSibling,a=i.nextSibling;return Z(r,()=>e.fileName,null),Z(i,()=>Sd(e.size)),a.$$click=()=>be(e=>e.filter((e,n)=>n!==t())),j(()=>X(n,`title`,e.path)),n})()}),null),Z(e,W(G,{get each(){return _e()},children:(e,t)=>(()=>{var n=id(),r=n.firstChild,i=r.nextSibling;return i.$$click=()=>Mt(t()),j(t=>{var i=`${e.fileName} (${Sd(e.size)})`,a=e.previewUrl,o=e.fileName;return i!==t.e&&X(n,`title`,t.e=i),a!==t.t&&X(r,`src`,t.t=a),o!==t.a&&X(r,`alt`,t.a=o),t},{e:void 0,t:void 0,a:void 0}),n})()}),null),e}}),s),Z(n,W(K,{get when(){return Fn()},get children(){var e=Bu();return Z(e,W(G,{get each(){return Pn()},children:(e,t)=>(()=>{var n=od(),r=n.firstChild;r.firstChild;var i=r.nextSibling;return n.$$click=()=>In(e),n.addEventListener(`mouseenter`,()=>ue(t())),Z(r,()=>e.name,null),Z(n,W(K,{get when(){return e.description},get children(){var t=ad();return Z(t,()=>e.description),t}}),i),Z(i,()=>e.source),j(e=>{var r=`command-option-${t()}`,i=U()===t(),a=U()===t();return r!==e.e&&X(n,`id`,e.e=r),i!==e.t&&X(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}}),s),s.$$keydown=t=>{if(Fn()){if(t.key===`ArrowDown`){t.preventDefault(),ue((U()+1)%Pn().length);return}if(t.key===`ArrowUp`){t.preventDefault(),ue((U()-1+Pn().length)%Pn().length);return}if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey&&!xn()){t.preventDefault();let e=Pn()[U()];e&&t.key===`Enter`&&r()===`/${e.name}`?(le(!0),un()):e&&In(e);return}if(t.key===`Escape`){t.preventDefault(),le(!0);return}}if((t.key===`ArrowUp`||t.key===`ArrowDown`)&&(r()===``||xe()!==void 0)){let n=bl(e.sessionKey);if(n.length>0){if(t.preventDefault(),t.key===`ArrowUp`){let e=xe()===void 0?n.length-1:Math.max(0,xe()-1);Se(e),i(n[e]??``)}else if(xe()!==void 0){let e=xe()+1;e>=n.length?(Se(void 0),i(``)):(Se(e),i(n[e]??``))}}return}t.key===`Enter`&&!t.shiftKey&&!xn()&&(t.preventDefault(),un())},s.$$input=e=>{le(!1),ue(0),Se(void 0),i(e.currentTarget.value),Td(e.currentTarget)},s.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(),Ht(t))});var m=ct;typeof m==`function`?Pe(m,s):ct=s,l.addEventListener(`change`,e=>{Gt(e.currentTarget.files??[]),e.currentTarget.value=``});var h=lt;typeof h==`function`?Pe(h,l):lt=l,u.addEventListener(`change`,e=>{Ht(e.currentTarget.files??[]),e.currentTarget.value=``});var g=ut;return typeof g==`function`?Pe(g,u):ut=u,d.$$click=()=>lt?.click(),f.$$click=()=>ut?.click(),Z(c,W(K,{get when(){return mt()},get children(){var e=Vu(),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}}),p),Z(c,W(K,{get when(){return t()?.suggestedCommand},get children(){var e=Hu(),n=e.firstChild.nextSibling;return e.$$click=()=>i(t().suggestedCommand),Z(n,()=>t().suggestedCommand),e}}),p),p.$$click=un,j(e=>{var t=mt()?`Message dreb — sends as steer while it works…`:`Message dreb…`,n=Fn()?`command-listbox`:void 0,r=Fn()?`command-option-${U()}`:void 0;return t!==e.e&&X(s,`placeholder`,e.e=t),n!==e.t&&X(s,`aria-controls`,e.t=n),r!==e.a&&X(s,`aria-activedescendant`,e.a=r),e},{e:void 0,t:void 0,a:void 0}),j(()=>s.value=r()),n}}),null),n}}),null),Z(c,W(K,{get when(){return t()?.uiRequests.find(e=>e.method!==`ask`)},keyed:!0,children:e=>W(Ed,{request:e,onRespond:Et})}),null),Z(c,W(K,{get when(){return d()},get children(){return W(Ad,{get sessionKey(){return e.sessionKey},get state(){return n()?.state},get initialFilter(){return p()},onClose:()=>{f(!1),m(``)},onSelected:({provider:t,id:n,settingsRevision:r})=>e.store.setRuntimeModel(e.sessionKey,{provider:t,id:n},r)})}}),null),Z(c,W(K,{get when(){return x()},get children(){return W(ot,{title:`compact context`,onDismiss:()=>S(!1),get actions(){return[(()=>{var e=Dl();return e.$$click=()=>S(!1),e})(),(()=>{var t=sd();return t.$$click=async()=>{S(!1);try{await $.compact(e.sessionKey)}catch(e){P(e instanceof Error?e.message:String(e))}},t})()]},get children(){return Gu()}})}}),null),Z(c,W(K,{get when(){return T()},get children(){return W(kd,{get resources(){return de()},get error(){return pe()},onClose:()=>E(!1)})}}),null),Z(c,W(K,{get when(){return Ce()},get children(){return W(ot,{title:`fork from message`,onDismiss:()=>we(!1),get children(){return[W(K,{get when(){return Ee()},get children(){var e=$l();return Z(e,Ee),e}}),W(K,{get when(){return Te().length>0},get fallback(){return cd()},get children(){var e=hu();return Z(e,W(G,{get each(){return Te()},children:e=>(()=>{var t=vu(),n=t.firstChild,r=n.nextSibling;return t.$$click=()=>Qt(e.entryId),Z(n,()=>e.entryId),Z(r,()=>e.text),t})()})),e}})]}})}}),null),Z(c,W(K,{get when(){return Oe()},get children(){return W(Md,{get roots(){return ke()},get leafId(){return Me()},get loading(){return Fe()},get error(){return Le()},onClose:()=>Y(!1),onNavigate:qt})}}),null),Z(c,W(K,{get when(){return ze()},get children(){return W(Nd,{get sessions(){return Ve()},get loading(){return Ue()},get error(){return Ge()},onClose:()=>Be(!1),onResume:Yt})}}),null),Z(c,W(K,{get when(){return qe()},get children(){return W(Pd,{get initialPath(){return Ye()},get error(){return Ze()},onClose:()=>Je(!1),onImport:Xt})}}),null),Z(c,W(K,{get when(){return C()},get children(){return W(Id,{get current(){return Sn()??``},onClose:()=>w(!1),onRename:async t=>{try{await $.rename(e.sessionKey,t),w(!1)}catch(e){P(e instanceof Error?e.message:String(e))}}})}}),null),j(e=>{var t=!!_(),n=_()?`show session details`:`hide session details`,r=!!y(),i=pt()?`closed session transcript`:y()?`show composer and controls`:`hide composer and controls`,a=!!pt();return t!==e.e&&u.classList.toggle(`collapsed`,e.e=t),n!==e.t&&X(k,`title`,e.t=n),r!==e.a&&N.classList.toggle(`collapsed`,e.a=r),i!==e.o&&X(I,`title`,e.o=i),a!==e.i&&(I.disabled=e.i=a),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),c})()}function Id(e){let[t,n]=k(e.current);return W(ot,{title:`rename session`,get onDismiss(){return e.onClose},get actions(){return[(()=>{var t=Dl();return je(t,`click`,e.onClose,!0),t})(),(()=>{var n=ld();return n.$$click=()=>e.onRename(t().trim()),j(()=>n.disabled=!t().trim()),n})()]},get children(){var e=Tl(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e}})}ke([`input`,`click`,`keydown`]);var Ld=Y(`<div class=settings-error>`),Rd=Y(`<p class=muted>Loading scoped models…`),zd=Y(`<section class="settings-section scoped-models-editor"tabindex=-1 aria-labelledby=scoped-models-heading><h2 id=scoped-models-heading>scoped models</h2><p class="muted small">Controls model cycling for new sessions only; running sessions are never changed. Writes always update global settings, while the selected context shows effective global-plus-project settings.</p><label class=scoped-models-context><span>project context</span><select><option value>global / home`),Bd=Y(`<option>`),Vd=Y(`<div class=settings-warning>This project defines enabledModels in .dreb/settings.json and shadows global writes.`),Hd=Y(`<div class=scoped-models-toolbar><input type=search aria-label="Search available models"placeholder="search provider, model, or name…"><button type=button class="btn btn-small">enable all`),Ud=Y(`<div class=scoped-models-grid><div class=scoped-models-order><h3>cycling order</h3><p class="muted small"></p></div><div class=scoped-models-available><h3>available models`),Wd=Y(`<span class="muted small">unsaved changes`),Gd=Y(`<span class="muted small">✓ saved`),Kd=Y(`<div class=scoped-models-actions><button type=button class="btn btn-small">reset</button><button type=button class="btn btn-primary btn-small">`),qd=Y(`<div class=settings-warning>`),Jd=Y(`<div class=scoped-model-order-row><span></span><div class=scoped-model-move-controls><button type=button>↑</button><button type=button>↓`),Yd=Y(`<p class="muted small">No matching models.`),Xd=Y(`<section class=scoped-model-provider><label class=scoped-model-provider-heading><input type=checkbox><span>`),Zd=Y(`<span class=model-name>`),Qd=Y(`<label class=scoped-model-choice><input type=checkbox><span class=model-id>`);function $d(e){return`${e.provider}/${e.id}`}function ef(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].map(([e,t])=>({provider:e,models:t}))}function tf(e){let[t,n]=k(``),[r,i]=k(!0),[a,o]=k([]),[s,c]=k(!1),[l,u]=k(!1),[d,f]=k(!1),[p,m]=k(),[h,g]=k([]),_,v,y,b=()=>e.cwd??``,[x,{mutate:S}]=F(b,async e=>{let t=e||void 0,[n,r]=await Promise.all([$.settings(t),$.settingsModels(t)]);return{cwd:e,settings:n,models:r.models}}),C=N(()=>{if(x.error)return;let e=x();return e?.cwd===b()?e:void 0});function w(e,t){let n=e.enabledModels===void 0;i(n),o(n?t.map($d):e.resolvedScopedModels.map(e=>`${e.provider}/${e.id}`)),c(!1),f(!1),m(void 0),g([])}let T=b();M(()=>{let e=b();e!==T&&(T=e,v=void 0,y=void 0,c(!1),f(!1),m(void 0),g([]))}),M(()=>{let e=C();!e||e.cwd===v&&e.settings===y||(v=e.cwd,y=e.settings,w(e.settings,e.models))}),M(()=>{!e.focused||!_||(_.scrollIntoView({block:`start`}),_.focus({preventScroll:!0}))});let E=N(()=>new Set(a())),D=N(()=>{let t=new Set(e.projectRoots);return e.cwd&&t.add(e.cwd),[...t].sort((e,t)=>e.localeCompare(t))}),O=N(()=>{let e=t().trim().toLowerCase();return ef((C()?.models??[]).filter(t=>!e||`${t.provider}/${t.id} ${t.name??``}`.toLowerCase().includes(e)))}),A=N(()=>{if((C()?.models.length??0)===0)return`No available models were reported for this context.`;if(!r()&&a().length===0)return`At least one model must remain enabled.`}),P=N(()=>{let e=C()?.settings;if(!e?.enabledModels)return;let t=e.resolvedScopedModels.map(e=>`${e.provider}/${e.id}`);return e.enabledModels.length===t.length&&e.enabledModels.every((e,n)=>e===t[n])&&e.scopeWarnings.length===0?void 0:`Saving an edited legacy scope replaces patterns and per-pattern thinking suffixes with exact provider/model references.`});function I(e){let t=C()?.models.map($d)??[],n=t.length>0&&t.every(t=>e.includes(t));i(n),o(n?t:e),c(!0),f(!1),m(void 0)}function L(e){let t=r()?C()?.models.map($d)??[]:a();I(t.includes(e)?t.filter(t=>t!==e):[...t,e])}function R(e){let t=(C()?.models??[]).filter(t=>t.provider===e).map($d),n=r()?C()?.models.map($d)??[]:a();I(t.every(e=>n.includes(e))?n.filter(e=>!t.includes(e)):[...n,...t.filter(e=>!n.includes(e))])}function z(e,t){if(r())return;let n=e+t;if(n<0||n>=a().length)return;let i=[...a()];[i[e],i[n]]=[i[n],i[e]],o(i),c(!0),f(!1)}function ee(){let e=C();e&&w(e.settings,e.models)}async function te(){let e=C();if(!e||!s()||A())return;u(!0),m(void 0),g([]),f(!1);let t=e.cwd||void 0;try{let n=await $.saveSettings({enabledModels:r()?null:a()},t);if(b()!==e.cwd)return;v=e.cwd,y=n,S({cwd:e.cwd,settings:n,models:e.models}),w(n,e.models),g(n.warnings??[]),f(!0)}catch(t){b()===e.cwd&&m(t instanceof Error?t.message:String(t))}finally{u(!1)}}return(()=>{var i=zd(),o=i.firstChild.nextSibling.nextSibling.firstChild.nextSibling;o.firstChild;var c=_;return typeof c==`function`?Pe(c,i):_=i,o.addEventListener(`change`,t=>e.onCwdChange(t.currentTarget.value||void 0)),Z(o,W(G,{get each(){return D()},children:e=>(()=>{var t=Bd();return t.value=e,Z(t,e),t})()}),null),Z(i,W(K,{get when(){return x.error},get children(){var e=Ld();return Z(e,(()=>{var e=J(()=>x.error instanceof Error);return()=>e()?x.error.message:String(x.error)})()),e}}),null),Z(i,W(K,{get when(){return x.loading},get children(){return Rd()}}),null),Z(i,W(K,{get when(){return C()},children:e=>[W(K,{get when(){return e().settings.hasProjectEnabledModelsOverride},get children(){return Vd()}}),W(K,{get when(){return P()},children:e=>(()=>{var t=qd();return Z(t,e),t})()}),W(G,{get each(){return e().settings.scopeWarnings},children:e=>(()=>{var t=qd();return Z(t,()=>e.message),t})()}),W(G,{get each(){return h()},children:e=>(()=>{var t=qd();return Z(t,e),t})()}),W(K,{get when(){return p()},children:e=>(()=>{var t=Ld();return Z(t,e),t})()}),W(K,{get when(){return A()},children:e=>(()=>{var t=Ld();return Z(t,e),t})()}),(()=>{var i=Hd(),a=i.firstChild,o=a.nextSibling;return a.$$input=e=>n(e.currentTarget.value),o.$$click=()=>I(e().models.map($d)),j(()=>o.disabled=r()),j(()=>a.value=t()),i})(),(()=>{var t=Ud(),n=t.firstChild,i=n.firstChild.nextSibling,o=n.nextSibling;return o.firstChild,Z(i,(()=>{var e=J(()=>!!r());return()=>e()?`All available models, in registry order (future models included).`:`${a().length} enabled model${a().length===1?``:`s`}.`})()),Z(n,W(G,{get each(){return a()},children:(e,t)=>(()=>{var n=Jd(),i=n.firstChild,o=i.nextSibling.firstChild,s=o.nextSibling;return X(i,`title`,e),Z(i,e),o.$$click=()=>z(t(),-1),X(o,`aria-label`,`Move ${e} up`),s.$$click=()=>z(t(),1),X(s,`aria-label`,`Move ${e} down`),j(e=>{var n=r()||t()===0,i=r()||t()===a().length-1;return n!==e.e&&(o.disabled=e.e=n),i!==e.t&&(s.disabled=e.t=i),e},{e:void 0,t:void 0}),n})()}),null),Z(o,W(K,{get when(){return O().length>0},get fallback(){return Yd()},get children(){return W(G,{get each(){return O()},children:t=>(()=>{var n=Xd(),r=n.firstChild.firstChild,i=r.nextSibling;return r.addEventListener(`change`,()=>R(t.provider)),Z(i,()=>t.provider),Z(n,W(G,{get each(){return t.models},children:e=>{let t=$d(e);return(()=>{var n=Qd(),r=n.firstChild,i=r.nextSibling;return X(n,`title`,t),r.addEventListener(`change`,()=>L(t)),Z(i,()=>e.id),Z(n,W(K,{get when(){return e.name},get children(){var t=Zd();return Z(t,()=>e.name),t}}),null),j(()=>r.checked=E().has(t)),n})()}}),null),j(()=>r.checked=e().models.filter(e=>e.provider===t.provider).every(e=>E().has($d(e)))),n})()})}}),null),t})(),(()=>{var e=Kd(),t=e.firstChild,n=t.nextSibling;return t.$$click=ee,n.$$click=()=>void te(),Z(n,()=>l()?`saving…`:`save`),Z(e,W(K,{get when(){return s()},get children(){return Wd()}}),null),Z(e,W(K,{get when(){return d()},get children(){return Gd()}}),null),j(e=>{var r=!s()||l(),i=!s()||l()||!!A();return r!==e.e&&(t.disabled=e.e=r),i!==e.t&&(n.disabled=e.t=i),e},{e:void 0,t:void 0}),e})()]}),null),j(()=>o.value=e.cwd??``),i})()}ke([`input`,`click`]);var nf=[{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)`}],rf=nf.map(e=>e.id),af=[`system`,`light`,`dark`],of=`dreb.dashboard.theme`,sf=`dreb.dashboard.colorMode`,cf=`default`,lf=`system`;function uf(e){return typeof e==`string`&&rf.includes(e)}function df(e){return typeof e==`string`&&af.includes(e)}function ff(){if(typeof window>`u`)return cf;try{let e=window.localStorage.getItem(of);return uf(e)?e:cf}catch{return cf}}function pf(){if(typeof window>`u`)return lf;try{let e=window.localStorage.getItem(sf);return df(e)?e:lf}catch{return lf}}function mf(e,t,n){if(!(typeof window>`u`))try{t===n?window.localStorage.removeItem(e):window.localStorage.setItem(e,t)}catch{}}var[hf,gf]=k(ff()),[_f,vf]=k(pf()),yf=hf,bf=_f;function xf(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 Sf(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=t.documentElement;if(!n)return;let r=hf(),i=_f();if(r===cf?n.removeAttribute(`data-theme`):n.setAttribute(`data-theme`,r),i===lf?n.removeAttribute(`data-color-mode`):n.setAttribute(`data-color-mode`,i),!(r!==cf||i!==lf))n.style.removeProperty(`color-scheme`);else{let e=i===`light`?`light`:i===`dark`?`dark`:`light dark`;n.style.setProperty(`color-scheme`,e)}}catch{}}function Cf(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=xf(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 wf(e){let t=uf(e)?e:cf;gf(t),mf(of,t,cf),Sf(),Cf()}function Tf(e){let t=df(e)?e:lf;vf(t),mf(sf,t,lf),Sf(),Cf()}var Ef=null,Df=!1;function Of(){_f()===lf&&Cf()}function kf(e){e.key!==null&&e.key!==`dreb.dashboard.theme`&&e.key!==`dreb.dashboard.colorMode`||Af()}function Af(){gf(ff()),vf(pf()),Sf(),Cf()}function jf(){if(!(typeof window>`u`)){try{typeof window.matchMedia==`function`&&(Ef=window.matchMedia(`(prefers-color-scheme: dark)`),typeof Ef.addEventListener==`function`?Ef.addEventListener(`change`,Of):typeof Ef.addListener==`function`&&Ef.addListener(Of))}catch{}try{window.addEventListener(`storage`,kf)}catch{}}}function Mf(){Af(),!Df&&(Df=!0,jf())}var Nf=Y(`<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>`),Pf=Y(`<option>`),Ff=Y(`<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>
|
|
77
|
+
`)}function cn(e,t,n=`/${e}`){return t?(I(`Usage: ${n}`),!0):!1}function ln(){let t=document.createElement(`a`);t.href=$.exportHtmlUrl(e.sessionKey),t.download=``,document.body.append(t),t.click(),t.remove()}let un={settings:async t=>{cn(`settings`,t)||e.store.navigate({screen:`settings`})},"scoped-models":async t=>{if(cn(`scoped-models`,t))return;let r=n()?.cwd;if(!r)throw Error(`Cannot open scoped models: the runtime project directory is unavailable`);e.store.navigate({screen:`settings`,target:`scoped-models`,cwd:r})},model:async e=>{m(e),f(!0)},export:async e=>{cn(`export`,e)||ln()},import:async e=>{Xe(e),Qe(void 0),Je(!0)},name:async t=>{t?await $.rename(e.sessionKey,t):w(!0)},session:async e=>{cn(`session`,e)||(v(!1),await en())},fork:async e=>{cn(`fork`,e)||await Zt()},tree:async e=>{cn(`tree`,e)||await Kt()},new:async t=>{if(!cn(`new`,t)){if(mt()||ht()){I(`Wait for the current operation to finish before starting a new session.`);return}(await $.newSession(e.sessionKey)).cancelled?I(`New session cancelled.`):(await e.store.hydrateSession(e.sessionKey),await e.store.refreshDiskSessions())}},compact:async t=>{t?(await $.compact(e.sessionKey,t),I(`Compaction started.`)):S(!0)},dream:async t=>{let n=await $.dream(e.sessionKey,t||void 0);I(n.message)},resume:async e=>{cn(`resume`,e)||await Jt()},reload:async t=>{if(cn(`reload`,t))return;if(mt()||ht()){I(`Wait for the current operation to finish before reloading.`);return}await $.reload(e.sessionKey);let[{commands:n}]=await Promise.all([$.commands(e.sessionKey),e.store.hydrateSession(e.sessionKey)]);H(n),I(`Reloaded extensions, skills, prompts, themes, and settings.`)},quit:async e=>{cn(`quit`,e)||await pn()}};async function dn(){let t=r().trim();if(!t&&ye().length===0&&_e().length===0)return;P(void 0),I(void 0);let n=dl(t,se());if(n){if(ye().length>0||_e().length>0){I(`Remove attachments before running a built-in command; nothing was sent or discarded.`);return}try{await fl(n,un,I),i(``),Se(void 0)}catch(e){P(e instanceof Error?e.message:String(e))}return}let o=sn(t||`Please review the attached item(s). `);try{let t=_e(),n=t.length>0?await Promise.all(t.map(async({blob:e,mimeType:t})=>({data:await kt(e),mimeType:t}))):void 0;mt()?await $.prompt(e.sessionKey,o,a(),n):n?await $.prompt(e.sessionKey,o,void 0,n):await $.prompt(e.sessionKey,o),xl(e.sessionKey,o),Se(void 0),i(``),jt(),be([]),wt()}catch(e){P(e instanceof Error?e.message:String(e))}}async function fn(){c(!0);try{await $.abort(e.sessionKey),await Bt()}catch(e){P(e instanceof Error?e.message:String(e))}finally{c(!1)}}async function pn(){if(!l()){u(!0),P(void 0);try{await e.store.stopRuntime(e.sessionKey)}catch(e){P(e instanceof Error?e.message:String(e))}finally{u(!1)}}}async function mn(t){try{t===`compaction`?await $.abortCompaction(e.sessionKey):t===`retry`&&await $.abortRetry(e.sessionKey)}catch(e){P(e instanceof Error?e.message:String(e))}}function hn(e){rt?.querySelectorAll(`details.tool`).forEach(t=>{t.open=e})}let gn=()=>pt()?[]:Object.values(t()?.backgroundAgents??{}).filter(e=>e.status===`running`),_n=()=>Object.values(t()?.backgroundAgents??{}).filter(e=>pt()||e.status!==`running`),vn=()=>Object.values(t()?.backgroundAgents??{}).sort((e,t)=>Date.parse(t.startedAt)-Date.parse(e.startedAt)),yn=()=>t()?.tasks??[],bn=()=>yn().filter(e=>e.status===`completed`).length,xn=()=>te()?.contextUsage??n()?.state.contextUsage,Sn=()=>typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 700px)`).matches,Cn=()=>t()?.sessionName??n()?.state.sessionName,wn=()=>Cn()??t()?.title??e.sessionKey,Tn=()=>n()?.cwd??pt()?.cwd,En=()=>{let e=Tn();if(!e)return;let t=ae();return`${yd(e)}${t?` (${t})`:``}`},Dn=()=>{let e=En(),t=Cn();return e&&t?`${e} • ${t}`:e??t??`session`},On=()=>{let e=te()?.tokens;if(!e)return;let t=[];return e.input&&t.push(`↑${gd(e.input)}`),e.output&&t.push(`↓${gd(e.output)}`),e.cacheRead&&t.push(`R${gd(e.cacheRead)}`),e.cacheWrite&&t.push(`W${gd(e.cacheWrite)}`),t.length>0?t.join(` `):void 0},kn=()=>{let e=te()?.cost??0,t=n()?.state.usingSubscription??!1;if(!e&&!t)return;let r=`$${e.toFixed(3)}${t?` (sub)`:``}`,i=oe();return i!==void 0&&i>e&&(r+=`, today: $${i.toFixed(2)}`),r},An=()=>{let e=xn();if(e)return`ctx ${e.percent===null?`?`:`${e.percent.toFixed(0)}%`}/${gd(e.contextWindow)}`},jn=()=>vd(re(),n()?.state.model),Mn=()=>[On(),kn(),An(),jn()].filter(Boolean),Nn=()=>[...(he().steeringMessages??he().steering.map(e=>({text:e}))).map(e=>({kind:`steer`,text:e.images?.length?`${e.text} (${e.images.length} image(s))`:e.text})),...(he().followUpMessages??he().followUp.map(e=>({text:e}))).map(e=>({kind:`follow-up`,text:e.images?.length?`${e.text} (${e.images.length} image(s))`:e.text}))],Pn=()=>{let e=r();if(ce()||!e.startsWith(`/`))return;let t=e.slice(1);if(!/\s/.test(t))return t.toLowerCase()},Fn=N(()=>{let e=Pn();return e===void 0?[]:pl(se(),e)}),In=()=>Fn().length>0,Ln=e=>{i(`/${e.name} `),le(!0),queueMicrotask(()=>ct?.focus())};M(()=>{let e=Fn().length;U()>=e&&ue(Math.max(0,e-1))});let Rn=N(()=>{let r=[],i=pt();if(i&&!i.bannerDismissed){let t=i.resumeError?`\nResume failed: ${i.resumeError}`:``,n=[];i.cwd&&i.sessionFile&&n.push({label:i.resuming?`resuming…`:`Resume session`,run:()=>e.store.resumeClosedSession(e.sessionKey),disabled:i.resuming}),n.push({label:`Return to fleet`,run:()=>e.store.navigate({screen:`fleet`}),disabled:i.resuming}),r.push({key:`closed`,text:`session ${e.sessionKey} was closed${t}`,tone:i.resumeError?`error`:`warning`,onDismiss:()=>e.store.dismissClosedBanner(e.sessionKey),actions:n})}let a=n()?.state.modelFallbackMessage;a&&!D()&&r.push({key:`fallback`,text:a,tone:`warning`,onDismiss:()=>O(!0)});for(let n of t()?.statusEntries??[])n.dismissed||r.push({key:`status:${n.id}`,text:n.text,tone:n.tone,onDismiss:()=>e.store.dismissStatusBanner(e.sessionKey,n.id)});for(let n of t()?.toasts??[])r.push({key:`toast:${n.id}`,text:n.text,tone:n.tone,onDismiss:()=>e.store.dismissToast(n.id)});return A()&&r.push({key:`action-error`,text:A(),tone:`error`,onDismiss:()=>P(void 0)}),F()&&r.push({key:`action-notice`,text:F(),tone:`info`,onDismiss:()=>I(void 0)}),r});return(()=>{var c=Ku(),u=c.firstChild,D=u.firstChild,O=D.firstChild.nextSibling,k=O.nextSibling,A=u.nextSibling,M=A.firstChild,N=A.nextSibling,F=N.firstChild,I=F.firstChild;Z(O,wn),Z(D,W(K,{get when(){return!_()},get children(){var e=Cu();return Z(e,(()=>{var e=J(()=>!!Tn());return()=>e()?yd(Tn()):void 0})()),e}}),k),Z(D,W(at,{get store(){return e.store},class:`session-connection-indicator`}),k),Z(D,W(K,{get when(){return J(()=>!_())()&&!pt()},get children(){var t=Tu(),r=t.firstChild,i=r.firstChild.nextSibling.nextSibling,a=r.nextSibling;a.firstChild.nextSibling;var o=a.nextSibling;return r.$$click=()=>f(!0),Z(i,()=>md(n()?.state.model)),a.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=dd[(dd.indexOf(t)+1)%dd.length];try{let t=await $.setThinking(e.sessionKey,r);e.store.setRuntimeThinkingLevel(e.sessionKey,r,t.settingsRevision)}catch(e){P(e instanceof Error?e.message:String(e))}},Z(a,()=>n()?.state.thinkingLevel??`—`,null),Z(t,W(K,{get when(){return xn()},get children(){var e=wu();return e.firstChild.nextSibling,Z(e,(()=>{var e=J(()=>xn().percent===null);return()=>e()?`?`:`${xn().percent.toFixed(0)}%`})(),null),e}}),o),o.$$click=()=>g(!h()),j(()=>X(r,`title`,hd(n()?.state.model))),t}}),k),k.$$click=()=>v(!_()),Z(k,()=>_()?`details ▾`:`details ▴`),Z(u,W(K,{get when(){return!_()},get children(){return[(()=>{var e=Du(),t=e.firstChild,n=t.nextSibling;return Z(t,Dn),n.$$click=en,Z(n,W(G,{get each(){return Mn()},children:e=>(()=>{var t=qu();return Z(t,e),t})()})),Z(e,W(K,{get when(){return $e()},get children(){var e=Eu(),t=dt;return typeof t==`function`?Pe(t,e):dt=e,Z(e,W(K,{get when(){return tt()},get children(){var e=$l();return Z(e,tt),e}}),null),Z(e,W(K,{get when(){return te()},get fallback(){return Ju()},children:e=>(()=>{var t=Yu(),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,Z(n,()=>e().userMessages),Z(r,()=>e().assistantMessages),Z(i,()=>e().toolCalls,a),Z(i,()=>e().toolResults,null),Z(o,()=>gd(e().tokens.input),s),Z(o,()=>gd(e().tokens.output),null),Z(c,()=>gd(e().tokens.cacheRead),l),Z(c,()=>gd(e().tokens.cacheWrite),null),Z(u,()=>gd(e().tokens.total)),Z(d,()=>e().cost.toFixed(4),null),t})()}),null),e}}),null),j(()=>n.disabled=!!pt()),e})(),W(K,{get when(){return h()},get children(){var t=Au(),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=()=>hn(!0),o.$$click=()=>hn(!1),s.$$click=()=>w(!0),c.$$click=Zt,u.$$click=Ct,Z(t,W(K,{get when(){return Sn()},get children(){return[(()=>{var e=Ou();return e.firstChild,e.$$click=()=>f(!0),Z(e,()=>md(n()?.state.model),null),e})(),(()=>{var t=ku();return t.firstChild,t.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=dd[(dd.indexOf(t)+1)%dd.length];try{let t=await $.setThinking(e.sessionKey,r);e.store.setRuntimeThinkingLevel(e.sessionKey,r,t.settingsRevision)}catch(e){P(e instanceof Error?e.message:String(e))}},Z(t,()=>n()?.state.thinkingLevel??`—`,null),t})()]}}),d),d.$$click=pn,Z(d,()=>l()?`stopping runtime…`:`stop runtime`),j(t=>{var n=$.exportHtmlUrl(e.sessionKey),i=l();return n!==t.e&&X(r,`href`,t.e=n),i!==t.t&&(d.disabled=t.t=i),t},{e:void 0,t:void 0}),t}})]}}),null),Z(c,W(st,{get banners(){return Rn()}}),A);var R=rt;typeof R==`function`?Pe(R,A):rt=A;var z=it;return typeof z==`function`?Pe(z,M):it=M,Z(M,W(K,{get when(){return t()},get fallback(){return Xu()},get children(){return[W(G,{get each(){return t().widgets.above},children:e=>(()=>{var t=Zu();return Z(t,e),t})()}),W(Oc,{get entries(){return t().entries},get resetKey(){return e.sessionKey},get imageScope(){return{runtimeKey:e.sessionKey}}}),W(K,{get when(){return t().uiRequests.find(e=>e.method===`ask`)},children:e=>W(kd,{get request(){return e()},onRespond:Et,onStop:()=>void fn(),get stopping(){return s()}})}),W(G,{get each(){return t().widgets.below},children:e=>(()=>{var t=Zu();return Z(t,e),t})()})]}})),I.$$click=()=>b(!y()),Z(I,(()=>{var e=J(()=>!!pt());return()=>e()?`closed`:y()?`compose ▴`:`compose ▾`})()),Z(F,W(K,{get when(){return y()},get children(){var e=ju();return Z(e,(()=>{var e=J(()=>!!vt());return()=>e()?`agent working — open controls to stop or steer`:J(()=>Nn().length>0)()?`${Nn().length} queued message(s)`:`composer hidden for transcript reading`})()),e}}),null),Z(N,W(K,{get when(){return!y()},get children(){var n=Wu();return Z(n,W(K,{get when(){return yn().length>0||gn().length+_n().length>0||vt()||yt().length>0},get children(){var n=Lu();return Z(n,W(K,{get when(){return yn().length>0},get children(){var e=Mu(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;r.nextSibling;var i=t.nextSibling;return Z(t,bn,n),Z(t,()=>yn().length,r),Z(i,W(G,{get each(){return yn()},children:e=>(()=>{var t=Qu(),n=t.firstChild;return Z(t,(()=>{var t=J(()=>e.status===`completed`);return()=>t()?`☑`:e.status===`in_progress`?`⧖`:`☐`})(),n),Z(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=!Sn()),e}}),null),Z(n,W(K,{get when(){return gn().length+_n().length>0},get children(){var t=Nu(),n=t.firstChild,r=n.firstChild.nextSibling,i=r.nextSibling.nextSibling;i.nextSibling;var a=n.nextSibling;return Z(n,()=>gn().length,r),Z(n,()=>_n().length,i),Z(a,W(G,{get each(){return vn()},children:t=>(()=>{var n=$u(),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}),Z(i,(()=>{var e=J(()=>t.status===`running`);return()=>e()?pt()?`○`:`●`:t.status===`completed`?`✓`:`✕`})()),Z(a,()=>t.agentType,o),Z(a,()=>t.taskSummary,null),Z(a,W(K,{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(()=>Ae(i,t.status===`running`&&!pt()?`live`:`done`)),n})()})),j(()=>t.open=!Sn()),t}}),null),Z(n,W(K,{get when(){return vt()||yt().length>0},get children(){var e=Iu();return Z(e,W(K,{get when(){return mt()},get children(){var e=Pu();return e.firstChild,Z(e,(()=>{var e=J(()=>!!t()?.workingText);return()=>e()?` — ${t().workingText}`:``})(),null),Z(e,(()=>{var e=J(()=>L()>2);return()=>e()?` (${L()}s)`:``})(),null),e}}),null),Z(e,W(G,{get each(){return yt()},children:e=>(()=>{var t=ed();return t.firstChild,t.$$click=()=>mn(e.key),Z(t,()=>e.key,null),t})()}),null),Z(e,W(K,{get when(){return vt()},get children(){var e=Fu();return e.$$click=fn,Z(e,()=>s()?`stopping…`:`■ stop`),j(()=>e.disabled=s()),e}}),null),e}}),null),n}}),null),Z(n,W(K,{get when(){return!pt()},get fallback(){return td()},get children(){var n=Uu(),s=n.firstChild,c=s.nextSibling,l=c.firstChild,u=l.nextSibling,d=u.nextSibling,f=d.nextSibling,p=f.nextSibling;Z(n,W(K,{get when(){return Nn().length>0},get children(){var e=Ru(),t=e.firstChild;return Z(e,W(G,{get each(){return Nn()},children:e=>(()=>{var t=nd(),n=t.firstChild;return Z(n,()=>e.kind),Z(t,()=>e.text,null),j(()=>X(t,`title`,e.text)),t})()}),t),t.$$click=Bt,e}}),s),Z(n,W(K,{get when(){return ye().length>0||_e().length>0},get children(){var e=zu();return Z(e,W(G,{get each(){return ye()},children:(e,t)=>(()=>{var n=rd(),r=n.firstChild;r.firstChild;var i=r.nextSibling,a=i.nextSibling;return Z(r,()=>e.fileName,null),Z(i,()=>Cd(e.size)),a.$$click=()=>be(e=>e.filter((e,n)=>n!==t())),j(()=>X(n,`title`,e.path)),n})()}),null),Z(e,W(G,{get each(){return _e()},children:(e,t)=>(()=>{var n=id(),r=n.firstChild,i=r.nextSibling;return i.$$click=()=>Mt(t()),j(t=>{var i=`${e.fileName} (${Cd(e.size)})`,a=e.previewUrl,o=e.fileName;return i!==t.e&&X(n,`title`,t.e=i),a!==t.t&&X(r,`src`,t.t=a),o!==t.a&&X(r,`alt`,t.a=o),t},{e:void 0,t:void 0,a:void 0}),n})()}),null),e}}),s),Z(n,W(K,{get when(){return In()},get children(){var e=Bu();return Z(e,W(G,{get each(){return Fn()},children:(e,t)=>(()=>{var n=od(),r=n.firstChild;r.firstChild;var i=r.nextSibling;return n.$$click=()=>Ln(e),n.addEventListener(`mouseenter`,()=>ue(t())),Z(r,()=>e.name,null),Z(n,W(K,{get when(){return e.description},get children(){var t=ad();return Z(t,()=>e.description),t}}),i),Z(i,()=>e.source),j(e=>{var r=`command-option-${t()}`,i=U()===t(),a=U()===t();return r!==e.e&&X(n,`id`,e.e=r),i!==e.t&&X(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}}),s),s.$$keydown=t=>{if(In()){if(t.key===`ArrowDown`){t.preventDefault(),ue((U()+1)%Fn().length);return}if(t.key===`ArrowUp`){t.preventDefault(),ue((U()-1+Fn().length)%Fn().length);return}if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey&&!Sn()){t.preventDefault();let e=Fn()[U()];e&&t.key===`Enter`&&r()===`/${e.name}`?(le(!0),dn()):e&&Ln(e);return}if(t.key===`Escape`){t.preventDefault(),le(!0);return}}if((t.key===`ArrowUp`||t.key===`ArrowDown`)&&(r()===``||xe()!==void 0)){let n=bl(e.sessionKey);if(n.length>0){if(t.preventDefault(),t.key===`ArrowUp`){let e=xe()===void 0?n.length-1:Math.max(0,xe()-1);Se(e),i(n[e]??``)}else if(xe()!==void 0){let e=xe()+1;e>=n.length?(Se(void 0),i(``)):(Se(e),i(n[e]??``))}}return}t.key===`Enter`&&!t.shiftKey&&!Sn()&&(t.preventDefault(),dn())},s.$$input=e=>{le(!1),ue(0),Se(void 0),i(e.currentTarget.value),Ed(e.currentTarget)},s.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(),Ht(t))});var m=ct;typeof m==`function`?Pe(m,s):ct=s,l.addEventListener(`change`,e=>{Gt(e.currentTarget.files??[]),e.currentTarget.value=``});var h=lt;typeof h==`function`?Pe(h,l):lt=l,u.addEventListener(`change`,e=>{Ht(e.currentTarget.files??[]),e.currentTarget.value=``});var g=ut;return typeof g==`function`?Pe(g,u):ut=u,d.$$click=()=>lt?.click(),f.$$click=()=>ut?.click(),Z(c,W(K,{get when(){return mt()},get children(){var e=Vu(),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}}),p),Z(c,W(K,{get when(){return t()?.suggestedCommand},get children(){var e=Hu(),n=e.firstChild.nextSibling;return e.$$click=()=>i(t().suggestedCommand),Z(n,()=>t().suggestedCommand),e}}),p),p.$$click=dn,j(e=>{var t=mt()?`Message dreb — sends as steer while it works…`:`Message dreb…`,n=In()?`command-listbox`:void 0,r=In()?`command-option-${U()}`:void 0;return t!==e.e&&X(s,`placeholder`,e.e=t),n!==e.t&&X(s,`aria-controls`,e.t=n),r!==e.a&&X(s,`aria-activedescendant`,e.a=r),e},{e:void 0,t:void 0,a:void 0}),j(()=>s.value=r()),n}}),null),n}}),null),Z(c,W(K,{get when(){return t()?.uiRequests.find(e=>e.method!==`ask`)},keyed:!0,children:e=>W(Dd,{request:e,onRespond:Et})}),null),Z(c,W(K,{get when(){return d()},get children(){return W(jd,{get sessionKey(){return e.sessionKey},get state(){return n()?.state},get initialFilter(){return p()},onClose:()=>{f(!1),m(``)},onSelected:({provider:t,id:n,settingsRevision:r})=>e.store.setRuntimeModel(e.sessionKey,{provider:t,id:n},r)})}}),null),Z(c,W(K,{get when(){return x()},get children(){return W(ot,{title:`compact context`,onDismiss:()=>S(!1),get actions(){return[(()=>{var e=Dl();return e.$$click=()=>S(!1),e})(),(()=>{var t=sd();return t.$$click=async()=>{S(!1);try{await $.compact(e.sessionKey)}catch(e){P(e instanceof Error?e.message:String(e))}},t})()]},get children(){return Gu()}})}}),null),Z(c,W(K,{get when(){return T()},get children(){return W(Ad,{get resources(){return de()},get error(){return pe()},onClose:()=>E(!1)})}}),null),Z(c,W(K,{get when(){return Ce()},get children(){return W(ot,{title:`fork from message`,onDismiss:()=>we(!1),get children(){return[W(K,{get when(){return Ee()},get children(){var e=$l();return Z(e,Ee),e}}),W(K,{get when(){return Te().length>0},get fallback(){return cd()},get children(){var e=hu();return Z(e,W(G,{get each(){return Te()},children:e=>(()=>{var t=ld(),n=t.firstChild,r=n.nextSibling;return t.$$click=()=>$t(e.entryId),Z(n,()=>e.role===`assistant`?`assistant`:`you`),Z(r,()=>e.text),t})()})),e}})]}})}}),null),Z(c,W(K,{get when(){return Oe()},get children(){return W(Nd,{get roots(){return ke()},get leafId(){return Me()},get loading(){return Fe()},get error(){return Le()},onClose:()=>Y(!1),onNavigate:qt})}}),null),Z(c,W(K,{get when(){return ze()},get children(){return W(Pd,{get sessions(){return Ve()},get loading(){return Ue()},get error(){return Ge()},onClose:()=>Be(!1),onResume:Yt})}}),null),Z(c,W(K,{get when(){return qe()},get children(){return W(Fd,{get initialPath(){return Ye()},get error(){return Ze()},onClose:()=>Je(!1),onImport:Xt})}}),null),Z(c,W(K,{get when(){return C()},get children(){return W(Ld,{get current(){return Cn()??``},onClose:()=>w(!1),onRename:async t=>{try{await $.rename(e.sessionKey,t),w(!1)}catch(e){P(e instanceof Error?e.message:String(e))}}})}}),null),j(e=>{var t=!!_(),n=_()?`show session details`:`hide session details`,r=!!y(),i=pt()?`closed session transcript`:y()?`show composer and controls`:`hide composer and controls`,a=!!pt();return t!==e.e&&u.classList.toggle(`collapsed`,e.e=t),n!==e.t&&X(k,`title`,e.t=n),r!==e.a&&N.classList.toggle(`collapsed`,e.a=r),i!==e.o&&X(I,`title`,e.o=i),a!==e.i&&(I.disabled=e.i=a),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),c})()}function Ld(e){let[t,n]=k(e.current);return W(ot,{title:`rename session`,get onDismiss(){return e.onClose},get actions(){return[(()=>{var t=Dl();return je(t,`click`,e.onClose,!0),t})(),(()=>{var n=ud();return n.$$click=()=>e.onRename(t().trim()),j(()=>n.disabled=!t().trim()),n})()]},get children(){var e=Tl(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e}})}ke([`input`,`click`,`keydown`]);var Rd=Y(`<div class=settings-error>`),zd=Y(`<p class=muted>Loading scoped models…`),Bd=Y(`<section class="settings-section scoped-models-editor"tabindex=-1 aria-labelledby=scoped-models-heading><h2 id=scoped-models-heading>scoped models</h2><p class="muted small">Controls model cycling for new sessions only; running sessions are never changed. Writes always update global settings, while the selected context shows effective global-plus-project settings.</p><label class=scoped-models-context><span>project context</span><select><option value>global / home`),Vd=Y(`<option>`),Hd=Y(`<div class=settings-warning>This project defines enabledModels in .dreb/settings.json and shadows global writes.`),Ud=Y(`<div class=scoped-models-toolbar><input type=search aria-label="Search available models"placeholder="search provider, model, or name…"><button type=button class="btn btn-small">enable all`),Wd=Y(`<div class=scoped-models-grid><div class=scoped-models-order><h3>cycling order</h3><p class="muted small"></p></div><div class=scoped-models-available><h3>available models`),Gd=Y(`<span class="muted small">unsaved changes`),Kd=Y(`<span class="muted small">✓ saved`),qd=Y(`<div class=scoped-models-actions><button type=button class="btn btn-small">reset</button><button type=button class="btn btn-primary btn-small">`),Jd=Y(`<div class=settings-warning>`),Yd=Y(`<div class=scoped-model-order-row><span></span><div class=scoped-model-move-controls><button type=button>↑</button><button type=button>↓`),Xd=Y(`<p class="muted small">No matching models.`),Zd=Y(`<section class=scoped-model-provider><label class=scoped-model-provider-heading><input type=checkbox><span>`),Qd=Y(`<span class=model-name>`),$d=Y(`<label class=scoped-model-choice><input type=checkbox><span class=model-id>`);function ef(e){return`${e.provider}/${e.id}`}function tf(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].map(([e,t])=>({provider:e,models:t}))}function nf(e){let[t,n]=k(``),[r,i]=k(!0),[a,o]=k([]),[s,c]=k(!1),[l,u]=k(!1),[d,f]=k(!1),[p,m]=k(),[h,g]=k([]),_,v,y,b=()=>e.cwd??``,[x,{mutate:S}]=F(b,async e=>{let t=e||void 0,[n,r]=await Promise.all([$.settings(t),$.settingsModels(t)]);return{cwd:e,settings:n,models:r.models}}),C=N(()=>{if(x.error)return;let e=x();return e?.cwd===b()?e:void 0});function w(e,t){let n=e.enabledModels===void 0;i(n),o(n?t.map(ef):e.resolvedScopedModels.map(e=>`${e.provider}/${e.id}`)),c(!1),f(!1),m(void 0),g([])}let T=b();M(()=>{let e=b();e!==T&&(T=e,v=void 0,y=void 0,c(!1),f(!1),m(void 0),g([]))}),M(()=>{let e=C();!e||e.cwd===v&&e.settings===y||(v=e.cwd,y=e.settings,w(e.settings,e.models))}),M(()=>{!e.focused||!_||(_.scrollIntoView({block:`start`}),_.focus({preventScroll:!0}))});let E=N(()=>new Set(a())),D=N(()=>{let t=new Set(e.projectRoots);return e.cwd&&t.add(e.cwd),[...t].sort((e,t)=>e.localeCompare(t))}),O=N(()=>{let e=t().trim().toLowerCase();return tf((C()?.models??[]).filter(t=>!e||`${t.provider}/${t.id} ${t.name??``}`.toLowerCase().includes(e)))}),A=N(()=>{if((C()?.models.length??0)===0)return`No available models were reported for this context.`;if(!r()&&a().length===0)return`At least one model must remain enabled.`}),P=N(()=>{let e=C()?.settings;if(!e?.enabledModels)return;let t=e.resolvedScopedModels.map(e=>`${e.provider}/${e.id}`);return e.enabledModels.length===t.length&&e.enabledModels.every((e,n)=>e===t[n])&&e.scopeWarnings.length===0?void 0:`Saving an edited legacy scope replaces patterns and per-pattern thinking suffixes with exact provider/model references.`});function I(e){let t=C()?.models.map(ef)??[],n=t.length>0&&t.every(t=>e.includes(t));i(n),o(n?t:e),c(!0),f(!1),m(void 0)}function L(e){let t=r()?C()?.models.map(ef)??[]:a();I(t.includes(e)?t.filter(t=>t!==e):[...t,e])}function R(e){let t=(C()?.models??[]).filter(t=>t.provider===e).map(ef),n=r()?C()?.models.map(ef)??[]:a();I(t.every(e=>n.includes(e))?n.filter(e=>!t.includes(e)):[...n,...t.filter(e=>!n.includes(e))])}function z(e,t){if(r())return;let n=e+t;if(n<0||n>=a().length)return;let i=[...a()];[i[e],i[n]]=[i[n],i[e]],o(i),c(!0),f(!1)}function ee(){let e=C();e&&w(e.settings,e.models)}async function te(){let e=C();if(!e||!s()||A())return;u(!0),m(void 0),g([]),f(!1);let t=e.cwd||void 0;try{let n=await $.saveSettings({enabledModels:r()?null:a()},t);if(b()!==e.cwd)return;v=e.cwd,y=n,S({cwd:e.cwd,settings:n,models:e.models}),w(n,e.models),g(n.warnings??[]),f(!0)}catch(t){b()===e.cwd&&m(t instanceof Error?t.message:String(t))}finally{u(!1)}}return(()=>{var i=Bd(),o=i.firstChild.nextSibling.nextSibling.firstChild.nextSibling;o.firstChild;var c=_;return typeof c==`function`?Pe(c,i):_=i,o.addEventListener(`change`,t=>e.onCwdChange(t.currentTarget.value||void 0)),Z(o,W(G,{get each(){return D()},children:e=>(()=>{var t=Vd();return t.value=e,Z(t,e),t})()}),null),Z(i,W(K,{get when(){return x.error},get children(){var e=Rd();return Z(e,(()=>{var e=J(()=>x.error instanceof Error);return()=>e()?x.error.message:String(x.error)})()),e}}),null),Z(i,W(K,{get when(){return x.loading},get children(){return zd()}}),null),Z(i,W(K,{get when(){return C()},children:e=>[W(K,{get when(){return e().settings.hasProjectEnabledModelsOverride},get children(){return Hd()}}),W(K,{get when(){return P()},children:e=>(()=>{var t=Jd();return Z(t,e),t})()}),W(G,{get each(){return e().settings.scopeWarnings},children:e=>(()=>{var t=Jd();return Z(t,()=>e.message),t})()}),W(G,{get each(){return h()},children:e=>(()=>{var t=Jd();return Z(t,e),t})()}),W(K,{get when(){return p()},children:e=>(()=>{var t=Rd();return Z(t,e),t})()}),W(K,{get when(){return A()},children:e=>(()=>{var t=Rd();return Z(t,e),t})()}),(()=>{var i=Ud(),a=i.firstChild,o=a.nextSibling;return a.$$input=e=>n(e.currentTarget.value),o.$$click=()=>I(e().models.map(ef)),j(()=>o.disabled=r()),j(()=>a.value=t()),i})(),(()=>{var t=Wd(),n=t.firstChild,i=n.firstChild.nextSibling,o=n.nextSibling;return o.firstChild,Z(i,(()=>{var e=J(()=>!!r());return()=>e()?`All available models, in registry order (future models included).`:`${a().length} enabled model${a().length===1?``:`s`}.`})()),Z(n,W(G,{get each(){return a()},children:(e,t)=>(()=>{var n=Yd(),i=n.firstChild,o=i.nextSibling.firstChild,s=o.nextSibling;return X(i,`title`,e),Z(i,e),o.$$click=()=>z(t(),-1),X(o,`aria-label`,`Move ${e} up`),s.$$click=()=>z(t(),1),X(s,`aria-label`,`Move ${e} down`),j(e=>{var n=r()||t()===0,i=r()||t()===a().length-1;return n!==e.e&&(o.disabled=e.e=n),i!==e.t&&(s.disabled=e.t=i),e},{e:void 0,t:void 0}),n})()}),null),Z(o,W(K,{get when(){return O().length>0},get fallback(){return Xd()},get children(){return W(G,{get each(){return O()},children:t=>(()=>{var n=Zd(),r=n.firstChild.firstChild,i=r.nextSibling;return r.addEventListener(`change`,()=>R(t.provider)),Z(i,()=>t.provider),Z(n,W(G,{get each(){return t.models},children:e=>{let t=ef(e);return(()=>{var n=$d(),r=n.firstChild,i=r.nextSibling;return X(n,`title`,t),r.addEventListener(`change`,()=>L(t)),Z(i,()=>e.id),Z(n,W(K,{get when(){return e.name},get children(){var t=Qd();return Z(t,()=>e.name),t}}),null),j(()=>r.checked=E().has(t)),n})()}}),null),j(()=>r.checked=e().models.filter(e=>e.provider===t.provider).every(e=>E().has(ef(e)))),n})()})}}),null),t})(),(()=>{var e=qd(),t=e.firstChild,n=t.nextSibling;return t.$$click=ee,n.$$click=()=>void te(),Z(n,()=>l()?`saving…`:`save`),Z(e,W(K,{get when(){return s()},get children(){return Gd()}}),null),Z(e,W(K,{get when(){return d()},get children(){return Kd()}}),null),j(e=>{var r=!s()||l(),i=!s()||l()||!!A();return r!==e.e&&(t.disabled=e.e=r),i!==e.t&&(n.disabled=e.t=i),e},{e:void 0,t:void 0}),e})()]}),null),j(()=>o.value=e.cwd??``),i})()}ke([`input`,`click`]);var rf=[{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)`}],af=rf.map(e=>e.id),of=[`system`,`light`,`dark`],sf=`dreb.dashboard.theme`,cf=`dreb.dashboard.colorMode`,lf=`default`,uf=`system`;function df(e){return typeof e==`string`&&af.includes(e)}function ff(e){return typeof e==`string`&&of.includes(e)}function pf(){if(typeof window>`u`)return lf;try{let e=window.localStorage.getItem(sf);return df(e)?e:lf}catch{return lf}}function mf(){if(typeof window>`u`)return uf;try{let e=window.localStorage.getItem(cf);return ff(e)?e:uf}catch{return uf}}function hf(e,t,n){if(!(typeof window>`u`))try{t===n?window.localStorage.removeItem(e):window.localStorage.setItem(e,t)}catch{}}var[gf,_f]=k(pf()),[vf,yf]=k(mf()),bf=gf,xf=vf;function Sf(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 Cf(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=t.documentElement;if(!n)return;let r=gf(),i=vf();if(r===lf?n.removeAttribute(`data-theme`):n.setAttribute(`data-theme`,r),i===uf?n.removeAttribute(`data-color-mode`):n.setAttribute(`data-color-mode`,i),!(r!==lf||i!==uf))n.style.removeProperty(`color-scheme`);else{let e=i===`light`?`light`:i===`dark`?`dark`:`light dark`;n.style.setProperty(`color-scheme`,e)}}catch{}}function wf(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=Sf(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 Tf(e){let t=df(e)?e:lf;_f(t),hf(sf,t,lf),Cf(),wf()}function Ef(e){let t=ff(e)?e:uf;yf(t),hf(cf,t,uf),Cf(),wf()}var Df=null,Of=!1;function kf(){vf()===uf&&wf()}function Af(e){e.key!==null&&e.key!==`dreb.dashboard.theme`&&e.key!==`dreb.dashboard.colorMode`||jf()}function jf(){_f(pf()),yf(mf()),Cf(),wf()}function Mf(){if(!(typeof window>`u`)){try{typeof window.matchMedia==`function`&&(Df=window.matchMedia(`(prefers-color-scheme: dark)`),typeof Df.addEventListener==`function`?Df.addEventListener(`change`,kf):typeof Df.addListener==`function`&&Df.addListener(kf))}catch{}try{window.addEventListener(`storage`,Af)}catch{}}}function Nf(){jf(),!Of&&(Of=!0,Mf())}var Pf=Y(`<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>`),Ff=Y(`<option>`),If=Y(`<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>
|
|
78
78
|
<span class=hljs-comment>// preview</span>
|
|
79
|
-
<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>`),If=[`running`,`attention`,`idle`,`error`];function Lf(){let e=()=>{let e=bf();return e===`system`?void 0:e};return(()=>{var t=Nf(),n=t.firstChild,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling;return r.addEventListener(`change`,e=>Tf(e.currentTarget.value)),Z(r,W(G,{each:af,children:e=>(()=>{var t=Pf();return t.value=e,Z(t,e),t})()})),Z(i,W(G,{each:nf,children:t=>{let n=()=>yf()===t.id;return(()=>{var r=Ff(),i=r.firstChild,a=i.firstChild,o=a.firstChild,s=a.nextSibling,c=i.nextSibling.firstChild,l=c.nextSibling;return r.$$click=()=>wf(t.id),Z(o,()=>t.label),Z(s,W(G,{each:If,children:e=>W(nt,{status:e,label:``})})),Z(c,()=>t.label),Z(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&&X(r,`data-theme-card`,i.t=o),s!==i.a&&X(r,`data-theme`,i.a=s),c!==i.o&&X(r,`data-color-mode`,i.o=c),l!==i.i&&X(r,`aria-pressed`,i.i=l),u!==i.n&&X(r,`aria-current`,i.n=u),d!==i.s&&X(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=bf()),t})()}ke([`click`]);var Rf=Y(`<select><option value=on>on</option><option value=off>off`),zf=Y(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),Bf=Y(`<div class=model-list style=max-height:320px>`),Vf=Y(`<p class="muted small">No matching models.`),Hf=Y(`<section class=model-provider-group><div class=model-provider-heading>`),Uf=Y(`<span class=model-name>`),Wf=Y(`<span class=model-reasoning>think`),Gf=Y(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),Kf=Y(`<div class=settings-error>`),qf=Y(`<div class=settings-warning>`),Jf=Y(`<p class="muted small"style=margin-bottom:16px>✓ saved`),Yf=Y(`<div class=settings-success>new pairing lifetime saved`),Xf=Y(`<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>`),Zf=Y(`<p class="muted small"style=padding-top:8px>No remote devices paired. Launch with <code>--remote --allow <identity></code> to enable Tailscale access.`),Qf=Y(`<p>This exits the dashboard server process and terminates <strong>all running sessions</strong>.`),$f=Y(`<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><div class=setting-row><label class=setting-label for=pairing-ttl-days><span class=name>new pairing lifetime</span><span class=hint>applies only to devices paired after saving; existing expiry dates do not change</span></label><span class=setting-control><input id=pairing-ttl-days type=number min=1 max=3650 step=1><span>days</span><button type=button class="btn btn-small"></button></span></div></section><footer>dreb<!> · dashboard`),ep=Y(`<div>`),tp=Y(`<p class=muted>`),np=Y(`<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>`),rp=Y(`<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> `),ip=Y(`<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`),ap=Y(`<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.`),op=Y(`<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>`),sp=Y(`<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>`),cp=Y(`<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=setting-row><label class=setting-label for=max-concurrent-subagents><span class=name>max concurrent subagents</span><span class=hint>new parent sessions only; 0 removes the subagent tool (default 4)</span></label><span class=setting-control><input id=max-concurrent-subagents type=number min=0 step=1></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>`),lp=Y(`<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>`),up=Y(`<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.`),dp=Y(`<option>`),fp=Y(`<p class="muted small">No agent definitions found.`),pp=Y(`<div class=agent-model-editor><button type=button class="btn btn-small">add model…`),mp=Y(`<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">`),hp=Y(`<span class="muted small">default`),gp=Y(`<span class=agent-model-chip>. `),_p=Y(`<p class="muted small">Using the default model.`),vp=Y(`<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">×`),yp=Y(`<p class="muted small trusted-context-empty">No trusted folders. Use the Files view to trust a project folder and its descendants.`),bp=Y(`<div class=trusted-context-folder-row><code></code><span class=meta>and all descendants</span><button type=button class="btn btn-small btn-danger">`),xp=Y(`<label class=checkbox-control><input type=checkbox><span>`),Sp=Y(`<div class=device-row><span></span><span class=meta> · paired <!> · expires </span><span class=actions><button type=button class="btn btn-small btn-danger">unpair`),Cp=Y(`<button type=button class="btn btn-small">cancel`),wp=Y(`<button type=button class="btn btn-small btn-danger">restart`),Tp=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],Ep=[`all`,`one-at-a-time`],Dp=[`sse`,`websocket`,`auto`];function Op(e){return`${e.provider}/${e.id}`}function kp(e){let t=Op(e);return e.name?`${t} — ${e.name}`:t}function Ap(e){return e.defaultProvider&&e.defaultModel?`${e.defaultProvider}/${e.defaultModel}`:`choose model…`}function jp(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function Mp(){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 Np(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 Pp(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 Fp(e){return(()=>{var t=Rf();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 Ip(e){let[t,n]=k(``),r=()=>new Set(e.selected??[]),i=N(()=>{let n=t().toLowerCase();return Np(e.models.filter(e=>!n||jp(e,n)).slice(0,100))}),a=e=>r().has(Op(e));return W(ot,{get title(){return e.title},get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[(()=>{var e=zf(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e})(),(()=>{var t=Bf();return Z(t,W(K,{get when(){return i().length>0},get fallback(){return Vf()},get children(){return W(G,{get each(){return i()},children:t=>(()=>{var n=Hf(),r=n.firstChild;return Z(r,()=>t.provider),Z(n,W(G,{get each(){return t.models},children:t=>(()=>{var n=Gf(),r=n.firstChild,i=r.nextSibling,o=i.nextSibling;return n.$$click=()=>e.onPick(t),Z(r,()=>a(t)?`✓`:``),Z(i,()=>t.id),Z(n,W(K,{get when(){return t.name},get children(){var e=Uf();return Z(e,()=>t.name),e}}),o),Z(o,()=>t.provider),Z(n,W(K,{get when(){return t.reasoning},get children(){return Wf()}}),null),j(e=>{var r=!!a(t),i=kp(t);return r!==e.e&&n.classList.toggle(`current`,e.e=r),i!==e.t&&X(n,`title`,e.t=i),e},{e:void 0,t:void 0}),n})()}),null),n})()})}})),t})()]}})}function Lp(e){let[t,n]=k(),[r,i]=k([]),[a,o]=k(!1),[s,c]=k(),[l,u]=k(),[d,f]=k(),[p,m]=k(e.target===`scoped-models`?e.routeScopedModelsCwd:void 0);M(()=>{m(e.target===`scoped-models`?e.routeScopedModelsCwd:void 0)});let[h,g]=k(``),[_,v]=k(!1),[y,b]=k(Mp()),[x,{mutate:S,refetch:C}]=F(async()=>{n(void 0);try{return await $.settings()}catch(e){n(e instanceof Error?e.message:String(e));return}}),[w]=F(x,async()=>{try{let{models:e}=await $.settingsModels();return e}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),T=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))}),[E]=F(()=>({settings:x(),cwd:d()}),async({cwd:e})=>{if(!x())return[];try{let{agentTypes:t}=await $.agentTypes(e);return t}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),[D,{refetch:O}]=F(async()=>{let{devices:e}=await $.devices();return e}),[A,P]=k(),[I,L]=k(!1),[ee,te]=k(!1),[ne,re]=k(``),[ie,{mutate:ae}]=F(async()=>{try{return await $.pairingSettings()}catch(e){P(e instanceof Error?e.message:String(e));return}});M(()=>{let e=ie();e&&re(String(e.pairingTtlDays))});async function B(){P(void 0),L(!1);let e=Number(ne());if(!Number.isSafeInteger(e)||e<1||e>3650){P(`pairing lifetime must be a whole number from 1 through 3650 days`);return}te(!0);try{let t=await $.savePairingSettings(e);ae(t),L(!0)}catch(e){P(e instanceof Error?e.message:String(e))}finally{te(!1)}}let[oe,V]=k(),se;function H(){se&&clearTimeout(se),se=void 0}function ce(e){H();let t=Math.max(250,e??3e4)+100;se=setTimeout(()=>void le(),t)}async function le(){try{let e=await $.pairingCode();if(!e.enabled||!e.code){V(void 0),H();return}V(e),ce(e.expiresInMs)}catch(e){console.warn(`pairing code unavailable`,e),V(void 0),H()}}let[U]=F(async()=>{try{let{version:e}=await $.version();return e}catch{return}}),[ue]=F(async()=>{try{return await $.serverInfo()}catch{return}}),[de,fe]=k(!1),[pe,me]=k(!1),[he,ge]=k();async function _e(){ge(void 0),me(!0);try{await $.restartServer()}catch(e){ge(e instanceof Error?e.message:String(e)),me(!1)}}async function ve(e){n(void 0),i([]),o(!1);try{let t=await $.saveSettings(e);S(t),i(t.warnings??[]),o(!0),setTimeout(()=>o(!1),2e3)}catch(e){n(e instanceof Error?e.message:String(e)),await C()}}let ye=Promise.resolve(),be;function xe(){return be??x()?.subagentArbiter??{}}function Se(e){let t={...xe(),...e};be=t;let r=x();r&&S({...r,subagentArbiter:t}),ye=ye.then(async()=>{n(void 0),i([]),o(!1);try{let e=await $.saveSettings({subagentArbiter:t});i(e.warnings??[]),o(!0),setTimeout(()=>o(!1),2e3),be===t?(be=e.subagentArbiter??void 0,S(e)):S({...e,subagentArbiter:be})}catch(e){let r=e instanceof Error?e.message:String(e),i=await C();n(r),be===t?be=i?.subagentArbiter??void 0:i&&S({...i,subagentArbiter:be})}})}async function Ce(e,t){await ve({agentModels:{[e]:t}})}async function we(e){n(void 0),v(!0);try{let t=await $.trustContextFolder(e);S(t.settings),g(``)}catch(e){n(e instanceof Error?e.message:String(e))}finally{v(!1)}}async function Te(e){n(void 0),v(!0);try{let t=await $.removeTrustedContextFolder(e);S(t.settings)}catch(e){n(e instanceof Error?e.message:String(e))}finally{v(!1)}}function q(e){return x()?.agentModels?.[e]??[]}function Ee(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&&!Tp.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 De(){typeof Notification>`u`||b(await Notification.requestPermission())}R(()=>void le()),z(H);let Oe=()=>e.store.auth();return(()=>{var i=$f(),o=i.firstChild,v=o.firstChild.nextSibling.nextSibling,b=v.firstChild.nextSibling;b.firstChild;var S=b.nextSibling,C=S.firstChild.nextSibling.firstChild,k=S.nextSibling,M=k.firstChild.nextSibling.firstChild.firstChild,N=k.nextSibling,P=N.firstChild.nextSibling,F=N.nextSibling,R=F.firstChild,z=R.firstChild.nextSibling,te=R.nextSibling.firstChild.firstChild,ae=te.nextSibling,V=F.nextSibling.firstChild,se=V.firstChild.nextSibling,H=V.nextSibling.firstChild,ce=v.nextSibling,le=ce.firstChild.nextSibling,me=le.firstChild.firstChild.nextSibling,ge=le.nextSibling.firstChild.nextSibling.firstChild,ye=ge.nextSibling.nextSibling,be=ce.nextSibling,Y=be.firstChild.nextSibling;return Y.nextSibling,Z(i,W(it,{get store(){return e.store},active:`settings`}),o),Z(o,W(K,{get when(){return t()},get children(){var e=Kf();return Z(e,t),e}}),v),Z(o,W(K,{get when(){return r().length>0},get children(){var e=qf();return Z(e,W(G,{get each(){return r()},children:e=>(()=>{var t=ep();return Z(t,e),t})()})),e}}),v),Z(o,W(K,{get when(){return a()},get children(){return Jf()}}),v),Z(o,W(K,{get when(){return x()},get fallback(){return(()=>{var e=tp();return Z(e,()=>t()?`Settings could not be loaded — see the error above.`:`Loading settings…`),e})()},children:t=>[(()=>{var e=np(),n=e.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`}),Z(r,()=>Ap(t())),Z(o,()=>Tp.join(` · `)),s.addEventListener(`change`,e=>ve({defaultThinkingLevel:e.currentTarget.value})),Z(s,W(G,{each:Tp,children:e=>(()=>{var t=dp();return t.value=e,Z(t,e),t})()})),l.addEventListener(`change`,e=>ve({transport:e.currentTarget.value})),Z(l,W(G,{get each(){return[...Dp]},children:e=>(()=>{var t=dp();return t.value=e,Z(t,e),t})()})),j(()=>s.value=t().defaultThinkingLevel??`off`),j(()=>l.value=t().transport??`sse`),e})(),W(tf,{get cwd(){return p()},get projectRoots(){return T()},get focused(){return e.target===`scoped-models`},onCwdChange:t=>{m(t),e.store.navigate({screen:`settings`,target:`scoped-models`,...t?{cwd:t}:{}})}}),(()=>{var e=rp(),r=e.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,Z(i,W(Fp,{get value(){return t().subagentArbiter?.enabled===!0},onChange:e=>{let t=xe();return e&&(typeof t.model!=`string`||!t.model.trim())?(n(`Choose an exact Dispatch Arbiter model before enabling it.`),c({kind:`arbiter`}),!1):(Se({enabled:e}),!0)}})),o.$$click=()=>c({kind:`arbiter`}),Z(o,(()=>{var e=J(()=>typeof t().subagentArbiter?.model==`string`);return()=>e()?t().subagentArbiter?.model:`choose model…`})()),l.addEventListener(`change`,e=>Se({thinking:e.currentTarget.value})),Z(l,W(G,{each:Tp,children:e=>(()=>{var t=dp();return t.value=e,Z(t,e),t})()})),d.addEventListener(`change`,e=>{Se({guidePath:e.currentTarget.value.trim()||void 0})}),Z(f,()=>Ee(t()).message,null),j(()=>Ae(f,Ee(t()).ready?`settings-warning`:`muted small`)),j(()=>l.value=typeof t().subagentArbiter?.thinking==`string`&&Tp.some(e=>e===t().subagentArbiter?.thinking)?t().subagentArbiter?.thinking:`off`),j(()=>d.value=typeof t().subagentArbiter?.guidePath==`string`?t().subagentArbiter?.guidePath:``),e})(),(()=>{var e=ap();return e.firstChild.nextSibling,Z(e,W(K,{get when(){return T().length>0},get children(){var e=ip(),t=e.firstChild.nextSibling.firstChild;return t.firstChild,t.addEventListener(`change`,e=>f(e.currentTarget.value||void 0)),Z(t,W(G,{get each(){return T()},children:e=>(()=>{var t=dp();return t.value=e,Z(t,e),t})()}),null),j(()=>X(t,`title`,d()??`global/home only`)),j(()=>t.value=d()??``),e}}),null),Z(e,W(K,{get when(){return(E()??[]).length>0},get fallback(){return fp()},get children(){return W(G,{get each(){return E()??[]},children:e=>{let n=()=>t().agentModels?.[e.name]??[];return(()=>{var t=mp(),r=t.firstChild,i=r.firstChild,a=i.nextSibling,o=r.nextSibling,s=o.nextSibling;return Z(i,()=>e.name),Z(a,()=>e.description),Z(o,W(K,{get when(){return n().length>0},get fallback(){return hp()},get children(){return W(G,{get each(){return n()},children:(e,t)=>(()=>{var n=gp(),r=n.firstChild;return Z(n,()=>t()+1,r),Z(n,e,null),n})()})}})),s.$$click=()=>u(l()===e.name?void 0:e.name),Z(s,()=>l()===e.name?`done`:`edit`),Z(t,W(K,{get when(){return l()===e.name},get children(){var t=pp(),r=t.firstChild;return Z(t,W(K,{get when(){return n().length>0},get fallback(){return _p()},get children(){return W(G,{get each(){return n()},children:(t,r)=>(()=>{var i=vp(),a=i.firstChild,o=a.nextSibling.firstChild,s=o.nextSibling,c=s.nextSibling;return Z(a,t),o.$$click=()=>void Ce(e.name,Pp(n(),r(),-1)),s.$$click=()=>void Ce(e.name,Pp(n(),r(),1)),c.$$click=()=>void Ce(e.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:e.name}),t}}),null),t})()}})}}),null),e})(),(()=>{var e=op(),n=e.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return Z(r,W(Fp,{get value(){return t().imageAutoResize!==!1},onChange:e=>ve({imageAutoResize:e})})),Z(i,W(Fp,{get value(){return t().blockImages===!0},onChange:e=>ve({blockImages:e})})),e})(),(()=>{var e=sp(),n=e.firstChild.nextSibling,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling.firstChild.nextSibling.firstChild;return r.addEventListener(`change`,e=>ve({steeringMode:e.currentTarget.value})),Z(r,W(G,{get each(){return[...Ep]},children:e=>(()=>{var t=dp();return t.value=e,Z(t,e),t})()})),i.addEventListener(`change`,e=>ve({followUpMode:e.currentTarget.value})),Z(i,W(G,{get each(){return[...Ep]},children:e=>(()=>{var t=dp();return t.value=e,Z(t,e),t})()})),j(()=>r.value=t().steeringMode??`all`),j(()=>i.value=t().followUpMode??`all`),e})(),(()=>{var e=cp(),r=e.firstChild.nextSibling,i=r.firstChild.nextSibling,a=r.nextSibling,o=a.firstChild.nextSibling.firstChild,s=a.nextSibling,c=s.firstChild.nextSibling.nextSibling.nextSibling,l=c.firstChild.nextSibling,u=l.nextSibling,d=s.nextSibling,f=d.firstChild.nextSibling,p=d.nextSibling.nextSibling.firstChild.nextSibling;return Z(i,W(Fp,{get value(){return t().enableSkillCommands!==!1},onChange:e=>ve({enableSkillCommands:e})})),o.addEventListener(`change`,e=>{let r=e.currentTarget.value.trim(),i=r.length>0?Number(r):NaN;if(!Number.isSafeInteger(i)||i<0){n(`Max concurrent subagents must be a non-negative whole number`),e.currentTarget.value=String(t().maxConcurrentSubagents??4);return}ve({maxConcurrentSubagents:i})}),Z(s,W(K,{get when(){return(t().trustedContextFolders??[]).length>0},get fallback(){return yp()},get children(){return W(G,{get each(){return t().trustedContextFolders??[]},children:e=>(()=>{var t=bp(),n=t.firstChild,r=n.nextSibling.nextSibling;return Z(n,e),r.$$click=()=>void Te(e),Z(r,()=>_()?`revoking…`:`revoke trust`),j(()=>r.disabled=_()),t})()})}}),c),c.addEventListener(`submit`,e=>{e.preventDefault();let t=h().trim();t&&we(t)}),l.$$input=e=>g(e.currentTarget.value),Z(u,()=>_()?`trusting…`:`trust folder`),Z(f,W(Fp,{get value(){return t().autoLoadNestedContext===!0},onChange:e=>ve({autoLoadNestedContext:e})})),Z(p,W(Fp,{get value(){return t().hideThinkingBlock===!0},onChange:e=>ve({hideThinkingBlock:e})})),j(()=>u.disabled=_()||!h().trim()),j(()=>o.value=t().maxConcurrentSubagents??4),j(()=>l.value=h()),e})(),(()=>{var e=lp(),n=e.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return Z(r,W(Fp,{get value(){return t().compactionEnabled!==!1},onChange:e=>ve({compactionEnabled:e})})),Z(i,W(Fp,{get value(){return t().retryEnabled!==!1},onChange:e=>ve({retryEnabled:e})})),e})(),up()]}),v),Z(b,W(Lf,{}),null),C.addEventListener(`change`,e=>us(e.currentTarget.value)),M.addEventListener(`change`,e=>ls(e.currentTarget.checked)),Z(P,W(G,{each:Go,children:e=>(()=>{var t=xp(),n=t.firstChild,r=n.nextSibling;return n.addEventListener(`change`,t=>ds(e,t.currentTarget.checked)),X(n,`id`,`pref-tool-expand-${e}`),Z(r,e),j(()=>n.checked=fs(e)),t})()})),Z(z,(()=>{var e=J(()=>y()===`denied`);return()=>e()?`blocked by browser settings — re-enable notifications in site permissions`:J(()=>y()===`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`:J(()=>y()===`ios-install`)()?`iOS notifications need the installed PWA — tap Share → Add to Home Screen, then open dreb from the home screen icon`:y()===`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)`})()),te.addEventListener(`change`,e=>{e.currentTarget.checked&&De()}),Z(ae,()=>y()===`granted`?`enabled`:`enable notifications`),Z(se,()=>ue()?.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`),H.$$click=()=>fe(!0),Z(H,()=>pe()?`restarting…`:`restart`),Z(v,W(K,{get when(){return he()},get children(){var e=Kf();return Z(e,he),e}}),null),Z(me,()=>Oe()?.mode===`local`?`local`:`host`),ge.$$input=e=>{re(e.currentTarget.value),L(!1)},ye.$$click=()=>void B(),Z(ye,()=>ee()?`saving…`:`save`),Z(ce,W(K,{get when(){return I()},get children(){return Yf()}}),null),Z(ce,W(K,{get when(){return A()},get children(){var e=Kf();return Z(e,A),e}}),null),Z(ce,W(K,{get when(){return J(()=>!!oe()?.enabled)()&&oe()?.code},get children(){var e=Xf(),t=e.firstChild.nextSibling.firstChild;return Z(t,()=>oe().code),e}}),null),Z(ce,W(G,{get each(){return D()??[]},children:e=>(()=>{var t=Sp(),n=t.firstChild,r=n.nextSibling,i=r.firstChild,a=i.nextSibling;a.nextSibling;var o=r.nextSibling.firstChild;return Z(n,()=>e.device??e.id),Z(r,()=>e.identity,i),Z(r,()=>lt(e.createdAt),a),Z(r,()=>e.expiresAt.slice(0,10),null),o.$$click=async()=>{await $.unpair(e.id),await O()},t})()}),null),Z(ce,W(K,{get when(){return(D()??[]).length===0},get children(){return Zf()}}),null),Z(be,(()=>{var e=J(()=>!!ue()?.version);return()=>e()?` v${ue().version}`:J(()=>!!U())()?` v${U()}`:``})(),Y),Z(be,W(K,{get when(){return ue()?.startedAt},get children(){return[` · server build, up `,J(()=>lt(ue().startedAt))]}}),null),Z(i,W(K,{get when(){return de()},get children(){return W(ot,{title:`restart dashboard service?`,onDismiss:()=>fe(!1),get actions(){return[(()=>{var e=Cp();return e.$$click=()=>fe(!1),e})(),(()=>{var e=wp();return e.$$click=()=>{fe(!1),_e()},e})()]},get children(){var e=Qf();return e.firstChild.nextSibling.nextSibling,Z(e,()=>ue()?.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),Z(i,W(K,{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"?x()?.defaultProvider&&x()?.defaultModel?[`${x().defaultProvider}/${x().defaultModel}`]:[]:t.kind===`arbiter`?x()?.subagentArbiter?.model?[x().subagentArbiter.model]:[]:q(t.agentName)};return W(Ip,{get title(){return t()},get models(){return w()??[]},get selected(){return n()},onClose:()=>c(void 0),onPick:t=>{let n=e();if(c(void 0),n.kind==="default"){ve({defaultProvider:t.provider,defaultModel:t.id});return}if(n.kind===`arbiter`){Se({model:Op(t)});return}let r=Op(t),i=q(n.agentName);i.includes(r)||Ce(n.agentName,[...i,r])}})}}),null),j(e=>{var t=y()===`denied`||y()===`unsupported`||y()===`ios-install`||y()===`insecure`,n=pe(),r=ee()||ie.loading;return t!==e.e&&(te.disabled=e.e=t),n!==e.t&&(H.disabled=e.t=n),r!==e.a&&(ye.disabled=e.a=r),e},{e:void 0,t:void 0,a:void 0}),j(()=>C.value=cs()),j(()=>M.checked=ss()),j(()=>te.checked=y()===`granted`),j(()=>ge.value=ne()),i})()}ke([`input`,`click`]);var Rp=Y(`<div class="status-line arbitration-history">`),zp=Y(`<p class=pair-error>`),Bp=Y(`<div class=status-line><span class=working>● working`),Vp=Y(`<output class=pending-chips aria-label="pending subagent steering messages">`),Hp=Y(`<div class=composer><textarea placeholder="Steer this subagent…"></textarea><div class=composer-row><span class=muted>steering delivery: </span><button type=button class="btn btn-primary btn-small send">`),Up=Y(`<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>`),Wp=Y(`<span>arbiter: `),Gp=Y(`<p class=muted>`),Kp=Y(`<div class=readonly-note>`),qp=Y(`<span class=pending-chip>steer: `);function Jp(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 Yp(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]=k(``),[u,d]=k(!1),[f,p]=k(),[m,h]=k(),[g,_]=k({steering:[],followUp:[]}),v=()=>t()?.closed,y=()=>!v()&&n()?.status===`running`,b=()=>typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 700px)`).matches,x,S,C,w=zo({scroller:()=>x});R(()=>{let t=new AbortController;v()||e.store.hydrateSubagent(e.sessionKey,e.agentId,t.signal).catch(e=>{t.signal.aborted&&hl(e)||v()||s(e instanceof Error?e.message:String(e))}),z(()=>t.abort())}),M(()=>{e.store.revisions[e.sessionKey],w.notifyContentChanged()}),R(()=>{w.observeContent(C),w.observeViewport(x),x&&z(Vo(w,x,{keyboard:`window`}))}),z(()=>w.dispose());async function T(){if(y())try{let t=await $.subagentPending(e.sessionKey,e.agentId);h(t.steeringMode),_(t.pending),p(void 0)}catch(e){v()||p(e instanceof Error?e.message:String(e))}}R(()=>{T();let e=window.setInterval(()=>{y()&&T()},1e3);z(()=>window.clearInterval(e))}),M(()=>{c(),S&&queueMicrotask(()=>S&&Td(S))});async function E(){let t=c();if(!(!t.trim()||u()||!y())){d(!0),p(void 0);try{await $.steerSubagent(e.sessionKey,e.agentId,t),l(``),await T()}catch(e){v()||p(e instanceof Error?e.message:String(e))}finally{d(!1)}}}let D=N(()=>{let n=[],r=v();if(r&&!r.bannerDismissed){let t=[];r.cwd&&r.sessionFile&&t.push({label:r.resuming?`resuming…`:`Resume session`,run:()=>e.store.resumeClosedSession(e.sessionKey),disabled:r.resuming}),t.push({label:`Return to fleet`,run:()=>e.store.navigate({screen:`fleet`}),disabled:r.resuming}),n.push({key:`closed`,text:`session ${e.sessionKey} was closed${r.resumeError?`\nResume failed: ${r.resumeError}`:``}`,tone:r.resumeError?`error`:`warning`,onDismiss:()=>e.store.dismissClosedBanner(e.sessionKey),actions:t})}for(let r of t()?.statusEntries??[])r.dismissed||n.push({key:`status:${r.id}`,text:r.text,tone:r.tone,onDismiss:()=>e.store.dismissStatusBanner(e.sessionKey,r.id)});for(let r of t()?.toasts??[])n.push({key:`toast:${r.id}`,text:r.text,tone:r.tone,onDismiss:()=>e.store.dismissToast(r.id)});return n});return(()=>{var t=Up(),i=t.firstChild,s=i.firstChild.firstChild;s.firstChild;var d=s.nextSibling;d.firstChild;var p=d.nextSibling,h=p.nextSibling,_=i.nextSibling,w=_.firstChild,T=_.nextSibling.firstChild;Z(s,a,null),Z(d,()=>n()?.agentType??`unknown`,null),Z(p,()=>n()?.taskSummary??e.agentId),Z(h,W(K,{get when(){return y()},get fallback(){return W(nt,{get status(){return!v()&&n()?.status===`failed`?`error`:`idle`},get label(){return J(()=>!!v())()?`closed`:n()?.status}})},get children(){return W(nt,{status:`running`})}})),Z(t,W(st,{get banners(){return D()}}),_);var O=x;typeof O==`function`?Pe(O,_):x=_;var k=C;return typeof k==`function`?Pe(k,w):C=w,Z(w,W(K,{get when(){return(n()?.arbitrations?.length??0)>0},get children(){var e=Rp();return Z(e,W(G,{get each(){return n()?.arbitrations??[]},children:e=>(()=>{var t=Wp();return t.firstChild,Z(t,()=>Jp(e),null),j(()=>Ae(t,e.status===`failure`?`error-reason`:`muted`)),t})()})),e}}),null),Z(w,W(K,{get when(){return o()},get children(){var e=zp();return Z(e,o),e}}),null),Z(w,W(K,{get when(){return J(()=>!!r())()&&r().entries.length>0},get fallback(){return(()=>{var e=Gp();return Z(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 W(Oc,{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),Z(T,W(K,{get when(){return r()?.streaming},get children(){return Bp()}}),null),Z(T,W(K,{get when(){return y()},get fallback(){return(()=>{var e=Kp();return Z(e,()=>v()?`This session is closed; the subagent transcript is read-only.`:`This subagent is no longer running; its transcript is read-only.`),e})()},get children(){return[W(K,{get when(){return f()},get children(){var e=zp();return Z(e,f),e}}),W(K,{get when(){return g().steering.length>0},get children(){var e=Vp();return Z(e,W(G,{get each(){return g().steering},children:e=>(()=>{var t=qp();return t.firstChild,Z(t,e,null),t})()})),e}}),(()=>{var e=Hp(),t=e.firstChild,n=t.nextSibling.firstChild;n.firstChild;var r=n.nextSibling;t.$$keydown=e=>{e.key===`Enter`&&!e.shiftKey&&!b()&&(e.preventDefault(),E())},t.$$input=e=>{l(e.currentTarget.value),Td(e.currentTarget)};var i=S;return typeof i==`function`?Pe(i,t):S=t,Z(n,()=>m()??`loading…`,null),r.$$click=()=>void E(),Z(r,()=>u()?`sending…`:`steer ↵`),j(e=>{var n=u(),i=u()||c().trim().length===0;return n!==e.e&&(t.disabled=e.e=n),i!==e.t&&(r.disabled=e.t=i),e},{e:void 0,t:void 0}),j(()=>t.value=c()),e})()]}}),null),j(()=>X(s,`href`,`#/session/${e.sessionKey}`)),t})()}ke([`input`,`keydown`,`click`]);var Xp=Symbol(`store-raw`),Zp=Symbol(`store-node`),Qp=Symbol(`store-has`),$p=Symbol(`store-self`);function em(e){let t=e[p];if(!t&&(Object.defineProperty(e,p,{value:t=new Proxy(e,cm)}),!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 tm(e){let t;return typeof e==`object`&&!!e&&(e[p]||!(t=Object.getPrototypeOf(e))||t===Object.prototype||Array.isArray(e))}function nm(e,t=new Set){let n,r,i,a;if(n=e!=null&&e[Xp])return n;if(!tm(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=nm(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=nm(i,t))!==i&&(e[a]=r))}return e}function rm(e,t){let n=e[t];return n||Object.defineProperty(e,t,{value:n=Object.create(null)}),n}function im(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 am(e,t){let n=Reflect.getOwnPropertyDescriptor(e,t);return!n||n.get||!n.configurable||t===p||t===Zp?n:(delete n.value,delete n.writable,n.get=()=>e[p][t],n)}function om(e){ee()&&im(rm(e,Zp),$p)()}function sm(e){return om(e),Reflect.ownKeys(e)}var cm={get(e,t,n){if(t===Xp)return e;if(t===p)return n;if(t===m)return om(e),n;let r=rm(e,Zp),i=r[t],a=i?i():e[t];if(t===Zp||t===Qp||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=im(r,t,a)())}return tm(a)?em(a):a},has(e,t){return t===Xp||t===p||t===m||t===Zp||t===Qp||t===`__proto__`?!0:(ee()&&im(rm(e,Qp),t)(),t in e)},set(){return!0},deleteProperty(){return!0},ownKeys:sm,getOwnPropertyDescriptor:am};function lm(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[Qp]&&e[Qp][t]&&i!==void 0&&e[Qp][t].$()):(e[t]=n,e[Qp]&&e[Qp][t]&&i===void 0&&e[Qp][t].$());let o=rm(e,Zp),s;if((s=im(o,t,i))&&s.$(()=>n),Array.isArray(e)&&e.length!==a){for(let t=e.length;t<a;t++)(s=o[t])&&s.$();(s=im(o,`length`,a))&&s.$(e.length)}(s=o[$p])&&s.$()}function um(e,t){let n=Object.keys(t);for(let r=0;r<n.length;r+=1){let i=n[r];dm(i)||lm(e,i,t[i])}}function dm(e){return e===`__proto__`||e===`constructor`||e===`prototype`}function fm(e,t){if(typeof t==`function`&&(t=t(e)),t=nm(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&&lm(e,n,r)}lm(e,`length`,r)}else um(e,t)}function pm(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&&dm(r)))return;if(Array.isArray(r)){for(let i=0;i<r.length;i++)pm(e,[r[i]].concat(t),n);return}else if(o&&a===`function`){for(let i=0;i<e.length;i++)r(e[i],i)&&pm(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)pm(e,[r].concat(t),n);return}else if(t.length>1){pm(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=nm(a),r===void 0||tm(i)&&tm(a)&&!Array.isArray(a)?um(i,a):lm(e,r,a))}function mm(...[e,t]){let n=nm(e||{}),r=Array.isArray(n),i=em(n);function a(...e){I(()=>{r&&e.length===1?fm(n,e[0]):pm(n,e)})}return[i,a]}var hm=new WeakMap,gm={get(e,t){if(t===Xp)return e;let n=e[t];if(t===p||t===m||t===Zp||t===Qp||t===`__proto__`)return n;let r;return tm(n)?hm.get(n)||(hm.set(n,r=new Proxy(n,gm)),r):n},set(e,t,n){return lm(e,t,nm(n)),!0},deleteProperty(e,t){return lm(e,t,void 0,!0),!0}};function _m(e){return t=>{if(tm(t)){let n;(n=hm.get(t))||hm.set(t,n=new Proxy(t,gm)),e(n)}return t}}function vm(){let[e,t=``]=window.location.hash.replace(/^#\/?/,``).split(`?`,2),[n,...r]=e.split(`/`);if(n===`session`&&r[0])return r[1]===`subagent`&&r[2]?{screen:`subagent`,key:r[0],agentId:r[2]}:{screen:`session`,key:r[0]};if(n===`files`)return{screen:`files`,path:r.length?decodeURIComponent(r.join(`/`)):void 0};if(n===`memories`)return{screen:`memories`};if(n===`settings`){if(r[0]===`scoped-models`){let e=new URLSearchParams(t).get(`cwd`)||void 0;return{screen:`settings`,target:`scoped-models`,...e?{cwd:e}:{}}}return{screen:`settings`}}return n===`pairing`?{screen:`pairing`}:{screen:`fleet`}}function ym(e){return e.screen===`session`||e.screen===`subagent`?e.key:void 0}function bm(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`memories`:return`#/memories`;case`settings`:return e.target===`scoped-models`?`#/settings/scoped-models${e.cwd?`?cwd=${encodeURIComponent(e.cwd)}`:``}`:`#/settings`;case`pairing`:return`#/pairing`}}var xm=2e3,Sm=3*1024*1024,Cm=xm,wm=Sm,Tm=3e4,Em=1e4,Dm=1e3,Om=3e4,km=5e3,Am=5*6e4,jm=2147e6,Mm=new TextEncoder;function Nm(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(nn({key:`retry`,text:`retrying (attempt ${r})${n}`,tone:`warning`}))}pn(e,t,n.isStreaming||n.isRetrying||n.isCompacting)}function Pm(){let[e,t]=mm({}),[n,r]=mm({}),[i,a]=k(vm()),[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=new Map,ne=new Map,re=0,ie=0,ae,B,oe,V=0,se=new Set,H=!1;function ce(t,n){let r=ym(t);!r||r===ym(n)||!e[r]?.closed||Se(r)}function le(){let e=vm();ce(i(),e),a(e)}window.addEventListener(`hashchange`,le);function U(e){ce(i(),e),window.location.hash=bm(e)}function ue(e){return n[e]??0}function de(e){return C.get(e)??0}function fe(e){return w.get(e)??0}function pe(e){w.set(e,fe(e)+1)}function me(e){C.set(e,de(e)+1)}function he(e){return{revision:ue(e),generation:de(e),epoch:E}}function ge(e,t){return de(e)===t.generation&&E===t.epoch}function _e(e,t){return ue(e)===t.revision&&ge(e,t)}function ve(e,t){t&&T.get(e)!==t||(T.delete(e),t&&(t.queued=[],t.queuedBytes=0))}function ye(e){r(e,ue(e)+1)}function be(n){e[n]||t(n,Gt(n))}function xe(e,n){be(e),t(e,_m(n)),ye(e)}function Se(e){ve(e),me(e),w.delete(e),t(e,void 0),r(e,void 0),Sl(e)}function Ce(){return ym(vm())}function W(e,t=`info`){--D,S(n=>[...n,{id:D,text:e,tone:t}].slice(-20))}function we(){B!==void 0&&clearTimeout(B),B=void 0,oe=void 0,V=0}function G(e){if(H||oe!==e)return;let t=e-Date.now();if(t<=0){B=void 0,Ee(e);return}B=setTimeout(()=>G(e),Math.min(t,jm))}function K(e){if(we(),!e)return;let t=Date.parse(e);if(!Number.isFinite(t)){W(`Dashboard returned an invalid pairing-expiry check time`,`error`);return}oe=t,G(t)}function Te(e){if(H||oe!==e)return;V+=1;let t=Math.min(10,V-1),n=Math.min(Am,km*2**t);B=setTimeout(()=>{B=void 0,!H&&oe===e&&Ee(e)},n)}function q(e){e.pairingExpiryWarning&&W(`This device pairing expires on ${e.pairingExpiryWarning.expiresAt.slice(0,10)}. Re-pair before then to avoid losing remote access.`,`warning`)}function J(e){_(e),q(e),K(e.pairingExpiryCheckAt)}async function Ee(e){try{let t=await $.auth();if(H)return;if(oe!==e){q(t);return}if((t.pairingExpiryCheckAt?Date.parse(t.pairingExpiryCheckAt):void 0)===e&&e<=Date.now()){_(t),q(t),Te(e);return}J(t)}catch(t){if(H||oe!==e)return;if(t?.status===401||t?.status===403){we(),_({mode:`remote`,needsPairing:t?.body?.needsPairing??!1,identity:t?.body?.identity,error:t?.message}),U({screen:`pairing`});return}V===0&&W(`Could not check pairing expiry: ${t instanceof Error?t.message:String(t)}`,`error`),Te(e)}}function De(e){return R.get(e)??0}function Oe(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=De(e)+1;R.set(e,t),n===void 0?z.set(e,t):ee.set(e,Math.max(ee.get(e)??-1,n))}}function Y(e,t){s(n=>{let r=e(n);return L+=1,Oe(n.runtimes,r.runtimes,t),r})}function ke(e){se.clear(),te.clear(),ne.clear(),Y(()=>e)}function X(e,t){let n=te.get(e.key);if(!n)return e.state;let r={...e.state},i=e.settingsRevision??0;return n.model&&(i>=n.model.settingsRevision?delete n.model:r.model=t?.state.model??n.model.value),n.thinkingLevel&&(i>=n.thinkingLevel.settingsRevision?delete n.thinkingLevel:r.thinkingLevel=t?.state.thinkingLevel??n.thinkingLevel.value),n.model===void 0&&n.thinkingLevel===void 0&&te.delete(e.key),r}function Ae(e,t){let n=new Set(e.filter(e=>!se.has(e.key)).map(e=>e.key)),r=n.size!==o().runtimes.length||o().runtimes.some(e=>!n.has(e.key));Y(t=>{let n=new Map(t.runtimes.map(e=>[e.key,e]));return{...t,runtimes:e.filter(e=>!se.has(e.key)).map(e=>{let t=n.get(e.key);return{...e,state:{...X(e,t),contextUsage:t?.state.contextUsage??e.state.contextUsage},...t?.stats===void 0?{}:{stats:t.stats},...t?.lastAssistantText===void 0?{}:{lastAssistantText:t.lastAssistantText}}})}},t),r&&Le().catch(()=>{})}function je(e,t){ve(e),me(e),xe(e,e=>{let n=e.closed;e.closed={...t?.cwd||n?.cwd?{cwd:n?.cwd??t?.cwd}:{},...t?.state.sessionFile||n?.sessionFile?{sessionFile:n?.sessionFile??t?.state.sessionFile}:{},...n?.bannerDismissed?{bannerDismissed:!0}:{},...n?.resuming?{resuming:!0}:{},...n?.resumeError?{resumeError:n.resumeError}:{}},e.streaming=!1,e.compacting=!1,e.workingSince=void 0,e.workingText=void 0,e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`&&e.key!==`paused`&&e.key!==`compaction`),e.suggestedCommand=void 0,e.uiRequests=[];for(let t of Object.values(e.subagents))t.streaming=!1;cn(e)})}function Me(e,t,n=!0){let r=t??o().runtimes.find(t=>t.key===e),i=se.has(e);return se.add(e),te.delete(e),ne.delete(e),i||Y(t=>({...t,runtimes:t.runtimes.filter(t=>t.key!==e)})),Ce()===e?je(e,r):Se(e),i||!n?Promise.resolve():Le()}async function Ne(e){let t=o().runtimes.find(t=>t.key===e);try{await $.stopRuntime(e)}catch(t){if(se.has(e))return;throw t}await Me(e,t)}function Pe(t,n){e[t]?.statusEntries.some(e=>e.id===n)&&xe(t,e=>{let t=e.statusEntries.find(e=>e.id===n);t&&(t.dismissed=!0)})}function Z(t){e[t]?.closed&&xe(t,e=>{e.closed&&(e.closed.bannerDismissed=!0)})}async function Fe(t){let n=e[t]?.closed;if(!n||n.resuming)return;if(!n.cwd||!n.sessionFile){xe(t,e=>{e.closed&&(e.closed.resumeError=`This closed session has no captured resume path.`)});return}let r=n.cwd,i=n.sessionFile;xe(t,e=>{e.closed&&(e.closed.resuming=!0,e.closed.resumeError=void 0)});let a;try{a=await $.createRuntime(r,{sessionPath:i})}catch(n){let r=n instanceof Error?n.message:String(n);if(!e[t]?.closed)return;xe(t,e=>{e.closed&&(e.closed.resuming=!1,e.closed.resumeError=r,e.closed.bannerDismissed=!1)});return}Re(a),Le().catch(()=>{}),U({screen:`session`,key:a.key})}function Ie(){let e=++re,t=L;return $.fleet().then(n=>{e!==re||t!==L||(ke(n),l(void 0))},n=>{throw e===re&&t===L&&l(n instanceof Error?n.message:String(n)),n})}function Le(){let e=++ie;return $.sessions().then(t=>{e===ie&&(Y(e=>({...e,diskSessions:t.sessions})),l(void 0))},t=>{throw e===ie&&l(t instanceof Error?t.message:String(t)),t})}function Re(e){se.delete(e.key),Y(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 ze(e,t,n,r){if(o().runtimes.some(t=>t.key===e)){if(n!==void 0&&De(e)!==n){let t=z.get(e)??0,i=ee.get(e);if(t>n||i===void 0||i>r)return}Y(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:t}:n)}))}}function Be(e,t,n){let r=o().runtimes.find(t=>t.key===e),i=te.get(e)??{};(r?.settingsRevision??0)>=n?delete i.model:i.model={value:t,settingsRevision:n},i.model===void 0&&i.thinkingLevel===void 0?te.delete(e):te.set(e,i),!((r?.settingsRevision??0)>=n)&&Y(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:{...n.state,model:t}}:n)}))}function Ve(e,t,n){let r=o().runtimes.find(t=>t.key===e),i=te.get(e)??{};(r?.settingsRevision??0)>=n?delete i.thinkingLevel:i.thinkingLevel={value:t,settingsRevision:n},i.model===void 0&&i.thinkingLevel===void 0?te.delete(e):te.set(e,i),!((r?.settingsRevision??0)>=n)&&Y(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:{...n.state,thinkingLevel:t}}:n)}))}function He(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}}}async function Ue(e,t){let n=(ne.get(e)??0)+1;ne.set(e,n);let r=De(e),i=await $.stats(e,t);return ne.get(e)!==n||!o().runtimes.some(t=>t.key===e)||Y(t=>({...t,runtimes:t.runtimes.map(t=>t.key===e?He(t,i,De(e)!==r):t)})),i}function We(e){let t=new AbortController,n,r=new Promise((r,i)=>{n=setTimeout(()=>{let n=Error(`Stats request for runtime ${e} timed out after ${Em} ms`);i(n),t.abort(n)},Em)});return Promise.race([$.stats(e,t.signal),r]).finally(()=>{n!==void 0&&clearTimeout(n)})}function Ge(){if(ae)return ae;let e=o().runtimes.map(e=>e.key),t=new Map(e.map(e=>[e,De(e)])),n=e.map(e=>We(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&&Y(e=>({...e,runtimes:e.runtimes.map(e=>{let n=r.get(e.key),i=t.get(e.key),a=i===void 0||De(e.key)!==i;return n?He(e,n,a):e})})),d(i.length>0?i.join(`; `):void 0)}).finally(()=>{ae===r&&(ae=void 0)});return ae=r,r}function Ke(e){return Mm.encode(JSON.stringify(e)).byteLength}function qe(e){e.queued=[],e.queuedBytes=0}function Je(){j!==void 0&&clearTimeout(j),j=void 0}function Ye(){return Math.min(Om,Dm*2**Math.max(0,P-1))}function Xe(){if(H||j!==void 0)return;P+=1;let e=Ye();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,tt()},e)}function Ze(){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 Qe(e){let t=e.event?.type;t===`fleet_snapshot`?Ae(e.event.runtimes,e.seq):t===`disk_sessions_changed`?Le().catch(()=>{}):t===`runtime_removed`?e.key&&Me(e.key).catch(()=>{}):e.key&&(xe(e.key,t=>vn(t,e.event)),t===`tasks_update`&&pe(e.key))}function $e(e){let t=e.subagent;xe(e.key,n=>{let r=e.messages;if(n.closed=void 0,n.entries=$t(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=>Wt(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,Nm(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])),sn(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:$t(t.messages),streaming:r.status===`running`}}cn(n)}),pe(e.key)}function et(e,t){if(A!==e||e.state!==`active`||e.barrierSeq===void 0)return;Je(),P=0,Ze();let n=e.barrierSeq;I=n;let r=Ce(),i=r?o().runtimes.find(e=>e.key===r):void 0;ke(t.fleet),l(void 0),t.active?$e(t.active):r&&Me(r,i,!1).catch(()=>{});let a=[...e.queued].sort((e,t)=>e.seq-t.seq),s=t.active?.subagent;if(s&&t.active)for(let e of a)e.seq>s.barrierSeq&&e.seq<=n&&e.key===t.active.key&&e.event.type===`background_agent_event`&&String(e.event.agentId)===s.agentId&&Qe(e);for(let e of a)e.seq>n&&Qe(e);qe(e),A=void 0,h(!1),p(void 0)}function tt(e=!1){if(H)return Promise.resolve();if(O)return(e||A?.state===`failed`)&&(F=!0),O;Je();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)ve(e,t);h(!0),p(void 0);let o=setTimeout(()=>a.controller.abort(`Dashboard recovery timed out`),Tm),s=$.resync(n,r,a.controller.signal).then(e=>{a.barrierSeq=e.barrierSeq,et(a,e)}).catch(e=>{if(A!==a)return;a.state=`failed`,qe(a);let t=a.controller.signal.reason;p(typeof t==`string`?t:e instanceof Error?e.message:String(e)),Xe(),j===void 0&&h(!1)}).finally(()=>{clearTimeout(o),O===s&&(O=void 0),!H&&F&&(F=!1,tt())});return O=s,s}function nt(){return tt(!0)}function rt(e){if(e.event?.type===`dashboard_resync`){tt(!0);return}if(A){if(A.state===`failed`)throw Xe(),Error(`Dashboard recovery is failed; refusing to acknowledge live envelope before resync succeeds`);let t=Ke(e);if(A.queued.length>=xm||A.queuedBytes+t>Sm){qe(A),A.state=`failed`;let e=`Dashboard recovery queue overflowed; waiting for a newer authoritative snapshot`;throw p(e),A.controller.abort(e),Xe(),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>=Cm||t.queuedBytes+n>wm)throw ve(e.key,t),Error(`Dashboard hydration queue overflowed for ${e.key}; refusing an incomplete snapshot replay`);t.queued.push(e),t.queuedBytes+=n}Qe(e)}let it;async function at(){H=!1;try{J(await $.auth())}catch(e){_({mode:`remote`,needsPairing:e?.body?.needsPairing??!1,identity:e?.body?.identity,error:e?.message}),U({screen:`pairing`});return}await Ie().catch(()=>{}),it=St({onEnvelope:rt,onAuthStatus:J,onStatusChange:e=>{N=!1,M=e.state===`connected`?e:void 0,y(e)},onRecovery:()=>{tt()}})}function ot(){H=!0,it?.(),we(),Je(),M=void 0,N=!1,F=!1;let e=A;A=void 0,e&&qe(e),e?.controller.abort(`Dashboard stopped`);for(let[e,t]of T)ve(e,t)}function st(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)){xe(n,e=>yn(e,t));return}}async function ct(e,t){ve(e);let n=De(e),r={guard:he(e),queued:[],queuedBytes:0};T.set(e,r);let i=()=>ve(e,r);t?.addEventListener(`abort`,i,{once:!0}),t?.aborted&&i();try{let i=await $.hydrate(e,t);if(t?.aborted||T.get(e)!==r||!ge(e,r.guard))return;xe(e,e=>{let t=i.messages;e.closed=void 0,e.entries=$t(t),e.backgroundAgents=Object.fromEntries(i.backgroundAgents.map(e=>[e.agentId,e])),sn(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=>Wt(e)).filter(e=>e!==void 0),Nm(e,t,i.state),cn(e)}),pe(e),ze(e,i.state,n,i.barrierSeq);for(let e of[...r.queued].sort((e,t)=>e.seq-t.seq))e.seq>i.barrierSeq&&Qe(e)}finally{t?.removeEventListener(`abort`,i),ve(e,r)}}async function lt(e,t,n){let r=he(e),{agent:i,messages:a}=await $.subagentMessages(e,t,n);n?.aborted||!_e(e,r)||xe(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=$t(a)),n.streaming=i.status===`running`})}return{sessions:e,revisions:n,route:i,navigate:U,fleet:o,fleetError:c,fleetStatsError:u,refreshFleet:Ie,refreshDiskSessions:Le,refreshFleetStats:Ge,refreshRuntimeStats:Ue,removeRuntime:Me,stopRuntime:Ne,resumeClosedSession:Fe,dismissClosedBanner:Z,dismissStatusBanner:Pe,upsertRuntime:Re,setRuntimeModel:Be,setRuntimeThinkingLevel:Ve,resyncing:m,resyncError:f,retryResync:nt,auth:g,connected:b,connection:v,notices:x,start:at,stop:ot,dismissToast:st,resolveUiRequest(e,t){xe(e,e=>bn(e,t))},hydrateSession:ct,hydrateSubagent:lt}}var Fm=5e3;function Im(e){let t;return Promise.race([e,new Promise((e,n)=>{t=setTimeout(()=>n(Error(`service worker not ready`)),Fm)})]).finally(()=>{t&&clearTimeout(t)})}function Lm(){let e=Pm();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:ln(t.uiRequests)??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),Im(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=()=>{let t=e.route(),n=t.screen===`session`||t.screen===`subagent`?t.key:void 0;return[...Object.values(e.sessions).flatMap(e=>e.key===n?[]:e.toasts.map(t=>({...t,sessionKey:e.key}))),...e.notices()].slice(-5)};return[W(Te,{get fallback(){return W(ir,{store:e})},get children(){return[W(q,{get when(){return e.route().screen===`session`},get children(){return W(Fd,{store:e,get sessionKey(){return e.route().key}})}}),W(q,{get when(){return e.route().screen===`subagent`},get children(){return W(Yp,{store:e,get sessionKey(){return e.route().key},get agentId(){return e.route().agentId}})}}),W(q,{get when(){return e.route().screen===`files`},get children(){return W(Ht,{store:e,get initialPath(){return e.route().path}})}}),W(q,{get when(){return e.route().screen===`memories`},get children(){return W(il,{store:e})}}),W(q,{get when(){return e.route().screen===`settings`},get children(){return W(Lp,{store:e,get target(){return e.route().target},get routeScopedModelsCwd(){return e.route().cwd}})}}),W(q,{get when(){return e.route().screen===`pairing`},get children(){return W(ul,{store:e})}})]}}),W(ct,{get toasts(){return i()},onDismiss:t=>e.dismissToast(t)})]}Mf();var Rm=document.getElementById(`root`);if(!Rm)throw Error(`dashboard: #root element missing from index.html`);Oe(()=>W(Lm,{}),Rm);
|
|
79
|
+
<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>`),Lf=[`running`,`attention`,`idle`,`error`];function Rf(){let e=()=>{let e=xf();return e===`system`?void 0:e};return(()=>{var t=Pf(),n=t.firstChild,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling;return r.addEventListener(`change`,e=>Ef(e.currentTarget.value)),Z(r,W(G,{each:of,children:e=>(()=>{var t=Ff();return t.value=e,Z(t,e),t})()})),Z(i,W(G,{each:rf,children:t=>{let n=()=>bf()===t.id;return(()=>{var r=If(),i=r.firstChild,a=i.firstChild,o=a.firstChild,s=a.nextSibling,c=i.nextSibling.firstChild,l=c.nextSibling;return r.$$click=()=>Tf(t.id),Z(o,()=>t.label),Z(s,W(G,{each:Lf,children:e=>W(nt,{status:e,label:``})})),Z(c,()=>t.label),Z(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&&X(r,`data-theme-card`,i.t=o),s!==i.a&&X(r,`data-theme`,i.a=s),c!==i.o&&X(r,`data-color-mode`,i.o=c),l!==i.i&&X(r,`aria-pressed`,i.i=l),u!==i.n&&X(r,`aria-current`,i.n=u),d!==i.s&&X(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=xf()),t})()}ke([`click`]);var zf=Y(`<select><option value=on>on</option><option value=off>off`),Bf=Y(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),Vf=Y(`<div class=model-list style=max-height:320px>`),Hf=Y(`<p class="muted small">No matching models.`),Uf=Y(`<section class=model-provider-group><div class=model-provider-heading>`),Wf=Y(`<span class=model-name>`),Gf=Y(`<span class=model-reasoning>think`),Kf=Y(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),qf=Y(`<div class=settings-error>`),Jf=Y(`<div class=settings-warning>`),Yf=Y(`<p class="muted small"style=margin-bottom:16px>✓ saved`),Xf=Y(`<div class=settings-success>new pairing lifetime saved`),Zf=Y(`<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>`),Qf=Y(`<p class="muted small"style=padding-top:8px>No remote devices paired. Launch with <code>--remote --allow <identity></code> to enable Tailscale access.`),$f=Y(`<p>This exits the dashboard server process and terminates <strong>all running sessions</strong>.`),ep=Y(`<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><div class=setting-row><label class=setting-label for=pairing-ttl-days><span class=name>new pairing lifetime</span><span class=hint>applies only to devices paired after saving; existing expiry dates do not change</span></label><span class=setting-control><input id=pairing-ttl-days type=number min=1 max=3650 step=1><span>days</span><button type=button class="btn btn-small"></button></span></div></section><footer>dreb<!> · dashboard`),tp=Y(`<div>`),np=Y(`<p class=muted>`),rp=Y(`<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>`),ip=Y(`<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> `),ap=Y(`<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`),op=Y(`<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.`),sp=Y(`<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>`),cp=Y(`<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>`),lp=Y(`<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=setting-row><label class=setting-label for=max-concurrent-subagents><span class=name>max concurrent subagents</span><span class=hint>new parent sessions only; 0 removes the subagent tool (default 4)</span></label><span class=setting-control><input id=max-concurrent-subagents type=number min=0 step=1></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>`),up=Y(`<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>`),dp=Y(`<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.`),fp=Y(`<option>`),pp=Y(`<p class="muted small">No agent definitions found.`),mp=Y(`<div class=agent-model-editor><button type=button class="btn btn-small">add model…`),hp=Y(`<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">`),gp=Y(`<span class="muted small">default`),_p=Y(`<span class=agent-model-chip>. `),vp=Y(`<p class="muted small">Using the default model.`),yp=Y(`<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">×`),bp=Y(`<p class="muted small trusted-context-empty">No trusted folders. Use the Files view to trust a project folder and its descendants.`),xp=Y(`<div class=trusted-context-folder-row><code></code><span class=meta>and all descendants</span><button type=button class="btn btn-small btn-danger">`),Sp=Y(`<label class=checkbox-control><input type=checkbox><span>`),Cp=Y(`<div class=device-row><span></span><span class=meta> · paired <!> · expires </span><span class=actions><button type=button class="btn btn-small btn-danger">unpair`),wp=Y(`<button type=button class="btn btn-small">cancel`),Tp=Y(`<button type=button class="btn btn-small btn-danger">restart`),Ep=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],Dp=[`all`,`one-at-a-time`],Op=[`sse`,`websocket`,`auto`];function kp(e){return`${e.provider}/${e.id}`}function Ap(e){let t=kp(e);return e.name?`${t} — ${e.name}`:t}function jp(e){return e.defaultProvider&&e.defaultModel?`${e.defaultProvider}/${e.defaultModel}`:`choose model…`}function Mp(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function Np(){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 Pp(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 Fp(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 Ip(e){return(()=>{var t=zf();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 Lp(e){let[t,n]=k(``),r=()=>new Set(e.selected??[]),i=N(()=>{let n=t().toLowerCase();return Pp(e.models.filter(e=>!n||Mp(e,n)).slice(0,100))}),a=e=>r().has(kp(e));return W(ot,{get title(){return e.title},get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[(()=>{var e=Bf(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e})(),(()=>{var t=Vf();return Z(t,W(K,{get when(){return i().length>0},get fallback(){return Hf()},get children(){return W(G,{get each(){return i()},children:t=>(()=>{var n=Uf(),r=n.firstChild;return Z(r,()=>t.provider),Z(n,W(G,{get each(){return t.models},children:t=>(()=>{var n=Kf(),r=n.firstChild,i=r.nextSibling,o=i.nextSibling;return n.$$click=()=>e.onPick(t),Z(r,()=>a(t)?`✓`:``),Z(i,()=>t.id),Z(n,W(K,{get when(){return t.name},get children(){var e=Wf();return Z(e,()=>t.name),e}}),o),Z(o,()=>t.provider),Z(n,W(K,{get when(){return t.reasoning},get children(){return Gf()}}),null),j(e=>{var r=!!a(t),i=Ap(t);return r!==e.e&&n.classList.toggle(`current`,e.e=r),i!==e.t&&X(n,`title`,e.t=i),e},{e:void 0,t:void 0}),n})()}),null),n})()})}})),t})()]}})}function Rp(e){let[t,n]=k(),[r,i]=k([]),[a,o]=k(!1),[s,c]=k(),[l,u]=k(),[d,f]=k(),[p,m]=k(e.target===`scoped-models`?e.routeScopedModelsCwd:void 0);M(()=>{m(e.target===`scoped-models`?e.routeScopedModelsCwd:void 0)});let[h,g]=k(``),[_,v]=k(!1),[y,b]=k(Np()),[x,{mutate:S,refetch:C}]=F(async()=>{n(void 0);try{return await $.settings()}catch(e){n(e instanceof Error?e.message:String(e));return}}),[w]=F(x,async()=>{try{let{models:e}=await $.settingsModels();return e}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),T=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))}),[E]=F(()=>({settings:x(),cwd:d()}),async({cwd:e})=>{if(!x())return[];try{let{agentTypes:t}=await $.agentTypes(e);return t}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),[D,{refetch:O}]=F(async()=>{let{devices:e}=await $.devices();return e}),[A,P]=k(),[I,L]=k(!1),[ee,te]=k(!1),[ne,re]=k(``),[ie,{mutate:ae}]=F(async()=>{try{return await $.pairingSettings()}catch(e){P(e instanceof Error?e.message:String(e));return}});M(()=>{let e=ie();e&&re(String(e.pairingTtlDays))});async function B(){P(void 0),L(!1);let e=Number(ne());if(!Number.isSafeInteger(e)||e<1||e>3650){P(`pairing lifetime must be a whole number from 1 through 3650 days`);return}te(!0);try{let t=await $.savePairingSettings(e);ae(t),L(!0)}catch(e){P(e instanceof Error?e.message:String(e))}finally{te(!1)}}let[oe,V]=k(),se;function H(){se&&clearTimeout(se),se=void 0}function ce(e){H();let t=Math.max(250,e??3e4)+100;se=setTimeout(()=>void le(),t)}async function le(){try{let e=await $.pairingCode();if(!e.enabled||!e.code){V(void 0),H();return}V(e),ce(e.expiresInMs)}catch(e){console.warn(`pairing code unavailable`,e),V(void 0),H()}}let[U]=F(async()=>{try{let{version:e}=await $.version();return e}catch{return}}),[ue]=F(async()=>{try{return await $.serverInfo()}catch{return}}),[de,fe]=k(!1),[pe,me]=k(!1),[he,ge]=k();async function _e(){ge(void 0),me(!0);try{await $.restartServer()}catch(e){ge(e instanceof Error?e.message:String(e)),me(!1)}}async function ve(e){n(void 0),i([]),o(!1);try{let t=await $.saveSettings(e);S(t),i(t.warnings??[]),o(!0),setTimeout(()=>o(!1),2e3)}catch(e){n(e instanceof Error?e.message:String(e)),await C()}}let ye=Promise.resolve(),be;function xe(){return be??x()?.subagentArbiter??{}}function Se(e){let t={...xe(),...e};be=t;let r=x();r&&S({...r,subagentArbiter:t}),ye=ye.then(async()=>{n(void 0),i([]),o(!1);try{let e=await $.saveSettings({subagentArbiter:t});i(e.warnings??[]),o(!0),setTimeout(()=>o(!1),2e3),be===t?(be=e.subagentArbiter??void 0,S(e)):S({...e,subagentArbiter:be})}catch(e){let r=e instanceof Error?e.message:String(e),i=await C();n(r),be===t?be=i?.subagentArbiter??void 0:i&&S({...i,subagentArbiter:be})}})}async function Ce(e,t){await ve({agentModels:{[e]:t}})}async function we(e){n(void 0),v(!0);try{let t=await $.trustContextFolder(e);S(t.settings),g(``)}catch(e){n(e instanceof Error?e.message:String(e))}finally{v(!1)}}async function Te(e){n(void 0),v(!0);try{let t=await $.removeTrustedContextFolder(e);S(t.settings)}catch(e){n(e instanceof Error?e.message:String(e))}finally{v(!1)}}function q(e){return x()?.agentModels?.[e]??[]}function Ee(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&&!Ep.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 De(){typeof Notification>`u`||b(await Notification.requestPermission())}R(()=>void le()),z(H);let Oe=()=>e.store.auth();return(()=>{var i=ep(),o=i.firstChild,v=o.firstChild.nextSibling.nextSibling,b=v.firstChild.nextSibling;b.firstChild;var S=b.nextSibling,C=S.firstChild.nextSibling.firstChild,k=S.nextSibling,M=k.firstChild.nextSibling.firstChild.firstChild,N=k.nextSibling,P=N.firstChild.nextSibling,F=N.nextSibling,R=F.firstChild,z=R.firstChild.nextSibling,te=R.nextSibling.firstChild.firstChild,ae=te.nextSibling,V=F.nextSibling.firstChild,se=V.firstChild.nextSibling,H=V.nextSibling.firstChild,ce=v.nextSibling,le=ce.firstChild.nextSibling,me=le.firstChild.firstChild.nextSibling,ge=le.nextSibling.firstChild.nextSibling.firstChild,ye=ge.nextSibling.nextSibling,be=ce.nextSibling,Y=be.firstChild.nextSibling;return Y.nextSibling,Z(i,W(it,{get store(){return e.store},active:`settings`}),o),Z(o,W(K,{get when(){return t()},get children(){var e=qf();return Z(e,t),e}}),v),Z(o,W(K,{get when(){return r().length>0},get children(){var e=Jf();return Z(e,W(G,{get each(){return r()},children:e=>(()=>{var t=tp();return Z(t,e),t})()})),e}}),v),Z(o,W(K,{get when(){return a()},get children(){return Yf()}}),v),Z(o,W(K,{get when(){return x()},get fallback(){return(()=>{var e=np();return Z(e,()=>t()?`Settings could not be loaded — see the error above.`:`Loading settings…`),e})()},children:t=>[(()=>{var e=rp(),n=e.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`}),Z(r,()=>jp(t())),Z(o,()=>Ep.join(` · `)),s.addEventListener(`change`,e=>ve({defaultThinkingLevel:e.currentTarget.value})),Z(s,W(G,{each:Ep,children:e=>(()=>{var t=fp();return t.value=e,Z(t,e),t})()})),l.addEventListener(`change`,e=>ve({transport:e.currentTarget.value})),Z(l,W(G,{get each(){return[...Op]},children:e=>(()=>{var t=fp();return t.value=e,Z(t,e),t})()})),j(()=>s.value=t().defaultThinkingLevel??`off`),j(()=>l.value=t().transport??`sse`),e})(),W(nf,{get cwd(){return p()},get projectRoots(){return T()},get focused(){return e.target===`scoped-models`},onCwdChange:t=>{m(t),e.store.navigate({screen:`settings`,target:`scoped-models`,...t?{cwd:t}:{}})}}),(()=>{var e=ip(),r=e.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,Z(i,W(Ip,{get value(){return t().subagentArbiter?.enabled===!0},onChange:e=>{let t=xe();return e&&(typeof t.model!=`string`||!t.model.trim())?(n(`Choose an exact Dispatch Arbiter model before enabling it.`),c({kind:`arbiter`}),!1):(Se({enabled:e}),!0)}})),o.$$click=()=>c({kind:`arbiter`}),Z(o,(()=>{var e=J(()=>typeof t().subagentArbiter?.model==`string`);return()=>e()?t().subagentArbiter?.model:`choose model…`})()),l.addEventListener(`change`,e=>Se({thinking:e.currentTarget.value})),Z(l,W(G,{each:Ep,children:e=>(()=>{var t=fp();return t.value=e,Z(t,e),t})()})),d.addEventListener(`change`,e=>{Se({guidePath:e.currentTarget.value.trim()||void 0})}),Z(f,()=>Ee(t()).message,null),j(()=>Ae(f,Ee(t()).ready?`settings-warning`:`muted small`)),j(()=>l.value=typeof t().subagentArbiter?.thinking==`string`&&Ep.some(e=>e===t().subagentArbiter?.thinking)?t().subagentArbiter?.thinking:`off`),j(()=>d.value=typeof t().subagentArbiter?.guidePath==`string`?t().subagentArbiter?.guidePath:``),e})(),(()=>{var e=op();return e.firstChild.nextSibling,Z(e,W(K,{get when(){return T().length>0},get children(){var e=ap(),t=e.firstChild.nextSibling.firstChild;return t.firstChild,t.addEventListener(`change`,e=>f(e.currentTarget.value||void 0)),Z(t,W(G,{get each(){return T()},children:e=>(()=>{var t=fp();return t.value=e,Z(t,e),t})()}),null),j(()=>X(t,`title`,d()??`global/home only`)),j(()=>t.value=d()??``),e}}),null),Z(e,W(K,{get when(){return(E()??[]).length>0},get fallback(){return pp()},get children(){return W(G,{get each(){return E()??[]},children:e=>{let n=()=>t().agentModels?.[e.name]??[];return(()=>{var t=hp(),r=t.firstChild,i=r.firstChild,a=i.nextSibling,o=r.nextSibling,s=o.nextSibling;return Z(i,()=>e.name),Z(a,()=>e.description),Z(o,W(K,{get when(){return n().length>0},get fallback(){return gp()},get children(){return W(G,{get each(){return n()},children:(e,t)=>(()=>{var n=_p(),r=n.firstChild;return Z(n,()=>t()+1,r),Z(n,e,null),n})()})}})),s.$$click=()=>u(l()===e.name?void 0:e.name),Z(s,()=>l()===e.name?`done`:`edit`),Z(t,W(K,{get when(){return l()===e.name},get children(){var t=mp(),r=t.firstChild;return Z(t,W(K,{get when(){return n().length>0},get fallback(){return vp()},get children(){return W(G,{get each(){return n()},children:(t,r)=>(()=>{var i=yp(),a=i.firstChild,o=a.nextSibling.firstChild,s=o.nextSibling,c=s.nextSibling;return Z(a,t),o.$$click=()=>void Ce(e.name,Fp(n(),r(),-1)),s.$$click=()=>void Ce(e.name,Fp(n(),r(),1)),c.$$click=()=>void Ce(e.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:e.name}),t}}),null),t})()}})}}),null),e})(),(()=>{var e=sp(),n=e.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return Z(r,W(Ip,{get value(){return t().imageAutoResize!==!1},onChange:e=>ve({imageAutoResize:e})})),Z(i,W(Ip,{get value(){return t().blockImages===!0},onChange:e=>ve({blockImages:e})})),e})(),(()=>{var e=cp(),n=e.firstChild.nextSibling,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling.firstChild.nextSibling.firstChild;return r.addEventListener(`change`,e=>ve({steeringMode:e.currentTarget.value})),Z(r,W(G,{get each(){return[...Dp]},children:e=>(()=>{var t=fp();return t.value=e,Z(t,e),t})()})),i.addEventListener(`change`,e=>ve({followUpMode:e.currentTarget.value})),Z(i,W(G,{get each(){return[...Dp]},children:e=>(()=>{var t=fp();return t.value=e,Z(t,e),t})()})),j(()=>r.value=t().steeringMode??`all`),j(()=>i.value=t().followUpMode??`all`),e})(),(()=>{var e=lp(),r=e.firstChild.nextSibling,i=r.firstChild.nextSibling,a=r.nextSibling,o=a.firstChild.nextSibling.firstChild,s=a.nextSibling,c=s.firstChild.nextSibling.nextSibling.nextSibling,l=c.firstChild.nextSibling,u=l.nextSibling,d=s.nextSibling,f=d.firstChild.nextSibling,p=d.nextSibling.nextSibling.firstChild.nextSibling;return Z(i,W(Ip,{get value(){return t().enableSkillCommands!==!1},onChange:e=>ve({enableSkillCommands:e})})),o.addEventListener(`change`,e=>{let r=e.currentTarget.value.trim(),i=r.length>0?Number(r):NaN;if(!Number.isSafeInteger(i)||i<0){n(`Max concurrent subagents must be a non-negative whole number`),e.currentTarget.value=String(t().maxConcurrentSubagents??4);return}ve({maxConcurrentSubagents:i})}),Z(s,W(K,{get when(){return(t().trustedContextFolders??[]).length>0},get fallback(){return bp()},get children(){return W(G,{get each(){return t().trustedContextFolders??[]},children:e=>(()=>{var t=xp(),n=t.firstChild,r=n.nextSibling.nextSibling;return Z(n,e),r.$$click=()=>void Te(e),Z(r,()=>_()?`revoking…`:`revoke trust`),j(()=>r.disabled=_()),t})()})}}),c),c.addEventListener(`submit`,e=>{e.preventDefault();let t=h().trim();t&&we(t)}),l.$$input=e=>g(e.currentTarget.value),Z(u,()=>_()?`trusting…`:`trust folder`),Z(f,W(Ip,{get value(){return t().autoLoadNestedContext===!0},onChange:e=>ve({autoLoadNestedContext:e})})),Z(p,W(Ip,{get value(){return t().hideThinkingBlock===!0},onChange:e=>ve({hideThinkingBlock:e})})),j(()=>u.disabled=_()||!h().trim()),j(()=>o.value=t().maxConcurrentSubagents??4),j(()=>l.value=h()),e})(),(()=>{var e=up(),n=e.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return Z(r,W(Ip,{get value(){return t().compactionEnabled!==!1},onChange:e=>ve({compactionEnabled:e})})),Z(i,W(Ip,{get value(){return t().retryEnabled!==!1},onChange:e=>ve({retryEnabled:e})})),e})(),dp()]}),v),Z(b,W(Rf,{}),null),C.addEventListener(`change`,e=>us(e.currentTarget.value)),M.addEventListener(`change`,e=>ls(e.currentTarget.checked)),Z(P,W(G,{each:Go,children:e=>(()=>{var t=Sp(),n=t.firstChild,r=n.nextSibling;return n.addEventListener(`change`,t=>ds(e,t.currentTarget.checked)),X(n,`id`,`pref-tool-expand-${e}`),Z(r,e),j(()=>n.checked=fs(e)),t})()})),Z(z,(()=>{var e=J(()=>y()===`denied`);return()=>e()?`blocked by browser settings — re-enable notifications in site permissions`:J(()=>y()===`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`:J(()=>y()===`ios-install`)()?`iOS notifications need the installed PWA — tap Share → Add to Home Screen, then open dreb from the home screen icon`:y()===`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)`})()),te.addEventListener(`change`,e=>{e.currentTarget.checked&&De()}),Z(ae,()=>y()===`granted`?`enabled`:`enable notifications`),Z(se,()=>ue()?.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`),H.$$click=()=>fe(!0),Z(H,()=>pe()?`restarting…`:`restart`),Z(v,W(K,{get when(){return he()},get children(){var e=qf();return Z(e,he),e}}),null),Z(me,()=>Oe()?.mode===`local`?`local`:`host`),ge.$$input=e=>{re(e.currentTarget.value),L(!1)},ye.$$click=()=>void B(),Z(ye,()=>ee()?`saving…`:`save`),Z(ce,W(K,{get when(){return I()},get children(){return Xf()}}),null),Z(ce,W(K,{get when(){return A()},get children(){var e=qf();return Z(e,A),e}}),null),Z(ce,W(K,{get when(){return J(()=>!!oe()?.enabled)()&&oe()?.code},get children(){var e=Zf(),t=e.firstChild.nextSibling.firstChild;return Z(t,()=>oe().code),e}}),null),Z(ce,W(G,{get each(){return D()??[]},children:e=>(()=>{var t=Cp(),n=t.firstChild,r=n.nextSibling,i=r.firstChild,a=i.nextSibling;a.nextSibling;var o=r.nextSibling.firstChild;return Z(n,()=>e.device??e.id),Z(r,()=>e.identity,i),Z(r,()=>lt(e.createdAt),a),Z(r,()=>e.expiresAt.slice(0,10),null),o.$$click=async()=>{await $.unpair(e.id),await O()},t})()}),null),Z(ce,W(K,{get when(){return(D()??[]).length===0},get children(){return Qf()}}),null),Z(be,(()=>{var e=J(()=>!!ue()?.version);return()=>e()?` v${ue().version}`:J(()=>!!U())()?` v${U()}`:``})(),Y),Z(be,W(K,{get when(){return ue()?.startedAt},get children(){return[` · server build, up `,J(()=>lt(ue().startedAt))]}}),null),Z(i,W(K,{get when(){return de()},get children(){return W(ot,{title:`restart dashboard service?`,onDismiss:()=>fe(!1),get actions(){return[(()=>{var e=wp();return e.$$click=()=>fe(!1),e})(),(()=>{var e=Tp();return e.$$click=()=>{fe(!1),_e()},e})()]},get children(){var e=$f();return e.firstChild.nextSibling.nextSibling,Z(e,()=>ue()?.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),Z(i,W(K,{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"?x()?.defaultProvider&&x()?.defaultModel?[`${x().defaultProvider}/${x().defaultModel}`]:[]:t.kind===`arbiter`?x()?.subagentArbiter?.model?[x().subagentArbiter.model]:[]:q(t.agentName)};return W(Lp,{get title(){return t()},get models(){return w()??[]},get selected(){return n()},onClose:()=>c(void 0),onPick:t=>{let n=e();if(c(void 0),n.kind==="default"){ve({defaultProvider:t.provider,defaultModel:t.id});return}if(n.kind===`arbiter`){Se({model:kp(t)});return}let r=kp(t),i=q(n.agentName);i.includes(r)||Ce(n.agentName,[...i,r])}})}}),null),j(e=>{var t=y()===`denied`||y()===`unsupported`||y()===`ios-install`||y()===`insecure`,n=pe(),r=ee()||ie.loading;return t!==e.e&&(te.disabled=e.e=t),n!==e.t&&(H.disabled=e.t=n),r!==e.a&&(ye.disabled=e.a=r),e},{e:void 0,t:void 0,a:void 0}),j(()=>C.value=cs()),j(()=>M.checked=ss()),j(()=>te.checked=y()===`granted`),j(()=>ge.value=ne()),i})()}ke([`input`,`click`]);var zp=Y(`<div class="status-line arbitration-history">`),Bp=Y(`<p class=pair-error>`),Vp=Y(`<div class=status-line><span class=working>● working`),Hp=Y(`<output class=pending-chips aria-label="pending subagent steering messages">`),Up=Y(`<div class=composer><textarea placeholder="Steer this subagent…"></textarea><div class=composer-row><span class=muted>steering delivery: </span><button type=button class="btn btn-primary btn-small send">`),Wp=Y(`<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>`),Gp=Y(`<span>arbiter: `),Kp=Y(`<p class=muted>`),qp=Y(`<div class=readonly-note>`),Jp=Y(`<span class=pending-chip>steer: `);function Yp(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 Xp(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]=k(``),[u,d]=k(!1),[f,p]=k(),[m,h]=k(),[g,_]=k({steering:[],followUp:[]}),v=()=>t()?.closed,y=()=>!v()&&n()?.status===`running`,b=()=>typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 700px)`).matches,x,S,C,w=zo({scroller:()=>x});R(()=>{let t=new AbortController;v()||e.store.hydrateSubagent(e.sessionKey,e.agentId,t.signal).catch(e=>{t.signal.aborted&&hl(e)||v()||s(e instanceof Error?e.message:String(e))}),z(()=>t.abort())}),M(()=>{e.store.revisions[e.sessionKey],w.notifyContentChanged()}),R(()=>{w.observeContent(C),w.observeViewport(x),x&&z(Vo(w,x,{keyboard:`window`}))}),z(()=>w.dispose());async function T(){if(y())try{let t=await $.subagentPending(e.sessionKey,e.agentId);h(t.steeringMode),_(t.pending),p(void 0)}catch(e){v()||p(e instanceof Error?e.message:String(e))}}R(()=>{T();let e=window.setInterval(()=>{y()&&T()},1e3);z(()=>window.clearInterval(e))}),M(()=>{c(),S&&queueMicrotask(()=>S&&Ed(S))});async function E(){let t=c();if(!(!t.trim()||u()||!y())){d(!0),p(void 0);try{await $.steerSubagent(e.sessionKey,e.agentId,t),l(``),await T()}catch(e){v()||p(e instanceof Error?e.message:String(e))}finally{d(!1)}}}let D=N(()=>{let n=[],r=v();if(r&&!r.bannerDismissed){let t=[];r.cwd&&r.sessionFile&&t.push({label:r.resuming?`resuming…`:`Resume session`,run:()=>e.store.resumeClosedSession(e.sessionKey),disabled:r.resuming}),t.push({label:`Return to fleet`,run:()=>e.store.navigate({screen:`fleet`}),disabled:r.resuming}),n.push({key:`closed`,text:`session ${e.sessionKey} was closed${r.resumeError?`\nResume failed: ${r.resumeError}`:``}`,tone:r.resumeError?`error`:`warning`,onDismiss:()=>e.store.dismissClosedBanner(e.sessionKey),actions:t})}for(let r of t()?.statusEntries??[])r.dismissed||n.push({key:`status:${r.id}`,text:r.text,tone:r.tone,onDismiss:()=>e.store.dismissStatusBanner(e.sessionKey,r.id)});for(let r of t()?.toasts??[])n.push({key:`toast:${r.id}`,text:r.text,tone:r.tone,onDismiss:()=>e.store.dismissToast(r.id)});return n});return(()=>{var t=Wp(),i=t.firstChild,s=i.firstChild.firstChild;s.firstChild;var d=s.nextSibling;d.firstChild;var p=d.nextSibling,h=p.nextSibling,_=i.nextSibling,w=_.firstChild,T=_.nextSibling.firstChild;Z(s,a,null),Z(d,()=>n()?.agentType??`unknown`,null),Z(p,()=>n()?.taskSummary??e.agentId),Z(h,W(K,{get when(){return y()},get fallback(){return W(nt,{get status(){return!v()&&n()?.status===`failed`?`error`:`idle`},get label(){return J(()=>!!v())()?`closed`:n()?.status}})},get children(){return W(nt,{status:`running`})}})),Z(t,W(st,{get banners(){return D()}}),_);var O=x;typeof O==`function`?Pe(O,_):x=_;var k=C;return typeof k==`function`?Pe(k,w):C=w,Z(w,W(K,{get when(){return(n()?.arbitrations?.length??0)>0},get children(){var e=zp();return Z(e,W(G,{get each(){return n()?.arbitrations??[]},children:e=>(()=>{var t=Gp();return t.firstChild,Z(t,()=>Yp(e),null),j(()=>Ae(t,e.status===`failure`?`error-reason`:`muted`)),t})()})),e}}),null),Z(w,W(K,{get when(){return o()},get children(){var e=Bp();return Z(e,o),e}}),null),Z(w,W(K,{get when(){return J(()=>!!r())()&&r().entries.length>0},get fallback(){return(()=>{var e=Kp();return Z(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 W(Oc,{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),Z(T,W(K,{get when(){return r()?.streaming},get children(){return Vp()}}),null),Z(T,W(K,{get when(){return y()},get fallback(){return(()=>{var e=qp();return Z(e,()=>v()?`This session is closed; the subagent transcript is read-only.`:`This subagent is no longer running; its transcript is read-only.`),e})()},get children(){return[W(K,{get when(){return f()},get children(){var e=Bp();return Z(e,f),e}}),W(K,{get when(){return g().steering.length>0},get children(){var e=Hp();return Z(e,W(G,{get each(){return g().steering},children:e=>(()=>{var t=Jp();return t.firstChild,Z(t,e,null),t})()})),e}}),(()=>{var e=Up(),t=e.firstChild,n=t.nextSibling.firstChild;n.firstChild;var r=n.nextSibling;t.$$keydown=e=>{e.key===`Enter`&&!e.shiftKey&&!b()&&(e.preventDefault(),E())},t.$$input=e=>{l(e.currentTarget.value),Ed(e.currentTarget)};var i=S;return typeof i==`function`?Pe(i,t):S=t,Z(n,()=>m()??`loading…`,null),r.$$click=()=>void E(),Z(r,()=>u()?`sending…`:`steer ↵`),j(e=>{var n=u(),i=u()||c().trim().length===0;return n!==e.e&&(t.disabled=e.e=n),i!==e.t&&(r.disabled=e.t=i),e},{e:void 0,t:void 0}),j(()=>t.value=c()),e})()]}}),null),j(()=>X(s,`href`,`#/session/${e.sessionKey}`)),t})()}ke([`input`,`keydown`,`click`]);var Zp=Symbol(`store-raw`),Qp=Symbol(`store-node`),$p=Symbol(`store-has`),em=Symbol(`store-self`);function tm(e){let t=e[p];if(!t&&(Object.defineProperty(e,p,{value:t=new Proxy(e,lm)}),!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 nm(e){let t;return typeof e==`object`&&!!e&&(e[p]||!(t=Object.getPrototypeOf(e))||t===Object.prototype||Array.isArray(e))}function rm(e,t=new Set){let n,r,i,a;if(n=e!=null&&e[Zp])return n;if(!nm(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=rm(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=rm(i,t))!==i&&(e[a]=r))}return e}function im(e,t){let n=e[t];return n||Object.defineProperty(e,t,{value:n=Object.create(null)}),n}function am(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 om(e,t){let n=Reflect.getOwnPropertyDescriptor(e,t);return!n||n.get||!n.configurable||t===p||t===Qp?n:(delete n.value,delete n.writable,n.get=()=>e[p][t],n)}function sm(e){ee()&&am(im(e,Qp),em)()}function cm(e){return sm(e),Reflect.ownKeys(e)}var lm={get(e,t,n){if(t===Zp)return e;if(t===p)return n;if(t===m)return sm(e),n;let r=im(e,Qp),i=r[t],a=i?i():e[t];if(t===Qp||t===$p||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=am(r,t,a)())}return nm(a)?tm(a):a},has(e,t){return t===Zp||t===p||t===m||t===Qp||t===$p||t===`__proto__`?!0:(ee()&&am(im(e,$p),t)(),t in e)},set(){return!0},deleteProperty(){return!0},ownKeys:cm,getOwnPropertyDescriptor:om};function um(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[$p]&&e[$p][t]&&i!==void 0&&e[$p][t].$()):(e[t]=n,e[$p]&&e[$p][t]&&i===void 0&&e[$p][t].$());let o=im(e,Qp),s;if((s=am(o,t,i))&&s.$(()=>n),Array.isArray(e)&&e.length!==a){for(let t=e.length;t<a;t++)(s=o[t])&&s.$();(s=am(o,`length`,a))&&s.$(e.length)}(s=o[em])&&s.$()}function dm(e,t){let n=Object.keys(t);for(let r=0;r<n.length;r+=1){let i=n[r];fm(i)||um(e,i,t[i])}}function fm(e){return e===`__proto__`||e===`constructor`||e===`prototype`}function pm(e,t){if(typeof t==`function`&&(t=t(e)),t=rm(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&&um(e,n,r)}um(e,`length`,r)}else dm(e,t)}function mm(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&&fm(r)))return;if(Array.isArray(r)){for(let i=0;i<r.length;i++)mm(e,[r[i]].concat(t),n);return}else if(o&&a===`function`){for(let i=0;i<e.length;i++)r(e[i],i)&&mm(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)mm(e,[r].concat(t),n);return}else if(t.length>1){mm(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=rm(a),r===void 0||nm(i)&&nm(a)&&!Array.isArray(a)?dm(i,a):um(e,r,a))}function hm(...[e,t]){let n=rm(e||{}),r=Array.isArray(n),i=tm(n);function a(...e){I(()=>{r&&e.length===1?pm(n,e[0]):mm(n,e)})}return[i,a]}var gm=new WeakMap,_m={get(e,t){if(t===Zp)return e;let n=e[t];if(t===p||t===m||t===Qp||t===$p||t===`__proto__`)return n;let r;return nm(n)?gm.get(n)||(gm.set(n,r=new Proxy(n,_m)),r):n},set(e,t,n){return um(e,t,rm(n)),!0},deleteProperty(e,t){return um(e,t,void 0,!0),!0}};function vm(e){return t=>{if(nm(t)){let n;(n=gm.get(t))||gm.set(t,n=new Proxy(t,_m)),e(n)}return t}}function ym(){let[e,t=``]=window.location.hash.replace(/^#\/?/,``).split(`?`,2),[n,...r]=e.split(`/`);if(n===`session`&&r[0])return r[1]===`subagent`&&r[2]?{screen:`subagent`,key:r[0],agentId:r[2]}:{screen:`session`,key:r[0]};if(n===`files`)return{screen:`files`,path:r.length?decodeURIComponent(r.join(`/`)):void 0};if(n===`memories`)return{screen:`memories`};if(n===`settings`){if(r[0]===`scoped-models`){let e=new URLSearchParams(t).get(`cwd`)||void 0;return{screen:`settings`,target:`scoped-models`,...e?{cwd:e}:{}}}return{screen:`settings`}}return n===`pairing`?{screen:`pairing`}:{screen:`fleet`}}function bm(e){return e.screen===`session`||e.screen===`subagent`?e.key:void 0}function xm(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`memories`:return`#/memories`;case`settings`:return e.target===`scoped-models`?`#/settings/scoped-models${e.cwd?`?cwd=${encodeURIComponent(e.cwd)}`:``}`:`#/settings`;case`pairing`:return`#/pairing`}}var Sm=2e3,Cm=3*1024*1024,wm=Sm,Tm=Cm,Em=3e4,Dm=1e4,Om=1e3,km=3e4,Am=5e3,jm=5*6e4,Mm=2147e6,Nm=new TextEncoder;function Pm(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(nn({key:`retry`,text:`retrying (attempt ${r})${n}`,tone:`warning`}))}pn(e,t,n.isStreaming||n.isRetrying||n.isCompacting)}function Fm(){let[e,t]=hm({}),[n,r]=hm({}),[i,a]=k(ym()),[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=new Map,ne=new Map,re=0,ie=0,ae,B,oe,V=0,se=new Set,H=!1;function ce(t,n){let r=bm(t);!r||r===bm(n)||!e[r]?.closed||Se(r)}function le(){let e=ym();ce(i(),e),a(e)}window.addEventListener(`hashchange`,le);function U(e){ce(i(),e),window.location.hash=xm(e)}function ue(e){return n[e]??0}function de(e){return C.get(e)??0}function fe(e){return w.get(e)??0}function pe(e){w.set(e,fe(e)+1)}function me(e){C.set(e,de(e)+1)}function he(e){return{revision:ue(e),generation:de(e),epoch:E}}function ge(e,t){return de(e)===t.generation&&E===t.epoch}function _e(e,t){return ue(e)===t.revision&&ge(e,t)}function ve(e,t){t&&T.get(e)!==t||(T.delete(e),t&&(t.queued=[],t.queuedBytes=0))}function ye(e){r(e,ue(e)+1)}function be(n){e[n]||t(n,Gt(n))}function xe(e,n){be(e),t(e,vm(n)),ye(e)}function Se(e){ve(e),me(e),w.delete(e),t(e,void 0),r(e,void 0),Sl(e)}function Ce(){return bm(ym())}function W(e,t=`info`){--D,S(n=>[...n,{id:D,text:e,tone:t}].slice(-20))}function we(){B!==void 0&&clearTimeout(B),B=void 0,oe=void 0,V=0}function G(e){if(H||oe!==e)return;let t=e-Date.now();if(t<=0){B=void 0,Ee(e);return}B=setTimeout(()=>G(e),Math.min(t,Mm))}function K(e){if(we(),!e)return;let t=Date.parse(e);if(!Number.isFinite(t)){W(`Dashboard returned an invalid pairing-expiry check time`,`error`);return}oe=t,G(t)}function Te(e){if(H||oe!==e)return;V+=1;let t=Math.min(10,V-1),n=Math.min(jm,Am*2**t);B=setTimeout(()=>{B=void 0,!H&&oe===e&&Ee(e)},n)}function q(e){e.pairingExpiryWarning&&W(`This device pairing expires on ${e.pairingExpiryWarning.expiresAt.slice(0,10)}. Re-pair before then to avoid losing remote access.`,`warning`)}function J(e){_(e),q(e),K(e.pairingExpiryCheckAt)}async function Ee(e){try{let t=await $.auth();if(H)return;if(oe!==e){q(t);return}if((t.pairingExpiryCheckAt?Date.parse(t.pairingExpiryCheckAt):void 0)===e&&e<=Date.now()){_(t),q(t),Te(e);return}J(t)}catch(t){if(H||oe!==e)return;if(t?.status===401||t?.status===403){we(),_({mode:`remote`,needsPairing:t?.body?.needsPairing??!1,identity:t?.body?.identity,error:t?.message}),U({screen:`pairing`});return}V===0&&W(`Could not check pairing expiry: ${t instanceof Error?t.message:String(t)}`,`error`),Te(e)}}function De(e){return R.get(e)??0}function Oe(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=De(e)+1;R.set(e,t),n===void 0?z.set(e,t):ee.set(e,Math.max(ee.get(e)??-1,n))}}function Y(e,t){s(n=>{let r=e(n);return L+=1,Oe(n.runtimes,r.runtimes,t),r})}function ke(e){se.clear(),te.clear(),ne.clear(),Y(()=>e)}function X(e,t){let n=te.get(e.key);if(!n)return e.state;let r={...e.state},i=e.settingsRevision??0;return n.model&&(i>=n.model.settingsRevision?delete n.model:r.model=t?.state.model??n.model.value),n.thinkingLevel&&(i>=n.thinkingLevel.settingsRevision?delete n.thinkingLevel:r.thinkingLevel=t?.state.thinkingLevel??n.thinkingLevel.value),n.model===void 0&&n.thinkingLevel===void 0&&te.delete(e.key),r}function Ae(e,t){let n=new Set(e.filter(e=>!se.has(e.key)).map(e=>e.key)),r=n.size!==o().runtimes.length||o().runtimes.some(e=>!n.has(e.key));Y(t=>{let n=new Map(t.runtimes.map(e=>[e.key,e]));return{...t,runtimes:e.filter(e=>!se.has(e.key)).map(e=>{let t=n.get(e.key);return{...e,state:{...X(e,t),contextUsage:t?.state.contextUsage??e.state.contextUsage},...t?.stats===void 0?{}:{stats:t.stats},...t?.lastAssistantText===void 0?{}:{lastAssistantText:t.lastAssistantText}}})}},t),r&&Le().catch(()=>{})}function je(e,t){ve(e),me(e),xe(e,e=>{let n=e.closed;e.closed={...t?.cwd||n?.cwd?{cwd:n?.cwd??t?.cwd}:{},...t?.state.sessionFile||n?.sessionFile?{sessionFile:n?.sessionFile??t?.state.sessionFile}:{},...n?.bannerDismissed?{bannerDismissed:!0}:{},...n?.resuming?{resuming:!0}:{},...n?.resumeError?{resumeError:n.resumeError}:{}},e.streaming=!1,e.compacting=!1,e.workingSince=void 0,e.workingText=void 0,e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`&&e.key!==`paused`&&e.key!==`compaction`),e.suggestedCommand=void 0,e.uiRequests=[];for(let t of Object.values(e.subagents))t.streaming=!1;cn(e)})}function Me(e,t,n=!0){let r=t??o().runtimes.find(t=>t.key===e),i=se.has(e);return se.add(e),te.delete(e),ne.delete(e),i||Y(t=>({...t,runtimes:t.runtimes.filter(t=>t.key!==e)})),Ce()===e?je(e,r):Se(e),i||!n?Promise.resolve():Le()}async function Ne(e){let t=o().runtimes.find(t=>t.key===e);try{await $.stopRuntime(e)}catch(t){if(se.has(e))return;throw t}await Me(e,t)}function Pe(t,n){e[t]?.statusEntries.some(e=>e.id===n)&&xe(t,e=>{let t=e.statusEntries.find(e=>e.id===n);t&&(t.dismissed=!0)})}function Z(t){e[t]?.closed&&xe(t,e=>{e.closed&&(e.closed.bannerDismissed=!0)})}async function Fe(t){let n=e[t]?.closed;if(!n||n.resuming)return;if(!n.cwd||!n.sessionFile){xe(t,e=>{e.closed&&(e.closed.resumeError=`This closed session has no captured resume path.`)});return}let r=n.cwd,i=n.sessionFile;xe(t,e=>{e.closed&&(e.closed.resuming=!0,e.closed.resumeError=void 0)});let a;try{a=await $.createRuntime(r,{sessionPath:i})}catch(n){let r=n instanceof Error?n.message:String(n);if(!e[t]?.closed)return;xe(t,e=>{e.closed&&(e.closed.resuming=!1,e.closed.resumeError=r,e.closed.bannerDismissed=!1)});return}Re(a),Le().catch(()=>{}),U({screen:`session`,key:a.key})}function Ie(){let e=++re,t=L;return $.fleet().then(n=>{e!==re||t!==L||(ke(n),l(void 0))},n=>{throw e===re&&t===L&&l(n instanceof Error?n.message:String(n)),n})}function Le(){let e=++ie;return $.sessions().then(t=>{e===ie&&(Y(e=>({...e,diskSessions:t.sessions})),l(void 0))},t=>{throw e===ie&&l(t instanceof Error?t.message:String(t)),t})}function Re(e){se.delete(e.key),Y(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 ze(e,t,n,r){if(o().runtimes.some(t=>t.key===e)){if(n!==void 0&&De(e)!==n){let t=z.get(e)??0,i=ee.get(e);if(t>n||i===void 0||i>r)return}Y(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:t}:n)}))}}function Be(e,t,n){let r=o().runtimes.find(t=>t.key===e),i=te.get(e)??{};(r?.settingsRevision??0)>=n?delete i.model:i.model={value:t,settingsRevision:n},i.model===void 0&&i.thinkingLevel===void 0?te.delete(e):te.set(e,i),!((r?.settingsRevision??0)>=n)&&Y(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:{...n.state,model:t}}:n)}))}function Ve(e,t,n){let r=o().runtimes.find(t=>t.key===e),i=te.get(e)??{};(r?.settingsRevision??0)>=n?delete i.thinkingLevel:i.thinkingLevel={value:t,settingsRevision:n},i.model===void 0&&i.thinkingLevel===void 0?te.delete(e):te.set(e,i),!((r?.settingsRevision??0)>=n)&&Y(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:{...n.state,thinkingLevel:t}}:n)}))}function He(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}}}async function Ue(e,t){let n=(ne.get(e)??0)+1;ne.set(e,n);let r=De(e),i=await $.stats(e,t);return ne.get(e)!==n||!o().runtimes.some(t=>t.key===e)||Y(t=>({...t,runtimes:t.runtimes.map(t=>t.key===e?He(t,i,De(e)!==r):t)})),i}function We(e){let t=new AbortController,n,r=new Promise((r,i)=>{n=setTimeout(()=>{let n=Error(`Stats request for runtime ${e} timed out after ${Dm} ms`);i(n),t.abort(n)},Dm)});return Promise.race([$.stats(e,t.signal),r]).finally(()=>{n!==void 0&&clearTimeout(n)})}function Ge(){if(ae)return ae;let e=o().runtimes.map(e=>e.key),t=new Map(e.map(e=>[e,De(e)])),n=e.map(e=>We(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&&Y(e=>({...e,runtimes:e.runtimes.map(e=>{let n=r.get(e.key),i=t.get(e.key),a=i===void 0||De(e.key)!==i;return n?He(e,n,a):e})})),d(i.length>0?i.join(`; `):void 0)}).finally(()=>{ae===r&&(ae=void 0)});return ae=r,r}function Ke(e){return Nm.encode(JSON.stringify(e)).byteLength}function qe(e){e.queued=[],e.queuedBytes=0}function Je(){j!==void 0&&clearTimeout(j),j=void 0}function Ye(){return Math.min(km,Om*2**Math.max(0,P-1))}function Xe(){if(H||j!==void 0)return;P+=1;let e=Ye();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,tt()},e)}function Ze(){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 Qe(e){let t=e.event?.type;t===`fleet_snapshot`?Ae(e.event.runtimes,e.seq):t===`disk_sessions_changed`?Le().catch(()=>{}):t===`runtime_removed`?e.key&&Me(e.key).catch(()=>{}):e.key&&(xe(e.key,t=>vn(t,e.event)),t===`tasks_update`&&pe(e.key))}function $e(e){let t=e.subagent;xe(e.key,n=>{let r=e.messages;if(n.closed=void 0,n.entries=$t(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=>Wt(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,Pm(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])),sn(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:$t(t.messages),streaming:r.status===`running`}}cn(n)}),pe(e.key)}function et(e,t){if(A!==e||e.state!==`active`||e.barrierSeq===void 0)return;Je(),P=0,Ze();let n=e.barrierSeq;I=n;let r=Ce(),i=r?o().runtimes.find(e=>e.key===r):void 0;ke(t.fleet),l(void 0),t.active?$e(t.active):r&&Me(r,i,!1).catch(()=>{});let a=[...e.queued].sort((e,t)=>e.seq-t.seq),s=t.active?.subagent;if(s&&t.active)for(let e of a)e.seq>s.barrierSeq&&e.seq<=n&&e.key===t.active.key&&e.event.type===`background_agent_event`&&String(e.event.agentId)===s.agentId&&Qe(e);for(let e of a)e.seq>n&&Qe(e);qe(e),A=void 0,h(!1),p(void 0)}function tt(e=!1){if(H)return Promise.resolve();if(O)return(e||A?.state===`failed`)&&(F=!0),O;Je();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)ve(e,t);h(!0),p(void 0);let o=setTimeout(()=>a.controller.abort(`Dashboard recovery timed out`),Em),s=$.resync(n,r,a.controller.signal).then(e=>{a.barrierSeq=e.barrierSeq,et(a,e)}).catch(e=>{if(A!==a)return;a.state=`failed`,qe(a);let t=a.controller.signal.reason;p(typeof t==`string`?t:e instanceof Error?e.message:String(e)),Xe(),j===void 0&&h(!1)}).finally(()=>{clearTimeout(o),O===s&&(O=void 0),!H&&F&&(F=!1,tt())});return O=s,s}function nt(){return tt(!0)}function rt(e){if(e.event?.type===`dashboard_resync`){tt(!0);return}if(A){if(A.state===`failed`)throw Xe(),Error(`Dashboard recovery is failed; refusing to acknowledge live envelope before resync succeeds`);let t=Ke(e);if(A.queued.length>=Sm||A.queuedBytes+t>Cm){qe(A),A.state=`failed`;let e=`Dashboard recovery queue overflowed; waiting for a newer authoritative snapshot`;throw p(e),A.controller.abort(e),Xe(),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>=wm||t.queuedBytes+n>Tm)throw ve(e.key,t),Error(`Dashboard hydration queue overflowed for ${e.key}; refusing an incomplete snapshot replay`);t.queued.push(e),t.queuedBytes+=n}Qe(e)}let it;async function at(){H=!1;try{J(await $.auth())}catch(e){_({mode:`remote`,needsPairing:e?.body?.needsPairing??!1,identity:e?.body?.identity,error:e?.message}),U({screen:`pairing`});return}await Ie().catch(()=>{}),it=St({onEnvelope:rt,onAuthStatus:J,onStatusChange:e=>{N=!1,M=e.state===`connected`?e:void 0,y(e)},onRecovery:()=>{tt()}})}function ot(){H=!0,it?.(),we(),Je(),M=void 0,N=!1,F=!1;let e=A;A=void 0,e&&qe(e),e?.controller.abort(`Dashboard stopped`);for(let[e,t]of T)ve(e,t)}function st(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)){xe(n,e=>yn(e,t));return}}async function ct(e,t){ve(e);let n=De(e),r={guard:he(e),queued:[],queuedBytes:0};T.set(e,r);let i=()=>ve(e,r);t?.addEventListener(`abort`,i,{once:!0}),t?.aborted&&i();try{let i=await $.hydrate(e,t);if(t?.aborted||T.get(e)!==r||!ge(e,r.guard))return;xe(e,e=>{let t=i.messages;e.closed=void 0,e.entries=$t(t),e.backgroundAgents=Object.fromEntries(i.backgroundAgents.map(e=>[e.agentId,e])),sn(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=>Wt(e)).filter(e=>e!==void 0),Pm(e,t,i.state),cn(e)}),pe(e),ze(e,i.state,n,i.barrierSeq);for(let e of[...r.queued].sort((e,t)=>e.seq-t.seq))e.seq>i.barrierSeq&&Qe(e)}finally{t?.removeEventListener(`abort`,i),ve(e,r)}}async function lt(e,t,n){let r=he(e),{agent:i,messages:a}=await $.subagentMessages(e,t,n);n?.aborted||!_e(e,r)||xe(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=$t(a)),n.streaming=i.status===`running`})}return{sessions:e,revisions:n,route:i,navigate:U,fleet:o,fleetError:c,fleetStatsError:u,refreshFleet:Ie,refreshDiskSessions:Le,refreshFleetStats:Ge,refreshRuntimeStats:Ue,removeRuntime:Me,stopRuntime:Ne,resumeClosedSession:Fe,dismissClosedBanner:Z,dismissStatusBanner:Pe,upsertRuntime:Re,setRuntimeModel:Be,setRuntimeThinkingLevel:Ve,resyncing:m,resyncError:f,retryResync:nt,auth:g,connected:b,connection:v,notices:x,start:at,stop:ot,dismissToast:st,resolveUiRequest(e,t){xe(e,e=>bn(e,t))},hydrateSession:ct,hydrateSubagent:lt}}var Im=5e3;function Lm(e){let t;return Promise.race([e,new Promise((e,n)=>{t=setTimeout(()=>n(Error(`service worker not ready`)),Im)})]).finally(()=>{t&&clearTimeout(t)})}function Rm(){let e=Fm();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:ln(t.uiRequests)??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),Lm(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=()=>{let t=e.route(),n=t.screen===`session`||t.screen===`subagent`?t.key:void 0;return[...Object.values(e.sessions).flatMap(e=>e.key===n?[]:e.toasts.map(t=>({...t,sessionKey:e.key}))),...e.notices()].slice(-5)};return[W(Te,{get fallback(){return W(ir,{store:e})},get children(){return[W(q,{get when(){return e.route().screen===`session`},get children(){return W(Id,{store:e,get sessionKey(){return e.route().key}})}}),W(q,{get when(){return e.route().screen===`subagent`},get children(){return W(Xp,{store:e,get sessionKey(){return e.route().key},get agentId(){return e.route().agentId}})}}),W(q,{get when(){return e.route().screen===`files`},get children(){return W(Ht,{store:e,get initialPath(){return e.route().path}})}}),W(q,{get when(){return e.route().screen===`memories`},get children(){return W(il,{store:e})}}),W(q,{get when(){return e.route().screen===`settings`},get children(){return W(Rp,{store:e,get target(){return e.route().target},get routeScopedModelsCwd(){return e.route().cwd}})}}),W(q,{get when(){return e.route().screen===`pairing`},get children(){return W(ul,{store:e})}})]}}),W(ct,{get toasts(){return i()},onDismiss:t=>e.dismissToast(t)})]}Nf();var zm=document.getElementById(`root`);if(!zm)throw Error(`dashboard: #root element missing from index.html`);Oe(()=>W(Rm,{}),zm);
|
|
@@ -1 +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}.mode-badge{min-width:0;max-width:min(16rem,100%)}.mode-badge-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.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%}html,body{height:100%}#root{flex-direction:column;height:100%;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:100%;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{overscroll-behavior:contain;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)}.banner-region{padding-top:var(--space-2);gap:var(--space-2);overscroll-behavior:contain;flex-direction:column;display:flex}.banner{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);gap:var(--space-2);background:var(--bg);align-items:flex-start;display:flex}.banner.warning{border-color:var(--status-attention)}.banner.error{border-color:var(--status-error)}.banner-glyph{flex:none}.banner-text{overflow-wrap:anywhere;white-space:pre-wrap;flex:auto;min-width:0;max-height:40vh;overflow-y:auto}.banner-actions{gap:var(--space-2);flex-wrap:wrap;flex:none;display:flex}.banner-dismiss{flex:none}.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{top:var(--space-2);gap:var(--space-2);z-index:50;flex-direction:column;width:max-content;max-width:min(560px,100vw - 2rem);display:flex;position:fixed;left:50%;transform:translate(-50%)}.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:960px}.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}.scoped-models-editor:focus{outline:none}.scoped-models-context{gap:var(--space-1);margin:var(--space-3) 0;font-size:var(--fs-secondary);display:grid}.scoped-models-context select,.scoped-models-toolbar input{border:var(--hairline);border-radius:var(--radius);background:var(--bg);min-width:0;max-width:100%;color:var(--text);font:inherit;padding:var(--space-2)}.scoped-models-toolbar,.scoped-models-actions{align-items:center;gap:var(--space-2);margin:var(--space-3) 0;flex-wrap:wrap;display:flex}.scoped-models-toolbar input{flex:260px}.scoped-models-grid{gap:var(--space-4);min-width:0;display:grid}.scoped-models-grid h3{font-size:var(--fs-secondary);margin-bottom:var(--space-2)}.scoped-models-order,.scoped-models-available{min-width:0}.scoped-model-order-row,.scoped-model-choice,.scoped-model-provider-heading{align-items:center;gap:var(--space-2);min-width:0;font-size:var(--fs-secondary);display:flex}.scoped-model-order-row{border-bottom:var(--hairline);padding:var(--space-1) 0;justify-content:space-between}.scoped-model-order-row>span,.scoped-model-choice .model-id,.scoped-model-choice .model-name,.scoped-model-provider-heading span{overflow-wrap:anywhere;min-width:0}.scoped-model-choice .model-name{color:var(--muted);font-size:var(--fs-small)}.scoped-model-move-controls{gap:var(--space-1);flex-shrink:0;display:flex}.scoped-model-move-controls button{border:var(--hairline);border-radius:var(--radius);background:var(--bg-elevated);min-width:36px;min-height:36px;color:var(--text)}.scoped-model-provider{border-bottom:var(--hairline);padding:var(--space-2) 0}.scoped-model-provider-heading{margin-bottom:var(--space-1);font-weight:600}.scoped-model-choice{padding:var(--space-1) 0 var(--space-1) var(--space-4)}.scoped-model-choice input,.scoped-model-provider-heading input{flex:none}@media (width>=701px){.scoped-models-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}@media (width<=700px){.scoped-model-move-controls button{min-width:44px;min-height:44px}.scoped-model-choice{min-height:44px}}.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:100%;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-wizard{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-wizard-header{align-items:baseline;gap:var(--space-2);display:flex}.ask-wizard-title{color:var(--text);font-weight:600}.ask-wizard-countdown{color:var(--muted);font-weight:400}.ask-tab-strip{gap:var(--space-1);flex-wrap:wrap;display:flex}.ask-tab{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--muted);padding:2px var(--space-2);cursor:pointer;font-family:inherit;font-size:var(--fs-small);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:4px;max-width:22ch;display:inline-flex;overflow:hidden}.ask-tab.selected{border-left:3px solid var(--status-attention);background:color-mix(in srgb, var(--status-attention) 12%, var(--surface,transparent));color:var(--text);text-overflow:clip;max-width:none;overflow:visible}.ask-tab.answered{color:var(--text)}.ask-tab-check{color:var(--status-attention);font-size:var(--fs-small)}.ask-tab-submit{font-weight:600}.ask-tab-panel.hidden{display:none}.ask-question{gap:var(--space-2);flex-direction:column;display:flex}.ask-question-title{font-size:var(--fs-base);color:var(--text);margin:0;font-weight:600}.ask-question-body{color:var(--text);margin:0}.ask-options{gap:var(--space-2);border:0;flex-direction:column;min-width:0;margin:0;padding:0;display:flex;position:relative}.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-attention);background:color-mix(in srgb, var(--status-attention) 10%, transparent)}.ask-option input{width:auto;accent-color:var(--status-attention);cursor:pointer;margin:0}.ask-option-input--hidden{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-index{text-align:center;min-width:1.4em;color:var(--muted);font-size:var(--fs-small);font-variant-numeric:tabular-nums;flex:none}.ask-option-label{flex:auto;min-width:0}.ask-option-check{color:var(--status-attention);flex:none}.ask-custom-field{margin:0}.ask-custom-label{font-size:var(--fs-small);color:var(--muted)}.ask-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-1);display:flex}.ask-review{gap:var(--space-2);flex-direction:column;display:flex}.ask-review-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ask-review-item{padding:var(--space-2) 0;border-bottom:var(--hairline);flex-direction:column;gap:2px;display:flex}.ask-review-question{color:var(--text);font-weight:600}.ask-review-answer{color:var(--text)}.ask-review-answer.muted{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%}.session-bar{flex-shrink:1;min-height:0;overflow:hidden}.dock{flex-direction:column;flex-shrink:1;min-height:0;display:flex;overflow:hidden}.dock-collapse-row{flex:none}.dock-inner{flex:auto;min-height:0;overflow:hidden}.dock-panels{gap:var(--space-2);overscroll-behavior:contain;flex-direction:column;flex:0 auto;min-height:0;max-height:30vh;display:flex;overflow-y:auto}.command-popover{position:static}.composer{overscroll-behavior:contain;flex:none;min-height:0;max-height:100%;overflow-y:auto}.composer-row{z-index:1;background:var(--bg);position:sticky;bottom:0}.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}.banner-region,.toast-region{width:100%;max-width:100%}.banner-region{overscroll-behavior:contain;flex:0 auto;min-height:0;max-height:20vh;overflow-y:auto}.banner-text{max-height:18vh}.queued-message-row{max-height:8vh;overflow-y:auto}.attachment-strip{max-height:10vh;overflow-y:auto}.pending-chips{max-height:8vh;display:block;overflow-y:auto}.composer textarea{max-height:26vh}.toast-region{padding-left:var(--space-3);padding-right:var(--space-3)}.banner-actions{flex-direction:column}.composer textarea{font-size:16px}}.memories-screen{padding-bottom:var(--space-6)}.memories-head,.memory-doc-head,.memory-edit-actions{justify-content:space-between;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap;display:flex}.memories-head{margin:var(--space-5) 0 var(--space-4)}.memories-layout{gap:var(--space-4);grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;display:grid}.memories-sidebar{gap:var(--space-4);flex-direction:column;display:flex}.memory-panel,.memory-editor{border:var(--hairline);border-radius:var(--radius);padding:var(--space-4);min-width:0}.memory-panel h2{font-size:var(--fs-secondary);color:var(--muted);margin-bottom:var(--space-2)}.memory-nav-item{text-align:left;border:var(--hairline);border-radius:var(--radius-sm);background:var(--surface);width:100%;color:var(--text);padding:var(--space-2);margin-bottom:var(--space-2);cursor:pointer;flex-direction:column;gap:2px;display:flex}.memory-nav-item:hover,.memory-nav-item.active{border-color:var(--text)}.memory-nav-item.error{border-color:var(--status-error)}.memory-nav-item small{color:var(--muted);overflow-wrap:anywhere}.memory-doc-head{margin-bottom:var(--space-3)}.memory-metadata{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius-sm);padding:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.memory-metadata span{color:var(--muted)}.memory-edit-actions{margin-bottom:var(--space-3);justify-content:flex-start;align-items:center}.memory-textarea{width:100%;min-height:360px;font-family:var(--font-mono);font-size:var(--fs-secondary);background:var(--surface);color:var(--text);border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);resize:vertical}.memory-preview{margin-top:var(--space-4);border:var(--hairline);border-radius:var(--radius);padding:var(--space-3)}.memory-preview summary{cursor:pointer;color:var(--muted);margin-bottom:var(--space-2)}@media (width<=800px){.memories-layout{grid-template-columns:1fr}}@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)}}
|
|
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}.mode-badge{min-width:0;max-width:min(16rem,100%)}.mode-badge-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.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%}html,body{height:100%}#root{flex-direction:column;height:100%;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:100%;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{overscroll-behavior:contain;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)}.banner-region{padding-top:var(--space-2);gap:var(--space-2);overscroll-behavior:contain;flex-direction:column;display:flex}.banner{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);gap:var(--space-2);background:var(--bg);align-items:flex-start;display:flex}.banner.warning{border-color:var(--status-attention)}.banner.error{border-color:var(--status-error)}.banner-glyph{flex:none}.banner-text{overflow-wrap:anywhere;white-space:pre-wrap;flex:auto;min-width:0;max-height:40vh;overflow-y:auto}.banner-actions{gap:var(--space-2);flex-wrap:wrap;flex:none;display:flex}.banner-dismiss{flex:none}.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{top:var(--space-2);gap:var(--space-2);z-index:50;flex-direction:column;width:max-content;max-width:min(560px,100vw - 2rem);display:flex;position:fixed;left:50%;transform:translate(-50%)}.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:960px}.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}.scoped-models-editor:focus{outline:none}.scoped-models-context{gap:var(--space-1);margin:var(--space-3) 0;font-size:var(--fs-secondary);display:grid}.scoped-models-context select,.scoped-models-toolbar input{border:var(--hairline);border-radius:var(--radius);background:var(--bg);min-width:0;max-width:100%;color:var(--text);font:inherit;padding:var(--space-2)}.scoped-models-toolbar,.scoped-models-actions{align-items:center;gap:var(--space-2);margin:var(--space-3) 0;flex-wrap:wrap;display:flex}.scoped-models-toolbar input{flex:260px}.scoped-models-grid{gap:var(--space-4);min-width:0;display:grid}.scoped-models-grid h3{font-size:var(--fs-secondary);margin-bottom:var(--space-2)}.scoped-models-order,.scoped-models-available{min-width:0}.scoped-model-order-row,.scoped-model-choice,.scoped-model-provider-heading{align-items:center;gap:var(--space-2);min-width:0;font-size:var(--fs-secondary);display:flex}.scoped-model-order-row{border-bottom:var(--hairline);padding:var(--space-1) 0;justify-content:space-between}.scoped-model-order-row>span,.scoped-model-choice .model-id,.scoped-model-choice .model-name,.scoped-model-provider-heading span{overflow-wrap:anywhere;min-width:0}.scoped-model-choice .model-name{color:var(--muted);font-size:var(--fs-small)}.scoped-model-move-controls{gap:var(--space-1);flex-shrink:0;display:flex}.scoped-model-move-controls button{border:var(--hairline);border-radius:var(--radius);background:var(--bg-elevated);min-width:36px;min-height:36px;color:var(--text)}.scoped-model-provider{border-bottom:var(--hairline);padding:var(--space-2) 0}.scoped-model-provider-heading{margin-bottom:var(--space-1);font-weight:600}.scoped-model-choice{padding:var(--space-1) 0 var(--space-1) var(--space-4)}.scoped-model-choice input,.scoped-model-provider-heading input{flex:none}@media (width>=701px){.scoped-models-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}@media (width<=700px){.scoped-model-move-controls button{min-width:44px;min-height:44px}.scoped-model-choice{min-height:44px}}.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:100%;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-wizard{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-wizard-header{align-items:baseline;gap:var(--space-2);display:flex}.ask-wizard-title{color:var(--text);font-weight:600}.ask-wizard-countdown{color:var(--muted);font-weight:400}.ask-tab-strip{gap:var(--space-1);flex-wrap:wrap;display:flex}.ask-tab{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--muted);padding:2px var(--space-2);cursor:pointer;font-family:inherit;font-size:var(--fs-small);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:4px;max-width:22ch;display:inline-flex;overflow:hidden}.ask-tab.selected{border-left:3px solid var(--status-attention);background:color-mix(in srgb, var(--status-attention) 12%, var(--surface,transparent));color:var(--text);text-overflow:clip;max-width:none;overflow:visible}.ask-tab.answered{color:var(--text)}.ask-tab-check{color:var(--status-attention);font-size:var(--fs-small)}.ask-tab-submit{font-weight:600}.ask-tab-panel.hidden{display:none}.ask-question{gap:var(--space-2);flex-direction:column;display:flex}.ask-question-title{font-size:var(--fs-base);color:var(--text);margin:0;font-weight:600}.ask-question-body{color:var(--text);margin:0}.ask-options{gap:var(--space-2);border:0;flex-direction:column;min-width:0;margin:0;padding:0;display:flex;position:relative}.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-attention);background:color-mix(in srgb, var(--status-attention) 10%, transparent)}.ask-option input{width:auto;accent-color:var(--status-attention);cursor:pointer;margin:0}.ask-option-input--hidden{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-index{text-align:center;min-width:1.4em;color:var(--muted);font-size:var(--fs-small);font-variant-numeric:tabular-nums;flex:none}.ask-option-label{flex:auto;min-width:0}.ask-option-check{color:var(--status-attention);flex:none}.ask-custom-field{margin:0}.ask-custom-label{font-size:var(--fs-small);color:var(--muted)}.ask-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-1);display:flex}.ask-review{gap:var(--space-2);flex-direction:column;display:flex}.ask-review-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ask-review-item{padding:var(--space-2) 0;border-bottom:var(--hairline);flex-direction:column;gap:2px;display:flex}.ask-review-question{color:var(--text);font-weight:600}.ask-review-answer{color:var(--text)}.ask-review-answer.muted{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,.fork-role{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%}.session-bar{flex-shrink:1;min-height:0;overflow:hidden}.dock{flex-direction:column;flex-shrink:1;min-height:0;display:flex;overflow:hidden}.dock-collapse-row{flex:none}.dock-inner{flex:auto;min-height:0;overflow:hidden}.dock-panels{gap:var(--space-2);overscroll-behavior:contain;flex-direction:column;flex:0 auto;min-height:0;max-height:30vh;display:flex;overflow-y:auto}.command-popover{position:static}.composer{overscroll-behavior:contain;flex:none;min-height:0;max-height:100%;overflow-y:auto}.composer-row{z-index:1;background:var(--bg);position:sticky;bottom:0}.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}.banner-region,.toast-region{width:100%;max-width:100%}.banner-region{overscroll-behavior:contain;flex:0 auto;min-height:0;max-height:20vh;overflow-y:auto}.banner-text{max-height:18vh}.queued-message-row{max-height:8vh;overflow-y:auto}.attachment-strip{max-height:10vh;overflow-y:auto}.pending-chips{max-height:8vh;display:block;overflow-y:auto}.composer textarea{max-height:26vh}.toast-region{padding-left:var(--space-3);padding-right:var(--space-3)}.banner-actions{flex-direction:column}.composer textarea{font-size:16px}}.memories-screen{padding-bottom:var(--space-6)}.memories-head,.memory-doc-head,.memory-edit-actions{justify-content:space-between;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap;display:flex}.memories-head{margin:var(--space-5) 0 var(--space-4)}.memories-layout{gap:var(--space-4);grid-template-columns:minmax(260px,340px) minmax(0,1fr);align-items:start;display:grid}.memories-sidebar{gap:var(--space-4);flex-direction:column;display:flex}.memory-panel,.memory-editor{border:var(--hairline);border-radius:var(--radius);padding:var(--space-4);min-width:0}.memory-panel h2{font-size:var(--fs-secondary);color:var(--muted);margin-bottom:var(--space-2)}.memory-nav-item{text-align:left;border:var(--hairline);border-radius:var(--radius-sm);background:var(--surface);width:100%;color:var(--text);padding:var(--space-2);margin-bottom:var(--space-2);cursor:pointer;flex-direction:column;gap:2px;display:flex}.memory-nav-item:hover,.memory-nav-item.active{border-color:var(--text)}.memory-nav-item.error{border-color:var(--status-error)}.memory-nav-item small{color:var(--muted);overflow-wrap:anywhere}.memory-doc-head{margin-bottom:var(--space-3)}.memory-metadata{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius-sm);padding:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.memory-metadata span{color:var(--muted)}.memory-edit-actions{margin-bottom:var(--space-3);justify-content:flex-start;align-items:center}.memory-textarea{width:100%;min-height:360px;font-family:var(--font-mono);font-size:var(--fs-secondary);background:var(--surface);color:var(--text);border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);resize:vertical}.memory-preview{margin-top:var(--space-4);border:var(--hairline);border-radius:var(--radius);padding:var(--space-3)}.memory-preview summary{cursor:pointer;color:var(--muted);margin-bottom:var(--space-2)}@media (width<=800px){.memories-layout{grid-template-columns:1fr}}@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-CGwyNIuU.js"></script>
|
|
59
|
+
<link rel="stylesheet" crossorigin href="./assets/index-CNDJxinP.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.61.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
|