@dreb/dashboard 2.55.4 → 2.55.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server/auth.d.ts +43 -5
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +170 -37
- package/dist/server/auth.js.map +1 -1
- package/dist/server/pairing-storage.d.ts +1 -1
- package/dist/server/pairing-storage.d.ts.map +1 -1
- package/dist/server/pairing-storage.js +20 -3
- package/dist/server/pairing-storage.js.map +1 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +41 -4
- package/dist/server/server.js.map +1 -1
- package/dist/shared/protocol.d.ts +10 -0
- package/dist/shared/protocol.d.ts.map +1 -1
- package/dist/shared/protocol.js.map +1 -1
- package/dist/static/assets/{index-MJ5nXWOn.js → index-CNuWaOpq.js} +2 -2
- package/dist/static/assets/index-DVDGUEPU.css +1 -0
- package/dist/static/index.html +2 -2
- package/dist/static/sw.js +1 -1
- package/package.json +1 -1
- package/dist/static/assets/index-DVt6aXhf.css +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var l={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return u(this.context.count)},getNextContextId(){return u(this.context.count++)}};function u(e){let t=String(e),n=t.length-1;return l.context.id+(n?String.fromCharCode(96+n):``)+t}function d(e){l.context=e}var f=(e,t)=>e===t,p=Symbol(`solid-proxy`),m=Symbol(`solid-track`),h={equals:f},g=null,_=de,v=1,y=2,b={owned:null,cleanups:null,context:null,owner:null},x={},S=null,C=null,w=null,T=null,E=null,D=0;function O(e,t){let n=w,r=S,i=e.length===0,a=t===void 0?r:t,o=i?b:{owned:null,cleanups:null,context:a?a.context:null,owner:a},s=i?e:()=>e(()=>L(()=>he(o)));S=o,w=null;try{return U(s,!0)}finally{w=n,S=r}}function k(e,t){t=t?Object.assign({},h,t):h;let n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0};return[oe.bind(n),e=>(typeof e==`function`&&(e=C&&C.running&&C.sources.has(n)?e(n.tValue):e(n.value)),V(n,e))]}function A(e,t,n){se(ce(e,t,!0,v))}function j(e,t,n){se(ce(e,t,!1,v))}function M(e,t,n){_=fe;let r=ce(e,t,!1,v),i=B&&ie(B);i&&(r.suspense=i),(!n||!n.render)&&(r.user=!0),E?E.push(r):se(r)}function N(e,t,n){n=n?Object.assign({},h,n):h;let r=ce(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,se(r),oe.bind(r)}function P(e){return e&&typeof e==`object`&&`then`in e}function F(e,t,n){let r,i,a;typeof t==`function`?(r=e,i=t,a=n||{}):(r=!0,i=e,a=t||{});let o=null,s=x,c=null,u=!1,d=!1,f=`initialValue`in a,p=typeof r==`function`&&N(r),m=new Set,[h,g]=(a.storage||k)(a.initialValue),[_,v]=k(void 0),[y,b]=k(void 0,{equals:!1}),[T,E]=k(f?`ready`:`unresolved`);S&&z(()=>{for(let e of m.keys())e.decrement();m.clear(),C&&o&&C.promises.delete(o),o=null}),l.context&&(c=l.getNextContextId(),a.ssrLoadFrom===`initial`?s=a.initialValue:l.load&&l.has(c)&&(s=l.load(c)));function D(e,t,n,r){return o===e&&(o=null,r!==void 0&&(f=!0),(e===s||t===s)&&a.onHydrated&&queueMicrotask(()=>a.onHydrated(r,{value:t})),s=x,C&&e&&u?(C.promises.delete(e),u=!1,U(()=>{C.running=!0,O(t,n)},!1)):O(t,n)),t}function O(e,t){U(()=>{t===void 0&&g(()=>e),E(t===void 0?f?`ready`:`unresolved`:`errored`),v(t);for(let e of m.keys())e.decrement();m.clear()},!1)}function j(){let e=B&&ie(B),t=h(),n=_();if(n!==void 0&&!o)throw n;return w&&!w.user&&e&&A(()=>{y(),o&&(e.resolved&&C&&u?C.promises.add(o):m.has(e)||(e.increment(),m.add(e)))}),t}function M(e=!0){if(e!==!1&&d)return;d=!1;let t=p?p():r;if(u=C&&C.running,t==null||t===!1){D(o,L(h));return}C&&o&&C.promises.delete(o);let n,a=s===x?L(()=>{try{return i(t,{value:h(),refetching:e})}catch(e){n=e}}):s;if(n!==void 0){D(o,void 0,_e(n),t);return}else if(!P(a))return D(o,a,void 0,t),a;return o=a,`v`in a?(a.s===1?D(o,a.v,void 0,t):D(o,void 0,_e(a.v),t),a):(d=!0,queueMicrotask(()=>d=!1),U(()=>{E(f?`refreshing`:`pending`),b()},!1),a.then(e=>D(a,e,void 0,t),e=>D(a,void 0,_e(e),t)))}Object.defineProperties(j,{state:{get:()=>T()},error:{get:()=>_()},loading:{get(){let e=T();return e===`pending`||e===`refreshing`}},latest:{get(){if(!f)return j();let e=_();if(e&&!o)throw e;return h()}}});let F=S;return p?A(()=>(F=S,M(!1))):M(!1),[j,{refetch:e=>te(F,()=>M(e)),mutate:g}]}function I(e){return U(e,!1)}function L(e){if(w===null)return e();let t=w;w=null;try{return e()}finally{w=t}}function R(e){M(()=>L(e))}function z(e){return S===null||(S.cleanups===null?S.cleanups=[e]:S.cleanups.push(e)),e}function ee(){return w}function te(e,t){let n=S,r=w;S=e,w=null;try{return U(t,!0)}catch(e){ye(e)}finally{S=n,w=r}}var[ne,re]=k(!1);function ie(e){let t;return S&&S.context&&(t=S.context[e.id])!==void 0?t:e.defaultValue}function ae(e){let t=N(e),n=N(()=>be(t()));return n.toArray=()=>{let e=n();return Array.isArray(e)?e:e==null?[]:[e]},n}var B;function oe(){let e=C&&C.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===v)se(this);else{let e=T;T=null,U(()=>pe(this),!1),T=e}if(w){let e=this.observers;if(!e||e[e.length-1]!==w){let t=e?e.length:0;w.sources?(w.sources.push(this),w.sourceSlots.push(t)):(w.sources=[this],w.sourceSlots=[t]),e?(e.push(w),this.observerSlots.push(w.sources.length-1)):(this.observers=[w],this.observerSlots=[w.sources.length-1])}}return e&&C.sources.has(this)?this.tValue:this.value}function V(e,t,n){let r=C&&C.running&&C.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(r,t)){if(C){let r=C.running;(r||!n&&C.sources.has(e))&&(C.sources.add(e),e.tValue=t),r||(e.value=t)}else e.value=t;e.observers&&e.observers.length&&U(()=>{for(let t=0;t<e.observers.length;t+=1){let n=e.observers[t],r=C&&C.running;r&&C.disposed.has(n)||((r?!n.tState:!n.state)&&(n.pure?T.push(n):E.push(n),n.observers&&me(n)),r?n.tState=v:n.state=v)}if(T.length>1e6)throw T=[],Error()},!1)}return t}function se(e){if(!e.fn)return;he(e);let t=D;H(e,C&&C.running&&C.sources.has(e)?e.tValue:e.value,t),C&&!C.running&&C.sources.has(e)&&queueMicrotask(()=>{U(()=>{C&&(C.running=!0),w=S=e,H(e,e.tValue,t),w=S=null},!1)})}function H(e,t,n){let r,i=S,a=w;w=S=e;try{r=e.fn(t)}catch(t){return e.pure&&(C&&C.running?(e.tState=v,e.tOwned&&e.tOwned.forEach(he),e.tOwned=void 0):(e.state=v,e.owned&&e.owned.forEach(he),e.owned=null)),e.updatedAt=n+1,ye(t)}finally{w=a,S=i}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&`observers`in e?V(e,r,!0):C&&C.running&&e.pure?(C.sources.has(e)||(e.value=r),C.sources.add(e),e.tValue=r):e.value=r,e.updatedAt=n)}function ce(e,t,n,r=v,i){let a={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:S,context:S?S.context:null,pure:n};return C&&C.running&&(a.state=0,a.tState=r),S===null||S!==b&&(C&&C.running&&S.pure?S.tOwned?S.tOwned.push(a):S.tOwned=[a]:S.owned?S.owned.push(a):S.owned=[a]),a}function le(e){let t=C&&C.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===y)return pe(e);if(e.suspense&&L(e.suspense.inFallback))return e.suspense.effects.push(e);let n=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<D);){if(t&&C.disposed.has(e))return;(t?e.tState:e.state)&&n.push(e)}for(let r=n.length-1;r>=0;r--){if(e=n[r],t){let t=e,i=n[r+1];for(;(t=t.owner)&&t!==i;)if(C.disposed.has(t))return}if((t?e.tState:e.state)===v)se(e);else if((t?e.tState:e.state)===y){let t=T;T=null,U(()=>pe(e,n[0]),!1),T=t}}}function U(e,t){if(T)return e();let n=!1;t||(T=[]),E?n=!0:E=[],D++;try{let t=e();return ue(n),t}catch(e){n||(E=null),T=null,ye(e)}}function ue(e){if(T&&=(de(T),null),e)return;let t;if(C){if(!C.promises.size&&!C.queue.size){let e=C.sources,n=C.disposed;E.push.apply(E,C.effects),t=C.resolve;for(let e of E)`tState`in e&&(e.state=e.tState),delete e.tState;C=null,U(()=>{for(let e of n)he(e);for(let t of e){if(t.value=t.tValue,t.owned)for(let e=0,n=t.owned.length;e<n;e++)he(t.owned[e]);t.tOwned&&(t.owned=t.tOwned),delete t.tValue,delete t.tOwned,t.tState=0}re(!1)},!1)}else if(C.running){C.running=!1,C.effects.push.apply(C.effects,E),E=null,re(!0);return}}let n=E;E=null,n.length&&U(()=>_(n),!1),t&&t()}function de(e){for(let t=0;t<e.length;t++)le(e[t])}function fe(e){let t,n=0;for(t=0;t<e.length;t++){let r=e[t];r.user?e[n++]=r:le(r)}if(l.context){if(l.count){l.effects||=[],l.effects.push(...e.slice(0,n));return}d()}for(l.effects&&(l.done||!l.count)&&(e=[...l.effects,...e],n+=l.effects.length,delete l.effects),t=0;t<n;t++)le(e[t])}function pe(e,t){let n=C&&C.running;n?e.tState=0:e.state=0;for(let r=0;r<e.sources.length;r+=1){let i=e.sources[r];if(i.sources){let e=n?i.tState:i.state;e===v?i!==t&&(!i.updatedAt||i.updatedAt<D)&&le(i):e===y&&pe(i,t)}}}function me(e){let t=C&&C.running;for(let n=0;n<e.observers.length;n+=1){let r=e.observers[n];(t?!r.tState:!r.state)&&(t?r.tState=y:r.state=y,r.pure?T.push(r):E.push(r),r.observers&&me(r))}}function he(e){let t;if(e.sources)for(;e.sources.length;){let t=e.sources.pop(),n=e.sourceSlots.pop(),r=t.observers;if(r&&r.length){let e=r.pop(),i=t.observerSlots.pop();n<r.length&&(e.sourceSlots[i]=n,r[n]=e,t.observerSlots[n]=i)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)he(e.tOwned[t]);delete e.tOwned}if(C&&C.running&&e.pure)ge(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)he(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}C&&C.running?e.tState=0:e.state=0}function ge(e,t){if(t||(e.tState=0,C.disposed.add(e)),e.owned)for(let t=0;t<e.owned.length;t++)ge(e.owned[t])}function _e(e){return e instanceof Error?e:Error(typeof e==`string`?e:`Unknown error`,{cause:e})}function ve(e,t,n){try{for(let n of t)n(e)}catch(e){ye(e,n&&n.owner||null)}}function ye(e,t=S){let n=g&&t&&t.context&&t.context[g],r=_e(e);if(!n)throw r;E?E.push({fn(){ve(r,n,t)},state:v}):ve(r,n,t)}function be(e){if(typeof e==`function`&&!e.length)return be(e());if(Array.isArray(e)){let t=[];for(let n=0;n<e.length;n++){let r=be(e[n]);if(Array.isArray(r))if(r.length<32768)t.push.apply(t,r);else for(let e=0;e<r.length;e++)t.push(r[e]);else t.push(r)}return t}return e}var xe=Symbol(`fallback`);function Se(e){for(let t=0;t<e.length;t++)e[t]()}function Ce(e,t,n={}){let r=[],i=[],a=[],o=0,s=t.length>1?[]:null;return z(()=>Se(a)),()=>{let c=e()||[],l=c.length,u,d;return c[m],L(()=>{let e,t,p,m,h,g,_,v,y;if(l===0)o!==0&&(Se(a),a=[],r=[],i=[],o=0,s&&=[]),n.fallback&&(r=[xe],i[0]=O(e=>(a[0]=e,n.fallback())),o=1);else if(o===0){for(i=Array(l),d=0;d<l;d++)r[d]=c[d],i[d]=O(f);o=l}else{for(p=Array(l),m=Array(l),s&&(h=Array(l)),g=0,_=Math.min(o,l);g<_&&r[g]===c[g];g++);for(_=o-1,v=l-1;_>=g&&v>=g&&r[_]===c[v];_--,v--)p[v]=i[_],m[v]=a[_],s&&(h[v]=s[_]);for(e=new Map,t=Array(v+1),d=v;d>=g;d--)y=c[d],u=e.get(y),t[d]=u===void 0?-1:u,e.set(y,d);for(u=g;u<=_;u++)y=r[u],d=e.get(y),d!==void 0&&d!==-1?(p[d]=i[u],m[d]=a[u],s&&(h[d]=s[u]),d=t[d],e.set(y,d)):a[u]();for(d=g;d<l;d++)d in p?(i[d]=p[d],a[d]=m[d],s&&(s[d]=h[d],s[d](d))):i[d]=O(f);i=i.slice(0,o=l),r=c.slice(0)}return i});function f(e){if(a[d]=e,s){let[e,n]=k(d);return s[d]=n,t(c[d],e)}return t(c[d])}}}function W(e,t){return L(()=>e(t||{}))}var we=e=>`Stale read from <${e}>.`;function G(e){let t=`fallback`in e&&{fallback:()=>e.fallback};return N(Ce(()=>e.each,e.children,t||void 0))}function K(e){let t=e.keyed,n=N(()=>e.when,void 0,void 0),r=t?n:N(n,void 0,{equals:(e,t)=>!e==!t});return N(()=>{let i=r();if(i){let a=e.children;return typeof a==`function`&&a.length>0?L(()=>a(t?i:()=>{if(!L(r))throw we(`Show`);return n()})):a}return e.fallback},void 0,void 0)}function Te(e){let t=ae(()=>e.children),n=N(()=>{let e=t(),n=Array.isArray(e)?e:[e],r=()=>void 0;for(let e=0;e<n.length;e++){let t=e,i=n[e],a=r,o=N(()=>a()?void 0:i.when,void 0,void 0),s=i.keyed?o:N(o,void 0,{equals:(e,t)=>!e==!t});r=()=>a()||(s()?[t,o,i]:void 0)}return r});return N(()=>{let t=n()();if(!t)return e.fallback;let[r,i,a]=t,o=a.children;return typeof o==`function`&&o.length>0?L(()=>o(a.keyed?i():()=>{if(L(n)()?.[0]!==r)throw we(`Match`);return i()})):o},void 0,void 0)}function Ee(e){return e}var q=e=>N(()=>e());function De(e,t,n){let r=n.length,i=t.length,a=r,o=0,s=0,c=t[i-1].nextSibling,l=null;for(;o<i||s<a;){if(t[o]===n[s]){o++,s++;continue}for(;t[i-1]===n[a-1];)i--,a--;if(i===o){let t=a<r?s?n[s-1].nextSibling:n[a-s]:c;for(;s<a;)e.insertBefore(n[s++],t)}else if(a===s)for(;o<i;)(!l||!l.has(t[o]))&&t[o].remove(),o++;else if(t[o]===n[a-1]&&n[s]===t[i-1]){let r=t[--i].nextSibling;e.insertBefore(n[s++],t[o++].nextSibling),e.insertBefore(n[--a],r),t[i]=n[a]}else{if(!l){l=new Map;let e=s;for(;e<a;)l.set(n[e],e++)}let r=l.get(t[o]);if(r!=null)if(s<r&&r<a){let c=o,u=1,d;for(;++c<i&&c<a&&!((d=l.get(t[c]))==null||d!==r+u);)u++;if(u>r-s){let i=t[o];for(;s<r;)e.insertBefore(n[s++],i)}else e.replaceChild(n[s++],t[o++])}else o++;else t[o++].remove()}}}var Oe=`_$DX_DELEGATE`;function ke(e,t,n,r={}){let i;return O(r=>{i=r,t===document?e():X(t,e(),t.firstChild?null:void 0,n)},r.owner),()=>{i(),t.textContent=``}}function J(e,t,n,r){let i,a=()=>{let t=r?document.createElementNS(`http://www.w3.org/1998/Math/MathML`,`template`):document.createElement(`template`);return t.innerHTML=e,n?t.content.firstChild.firstChild:r?t.firstChild:t.content.firstChild},o=t?()=>L(()=>document.importNode(i||=a(),!0)):()=>(i||=a()).cloneNode(!0);return o.cloneNode=o,o}function Ae(e,t=window.document){let n=t[Oe]||(t[Oe]=new Set);for(let r=0,i=e.length;r<i;r++){let i=e[r];n.has(i)||(n.add(i),t.addEventListener(i,Re))}}function Y(e,t,n){Ie(e)||(n==null?e.removeAttribute(t):e.setAttribute(t,n))}function je(e,t){Ie(e)||(t==null?e.removeAttribute(`class`):e.className=t)}function Me(e,t,n,r){if(r)Array.isArray(n)?(e[`$$${t}`]=n[0],e[`$$${t}Data`]=n[1]):e[`$$${t}`]=n;else if(Array.isArray(n)){let r=n[0];e.addEventListener(t,n[0]=t=>r.call(e,n[1],t))}else e.addEventListener(t,n,typeof n!=`function`&&n)}function Ne(e,t,n={}){let r=Object.keys(t||{}),i=Object.keys(n),a,o;for(a=0,o=i.length;a<o;a++){let r=i[a];!r||r===`undefined`||t[r]||(Le(e,r,!1),delete n[r])}for(a=0,o=r.length;a<o;a++){let i=r[a],o=!!t[i];!i||i===`undefined`||n[i]===o||!o||(Le(e,i,!0),n[i]=o)}return n}function Pe(e,t,n){n==null?e.style.removeProperty(t):e.style.setProperty(t,n)}function Fe(e,t,n){return L(()=>e(t,n))}function X(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!=`function`)return ze(e,t,r,n);j(r=>ze(e,t(),r,n),r)}function Ie(e){return!!l.context&&!l.done&&(!e||e.isConnected)}function Le(e,t,n){let r=t.trim().split(/\s+/);for(let t=0,i=r.length;t<i;t++)e.classList.toggle(r[t],n)}function Re(e){if(l.registry&&l.events&&l.events.find(([t,n])=>n===e))return;let t=e.target,n=`$$${e.type}`,r=e.target,i=e.currentTarget,a=t=>Object.defineProperty(e,"target",{configurable:!0,value:t}),o=()=>{let r=t[n];if(r&&!t.disabled){let i=t[`${n}Data`];if(i===void 0?r.call(t,e):r.call(t,i,e),e.cancelBubble)return}return t.host&&typeof t.host!=`string`&&!t.host._$host&&t.contains(e.target)&&a(t.host),!0},s=()=>{for(;o()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),l.registry&&!l.done&&(l.done=_$HY.done=!0),e.composedPath){let n=e.composedPath();a(n[0]);for(let e=0;e<n.length-2&&(t=n[e],o());e++){if(t._$host){t=t._$host,s();break}if(t.parentNode===i)break}}else s();a(r)}function ze(e,t,n,r,i){let a=Ie(e);if(a){!n&&(n=[...e.childNodes]);let t=[];for(let e=0;e<n.length;e++){let r=n[e];r.nodeType===8&&r.data.slice(0,2)===`!$`?r.remove():t.push(r)}n=t}for(;typeof n==`function`;)n=n();if(t===n)return n;let o=typeof t,s=r!==void 0;if(e=s&&n[0]&&n[0].parentNode||e,o===`string`||o===`number`){if(a||o===`number`&&(t=t.toString(),t===n))return n;if(s){let i=n[0];i&&i.nodeType===3?i.data!==t&&(i.data=t):i=document.createTextNode(t),n=He(e,n,r,i)}else n=n!==``&&typeof n==`string`?e.firstChild.data=t:e.textContent=t}else if(t==null||o===`boolean`){if(a)return n;n=He(e,n,r)}else if(o===`function`)return j(()=>{let i=t();for(;typeof i==`function`;)i=i();n=ze(e,i,n,r)}),()=>n;else if(Array.isArray(t)){let o=[],c=n&&Array.isArray(n);if(Be(o,t,n,i))return j(()=>n=ze(e,o,n,r,!0)),()=>n;if(a){if(!o.length)return n;if(r===void 0)return n=[...e.childNodes];let t=o[0];if(t.parentNode!==e)return n;let i=[t];for(;(t=t.nextSibling)!==r;)i.push(t);return n=i}if(o.length===0){if(n=He(e,n,r),s)return n}else c?n.length===0?Ve(e,o,r):De(e,n,o):(n&&He(e),Ve(e,o));n=o}else if(t.nodeType){if(a&&t.parentNode)return n=s?[t]:t;if(Array.isArray(n)){if(s)return n=He(e,n,r,t);He(e,n,null,t)}else n==null||n===``||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}return n}function Be(e,t,n,r){let i=!1;for(let a=0,o=t.length;a<o;a++){let o=t[a],s=n&&n[e.length],c;if(!(o==null||o===!0||o===!1))if((c=typeof o)==`object`&&o.nodeType)e.push(o);else if(Array.isArray(o))i=Be(e,o,s)||i;else if(c===`function`)if(r){for(;typeof o==`function`;)o=o();i=Be(e,Array.isArray(o)?o:[o],Array.isArray(s)?s:[s])||i}else e.push(o),i=!0;else{let t=String(o);s&&s.nodeType===3&&s.data===t?e.push(s):e.push(document.createTextNode(t))}}return i}function Ve(e,t,n=null){for(let r=0,i=t.length;r<i;r++)e.insertBefore(t[r],n)}function He(e,t,n,r){if(n===void 0)return e.textContent=``;let i=r||document.createTextNode(``);if(t.length){let r=!1;for(let a=t.length-1;a>=0;a--){let o=t[a];if(i!==o){let t=o.parentNode===e;!r&&!a?t?e.replaceChild(i,o):e.insertBefore(i,n):t&&o.remove()}else r=!0}}else e.insertBefore(i,n);return[i]}var Ue=J(`<span><span class=dot></span> `),We=J(`<span class="chip chip-plain">…`),Ge=J(`<span class="chip chip-plain"><span class=dot></span> `),Ke=J(`<header class=topbar><div class=topbar-inner><a class=wordmark href=#/>dreb</a><nav><a href=#/>fleet</a><a href=#/files>files</a><a href=#/memories>memories</a><a href=#/settings>settings</a></nav><span class=topbar-spacer>`),qe=J(`<button type=button class="btn btn-small">recovery failed — retry`),Je=J(`<span><output aria-live=polite><span class=dot></span> `),Ye=J(`<div class=modal-actions>`),Xe=J(`<div class=modal-backdrop role=presentation><div role=dialog><div class=modal-title></div><div class=modal-body>`),Ze=J(`<div class=toast-region>`),Qe=J(`<div><span></span><button type=button class="btn btn-small"style=margin-left:auto>✕`);function $e(e){let t={running:`●`,attention:`◆`,idle:`○`,error:`✕`},n={running:`running`,attention:`needs attention`,idle:`idle`,error:`error`};return(()=>{var r=Ue(),i=r.firstChild;return i.nextSibling,X(i,()=>t[e.status]),X(r,()=>e.label??n[e.status],null),j(()=>je(r,`chip chip-${e.status}`)),r})()}function et(e){let t=()=>e.store.auth();return W(K,{get when(){return t()},get fallback(){return We()},children:e=>(()=>{var t=Ge(),n=t.firstChild;return n.nextSibling,X(n,()=>e().mode===`local`?`⌂`:`⇄`),X(t,(()=>{var t=q(()=>e().mode===`local`);return()=>t()?`local · 127.0.0.1`:`remote · ${e().device??e().identity??`device`} via tailscale`})(),null),t})()})}function tt(e){let t=()=>Object.values(e.store.sessions).filter(e=>e.needsAttention).length+e.store.fleet().runtimes.filter(e=>e.needsAttention).length;return(()=>{var n=Ke(),r=n.firstChild,i=r.firstChild.nextSibling,a=i.firstChild;a.firstChild;var o=a.nextSibling,s=o.nextSibling,c=s.nextSibling;return i.nextSibling,X(a,()=>t()>0?` ◆`:``,null),X(r,W(nt,{get store(){return e.store}}),null),X(r,W(et,{get store(){return e.store}}),null),j(t=>{var n=e.active===`fleet`?`page`:void 0,r=e.active===`files`?`page`:void 0,i=e.active===`memories`?`page`:void 0,l=e.active===`settings`?`page`:void 0;return n!==t.e&&Y(a,`aria-current`,t.e=n),r!==t.t&&Y(o,`aria-current`,t.t=r),i!==t.a&&Y(s,`aria-current`,t.a=i),l!==t.o&&Y(c,`aria-current`,t.o=l),t},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}function nt(e){let t=()=>e.store.resyncing()?`resyncing`:e.store.connection().state,n=()=>{switch(t()){case`connected`:return{glyph:`●`,text:`live`,tone:`idle`};case`connecting`:return{glyph:`…`,text:`connecting`,tone:`attention`};case`retrying`:{let t=e.store.connection().retryDelayMs;return{glyph:`↻`,text:`retrying${t===void 0?``:` in ${Math.ceil(t/1e3)}s`}`,tone:`attention`}}case`resyncing`:return{glyph:`↻`,text:`recovering live state`,tone:`attention`};case`auth_failed`:return{glyph:`✕`,text:`live connection unauthorized`,tone:`error`};default:return{glyph:`✕`,text:`live connection disconnected`,tone:`error`}}};return(()=>{var t=Je(),r=t.firstChild,i=r.firstChild;return i.nextSibling,X(i,()=>n().glyph),X(r,()=>n().text,null),X(t,W(K,{get when(){return e.store.resyncError()},get children(){var t=qe();return t.$$click=()=>void e.store.retryResync(),j(()=>Y(t,`title`,e.store.resyncError())),t}}),null),j(i=>{var a=`connection-indicator ${e.class??``}`.trim(),o=`chip chip-${n().tone}`;return a!==i.e&&je(t,i.e=a),o!==i.t&&je(r,i.t=o),i},{e:void 0,t:void 0}),t})()}function rt(e){return(()=>{var t=Xe(),n=t.firstChild,r=n.firstChild,i=r.nextSibling;return t.$$keydown=t=>{t.key===`Escape`&&e.onDismiss()},t.$$click=t=>{t.target===t.currentTarget&&e.onDismiss()},X(r,()=>e.title),X(i,()=>e.children),X(n,W(K,{get when(){return e.actions},get children(){var t=Ye();return X(t,()=>e.actions),t}}),null),j(t=>{var r=`modal ${e.class??``}`,i=e.title;return r!==t.e&&je(n,t.e=r),i!==t.t&&Y(n,`aria-label`,t.t=i),t},{e:void 0,t:void 0}),t})()}function it(e){return(()=>{var t=Ze();return X(t,W(G,{get each(){return e.toasts},children:t=>(()=>{var n=Qe(),r=n.firstChild,i=r.nextSibling;return X(r,()=>t.text),i.$$click=()=>e.onDismiss(t.id),j(()=>je(n,`toast ${t.tone}`)),n})()})),t})()}function at(e){if(!e)return``;let t=typeof e==`number`?e:Date.parse(e);if(Number.isNaN(t))return``;let n=Math.floor((Date.now()-t)/1e3);if(n<60)return`just now`;let r=Math.floor(n/60);if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<30?`${a}d ago`:`${Math.floor(a/30)}mo ago`}function ot(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}Ae([`click`,`keydown`]);function st(e,t,n,r){if(typeof r==`object`&&r&&`error`in r)return String(r.error);let i=typeof r==`string`?r:String(r);return/^\s*<(?:!doctype|html)/i.test(i)?`${(t?.method??`GET`).toUpperCase()} ${e} → ${n} ${n===404?`Not Found`:`error`}`:i.trim()||`Request failed (${n})`}async function Z(e,t){let n=await fetch(e,t),r=(n.headers.get(`content-type`)??``).includes(`application/json`)?await n.json():await n.text();if(!n.ok){let i=st(e,t,n.status,r);throw Object.assign(Error(i),{status:n.status,body:r})}return r}function ct(e){return{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e)}}function lt(e,t){return{method:e,headers:{"content-type":`application/json`},body:JSON.stringify(t)}}function ut(e,t){return t?`${e}?cwd=${encodeURIComponent(t)}`:e}var dt=/^[0-9a-f]{64}$/;function ft(e,t,n,r){if(!dt.test(t)||e.length===0)return;let i=encodeURIComponent(e);return`${r?`/api/runtimes/${i}/subagents/${encodeURIComponent(r)}/images`:`/api/runtimes/${i}/images`}/${t}/${n}`}var Q={auth:e=>Z(`/api/auth`,{signal:e}),connectionDiagnostic:e=>Z(`/api/events/diagnostic`,ct(e)),pair:e=>Z(`/api/pair`,ct({pin:e})),pairingCode:()=>Z(`/api/pairing-code`),devices:()=>Z(`/api/devices`),unpair:e=>Z(`/api/devices/${encodeURIComponent(e)}`,{method:`DELETE`}),fleet:()=>Z(`/api/fleet`),sessions:()=>Z(`/api/sessions`),resync:(e,t,n)=>{let r=new URLSearchParams;return e&&r.set(`key`,e),t&&r.set(`agentId`,t),Z(`/api/resync${r.size?`?${r}`:``}`,{signal:n})},createRuntime:(e,t={})=>Z(`/api/runtimes`,ct({cwd:e,...t})),stopRuntime:e=>Z(`/api/runtimes/${e}`,{method:`DELETE`}),runtime:(e,t)=>Z(`/api/runtimes/${e}`,{signal:t}),hydrate:(e,t)=>Z(`/api/runtimes/${e}/hydrate`,{signal:t}),messages:(e,t)=>Z(`/api/runtimes/${e}/messages`,{signal:t}),pending:e=>Z(`/api/runtimes/${e}/pending`),dequeue:e=>Z(`/api/runtimes/${e}/dequeue`,{method:`POST`}),prompt:(e,t,n,r)=>Z(`/api/runtimes/${e}/prompt`,ct({message:t,mode:n,images:r})),abort:e=>Z(`/api/runtimes/${e}/abort`,{method:`POST`}),abortCompaction:e=>Z(`/api/runtimes/${e}/abort-compaction`,{method:`POST`}),abortRetry:e=>Z(`/api/runtimes/${e}/abort-retry`,{method:`POST`}),setModel:(e,t,n)=>Z(`/api/runtimes/${e}/model`,ct({provider:t,modelId:n})),models:e=>Z(`/api/runtimes/${e}/models`),setThinking:(e,t)=>Z(`/api/runtimes/${e}/thinking`,ct({level:t})),compact:(e,t)=>Z(`/api/runtimes/${e}/compact`,ct({instructions:t})),newSession:e=>Z(`/api/runtimes/${e}/new-session`,{method:`POST`}),reload:e=>Z(`/api/runtimes/${e}/reload`,{method:`POST`}),dream:(e,t)=>Z(`/api/runtimes/${e}/dream`,ct({args:t})),importJsonl:(e,t)=>Z(`/api/runtimes/${e}/import`,ct({inputPath:t})),rename:(e,t)=>Z(`/api/runtimes/${e}/name`,ct({name:t})),stats:(e,t)=>Z(`/api/runtimes/${e}/stats`,{signal:t}),performance:e=>Z(`/api/runtimes/${e}/performance`),resources:e=>Z(`/api/runtimes/${e}/resources`),commands:e=>Z(`/api/runtimes/${e}/commands`),branch:e=>Z(`/api/runtimes/${e}/branch`),forkMessages:e=>Z(`/api/runtimes/${e}/fork-messages`),fork:(e,t)=>Z(`/api/runtimes/${e}/fork`,ct({entryId:t})),tree:e=>Z(`/api/runtimes/${e}/tree`),navigateTree:(e,t)=>Z(`/api/runtimes/${e}/tree`,ct({targetId:t})),runtimeSessions:e=>Z(`/api/runtimes/${e}/sessions`),resume:(e,t)=>Z(`/api/runtimes/${e}/resume`,ct({sessionPath:t})),backgroundAgents:(e,t)=>Z(`/api/runtimes/${e}/background-agents`,{signal:t}),subagentMessages:(e,t,n)=>Z(`/api/runtimes/${e}/subagents/${encodeURIComponent(t)}/messages`,{signal:n}),extensionUiResponse:(e,t)=>Z(`/api/runtimes/${e}/extension-ui-response`,ct(t)),exportHtmlUrl:e=>`/api/runtimes/${e}/export-html`,deleteSession:e=>Z(`/api/sessions`,{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify({path:e})}),settings:e=>Z(ut(`/api/settings`,e)),saveSettings:(e,t)=>Z(ut(`/api/settings`,t),{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(e)}),settingsModels:e=>Z(ut(`/api/settings/models`,e)),agentTypes:e=>Z(e?`/api/settings/agent-types?cwd=${encodeURIComponent(e)}`:`/api/settings/agent-types`),version:()=>Z(`/api/version`),serverInfo:()=>Z(`/api/server/info`),restartServer:()=>Z(`/api/server/restart`,{method:`POST`}),dailyCost:()=>Z(`/api/daily-cost`),listFiles:e=>Z(`/api/files?path=${encodeURIComponent(e)}`),trustContextFolder:e=>Z(`/api/files/trust`,ct({path:e})),untrustContextFolder:e=>Z(`/api/files/untrust`,ct({path:e})),removeTrustedContextFolder:e=>Z(`/api/settings/remove-trusted`,ct({path:e})),places:()=>Z(`/api/files/places`),memoryScopes:()=>Z(`/api/memories/scopes`),memoryListing:e=>Z(`/api/memories/${encodeURIComponent(e)}`),memoryDocument:(e,t)=>Z(`/api/memories/${encodeURIComponent(e)}/documents/${encodeURIComponent(t)}`),saveMemoryDocument:(e,t,n,r)=>Z(`/api/memories/${encodeURIComponent(e)}/documents/${encodeURIComponent(t)}`,lt(`PUT`,{content:n,revision:r})),deleteMemoryEntry:(e,t,n,r)=>Z(`/api/memories/${encodeURIComponent(e)}/entries/${encodeURIComponent(t)}`,lt(`DELETE`,{revision:n,indexRevision:r})),downloadUrl:e=>`/api/files/download?path=${encodeURIComponent(e)}`,upload:async(e,t,n)=>{let r=await fetch(`/api/files/upload?dir=${encodeURIComponent(e)}&name=${encodeURIComponent(t.name)}&overwrite=${n}`,{method:`POST`,body:t}),i=await r.json();if(!r.ok)throw Object.assign(Error(String(i.error??r.statusText)),{status:r.status});return i},mkdir:(e,t)=>Z(`/api/files/mkdir`,ct({dir:e,name:t}))},pt=1,mt=6e4,ht=6e4,gt=1e4;function _t(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return Number.isSafeInteger(t.seq)&&t.seq>0&&typeof t.key==`string`&&!!t.event&&typeof t.event==`object`&&!Array.isArray(t.event)}function vt(e,t={}){let n=t.EventSource??EventSource,r=t.now??Date.now,i=t.random??Math.random,a=t.setTimeout??setTimeout,o=t.clearTimeout??clearTimeout,s=t.setInterval??setInterval,c=t.clearInterval??clearInterval,l=t.visibility??document,u=t.status??Q.auth,d=t.diagnostic??(e=>Q.connectionDiagnostic(e)),f=t.baseDelayMs??1e3,p=t.maxDelayMs??3e4,m=t.healthyResetMs??mt,h=t.watchdogMs??ht,g=t.statusTimeoutMs??gt,_,v,y,b,x,S,C=0,w=!1,T=0,E,D=r(),O,k,A,j=0,M=0,N=0,P={state:`connecting`,attempt:0};function F(){return l.visibilityState!==`hidden`}function I(t){let n=P.state;if(P={...t,...E===void 0?{}:{lastAppliedSeq:E}},e.onStatusChange?.(P),!k)return;let i=Math.max((r()-(A??r()))/6e4,1/60);Promise.resolve(d({connectionId:k,state:P.state,...n===P.state?{}:{previousState:n},attempt:T,...P.retryDelayMs===void 0?{}:{delayMs:P.retryDelayMs},visibility:F()?`visible`:`hidden`,...E===void 0?{}:{lastAppliedSeq:E},heartbeatAgeMs:Math.max(0,r()-D),eventCount:j,eventRatePerMinute:j/i,processingLagTotalMs:M,processingLagMaxMs:N})).catch(()=>{})}function L(){b!==void 0&&o(b),b=void 0}function R(){_&&(v&&_.removeEventListener(`heartbeat`,v),y&&_.removeEventListener(`connection`,y),v=void 0,y=void 0,_.onopen=null,_.onmessage=null,_.onerror=null,_.close(),_=void 0,O=void 0,k=void 0,A=void 0,j=0,M=0,N=0)}function z(){let e=Math.min(p,f*2**Math.max(0,T-1));return Math.min(p,Math.max(0,Math.round(e*(.75+i()*.5))))}function ee(){if(w||b!==void 0||P.state===`auth_failed`)return;T+=1;let e=z(),t=r()+e;I({state:`retrying`,attempt:T,retryDelayMs:e,retryAt:t}),b=a(()=>{b=void 0,ae()},e)}function te(t){w||(I({state:`resyncing`,attempt:T}),R(),e.onRecovery?.(t),t===`watchdog`&&!S?ie():ee())}function ne(){S&&=(S.timeout!==void 0&&o(S.timeout),S.controller.abort(),void 0)}function re(e,t){if(S||w)return;let n={controller:new AbortController,timeout:void 0};S=n;let r=!1,i=e=>{r||(r=!0,n.timeout!==void 0&&o(n.timeout),!w&&S===n&&e(),S===n&&(S=void 0))};n.timeout=a(()=>{n.controller.abort(),i(()=>t(Object.assign(Error(`dashboard authentication validation timed out`),{status:void 0})))},g);try{Promise.resolve(u(n.controller.signal)).then(()=>i(e),e=>i(()=>t(e)))}catch(e){i(()=>t(e))}}function ie(){re(()=>ee(),e=>{if(e?.status===401||e?.status===403){L(),I({state:`auth_failed`,attempt:T});return}ee()})}function ae(){if(w||_)return;L();let t=++C;I({state:`connecting`,attempt:T});let i=E===void 0?`/api/events`:`/api/events?lastEventId=${E}`,a=new n(i);_=a,D=r(),O=void 0;let o=()=>{w||t!==C||_!==a||(D=r(),T>0&&O!==void 0&&D-O>=m&&(T=0,I({state:`connected`,attempt:T})))};a.onopen=()=>{w||t!==C||_!==a||(O=r(),o(),I({state:`connected`,attempt:T}))},v=()=>o(),a.addEventListener(`heartbeat`,v),y=n=>{if(!(w||t!==C||_!==a))try{let t=JSON.parse(n.data);if(typeof t.connectionId!=`string`)throw Error(`missing connection id`);k=t.connectionId,A=r(),j=0,M=0,N=0,e.onConnectionMetadata?.(k),o(),I(P)}catch{te(`protocol`)}},a.addEventListener(`connection`,y),a.onmessage=n=>{if(w||t!==C||_!==a)return;D=r();let i;try{if(i=JSON.parse(n.data),!_t(i))throw Error(`invalid dashboard SSE envelope`);let e=i.event.type===`dashboard_resync`;if(!e&&E!==void 0&&i.seq<=E)return;if(!e&&E!==void 0&&i.seq!==E+1)throw Error(`dashboard SSE sequence gap`)}catch{te(`protocol`);return}let s=r();try{e.onEnvelope(i)}catch{te(`handler`);return}E=i.seq,j+=1;let c=Math.max(0,r()-s);M+=c,N=Math.max(N,c),o()},a.onerror=()=>{w||t!==C||_!==a||(I({state:`disconnected`,attempt:T}),R(),ie())}}let B=()=>{w||!F()||S||re(()=>{(!_||_.readyState!==pt||r()-D>h)&&te(`watchdog`)},e=>{if(e?.status===401||e?.status===403){L(),I({state:`auth_failed`,attempt:T}),R();return}te(`watchdog`)})};return l.addEventListener(`visibilitychange`,B),x=s(()=>{F()&&_&&r()-D>h&&te(`watchdog`)},Math.min(h,5e3)),ae(),()=>{w=!0,C+=1,ne(),L(),x!==void 0&&c(x),x=void 0,l.removeEventListener(`visibilitychange`,B),I({state:`disconnected`,attempt:T}),R()}}var yt=J(`<p class=settings-error>`),bt=J(`<div class=field><label for=mkdir-name>folder name</label><input id=mkdir-name type=text>`),xt=J(`<div class=screen-fill><main class=container><div class=files-head><div><nav class=crumbs aria-label=breadcrumb></nav><p class=scope-note>whole host filesystem — you can browse anywhere the dreb process can read</p></div><div class=head-actions><button type=button class=btn>+ new folder</button><button type=button class=btn>↑ upload here</button><button type=button class="btn btn-primary">▸ new session here</button></div></div><section class=context-trust aria-live=polite></section><div class=places><span class=label>places</span></div><table class="table file-table"><thead><tr><th>name</th><th class="meta cols">size</th><th class="meta cols">modified</th><th></th></tr></thead><tbody></tbody></table><section class=drop-zone aria-label="file upload drop zone">drop a file here to upload to </section><p class=upload-warning>Uploads land on the host machine and become visible to any agent working near this path. Existing files are never overwritten silently — you'll be asked first.</p><input type=file style=display:none>`),St=J(`<span class=sep>/`),Ct=J(`<a>`),wt=J(`<span>nested context trust: checking…`),Tt=J(`<div><strong>Nested context is untrusted.</strong><p>This folder's nested instructions are not loaded automatically.</p><button type=button class="btn btn-small btn-primary"></button><p class=context-trust-impact>Trusting this folder trusts it and all descendants.`),Et=J(`<div><strong></strong><p></p><button type=button class="btn btn-small btn-danger"></button><p class=context-trust-impact>This removes trust from <!> and all of its descendants.`),Dt=J(`<div class=context-trust-warning><strong>Global expert trust is ON.</strong> Nested instructions from any resolvable directory may load, including prompt-injection content. Folder trust cannot override this global setting. <a href=#/settings>Disable global expert trust in Settings.`),Ot=J(`<button type=button class=place-chip>`),kt=J(`<button type=button class=name><span class=icon>▸</span> <!>/`),At=J(`<a class="btn btn-small">↓ download`),jt=J(`<tr><td></td><td class="meta cols"></td><td class="meta cols"></td><td class=actions>`),Mt=J(`<span class=name><span class=icon>·</span> `),Nt=J(`<p>“<!>” already exists in <!>. Overwrite it?`),Pt=J(`<button type=button class="btn btn-small">cancel`),Ft=J(`<button type=button class="btn btn-small btn-danger">overwrite`),It=J(`<button type=button class="btn btn-small btn-primary">create`);function Lt(e){let t=e.split(`/`).filter(Boolean),n=[{label:`/`,path:`/`}],r=``;for(let e of t)r+=`/${e}`,n.push({label:e,path:r});return n}function Rt(e){let[t,n]=k(e.initialPath??``),[r,i]=k(),[a,o]=k(!1),[s,c]=k(),[l,u]=k(!1),[d,f]=k(``),[p,m]=k(!1),[h]=F(async()=>{let{places:e}=await Q.places();return e}),[g,{mutate:_,refetch:v}]=F(()=>t(),async e=>{if(i(void 0),!e){let{places:e}=await Q.places(),t=e.find(e=>e.label===`home`)?.path??`/`;return n(t),Q.listFiles(t)}return Q.listFiles(e)});async function y(e,n){try{await Q.upload(t(),e,n),c(void 0),await v()}catch(t){t?.status===409&&!n?c(e):i(t instanceof Error?t.message:String(t))}}async function b(){try{let n=await Q.createRuntime(t());e.store.upsertRuntime(n),await e.store.refreshDiskSessions(),e.store.navigate({screen:`session`,key:n.key})}catch(e){i(e instanceof Error?e.message:String(e))}}async function x(e){let n=g();if(n){i(void 0),m(!0);try{let r=e===`trust`?await Q.trustContextFolder(n.path):await Q.untrustContextFolder(n.path),i=g();t()===n.path&&i?.path===n.path&&_({...i,contextTrust:r.evaluation})}catch(e){i(e instanceof Error?e.message:String(e))}finally{m(!1)}}}let S;return(()=>{var m=xt(),_=m.firstChild,C=_.firstChild,w=C.firstChild,T=w.firstChild,E=w.nextSibling.firstChild,D=E.nextSibling,O=D.nextSibling,k=C.nextSibling,A=k.nextSibling;A.firstChild;var M=A.nextSibling,N=M.firstChild.nextSibling,P=M.nextSibling;P.firstChild;var F=P.nextSibling.nextSibling;X(m,W(tt,{get store(){return e.store},active:`files`}),_),X(T,W(G,{get each(){return Lt(t())},children:(e,t)=>[W(K,{get when(){return t()>1},get children(){return St()}}),(()=>{var t=Ct();return t.$$click=t=>{t.preventDefault(),n(e.path)},X(t,()=>e.label),j(()=>Y(t,`href`,`#/files/${encodeURIComponent(e.path)}`)),t})()]})),E.$$click=()=>u(!0),D.$$click=()=>S?.click(),O.$$click=b,X(k,W(K,{get when(){return g()?.contextTrust},get fallback(){return wt()},children:e=>W(K,{get when(){return e().state===`untrusted`},get fallback(){return W(K,{get when(){return e().state===`trusted-root`},get fallback(){return Dt()},get children(){var t=Et(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling,a=i.nextSibling,o=a.firstChild.nextSibling;return o.nextSibling,X(n,()=>e().grantingRoot===e().canonicalTarget?`Nested context trusted for this folder`:`Nested context inherited from a trusted root`),X(r,(()=>{var t=q(()=>e().grantingRoot===e().canonicalTarget);return()=>t()?`${e().grantingRoot} and all descendants are trusted.`:`${e().canonicalTarget} is covered by ${e().grantingRoot} and its descendants.`})()),i.$$click=()=>void x(`untrust`),X(i,(()=>{var t=q(()=>!!p());return()=>t()?`removing trust…`:`untrust ${e().grantingRoot}`})()),X(a,()=>e().grantingRoot,o),j(()=>i.disabled=p()),t}})},get children(){var e=Tt(),t=e.firstChild.nextSibling.nextSibling;return t.$$click=()=>void x(`trust`),X(t,()=>p()?`trusting…`:`trust this folder and descendants`),j(()=>t.disabled=p()),e}})})),X(A,W(G,{get each(){return h()??[]},children:e=>(()=>{var t=Ot();return t.$$click=()=>n(e.path),X(t,()=>e.label),t})()}),null),X(_,W(K,{get when(){return r()},get children(){var e=yt();return X(e,r),e}}),M),X(N,W(G,{get each(){return g()?.entries??[]},children:e=>(()=>{var t=jt(),r=t.firstChild,i=r.nextSibling,a=i.nextSibling,o=a.nextSibling;return X(r,W(K,{get when(){return e.type===`dir`},get fallback(){return(()=>{var t=Mt();return t.firstChild.nextSibling,X(t,()=>e.name,null),t})()},get children(){var t=kt(),r=t.firstChild.nextSibling.nextSibling;return r.nextSibling,t.$$click=()=>n(`${g().path}/${e.name}`.replace(`//`,`/`)),X(t,()=>e.name,r),t}})),X(i,(()=>{var t=q(()=>e.type===`dir`);return()=>t()?`—`:ot(e.size)})()),X(a,()=>at(e.modified)),X(o,W(K,{get when(){return e.type===`file`},get children(){var t=At();return j(()=>Y(t,`href`,Q.downloadUrl(`${g().path}/${e.name}`.replace(`//`,`/`)))),t}})),t})()})),P.addEventListener(`drop`,e=>{e.preventDefault(),o(!1);let t=e.dataTransfer?.files[0];t&&y(t,!1)}),P.addEventListener(`dragleave`,()=>o(!1)),P.addEventListener(`dragover`,e=>{e.preventDefault(),o(!0)}),X(P,t,null),F.addEventListener(`change`,e=>{let t=e.currentTarget.files?.[0];t&&y(t,!1),e.currentTarget.value=``});var I=S;return typeof I==`function`?Fe(I,F):S=F,X(m,W(K,{get when(){return s()},children:e=>W(rt,{title:`file exists`,onDismiss:()=>c(void 0),get actions(){return[(()=>{var e=Pt();return e.$$click=()=>c(void 0),e})(),(()=>{var t=Ft();return t.$$click=()=>y(e(),!0),t})()]},get children(){var n=Nt(),r=n.firstChild.nextSibling,i=r.nextSibling.nextSibling;return i.nextSibling,X(n,()=>e().name,r),X(n,t,i),n}})}),null),X(m,W(K,{get when(){return l()},get children(){return W(rt,{title:`new folder`,onDismiss:()=>u(!1),get actions(){return[(()=>{var e=Pt();return e.$$click=()=>u(!1),e})(),(()=>{var e=It();return e.$$click=async()=>{try{await Q.mkdir(t(),d().trim()),u(!1),f(``),await v()}catch(e){i(e instanceof Error?e.message:String(e)),u(!1)}},j(()=>e.disabled=!d().trim()),e})()]},get children(){var e=bt(),t=e.firstChild.nextSibling;return t.$$input=e=>f(e.currentTarget.value),j(()=>t.value=d()),e}})}}),null),j(()=>P.classList.toggle(`active`,!!a())),m})()}Ae([`click`,`input`]);var zt=19660800-768*1024;function Bt(e){let t=e?.method;if(t===`select`||t===`confirm`||t===`input`||t===`editor`)return{id:String(e.id),method:t,title:String(e.title??``),message:e.message,options:e.options,prefill:e.prefill,placeholder:e.placeholder};if(t===`ask`){let t=(Array.isArray(e.questions)?e.questions:[]).map(e=>({question:String(e?.question??``),title:typeof e?.title==`string`?e.title:void 0,options:Array.isArray(e?.options)?e.options.map(e=>String(e)):void 0,allowFreeText:typeof e?.allowFreeText==`boolean`?e.allowFreeText:void 0,multiSelect:typeof e?.multiSelect==`boolean`?e.multiSelect:void 0,multiline:typeof e?.multiline==`boolean`?e.multiline:void 0}));return{id:String(e.id),method:`ask`,title:String(e.title??`Question`),questions:t,timeout:typeof e.timeout==`number`?e.timeout:void 0,expiresAt:typeof e.expiresAt==`number`?e.expiresAt:void 0}}}function Vt(e){return{key:e,entries:[],streaming:!1,compacting:!1,statusEntries:[],tasks:[],backgroundAgents:{},uiRequests:[],toasts:[],widgets:{above:[],below:[]},needsAttention:!1,subagents:{}}}var Ht=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]),Ut=/^[0-9a-f]{64}$/;function Wt(e){if(typeof e==`string`)return{text:e,images:[]};if(!Array.isArray(e))return{text:``,images:[]};let t=[],n=[];for(let r of e){let e=r;typeof e?.text==`string`?t.push(e.text):e?.type===`image_reference`&&typeof e.id==`string`&&Ut.test(e.id)&&typeof e.mimeType==`string`&&Ht.has(e.mimeType)&&typeof e.size==`number`&&Number.isSafeInteger(e.size)&&e.size>0&&n.push({id:e.id,mimeType:e.mimeType,size:e.size})}return{text:t.join(`
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var l={context:void 0,registry:void 0,effects:void 0,done:!1,getContextId(){return u(this.context.count)},getNextContextId(){return u(this.context.count++)}};function u(e){let t=String(e),n=t.length-1;return l.context.id+(n?String.fromCharCode(96+n):``)+t}function d(e){l.context=e}var f=(e,t)=>e===t,p=Symbol(`solid-proxy`),m=Symbol(`solid-track`),h={equals:f},g=null,_=de,v=1,y=2,b={owned:null,cleanups:null,context:null,owner:null},x={},S=null,C=null,w=null,T=null,E=null,D=0;function O(e,t){let n=w,r=S,i=e.length===0,a=t===void 0?r:t,o=i?b:{owned:null,cleanups:null,context:a?a.context:null,owner:a},s=i?e:()=>e(()=>L(()=>he(o)));S=o,w=null;try{return U(s,!0)}finally{w=n,S=r}}function k(e,t){t=t?Object.assign({},h,t):h;let n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0};return[oe.bind(n),e=>(typeof e==`function`&&(e=C&&C.running&&C.sources.has(n)?e(n.tValue):e(n.value)),V(n,e))]}function A(e,t,n){se(ce(e,t,!0,v))}function j(e,t,n){se(ce(e,t,!1,v))}function M(e,t,n){_=fe;let r=ce(e,t,!1,v),i=B&&ie(B);i&&(r.suspense=i),(!n||!n.render)&&(r.user=!0),E?E.push(r):se(r)}function N(e,t,n){n=n?Object.assign({},h,n):h;let r=ce(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,se(r),oe.bind(r)}function P(e){return e&&typeof e==`object`&&`then`in e}function F(e,t,n){let r,i,a;typeof t==`function`?(r=e,i=t,a=n||{}):(r=!0,i=e,a=t||{});let o=null,s=x,c=null,u=!1,d=!1,f=`initialValue`in a,p=typeof r==`function`&&N(r),m=new Set,[h,g]=(a.storage||k)(a.initialValue),[_,v]=k(void 0),[y,b]=k(void 0,{equals:!1}),[T,E]=k(f?`ready`:`unresolved`);S&&z(()=>{for(let e of m.keys())e.decrement();m.clear(),C&&o&&C.promises.delete(o),o=null}),l.context&&(c=l.getNextContextId(),a.ssrLoadFrom===`initial`?s=a.initialValue:l.load&&l.has(c)&&(s=l.load(c)));function D(e,t,n,r){return o===e&&(o=null,r!==void 0&&(f=!0),(e===s||t===s)&&a.onHydrated&&queueMicrotask(()=>a.onHydrated(r,{value:t})),s=x,C&&e&&u?(C.promises.delete(e),u=!1,U(()=>{C.running=!0,O(t,n)},!1)):O(t,n)),t}function O(e,t){U(()=>{t===void 0&&g(()=>e),E(t===void 0?f?`ready`:`unresolved`:`errored`),v(t);for(let e of m.keys())e.decrement();m.clear()},!1)}function j(){let e=B&&ie(B),t=h(),n=_();if(n!==void 0&&!o)throw n;return w&&!w.user&&e&&A(()=>{y(),o&&(e.resolved&&C&&u?C.promises.add(o):m.has(e)||(e.increment(),m.add(e)))}),t}function M(e=!0){if(e!==!1&&d)return;d=!1;let t=p?p():r;if(u=C&&C.running,t==null||t===!1){D(o,L(h));return}C&&o&&C.promises.delete(o);let n,a=s===x?L(()=>{try{return i(t,{value:h(),refetching:e})}catch(e){n=e}}):s;if(n!==void 0){D(o,void 0,_e(n),t);return}else if(!P(a))return D(o,a,void 0,t),a;return o=a,`v`in a?(a.s===1?D(o,a.v,void 0,t):D(o,void 0,_e(a.v),t),a):(d=!0,queueMicrotask(()=>d=!1),U(()=>{E(f?`refreshing`:`pending`),b()},!1),a.then(e=>D(a,e,void 0,t),e=>D(a,void 0,_e(e),t)))}Object.defineProperties(j,{state:{get:()=>T()},error:{get:()=>_()},loading:{get(){let e=T();return e===`pending`||e===`refreshing`}},latest:{get(){if(!f)return j();let e=_();if(e&&!o)throw e;return h()}}});let F=S;return p?A(()=>(F=S,M(!1))):M(!1),[j,{refetch:e=>te(F,()=>M(e)),mutate:g}]}function I(e){return U(e,!1)}function L(e){if(w===null)return e();let t=w;w=null;try{return e()}finally{w=t}}function R(e){M(()=>L(e))}function z(e){return S===null||(S.cleanups===null?S.cleanups=[e]:S.cleanups.push(e)),e}function ee(){return w}function te(e,t){let n=S,r=w;S=e,w=null;try{return U(t,!0)}catch(e){ye(e)}finally{S=n,w=r}}var[ne,re]=k(!1);function ie(e){let t;return S&&S.context&&(t=S.context[e.id])!==void 0?t:e.defaultValue}function ae(e){let t=N(e),n=N(()=>be(t()));return n.toArray=()=>{let e=n();return Array.isArray(e)?e:e==null?[]:[e]},n}var B;function oe(){let e=C&&C.running;if(this.sources&&(e?this.tState:this.state))if((e?this.tState:this.state)===v)se(this);else{let e=T;T=null,U(()=>pe(this),!1),T=e}if(w){let e=this.observers;if(!e||e[e.length-1]!==w){let t=e?e.length:0;w.sources?(w.sources.push(this),w.sourceSlots.push(t)):(w.sources=[this],w.sourceSlots=[t]),e?(e.push(w),this.observerSlots.push(w.sources.length-1)):(this.observers=[w],this.observerSlots=[w.sources.length-1])}}return e&&C.sources.has(this)?this.tValue:this.value}function V(e,t,n){let r=C&&C.running&&C.sources.has(e)?e.tValue:e.value;if(!e.comparator||!e.comparator(r,t)){if(C){let r=C.running;(r||!n&&C.sources.has(e))&&(C.sources.add(e),e.tValue=t),r||(e.value=t)}else e.value=t;e.observers&&e.observers.length&&U(()=>{for(let t=0;t<e.observers.length;t+=1){let n=e.observers[t],r=C&&C.running;r&&C.disposed.has(n)||((r?!n.tState:!n.state)&&(n.pure?T.push(n):E.push(n),n.observers&&me(n)),r?n.tState=v:n.state=v)}if(T.length>1e6)throw T=[],Error()},!1)}return t}function se(e){if(!e.fn)return;he(e);let t=D;H(e,C&&C.running&&C.sources.has(e)?e.tValue:e.value,t),C&&!C.running&&C.sources.has(e)&&queueMicrotask(()=>{U(()=>{C&&(C.running=!0),w=S=e,H(e,e.tValue,t),w=S=null},!1)})}function H(e,t,n){let r,i=S,a=w;w=S=e;try{r=e.fn(t)}catch(t){return e.pure&&(C&&C.running?(e.tState=v,e.tOwned&&e.tOwned.forEach(he),e.tOwned=void 0):(e.state=v,e.owned&&e.owned.forEach(he),e.owned=null)),e.updatedAt=n+1,ye(t)}finally{w=a,S=i}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&`observers`in e?V(e,r,!0):C&&C.running&&e.pure?(C.sources.has(e)||(e.value=r),C.sources.add(e),e.tValue=r):e.value=r,e.updatedAt=n)}function ce(e,t,n,r=v,i){let a={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:S,context:S?S.context:null,pure:n};return C&&C.running&&(a.state=0,a.tState=r),S===null||S!==b&&(C&&C.running&&S.pure?S.tOwned?S.tOwned.push(a):S.tOwned=[a]:S.owned?S.owned.push(a):S.owned=[a]),a}function le(e){let t=C&&C.running;if((t?e.tState:e.state)===0)return;if((t?e.tState:e.state)===y)return pe(e);if(e.suspense&&L(e.suspense.inFallback))return e.suspense.effects.push(e);let n=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<D);){if(t&&C.disposed.has(e))return;(t?e.tState:e.state)&&n.push(e)}for(let r=n.length-1;r>=0;r--){if(e=n[r],t){let t=e,i=n[r+1];for(;(t=t.owner)&&t!==i;)if(C.disposed.has(t))return}if((t?e.tState:e.state)===v)se(e);else if((t?e.tState:e.state)===y){let t=T;T=null,U(()=>pe(e,n[0]),!1),T=t}}}function U(e,t){if(T)return e();let n=!1;t||(T=[]),E?n=!0:E=[],D++;try{let t=e();return ue(n),t}catch(e){n||(E=null),T=null,ye(e)}}function ue(e){if(T&&=(de(T),null),e)return;let t;if(C){if(!C.promises.size&&!C.queue.size){let e=C.sources,n=C.disposed;E.push.apply(E,C.effects),t=C.resolve;for(let e of E)`tState`in e&&(e.state=e.tState),delete e.tState;C=null,U(()=>{for(let e of n)he(e);for(let t of e){if(t.value=t.tValue,t.owned)for(let e=0,n=t.owned.length;e<n;e++)he(t.owned[e]);t.tOwned&&(t.owned=t.tOwned),delete t.tValue,delete t.tOwned,t.tState=0}re(!1)},!1)}else if(C.running){C.running=!1,C.effects.push.apply(C.effects,E),E=null,re(!0);return}}let n=E;E=null,n.length&&U(()=>_(n),!1),t&&t()}function de(e){for(let t=0;t<e.length;t++)le(e[t])}function fe(e){let t,n=0;for(t=0;t<e.length;t++){let r=e[t];r.user?e[n++]=r:le(r)}if(l.context){if(l.count){l.effects||=[],l.effects.push(...e.slice(0,n));return}d()}for(l.effects&&(l.done||!l.count)&&(e=[...l.effects,...e],n+=l.effects.length,delete l.effects),t=0;t<n;t++)le(e[t])}function pe(e,t){let n=C&&C.running;n?e.tState=0:e.state=0;for(let r=0;r<e.sources.length;r+=1){let i=e.sources[r];if(i.sources){let e=n?i.tState:i.state;e===v?i!==t&&(!i.updatedAt||i.updatedAt<D)&&le(i):e===y&&pe(i,t)}}}function me(e){let t=C&&C.running;for(let n=0;n<e.observers.length;n+=1){let r=e.observers[n];(t?!r.tState:!r.state)&&(t?r.tState=y:r.state=y,r.pure?T.push(r):E.push(r),r.observers&&me(r))}}function he(e){let t;if(e.sources)for(;e.sources.length;){let t=e.sources.pop(),n=e.sourceSlots.pop(),r=t.observers;if(r&&r.length){let e=r.pop(),i=t.observerSlots.pop();n<r.length&&(e.sourceSlots[i]=n,r[n]=e,t.observerSlots[n]=i)}}if(e.tOwned){for(t=e.tOwned.length-1;t>=0;t--)he(e.tOwned[t]);delete e.tOwned}if(C&&C.running&&e.pure)ge(e,!0);else if(e.owned){for(t=e.owned.length-1;t>=0;t--)he(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}C&&C.running?e.tState=0:e.state=0}function ge(e,t){if(t||(e.tState=0,C.disposed.add(e)),e.owned)for(let t=0;t<e.owned.length;t++)ge(e.owned[t])}function _e(e){return e instanceof Error?e:Error(typeof e==`string`?e:`Unknown error`,{cause:e})}function ve(e,t,n){try{for(let n of t)n(e)}catch(e){ye(e,n&&n.owner||null)}}function ye(e,t=S){let n=g&&t&&t.context&&t.context[g],r=_e(e);if(!n)throw r;E?E.push({fn(){ve(r,n,t)},state:v}):ve(r,n,t)}function be(e){if(typeof e==`function`&&!e.length)return be(e());if(Array.isArray(e)){let t=[];for(let n=0;n<e.length;n++){let r=be(e[n]);if(Array.isArray(r))if(r.length<32768)t.push.apply(t,r);else for(let e=0;e<r.length;e++)t.push(r[e]);else t.push(r)}return t}return e}var xe=Symbol(`fallback`);function Se(e){for(let t=0;t<e.length;t++)e[t]()}function Ce(e,t,n={}){let r=[],i=[],a=[],o=0,s=t.length>1?[]:null;return z(()=>Se(a)),()=>{let c=e()||[],l=c.length,u,d;return c[m],L(()=>{let e,t,p,m,h,g,_,v,y;if(l===0)o!==0&&(Se(a),a=[],r=[],i=[],o=0,s&&=[]),n.fallback&&(r=[xe],i[0]=O(e=>(a[0]=e,n.fallback())),o=1);else if(o===0){for(i=Array(l),d=0;d<l;d++)r[d]=c[d],i[d]=O(f);o=l}else{for(p=Array(l),m=Array(l),s&&(h=Array(l)),g=0,_=Math.min(o,l);g<_&&r[g]===c[g];g++);for(_=o-1,v=l-1;_>=g&&v>=g&&r[_]===c[v];_--,v--)p[v]=i[_],m[v]=a[_],s&&(h[v]=s[_]);for(e=new Map,t=Array(v+1),d=v;d>=g;d--)y=c[d],u=e.get(y),t[d]=u===void 0?-1:u,e.set(y,d);for(u=g;u<=_;u++)y=r[u],d=e.get(y),d!==void 0&&d!==-1?(p[d]=i[u],m[d]=a[u],s&&(h[d]=s[u]),d=t[d],e.set(y,d)):a[u]();for(d=g;d<l;d++)d in p?(i[d]=p[d],a[d]=m[d],s&&(s[d]=h[d],s[d](d))):i[d]=O(f);i=i.slice(0,o=l),r=c.slice(0)}return i});function f(e){if(a[d]=e,s){let[e,n]=k(d);return s[d]=n,t(c[d],e)}return t(c[d])}}}function W(e,t){return L(()=>e(t||{}))}var we=e=>`Stale read from <${e}>.`;function G(e){let t=`fallback`in e&&{fallback:()=>e.fallback};return N(Ce(()=>e.each,e.children,t||void 0))}function K(e){let t=e.keyed,n=N(()=>e.when,void 0,void 0),r=t?n:N(n,void 0,{equals:(e,t)=>!e==!t});return N(()=>{let i=r();if(i){let a=e.children;return typeof a==`function`&&a.length>0?L(()=>a(t?i:()=>{if(!L(r))throw we(`Show`);return n()})):a}return e.fallback},void 0,void 0)}function Te(e){let t=ae(()=>e.children),n=N(()=>{let e=t(),n=Array.isArray(e)?e:[e],r=()=>void 0;for(let e=0;e<n.length;e++){let t=e,i=n[e],a=r,o=N(()=>a()?void 0:i.when,void 0,void 0),s=i.keyed?o:N(o,void 0,{equals:(e,t)=>!e==!t});r=()=>a()||(s()?[t,o,i]:void 0)}return r});return N(()=>{let t=n()();if(!t)return e.fallback;let[r,i,a]=t,o=a.children;return typeof o==`function`&&o.length>0?L(()=>o(a.keyed?i():()=>{if(L(n)()?.[0]!==r)throw we(`Match`);return i()})):o},void 0,void 0)}function Ee(e){return e}var q=e=>N(()=>e());function De(e,t,n){let r=n.length,i=t.length,a=r,o=0,s=0,c=t[i-1].nextSibling,l=null;for(;o<i||s<a;){if(t[o]===n[s]){o++,s++;continue}for(;t[i-1]===n[a-1];)i--,a--;if(i===o){let t=a<r?s?n[s-1].nextSibling:n[a-s]:c;for(;s<a;)e.insertBefore(n[s++],t)}else if(a===s)for(;o<i;)(!l||!l.has(t[o]))&&t[o].remove(),o++;else if(t[o]===n[a-1]&&n[s]===t[i-1]){let r=t[--i].nextSibling;e.insertBefore(n[s++],t[o++].nextSibling),e.insertBefore(n[--a],r),t[i]=n[a]}else{if(!l){l=new Map;let e=s;for(;e<a;)l.set(n[e],e++)}let r=l.get(t[o]);if(r!=null)if(s<r&&r<a){let c=o,u=1,d;for(;++c<i&&c<a&&!((d=l.get(t[c]))==null||d!==r+u);)u++;if(u>r-s){let i=t[o];for(;s<r;)e.insertBefore(n[s++],i)}else e.replaceChild(n[s++],t[o++])}else o++;else t[o++].remove()}}}var Oe=`_$DX_DELEGATE`;function ke(e,t,n,r={}){let i;return O(r=>{i=r,t===document?e():X(t,e(),t.firstChild?null:void 0,n)},r.owner),()=>{i(),t.textContent=``}}function J(e,t,n,r){let i,a=()=>{let t=r?document.createElementNS(`http://www.w3.org/1998/Math/MathML`,`template`):document.createElement(`template`);return t.innerHTML=e,n?t.content.firstChild.firstChild:r?t.firstChild:t.content.firstChild},o=t?()=>L(()=>document.importNode(i||=a(),!0)):()=>(i||=a()).cloneNode(!0);return o.cloneNode=o,o}function Ae(e,t=window.document){let n=t[Oe]||(t[Oe]=new Set);for(let r=0,i=e.length;r<i;r++){let i=e[r];n.has(i)||(n.add(i),t.addEventListener(i,Re))}}function Y(e,t,n){Ie(e)||(n==null?e.removeAttribute(t):e.setAttribute(t,n))}function je(e,t){Ie(e)||(t==null?e.removeAttribute(`class`):e.className=t)}function Me(e,t,n,r){if(r)Array.isArray(n)?(e[`$$${t}`]=n[0],e[`$$${t}Data`]=n[1]):e[`$$${t}`]=n;else if(Array.isArray(n)){let r=n[0];e.addEventListener(t,n[0]=t=>r.call(e,n[1],t))}else e.addEventListener(t,n,typeof n!=`function`&&n)}function Ne(e,t,n={}){let r=Object.keys(t||{}),i=Object.keys(n),a,o;for(a=0,o=i.length;a<o;a++){let r=i[a];!r||r===`undefined`||t[r]||(Le(e,r,!1),delete n[r])}for(a=0,o=r.length;a<o;a++){let i=r[a],o=!!t[i];!i||i===`undefined`||n[i]===o||!o||(Le(e,i,!0),n[i]=o)}return n}function Pe(e,t,n){n==null?e.style.removeProperty(t):e.style.setProperty(t,n)}function Fe(e,t,n){return L(()=>e(t,n))}function X(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!=`function`)return ze(e,t,r,n);j(r=>ze(e,t(),r,n),r)}function Ie(e){return!!l.context&&!l.done&&(!e||e.isConnected)}function Le(e,t,n){let r=t.trim().split(/\s+/);for(let t=0,i=r.length;t<i;t++)e.classList.toggle(r[t],n)}function Re(e){if(l.registry&&l.events&&l.events.find(([t,n])=>n===e))return;let t=e.target,n=`$$${e.type}`,r=e.target,i=e.currentTarget,a=t=>Object.defineProperty(e,"target",{configurable:!0,value:t}),o=()=>{let r=t[n];if(r&&!t.disabled){let i=t[`${n}Data`];if(i===void 0?r.call(t,e):r.call(t,i,e),e.cancelBubble)return}return t.host&&typeof t.host!=`string`&&!t.host._$host&&t.contains(e.target)&&a(t.host),!0},s=()=>{for(;o()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),l.registry&&!l.done&&(l.done=_$HY.done=!0),e.composedPath){let n=e.composedPath();a(n[0]);for(let e=0;e<n.length-2&&(t=n[e],o());e++){if(t._$host){t=t._$host,s();break}if(t.parentNode===i)break}}else s();a(r)}function ze(e,t,n,r,i){let a=Ie(e);if(a){!n&&(n=[...e.childNodes]);let t=[];for(let e=0;e<n.length;e++){let r=n[e];r.nodeType===8&&r.data.slice(0,2)===`!$`?r.remove():t.push(r)}n=t}for(;typeof n==`function`;)n=n();if(t===n)return n;let o=typeof t,s=r!==void 0;if(e=s&&n[0]&&n[0].parentNode||e,o===`string`||o===`number`){if(a||o===`number`&&(t=t.toString(),t===n))return n;if(s){let i=n[0];i&&i.nodeType===3?i.data!==t&&(i.data=t):i=document.createTextNode(t),n=He(e,n,r,i)}else n=n!==``&&typeof n==`string`?e.firstChild.data=t:e.textContent=t}else if(t==null||o===`boolean`){if(a)return n;n=He(e,n,r)}else if(o===`function`)return j(()=>{let i=t();for(;typeof i==`function`;)i=i();n=ze(e,i,n,r)}),()=>n;else if(Array.isArray(t)){let o=[],c=n&&Array.isArray(n);if(Be(o,t,n,i))return j(()=>n=ze(e,o,n,r,!0)),()=>n;if(a){if(!o.length)return n;if(r===void 0)return n=[...e.childNodes];let t=o[0];if(t.parentNode!==e)return n;let i=[t];for(;(t=t.nextSibling)!==r;)i.push(t);return n=i}if(o.length===0){if(n=He(e,n,r),s)return n}else c?n.length===0?Ve(e,o,r):De(e,n,o):(n&&He(e),Ve(e,o));n=o}else if(t.nodeType){if(a&&t.parentNode)return n=s?[t]:t;if(Array.isArray(n)){if(s)return n=He(e,n,r,t);He(e,n,null,t)}else n==null||n===``||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}return n}function Be(e,t,n,r){let i=!1;for(let a=0,o=t.length;a<o;a++){let o=t[a],s=n&&n[e.length],c;if(!(o==null||o===!0||o===!1))if((c=typeof o)==`object`&&o.nodeType)e.push(o);else if(Array.isArray(o))i=Be(e,o,s)||i;else if(c===`function`)if(r){for(;typeof o==`function`;)o=o();i=Be(e,Array.isArray(o)?o:[o],Array.isArray(s)?s:[s])||i}else e.push(o),i=!0;else{let t=String(o);s&&s.nodeType===3&&s.data===t?e.push(s):e.push(document.createTextNode(t))}}return i}function Ve(e,t,n=null){for(let r=0,i=t.length;r<i;r++)e.insertBefore(t[r],n)}function He(e,t,n,r){if(n===void 0)return e.textContent=``;let i=r||document.createTextNode(``);if(t.length){let r=!1;for(let a=t.length-1;a>=0;a--){let o=t[a];if(i!==o){let t=o.parentNode===e;!r&&!a?t?e.replaceChild(i,o):e.insertBefore(i,n):t&&o.remove()}else r=!0}}else e.insertBefore(i,n);return[i]}var Ue=J(`<span><span class=dot></span> `),We=J(`<span class="chip chip-plain">…`),Ge=J(`<span class="chip chip-plain mode-badge"><span class=dot></span><span class=mode-badge-text>`),Ke=J(`<header class=topbar><div class=topbar-inner><a class=wordmark href=#/>dreb</a><nav><a href=#/>fleet</a><a href=#/files>files</a><a href=#/memories>memories</a><a href=#/settings>settings</a></nav><span class=topbar-spacer>`),qe=J(`<button type=button class="btn btn-small">recovery failed — retry`),Je=J(`<span><output aria-live=polite><span class=dot></span> `),Ye=J(`<div class=modal-actions>`),Xe=J(`<div class=modal-backdrop role=presentation><div role=dialog><div class=modal-title></div><div class=modal-body>`),Ze=J(`<div class=toast-region>`),Qe=J(`<div><span></span><button type=button class="btn btn-small"style=margin-left:auto>✕`);function $e(e){let t={running:`●`,attention:`◆`,idle:`○`,error:`✕`},n={running:`running`,attention:`needs attention`,idle:`idle`,error:`error`};return(()=>{var r=Ue(),i=r.firstChild;return i.nextSibling,X(i,()=>t[e.status]),X(r,()=>e.label??n[e.status],null),j(()=>je(r,`chip chip-${e.status}`)),r})()}function et(e){let t=()=>e.store.auth();return W(K,{get when(){return t()},get fallback(){return We()},children:e=>{let t=()=>e().mode===`local`?`local · 127.0.0.1`:`remote · ${e().device??e().identity??`device`} via tailscale`;return(()=>{var n=Ge(),r=n.firstChild,i=r.nextSibling;return X(r,()=>e().mode===`local`?`⌂`:`⇄`),X(i,t),j(()=>Y(n,`title`,t())),n})()}})}function tt(e){let t=()=>Object.values(e.store.sessions).filter(e=>e.needsAttention).length+e.store.fleet().runtimes.filter(e=>e.needsAttention).length;return(()=>{var n=Ke(),r=n.firstChild,i=r.firstChild.nextSibling,a=i.firstChild;a.firstChild;var o=a.nextSibling,s=o.nextSibling,c=s.nextSibling;return i.nextSibling,X(a,()=>t()>0?` ◆`:``,null),X(r,W(nt,{get store(){return e.store}}),null),X(r,W(et,{get store(){return e.store}}),null),j(t=>{var n=e.active===`fleet`?`page`:void 0,r=e.active===`files`?`page`:void 0,i=e.active===`memories`?`page`:void 0,l=e.active===`settings`?`page`:void 0;return n!==t.e&&Y(a,`aria-current`,t.e=n),r!==t.t&&Y(o,`aria-current`,t.t=r),i!==t.a&&Y(s,`aria-current`,t.a=i),l!==t.o&&Y(c,`aria-current`,t.o=l),t},{e:void 0,t:void 0,a:void 0,o:void 0}),n})()}function nt(e){let t=()=>e.store.resyncing()?`resyncing`:e.store.connection().state,n=()=>{switch(t()){case`connected`:return{glyph:`●`,text:`live`,tone:`idle`};case`connecting`:return{glyph:`…`,text:`connecting`,tone:`attention`};case`retrying`:{let t=e.store.connection().retryDelayMs;return{glyph:`↻`,text:`retrying${t===void 0?``:` in ${Math.ceil(t/1e3)}s`}`,tone:`attention`}}case`resyncing`:return{glyph:`↻`,text:`recovering live state`,tone:`attention`};case`auth_failed`:return{glyph:`✕`,text:`live connection unauthorized`,tone:`error`};default:return{glyph:`✕`,text:`live connection disconnected`,tone:`error`}}};return(()=>{var t=Je(),r=t.firstChild,i=r.firstChild;return i.nextSibling,X(i,()=>n().glyph),X(r,()=>n().text,null),X(t,W(K,{get when(){return e.store.resyncError()},get children(){var t=qe();return t.$$click=()=>void e.store.retryResync(),j(()=>Y(t,`title`,e.store.resyncError())),t}}),null),j(i=>{var a=`connection-indicator ${e.class??``}`.trim(),o=`chip chip-${n().tone}`;return a!==i.e&&je(t,i.e=a),o!==i.t&&je(r,i.t=o),i},{e:void 0,t:void 0}),t})()}function rt(e){return(()=>{var t=Xe(),n=t.firstChild,r=n.firstChild,i=r.nextSibling;return t.$$keydown=t=>{t.key===`Escape`&&e.onDismiss()},t.$$click=t=>{t.target===t.currentTarget&&e.onDismiss()},X(r,()=>e.title),X(i,()=>e.children),X(n,W(K,{get when(){return e.actions},get children(){var t=Ye();return X(t,()=>e.actions),t}}),null),j(t=>{var r=`modal ${e.class??``}`,i=e.title;return r!==t.e&&je(n,t.e=r),i!==t.t&&Y(n,`aria-label`,t.t=i),t},{e:void 0,t:void 0}),t})()}function it(e){return(()=>{var t=Ze();return X(t,W(G,{get each(){return e.toasts},children:t=>(()=>{var n=Qe(),r=n.firstChild,i=r.nextSibling;return X(r,()=>t.text),i.$$click=()=>e.onDismiss(t.id),j(()=>je(n,`toast ${t.tone}`)),n})()})),t})()}function at(e){if(!e)return``;let t=typeof e==`number`?e:Date.parse(e);if(Number.isNaN(t))return``;let n=Math.floor((Date.now()-t)/1e3);if(n<60)return`just now`;let r=Math.floor(n/60);if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<30?`${a}d ago`:`${Math.floor(a/30)}mo ago`}function ot(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}Ae([`click`,`keydown`]);function st(e,t,n,r){if(typeof r==`object`&&r&&`error`in r)return String(r.error);let i=typeof r==`string`?r:String(r);return/^\s*<(?:!doctype|html)/i.test(i)?`${(t?.method??`GET`).toUpperCase()} ${e} → ${n} ${n===404?`Not Found`:`error`}`:i.trim()||`Request failed (${n})`}async function Z(e,t){let n=await fetch(e,t),r=(n.headers.get(`content-type`)??``).includes(`application/json`)?await n.json():await n.text();if(!n.ok){let i=st(e,t,n.status,r);throw Object.assign(Error(i),{status:n.status,body:r})}return r}function ct(e){return{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e)}}function lt(e,t){return{method:e,headers:{"content-type":`application/json`},body:JSON.stringify(t)}}function ut(e,t){return t?`${e}?cwd=${encodeURIComponent(t)}`:e}var dt=/^[0-9a-f]{64}$/;function ft(e,t,n,r){if(!dt.test(t)||e.length===0)return;let i=encodeURIComponent(e);return`${r?`/api/runtimes/${i}/subagents/${encodeURIComponent(r)}/images`:`/api/runtimes/${i}/images`}/${t}/${n}`}var Q={auth:e=>Z(`/api/auth`,{signal:e}),connectionDiagnostic:e=>Z(`/api/events/diagnostic`,ct(e)),pair:e=>Z(`/api/pair`,ct({pin:e})),pairingCode:()=>Z(`/api/pairing-code`),pairingSettings:()=>Z(`/api/pairing-settings`),savePairingSettings:e=>Z(`/api/pairing-settings`,lt(`PUT`,{pairingTtlDays:e})),devices:()=>Z(`/api/devices`),unpair:e=>Z(`/api/devices/${encodeURIComponent(e)}`,{method:`DELETE`}),fleet:()=>Z(`/api/fleet`),sessions:()=>Z(`/api/sessions`),resync:(e,t,n)=>{let r=new URLSearchParams;return e&&r.set(`key`,e),t&&r.set(`agentId`,t),Z(`/api/resync${r.size?`?${r}`:``}`,{signal:n})},createRuntime:(e,t={})=>Z(`/api/runtimes`,ct({cwd:e,...t})),stopRuntime:e=>Z(`/api/runtimes/${e}`,{method:`DELETE`}),runtime:(e,t)=>Z(`/api/runtimes/${e}`,{signal:t}),hydrate:(e,t)=>Z(`/api/runtimes/${e}/hydrate`,{signal:t}),messages:(e,t)=>Z(`/api/runtimes/${e}/messages`,{signal:t}),pending:e=>Z(`/api/runtimes/${e}/pending`),dequeue:e=>Z(`/api/runtimes/${e}/dequeue`,{method:`POST`}),prompt:(e,t,n,r)=>Z(`/api/runtimes/${e}/prompt`,ct({message:t,mode:n,images:r})),abort:e=>Z(`/api/runtimes/${e}/abort`,{method:`POST`}),abortCompaction:e=>Z(`/api/runtimes/${e}/abort-compaction`,{method:`POST`}),abortRetry:e=>Z(`/api/runtimes/${e}/abort-retry`,{method:`POST`}),setModel:(e,t,n)=>Z(`/api/runtimes/${e}/model`,ct({provider:t,modelId:n})),models:e=>Z(`/api/runtimes/${e}/models`),setThinking:(e,t)=>Z(`/api/runtimes/${e}/thinking`,ct({level:t})),compact:(e,t)=>Z(`/api/runtimes/${e}/compact`,ct({instructions:t})),newSession:e=>Z(`/api/runtimes/${e}/new-session`,{method:`POST`}),reload:e=>Z(`/api/runtimes/${e}/reload`,{method:`POST`}),dream:(e,t)=>Z(`/api/runtimes/${e}/dream`,ct({args:t})),importJsonl:(e,t)=>Z(`/api/runtimes/${e}/import`,ct({inputPath:t})),rename:(e,t)=>Z(`/api/runtimes/${e}/name`,ct({name:t})),stats:(e,t)=>Z(`/api/runtimes/${e}/stats`,{signal:t}),performance:e=>Z(`/api/runtimes/${e}/performance`),resources:e=>Z(`/api/runtimes/${e}/resources`),commands:e=>Z(`/api/runtimes/${e}/commands`),branch:e=>Z(`/api/runtimes/${e}/branch`),forkMessages:e=>Z(`/api/runtimes/${e}/fork-messages`),fork:(e,t)=>Z(`/api/runtimes/${e}/fork`,ct({entryId:t})),tree:e=>Z(`/api/runtimes/${e}/tree`),navigateTree:(e,t)=>Z(`/api/runtimes/${e}/tree`,ct({targetId:t})),runtimeSessions:e=>Z(`/api/runtimes/${e}/sessions`),resume:(e,t)=>Z(`/api/runtimes/${e}/resume`,ct({sessionPath:t})),backgroundAgents:(e,t)=>Z(`/api/runtimes/${e}/background-agents`,{signal:t}),subagentMessages:(e,t,n)=>Z(`/api/runtimes/${e}/subagents/${encodeURIComponent(t)}/messages`,{signal:n}),extensionUiResponse:(e,t)=>Z(`/api/runtimes/${e}/extension-ui-response`,ct(t)),exportHtmlUrl:e=>`/api/runtimes/${e}/export-html`,deleteSession:e=>Z(`/api/sessions`,{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify({path:e})}),settings:e=>Z(ut(`/api/settings`,e)),saveSettings:(e,t)=>Z(ut(`/api/settings`,t),{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(e)}),settingsModels:e=>Z(ut(`/api/settings/models`,e)),agentTypes:e=>Z(e?`/api/settings/agent-types?cwd=${encodeURIComponent(e)}`:`/api/settings/agent-types`),version:()=>Z(`/api/version`),serverInfo:()=>Z(`/api/server/info`),restartServer:()=>Z(`/api/server/restart`,{method:`POST`}),dailyCost:()=>Z(`/api/daily-cost`),listFiles:e=>Z(`/api/files?path=${encodeURIComponent(e)}`),trustContextFolder:e=>Z(`/api/files/trust`,ct({path:e})),untrustContextFolder:e=>Z(`/api/files/untrust`,ct({path:e})),removeTrustedContextFolder:e=>Z(`/api/settings/remove-trusted`,ct({path:e})),places:()=>Z(`/api/files/places`),memoryScopes:()=>Z(`/api/memories/scopes`),memoryListing:e=>Z(`/api/memories/${encodeURIComponent(e)}`),memoryDocument:(e,t)=>Z(`/api/memories/${encodeURIComponent(e)}/documents/${encodeURIComponent(t)}`),saveMemoryDocument:(e,t,n,r)=>Z(`/api/memories/${encodeURIComponent(e)}/documents/${encodeURIComponent(t)}`,lt(`PUT`,{content:n,revision:r})),deleteMemoryEntry:(e,t,n,r)=>Z(`/api/memories/${encodeURIComponent(e)}/entries/${encodeURIComponent(t)}`,lt(`DELETE`,{revision:n,indexRevision:r})),downloadUrl:e=>`/api/files/download?path=${encodeURIComponent(e)}`,upload:async(e,t,n)=>{let r=await fetch(`/api/files/upload?dir=${encodeURIComponent(e)}&name=${encodeURIComponent(t.name)}&overwrite=${n}`,{method:`POST`,body:t}),i=await r.json();if(!r.ok)throw Object.assign(Error(String(i.error??r.statusText)),{status:r.status});return i},mkdir:(e,t)=>Z(`/api/files/mkdir`,ct({dir:e,name:t}))},pt=1,mt=6e4,ht=6e4,gt=1e4;function _t(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return Number.isSafeInteger(t.seq)&&t.seq>0&&typeof t.key==`string`&&!!t.event&&typeof t.event==`object`&&!Array.isArray(t.event)}function vt(e,t={}){let n=t.EventSource??EventSource,r=t.now??Date.now,i=t.random??Math.random,a=t.setTimeout??setTimeout,o=t.clearTimeout??clearTimeout,s=t.setInterval??setInterval,c=t.clearInterval??clearInterval,l=t.visibility??document,u=t.status??Q.auth,d=t.diagnostic??(e=>Q.connectionDiagnostic(e)),f=t.baseDelayMs??1e3,p=t.maxDelayMs??3e4,m=t.healthyResetMs??mt,h=t.watchdogMs??ht,g=t.statusTimeoutMs??gt,_,v,y,b,x,S,C=0,w=!1,T=0,E,D=r(),O,k,A,j=0,M=0,N=0,P={state:`connecting`,attempt:0};function F(){return l.visibilityState!==`hidden`}function I(t){let n=P.state;if(P={...t,...E===void 0?{}:{lastAppliedSeq:E}},e.onStatusChange?.(P),!k)return;let i=Math.max((r()-(A??r()))/6e4,1/60);Promise.resolve(d({connectionId:k,state:P.state,...n===P.state?{}:{previousState:n},attempt:T,...P.retryDelayMs===void 0?{}:{delayMs:P.retryDelayMs},visibility:F()?`visible`:`hidden`,...E===void 0?{}:{lastAppliedSeq:E},heartbeatAgeMs:Math.max(0,r()-D),eventCount:j,eventRatePerMinute:j/i,processingLagTotalMs:M,processingLagMaxMs:N})).catch(()=>{})}function L(){b!==void 0&&o(b),b=void 0}function R(){_&&(v&&_.removeEventListener(`heartbeat`,v),y&&_.removeEventListener(`connection`,y),v=void 0,y=void 0,_.onopen=null,_.onmessage=null,_.onerror=null,_.close(),_=void 0,O=void 0,k=void 0,A=void 0,j=0,M=0,N=0)}function z(){let e=Math.min(p,f*2**Math.max(0,T-1));return Math.min(p,Math.max(0,Math.round(e*(.75+i()*.5))))}function ee(){if(w||b!==void 0||P.state===`auth_failed`)return;T+=1;let e=z(),t=r()+e;I({state:`retrying`,attempt:T,retryDelayMs:e,retryAt:t}),b=a(()=>{b=void 0,ae()},e)}function te(t){w||(I({state:`resyncing`,attempt:T}),R(),e.onRecovery?.(t),t===`watchdog`&&!S?ie():ee())}function ne(){S&&=(S.timeout!==void 0&&o(S.timeout),S.controller.abort(),void 0)}function re(t,n){if(S||w)return;let r={controller:new AbortController,timeout:void 0};S=r;let i=!1,s=e=>{i||(i=!0,r.timeout!==void 0&&o(r.timeout),!w&&S===r&&e(),S===r&&(S=void 0))};r.timeout=a(()=>{r.controller.abort(),s(()=>n(Object.assign(Error(`dashboard authentication validation timed out`),{status:void 0})))},g);try{Promise.resolve(u(r.controller.signal)).then(n=>s(()=>{e.onAuthStatus?.(n),t()}),e=>s(()=>n(e)))}catch(e){s(()=>n(e))}}function ie(){re(()=>ee(),e=>{if(e?.status===401||e?.status===403){L(),I({state:`auth_failed`,attempt:T});return}ee()})}function ae(){if(w||_)return;L();let t=++C;I({state:`connecting`,attempt:T});let i=E===void 0?`/api/events`:`/api/events?lastEventId=${E}`,a=new n(i);_=a,D=r(),O=void 0;let o=()=>{w||t!==C||_!==a||(D=r(),T>0&&O!==void 0&&D-O>=m&&(T=0,I({state:`connected`,attempt:T})))};a.onopen=()=>{w||t!==C||_!==a||(O=r(),o(),I({state:`connected`,attempt:T}))},v=()=>o(),a.addEventListener(`heartbeat`,v),y=n=>{if(!(w||t!==C||_!==a))try{let t=JSON.parse(n.data);if(typeof t.connectionId!=`string`)throw Error(`missing connection id`);k=t.connectionId,A=r(),j=0,M=0,N=0,e.onConnectionMetadata?.(k),o(),I(P)}catch{te(`protocol`)}},a.addEventListener(`connection`,y),a.onmessage=n=>{if(w||t!==C||_!==a)return;D=r();let i;try{if(i=JSON.parse(n.data),!_t(i))throw Error(`invalid dashboard SSE envelope`);let e=i.event.type===`dashboard_resync`;if(!e&&E!==void 0&&i.seq<=E)return;if(!e&&E!==void 0&&i.seq!==E+1)throw Error(`dashboard SSE sequence gap`)}catch{te(`protocol`);return}let s=r();try{e.onEnvelope(i)}catch{te(`handler`);return}E=i.seq,j+=1;let c=Math.max(0,r()-s);M+=c,N=Math.max(N,c),o()},a.onerror=()=>{w||t!==C||_!==a||(I({state:`disconnected`,attempt:T}),R(),ie())}}let B=()=>{w||!F()||S||re(()=>{(!_||_.readyState!==pt||r()-D>h)&&te(`watchdog`)},e=>{if(e?.status===401||e?.status===403){L(),I({state:`auth_failed`,attempt:T}),R();return}te(`watchdog`)})};return l.addEventListener(`visibilitychange`,B),x=s(()=>{F()&&_&&r()-D>h&&te(`watchdog`)},Math.min(h,5e3)),ae(),()=>{w=!0,C+=1,ne(),L(),x!==void 0&&c(x),x=void 0,l.removeEventListener(`visibilitychange`,B),I({state:`disconnected`,attempt:T}),R()}}var yt=J(`<p class=settings-error>`),bt=J(`<div class=field><label for=mkdir-name>folder name</label><input id=mkdir-name type=text>`),xt=J(`<div class=screen-fill><main class=container><div class=files-head><div><nav class=crumbs aria-label=breadcrumb></nav><p class=scope-note>whole host filesystem — you can browse anywhere the dreb process can read</p></div><div class=head-actions><button type=button class=btn>+ new folder</button><button type=button class=btn>↑ upload here</button><button type=button class="btn btn-primary">▸ new session here</button></div></div><section class=context-trust aria-live=polite></section><div class=places><span class=label>places</span></div><table class="table file-table"><thead><tr><th>name</th><th class="meta cols">size</th><th class="meta cols">modified</th><th></th></tr></thead><tbody></tbody></table><section class=drop-zone aria-label="file upload drop zone">drop a file here to upload to </section><p class=upload-warning>Uploads land on the host machine and become visible to any agent working near this path. Existing files are never overwritten silently — you'll be asked first.</p><input type=file style=display:none>`),St=J(`<span class=sep>/`),Ct=J(`<a>`),wt=J(`<span>nested context trust: checking…`),Tt=J(`<div><strong>Nested context is untrusted.</strong><p>This folder's nested instructions are not loaded automatically.</p><button type=button class="btn btn-small btn-primary"></button><p class=context-trust-impact>Trusting this folder trusts it and all descendants.`),Et=J(`<div><strong></strong><p></p><button type=button class="btn btn-small btn-danger"></button><p class=context-trust-impact>This removes trust from <!> and all of its descendants.`),Dt=J(`<div class=context-trust-warning><strong>Global expert trust is ON.</strong> Nested instructions from any resolvable directory may load, including prompt-injection content. Folder trust cannot override this global setting. <a href=#/settings>Disable global expert trust in Settings.`),Ot=J(`<button type=button class=place-chip>`),kt=J(`<button type=button class=name><span class=icon>▸</span> <!>/`),At=J(`<a class="btn btn-small">↓ download`),jt=J(`<tr><td></td><td class="meta cols"></td><td class="meta cols"></td><td class=actions>`),Mt=J(`<span class=name><span class=icon>·</span> `),Nt=J(`<p>“<!>” already exists in <!>. Overwrite it?`),Pt=J(`<button type=button class="btn btn-small">cancel`),Ft=J(`<button type=button class="btn btn-small btn-danger">overwrite`),It=J(`<button type=button class="btn btn-small btn-primary">create`);function Lt(e){let t=e.split(`/`).filter(Boolean),n=[{label:`/`,path:`/`}],r=``;for(let e of t)r+=`/${e}`,n.push({label:e,path:r});return n}function Rt(e){let[t,n]=k(e.initialPath??``),[r,i]=k(),[a,o]=k(!1),[s,c]=k(),[l,u]=k(!1),[d,f]=k(``),[p,m]=k(!1),[h]=F(async()=>{let{places:e}=await Q.places();return e}),[g,{mutate:_,refetch:v}]=F(()=>t(),async e=>{if(i(void 0),!e){let{places:e}=await Q.places(),t=e.find(e=>e.label===`home`)?.path??`/`;return n(t),Q.listFiles(t)}return Q.listFiles(e)});async function y(e,n){try{await Q.upload(t(),e,n),c(void 0),await v()}catch(t){t?.status===409&&!n?c(e):i(t instanceof Error?t.message:String(t))}}async function b(){try{let n=await Q.createRuntime(t());e.store.upsertRuntime(n),await e.store.refreshDiskSessions(),e.store.navigate({screen:`session`,key:n.key})}catch(e){i(e instanceof Error?e.message:String(e))}}async function x(e){let n=g();if(n){i(void 0),m(!0);try{let r=e===`trust`?await Q.trustContextFolder(n.path):await Q.untrustContextFolder(n.path),i=g();t()===n.path&&i?.path===n.path&&_({...i,contextTrust:r.evaluation})}catch(e){i(e instanceof Error?e.message:String(e))}finally{m(!1)}}}let S;return(()=>{var m=xt(),_=m.firstChild,C=_.firstChild,w=C.firstChild,T=w.firstChild,E=w.nextSibling.firstChild,D=E.nextSibling,O=D.nextSibling,k=C.nextSibling,A=k.nextSibling;A.firstChild;var M=A.nextSibling,N=M.firstChild.nextSibling,P=M.nextSibling;P.firstChild;var F=P.nextSibling.nextSibling;X(m,W(tt,{get store(){return e.store},active:`files`}),_),X(T,W(G,{get each(){return Lt(t())},children:(e,t)=>[W(K,{get when(){return t()>1},get children(){return St()}}),(()=>{var t=Ct();return t.$$click=t=>{t.preventDefault(),n(e.path)},X(t,()=>e.label),j(()=>Y(t,`href`,`#/files/${encodeURIComponent(e.path)}`)),t})()]})),E.$$click=()=>u(!0),D.$$click=()=>S?.click(),O.$$click=b,X(k,W(K,{get when(){return g()?.contextTrust},get fallback(){return wt()},children:e=>W(K,{get when(){return e().state===`untrusted`},get fallback(){return W(K,{get when(){return e().state===`trusted-root`},get fallback(){return Dt()},get children(){var t=Et(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling,a=i.nextSibling,o=a.firstChild.nextSibling;return o.nextSibling,X(n,()=>e().grantingRoot===e().canonicalTarget?`Nested context trusted for this folder`:`Nested context inherited from a trusted root`),X(r,(()=>{var t=q(()=>e().grantingRoot===e().canonicalTarget);return()=>t()?`${e().grantingRoot} and all descendants are trusted.`:`${e().canonicalTarget} is covered by ${e().grantingRoot} and its descendants.`})()),i.$$click=()=>void x(`untrust`),X(i,(()=>{var t=q(()=>!!p());return()=>t()?`removing trust…`:`untrust ${e().grantingRoot}`})()),X(a,()=>e().grantingRoot,o),j(()=>i.disabled=p()),t}})},get children(){var e=Tt(),t=e.firstChild.nextSibling.nextSibling;return t.$$click=()=>void x(`trust`),X(t,()=>p()?`trusting…`:`trust this folder and descendants`),j(()=>t.disabled=p()),e}})})),X(A,W(G,{get each(){return h()??[]},children:e=>(()=>{var t=Ot();return t.$$click=()=>n(e.path),X(t,()=>e.label),t})()}),null),X(_,W(K,{get when(){return r()},get children(){var e=yt();return X(e,r),e}}),M),X(N,W(G,{get each(){return g()?.entries??[]},children:e=>(()=>{var t=jt(),r=t.firstChild,i=r.nextSibling,a=i.nextSibling,o=a.nextSibling;return X(r,W(K,{get when(){return e.type===`dir`},get fallback(){return(()=>{var t=Mt();return t.firstChild.nextSibling,X(t,()=>e.name,null),t})()},get children(){var t=kt(),r=t.firstChild.nextSibling.nextSibling;return r.nextSibling,t.$$click=()=>n(`${g().path}/${e.name}`.replace(`//`,`/`)),X(t,()=>e.name,r),t}})),X(i,(()=>{var t=q(()=>e.type===`dir`);return()=>t()?`—`:ot(e.size)})()),X(a,()=>at(e.modified)),X(o,W(K,{get when(){return e.type===`file`},get children(){var t=At();return j(()=>Y(t,`href`,Q.downloadUrl(`${g().path}/${e.name}`.replace(`//`,`/`)))),t}})),t})()})),P.addEventListener(`drop`,e=>{e.preventDefault(),o(!1);let t=e.dataTransfer?.files[0];t&&y(t,!1)}),P.addEventListener(`dragleave`,()=>o(!1)),P.addEventListener(`dragover`,e=>{e.preventDefault(),o(!0)}),X(P,t,null),F.addEventListener(`change`,e=>{let t=e.currentTarget.files?.[0];t&&y(t,!1),e.currentTarget.value=``});var I=S;return typeof I==`function`?Fe(I,F):S=F,X(m,W(K,{get when(){return s()},children:e=>W(rt,{title:`file exists`,onDismiss:()=>c(void 0),get actions(){return[(()=>{var e=Pt();return e.$$click=()=>c(void 0),e})(),(()=>{var t=Ft();return t.$$click=()=>y(e(),!0),t})()]},get children(){var n=Nt(),r=n.firstChild.nextSibling,i=r.nextSibling.nextSibling;return i.nextSibling,X(n,()=>e().name,r),X(n,t,i),n}})}),null),X(m,W(K,{get when(){return l()},get children(){return W(rt,{title:`new folder`,onDismiss:()=>u(!1),get actions(){return[(()=>{var e=Pt();return e.$$click=()=>u(!1),e})(),(()=>{var e=It();return e.$$click=async()=>{try{await Q.mkdir(t(),d().trim()),u(!1),f(``),await v()}catch(e){i(e instanceof Error?e.message:String(e)),u(!1)}},j(()=>e.disabled=!d().trim()),e})()]},get children(){var e=bt(),t=e.firstChild.nextSibling;return t.$$input=e=>f(e.currentTarget.value),j(()=>t.value=d()),e}})}}),null),j(()=>P.classList.toggle(`active`,!!a())),m})()}Ae([`click`,`input`]);var zt=19660800-768*1024;function Bt(e){let t=e?.method;if(t===`select`||t===`confirm`||t===`input`||t===`editor`)return{id:String(e.id),method:t,title:String(e.title??``),message:e.message,options:e.options,prefill:e.prefill,placeholder:e.placeholder};if(t===`ask`){let t=(Array.isArray(e.questions)?e.questions:[]).map(e=>({question:String(e?.question??``),title:typeof e?.title==`string`?e.title:void 0,options:Array.isArray(e?.options)?e.options.map(e=>String(e)):void 0,allowFreeText:typeof e?.allowFreeText==`boolean`?e.allowFreeText:void 0,multiSelect:typeof e?.multiSelect==`boolean`?e.multiSelect:void 0,multiline:typeof e?.multiline==`boolean`?e.multiline:void 0}));return{id:String(e.id),method:`ask`,title:String(e.title??`Question`),questions:t,timeout:typeof e.timeout==`number`?e.timeout:void 0,expiresAt:typeof e.expiresAt==`number`?e.expiresAt:void 0}}}function Vt(e){return{key:e,entries:[],streaming:!1,compacting:!1,statusEntries:[],tasks:[],backgroundAgents:{},uiRequests:[],toasts:[],widgets:{above:[],below:[]},needsAttention:!1,subagents:{}}}var Ht=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]),Ut=/^[0-9a-f]{64}$/;function Wt(e){if(typeof e==`string`)return{text:e,images:[]};if(!Array.isArray(e))return{text:``,images:[]};let t=[],n=[];for(let r of e){let e=r;typeof e?.text==`string`?t.push(e.text):e?.type===`image_reference`&&typeof e.id==`string`&&Ut.test(e.id)&&typeof e.mimeType==`string`&&Ht.has(e.mimeType)&&typeof e.size==`number`&&Number.isSafeInteger(e.size)&&e.size>0&&n.push({id:e.id,mimeType:e.mimeType,size:e.size})}return{text:t.join(`
|
|
2
2
|
`),images:n}}function Gt(e){return Wt(e).text}function Kt(e,t){let n=e.match(/<background-agent-complete>\n?([\s\S]*?)\n?<\/background-agent-complete>/)?.[1]?.trim();if(!n)return;let r=n.split(`
|
|
3
3
|
`),i=r.findIndex(e=>e.trim().length>0),a,o=n;return i>=0&&/^Background agent .+\.$/.test(r[i]?.trim()??``)&&(a=r[i].trim(),o=r.slice(i+1).join(`
|
|
4
4
|
`).trim()||a),{kind:`agent-result`,text:o,header:a,raw:e,timestamp:t}}function qt(e){let{text:t,images:n}=Wt(e.content);return Kt(t,e.timestamp)??{kind:`user`,text:t,images:n.length>0?n:void 0,timestamp:e.timestamp}}function Jt(e){if(!(e?.role!==`assistant`||e.stopReason!==`error`))return typeof e.errorMessage==`string`&&e.errorMessage.trim().length>0?e.errorMessage:`Unknown error`}function Yt(e){let t=[],n=new Map;for(let r of e)if(r.role===`user`)t.push(qt(r));else if(r.role===`assistant`){let e=[],i=[],a=()=>{if(e.length===0)return;let n={kind:`assistant`,blocks:e,model:r.model,streaming:!1,timestamp:r.timestamp};i.push(n),t.push(n),e=[]};if(Array.isArray(r.content)){for(let i of r.content)if(i.type===`text`&&typeof i.text==`string`)e.push({kind:`text`,text:i.text});else if(i.type===`thinking`&&typeof i.thinking==`string`)e.push({kind:`thinking`,text:i.thinking});else if(i.type===`toolCall`){a();let e=i,o={kind:`tool`,toolCallId:String(e.id??``),toolName:String(e.name??`tool`),args:e.arguments,status:`running`,resultText:``,startedAt:r.timestamp??Date.now()};n.set(o.toolCallId,o),t.push(o)}}a();let o=Jt(r);if(o&&i.length===0){let e={kind:`assistant`,blocks:[],model:r.model,streaming:!1,timestamp:r.timestamp};i.push(e),t.push(e)}let s=i.at(-1);s&&(s.stopReason=r.stopReason,s.errorMessage=o)}else if(r.role===`toolResult`){let e=n.get(String(r.toolCallId));if(e){e.status=r.isError?`error`:`done`;let t=Wt(r.content);e.resultText=t.text,t.images.length>0&&(e.images=t.images),e.details=r.details,e.endedAt=r.timestamp}}else if(r.role===`bashExecution`){let e=r;t.push({kind:`tool`,toolCallId:`bash-exec-${t.length}`,toolName:`bash (user)`,args:{command:e.command},status:`done`,resultText:e.output??``,startedAt:r.timestamp??Date.now()})}else if(r.role===`custom`){let e=r;t.push({kind:`custom`,tag:e.customType??`extension`,text:e.displayText??Gt(r.content)})}return t}var Xt=0,Zt=20;function Qt(e){let t=e.toasts.length-Zt;t>0&&e.toasts.splice(0,t)}function $t(e){let t=Date.parse(e.startedAt);return Number.isFinite(t)?t:0}function en(e){let t=Object.values(e.backgroundAgents).filter(e=>e.status!==`running`).sort((e,t)=>$t(e)-$t(t)||e.agentId.localeCompare(t.agentId)),n=t.length-20;if(!(n<=0))for(let r of t.slice(0,n))delete e.backgroundAgents[r.agentId],delete e.subagents[r.agentId]}function tn(e){e.needsAttention=e.uiRequests.length>0||e.statusEntries.some(e=>e.tone===`error`)||!!e.suggestedCommand}function nn(e){let t=e.reduce((e,t)=>e+(t.questions?.length??0),0);if(t!==0)return`waiting for input — ${t} question${t===1?``:`s`}`}var rn=`provider-error`;function an(e){e.statusEntries=e.statusEntries.filter(e=>e.key!==rn),e.lastError=void 0}function on(e,t){an(e),e.statusEntries.push({key:rn,text:t,tone:`error`}),e.lastError=t}function sn(e,t,n){if(an(e),!n)for(let n=t.length-1;n>=0;--n){let r=t[n];if(r?.role!==`assistant`)continue;let i=Jt(r);i&&on(e,i);break}tn(e)}function cn(e){for(let t=e.entries.length-1;t>=0;t--){let n=e.entries[t];if(n.kind===`assistant`)return n}}function ln(e,t){for(let n=e.entries.length-1;n>=0;n--){let r=e.entries[n];if(r.kind===`tool`&&r.toolCallId===t)return r}}function un(e,t,n){let r=e.entries.indexOf(t);if(r<0)return;let i=new Set,a=n.map(t=>{if(t.kind!==`tool`)return t;let n=ln(e,t.toolCallId);return n?(i.add(n),n):t}),o=new Set([t,...i]),s=e.entries.slice(0,r).filter(e=>!o.has(e)).length,c=e.entries.filter(e=>!o.has(e));c.splice(s,0,...a),e.entries.splice(0,e.entries.length,...c)}function dn(e,t){switch(t.type){case`agent_start`:e.streaming=!0;break;case`agent_end`:{e.streaming=!1;let t=cn(e);t&&(t.streaming=!1);break}case`message_start`:{let n=t.message;n?.role===`user`?e.entries.push(qt(n)):n?.role===`assistant`&&e.entries.push({kind:`assistant`,blocks:[],model:n.model,streaming:!0,timestamp:n.timestamp});break}case`message_update`:{let n=t.assistantMessageEvent;if(!n)break;let r=cn(e);if((!r||!r.streaming)&&(r={kind:`assistant`,blocks:[],streaming:!0},e.entries.push(r)),n.type===`text_start`)r.blocks.push({kind:`text`,text:``});else if(n.type===`thinking_start`)r.blocks.push({kind:`thinking`,text:``});else if(n.type===`text_delta`||n.type===`thinking_delta`){let e=r.blocks[r.blocks.length-1];e&&(e.text+=n.delta??``)}else if(n.type===`text_end`||n.type===`thinking_end`){let e=r.blocks[r.blocks.length-1];e&&typeof n.content==`string`&&(e.text=n.content)}break}case`message_end`:{let n=t.message;if(n?.role===`assistant`){let t=cn(e),r=Yt([n]);t?.streaming?un(e,t,r):e.entries.push(...r)}else if(n?.role===`user`){let t=e.entries[e.entries.length-1],r=qt(n);r.kind===`agent-result`?t?.kind===`agent-result`&&t.raw===r.raw||e.entries.push(r):t?.kind===`user`&&t.text===r.text?r.images&&(t.images=r.images):e.entries.push(r)}break}case`tool_execution_start`:{let n=String(t.toolCallId),r=ln(e,n);r?(r.toolName=String(t.toolName),r.args=t.args,r.status=`running`,r.resultText=``,r.images=void 0,r.details=void 0,r.startedAt=Date.now(),r.endedAt=void 0):e.entries.push({kind:`tool`,toolCallId:n,toolName:String(t.toolName),args:t.args,status:`running`,resultText:``,startedAt:Date.now()});break}case`tool_execution_update`:{let n=ln(e,String(t.toolCallId));if(n){let e=t.partialResult;if(typeof e==`string`)n.resultText=e,n.images=void 0;else if(e?.content){let t=Wt(e.content);n.resultText=t.text,n.images=t.images.length>0?t.images:void 0}}break}case`tool_execution_end`:{let n=ln(e,String(t.toolCallId));if(n){n.status=t.isError?`error`:`done`;let e=t.result;if(typeof e==`string`)n.resultText=e,n.images=void 0;else if(e?.content){let t=Wt(e.content);n.resultText=t.text,n.images=t.images.length>0?t.images:void 0}n.details=t.result?.details,n.endedAt=Date.now()}break}default:break}}function fn(e,t){switch(dn(e,t),t.type){case`agent_start`:e.workingText=`working`,e.workingSince=Date.now(),an(e),e.suggestedCommand=void 0,e.uiRequests=[];break;case`agent_end`:e.workingText=void 0,e.workingSince=void 0,e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`&&e.key!==`paused`);break;case`message_end`:{let n=t.message;if(n?.role===`assistant`){let t=Jt(n);t?on(e,t):an(e)}break}case`tool_execution_start`:e.workingText=`${t.toolName}`;break;case`auto_compaction_start`:e.compacting=!0,t.reason===`overflow`&&an(e),e.statusEntries.push({key:`compaction`,text:`compacting context…`,tone:`info`});break;case`auto_compaction_end`:{e.compacting=!1,e.statusEntries=e.statusEntries.filter(e=>e.key!==`compaction`);let n=t.result;n&&!t.aborted&&e.entries.push({kind:`summary`,label:`compaction`,text:n.summary??`context compacted`,tokensBefore:n.tokensBefore}),t.errorMessage&&e.statusEntries.push({key:`compaction-error`,text:String(t.errorMessage),tone:`error`});break}case`auto_retry_start`:an(e),e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`),e.statusEntries.push({key:`retry`,text:`retrying (${t.attempt}/${t.maxAttempts}) — ${t.errorMessage}`,tone:`warning`});break;case`auto_retry_end`:e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`),!t.success&&t.finalError?on(e,String(t.finalError)):t.success&&an(e);break;case`stream_retry`:{e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`),e.statusEntries.push({key:`retry`,text:`stream dropped, retrying (${t.attempt}/${t.maxAttempts})`,tone:`warning`});let n=cn(e);n?.streaming&&e.entries.splice(e.entries.indexOf(n),1);break}case`length_retry`:{e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`),e.statusEntries.push({key:`retry`,text:`response truncated, retrying with larger budget (${t.attempt}/${t.maxAttempts})`,tone:`warning`});let n=cn(e);n?.streaming&&e.entries.splice(e.entries.indexOf(n),1);break}case`tasks_update`:e.tasks=t.tasks??[];break;case`suggest_next`:e.suggestedCommand=String(t.command);break;case`session_name_changed`:e.sessionName=String(t.name??``);break;case`background_agent_start`:e.backgroundAgents[String(t.agentId)]={agentId:String(t.agentId),agentType:String(t.agentType),taskSummary:String(t.taskSummary),startedAt:new Date().toISOString(),status:`running`,sessionDir:t.sessionDir};break;case`subagent_arbitration`:{let n=e.backgroundAgents[String(t.agentId)];if(n){let e={status:t.status,proposed:t.proposed,final:t.final??null,changed:t.changed??[],step:t.step,errorCode:t.errorCode,errorMessage:t.errorMessage};n.arbitrations=[...n.arbitrations??[],e],e.status===`success`&&e.final&&(n.agentType=e.final.agent)}break}case`background_agent_end`:{let n=e.backgroundAgents[String(t.agentId)];n&&(n.status=t.success?`completed`:`failed`,n.sessionFile=t.sessionFile??n.sessionFile);let r=e.subagents[String(t.agentId)];r&&(r.streaming=!1),en(e);break}case`background_agent_event`:{let n=String(t.agentId),r=e.subagents[n];r||(r={agentId:n,entries:[],streaming:!0},e.subagents[n]=r);let i=t.event;if(i?.type===`session`)break;i?.type===`agent_start`&&i.model&&(r.model=i.model.id),dn(r,i);break}case`parent_paused_for_background_agents`:e.statusEntries=e.statusEntries.filter(e=>e.key!==`paused`),e.statusEntries.push({key:`paused`,text:`paused — waiting on ${t.runningAgentCount} background agent${t.runningAgentCount===1?``:`s`}`,tone:`warning`});break;case`extension_ui_response_handled`:mn(e,String(t.id));break;case`extension_ui_request`:{let n=t.method,r=Bt(t);if(r)e.uiRequests.push(r);else if(n===`notify`){Xt+=1;let n=t.notifyType??`info`;e.toasts.push({id:Xt,text:String(t.message??``),tone:n}),Qt(e)}else if(n===`setStatus`){let n=`ext:${t.statusKey??`default`}`;e.statusEntries=e.statusEntries.filter(e=>e.key!==n),t.statusText&&e.statusEntries.push({key:n,text:String(t.statusText),tone:`info`})}else if(n===`setWidget`){let n=t.widgetPlacement===`belowEditor`?`below`:`above`;e.widgets[n]=Array.isArray(t.widgetLines)?t.widgetLines:[]}else n===`setTitle`?e.title=String(t.title??``):n===`set_editor_text`&&(e.composerPrefill=String(t.text??``));break}case`extension_error`:Xt+=1,e.toasts.push({id:Xt,text:`extension error: ${t.error}`,tone:`error`}),Qt(e);break;default:break}tn(e)}function pn(e,t){e.toasts=e.toasts.filter(e=>e.id!==t)}function mn(e,t){e.uiRequests=e.uiRequests.filter(e=>e.id!==t),tn(e)}var hn=J(`<p class=attention-reason>`),gn=J(`<p class=error-reason>`),_n=J(`<p class=activity>`),vn=J(`<div class=subagents><span>⚡ <!> running · <!> done`),yn=J(`<span>tasks <!>/`),bn=J(`<span>·`),xn=J(`<span>`),Sn=J(`<span>ctx <!>%`),Cn=J(`<article class=session-card><div class=session-title><span class=name></span></div><p class=session-project></p><div class=session-meta><span> msgs</span><span>·</span><span></span></div><div class=session-actions><button type=button class="btn btn-small btn-primary">open</button><button type=button class="btn btn-small btn-danger">stop runtime`),wn=J(`<span class=agent-line><span class=live>●</span> <!> — `),Tn=J(`<div class=field><label for=new-session-cwd>project path</label><input id=new-session-cwd type=text placeholder=/path/to/project>`),En=J(`<div class=field><label for=recent-projects-list>recent projects</label><div class=recent-projects id=recent-projects-list>`),Dn=J(`<div class=field><label for=new-session-prompt>first prompt (optional)</label><textarea id=new-session-prompt rows=3>`),On=J(`<p class=pair-error>`),kn=J(`<button type=button class="btn btn-small">cancel`),An=J(`<button type=button class="btn btn-small btn-primary">`),jn=J(`<button type=button>`),Mn=J(`<div class=settings-error role=alert>Fleet could not be loaded: `),Nn=J(`<div class=settings-error role=alert>Fleet stats could not be refreshed: `),Pn=J(`<section class=live-sessions><div class=session-grid>`),Fn=J(`<section class=past-sessions><h2 class=past-sessions-head>past sessions`),In=J(`<div class=screen-fill><main class=container><div class=fleet-head><div><h1>fleet</h1><p class="muted small"> live · <!> needs attention · <!> on disk</p></div><button type=button class="btn btn-primary">+ new session`),Ln=J(`<div class=empty-state><p>No sessions yet.</p><p style=margin-top:8px><button type=button class="btn btn-primary">+ create your first session`),Rn=J(`<button type=button class=disk-more>`),zn=J(`<section class=project-group><div class=group-head><h3></h3><span class="muted small"> on disk</span><button type=button class="btn btn-small">+ new`),Bn=J(`<div class=disk-row><span class=name></span><span class=meta> msgs · </span><span class=actions><button type=button class="btn btn-small">resume</button><button type=button class="btn btn-small btn-danger">delete`),Vn=J(`<p> — <!> messages. The session file is moved to trash where supported.`),Hn=J(`<button type=button class="btn btn-small btn-danger">delete`);function Un(e){return e.error?`error`:e.needsAttention?`attention`:e.state.isStreaming||e.state.isRetrying||e.state.isCompacting?`running`:`idle`}function Wn(e){return e===`/tmp`||e.startsWith(`/tmp/`)?`/tmp`:e}function Gn(e){return e.replace(/^\/home\/[^/]+/,`~`)}function Kn(e){let t=e.state.model;return t?`${t.provider}/${t.id}`:void 0}function qn(e){return e.stats?`$${e.stats.cost.toFixed(2)}`:void 0}var Jn=200;function Yn(e,t){let n=e.sessions[t.key]?.entries??[];for(let e=n.length-1;e>=0;--e){let t=n[e];if(t.kind!==`assistant`)continue;let r=t.blocks.filter(e=>e.kind===`text`).map(e=>e.text).join(``).trim();if(r)return r.slice(0,Jn)}return t.lastAssistantText}function Xn(e){let t=()=>Un(e.runtime),n=()=>e.store.sessions[e.runtime.key],r=()=>e.runtime.backgroundAgents.filter(e=>e.status===`running`),i=()=>e.runtime.backgroundAgents.filter(e=>e.status!==`running`),a=()=>n()?.tasks??e.runtime.state.tasks??[],o=()=>a().filter(e=>e.status===`completed`).length,s=()=>e.runtime.state.contextUsage,c=()=>{let t=n();return t?.workingText?`▸ ${t.workingText}`:t?.suggestedCommand?`suggested next: ${t.suggestedCommand}`:Yn(e.store,e.runtime)};return(()=>{var l=Cn(),u=l.firstChild,d=u.firstChild,f=u.nextSibling,p=f.nextSibling,m=p.firstChild,h=m.firstChild,g=m.nextSibling.nextSibling,_=p.nextSibling.firstChild,v=_.nextSibling;return X(d,()=>n()?.sessionName??e.runtime.state.sessionName??e.runtime.state.sessionId.slice(0,8)),X(u,W(K,{get when(){return n()?.lastError},get fallback(){return W($e,{get status(){return t()}})},get children(){return W($e,{status:`error`})}}),null),X(f,()=>Gn(e.runtime.cwd)),X(l,W(K,{get when(){return t()===`attention`},get children(){var e=hn();return X(e,()=>nn(n()?.uiRequests??[])??`needs attention`),e}}),p),X(l,W(K,{get when(){return e.runtime.error??n()?.lastError},get children(){var t=gn();return X(t,()=>e.runtime.error??n().lastError),t}}),p),X(l,W(K,{get when(){return c()},get children(){var e=_n();return X(e,c),e}}),p),X(l,W(K,{get when(){return e.runtime.backgroundAgents.length>0},get children(){var e=vn(),t=e.firstChild,n=t.firstChild.nextSibling,a=n.nextSibling.nextSibling;return a.nextSibling,X(t,()=>r().length,n),X(t,()=>i().length,a),X(e,W(G,{get each(){return r().slice(0,3)},children:e=>(()=>{var t=wn(),n=t.firstChild.nextSibling.nextSibling;return n.nextSibling,X(t,()=>e.agentType,n),X(t,()=>e.taskSummary,null),t})()}),null),e}}),p),X(p,W(K,{get when(){return a().length>0},get children(){return[(()=>{var e=yn(),t=e.firstChild.nextSibling;return t.nextSibling,X(e,o,t),X(e,()=>a().length,null),e})(),bn()]}}),m),X(p,W(K,{get when(){return Kn(e.runtime)},get children(){return[(()=>{var t=xn();return X(t,()=>Kn(e.runtime)),t})(),bn()]}}),m),X(p,W(K,{get when(){return q(()=>!!s())()&&s().percent!==null},get children(){return[(()=>{var e=Sn(),t=e.firstChild.nextSibling;return t.nextSibling,X(e,()=>s().percent.toFixed(0),t),e})(),bn()]}}),m),X(p,W(K,{get when(){return qn(e.runtime)},get children(){return[(()=>{var t=xn();return X(t,()=>qn(e.runtime)),t})(),bn()]}}),m),X(m,()=>e.runtime.state.messageCount,h),X(g,()=>at(e.runtime.lastActivity)),_.$$click=()=>e.store.navigate({screen:`session`,key:e.runtime.key}),v.$$click=async()=>{await Q.stopRuntime(e.runtime.key),await e.store.removeRuntime(e.runtime.key)},j(r=>{var i=t()===`attention`,a=!!(t()===`error`||n()?.lastError),o=e.runtime.cwd;return i!==r.e&&l.classList.toggle(`attention`,r.e=i),a!==r.t&&l.classList.toggle(`error`,r.t=a),o!==r.a&&Y(f,`title`,r.a=o),r},{e:void 0,t:void 0,a:void 0}),l})()}function Zn(e){let[t,n]=k(e.initialCwd??``),[r,i]=k(``),[a,o]=k(),[s,c]=k(!1);async function l(){c(!0),o(void 0);try{let n=await Q.createRuntime(t(),{firstPrompt:r()||void 0});e.store.upsertRuntime(n),await e.store.refreshDiskSessions(),e.onClose(),e.store.navigate({screen:`session`,key:n.key})}catch(e){o(e instanceof Error?e.message:String(e))}finally{c(!1)}}return W(rt,{title:`new session`,get onDismiss(){return e.onClose},get actions(){return[(()=>{var t=kn();return Me(t,`click`,e.onClose,!0),t})(),(()=>{var e=An();return e.$$click=l,X(e,()=>s()?`starting…`:`start session`),j(()=>e.disabled=s()||!t()),e})()]},get children(){return[(()=>{var e=Tn(),r=e.firstChild.nextSibling;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e})(),W(K,{get when(){return e.recentProjects.length>0},get children(){var t=En(),r=t.firstChild.nextSibling;return X(r,W(G,{get each(){return e.recentProjects},children:e=>(()=>{var t=jn();return t.$$click=()=>n(e),X(t,()=>Gn(e)),t})()})),t}}),(()=>{var e=Dn(),t=e.firstChild.nextSibling;return t.$$input=e=>i(e.currentTarget.value),j(()=>t.value=r()),e})(),W(K,{get when(){return a()},get children(){var e=On();return X(e,a),e}})]}})}function Qn(e){let[t,n]=k(),[r,i]=k(!1),[a,o]=k(),[s,c]=k({}),[l,u]=k(),d=N(()=>{let t=[...e.store.fleet().runtimes];return t.sort((e,t)=>{let n=e.cwd.localeCompare(t.cwd);return n===0?new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime():n}),t}),f=N(()=>{let t=e.store.fleet(),n=new Set(t.runtimes.map(e=>e.state.sessionFile).filter(Boolean)),r=new Map;for(let e of t.diskSessions){if(n.has(e.path))continue;let t=Wn(e.cwd),i=r.get(t)??[];i.push(e),r.set(t,i)}let i=[...r.entries()];return i.sort(([,e],[,t])=>new Date(t[0]?.modified??0).getTime()-new Date(e[0]?.modified??0).getTime()),i}),p=N(()=>{let t=e.store.fleet();return{live:t.runtimes.length,attention:t.runtimes.filter(e=>e.needsAttention).length,disk:t.diskSessions.length}}),m=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].slice(0,8)});R(()=>{let t=setInterval(()=>void e.store.refreshFleetStats(),3e4);z(()=>clearInterval(t))});async function h(t){u(void 0);try{let n=await Q.createRuntime(t.cwd,{sessionPath:t.path});e.store.upsertRuntime(n),await e.store.refreshDiskSessions(),e.store.navigate({screen:`session`,key:n.key})}catch(e){u(`Failed to resume session: ${e instanceof Error?e.message:String(e)}`)}}return(()=>{var u=In(),g=u.firstChild,_=g.firstChild.firstChild,v=_.firstChild.nextSibling,y=v.firstChild,b=y.nextSibling,x=b.nextSibling.nextSibling;x.nextSibling;var S=_.nextSibling;return X(u,W(tt,{get store(){return e.store},active:`fleet`}),g),X(v,()=>p().live,y),X(v,()=>p().attention,b),X(v,()=>p().disk,x),S.$$click=()=>{n(void 0),i(!0)},X(g,W(K,{get when(){return e.store.fleetError()},get children(){var t=Mn();return t.firstChild,X(t,()=>e.store.fleetError(),null),t}}),null),X(g,W(K,{get when(){return e.store.fleetStatsError()},get children(){var t=Nn();return t.firstChild,X(t,()=>e.store.fleetStatsError(),null),t}}),null),X(g,W(K,{get when(){return d().length>0||f().length>0||e.store.fleetError()},get fallback(){return(()=>{var e=Ln(),t=e.firstChild.nextSibling.firstChild;return t.$$click=()=>i(!0),e})()},get children(){return[W(K,{get when(){return d().length>0},get children(){var t=Pn(),n=t.firstChild;return X(n,W(G,{get each(){return d()},children:t=>W(Xn,{get store(){return e.store},runtime:t})})),t}}),W(K,{get when(){return f().length>0},get children(){var e=Fn();return e.firstChild,X(e,W(K,{get when(){return l()},get children(){var e=On();return X(e,l),e}}),null),X(e,W(G,{get each(){return f()},children:([e,t])=>{let r=()=>s()[e]??!1,a=()=>r()?t:t.slice(0,3);return(()=>{var s=zn(),l=s.firstChild.firstChild,u=l.nextSibling,d=u.firstChild,f=u.nextSibling;return X(l,()=>Gn(e)),X(u,()=>t.length,d),f.$$click=()=>{n(e),i(!0)},X(s,W(G,{get each(){return a()},children:e=>(()=>{var t=Bn(),n=t.firstChild,r=n.nextSibling,i=r.firstChild,a=r.nextSibling.firstChild,s=a.nextSibling;return X(n,()=>e.name??`“${e.firstMessage.slice(0,60)}…”`),X(r,()=>e.messageCount,i),X(r,()=>at(e.modified),null),a.$$click=()=>h(e),s.$$click=()=>o(e),j(()=>n.classList.toggle(`muted`,!e.name)),t})()}),null),X(s,W(K,{get when(){return t.length>3},get children(){var n=Rn();return n.$$click=()=>c(t=>({...t,[e]:!r()})),X(n,(()=>{var e=q(()=>!!r());return()=>e()?`show fewer ←`:`all ${t.length} on disk →`})()),n}}),null),s})()}}),null),e}})]}}),null),X(u,W(K,{get when(){return r()},get children(){return W(Zn,{get store(){return e.store},get initialCwd(){return t()},get recentProjects(){return m()},onClose:()=>i(!1)})}}),null),X(u,W(K,{get when(){return a()},children:t=>W(rt,{title:`delete session?`,onDismiss:()=>o(void 0),get actions(){return[(()=>{var e=kn();return e.$$click=()=>o(void 0),e})(),(()=>{var n=Hn();return n.$$click=async()=>{await Q.deleteSession(t().path),o(void 0),await e.store.refreshDiskSessions()},n})()]},get children(){var e=Vn(),n=e.firstChild,r=n.nextSibling;return r.nextSibling,X(e,()=>t().name??t().firstMessage.slice(0,80),n),X(e,()=>t().messageCount,r),e}})}),null),u})()}Ae([`click`,`input`]);function $n(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function er(e){if(Array.isArray(e))return e}function tr(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function nr(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
@@ -76,4 +76,4 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
|
|
|
76
76
|
|
|
77
77
|
`)}function nn(e,t,n=`/${e}`){return t?(I(`Usage: ${n}`),!0):!1}function rn(){let t=document.createElement(`a`);t.href=Q.exportHtmlUrl(e.sessionKey),t.download=``,document.body.append(t),t.click(),t.remove()}let an={settings:async t=>{nn(`settings`,t)||e.store.navigate({screen:`settings`})},"scoped-models":async t=>{if(nn(`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=>{nn(`export`,e)||rn()},import:async e=>{Ze(e),$e(void 0),Ye(!0)},name:async t=>{t?await Q.rename(e.sessionKey,t):w(!0)},session:async e=>{nn(`session`,e)||(v(!1),await Xt())},fork:async e=>{nn(`fork`,e)||await Jt()},tree:async e=>{nn(`tree`,e)||await Ut()},new:async t=>{if(!nn(`new`,t)){if(ft()||pt()){I(`Wait for the current operation to finish before starting a new session.`);return}(await Q.newSession(e.sessionKey)).cancelled?I(`New session cancelled.`):(await e.store.hydrateSession(e.sessionKey),await e.store.refreshDiskSessions())}},compact:async t=>{t?(await Q.compact(e.sessionKey,t),I(`Compaction started.`)):S(!0)},dream:async t=>{let n=await Q.dream(e.sessionKey,t||void 0);I(n.message)},resume:async e=>{nn(`resume`,e)||await Gt()},reload:async t=>{if(nn(`reload`,t))return;if(ft()||pt()){I(`Wait for the current operation to finish before reloading.`);return}await Q.reload(e.sessionKey);let[{commands:n}]=await Promise.all([Q.commands(e.sessionKey),e.store.hydrateSession(e.sessionKey)]);H(n),I(`Reloaded extensions, skills, prompts, themes, and settings.`)},quit:async e=>{nn(`quit`,e)||await cn()}};async function on(){let t=r().trim();if(!t&&ye().length===0&&_e().length===0)return;P(void 0),I(void 0);let n=il(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 al(n,an,I),i(``),Se(void 0)}catch(e){P(e instanceof Error?e.message:String(e))}return}let o=tn(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 Et(e),mimeType:t}))):void 0;ft()?await Q.prompt(e.sessionKey,o,a(),n):n?await Q.prompt(e.sessionKey,o,void 0,n):await Q.prompt(e.sessionKey,o),pl(e.sessionKey,o),Se(void 0),i(``),Ot(),be([]),xt()}catch(e){P(e instanceof Error?e.message:String(e))}}async function sn(){c(!0);try{await Q.abort(e.sessionKey),await Lt()}catch(e){P(e instanceof Error?e.message:String(e))}finally{c(!1)}}async function cn(){if(!l()){u(!0),P(void 0);try{await Q.stopRuntime(e.sessionKey),await e.store.removeRuntime(e.sessionKey),e.store.navigate({screen:`fleet`})}catch(e){P(e instanceof Error?e.message:String(e))}finally{u(!1)}}}async function ln(t){try{t===`compaction`?await Q.abortCompaction(e.sessionKey):t===`retry`&&await Q.abortRetry(e.sessionKey)}catch(e){P(e instanceof Error?e.message:String(e))}}function un(e){ot?.querySelectorAll(`details.tool`).forEach(t=>{t.open=e})}let dn=()=>Object.values(t()?.backgroundAgents??{}).filter(e=>e.status===`running`),fn=()=>Object.values(t()?.backgroundAgents??{}).filter(e=>e.status!==`running`),pn=()=>Object.values(t()?.backgroundAgents??{}).sort((e,t)=>Date.parse(t.startedAt)-Date.parse(e.startedAt)),mn=()=>t()?.tasks??[],hn=()=>mn().filter(e=>e.status===`completed`).length,gn=()=>n()?.state.contextUsage??te()?.contextUsage,_n=()=>typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 700px)`).matches,vn=()=>t()?.sessionName??n()?.state.sessionName,yn=()=>vn()??t()?.title??e.sessionKey,bn=()=>{let e=n()?.cwd;if(!e)return;let t=ae();return`${ud(e)}${t?` (${t})`:``}`},xn=()=>{let e=bn(),t=vn();return e&&t?`${e} • ${t}`:e??t??`session`},Sn=()=>{let e=te()?.tokens;if(!e)return;let t=[];return e.input&&t.push(`↑${sd(e.input)}`),e.output&&t.push(`↓${sd(e.output)}`),e.cacheRead&&t.push(`R${sd(e.cacheRead)}`),e.cacheWrite&&t.push(`W${sd(e.cacheWrite)}`),t.length>0?t.join(` `):void 0},Cn=()=>{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},wn=()=>{let e=gn();if(e)return`ctx ${e.percent===null?`?`:`${e.percent.toFixed(0)}%`}/${sd(e.contextWindow)}`},Tn=()=>ld(re(),n()?.state.model),En=()=>[Sn(),Cn(),wn(),Tn()].filter(Boolean),Dn=()=>[...(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}))],On=()=>{let e=r();if(ce()||!e.startsWith(`/`))return;let t=e.slice(1);if(!/\s/.test(t))return t.toLowerCase()},kn=N(()=>{let e=On();return e===void 0?[]:ol(se(),e)}),An=()=>kn().length>0,jn=e=>{i(`/${e.name} `),le(!0),queueMicrotask(()=>Z?.focus())};return M(()=>{let e=kn().length;U()>=e&&ue(Math.max(0,e-1))}),(()=>{var c=zu(),u=c.firstChild,k=u.firstChild,M=k.firstChild.nextSibling,N=M.nextSibling,I=u.nextSibling,R=I.firstChild,z=I.nextSibling,ee=z.firstChild,ne=ee.firstChild;X(M,yn),X(k,W(K,{get when(){return!_()},get children(){var e=hu();return X(e,(()=>{var e=q(()=>!!n()?.cwd);return()=>e()?ud(n().cwd):void 0})()),e}}),N),X(k,W(nt,{get store(){return e.store},class:`session-connection-indicator`}),N),X(k,W(K,{get when(){return!_()},get children(){var t=_u(),r=t.firstChild,i=r.firstChild.nextSibling.nextSibling,a=r.nextSibling;a.firstChild.nextSibling;var o=a.nextSibling;return r.$$click=()=>f(!0),X(i,()=>ad(n()?.state.model)),a.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=nd[(nd.indexOf(t)+1)%nd.length];try{await Q.setThinking(e.sessionKey,r),e.store.setRuntimeThinkingLevel(e.sessionKey,r)}catch(e){P(e instanceof Error?e.message:String(e))}},X(a,()=>n()?.state.thinkingLevel??`—`,null),X(t,W(K,{get when(){return gn()},get children(){var e=gu();return e.firstChild.nextSibling,X(e,(()=>{var e=q(()=>gn().percent===null);return()=>e()?`?`:`${gn().percent.toFixed(0)}%`})(),null),e}}),o),o.$$click=()=>g(!h()),j(()=>Y(r,`title`,od(n()?.state.model))),t}}),N),N.$$click=()=>v(!_()),X(N,()=>_()?`details ▾`:`details ▴`),X(u,W(K,{get when(){return!_()},get children(){return[(()=>{var e=yu(),t=e.firstChild,n=t.nextSibling;return X(t,xn),n.$$click=Xt,X(n,W(G,{get each(){return En()},children:e=>(()=>{var t=Bu();return X(t,e),t})()})),X(e,W(K,{get when(){return et()},get children(){var e=vu(),t=ut;return typeof t==`function`?Fe(t,e):ut=e,X(e,W(K,{get when(){return it()},get children(){var e=Gl();return X(e,it),e}}),null),X(e,W(K,{get when(){return te()},get fallback(){return Vu()},children:e=>(()=>{var t=Hu(),n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling,i=r.nextSibling.nextSibling,a=i.firstChild,o=i.nextSibling.nextSibling,s=o.firstChild,c=o.nextSibling.nextSibling,l=c.firstChild,u=c.nextSibling.nextSibling,d=u.nextSibling.nextSibling;return d.firstChild,X(n,()=>e().userMessages),X(r,()=>e().assistantMessages),X(i,()=>e().toolCalls,a),X(i,()=>e().toolResults,null),X(o,()=>sd(e().tokens.input),s),X(o,()=>sd(e().tokens.output),null),X(c,()=>sd(e().tokens.cacheRead),l),X(c,()=>sd(e().tokens.cacheWrite),null),X(u,()=>sd(e().tokens.total)),X(d,()=>e().cost.toFixed(4),null),t})()}),null),e}}),null),e})(),W(K,{get when(){return h()},get children(){var t=Su(),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=()=>un(!0),o.$$click=()=>un(!1),s.$$click=()=>w(!0),c.$$click=Jt,u.$$click=bt,X(t,W(K,{get when(){return _n()},get children(){return[(()=>{var e=bu();return e.firstChild,e.$$click=()=>f(!0),X(e,()=>ad(n()?.state.model),null),e})(),(()=>{var t=xu();return t.firstChild,t.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=nd[(nd.indexOf(t)+1)%nd.length];try{await Q.setThinking(e.sessionKey,r),e.store.setRuntimeThinkingLevel(e.sessionKey,r)}catch(e){P(e instanceof Error?e.message:String(e))}},X(t,()=>n()?.state.thinkingLevel??`—`,null),t})()]}}),d),d.$$click=cn,X(d,()=>l()?`stopping runtime…`:`stop runtime`),j(t=>{var n=Q.exportHtmlUrl(e.sessionKey),i=l();return n!==t.e&&Y(r,`href`,t.e=n),i!==t.t&&(d.disabled=t.t=i),t},{e:void 0,t:void 0}),t}})]}}),null),X(c,W(K,{get when(){return q(()=>!!(!_()&&n()?.state.modelFallbackMessage))()&&!D()},get children(){var e=Cu(),t=e.firstChild.firstChild;t.firstChild;var r=t.nextSibling;return X(t,()=>n().state.modelFallbackMessage,null),r.$$click=()=>O(!0),e}}),I);var re=ot;typeof re==`function`?Fe(re,I):ot=I;var ie=st;return typeof ie==`function`?Fe(ie,R):st=R,X(R,W(K,{get when(){return t()},get fallback(){return Uu()},get children(){return[W(G,{get each(){return t().widgets.above},children:e=>(()=>{var t=Wu();return X(t,e),t})()}),W(xc,{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(bd,{get request(){return e()},onRespond:Ct,onStop:()=>void sn(),get stopping(){return s()}})}),W(G,{get each(){return t().widgets.below},children:e=>(()=>{var t=Wu();return X(t,e),t})()})]}})),ne.$$click=()=>b(!y()),X(ne,()=>y()?`compose ▴`:`compose ▾`),X(ee,W(K,{get when(){return y()},get children(){var e=wu();return X(e,(()=>{var e=q(()=>!!gt());return()=>e()?`agent working — open controls to stop or steer`:q(()=>Dn().length>0)()?`${Dn().length} queued message(s)`:`composer hidden for transcript reading`})()),e}}),null),X(z,W(K,{get when(){return!y()},get children(){var n=Lu(),c=n.firstChild,l=c.firstChild,u=l.nextSibling,d=u.firstChild,f=d.nextSibling,p=f.nextSibling,m=p.nextSibling,h=m.nextSibling;X(n,W(K,{get when(){return mn().length>0},get children(){var e=Tu(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;r.nextSibling;var i=t.nextSibling;return X(t,hn,n),X(t,()=>mn().length,r),X(i,W(G,{get each(){return mn()},children:e=>(()=>{var t=Gu(),n=t.firstChild;return X(t,(()=>{var t=q(()=>e.status===`completed`);return()=>t()?`☑`:e.status===`in_progress`?`⧖`:`☐`})(),n),X(t,()=>e.title,null),j(n=>{var r=e.status===`completed`,i=e.status===`in_progress`;return r!==n.e&&t.classList.toggle(`done`,n.e=r),i!==n.t&&t.classList.toggle(`active`,n.t=i),n},{e:void 0,t:void 0}),t})()})),j(()=>e.open=!_n()),e}}),c),X(n,W(K,{get when(){return dn().length+fn().length>0},get children(){var t=Eu(),n=t.firstChild,r=n.firstChild.nextSibling,i=r.nextSibling.nextSibling;i.nextSibling;var a=n.nextSibling;return X(n,()=>dn().length,r),X(n,()=>fn().length,i),X(a,W(G,{get each(){return pn()},children:t=>(()=>{var n=Ku(),r=n.firstChild,i=r.firstChild,a=i.nextSibling,o=a.firstChild;return r.$$click=()=>e.store.navigate({screen:`subagent`,key:e.sessionKey,agentId:t.agentId}),X(i,(()=>{var e=q(()=>t.status===`running`);return()=>e()?`●`:t.status===`completed`?`✓`:`✕`})()),X(a,()=>t.agentType,o),X(a,()=>t.taskSummary,null),X(a,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(()=>je(i,t.status===`running`?`live`:`done`)),n})()})),j(()=>t.open=!_n()),t}}),c),X(n,W(K,{get when(){return gt()||(t()?.statusEntries.length??0)>0||A()||F()},get children(){var e=ju();return X(e,W(K,{get when(){return ft()},get children(){var e=Du();return e.firstChild,X(e,(()=>{var e=q(()=>!!t()?.workingText);return()=>e()?` — ${t().workingText}`:``})(),null),X(e,(()=>{var e=q(()=>L()>2);return()=>e()?` (${L()}s)`:``})(),null),e}}),null),X(e,W(G,{get each(){return t()?.statusEntries??[]},children:e=>(()=>{var t=Bu();return X(t,()=>e.text,null),X(t,W(K,{get when(){return e.key===`compaction`||e.key===`retry`},get children(){var t=qu();return t.$$click=()=>ln(e.key),t}}),null),j(()=>je(t,e.tone===`info`?`queued`:e.tone)),t})()}),null),X(e,W(K,{get when(){return A()},get children(){var e=Ou();return X(e,A),e}}),null),X(e,W(K,{get when(){return F()},get children(){var e=ku();return X(e,F),e}}),null),X(e,W(K,{get when(){return gt()},get children(){var e=Au();return e.$$click=sn,X(e,()=>s()?`stopping…`:`■ stop`),j(()=>e.disabled=s()),e}}),null),e}}),c),X(c,W(K,{get when(){return Dn().length>0},get children(){var e=Mu(),t=e.firstChild;return X(e,W(G,{get each(){return Dn()},children:e=>(()=>{var t=Ju(),n=t.firstChild;return X(n,()=>e.kind),X(t,()=>e.text,null),j(()=>Y(t,`title`,e.text)),t})()}),t),t.$$click=Lt,e}}),l),X(c,W(K,{get when(){return ye().length>0||_e().length>0},get children(){var e=Nu();return X(e,W(G,{get each(){return ye()},children:(e,t)=>(()=>{var n=Yu(),r=n.firstChild;r.firstChild;var i=r.nextSibling,a=i.nextSibling;return X(r,()=>e.fileName,null),X(i,()=>md(e.size)),a.$$click=()=>be(e=>e.filter((e,n)=>n!==t())),j(()=>Y(n,`title`,e.path)),n})()}),null),X(e,W(G,{get each(){return _e()},children:(e,t)=>(()=>{var n=Xu(),r=n.firstChild,i=r.nextSibling;return i.$$click=()=>kt(t()),j(t=>{var i=`${e.fileName} (${md(e.size)})`,a=e.previewUrl,o=e.fileName;return i!==t.e&&Y(n,`title`,t.e=i),a!==t.t&&Y(r,`src`,t.t=a),o!==t.a&&Y(r,`alt`,t.a=o),t},{e:void 0,t:void 0,a:void 0}),n})()}),null),e}}),l),X(c,W(K,{get when(){return An()},get children(){var e=Pu();return X(e,W(G,{get each(){return kn()},children:(e,t)=>(()=>{var n=Qu(),r=n.firstChild;r.firstChild;var i=r.nextSibling;return n.$$click=()=>jn(e),n.addEventListener(`mouseenter`,()=>ue(t())),X(r,()=>e.name,null),X(n,W(K,{get when(){return e.description},get children(){var t=Zu();return X(t,()=>e.description),t}}),i),X(i,()=>e.source),j(e=>{var r=`command-option-${t()}`,i=U()===t(),a=U()===t();return r!==e.e&&Y(n,`id`,e.e=r),i!==e.t&&Y(n,`aria-selected`,e.t=i),a!==e.a&&n.classList.toggle(`selected`,e.a=a),e},{e:void 0,t:void 0,a:void 0}),n})()})),e}}),l),l.$$keydown=t=>{if(An()){if(t.key===`ArrowDown`){t.preventDefault(),ue((U()+1)%kn().length);return}if(t.key===`ArrowUp`){t.preventDefault(),ue((U()-1+kn().length)%kn().length);return}if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey&&!_n()){t.preventDefault();let e=kn()[U()];e&&t.key===`Enter`&&r()===`/${e.name}`?(le(!0),on()):e&&jn(e);return}if(t.key===`Escape`){t.preventDefault(),le(!0);return}}if((t.key===`ArrowUp`||t.key===`ArrowDown`)&&(r()===``||xe()!==void 0)){let n=fl(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&&!_n()&&(t.preventDefault(),on())},l.$$input=e=>{le(!1),ue(0),Se(void 0),i(e.currentTarget.value),_d(e.currentTarget)},l.addEventListener(`paste`,e=>{let t=[...e.clipboardData?.items??[]].filter(e=>e.type.startsWith(`image/`)).map(e=>e.getAsFile()).filter(e=>!!e);t.length>0&&(e.preventDefault(),Bt(t))});var g=Z;typeof g==`function`?Fe(g,l):Z=l,d.addEventListener(`change`,e=>{Ht(e.currentTarget.files??[]),e.currentTarget.value=``});var _=ct;typeof _==`function`?Fe(_,d):ct=d,f.addEventListener(`change`,e=>{Bt(e.currentTarget.files??[]),e.currentTarget.value=``});var v=lt;return typeof v==`function`?Fe(v,f):lt=f,p.$$click=()=>ct?.click(),m.$$click=()=>lt?.click(),X(u,W(K,{get when(){return ft()},get children(){var e=Fu(),t=e.firstChild,n=t.nextSibling;return t.$$click=()=>o(`steer`),n.$$click=()=>o(`follow_up`),j(e=>{var r=a()===`steer`,i=a()===`follow_up`;return r!==e.e&&t.classList.toggle(`selected`,e.e=r),i!==e.t&&n.classList.toggle(`selected`,e.t=i),e},{e:void 0,t:void 0}),e}}),h),X(u,W(K,{get when(){return t()?.suggestedCommand},get children(){var e=Iu(),n=e.firstChild.nextSibling;return e.$$click=()=>i(t().suggestedCommand),X(n,()=>t().suggestedCommand),e}}),h),h.$$click=on,j(e=>{var t=ft()?`Message dreb — sends as steer while it works…`:`Message dreb…`,n=An()?`command-listbox`:void 0,r=An()?`command-option-${U()}`:void 0;return t!==e.e&&Y(l,`placeholder`,e.e=t),n!==e.t&&Y(l,`aria-controls`,e.t=n),r!==e.a&&Y(l,`aria-activedescendant`,e.a=r),e},{e:void 0,t:void 0,a:void 0}),j(()=>l.value=r()),n}}),null),X(c,W(K,{get when(){return t()?.uiRequests.find(e=>e.method!==`ask`)},keyed:!0,children:e=>W(vd,{request:e,onRespond:Ct})}),null),X(c,W(K,{get when(){return d()},get children(){return W(Sd,{get sessionKey(){return e.sessionKey},get state(){return n()?.state},get initialFilter(){return p()},onClose:()=>{f(!1),m(``)},onSelected:t=>e.store.setRuntimeModel(e.sessionKey,t)})}}),null),X(c,W(K,{get when(){return x()},get children(){return W(rt,{title:`compact context`,onDismiss:()=>S(!1),get actions(){return[(()=>{var e=yl();return e.$$click=()=>S(!1),e})(),(()=>{var t=$u();return t.$$click=async()=>{S(!1);try{await Q.compact(e.sessionKey)}catch(e){P(e instanceof Error?e.message:String(e))}},t})()]},get children(){return Ru()}})}}),null),X(c,W(K,{get when(){return T()},get children(){return W(xd,{get resources(){return de()},get error(){return pe()},onClose:()=>E(!1)})}}),null),X(c,W(K,{get when(){return Ce()},get children(){return W(rt,{title:`fork from message`,onDismiss:()=>we(!1),get children(){return[W(K,{get when(){return De()},get children(){var e=Gl();return X(e,De),e}}),W(K,{get when(){return Te().length>0},get fallback(){return ed()},get children(){var e=su();return X(e,W(G,{get each(){return Te()},children:e=>(()=>{var t=uu(),n=t.firstChild,r=n.nextSibling;return t.$$click=()=>Yt(e.entryId),X(n,()=>e.entryId),X(r,()=>e.text),t})()})),e}})]}})}}),null),X(c,W(K,{get when(){return ke()},get children(){return W(wd,{get roots(){return Ae()},get leafId(){return Ne()},get loading(){return Ie()},get error(){return Re()},onClose:()=>J(!1),onNavigate:Wt})}}),null),X(c,W(K,{get when(){return Be()},get children(){return W(Td,{get sessions(){return He()},get loading(){return We()},get error(){return Ke()},onClose:()=>Ve(!1),onResume:Kt})}}),null),X(c,W(K,{get when(){return Je()},get children(){return W(Ed,{get initialPath(){return Xe()},get error(){return Qe()},onClose:()=>Ye(!1),onImport:qt})}}),null),X(c,W(K,{get when(){return C()},get children(){return W(Od,{get current(){return vn()??``},onClose:()=>w(!1),onRename:async t=>{try{await Q.rename(e.sessionKey,t),w(!1)}catch(e){P(e instanceof Error?e.message:String(e))}}})}}),null),j(e=>{var t=!!_(),n=_()?`show session details`:`hide session details`,r=!!y(),i=y()?`show composer and controls`:`hide composer and controls`;return t!==e.e&&u.classList.toggle(`collapsed`,e.e=t),n!==e.t&&Y(N,`title`,e.t=n),r!==e.a&&z.classList.toggle(`collapsed`,e.a=r),i!==e.o&&Y(ne,`title`,e.o=i),e},{e:void 0,t:void 0,a:void 0,o:void 0}),c})()}function Od(e){let[t,n]=k(e.current);return W(rt,{title:`rename session`,get onDismiss(){return e.onClose},get actions(){return[(()=>{var t=yl();return Me(t,`click`,e.onClose,!0),t})(),(()=>{var n=td();return n.$$click=()=>e.onRename(t().trim()),j(()=>n.disabled=!t().trim()),n})()]},get children(){var e=_l(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e}})}Ae([`input`,`click`,`keydown`]);var kd=J(`<div class=settings-error>`),Ad=J(`<p class=muted>Loading scoped models…`),jd=J(`<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`),Md=J(`<option>`),Nd=J(`<div class=settings-warning>This project defines enabledModels in .dreb/settings.json and shadows global writes.`),Pd=J(`<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`),Fd=J(`<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`),Id=J(`<span class="muted small">unsaved changes`),Ld=J(`<span class="muted small">✓ saved`),Rd=J(`<div class=scoped-models-actions><button type=button class="btn btn-small">reset</button><button type=button class="btn btn-primary btn-small">`),zd=J(`<div class=settings-warning>`),Bd=J(`<div class=scoped-model-order-row><span></span><div class=scoped-model-move-controls><button type=button>↑</button><button type=button>↓`),Vd=J(`<p class="muted small">No matching models.`),Hd=J(`<section class=scoped-model-provider><label class=scoped-model-provider-heading><input type=checkbox><span>`),Ud=J(`<span class=model-name>`),Wd=J(`<label class=scoped-model-choice><input type=checkbox><span class=model-id>`);function Gd(e){return`${e.provider}/${e.id}`}function Kd(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 qd(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([Q.settings(t),Q.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(Gd):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 Kd((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(Gd)??[],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(Gd)??[]: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(Gd),n=r()?C()?.models.map(Gd)??[]: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 Q.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=jd(),o=i.firstChild.nextSibling.nextSibling.firstChild.nextSibling;o.firstChild;var c=_;return typeof c==`function`?Fe(c,i):_=i,o.addEventListener(`change`,t=>e.onCwdChange(t.currentTarget.value||void 0)),X(o,W(G,{get each(){return D()},children:e=>(()=>{var t=Md();return t.value=e,X(t,e),t})()}),null),X(i,W(K,{get when(){return x.error},get children(){var e=kd();return X(e,(()=>{var e=q(()=>x.error instanceof Error);return()=>e()?x.error.message:String(x.error)})()),e}}),null),X(i,W(K,{get when(){return x.loading},get children(){return Ad()}}),null),X(i,W(K,{get when(){return C()},children:e=>[W(K,{get when(){return e().settings.hasProjectEnabledModelsOverride},get children(){return Nd()}}),W(K,{get when(){return P()},children:e=>(()=>{var t=zd();return X(t,e),t})()}),W(G,{get each(){return e().settings.scopeWarnings},children:e=>(()=>{var t=zd();return X(t,()=>e.message),t})()}),W(G,{get each(){return h()},children:e=>(()=>{var t=zd();return X(t,e),t})()}),W(K,{get when(){return p()},children:e=>(()=>{var t=kd();return X(t,e),t})()}),W(K,{get when(){return A()},children:e=>(()=>{var t=kd();return X(t,e),t})()}),(()=>{var i=Pd(),a=i.firstChild,o=a.nextSibling;return a.$$input=e=>n(e.currentTarget.value),o.$$click=()=>I(e().models.map(Gd)),j(()=>o.disabled=r()),j(()=>a.value=t()),i})(),(()=>{var t=Fd(),n=t.firstChild,i=n.firstChild.nextSibling,o=n.nextSibling;return o.firstChild,X(i,(()=>{var e=q(()=>!!r());return()=>e()?`All available models, in registry order (future models included).`:`${a().length} enabled model${a().length===1?``:`s`}.`})()),X(n,W(G,{get each(){return a()},children:(e,t)=>(()=>{var n=Bd(),i=n.firstChild,o=i.nextSibling.firstChild,s=o.nextSibling;return Y(i,`title`,e),X(i,e),o.$$click=()=>z(t(),-1),Y(o,`aria-label`,`Move ${e} up`),s.$$click=()=>z(t(),1),Y(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),X(o,W(K,{get when(){return O().length>0},get fallback(){return Vd()},get children(){return W(G,{get each(){return O()},children:t=>(()=>{var n=Hd(),r=n.firstChild.firstChild,i=r.nextSibling;return r.addEventListener(`change`,()=>R(t.provider)),X(i,()=>t.provider),X(n,W(G,{get each(){return t.models},children:e=>{let t=Gd(e);return(()=>{var n=Wd(),r=n.firstChild,i=r.nextSibling;return Y(n,`title`,t),r.addEventListener(`change`,()=>L(t)),X(i,()=>e.id),X(n,W(K,{get when(){return e.name},get children(){var t=Ud();return X(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(Gd(e)))),n})()})}}),null),t})(),(()=>{var e=Rd(),t=e.firstChild,n=t.nextSibling;return t.$$click=ee,n.$$click=()=>void te(),X(n,()=>l()?`saving…`:`save`),X(e,W(K,{get when(){return s()},get children(){return Id()}}),null),X(e,W(K,{get when(){return d()},get children(){return Ld()}}),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})()}Ae([`input`,`click`]);var Jd=[{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)`}],Yd=Jd.map(e=>e.id),Xd=[`system`,`light`,`dark`],Zd=`dreb.dashboard.theme`,Qd=`dreb.dashboard.colorMode`,$d=`default`,ef=`system`;function tf(e){return typeof e==`string`&&Yd.includes(e)}function nf(e){return typeof e==`string`&&Xd.includes(e)}function rf(){if(typeof window>`u`)return $d;try{let e=window.localStorage.getItem(Zd);return tf(e)?e:$d}catch{return $d}}function af(){if(typeof window>`u`)return ef;try{let e=window.localStorage.getItem(Qd);return nf(e)?e:ef}catch{return ef}}function of(e,t,n){if(!(typeof window>`u`))try{t===n?window.localStorage.removeItem(e):window.localStorage.setItem(e,t)}catch{}}var[sf,cf]=k(rf()),[lf,uf]=k(af()),df=sf,ff=lf;function pf(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 mf(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=t.documentElement;if(!n)return;let r=sf(),i=lf();if(r===$d?n.removeAttribute(`data-theme`):n.setAttribute(`data-theme`,r),i===ef?n.removeAttribute(`data-color-mode`):n.setAttribute(`data-color-mode`,i),!(r!==$d||i!==ef))n.style.removeProperty(`color-scheme`);else{let e=i===`light`?`light`:i===`dark`?`dark`:`light dark`;n.style.setProperty(`color-scheme`,e)}}catch{}}function hf(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=pf(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 gf(e){let t=tf(e)?e:$d;cf(t),of(Zd,t,$d),mf(),hf()}function _f(e){let t=nf(e)?e:ef;uf(t),of(Qd,t,ef),mf(),hf()}var vf=null,yf=!1;function bf(){lf()===ef&&hf()}function xf(e){e.key!==null&&e.key!==`dreb.dashboard.theme`&&e.key!==`dreb.dashboard.colorMode`||Sf()}function Sf(){cf(rf()),uf(af()),mf(),hf()}function Cf(){if(!(typeof window>`u`)){try{typeof window.matchMedia==`function`&&(vf=window.matchMedia(`(prefers-color-scheme: dark)`),typeof vf.addEventListener==`function`?vf.addEventListener(`change`,bf):typeof vf.addListener==`function`&&vf.addListener(bf))}catch{}try{window.addEventListener(`storage`,xf)}catch{}}}function wf(){Sf(),!yf&&(yf=!0,Cf())}var Tf=J(`<div class=appearance-controls><div class=setting-row><span class=setting-label><span class=name>color mode</span><span class=hint>this browser only — “system” follows your OS light/dark preference</span></span><span class=setting-control><select id=pref-color-mode></select></span></div><div class=theme-gallery>`),Ef=J(`<option>`),Df=J(`<button type=button class=theme-card><div class=theme-card-preview><div class=theme-card-swatch><span class=theme-card-name></span><span class=theme-card-muted>The quick brown fox.</span></div><div class=theme-card-chips></div><pre class=theme-card-code><code class=hljs><span class=hljs-keyword>const</span> <span class=hljs-variable>count</span><span class=hljs-operator> = </span><span class=hljs-number>42</span><span class=hljs-punctuation>;</span>
|
|
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>`),Of=[`running`,`attention`,`idle`,`error`];function kf(){let e=()=>{let e=ff();return e===`system`?void 0:e};return(()=>{var t=Tf(),n=t.firstChild,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling;return r.addEventListener(`change`,e=>_f(e.currentTarget.value)),X(r,W(G,{each:Xd,children:e=>(()=>{var t=Ef();return t.value=e,X(t,e),t})()})),X(i,W(G,{each:Jd,children:t=>{let n=()=>df()===t.id;return(()=>{var r=Df(),i=r.firstChild,a=i.firstChild,o=a.firstChild,s=a.nextSibling,c=i.nextSibling.firstChild,l=c.nextSibling;return r.$$click=()=>gf(t.id),X(o,()=>t.label),X(s,W(G,{each:Of,children:e=>W($e,{status:e,label:``})})),X(c,()=>t.label),X(l,()=>n()?`✓ active`:`select`),j(i=>{var a=!!n(),o=t.id,s=t.id,c=e(),l=n(),u=n()?`true`:void 0,d=`use the ${t.label} theme`;return a!==i.e&&r.classList.toggle(`active`,i.e=a),o!==i.t&&Y(r,`data-theme-card`,i.t=o),s!==i.a&&Y(r,`data-theme`,i.a=s),c!==i.o&&Y(r,`data-color-mode`,i.o=c),l!==i.i&&Y(r,`aria-pressed`,i.i=l),u!==i.n&&Y(r,`aria-current`,i.n=u),d!==i.s&&Y(r,`title`,i.s=d),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),r})()}})),j(()=>r.value=ff()),t})()}Ae([`click`]);var Af=J(`<select><option value=on>on</option><option value=off>off`),jf=J(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),Mf=J(`<div class=model-list style=max-height:320px>`),Nf=J(`<p class="muted small">No matching models.`),Pf=J(`<section class=model-provider-group><div class=model-provider-heading>`),Ff=J(`<span class=model-name>`),If=J(`<span class=model-reasoning>think`),Lf=J(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),Rf=J(`<div class=settings-error>`),zf=J(`<div class=settings-warning>`),Bf=J(`<p class="muted small"style=margin-bottom:16px>✓ saved`),Vf=J(`<div class=setting-row><span class=setting-label><span class=name>pairing code</span><span class=hint>new devices enter this in the pairing screen; it rotates every 30s</span></span><span class=setting-control><code style=font-size:var(--fs-h2);letter-spacing:0.08em>`),Hf=J(`<p class="muted small"style=padding-top:8px>No remote devices paired. Launch with <code>--remote --allow <identity></code> to enable Tailscale access.`),Uf=J(`<p>This exits the dashboard server process and terminates <strong>all running sessions</strong>.`),Wf=J(`<div class=screen-fill><main class="container settings-wrap"><h1>settings</h1><p class=settings-intro>Ordinary defaults apply only to new sessions. Dispatch Arbiter changes apply to subsequent child spawns. Context trust changes apply to subsequent lazy loads in live sessions; already injected content cannot be retracted. Writes go to the global settings file on the host.</p><section class=settings-section><h2>dashboard</h2><div class=appearance-block><div class="setting-row appearance-heading-row"><span class=setting-label><span class=name>appearance</span><span class=hint>this browser only — theme and light/dark mode are stored in localStorage and are independent of the TUI theme. Okabe-Ito and Paul Tol are colorblind-safe palettes.</span></span></div></div><div class=setting-row><label class=setting-label for=pref-image-display-mode><span class=name>tool-result images</span><span class=hint>this browser only — placeholders make no automatic request, previews are bounded to 1024 px and 256 KiB, and originals automatically transfer full files. Choosing originals is the informed network-data opt-in.</span></label><span class=setting-control><select id=pref-image-display-mode><option value=placeholders>placeholders</option><option value=previews>bounded previews</option><option value=originals>automatic originals</option></select></span></div><div class=setting-row><span class=setting-label><span class=name>always expand thinking</span><span class=hint>this browser only — stored in localStorage, not the host settings file</span></span><span class=setting-control><label class=checkbox-control><input id=pref-expand-thinking type=checkbox><span>open by default</span></label></span></div><div class=setting-row><span class=setting-label><span class=name>auto-expand tool cards</span><span class=hint>this browser only — stored in localStorage, not the host settings file</span></span><span class=setting-control style=display:grid;gap:6px></span></div><div class=setting-row><span class=setting-label><span class=name>needs-attention notifications</span><span class=hint></span></span><span class=setting-control><label class=checkbox-control><input id=pref-notifications type=checkbox><span></span></label></span></div><div class=setting-row><span class=setting-label><span class=name>restart dashboard service</span><span class=hint></span></span><span class=setting-control><button type=button class="btn btn-small btn-danger"></button></span></div></section><section class=settings-section><h2>devices</h2><div class=device-row><span>this machine <span class=this-device></span></span><span class=meta>local · always allowed</span></div></section><footer>dreb<!> · dashboard`),Gf=J(`<div>`),Kf=J(`<p class=muted>`),qf=J(`<section class=settings-section><h2>model</h2><div class=setting-row><span class=setting-label><span class=name>default model</span><span class=hint>used by new sessions; validated against configured providers</span></span><span class=setting-control><button type=button class="btn btn-small model-picker-button"></button></span></div><div class=setting-row><span class=setting-label><span class=name>default thinking level</span><span class=hint></span></span><span class=setting-control><select></select></span></div><div class=setting-row><span class=setting-label><span class=name>transport</span><span class=hint>preferred model transport for new sessions</span></span><span class=setting-control><select>`),Jf=J(`<section class="settings-section dispatch-arbiter-settings"><h2>dispatch arbiter</h2><p class="muted small"style=margin-bottom:8px>Global-only, fully headless pre-spawn routing. Project settings cannot change it. When enabled, invalid model, scope, guide, inference, or output prevents the affected child from spawning.</p><div class=setting-row><span class=setting-label><span class=name>enabled</span><span class=hint>disabled by default; fail closed when enabled</span></span><span class=setting-control></span></div><div class=setting-row><span class=setting-label><span class=name>arbiter model</span><span class=hint>exact authenticated provider/model; no fallback</span></span><span class=setting-control><button type=button class="btn btn-small model-picker-button"></button></span></div><div class=setting-row><span class=setting-label><span class=name>arbiter thinking</span><span class=hint>validated against the selected arbiter model</span></span><span class=setting-control><select></select></span></div><div class=setting-row><label class=setting-label for=dispatch-arbiter-guide-path><span class=name>routing guide path</span><span class=hint>blank uses ~/.dreb/agent/model-routing-guide.md</span></label><span class=setting-control><input id=dispatch-arbiter-guide-path type=text placeholder=~/.dreb/agent/model-routing-guide.md></span></div><div data-testid=dispatch-arbiter-readiness><strong>status:</strong> `),Yf=J(`<div class="setting-row agent-context-row"><span class=setting-label><span class=name>agent definition context</span><span class=hint>choose a project to include its .dreb/agents definitions</span></span><span class=setting-control><select><option value>global/home only`),Xf=J(`<section class=settings-section><h2>agent models</h2><p class="muted small"style=margin-bottom:8px>Per-agent fallback lists. First available model wins; empty lists revert to the default model. Agent definitions are loaded from an explicit project context so project-local agents do not depend on which runtime opened first.`),Zf=J(`<section class=settings-section><h2>images</h2><div class=setting-row><span class=setting-label><span class=name>auto-resize images</span><span class=hint>resize image inputs before sending them to providers</span></span><span class=setting-control></span></div><div class=setting-row><span class=setting-label><span class=name>block images</span><span class=hint>prevent image inputs from being sent to providers</span></span><span class=setting-control>`),Qf=J(`<section class=settings-section><h2>queueing</h2><div class=setting-row><span class=setting-label><span class=name>steering delivery</span><span class=hint>deliver queued steers all at once, or one per turn</span></span><span class=setting-control><select></select></span></div><div class=setting-row><span class=setting-label><span class=name>follow-up delivery</span><span class=hint>deliver queued follow-ups all at once, or one per turn</span></span><span class=setting-control><select>`),$f=J(`<section class=settings-section><h2>behavior</h2><div class=setting-row><span class=setting-label><span class=name>skill slash commands</span><span class=hint>register skills as slash commands in new sessions</span></span><span class=setting-control></span></div><div class=context-trust-subsection><h3>trusted context folders</h3><p class="muted small">Specific global roots that may lazy-load nested AGENTS.md/CLAUDE.md and all descendants.</p><div class="settings-warning context-trust-global-warning"><strong>Global-only policy.</strong> Project <code>.dreb/settings.json</code> cannot enable, disable, or extend nested-context trust. Only these global settings and the Files view can; a cloned repository cannot grant itself trust.</div><form class=trusted-context-folder-add><label for=trusted-context-folder-path>add folder by path</label><input id=trusted-context-folder-path type=text placeholder=/path/to/project><button type=submit class="btn btn-small"></button></form></div><div class=setting-row><span class=setting-label><span class=name>global expert nested-context trust</span><span class=hint>allow nested AGENTS.md/CLAUDE.md from any resolvable directory</span></span><span class=setting-control></span></div><div class="settings-warning context-expert-warning"><strong>Expert global override.</strong> Project <code>.dreb/settings.json</code> cannot enable, disable, or extend nested-context trust; a cloned repository cannot grant itself trust. When ON, nested instructions from any resolvable directory may load, including untrusted prompt-injection content. Leave this OFF and use trusted folders for projects you control.</div><div class=setting-row><span class=setting-label><span class=name>hide thinking blocks</span><span class=hint>hide raw thinking blocks in rendered transcripts</span></span><span class=setting-control>`),ep=J(`<section class=settings-section><h2>reliability</h2><div class=setting-row><span class=setting-label><span class=name>auto-compaction</span><span class=hint>summarize old context when the window fills</span></span><span class=setting-control></span></div><div class=setting-row><span class=setting-label><span class=name>auto-retry</span><span class=hint>retry transient stream errors (rate limits, 5xx)</span></span><span class=setting-control>`),tp=J(`<p class="muted small settings-footnote">TUI-only settings (cursor, editor) are managed in the terminal /settings menu. The dashboard appearance (theme + light/dark mode) is set here, per-browser, and is independent of the TUI theme.`),np=J(`<option>`),rp=J(`<p class="muted small">No agent definitions found.`),ip=J(`<div class=agent-model-editor><button type=button class="btn btn-small">add model…`),ap=J(`<div class=agent-model-row><div class=agent-model-summary><span class=agent-model-name></span><span class=agent-model-description></span></div><div class=agent-model-fallbacks></div><button type=button class="btn btn-small agent-model-edit">`),op=J(`<span class="muted small">default`),sp=J(`<span class=agent-model-chip>. `),cp=J(`<p class="muted small">Using the default model.`),lp=J(`<div class=agent-model-entry><span></span><div class=agent-model-entry-actions><button type=button class="btn btn-small">↑</button><button type=button class="btn btn-small">↓</button><button type=button class="btn btn-small">×`),up=J(`<p class="muted small trusted-context-empty">No trusted folders. Use the Files view to trust a project folder and its descendants.`),dp=J(`<div class=trusted-context-folder-row><code></code><span class=meta>and all descendants</span><button type=button class="btn btn-small btn-danger">`),fp=J(`<label class=checkbox-control><input type=checkbox><span>`),pp=J(`<div class=device-row><span></span><span class=meta> · paired </span><span class=actions><button type=button class="btn btn-small btn-danger">unpair`),mp=J(`<button type=button class="btn btn-small">cancel`),hp=J(`<button type=button class="btn btn-small btn-danger">restart`),gp=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],_p=[`all`,`one-at-a-time`],vp=[`sse`,`websocket`,`auto`];function yp(e){return`${e.provider}/${e.id}`}function bp(e){let t=yp(e);return e.name?`${t} — ${e.name}`:t}function xp(e){return e.defaultProvider&&e.defaultModel?`${e.defaultProvider}/${e.defaultModel}`:`choose model…`}function Sp(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function Cp(){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 wp(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 Tp(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 Ep(e){return(()=>{var t=Af();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 Dp(e){let[t,n]=k(``),r=()=>new Set(e.selected??[]),i=N(()=>{let n=t().toLowerCase();return wp(e.models.filter(e=>!n||Sp(e,n)).slice(0,100))}),a=e=>r().has(yp(e));return W(rt,{get title(){return e.title},get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[(()=>{var e=jf(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e})(),(()=>{var t=Mf();return X(t,W(K,{get when(){return i().length>0},get fallback(){return Nf()},get children(){return W(G,{get each(){return i()},children:t=>(()=>{var n=Pf(),r=n.firstChild;return X(r,()=>t.provider),X(n,W(G,{get each(){return t.models},children:t=>(()=>{var n=Lf(),r=n.firstChild,i=r.nextSibling,o=i.nextSibling;return n.$$click=()=>e.onPick(t),X(r,()=>a(t)?`✓`:``),X(i,()=>t.id),X(n,W(K,{get when(){return t.name},get children(){var e=Ff();return X(e,()=>t.name),e}}),o),X(o,()=>t.provider),X(n,W(K,{get when(){return t.reasoning},get children(){return If()}}),null),j(e=>{var r=!!a(t),i=bp(t);return r!==e.e&&n.classList.toggle(`current`,e.e=r),i!==e.t&&Y(n,`title`,e.t=i),e},{e:void 0,t:void 0}),n})()}),null),n})()})}})),t})()]}})}function Op(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(Cp()),[x,{mutate:S,refetch:C}]=F(async()=>{n(void 0);try{return await Q.settings()}catch(e){n(e instanceof Error?e.message:String(e));return}}),[w]=F(x,async()=>{try{let{models:e}=await Q.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 Q.agentTypes(e);return t}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),[D,{refetch:O}]=F(async()=>{let{devices:e}=await Q.devices();return e}),[A,P]=k(),I;function L(){I&&clearTimeout(I),I=void 0}function ee(e){L();let t=Math.max(250,e??3e4)+100;I=setTimeout(()=>void te(),t)}async function te(){try{let e=await Q.pairingCode();if(!e.enabled||!e.code){P(void 0),L();return}P(e),ee(e.expiresInMs)}catch(e){console.warn(`pairing code unavailable`,e),P(void 0),L()}}let[ne]=F(async()=>{try{let{version:e}=await Q.version();return e}catch{return}}),[re]=F(async()=>{try{return await Q.serverInfo()}catch{return}}),[ie,ae]=k(!1),[B,oe]=k(!1),[V,se]=k();async function H(){se(void 0),oe(!0);try{await Q.restartServer()}catch(e){se(e instanceof Error?e.message:String(e)),oe(!1)}}async function ce(e){n(void 0),i([]),o(!1);try{let t=await Q.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 le=Promise.resolve(),U;function ue(){return U??x()?.subagentArbiter??{}}function de(e){let t={...ue(),...e};U=t;let r=x();r&&S({...r,subagentArbiter:t}),le=le.then(async()=>{n(void 0),i([]),o(!1);try{let e=await Q.saveSettings({subagentArbiter:t});i(e.warnings??[]),o(!0),setTimeout(()=>o(!1),2e3),U===t?(U=e.subagentArbiter??void 0,S(e)):S({...e,subagentArbiter:U})}catch(e){let r=e instanceof Error?e.message:String(e),i=await C();n(r),U===t?U=i?.subagentArbiter??void 0:i&&S({...i,subagentArbiter:U})}})}async function fe(e,t){await ce({agentModels:{[e]:t}})}async function pe(e){n(void 0),v(!0);try{let t=await Q.trustContextFolder(e);S(t.settings),g(``)}catch(e){n(e instanceof Error?e.message:String(e))}finally{v(!1)}}async function me(e){n(void 0),v(!0);try{let t=await Q.removeTrustedContextFolder(e);S(t.settings)}catch(e){n(e instanceof Error?e.message:String(e))}finally{v(!1)}}function he(e){return x()?.agentModels?.[e]??[]}function ge(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&&!gp.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 _e(){typeof Notification>`u`||b(await Notification.requestPermission())}R(()=>void te()),z(L);let ve=()=>e.store.auth();return(()=>{var i=Wf(),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,I=F.firstChild,L=I.firstChild.nextSibling,R=I.nextSibling.firstChild.firstChild,z=R.nextSibling,ee=F.nextSibling.firstChild,te=ee.firstChild.nextSibling,oe=ee.nextSibling.firstChild,se=v.nextSibling,le=se.firstChild.nextSibling.firstChild.firstChild.nextSibling,U=se.nextSibling,ye=U.firstChild.nextSibling;return ye.nextSibling,X(i,W(tt,{get store(){return e.store},active:`settings`}),o),X(o,W(K,{get when(){return t()},get children(){var e=Rf();return X(e,t),e}}),v),X(o,W(K,{get when(){return r().length>0},get children(){var e=zf();return X(e,W(G,{get each(){return r()},children:e=>(()=>{var t=Gf();return X(t,e),t})()})),e}}),v),X(o,W(K,{get when(){return a()},get children(){return Bf()}}),v),X(o,W(K,{get when(){return x()},get fallback(){return(()=>{var e=Kf();return X(e,()=>t()?`Settings could not be loaded — see the error above.`:`Loading settings…`),e})()},children:t=>[(()=>{var e=qf(),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`}),X(r,()=>xp(t())),X(o,()=>gp.join(` · `)),s.addEventListener(`change`,e=>ce({defaultThinkingLevel:e.currentTarget.value})),X(s,W(G,{each:gp,children:e=>(()=>{var t=np();return t.value=e,X(t,e),t})()})),l.addEventListener(`change`,e=>ce({transport:e.currentTarget.value})),X(l,W(G,{get each(){return[...vp]},children:e=>(()=>{var t=np();return t.value=e,X(t,e),t})()})),j(()=>s.value=t().defaultThinkingLevel??`off`),j(()=>l.value=t().transport??`sse`),e})(),W(qd,{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=Jf(),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,X(i,W(Ep,{get value(){return t().subagentArbiter?.enabled===!0},onChange:e=>{let t=ue();return e&&(typeof t.model!=`string`||!t.model.trim())?(n(`Choose an exact Dispatch Arbiter model before enabling it.`),c({kind:`arbiter`}),!1):(de({enabled:e}),!0)}})),o.$$click=()=>c({kind:`arbiter`}),X(o,(()=>{var e=q(()=>typeof t().subagentArbiter?.model==`string`);return()=>e()?t().subagentArbiter?.model:`choose model…`})()),l.addEventListener(`change`,e=>de({thinking:e.currentTarget.value})),X(l,W(G,{each:gp,children:e=>(()=>{var t=np();return t.value=e,X(t,e),t})()})),d.addEventListener(`change`,e=>{de({guidePath:e.currentTarget.value.trim()||void 0})}),X(f,()=>ge(t()).message,null),j(()=>je(f,ge(t()).ready?`settings-warning`:`muted small`)),j(()=>l.value=typeof t().subagentArbiter?.thinking==`string`&&gp.some(e=>e===t().subagentArbiter?.thinking)?t().subagentArbiter?.thinking:`off`),j(()=>d.value=typeof t().subagentArbiter?.guidePath==`string`?t().subagentArbiter?.guidePath:``),e})(),(()=>{var e=Xf();return e.firstChild.nextSibling,X(e,W(K,{get when(){return T().length>0},get children(){var e=Yf(),t=e.firstChild.nextSibling.firstChild;return t.firstChild,t.addEventListener(`change`,e=>f(e.currentTarget.value||void 0)),X(t,W(G,{get each(){return T()},children:e=>(()=>{var t=np();return t.value=e,X(t,e),t})()}),null),j(()=>Y(t,`title`,d()??`global/home only`)),j(()=>t.value=d()??``),e}}),null),X(e,W(K,{get when(){return(E()??[]).length>0},get fallback(){return rp()},get children(){return W(G,{get each(){return E()??[]},children:e=>{let n=()=>t().agentModels?.[e.name]??[];return(()=>{var t=ap(),r=t.firstChild,i=r.firstChild,a=i.nextSibling,o=r.nextSibling,s=o.nextSibling;return X(i,()=>e.name),X(a,()=>e.description),X(o,W(K,{get when(){return n().length>0},get fallback(){return op()},get children(){return W(G,{get each(){return n()},children:(e,t)=>(()=>{var n=sp(),r=n.firstChild;return X(n,()=>t()+1,r),X(n,e,null),n})()})}})),s.$$click=()=>u(l()===e.name?void 0:e.name),X(s,()=>l()===e.name?`done`:`edit`),X(t,W(K,{get when(){return l()===e.name},get children(){var t=ip(),r=t.firstChild;return X(t,W(K,{get when(){return n().length>0},get fallback(){return cp()},get children(){return W(G,{get each(){return n()},children:(t,r)=>(()=>{var i=lp(),a=i.firstChild,o=a.nextSibling.firstChild,s=o.nextSibling,c=s.nextSibling;return X(a,t),o.$$click=()=>void fe(e.name,Tp(n(),r(),-1)),s.$$click=()=>void fe(e.name,Tp(n(),r(),1)),c.$$click=()=>void fe(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=Zf(),n=e.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return X(r,W(Ep,{get value(){return t().imageAutoResize!==!1},onChange:e=>ce({imageAutoResize:e})})),X(i,W(Ep,{get value(){return t().blockImages===!0},onChange:e=>ce({blockImages:e})})),e})(),(()=>{var e=Qf(),n=e.firstChild.nextSibling,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling.firstChild.nextSibling.firstChild;return r.addEventListener(`change`,e=>ce({steeringMode:e.currentTarget.value})),X(r,W(G,{get each(){return[..._p]},children:e=>(()=>{var t=np();return t.value=e,X(t,e),t})()})),i.addEventListener(`change`,e=>ce({followUpMode:e.currentTarget.value})),X(i,W(G,{get each(){return[..._p]},children:e=>(()=>{var t=np();return t.value=e,X(t,e),t})()})),j(()=>r.value=t().steeringMode??`all`),j(()=>i.value=t().followUpMode??`all`),e})(),(()=>{var e=$f(),n=e.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling,a=i.firstChild.nextSibling.nextSibling.nextSibling,o=a.firstChild.nextSibling,s=o.nextSibling,c=i.nextSibling,l=c.firstChild.nextSibling,u=c.nextSibling.nextSibling.firstChild.nextSibling;return X(r,W(Ep,{get value(){return t().enableSkillCommands!==!1},onChange:e=>ce({enableSkillCommands:e})})),X(i,W(K,{get when(){return(t().trustedContextFolders??[]).length>0},get fallback(){return up()},get children(){return W(G,{get each(){return t().trustedContextFolders??[]},children:e=>(()=>{var t=dp(),n=t.firstChild,r=n.nextSibling.nextSibling;return X(n,e),r.$$click=()=>void me(e),X(r,()=>_()?`revoking…`:`revoke trust`),j(()=>r.disabled=_()),t})()})}}),a),a.addEventListener(`submit`,e=>{e.preventDefault();let t=h().trim();t&&pe(t)}),o.$$input=e=>g(e.currentTarget.value),X(s,()=>_()?`trusting…`:`trust folder`),X(l,W(Ep,{get value(){return t().autoLoadNestedContext===!0},onChange:e=>ce({autoLoadNestedContext:e})})),X(u,W(Ep,{get value(){return t().hideThinkingBlock===!0},onChange:e=>ce({hideThinkingBlock:e})})),j(()=>s.disabled=_()||!h().trim()),j(()=>o.value=h()),e})(),(()=>{var e=ep(),n=e.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return X(r,W(Ep,{get value(){return t().compactionEnabled!==!1},onChange:e=>ce({compactionEnabled:e})})),X(i,W(Ep,{get value(){return t().retryEnabled!==!1},onChange:e=>ce({retryEnabled:e})})),e})(),tp()]}),v),X(b,W(kf,{}),null),C.addEventListener(`change`,e=>rs(e.currentTarget.value)),M.addEventListener(`change`,e=>ns(e.currentTarget.checked)),X(P,W(G,{each:Ro,children:e=>(()=>{var t=fp(),n=t.firstChild,r=n.nextSibling;return n.addEventListener(`change`,t=>is(e,t.currentTarget.checked)),Y(n,`id`,`pref-tool-expand-${e}`),X(r,e),j(()=>n.checked=as(e)),t})()})),X(L,(()=>{var e=q(()=>y()===`denied`);return()=>e()?`blocked by browser settings — re-enable notifications in site permissions`:q(()=>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`:q(()=>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)`})()),R.addEventListener(`change`,e=>{e.currentTarget.checked&&_e()}),X(z,()=>y()===`granted`?`enabled`:`enable notifications`),X(te,()=>re()?.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`),oe.$$click=()=>ae(!0),X(oe,()=>B()?`restarting…`:`restart`),X(v,W(K,{get when(){return V()},get children(){var e=Rf();return X(e,V),e}}),null),X(le,()=>ve()?.mode===`local`?`local`:`host`),X(se,W(K,{get when(){return q(()=>!!A()?.enabled)()&&A()?.code},get children(){var e=Vf(),t=e.firstChild.nextSibling.firstChild;return X(t,()=>A().code),e}}),null),X(se,W(G,{get each(){return D()??[]},children:e=>(()=>{var t=pp(),n=t.firstChild,r=n.nextSibling,i=r.firstChild,a=r.nextSibling.firstChild;return X(n,()=>e.device??e.id),X(r,()=>e.identity,i),X(r,()=>at(e.createdAt),null),a.$$click=async()=>{await Q.unpair(e.id),await O()},t})()}),null),X(se,W(K,{get when(){return(D()??[]).length===0},get children(){return Hf()}}),null),X(U,(()=>{var e=q(()=>!!re()?.version);return()=>e()?` v${re().version}`:q(()=>!!ne())()?` v${ne()}`:``})(),ye),X(U,W(K,{get when(){return re()?.startedAt},get children(){return[` · server build, up `,q(()=>at(re().startedAt))]}}),null),X(i,W(K,{get when(){return ie()},get children(){return W(rt,{title:`restart dashboard service?`,onDismiss:()=>ae(!1),get actions(){return[(()=>{var e=mp();return e.$$click=()=>ae(!1),e})(),(()=>{var e=hp();return e.$$click=()=>{ae(!1),H()},e})()]},get children(){var e=Uf();return e.firstChild.nextSibling.nextSibling,X(e,()=>re()?.supervised?` A supervisor is detected — the server should respawn automatically with the latest build.`:` No supervisor was detected — the dashboard will NOT come back on its own; you'll need to relaunch it manually.`,null),e}})}}),null),X(i,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]:[]:he(t.agentName)};return W(Dp,{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"){ce({defaultProvider:t.provider,defaultModel:t.id});return}if(n.kind===`arbiter`){de({model:yp(t)});return}let r=yp(t),i=he(n.agentName);i.includes(r)||fe(n.agentName,[...i,r])}})}}),null),j(e=>{var t=y()===`denied`||y()===`unsupported`||y()===`ios-install`||y()===`insecure`,n=B();return t!==e.e&&(R.disabled=e.e=t),n!==e.t&&(oe.disabled=e.t=n),e},{e:void 0,t:void 0}),j(()=>C.value=ts()),j(()=>M.checked=es()),j(()=>R.checked=y()===`granted`),i})()}Ae([`input`,`click`]);var kp=J(`<div class="status-line arbitration-history">`),Ap=J(`<p class=pair-error>`),jp=J(`<div class=status-line><span class=working>● working`),Mp=J(`<div class=session-screen><header class=session-bar><div class=session-bar-inner><a class=back>← </a><span class=agent-type>subagent · </span><span class=title></span><span class=right></span></div></header><main class=chat><div class=chat-inner></div></main><footer class=dock><div class=dock-inner><div class=readonly-note>viewing live — subagents can't be steered yet; the parent session controls this agent.`),Np=J(`<span>arbiter: `),Pp=J(`<p class=muted>`);function Fp(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 Ip(e){let t=()=>e.store.sessions[e.sessionKey],n=N(()=>t()?.backgroundAgents[e.agentId]),r=()=>t()?.subagents[e.agentId],i=N(()=>e.store.fleet().runtimes.find(t=>t.key===e.sessionKey)),a=()=>i()?.state.sessionName??e.sessionKey,[o,s]=k(),c,l,u=Mo({scroller:()=>c});return R(()=>{let t=new AbortController;e.store.hydrateSubagent(e.sessionKey,e.agentId,t.signal).catch(e=>{t.signal.aborted&&sl(e)||s(e instanceof Error?e.message:String(e))}),z(()=>t.abort())}),M(()=>{e.store.revisions[e.sessionKey],u.notifyContentChanged()}),R(()=>{u.observeContent(l),u.observeViewport(c),c&&z(Po(u,c,{keyboard:`window`}))}),z(()=>u.dispose()),(()=>{var t=Mp(),i=t.firstChild,s=i.firstChild.firstChild;s.firstChild;var u=s.nextSibling;u.firstChild;var d=u.nextSibling,f=d.nextSibling,p=i.nextSibling,m=p.firstChild,h=p.nextSibling.firstChild,g=h.firstChild;X(s,a,null),X(u,()=>n()?.agentType??`unknown`,null),X(d,()=>n()?.taskSummary??e.agentId),X(f,W(K,{get when(){return n()?.status===`running`},get fallback(){return W($e,{get status(){return n()?.status===`failed`?`error`:`idle`},get label(){return n()?.status}})},get children(){return W($e,{status:`running`})}}));var _=c;typeof _==`function`?Fe(_,p):c=p;var v=l;return typeof v==`function`?Fe(v,m):l=m,X(m,W(K,{get when(){return(n()?.arbitrations?.length??0)>0},get children(){var e=kp();return X(e,W(G,{get each(){return n()?.arbitrations??[]},children:e=>(()=>{var t=Np();return t.firstChild,X(t,()=>Fp(e),null),j(()=>je(t,e.status===`failure`?`error-reason`:`muted`)),t})()})),e}}),null),X(m,W(K,{get when(){return o()},get children(){var e=Ap();return X(e,o),e}}),null),X(m,W(K,{get when(){return q(()=>!!r())()&&r().entries.length>0},get fallback(){return(()=>{var e=Pp();return X(e,()=>n()?`waiting for output from this agent…`:`no data for this agent — it may not have started writing its session log yet.`),e})()},get children(){return W(xc,{get entries(){return r().entries},get who(){return n()?.agentType??`agent`},userLabel:`task from parent`,get resetKey(){return`${e.sessionKey}:${e.agentId}`},get imageScope(){return{runtimeKey:e.sessionKey,agentId:e.agentId}}})}}),null),X(h,W(K,{get when(){return r()?.streaming},get children(){return jp()}}),g),j(()=>Y(s,`href`,`#/session/${e.sessionKey}`)),t})()}var Lp=Symbol(`store-raw`),Rp=Symbol(`store-node`),zp=Symbol(`store-has`),Bp=Symbol(`store-self`);function Vp(e){let t=e[p];if(!t&&(Object.defineProperty(e,p,{value:t=new Proxy(e,Yp)}),!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 Hp(e){let t;return typeof e==`object`&&!!e&&(e[p]||!(t=Object.getPrototypeOf(e))||t===Object.prototype||Array.isArray(e))}function Up(e,t=new Set){let n,r,i,a;if(n=e!=null&&e[Lp])return n;if(!Hp(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=Up(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=Up(i,t))!==i&&(e[a]=r))}return e}function Wp(e,t){let n=e[t];return n||Object.defineProperty(e,t,{value:n=Object.create(null)}),n}function Gp(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 Kp(e,t){let n=Reflect.getOwnPropertyDescriptor(e,t);return!n||n.get||!n.configurable||t===p||t===Rp?n:(delete n.value,delete n.writable,n.get=()=>e[p][t],n)}function qp(e){ee()&&Gp(Wp(e,Rp),Bp)()}function Jp(e){return qp(e),Reflect.ownKeys(e)}var Yp={get(e,t,n){if(t===Lp)return e;if(t===p)return n;if(t===m)return qp(e),n;let r=Wp(e,Rp),i=r[t],a=i?i():e[t];if(t===Rp||t===zp||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=Gp(r,t,a)())}return Hp(a)?Vp(a):a},has(e,t){return t===Lp||t===p||t===m||t===Rp||t===zp||t===`__proto__`?!0:(ee()&&Gp(Wp(e,zp),t)(),t in e)},set(){return!0},deleteProperty(){return!0},ownKeys:Jp,getOwnPropertyDescriptor:Kp};function Xp(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[zp]&&e[zp][t]&&i!==void 0&&e[zp][t].$()):(e[t]=n,e[zp]&&e[zp][t]&&i===void 0&&e[zp][t].$());let o=Wp(e,Rp),s;if((s=Gp(o,t,i))&&s.$(()=>n),Array.isArray(e)&&e.length!==a){for(let t=e.length;t<a;t++)(s=o[t])&&s.$();(s=Gp(o,`length`,a))&&s.$(e.length)}(s=o[Bp])&&s.$()}function Zp(e,t){let n=Object.keys(t);for(let r=0;r<n.length;r+=1){let i=n[r];Qp(i)||Xp(e,i,t[i])}}function Qp(e){return e===`__proto__`||e===`constructor`||e===`prototype`}function $p(e,t){if(typeof t==`function`&&(t=t(e)),t=Up(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&&Xp(e,n,r)}Xp(e,`length`,r)}else Zp(e,t)}function em(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&&Qp(r)))return;if(Array.isArray(r)){for(let i=0;i<r.length;i++)em(e,[r[i]].concat(t),n);return}else if(o&&a===`function`){for(let i=0;i<e.length;i++)r(e[i],i)&&em(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)em(e,[r].concat(t),n);return}else if(t.length>1){em(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=Up(a),r===void 0||Hp(i)&&Hp(a)&&!Array.isArray(a)?Zp(i,a):Xp(e,r,a))}function tm(...[e,t]){let n=Up(e||{}),r=Array.isArray(n),i=Vp(n);function a(...e){I(()=>{r&&e.length===1?$p(n,e[0]):em(n,e)})}return[i,a]}var nm=new WeakMap,rm={get(e,t){if(t===Lp)return e;let n=e[t];if(t===p||t===m||t===Rp||t===zp||t===`__proto__`)return n;let r;return Hp(n)?nm.get(n)||(nm.set(n,r=new Proxy(n,rm)),r):n},set(e,t,n){return Xp(e,t,Up(n)),!0},deleteProperty(e,t){return Xp(e,t,void 0,!0),!0}};function im(e){return t=>{if(Hp(t)){let n;(n=nm.get(t))||nm.set(t,n=new Proxy(t,rm)),e(n)}return t}}function am(){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 om(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,lm=sm,um=cm,dm=3e4,fm=1e4,pm=1e3,mm=3e4,hm=new TextEncoder;function gm(e,t,n){e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`);let r=n.retryAttempt??0;if(n.isRetrying&&r>0){let t=e.entries.findLast(e=>e.kind===`assistant`&&e.stopReason===`error`),n=t?.errorMessage?` — ${t.errorMessage}`:``;e.statusEntries.push({key:`retry`,text:`retrying (attempt ${r})${n}`,tone:`warning`})}sn(e,t,n.isStreaming||n.isRetrying||n.isCompacting)}function _m(){let[e,t]=tm({}),[n,r]=tm({}),[i,a]=k(am()),[o,s]=k({runtimes:[],diskSessions:[]}),[c,l]=k(),[u,d]=k(),[f,p]=k(),[m,h]=k(!1),[g,_]=k(),[v,y]=k({state:`disconnected`,attempt:0}),b=()=>v().state===`connected`,[x,S]=k([]),C=new Map,w=new Map,T=new Map,E=0,D=0,O,A,j,M,N=!1,P=0,F=!1,I,L=0,R=new Map,z=new Map,ee=new Map,te=0,ne=0,re,ie=new Set,ae=!1;window.addEventListener(`hashchange`,()=>a(am()));function B(e){window.location.hash=om(e)}function oe(e){return n[e]??0}function V(e){return C.get(e)??0}function se(e){return w.get(e)??0}function H(e){w.set(e,se(e)+1)}function ce(e){C.set(e,V(e)+1)}function le(e){return{revision:oe(e),generation:V(e),epoch:E}}function U(e,t){return V(e)===t.generation&&E===t.epoch}function ue(e,t){return oe(e)===t.revision&&U(e,t)}function de(e,t){t&&T.get(e)!==t||(T.delete(e),t&&(t.queued=[],t.queuedBytes=0))}function fe(e){r(e,oe(e)+1)}function pe(n){e[n]||t(n,Vt(n))}function me(e,n){pe(e),t(e,im(n)),fe(e)}function he(e){de(e),ce(e),w.delete(e),t(e,void 0),r(e,void 0),ml(e)}function ge(){let e=am();return e.screen===`session`||e.screen===`subagent`?e.key:void 0}function _e(e,t=`info`){--D,S(n=>[...n,{id:D,text:e,tone:t}].slice(-20))}function ve(e){return R.get(e)??0}function ye(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=ve(e)+1;R.set(e,t),n===void 0?z.set(e,t):ee.set(e,Math.max(ee.get(e)??-1,n))}}function be(e,t){s(n=>{let r=e(n);return L+=1,ye(n.runtimes,r.runtimes,t),r})}function xe(e){ie.clear(),be(()=>e)}function Se(e,t){let n=new Set(e.filter(e=>!ie.has(e.key)).map(e=>e.key)),r=n.size!==o().runtimes.length||o().runtimes.some(e=>!n.has(e.key));be(t=>{let n=new Map(t.runtimes.map(e=>[e.key,e]));return{...t,runtimes:e.filter(e=>!ie.has(e.key)).map(e=>{let t=n.get(e.key);return{...e,state:{...e.state,contextUsage:t?.state.contextUsage??e.state.contextUsage},...t?.stats===void 0?{}:{stats:t.stats},...t?.lastAssistantText===void 0?{}:{lastAssistantText:t.lastAssistantText}}})}},t),r&&we().catch(()=>{})}function Ce(e){let t=ie.has(e);return ie.add(e),t?(he(e),Promise.resolve()):(be(t=>({...t,runtimes:t.runtimes.filter(t=>t.key!==e)})),he(e),we())}function W(){let e=++te,t=L;return Q.fleet().then(n=>{e!==te||t!==L||(xe(n),l(void 0))},n=>{throw e===te&&t===L&&l(n instanceof Error?n.message:String(n)),n})}function we(){let e=++ne;return Q.sessions().then(t=>{e===ne&&(be(e=>({...e,diskSessions:t.sessions})),l(void 0))},t=>{throw e===ne&&l(t instanceof Error?t.message:String(t)),t})}function G(e){ie.delete(e.key),be(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 K(e,t,n,r){if(o().runtimes.some(t=>t.key===e)){if(n!==void 0&&ve(e)!==n){let t=z.get(e)??0,i=ee.get(e);if(t>n||i===void 0||i>r)return}be(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:t}:n)}))}}function Te(e,t){be(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:{...n.state,model:t}}:n)}))}function Ee(e,t){be(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:{...n.state,thinkingLevel:t}}:n)}))}function q(e,t,n){return{...e,state:{...e.state,...t.contextUsage===void 0?{}:{contextUsage:t.contextUsage},messageCount:n?e.state.messageCount:t.totalMessages},stats:{tokensTotal:t.tokens.total,cost:t.cost}}}function De(e){let t=new AbortController,n,r=new Promise((r,i)=>{n=setTimeout(()=>{let n=Error(`Stats request for runtime ${e} timed out after ${fm} ms`);i(n),t.abort(n)},fm)});return Promise.race([Q.stats(e,t.signal),r]).finally(()=>{n!==void 0&&clearTimeout(n)})}function Oe(){if(re)return re;let e=o().runtimes.map(e=>e.key),t=new Map(e.map(e=>[e,ve(e)])),n=e.map(e=>De(e)),r=Promise.allSettled(n).then(n=>{let r=new Map,i=[];for(let[t,a]of n.entries())a.status===`fulfilled`?r.set(e[t],a.value):i.push(a.reason instanceof Error?a.reason.message:String(a.reason));r.size>0&&be(e=>({...e,runtimes:e.runtimes.map(e=>{let n=r.get(e.key),i=t.get(e.key),a=i===void 0||ve(e.key)!==i;return n?q(e,n,a):e})})),d(i.length>0?i.join(`; `):void 0)}).finally(()=>{re===r&&(re=void 0)});return re=r,r}function ke(e){return hm.encode(JSON.stringify(e)).byteLength}function J(e){e.queued=[],e.queuedBytes=0}function Ae(){j!==void 0&&clearTimeout(j),j=void 0}function Y(){return Math.min(mm,pm*2**Math.max(0,P-1))}function je(){if(ae||j!==void 0)return;P+=1;let e=Y();h(!1),M||=v(),y(t=>t.state===`auth_failed`?t:(N=!0,{...t,state:`retrying`,attempt:Math.max(t.attempt,P),retryDelayMs:e,retryAt:Date.now()+e})),j=setTimeout(()=>{j=void 0,X()},e)}function Me(){let e=M,t=N;M=void 0,N=!1,!(!t||e?.state!==`connected`||v().state!==`retrying`)&&y({state:`connected`,attempt:e.attempt,lastAppliedSeq:e.lastAppliedSeq})}function Ne(e){let t=e.event?.type;if(t===`fleet_snapshot`)Se(e.event.runtimes,e.seq);else if(t===`disk_sessions_changed`)we().catch(()=>{});else if(t===`runtime_removed`){if(e.key){let t=ge()===e.key;Ce(e.key).catch(()=>{}),t&&(_e(`session ${e.key} was stopped`,`warning`),B({screen:`fleet`}))}}else e.key&&(me(e.key,t=>fn(t,e.event)),t===`tasks_update`&&H(e.key))}function Pe(e){let t=e.subagent;me(e.key,n=>{let r=e.messages;if(n.entries=Yt(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=>Bt(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,gm(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])),en(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:Yt(t.messages),streaming:r.status===`running`}}tn(n)}),H(e.key)}function Fe(e,t){if(A!==e||e.state!==`active`||e.barrierSeq===void 0)return;Ae(),P=0,Me();let n=e.barrierSeq;if(I=n,xe(t.fleet),l(void 0),t.active)Pe(t.active);else{let e=ge();e&&(he(e),_e(`session ${e} was stopped`,`warning`),B({screen:`fleet`}))}let r=[...e.queued].sort((e,t)=>e.seq-t.seq),i=t.active?.subagent;if(i&&t.active)for(let e of r)e.seq>i.barrierSeq&&e.seq<=n&&e.key===t.active.key&&e.event.type===`background_agent_event`&&String(e.event.agentId)===i.agentId&&Ne(e);for(let e of r)e.seq>n&&Ne(e);J(e),A=void 0,h(!1),p(void 0)}function X(e=!1){if(ae)return Promise.resolve();if(O)return(e||A?.state===`failed`)&&(F=!0),O;Ae();let t=i(),n=t.screen===`session`||t.screen===`subagent`?t.key:void 0,r=t.screen===`subagent`?t.agentId:void 0,a={queued:[],queuedBytes:0,state:`active`,controller:new AbortController};A=a,E+=1;for(let[e,t]of T)de(e,t);h(!0),p(void 0);let o=setTimeout(()=>a.controller.abort(`Dashboard recovery timed out`),dm),s=Q.resync(n,r,a.controller.signal).then(e=>{a.barrierSeq=e.barrierSeq,Fe(a,e)}).catch(e=>{if(A!==a)return;a.state=`failed`,J(a);let t=a.controller.signal.reason;p(typeof t==`string`?t:e instanceof Error?e.message:String(e)),je(),j===void 0&&h(!1)}).finally(()=>{clearTimeout(o),O===s&&(O=void 0),!ae&&F&&(F=!1,X())});return O=s,s}function Ie(){return X(!0)}function Le(e){if(e.event?.type===`dashboard_resync`){X(!0);return}if(A){if(A.state===`failed`)throw je(),Error(`Dashboard recovery is failed; refusing to acknowledge live envelope before resync succeeds`);let t=ke(e);if(A.queued.length>=sm||A.queuedBytes+t>cm){J(A),A.state=`failed`;let e=`Dashboard recovery queue overflowed; waiting for a newer authoritative snapshot`;throw p(e),A.controller.abort(e),je(),j===void 0&&h(!1),Error(e)}A.queued.push(e),A.queuedBytes+=t;return}if(I!==void 0&&e.seq<=I)return;let t=e.key?T.get(e.key):void 0;if(t){let n=ke(e);if(t.queued.length>=lm||t.queuedBytes+n>um)throw de(e.key,t),Error(`Dashboard hydration queue overflowed for ${e.key}; refusing an incomplete snapshot replay`);t.queued.push(e),t.queuedBytes+=n}Ne(e)}let Re;async function ze(){ae=!1;try{let e=await Q.auth();_(e)}catch(e){_({mode:`remote`,needsPairing:e?.body?.needsPairing??!1,identity:e?.body?.identity,error:e?.message}),B({screen:`pairing`});return}await W().catch(()=>{}),Re=vt({onEnvelope:Le,onStatusChange:e=>{N=!1,M=e.state===`connected`?e:void 0,y(e)},onRecovery:()=>{X()}})}function Be(){ae=!0,Re?.(),Ae(),M=void 0,N=!1,F=!1;let e=A;A=void 0,e&&J(e),e?.controller.abort(`Dashboard stopped`);for(let[e,t]of T)de(e,t)}function Ve(t){if(x().some(e=>e.id===t)){S(e=>e.filter(e=>e.id!==t));return}for(let[n,r]of Object.entries(e))if(r.toasts.some(e=>e.id===t)){me(n,e=>pn(e,t));return}}async function He(e,t){de(e);let n=ve(e),r={guard:le(e),queued:[],queuedBytes:0};T.set(e,r);let i=()=>de(e,r);t?.addEventListener(`abort`,i,{once:!0}),t?.aborted&&i();try{let i=await Q.hydrate(e,t);if(t?.aborted||T.get(e)!==r||!U(e,r.guard))return;me(e,e=>{let t=i.messages;e.entries=Yt(t),e.backgroundAgents=Object.fromEntries(i.backgroundAgents.map(e=>[e.agentId,e])),en(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=>Bt(e)).filter(e=>e!==void 0),gm(e,t,i.state),tn(e)}),H(e),K(e,i.state,n,i.barrierSeq);for(let e of[...r.queued].sort((e,t)=>e.seq-t.seq))e.seq>i.barrierSeq&&Ne(e)}finally{t?.removeEventListener(`abort`,i),de(e,r)}}async function Ue(e,t,n){let r=le(e),{agent:i,messages:a}=await Q.subagentMessages(e,t,n);n?.aborted||!ue(e,r)||me(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=Yt(a)),n.streaming=i.status===`running`})}return{sessions:e,revisions:n,route:i,navigate:B,fleet:o,fleetError:c,fleetStatsError:u,refreshFleet:W,refreshDiskSessions:we,refreshFleetStats:Oe,removeRuntime:Ce,upsertRuntime:G,setRuntimeModel:Te,setRuntimeThinkingLevel:Ee,resyncing:m,resyncError:f,retryResync:Ie,auth:g,connected:b,connection:v,notices:x,start:ze,stop:Be,dismissToast:Ve,resolveUiRequest(e,t){me(e,e=>mn(e,t))},hydrateSession:He,hydrateSubagent:Ue}}var vm=5e3;function ym(e){let t;return Promise.race([e,new Promise((e,n)=>{t=setTimeout(()=>n(Error(`service worker not ready`)),vm)})]).finally(()=>{t&&clearTimeout(t)})}function bm(){let e=_m();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:nn(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),ym(navigator.serviceWorker.ready).then(t=>t.showNotification(`dreb — ${a.name}`,{body:a.reason,tag:e,data:{sessionKey:e}})).then(()=>{t.delete(e),r(e)?n.add(e):n.delete(e)}).catch(n=>{t.delete(e),console.warn(`dashboard: showNotification failed`,n)}));for(let e of[...n])i.has(e)||n.delete(e);for(let e of[...t])i.has(e)||t.delete(e)});let i=()=>[...Object.values(e.sessions).flatMap(e=>e.toasts.map(t=>({...t,sessionKey:e.key}))),...e.notices()].slice(-5);return[W(Te,{get fallback(){return W(Qn,{store:e})},get children(){return[W(Ee,{get when(){return e.route().screen===`session`},get children(){return W(Dd,{store:e,get sessionKey(){return e.route().key}})}}),W(Ee,{get when(){return e.route().screen===`subagent`},get children(){return W(Ip,{store:e,get sessionKey(){return e.route().key},get agentId(){return e.route().agentId}})}}),W(Ee,{get when(){return e.route().screen===`files`},get children(){return W(Rt,{store:e,get initialPath(){return e.route().path}})}}),W(Ee,{get when(){return e.route().screen===`memories`},get children(){return W(Zc,{store:e})}}),W(Ee,{get when(){return e.route().screen===`settings`},get children(){return W(Op,{store:e,get target(){return e.route().target},get routeScopedModelsCwd(){return e.route().cwd}})}}),W(Ee,{get when(){return e.route().screen===`pairing`},get children(){return W(rl,{store:e})}})]}}),W(it,{get toasts(){return i()},onDismiss:t=>e.dismissToast(t)})]}wf();var xm=document.getElementById(`root`);if(!xm)throw Error(`dashboard: #root element missing from index.html`);ke(()=>W(bm,{}),xm);
|
|
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>`),Of=[`running`,`attention`,`idle`,`error`];function kf(){let e=()=>{let e=ff();return e===`system`?void 0:e};return(()=>{var t=Tf(),n=t.firstChild,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling;return r.addEventListener(`change`,e=>_f(e.currentTarget.value)),X(r,W(G,{each:Xd,children:e=>(()=>{var t=Ef();return t.value=e,X(t,e),t})()})),X(i,W(G,{each:Jd,children:t=>{let n=()=>df()===t.id;return(()=>{var r=Df(),i=r.firstChild,a=i.firstChild,o=a.firstChild,s=a.nextSibling,c=i.nextSibling.firstChild,l=c.nextSibling;return r.$$click=()=>gf(t.id),X(o,()=>t.label),X(s,W(G,{each:Of,children:e=>W($e,{status:e,label:``})})),X(c,()=>t.label),X(l,()=>n()?`✓ active`:`select`),j(i=>{var a=!!n(),o=t.id,s=t.id,c=e(),l=n(),u=n()?`true`:void 0,d=`use the ${t.label} theme`;return a!==i.e&&r.classList.toggle(`active`,i.e=a),o!==i.t&&Y(r,`data-theme-card`,i.t=o),s!==i.a&&Y(r,`data-theme`,i.a=s),c!==i.o&&Y(r,`data-color-mode`,i.o=c),l!==i.i&&Y(r,`aria-pressed`,i.i=l),u!==i.n&&Y(r,`aria-current`,i.n=u),d!==i.s&&Y(r,`title`,i.s=d),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),r})()}})),j(()=>r.value=ff()),t})()}Ae([`click`]);var Af=J(`<select><option value=on>on</option><option value=off>off`),jf=J(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),Mf=J(`<div class=model-list style=max-height:320px>`),Nf=J(`<p class="muted small">No matching models.`),Pf=J(`<section class=model-provider-group><div class=model-provider-heading>`),Ff=J(`<span class=model-name>`),If=J(`<span class=model-reasoning>think`),Lf=J(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),Rf=J(`<div class=settings-error>`),zf=J(`<div class=settings-warning>`),Bf=J(`<p class="muted small"style=margin-bottom:16px>✓ saved`),Vf=J(`<div class=settings-success>new pairing lifetime saved`),Hf=J(`<div class=setting-row><span class=setting-label><span class=name>pairing code</span><span class=hint>new devices enter this in the pairing screen; it rotates every 30s</span></span><span class=setting-control><code style=font-size:var(--fs-h2);letter-spacing:0.08em>`),Uf=J(`<p class="muted small"style=padding-top:8px>No remote devices paired. Launch with <code>--remote --allow <identity></code> to enable Tailscale access.`),Wf=J(`<p>This exits the dashboard server process and terminates <strong>all running sessions</strong>.`),Gf=J(`<div class=screen-fill><main class="container settings-wrap"><h1>settings</h1><p class=settings-intro>Ordinary defaults apply only to new sessions. Dispatch Arbiter changes apply to subsequent child spawns. Context trust changes apply to subsequent lazy loads in live sessions; already injected content cannot be retracted. Writes go to the global settings file on the host.</p><section class=settings-section><h2>dashboard</h2><div class=appearance-block><div class="setting-row appearance-heading-row"><span class=setting-label><span class=name>appearance</span><span class=hint>this browser only — theme and light/dark mode are stored in localStorage and are independent of the TUI theme. Okabe-Ito and Paul Tol are colorblind-safe palettes.</span></span></div></div><div class=setting-row><label class=setting-label for=pref-image-display-mode><span class=name>tool-result images</span><span class=hint>this browser only — placeholders make no automatic request, previews are bounded to 1024 px and 256 KiB, and originals automatically transfer full files. Choosing originals is the informed network-data opt-in.</span></label><span class=setting-control><select id=pref-image-display-mode><option value=placeholders>placeholders</option><option value=previews>bounded previews</option><option value=originals>automatic originals</option></select></span></div><div class=setting-row><span class=setting-label><span class=name>always expand thinking</span><span class=hint>this browser only — stored in localStorage, not the host settings file</span></span><span class=setting-control><label class=checkbox-control><input id=pref-expand-thinking type=checkbox><span>open by default</span></label></span></div><div class=setting-row><span class=setting-label><span class=name>auto-expand tool cards</span><span class=hint>this browser only — stored in localStorage, not the host settings file</span></span><span class=setting-control style=display:grid;gap:6px></span></div><div class=setting-row><span class=setting-label><span class=name>needs-attention notifications</span><span class=hint></span></span><span class=setting-control><label class=checkbox-control><input id=pref-notifications type=checkbox><span></span></label></span></div><div class=setting-row><span class=setting-label><span class=name>restart dashboard service</span><span class=hint></span></span><span class=setting-control><button type=button class="btn btn-small btn-danger"></button></span></div></section><section class=settings-section><h2>devices</h2><div class=device-row><span>this machine <span class=this-device></span></span><span class=meta>local · always allowed</span></div><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`),Kf=J(`<div>`),qf=J(`<p class=muted>`),Jf=J(`<section class=settings-section><h2>model</h2><div class=setting-row><span class=setting-label><span class=name>default model</span><span class=hint>used by new sessions; validated against configured providers</span></span><span class=setting-control><button type=button class="btn btn-small model-picker-button"></button></span></div><div class=setting-row><span class=setting-label><span class=name>default thinking level</span><span class=hint></span></span><span class=setting-control><select></select></span></div><div class=setting-row><span class=setting-label><span class=name>transport</span><span class=hint>preferred model transport for new sessions</span></span><span class=setting-control><select>`),Yf=J(`<section class="settings-section dispatch-arbiter-settings"><h2>dispatch arbiter</h2><p class="muted small"style=margin-bottom:8px>Global-only, fully headless pre-spawn routing. Project settings cannot change it. When enabled, invalid model, scope, guide, inference, or output prevents the affected child from spawning.</p><div class=setting-row><span class=setting-label><span class=name>enabled</span><span class=hint>disabled by default; fail closed when enabled</span></span><span class=setting-control></span></div><div class=setting-row><span class=setting-label><span class=name>arbiter model</span><span class=hint>exact authenticated provider/model; no fallback</span></span><span class=setting-control><button type=button class="btn btn-small model-picker-button"></button></span></div><div class=setting-row><span class=setting-label><span class=name>arbiter thinking</span><span class=hint>validated against the selected arbiter model</span></span><span class=setting-control><select></select></span></div><div class=setting-row><label class=setting-label for=dispatch-arbiter-guide-path><span class=name>routing guide path</span><span class=hint>blank uses ~/.dreb/agent/model-routing-guide.md</span></label><span class=setting-control><input id=dispatch-arbiter-guide-path type=text placeholder=~/.dreb/agent/model-routing-guide.md></span></div><div data-testid=dispatch-arbiter-readiness><strong>status:</strong> `),Xf=J(`<div class="setting-row agent-context-row"><span class=setting-label><span class=name>agent definition context</span><span class=hint>choose a project to include its .dreb/agents definitions</span></span><span class=setting-control><select><option value>global/home only`),Zf=J(`<section class=settings-section><h2>agent models</h2><p class="muted small"style=margin-bottom:8px>Per-agent fallback lists. First available model wins; empty lists revert to the default model. Agent definitions are loaded from an explicit project context so project-local agents do not depend on which runtime opened first.`),Qf=J(`<section class=settings-section><h2>images</h2><div class=setting-row><span class=setting-label><span class=name>auto-resize images</span><span class=hint>resize image inputs before sending them to providers</span></span><span class=setting-control></span></div><div class=setting-row><span class=setting-label><span class=name>block images</span><span class=hint>prevent image inputs from being sent to providers</span></span><span class=setting-control>`),$f=J(`<section class=settings-section><h2>queueing</h2><div class=setting-row><span class=setting-label><span class=name>steering delivery</span><span class=hint>deliver queued steers all at once, or one per turn</span></span><span class=setting-control><select></select></span></div><div class=setting-row><span class=setting-label><span class=name>follow-up delivery</span><span class=hint>deliver queued follow-ups all at once, or one per turn</span></span><span class=setting-control><select>`),ep=J(`<section class=settings-section><h2>behavior</h2><div class=setting-row><span class=setting-label><span class=name>skill slash commands</span><span class=hint>register skills as slash commands in new sessions</span></span><span class=setting-control></span></div><div class=context-trust-subsection><h3>trusted context folders</h3><p class="muted small">Specific global roots that may lazy-load nested AGENTS.md/CLAUDE.md and all descendants.</p><div class="settings-warning context-trust-global-warning"><strong>Global-only policy.</strong> Project <code>.dreb/settings.json</code> cannot enable, disable, or extend nested-context trust. Only these global settings and the Files view can; a cloned repository cannot grant itself trust.</div><form class=trusted-context-folder-add><label for=trusted-context-folder-path>add folder by path</label><input id=trusted-context-folder-path type=text placeholder=/path/to/project><button type=submit class="btn btn-small"></button></form></div><div class=setting-row><span class=setting-label><span class=name>global expert nested-context trust</span><span class=hint>allow nested AGENTS.md/CLAUDE.md from any resolvable directory</span></span><span class=setting-control></span></div><div class="settings-warning context-expert-warning"><strong>Expert global override.</strong> Project <code>.dreb/settings.json</code> cannot enable, disable, or extend nested-context trust; a cloned repository cannot grant itself trust. When ON, nested instructions from any resolvable directory may load, including untrusted prompt-injection content. Leave this OFF and use trusted folders for projects you control.</div><div class=setting-row><span class=setting-label><span class=name>hide thinking blocks</span><span class=hint>hide raw thinking blocks in rendered transcripts</span></span><span class=setting-control>`),tp=J(`<section class=settings-section><h2>reliability</h2><div class=setting-row><span class=setting-label><span class=name>auto-compaction</span><span class=hint>summarize old context when the window fills</span></span><span class=setting-control></span></div><div class=setting-row><span class=setting-label><span class=name>auto-retry</span><span class=hint>retry transient stream errors (rate limits, 5xx)</span></span><span class=setting-control>`),np=J(`<p class="muted small settings-footnote">TUI-only settings (cursor, editor) are managed in the terminal /settings menu. The dashboard appearance (theme + light/dark mode) is set here, per-browser, and is independent of the TUI theme.`),rp=J(`<option>`),ip=J(`<p class="muted small">No agent definitions found.`),ap=J(`<div class=agent-model-editor><button type=button class="btn btn-small">add model…`),op=J(`<div class=agent-model-row><div class=agent-model-summary><span class=agent-model-name></span><span class=agent-model-description></span></div><div class=agent-model-fallbacks></div><button type=button class="btn btn-small agent-model-edit">`),sp=J(`<span class="muted small">default`),cp=J(`<span class=agent-model-chip>. `),lp=J(`<p class="muted small">Using the default model.`),up=J(`<div class=agent-model-entry><span></span><div class=agent-model-entry-actions><button type=button class="btn btn-small">↑</button><button type=button class="btn btn-small">↓</button><button type=button class="btn btn-small">×`),dp=J(`<p class="muted small trusted-context-empty">No trusted folders. Use the Files view to trust a project folder and its descendants.`),fp=J(`<div class=trusted-context-folder-row><code></code><span class=meta>and all descendants</span><button type=button class="btn btn-small btn-danger">`),pp=J(`<label class=checkbox-control><input type=checkbox><span>`),mp=J(`<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`),hp=J(`<button type=button class="btn btn-small">cancel`),gp=J(`<button type=button class="btn btn-small btn-danger">restart`),_p=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],vp=[`all`,`one-at-a-time`],yp=[`sse`,`websocket`,`auto`];function bp(e){return`${e.provider}/${e.id}`}function xp(e){let t=bp(e);return e.name?`${t} — ${e.name}`:t}function Sp(e){return e.defaultProvider&&e.defaultModel?`${e.defaultProvider}/${e.defaultModel}`:`choose model…`}function Cp(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function wp(){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 Tp(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 Ep(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 Dp(e){return(()=>{var t=Af();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 Op(e){let[t,n]=k(``),r=()=>new Set(e.selected??[]),i=N(()=>{let n=t().toLowerCase();return Tp(e.models.filter(e=>!n||Cp(e,n)).slice(0,100))}),a=e=>r().has(bp(e));return W(rt,{get title(){return e.title},get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[(()=>{var e=jf(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e})(),(()=>{var t=Mf();return X(t,W(K,{get when(){return i().length>0},get fallback(){return Nf()},get children(){return W(G,{get each(){return i()},children:t=>(()=>{var n=Pf(),r=n.firstChild;return X(r,()=>t.provider),X(n,W(G,{get each(){return t.models},children:t=>(()=>{var n=Lf(),r=n.firstChild,i=r.nextSibling,o=i.nextSibling;return n.$$click=()=>e.onPick(t),X(r,()=>a(t)?`✓`:``),X(i,()=>t.id),X(n,W(K,{get when(){return t.name},get children(){var e=Ff();return X(e,()=>t.name),e}}),o),X(o,()=>t.provider),X(n,W(K,{get when(){return t.reasoning},get children(){return If()}}),null),j(e=>{var r=!!a(t),i=xp(t);return r!==e.e&&n.classList.toggle(`current`,e.e=r),i!==e.t&&Y(n,`title`,e.t=i),e},{e:void 0,t:void 0}),n})()}),null),n})()})}})),t})()]}})}function kp(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(wp()),[x,{mutate:S,refetch:C}]=F(async()=>{n(void 0);try{return await Q.settings()}catch(e){n(e instanceof Error?e.message:String(e));return}}),[w]=F(x,async()=>{try{let{models:e}=await Q.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 Q.agentTypes(e);return t}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),[D,{refetch:O}]=F(async()=>{let{devices:e}=await Q.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 Q.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 Q.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 Q.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 Q.version();return e}catch{return}}),[ue]=F(async()=>{try{return await Q.serverInfo()}catch{return}}),[de,fe]=k(!1),[pe,me]=k(!1),[he,ge]=k();async function _e(){ge(void 0),me(!0);try{await Q.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 Q.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 Q.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 Q.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 Q.removeTrustedContextFolder(e);S(t.settings)}catch(e){n(e instanceof Error?e.message:String(e))}finally{v(!1)}}function Ee(e){return x()?.agentModels?.[e]??[]}function De(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&&!_p.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 Oe(){typeof Notification>`u`||b(await Notification.requestPermission())}R(()=>void le()),z(H);let ke=()=>e.store.auth();return(()=>{var i=Gf(),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,J=be.firstChild.nextSibling;return J.nextSibling,X(i,W(tt,{get store(){return e.store},active:`settings`}),o),X(o,W(K,{get when(){return t()},get children(){var e=Rf();return X(e,t),e}}),v),X(o,W(K,{get when(){return r().length>0},get children(){var e=zf();return X(e,W(G,{get each(){return r()},children:e=>(()=>{var t=Kf();return X(t,e),t})()})),e}}),v),X(o,W(K,{get when(){return a()},get children(){return Bf()}}),v),X(o,W(K,{get when(){return x()},get fallback(){return(()=>{var e=qf();return X(e,()=>t()?`Settings could not be loaded — see the error above.`:`Loading settings…`),e})()},children:t=>[(()=>{var e=Jf(),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`}),X(r,()=>Sp(t())),X(o,()=>_p.join(` · `)),s.addEventListener(`change`,e=>ve({defaultThinkingLevel:e.currentTarget.value})),X(s,W(G,{each:_p,children:e=>(()=>{var t=rp();return t.value=e,X(t,e),t})()})),l.addEventListener(`change`,e=>ve({transport:e.currentTarget.value})),X(l,W(G,{get each(){return[...yp]},children:e=>(()=>{var t=rp();return t.value=e,X(t,e),t})()})),j(()=>s.value=t().defaultThinkingLevel??`off`),j(()=>l.value=t().transport??`sse`),e})(),W(qd,{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=Yf(),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,X(i,W(Dp,{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`}),X(o,(()=>{var e=q(()=>typeof t().subagentArbiter?.model==`string`);return()=>e()?t().subagentArbiter?.model:`choose model…`})()),l.addEventListener(`change`,e=>Se({thinking:e.currentTarget.value})),X(l,W(G,{each:_p,children:e=>(()=>{var t=rp();return t.value=e,X(t,e),t})()})),d.addEventListener(`change`,e=>{Se({guidePath:e.currentTarget.value.trim()||void 0})}),X(f,()=>De(t()).message,null),j(()=>je(f,De(t()).ready?`settings-warning`:`muted small`)),j(()=>l.value=typeof t().subagentArbiter?.thinking==`string`&&_p.some(e=>e===t().subagentArbiter?.thinking)?t().subagentArbiter?.thinking:`off`),j(()=>d.value=typeof t().subagentArbiter?.guidePath==`string`?t().subagentArbiter?.guidePath:``),e})(),(()=>{var e=Zf();return e.firstChild.nextSibling,X(e,W(K,{get when(){return T().length>0},get children(){var e=Xf(),t=e.firstChild.nextSibling.firstChild;return t.firstChild,t.addEventListener(`change`,e=>f(e.currentTarget.value||void 0)),X(t,W(G,{get each(){return T()},children:e=>(()=>{var t=rp();return t.value=e,X(t,e),t})()}),null),j(()=>Y(t,`title`,d()??`global/home only`)),j(()=>t.value=d()??``),e}}),null),X(e,W(K,{get when(){return(E()??[]).length>0},get fallback(){return ip()},get children(){return W(G,{get each(){return E()??[]},children:e=>{let n=()=>t().agentModels?.[e.name]??[];return(()=>{var t=op(),r=t.firstChild,i=r.firstChild,a=i.nextSibling,o=r.nextSibling,s=o.nextSibling;return X(i,()=>e.name),X(a,()=>e.description),X(o,W(K,{get when(){return n().length>0},get fallback(){return sp()},get children(){return W(G,{get each(){return n()},children:(e,t)=>(()=>{var n=cp(),r=n.firstChild;return X(n,()=>t()+1,r),X(n,e,null),n})()})}})),s.$$click=()=>u(l()===e.name?void 0:e.name),X(s,()=>l()===e.name?`done`:`edit`),X(t,W(K,{get when(){return l()===e.name},get children(){var t=ap(),r=t.firstChild;return X(t,W(K,{get when(){return n().length>0},get fallback(){return lp()},get children(){return W(G,{get each(){return n()},children:(t,r)=>(()=>{var i=up(),a=i.firstChild,o=a.nextSibling.firstChild,s=o.nextSibling,c=s.nextSibling;return X(a,t),o.$$click=()=>void Ce(e.name,Ep(n(),r(),-1)),s.$$click=()=>void Ce(e.name,Ep(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=Qf(),n=e.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return X(r,W(Dp,{get value(){return t().imageAutoResize!==!1},onChange:e=>ve({imageAutoResize:e})})),X(i,W(Dp,{get value(){return t().blockImages===!0},onChange:e=>ve({blockImages:e})})),e})(),(()=>{var e=$f(),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})),X(r,W(G,{get each(){return[...vp]},children:e=>(()=>{var t=rp();return t.value=e,X(t,e),t})()})),i.addEventListener(`change`,e=>ve({followUpMode:e.currentTarget.value})),X(i,W(G,{get each(){return[...vp]},children:e=>(()=>{var t=rp();return t.value=e,X(t,e),t})()})),j(()=>r.value=t().steeringMode??`all`),j(()=>i.value=t().followUpMode??`all`),e})(),(()=>{var e=ep(),n=e.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling,a=i.firstChild.nextSibling.nextSibling.nextSibling,o=a.firstChild.nextSibling,s=o.nextSibling,c=i.nextSibling,l=c.firstChild.nextSibling,u=c.nextSibling.nextSibling.firstChild.nextSibling;return X(r,W(Dp,{get value(){return t().enableSkillCommands!==!1},onChange:e=>ve({enableSkillCommands:e})})),X(i,W(K,{get when(){return(t().trustedContextFolders??[]).length>0},get fallback(){return dp()},get children(){return W(G,{get each(){return t().trustedContextFolders??[]},children:e=>(()=>{var t=fp(),n=t.firstChild,r=n.nextSibling.nextSibling;return X(n,e),r.$$click=()=>void Te(e),X(r,()=>_()?`revoking…`:`revoke trust`),j(()=>r.disabled=_()),t})()})}}),a),a.addEventListener(`submit`,e=>{e.preventDefault();let t=h().trim();t&&we(t)}),o.$$input=e=>g(e.currentTarget.value),X(s,()=>_()?`trusting…`:`trust folder`),X(l,W(Dp,{get value(){return t().autoLoadNestedContext===!0},onChange:e=>ve({autoLoadNestedContext:e})})),X(u,W(Dp,{get value(){return t().hideThinkingBlock===!0},onChange:e=>ve({hideThinkingBlock:e})})),j(()=>s.disabled=_()||!h().trim()),j(()=>o.value=h()),e})(),(()=>{var e=tp(),n=e.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return X(r,W(Dp,{get value(){return t().compactionEnabled!==!1},onChange:e=>ve({compactionEnabled:e})})),X(i,W(Dp,{get value(){return t().retryEnabled!==!1},onChange:e=>ve({retryEnabled:e})})),e})(),np()]}),v),X(b,W(kf,{}),null),C.addEventListener(`change`,e=>rs(e.currentTarget.value)),M.addEventListener(`change`,e=>ns(e.currentTarget.checked)),X(P,W(G,{each:Ro,children:e=>(()=>{var t=pp(),n=t.firstChild,r=n.nextSibling;return n.addEventListener(`change`,t=>is(e,t.currentTarget.checked)),Y(n,`id`,`pref-tool-expand-${e}`),X(r,e),j(()=>n.checked=as(e)),t})()})),X(z,(()=>{var e=q(()=>y()===`denied`);return()=>e()?`blocked by browser settings — re-enable notifications in site permissions`:q(()=>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`:q(()=>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&&Oe()}),X(ae,()=>y()===`granted`?`enabled`:`enable notifications`),X(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),X(H,()=>pe()?`restarting…`:`restart`),X(v,W(K,{get when(){return he()},get children(){var e=Rf();return X(e,he),e}}),null),X(me,()=>ke()?.mode===`local`?`local`:`host`),ge.$$input=e=>{re(e.currentTarget.value),L(!1)},ye.$$click=()=>void B(),X(ye,()=>ee()?`saving…`:`save`),X(ce,W(K,{get when(){return I()},get children(){return Vf()}}),null),X(ce,W(K,{get when(){return A()},get children(){var e=Rf();return X(e,A),e}}),null),X(ce,W(K,{get when(){return q(()=>!!oe()?.enabled)()&&oe()?.code},get children(){var e=Hf(),t=e.firstChild.nextSibling.firstChild;return X(t,()=>oe().code),e}}),null),X(ce,W(G,{get each(){return D()??[]},children:e=>(()=>{var t=mp(),n=t.firstChild,r=n.nextSibling,i=r.firstChild,a=i.nextSibling;a.nextSibling;var o=r.nextSibling.firstChild;return X(n,()=>e.device??e.id),X(r,()=>e.identity,i),X(r,()=>at(e.createdAt),a),X(r,()=>e.expiresAt.slice(0,10),null),o.$$click=async()=>{await Q.unpair(e.id),await O()},t})()}),null),X(ce,W(K,{get when(){return(D()??[]).length===0},get children(){return Uf()}}),null),X(be,(()=>{var e=q(()=>!!ue()?.version);return()=>e()?` v${ue().version}`:q(()=>!!U())()?` v${U()}`:``})(),J),X(be,W(K,{get when(){return ue()?.startedAt},get children(){return[` · server build, up `,q(()=>at(ue().startedAt))]}}),null),X(i,W(K,{get when(){return de()},get children(){return W(rt,{title:`restart dashboard service?`,onDismiss:()=>fe(!1),get actions(){return[(()=>{var e=hp();return e.$$click=()=>fe(!1),e})(),(()=>{var e=gp();return e.$$click=()=>{fe(!1),_e()},e})()]},get children(){var e=Wf();return e.firstChild.nextSibling.nextSibling,X(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),X(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]:[]:Ee(t.agentName)};return W(Op,{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:bp(t)});return}let r=bp(t),i=Ee(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=ts()),j(()=>M.checked=es()),j(()=>te.checked=y()===`granted`),j(()=>ge.value=ne()),i})()}Ae([`input`,`click`]);var Ap=J(`<div class="status-line arbitration-history">`),jp=J(`<p class=pair-error>`),Mp=J(`<div class=status-line><span class=working>● working`),Np=J(`<div class=session-screen><header class=session-bar><div class=session-bar-inner><a class=back>← </a><span class=agent-type>subagent · </span><span class=title></span><span class=right></span></div></header><main class=chat><div class=chat-inner></div></main><footer class=dock><div class=dock-inner><div class=readonly-note>viewing live — subagents can't be steered yet; the parent session controls this agent.`),Pp=J(`<span>arbiter: `),Fp=J(`<p class=muted>`);function Ip(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 Lp(e){let t=()=>e.store.sessions[e.sessionKey],n=N(()=>t()?.backgroundAgents[e.agentId]),r=()=>t()?.subagents[e.agentId],i=N(()=>e.store.fleet().runtimes.find(t=>t.key===e.sessionKey)),a=()=>i()?.state.sessionName??e.sessionKey,[o,s]=k(),c,l,u=Mo({scroller:()=>c});return R(()=>{let t=new AbortController;e.store.hydrateSubagent(e.sessionKey,e.agentId,t.signal).catch(e=>{t.signal.aborted&&sl(e)||s(e instanceof Error?e.message:String(e))}),z(()=>t.abort())}),M(()=>{e.store.revisions[e.sessionKey],u.notifyContentChanged()}),R(()=>{u.observeContent(l),u.observeViewport(c),c&&z(Po(u,c,{keyboard:`window`}))}),z(()=>u.dispose()),(()=>{var t=Np(),i=t.firstChild,s=i.firstChild.firstChild;s.firstChild;var u=s.nextSibling;u.firstChild;var d=u.nextSibling,f=d.nextSibling,p=i.nextSibling,m=p.firstChild,h=p.nextSibling.firstChild,g=h.firstChild;X(s,a,null),X(u,()=>n()?.agentType??`unknown`,null),X(d,()=>n()?.taskSummary??e.agentId),X(f,W(K,{get when(){return n()?.status===`running`},get fallback(){return W($e,{get status(){return n()?.status===`failed`?`error`:`idle`},get label(){return n()?.status}})},get children(){return W($e,{status:`running`})}}));var _=c;typeof _==`function`?Fe(_,p):c=p;var v=l;return typeof v==`function`?Fe(v,m):l=m,X(m,W(K,{get when(){return(n()?.arbitrations?.length??0)>0},get children(){var e=Ap();return X(e,W(G,{get each(){return n()?.arbitrations??[]},children:e=>(()=>{var t=Pp();return t.firstChild,X(t,()=>Ip(e),null),j(()=>je(t,e.status===`failure`?`error-reason`:`muted`)),t})()})),e}}),null),X(m,W(K,{get when(){return o()},get children(){var e=jp();return X(e,o),e}}),null),X(m,W(K,{get when(){return q(()=>!!r())()&&r().entries.length>0},get fallback(){return(()=>{var e=Fp();return X(e,()=>n()?`waiting for output from this agent…`:`no data for this agent — it may not have started writing its session log yet.`),e})()},get children(){return W(xc,{get entries(){return r().entries},get who(){return n()?.agentType??`agent`},userLabel:`task from parent`,get resetKey(){return`${e.sessionKey}:${e.agentId}`},get imageScope(){return{runtimeKey:e.sessionKey,agentId:e.agentId}}})}}),null),X(h,W(K,{get when(){return r()?.streaming},get children(){return Mp()}}),g),j(()=>Y(s,`href`,`#/session/${e.sessionKey}`)),t})()}var Rp=Symbol(`store-raw`),zp=Symbol(`store-node`),Bp=Symbol(`store-has`),Vp=Symbol(`store-self`);function Hp(e){let t=e[p];if(!t&&(Object.defineProperty(e,p,{value:t=new Proxy(e,Xp)}),!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 Up(e){let t;return typeof e==`object`&&!!e&&(e[p]||!(t=Object.getPrototypeOf(e))||t===Object.prototype||Array.isArray(e))}function Wp(e,t=new Set){let n,r,i,a;if(n=e!=null&&e[Rp])return n;if(!Up(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=Wp(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=Wp(i,t))!==i&&(e[a]=r))}return e}function Gp(e,t){let n=e[t];return n||Object.defineProperty(e,t,{value:n=Object.create(null)}),n}function Kp(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 qp(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 Jp(e){ee()&&Kp(Gp(e,zp),Vp)()}function Yp(e){return Jp(e),Reflect.ownKeys(e)}var Xp={get(e,t,n){if(t===Rp)return e;if(t===p)return n;if(t===m)return Jp(e),n;let r=Gp(e,zp),i=r[t],a=i?i():e[t];if(t===zp||t===Bp||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=Kp(r,t,a)())}return Up(a)?Hp(a):a},has(e,t){return t===Rp||t===p||t===m||t===zp||t===Bp||t===`__proto__`?!0:(ee()&&Kp(Gp(e,Bp),t)(),t in e)},set(){return!0},deleteProperty(){return!0},ownKeys:Yp,getOwnPropertyDescriptor:qp};function Zp(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[Bp]&&e[Bp][t]&&i!==void 0&&e[Bp][t].$()):(e[t]=n,e[Bp]&&e[Bp][t]&&i===void 0&&e[Bp][t].$());let o=Gp(e,zp),s;if((s=Kp(o,t,i))&&s.$(()=>n),Array.isArray(e)&&e.length!==a){for(let t=e.length;t<a;t++)(s=o[t])&&s.$();(s=Kp(o,`length`,a))&&s.$(e.length)}(s=o[Vp])&&s.$()}function Qp(e,t){let n=Object.keys(t);for(let r=0;r<n.length;r+=1){let i=n[r];$p(i)||Zp(e,i,t[i])}}function $p(e){return e===`__proto__`||e===`constructor`||e===`prototype`}function em(e,t){if(typeof t==`function`&&(t=t(e)),t=Wp(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&&Zp(e,n,r)}Zp(e,`length`,r)}else Qp(e,t)}function tm(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&&$p(r)))return;if(Array.isArray(r)){for(let i=0;i<r.length;i++)tm(e,[r[i]].concat(t),n);return}else if(o&&a===`function`){for(let i=0;i<e.length;i++)r(e[i],i)&&tm(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)tm(e,[r].concat(t),n);return}else if(t.length>1){tm(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=Wp(a),r===void 0||Up(i)&&Up(a)&&!Array.isArray(a)?Qp(i,a):Zp(e,r,a))}function nm(...[e,t]){let n=Wp(e||{}),r=Array.isArray(n),i=Hp(n);function a(...e){I(()=>{r&&e.length===1?em(n,e[0]):tm(n,e)})}return[i,a]}var rm=new WeakMap,im={get(e,t){if(t===Rp)return e;let n=e[t];if(t===p||t===m||t===zp||t===Bp||t===`__proto__`)return n;let r;return Up(n)?rm.get(n)||(rm.set(n,r=new Proxy(n,im)),r):n},set(e,t,n){return Zp(e,t,Wp(n)),!0},deleteProperty(e,t){return Zp(e,t,void 0,!0),!0}};function am(e){return t=>{if(Up(t)){let n;(n=rm.get(t))||rm.set(t,n=new Proxy(t,im)),e(n)}return t}}function om(){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 sm(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 cm=2e3,lm=3*1024*1024,um=cm,dm=lm,fm=3e4,pm=1e4,mm=1e3,hm=3e4,gm=5e3,_m=5*6e4,vm=2147e6,ym=new TextEncoder;function bm(e,t,n){e.statusEntries=e.statusEntries.filter(e=>e.key!==`retry`);let r=n.retryAttempt??0;if(n.isRetrying&&r>0){let t=e.entries.findLast(e=>e.kind===`assistant`&&e.stopReason===`error`),n=t?.errorMessage?` — ${t.errorMessage}`:``;e.statusEntries.push({key:`retry`,text:`retrying (attempt ${r})${n}`,tone:`warning`})}sn(e,t,n.isStreaming||n.isRetrying||n.isCompacting)}function xm(){let[e,t]=nm({}),[n,r]=nm({}),[i,a]=k(om()),[o,s]=k({runtimes:[],diskSessions:[]}),[c,l]=k(),[u,d]=k(),[f,p]=k(),[m,h]=k(!1),[g,_]=k(),[v,y]=k({state:`disconnected`,attempt:0}),b=()=>v().state===`connected`,[x,S]=k([]),C=new Map,w=new Map,T=new Map,E=0,D=0,O,A,j,M,N=!1,P=0,F=!1,I,L=0,R=new Map,z=new Map,ee=new Map,te=0,ne=0,re,ie,ae,B=0,oe=new Set,V=!1;window.addEventListener(`hashchange`,()=>a(om()));function se(e){window.location.hash=sm(e)}function H(e){return n[e]??0}function ce(e){return C.get(e)??0}function le(e){return w.get(e)??0}function U(e){w.set(e,le(e)+1)}function ue(e){C.set(e,ce(e)+1)}function de(e){return{revision:H(e),generation:ce(e),epoch:E}}function fe(e,t){return ce(e)===t.generation&&E===t.epoch}function pe(e,t){return H(e)===t.revision&&fe(e,t)}function me(e,t){t&&T.get(e)!==t||(T.delete(e),t&&(t.queued=[],t.queuedBytes=0))}function he(e){r(e,H(e)+1)}function ge(n){e[n]||t(n,Vt(n))}function _e(e,n){ge(e),t(e,am(n)),he(e)}function ve(e){me(e),ue(e),w.delete(e),t(e,void 0),r(e,void 0),ml(e)}function ye(){let e=om();return e.screen===`session`||e.screen===`subagent`?e.key:void 0}function be(e,t=`info`){--D,S(n=>[...n,{id:D,text:e,tone:t}].slice(-20))}function xe(){ie!==void 0&&clearTimeout(ie),ie=void 0,ae=void 0,B=0}function Se(e){if(V||ae!==e)return;let t=e-Date.now();if(t<=0){ie=void 0,K(e);return}ie=setTimeout(()=>Se(e),Math.min(t,vm))}function Ce(e){if(xe(),!e)return;let t=Date.parse(e);if(!Number.isFinite(t)){be(`Dashboard returned an invalid pairing-expiry check time`,`error`);return}ae=t,Se(t)}function W(e){if(V||ae!==e)return;B+=1;let t=Math.min(10,B-1),n=Math.min(_m,gm*2**t);ie=setTimeout(()=>{ie=void 0,!V&&ae===e&&K(e)},n)}function we(e){e.pairingExpiryWarning&&be(`This device pairing expires on ${e.pairingExpiryWarning.expiresAt.slice(0,10)}. Re-pair before then to avoid losing remote access.`,`warning`)}function G(e){_(e),we(e),Ce(e.pairingExpiryCheckAt)}async function K(e){try{let t=await Q.auth();if(V)return;if(ae!==e){we(t);return}if((t.pairingExpiryCheckAt?Date.parse(t.pairingExpiryCheckAt):void 0)===e&&e<=Date.now()){_(t),we(t),W(e);return}G(t)}catch(t){if(V||ae!==e)return;if(t?.status===401||t?.status===403){xe(),_({mode:`remote`,needsPairing:t?.body?.needsPairing??!1,identity:t?.body?.identity,error:t?.message}),se({screen:`pairing`});return}B===0&&be(`Could not check pairing expiry: ${t instanceof Error?t.message:String(t)}`,`error`),W(e)}}function Te(e){return R.get(e)??0}function Ee(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=Te(e)+1;R.set(e,t),n===void 0?z.set(e,t):ee.set(e,Math.max(ee.get(e)??-1,n))}}function q(e,t){s(n=>{let r=e(n);return L+=1,Ee(n.runtimes,r.runtimes,t),r})}function De(e){oe.clear(),q(()=>e)}function Oe(e,t){let n=new Set(e.filter(e=>!oe.has(e.key)).map(e=>e.key)),r=n.size!==o().runtimes.length||o().runtimes.some(e=>!n.has(e.key));q(t=>{let n=new Map(t.runtimes.map(e=>[e.key,e]));return{...t,runtimes:e.filter(e=>!oe.has(e.key)).map(e=>{let t=n.get(e.key);return{...e,state:{...e.state,contextUsage:t?.state.contextUsage??e.state.contextUsage},...t?.stats===void 0?{}:{stats:t.stats},...t?.lastAssistantText===void 0?{}:{lastAssistantText:t.lastAssistantText}}})}},t),r&&Ae().catch(()=>{})}function ke(e){let t=oe.has(e);return oe.add(e),t?(ve(e),Promise.resolve()):(q(t=>({...t,runtimes:t.runtimes.filter(t=>t.key!==e)})),ve(e),Ae())}function J(){let e=++te,t=L;return Q.fleet().then(n=>{e!==te||t!==L||(De(n),l(void 0))},n=>{throw e===te&&t===L&&l(n instanceof Error?n.message:String(n)),n})}function Ae(){let e=++ne;return Q.sessions().then(t=>{e===ne&&(q(e=>({...e,diskSessions:t.sessions})),l(void 0))},t=>{throw e===ne&&l(t instanceof Error?t.message:String(t)),t})}function Y(e){oe.delete(e.key),q(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 je(e,t,n,r){if(o().runtimes.some(t=>t.key===e)){if(n!==void 0&&Te(e)!==n){let t=z.get(e)??0,i=ee.get(e);if(t>n||i===void 0||i>r)return}q(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:t}:n)}))}}function Me(e,t){q(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:{...n.state,model:t}}:n)}))}function Ne(e,t){q(n=>({...n,runtimes:n.runtimes.map(n=>n.key===e?{...n,state:{...n.state,thinkingLevel:t}}:n)}))}function Pe(e,t,n){return{...e,state:{...e.state,...t.contextUsage===void 0?{}:{contextUsage:t.contextUsage},messageCount:n?e.state.messageCount:t.totalMessages},stats:{tokensTotal:t.tokens.total,cost:t.cost}}}function Fe(e){let t=new AbortController,n,r=new Promise((r,i)=>{n=setTimeout(()=>{let n=Error(`Stats request for runtime ${e} timed out after ${pm} ms`);i(n),t.abort(n)},pm)});return Promise.race([Q.stats(e,t.signal),r]).finally(()=>{n!==void 0&&clearTimeout(n)})}function X(){if(re)return re;let e=o().runtimes.map(e=>e.key),t=new Map(e.map(e=>[e,Te(e)])),n=e.map(e=>Fe(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&&q(e=>({...e,runtimes:e.runtimes.map(e=>{let n=r.get(e.key),i=t.get(e.key),a=i===void 0||Te(e.key)!==i;return n?Pe(e,n,a):e})})),d(i.length>0?i.join(`; `):void 0)}).finally(()=>{re===r&&(re=void 0)});return re=r,r}function Ie(e){return ym.encode(JSON.stringify(e)).byteLength}function Le(e){e.queued=[],e.queuedBytes=0}function Re(){j!==void 0&&clearTimeout(j),j=void 0}function ze(){return Math.min(hm,mm*2**Math.max(0,P-1))}function Be(){if(V||j!==void 0)return;P+=1;let e=ze();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,Ge()},e)}function Ve(){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 He(e){let t=e.event?.type;if(t===`fleet_snapshot`)Oe(e.event.runtimes,e.seq);else if(t===`disk_sessions_changed`)Ae().catch(()=>{});else if(t===`runtime_removed`){if(e.key){let t=ye()===e.key;ke(e.key).catch(()=>{}),t&&(be(`session ${e.key} was stopped`,`warning`),se({screen:`fleet`}))}}else e.key&&(_e(e.key,t=>fn(t,e.event)),t===`tasks_update`&&U(e.key))}function Ue(e){let t=e.subagent;_e(e.key,n=>{let r=e.messages;if(n.entries=Yt(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=>Bt(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,bm(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])),en(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:Yt(t.messages),streaming:r.status===`running`}}tn(n)}),U(e.key)}function We(e,t){if(A!==e||e.state!==`active`||e.barrierSeq===void 0)return;Re(),P=0,Ve();let n=e.barrierSeq;if(I=n,De(t.fleet),l(void 0),t.active)Ue(t.active);else{let e=ye();e&&(ve(e),be(`session ${e} was stopped`,`warning`),se({screen:`fleet`}))}let r=[...e.queued].sort((e,t)=>e.seq-t.seq),i=t.active?.subagent;if(i&&t.active)for(let e of r)e.seq>i.barrierSeq&&e.seq<=n&&e.key===t.active.key&&e.event.type===`background_agent_event`&&String(e.event.agentId)===i.agentId&&He(e);for(let e of r)e.seq>n&&He(e);Le(e),A=void 0,h(!1),p(void 0)}function Ge(e=!1){if(V)return Promise.resolve();if(O)return(e||A?.state===`failed`)&&(F=!0),O;Re();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)me(e,t);h(!0),p(void 0);let o=setTimeout(()=>a.controller.abort(`Dashboard recovery timed out`),fm),s=Q.resync(n,r,a.controller.signal).then(e=>{a.barrierSeq=e.barrierSeq,We(a,e)}).catch(e=>{if(A!==a)return;a.state=`failed`,Le(a);let t=a.controller.signal.reason;p(typeof t==`string`?t:e instanceof Error?e.message:String(e)),Be(),j===void 0&&h(!1)}).finally(()=>{clearTimeout(o),O===s&&(O=void 0),!V&&F&&(F=!1,Ge())});return O=s,s}function Ke(){return Ge(!0)}function qe(e){if(e.event?.type===`dashboard_resync`){Ge(!0);return}if(A){if(A.state===`failed`)throw Be(),Error(`Dashboard recovery is failed; refusing to acknowledge live envelope before resync succeeds`);let t=Ie(e);if(A.queued.length>=cm||A.queuedBytes+t>lm){Le(A),A.state=`failed`;let e=`Dashboard recovery queue overflowed; waiting for a newer authoritative snapshot`;throw p(e),A.controller.abort(e),Be(),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=Ie(e);if(t.queued.length>=um||t.queuedBytes+n>dm)throw me(e.key,t),Error(`Dashboard hydration queue overflowed for ${e.key}; refusing an incomplete snapshot replay`);t.queued.push(e),t.queuedBytes+=n}He(e)}let Je;async function Ye(){V=!1;try{G(await Q.auth())}catch(e){_({mode:`remote`,needsPairing:e?.body?.needsPairing??!1,identity:e?.body?.identity,error:e?.message}),se({screen:`pairing`});return}await J().catch(()=>{}),Je=vt({onEnvelope:qe,onAuthStatus:G,onStatusChange:e=>{N=!1,M=e.state===`connected`?e:void 0,y(e)},onRecovery:()=>{Ge()}})}function Xe(){V=!0,Je?.(),xe(),Re(),M=void 0,N=!1,F=!1;let e=A;A=void 0,e&&Le(e),e?.controller.abort(`Dashboard stopped`);for(let[e,t]of T)me(e,t)}function Ze(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)){_e(n,e=>pn(e,t));return}}async function Qe(e,t){me(e);let n=Te(e),r={guard:de(e),queued:[],queuedBytes:0};T.set(e,r);let i=()=>me(e,r);t?.addEventListener(`abort`,i,{once:!0}),t?.aborted&&i();try{let i=await Q.hydrate(e,t);if(t?.aborted||T.get(e)!==r||!fe(e,r.guard))return;_e(e,e=>{let t=i.messages;e.entries=Yt(t),e.backgroundAgents=Object.fromEntries(i.backgroundAgents.map(e=>[e.agentId,e])),en(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=>Bt(e)).filter(e=>e!==void 0),bm(e,t,i.state),tn(e)}),U(e),je(e,i.state,n,i.barrierSeq);for(let e of[...r.queued].sort((e,t)=>e.seq-t.seq))e.seq>i.barrierSeq&&He(e)}finally{t?.removeEventListener(`abort`,i),me(e,r)}}async function $e(e,t,n){let r=de(e),{agent:i,messages:a}=await Q.subagentMessages(e,t,n);n?.aborted||!pe(e,r)||_e(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=Yt(a)),n.streaming=i.status===`running`})}return{sessions:e,revisions:n,route:i,navigate:se,fleet:o,fleetError:c,fleetStatsError:u,refreshFleet:J,refreshDiskSessions:Ae,refreshFleetStats:X,removeRuntime:ke,upsertRuntime:Y,setRuntimeModel:Me,setRuntimeThinkingLevel:Ne,resyncing:m,resyncError:f,retryResync:Ke,auth:g,connected:b,connection:v,notices:x,start:Ye,stop:Xe,dismissToast:Ze,resolveUiRequest(e,t){_e(e,e=>mn(e,t))},hydrateSession:Qe,hydrateSubagent:$e}}var Sm=5e3;function Cm(e){let t;return Promise.race([e,new Promise((e,n)=>{t=setTimeout(()=>n(Error(`service worker not ready`)),Sm)})]).finally(()=>{t&&clearTimeout(t)})}function wm(){let e=xm();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:nn(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),Cm(navigator.serviceWorker.ready).then(t=>t.showNotification(`dreb — ${a.name}`,{body:a.reason,tag:e,data:{sessionKey:e}})).then(()=>{t.delete(e),r(e)?n.add(e):n.delete(e)}).catch(n=>{t.delete(e),console.warn(`dashboard: showNotification failed`,n)}));for(let e of[...n])i.has(e)||n.delete(e);for(let e of[...t])i.has(e)||t.delete(e)});let i=()=>[...Object.values(e.sessions).flatMap(e=>e.toasts.map(t=>({...t,sessionKey:e.key}))),...e.notices()].slice(-5);return[W(Te,{get fallback(){return W(Qn,{store:e})},get children(){return[W(Ee,{get when(){return e.route().screen===`session`},get children(){return W(Dd,{store:e,get sessionKey(){return e.route().key}})}}),W(Ee,{get when(){return e.route().screen===`subagent`},get children(){return W(Lp,{store:e,get sessionKey(){return e.route().key},get agentId(){return e.route().agentId}})}}),W(Ee,{get when(){return e.route().screen===`files`},get children(){return W(Rt,{store:e,get initialPath(){return e.route().path}})}}),W(Ee,{get when(){return e.route().screen===`memories`},get children(){return W(Zc,{store:e})}}),W(Ee,{get when(){return e.route().screen===`settings`},get children(){return W(kp,{store:e,get target(){return e.route().target},get routeScopedModelsCwd(){return e.route().cwd}})}}),W(Ee,{get when(){return e.route().screen===`pairing`},get children(){return W(rl,{store:e})}})]}}),W(it,{get toasts(){return i()},onDismiss:t=>e.dismissToast(t)})]}wf();var Tm=document.getElementById(`root`);if(!Tm)throw Error(`dashboard: #root element missing from index.html`);ke(()=>W(wm,{}),Tm);
|