@dreb/dashboard 2.45.0 → 2.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -39,8 +39,9 @@ Open `http://127.0.0.1:5343`.
39
39
  activity/subagent text, and past-session labels wrap within cards or rows
40
40
  rather than spilling off-screen. `+ new session` anywhere.
41
41
  - **Session view** — full chat parity: markdown streaming transcript, tool
42
- cards, thinking blocks, compaction summaries, per-message copy, tasks panel,
43
- suggest-next chip, slash-command autocomplete, image attach/paste,
42
+ cards with sanitized inline PNG/JPEG/GIF/WebP result images, thinking blocks,
43
+ compaction summaries, per-message copy, tasks panel, suggest-next chip,
44
+ slash-command autocomplete, image attach/paste,
44
45
  queued-message restore, persistent session-header live indicator, footer-parity info bar (branch, tokens, cost, ctx%,
45
46
  median tok/s), stats/loaded-context/fork modals, steer/follow-up composer
46
47
  modes, ■ abort, model/thinking switchers, extension-UI modals, export HTML,
@@ -72,6 +73,16 @@ Open `http://127.0.0.1:5343`.
72
73
  and paired-devices management.
73
74
  - **Pairing** — remote first-login rotating-code flow.
74
75
 
76
+ ### Tool-result images
77
+
78
+ Image blocks returned by any tool render inline for the human viewing the
79
+ transcript, even when the active model does not support vision. The dashboard
80
+ accepts only PNG, JPEG, GIF, and WebP with valid base64 payloads; SVG and
81
+ malformed blocks are dropped. Accepted images also survive refresh/resync and
82
+ are embedded in exported HTML transcripts. Oversized live events use the
83
+ existing SSE resync barrier and HTTP snapshot path; CSS bounds display
84
+ dimensions but does not compress the underlying bytes.
85
+
75
86
  ## Fleet transport and freshness
76
87
 
77
88
  A normal dashboard load makes one authoritative `GET /api/fleet`; exceptional
@@ -0,0 +1 @@
1
+ :root{--bg:#fff;--text:#000;--border:#e0e0e0;--muted:#666;--status-running:#00871f;--status-attention:#8a5400;--status-idle:#666;--status-error:#d10041;--mono-font:"IBM Plex Mono", "Courier New", monospace;--fs-small:12px;--fs-secondary:13px;--fs-body:14px;--fs-h3:16px;--fs-h2:18px;--fs-h1:24px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--radius:3px;--hairline:1px solid var(--border)}@media (prefers-color-scheme:dark){:root{--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d}}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}img,svg{max-width:100%;display:block}button,input,textarea,select{font:inherit;color:inherit}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius)}::-webkit-scrollbar-thumb:hover{background:var(--muted)}::-webkit-scrollbar-corner{background:0 0}body{background:var(--bg);color:var(--text);font-family:var(--mono-font);font-size:var(--fs-body);overflow-wrap:break-word;line-height:1.6;overflow-x:hidden}h1{font-size:var(--fs-h1);font-weight:500}h2{font-size:var(--fs-h2);font-weight:500}h3{font-size:var(--fs-h3);font-weight:500}a{color:var(--text);cursor:pointer}a:hover{color:var(--muted)}code,pre{font-family:var(--mono-font);font-size:var(--fs-secondary)}pre{border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);white-space:pre-wrap;word-break:break-word;overflow-x:auto}::placeholder{color:var(--muted);opacity:1}:focus-visible{outline:1px solid var(--text);outline-offset:2px}.muted{color:var(--muted)}.small{font-size:var(--fs-small)}.container{width:100%;max-width:1200px;padding:var(--space-4) var(--space-5);margin:0 auto}.topbar{border-bottom:var(--hairline);padding-top:env(safe-area-inset-top,0px)}.topbar-inner{max-width:1200px;padding:var(--space-3) var(--space-5);align-items:center;gap:var(--space-4);flex-wrap:wrap;margin:0 auto;display:flex}.wordmark{font-size:var(--fs-h2);letter-spacing:.04em;font-weight:600;text-decoration:none}.topbar nav{gap:var(--space-4);align-items:center;display:flex}.topbar nav a{padding:var(--space-1) 0;border-bottom:1px solid #0000;text-decoration:none}.topbar nav a:hover{color:var(--text);border-bottom-color:var(--text)}.topbar nav a[aria-current=page]{border-bottom-color:var(--text)}.topbar-spacer{margin-left:auto}.connection-indicator{align-items:center;gap:var(--space-2);display:inline-flex}footer{border-top:var(--hairline);margin-top:var(--space-7);padding:var(--space-4) 0;font-size:var(--fs-secondary);color:var(--muted)}.btn{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);cursor:pointer;font-size:var(--fs-body);text-decoration:none;transition:border-color .2s;display:inline-flex}.btn:hover{border-color:var(--text);color:var(--text)}.btn-primary{background:var(--text);color:var(--bg);border-color:var(--text)}.btn-primary:hover{color:var(--bg)}.btn-danger:hover{border-color:var(--status-error);color:var(--status-error)}.btn-small{padding:2px var(--space-2);font-size:var(--fs-small)}.chip{padding:1px var(--space-2);border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);white-space:nowrap;align-items:center;gap:6px;line-height:1.5;display:inline-flex}.chip .dot{font-size:10px}.chip-running{border-color:var(--status-running);color:var(--status-running)}.chip-attention{background:var(--status-attention);border-color:var(--status-attention);color:var(--bg);font-weight:600}.chip-idle{border-color:var(--border);color:var(--status-idle)}.chip-error{border-color:var(--status-error);color:var(--status-error)}.chip-plain{border-color:var(--border);color:var(--muted)}.card{border:var(--hairline);border-radius:var(--radius);padding:var(--space-4);transition:border-color .2s}a.card{text-decoration:none;display:block}.card:hover{border-color:var(--text);color:var(--text)}.input,.textarea,.select{width:100%;padding:var(--space-2) var(--space-3);border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-size:var(--fs-body);transition:border-color .2s}.input:hover,.textarea:hover,.select:hover{border-color:var(--text)}.textarea{resize:vertical;min-height:72px;line-height:1.6}.field{gap:var(--space-1);margin-bottom:var(--space-4);flex-direction:column;display:flex}.field>label{font-size:var(--fs-secondary)}.field>.hint{font-size:var(--fs-small);color:var(--muted)}.toggle{border:var(--hairline);border-radius:var(--radius);display:inline-flex;overflow:hidden}.toggle span{padding:2px var(--space-3);font-size:var(--fs-small);color:var(--muted)}.toggle .on{background:var(--text);color:var(--bg)}.table{border-collapse:collapse;width:100%;font-size:var(--fs-body)}.table th{text-align:left;font-weight:500;font-size:var(--fs-small);color:var(--muted);padding:var(--space-2) var(--space-3);border-bottom:var(--hairline)}.table td{padding:var(--space-2) var(--space-3);border-bottom:var(--hairline)}.modal-backdrop{padding:var(--space-4);background:#80808040;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg);border:1px solid var(--text);border-radius:var(--radius);width:100%;max-width:480px;padding:var(--space-5)}.modal h3{margin-bottom:var(--space-3)}.modal-actions{gap:var(--space-2);margin-top:var(--space-5);justify-content:flex-end;display:flex}.row{align-items:center;gap:var(--space-2);display:flex}.stack{gap:var(--space-2);flex-direction:column;display:flex}.hidden{display:none}:root{--syntax-comment:green;--syntax-keyword:#00f;--syntax-string:#a31515;--syntax-number:#098658;--syntax-function:#795e26;--syntax-type:#267f99;--syntax-variable:#001080;--syntax-operator:#000;--syntax-punctuation:#000}@media (prefers-color-scheme:dark){:root{--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}}html,body,#root{width:100%;min-width:0;max-width:100%}#root{flex-direction:column;min-height:100vh;display:flex}.screen-fill{flex-direction:column;flex:1;min-height:0;display:flex}.fleet-head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin:var(--space-5) 0 var(--space-6);flex-wrap:wrap;display:flex}.live-sessions{margin-bottom:var(--space-6)}.past-sessions-head{font-size:var(--fs-h3);color:var(--muted);border-bottom:var(--hairline);padding-bottom:var(--space-2);margin-bottom:var(--space-4)}.project-group{margin-bottom:var(--space-5)}.group-head{align-items:baseline;gap:var(--space-3);padding-bottom:var(--space-1);margin-bottom:var(--space-1);flex-wrap:wrap;display:flex}.group-head h2,.group-head h3{font-size:var(--fs-secondary);font-weight:600}.group-head .btn{margin-left:auto}.session-grid{gap:var(--space-4);margin-bottom:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(340px,1fr));display:grid}.session-card{border:var(--hairline);border-radius:var(--radius);min-width:0;padding:var(--space-4);gap:var(--space-2);flex-direction:column;transition:border-color .2s;display:flex}.session-card:hover{border-color:var(--text)}.session-card.attention{border-color:var(--status-attention)}.session-card.error{border-color:var(--status-error)}.session-title{justify-content:space-between;align-items:baseline;gap:var(--space-2);min-width:0;display:flex}.session-title .name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.session-project{font-size:var(--fs-small);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.attention-reason{font-weight:600;font-size:var(--fs-secondary)}.error-reason{color:var(--status-error);font-size:var(--fs-secondary)}.activity{font-size:var(--fs-secondary);color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.subagents{border-left:var(--hairline);padding-left:var(--space-3);font-size:var(--fs-small);flex-direction:column;gap:2px;display:flex}.subagents .agent-line{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.subagents .agent-line .live{color:var(--status-running)}.session-meta{font-size:var(--fs-small);color:var(--muted);gap:var(--space-1);flex-wrap:wrap;display:flex}.session-actions{gap:var(--space-2);padding-top:var(--space-2);flex-wrap:wrap;margin-top:auto;display:flex}.disk-row{align-items:center;gap:var(--space-3);border-bottom:var(--hairline);font-size:var(--fs-secondary);padding:2px 0;display:flex}.disk-row .name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.disk-row .meta{color:var(--muted);font-size:var(--fs-small);white-space:nowrap;margin-left:auto}.disk-row .actions{gap:var(--space-2);flex-shrink:0;display:flex}.disk-more{margin-top:var(--space-1);font-size:var(--fs-small);color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;text-decoration:underline;display:inline-block}.disk-more:hover{color:var(--text)}.empty-state{border:var(--hairline);border-radius:var(--radius);padding:var(--space-6);text-align:center;color:var(--muted);margin-top:var(--space-6)}.session-screen{flex-direction:column;width:100%;min-width:0;max-width:100%;height:100dvh;display:flex;overflow:hidden}.session-bar{border-bottom:var(--hairline);padding-top:env(safe-area-inset-top,0px);flex-shrink:0}.session-bar-inner{width:100%;min-width:0;max-width:960px;padding:var(--space-2) var(--space-4);align-items:center;gap:var(--space-3);flex-wrap:wrap;margin:0 auto;display:flex}.session-bar .back{white-space:nowrap;text-decoration:none}.session-bar .title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.session-bar .project,.session-bar .agent-type{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}.session-bar .right{align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0;margin-left:auto;display:flex}.session-connection-indicator{flex-wrap:wrap;flex:0 auto;min-width:0}.session-connection-indicator .chip,.session-connection-indicator .btn{font-size:var(--fs-small);padding:1px var(--space-2)}.session-info-bar{font-size:var(--fs-small);color:var(--muted);justify-content:space-between;padding-top:0}.session-info-left{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.session-info-right{gap:var(--space-2);flex-wrap:wrap;justify-content:flex-end;margin-left:auto;display:flex}.stats-trigger{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.stats-popover{right:max(var(--space-4), calc((100vw - 960px) / 2 + var(--space-4)));z-index:10;border:var(--hairline);border-radius:var(--radius);background:var(--bg);padding:var(--space-3);min-width:280px;position:absolute;top:78px;box-shadow:0 12px 32px #0000002e}.stats-grid{gap:var(--space-1) var(--space-3);font-size:var(--fs-small);grid-template-columns:1fr auto;display:grid}.stats-grid span{color:var(--muted)}.session-info-right span+span:before{content:"·";margin-right:var(--space-2);color:var(--muted)}.switcher{min-width:0;padding:1px var(--space-2);border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);background:var(--bg);color:var(--text);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;font-family:inherit;transition:border-color .2s;display:inline-flex}.switcher:hover{border-color:var(--text)}.switcher .label{color:var(--muted)}.switcher .value{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.model-switcher{max-width:min(340px,45vw)}.session-bar.collapsed{background:var(--bg)}.session-bar-main .chrome-toggle{margin-left:auto}.chrome-toggle{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--muted);font:inherit;font-size:var(--fs-small);padding:1px var(--space-2);cursor:pointer;white-space:nowrap}.chrome-toggle:hover{border-color:var(--text);color:var(--text)}.chat{flex:1;min-height:0;overflow-y:auto}.chat-inner{max-width:960px;padding:var(--space-4);gap:var(--space-4);flex-direction:column;margin:0 auto;display:flex}.assistant-turn{border-left:var(--hairline);padding-left:var(--space-3);gap:var(--space-3);flex-direction:column;display:flex}.entry{min-width:0}.entry-head{font-size:var(--fs-small);color:var(--muted);margin-bottom:var(--space-1);gap:var(--space-2);align-items:baseline;display:flex}.entry-action{color:var(--muted);font:inherit;font-size:var(--fs-small);cursor:pointer;opacity:.65;background:0 0;border:none;padding:0}.entry-action:hover{opacity:1;text-decoration:underline}.skill-badge,.queued-kind{border:var(--hairline);border-radius:var(--radius);padding:0 var(--space-1);font-size:var(--fs-small);color:var(--muted)}.entry.user{align-self:flex-end;max-width:85%}.entry.user .entry-body{border:1px solid var(--text);border-radius:var(--radius);padding:var(--space-2) var(--space-3);white-space:pre-wrap}.entry.user .entry-head{justify-content:flex-end}.entry.assistant{max-width:100%}.entry.assistant .entry-body{white-space:normal}.markdown-body{color:var(--text)}.markdown-body,.markdown-body *{-webkit-text-fill-color:currentColor}.markdown-body p,.markdown-body ul,.markdown-body ol,.markdown-body pre,.markdown-body blockquote,.markdown-body table{margin:0 0 var(--space-2)}.markdown-body :last-child{margin-bottom:0}.markdown-body ul,.markdown-body ol{padding-left:var(--space-5)}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{font-size:var(--fs-h3);margin:var(--space-2) 0 var(--space-1);font-weight:500}.markdown-body code{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-secondary);padding:0 4px}.markdown-body pre{background:var(--bg);margin-top:var(--space-1)}.markdown-body pre code{border:none;padding:0}.markdown-body a{text-decoration:underline}.markdown-body table{border-collapse:collapse;width:100%;font-size:var(--fs-secondary)}.markdown-body th,.markdown-body td{border:var(--hairline);padding:var(--space-1) var(--space-2);text-align:left}.markdown-body blockquote{border-left:var(--hairline);padding-left:var(--space-3);color:var(--muted)}.entry-body code{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-secondary);padding:0 4px}details.thinking{border-left:var(--hairline);padding-left:var(--space-3);margin-bottom:var(--space-3)}details.thinking summary{cursor:pointer;font-size:var(--fs-small);color:var(--muted);-webkit-user-select:none;user-select:none;list-style:none}details.thinking summary:before{content:"▸ "}details.thinking[open] summary:before{content:"▾ "}details.thinking .thinking-body{color:var(--muted);font-size:var(--fs-secondary);padding-top:var(--space-1);white-space:pre-wrap}.tool{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-secondary)}.tool summary{cursor:pointer;-webkit-user-select:none;user-select:none;gap:var(--space-2);padding:var(--space-1) var(--space-3);align-items:baseline;list-style:none;display:flex}.tool summary:before{content:"▸";color:var(--muted)}.tool[open] summary:before{content:"▾"}.tool .tool-name{font-weight:600}.tool .tool-arg{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.tool .tool-status{white-space:nowrap;font-size:var(--fs-small);color:var(--muted);margin-left:auto}.tool .tool-status.running{color:var(--status-running)}.tool .tool-status.error{color:var(--status-error)}.tool .tool-command{border-top:var(--hairline);padding:var(--space-2) var(--space-3) 0;overflow-x:auto}.tool .tool-command code{border:var(--hairline);border-radius:var(--radius);padding:var(--space-1) var(--space-2);white-space:pre-wrap;display:block}.tool .tool-input{border-top:var(--hairline);padding:var(--space-2) var(--space-3);overflow-x:auto}.tool .tool-input-label{font-size:var(--fs-small);color:var(--muted);margin-bottom:var(--space-1);display:block}.tool .tool-input pre{font-size:var(--fs-small);white-space:pre-wrap;border:none;padding:0}.tool .suggested-command{margin-top:var(--space-1)}.tool .suggested-command code{border:var(--hairline);border-radius:var(--radius);padding:1px var(--space-2)}.tool .tool-result{border-top:var(--hairline);padding:var(--space-2) var(--space-3);overflow-x:auto}.tool-output-truncated,.transcript-window-control{color:var(--muted);font-size:var(--fs-small);margin-bottom:var(--space-2)}.transcript-window-control{text-align:center}.tool .tool-command+.tool-result,.tool .tool-input+.tool-result{border-top:none}.tool-images{gap:var(--space-2);flex-wrap:wrap;display:flex}.tool-image{object-fit:contain;border:var(--hairline);border-radius:var(--radius);width:auto;max-width:100%;height:auto;max-height:480px;display:block}.tool .tool-result pre{font-size:var(--fs-small);border:none;padding:0}.tool .tool-result pre,.tool .tool-input pre{max-height:340px;overflow-y:auto}.hljs{color:var(--text);background:0 0}.hljs-comment,.hljs-quote{color:var(--syntax-comment)}.hljs-keyword,.hljs-selector-tag{color:var(--syntax-keyword)}.hljs-number,.hljs-literal{color:var(--syntax-number)}.hljs-string,.hljs-doctag{color:var(--syntax-string)}.hljs-function,.hljs-title,.hljs-title.function_,.hljs-section,.hljs-name{color:var(--syntax-function)}.hljs-type,.hljs-class,.hljs-title.class_,.hljs-built_in{color:var(--syntax-type)}.hljs-attr,.hljs-variable,.hljs-variable.language_,.hljs-params,.hljs-property{color:var(--syntax-variable)}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:var(--syntax-keyword)}.hljs-operator{color:var(--syntax-operator)}.hljs-punctuation{color:var(--syntax-punctuation)}.hljs-subst{color:var(--text)}.diff-add{color:var(--status-running)}.diff-del{color:var(--status-error)}.entry.summary-card .entry-body{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);color:var(--muted);font-size:var(--fs-secondary)}.entry.summary-card summary{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--muted);font-size:var(--fs-secondary);list-style:none}.entry.summary-card summary:before{content:"▸ "}.entry.summary-card details[open] summary:before{content:"▾ "}.entry.custom-card .entry-body,.entry.agent-result-card details{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary)}.entry.agent-result-card summary{cursor:pointer;-webkit-user-select:none;user-select:none;gap:var(--space-2);color:var(--muted);align-items:baseline;list-style:none;display:flex}.entry.agent-result-card summary:before{content:"▸ "}.entry.agent-result-card details[open] summary:before{content:"▾ "}.agent-result-header{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.entry.agent-result-card .entry-body{margin-top:var(--space-2)}.streaming-cursor:after{content:"▌";color:var(--status-running)}.dock{border-top:var(--hairline);flex-shrink:0}.dock.collapsed{background:var(--bg)}.dock-collapse-row{max-width:960px;padding:var(--space-1) calc(var(--space-4) + env(safe-area-inset-right,0px)) calc(var(--space-1) + env(safe-area-inset-bottom,0px)) calc(var(--space-4) + env(safe-area-inset-left,0px));align-items:center;gap:var(--space-3);font-size:var(--fs-small);color:var(--muted);flex-wrap:wrap;margin:0 auto;display:flex}.dock-collapsed-hint{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.dock-inner{max-width:960px;padding:var(--space-3) calc(var(--space-4) + env(safe-area-inset-right,0px)) calc(var(--space-3) + env(safe-area-inset-bottom,0px)) calc(var(--space-4) + env(safe-area-inset-left,0px));gap:var(--space-2);flex-direction:column;margin:0 auto;display:flex}.tasks{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary)}.tasks summary{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--muted);font-size:var(--fs-small);list-style:none}.tasks summary:before{content:"▸ "}.tasks[open] summary:before{content:"▾ "}.tasks ul{padding-top:var(--space-1);list-style:none}.tasks .done{color:var(--muted)}.tasks .active{font-weight:600}.subagent-strip{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.subagent-strip .count,.subagent-strip .collapsed-hint{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}.subagent-strip .subagent-toggle{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-family:inherit;font-size:var(--fs-small);padding:1px var(--space-2);cursor:pointer}.subagent-strip .subagent-toggle:hover{border-color:var(--text)}.subagent-strip.collapsed{padding-block:var(--space-1)}.subagent-strip .agent-chip{border:var(--hairline);border-radius:var(--radius);padding:1px var(--space-2);font-size:var(--fs-small);background:var(--bg);color:var(--text);cursor:pointer;align-items:center;gap:6px;max-width:260px;font-family:inherit;transition:border-color .2s;display:inline-flex}.subagent-strip .agent-chip:hover{border-color:var(--text)}.subagent-strip .agent-chip .live{color:var(--status-running)}.subagent-strip .agent-chip .done{color:var(--muted)}.subagent-strip .agent-chip .task{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.status-line{align-items:center;gap:var(--space-3);font-size:var(--fs-secondary);flex-wrap:wrap;display:flex}.status-line .working{color:var(--status-running)}.status-line .warning{color:var(--status-attention)}.status-line .error{color:var(--status-error)}.status-line .queued{color:var(--muted);font-size:var(--fs-small)}.status-line .btn{margin-left:auto}.status-line .inline-stop{margin-left:var(--space-2)}.composer{gap:var(--space-2);flex-direction:column;display:flex;position:relative}.queued-message-row{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2);align-items:center;gap:var(--space-2);font-size:var(--fs-small);flex-wrap:wrap;display:flex}.queued-chip{align-items:baseline;gap:var(--space-1);text-overflow:ellipsis;white-space:nowrap;max-width:240px;color:var(--muted);display:inline-flex;overflow:hidden}.attachment-strip{gap:var(--space-2);flex-wrap:wrap;display:flex}.attachment-thumb,.attachment-file{border:var(--hairline);border-radius:var(--radius);padding:2px;position:relative}.attachment-file{align-items:baseline;gap:var(--space-2);padding:2px var(--space-2);font-size:var(--fs-small);overflow-wrap:anywhere;max-width:100%;display:inline-flex}.attachment-thumb img{object-fit:cover;width:72px;height:54px;display:block}.attachment-thumb button,.attachment-file button{border:var(--hairline);background:var(--bg);color:var(--text);cursor:pointer;border-radius:999px;position:absolute;top:-8px;right:-8px}.command-popover{left:0;right:0;bottom:calc(100% + var(--space-2));border:var(--hairline);border-radius:var(--radius);background:var(--bg);padding:var(--space-1);z-index:5;max-height:260px;position:absolute;overflow-y:auto}.command-option{background:var(--bg);width:100%;color:var(--text);font:inherit;text-align:left;padding:var(--space-2);border-radius:var(--radius);gap:var(--space-2);cursor:pointer;border:none;grid-template-columns:minmax(120px,max-content) 1fr max-content;align-items:baseline;display:grid}.command-option:hover,.command-option.selected{background:var(--text);color:var(--bg)}.command-name{font-weight:500}.command-description{color:var(--muted);font-size:var(--fs-small);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.command-source{border:var(--hairline);border-radius:var(--radius);color:var(--muted);font-size:var(--fs-small);padding:0 var(--space-1)}.command-option.selected .command-description,.command-option:hover .command-description,.command-option.selected .command-source,.command-option:hover .command-source{color:var(--bg)}.composer textarea{border:var(--hairline);border-radius:var(--radius);background:var(--bg);width:100%;color:var(--text);padding:var(--space-2) var(--space-3);font-size:var(--fs-body);resize:vertical;min-height:60px;max-height:40vh;font-family:inherit;line-height:1.6;transition:border-color .2s;overflow-y:hidden}.composer textarea:hover,.composer textarea:focus{border-color:var(--text);outline:none}.hidden-file-input{display:none}.composer-row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.mode-toggle{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);display:inline-flex;overflow:hidden}.mode-toggle button{background:var(--bg);color:var(--muted);padding:2px var(--space-3);cursor:pointer;border:none;font-family:inherit}.mode-toggle button.selected{background:var(--text);color:var(--bg)}.composer-row .send{margin-left:auto}.ghost-suggest{font-size:var(--fs-small);color:var(--muted);cursor:pointer;background:0 0;border:none;font-family:inherit}.ghost-suggest .key{border:var(--hairline);border-radius:var(--radius);padding:0 4px}.readonly-note{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);color:var(--muted)}.fallback-banner{border:1px solid var(--status-attention);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);gap:var(--space-3);align-items:baseline;display:flex}.fallback-banner .dismiss{margin-left:auto}.widget-block{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-small);color:var(--muted);white-space:pre-wrap}.toast-region{bottom:var(--space-4);right:var(--space-4);gap:var(--space-2);z-index:50;flex-direction:column;max-width:360px;display:flex;position:fixed}.toast{border:var(--hairline);border-radius:var(--radius);background:var(--bg);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);gap:var(--space-2);align-items:baseline;display:flex}.toast.warning{border-color:var(--status-attention)}.toast.error{border-color:var(--status-error)}.files-head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin:var(--space-5) 0 var(--space-4);flex-wrap:wrap;display:flex}.crumbs{font-size:var(--fs-secondary);flex-wrap:wrap;align-items:baseline;gap:2px;display:flex}.crumbs .sep{color:var(--muted);margin:0 2px}.scope-note{color:var(--muted);font-size:var(--fs-small);margin-top:var(--space-1)}.context-trust{border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);margin-bottom:var(--space-4);font-size:var(--fs-secondary)}.context-trust p{color:var(--muted);font-size:var(--fs-small);margin:var(--space-1) 0 var(--space-2);overflow-wrap:anywhere}.context-trust-impact{margin-bottom:0!important}.context-trust-warning{color:var(--status-attention)}.context-trust-warning a{color:inherit}.head-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.places{gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;align-items:baseline;display:flex}.places .label{color:var(--muted);font-size:var(--fs-small)}.place-chip{border:var(--hairline);border-radius:var(--radius);padding:1px var(--space-2);font-size:var(--fs-small);background:var(--bg);color:var(--text);cursor:pointer;font-family:inherit;text-decoration:none;transition:border-color .2s}.place-chip:hover{border-color:var(--text)}.file-table{border-collapse:collapse;width:100%;font-size:var(--fs-secondary)}.file-table th{text-align:left;font-size:var(--fs-small);color:var(--muted);border-bottom:var(--hairline);padding:var(--space-1) var(--space-2);font-weight:400}.file-table td{border-bottom:var(--hairline);padding:var(--space-2)}.file-table .name{color:var(--text);cursor:pointer;font-family:inherit;font-size:inherit;background:0 0;border:none;padding:0;text-decoration:none}.file-table .name .icon{color:var(--muted);margin-right:var(--space-1)}.file-table .meta{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}.file-table .actions{text-align:right}.drop-zone{border:1px dashed var(--border);border-radius:var(--radius);padding:var(--space-4);text-align:center;color:var(--muted);font-size:var(--fs-small);margin-top:var(--space-4);transition:border-color .2s}.drop-zone.active{border-color:var(--text);color:var(--text)}.upload-warning{font-size:var(--fs-small);color:var(--muted);margin-top:var(--space-2)}.settings-wrap{max-width:720px}.settings-intro{color:var(--muted);font-size:var(--fs-secondary);margin:var(--space-2) 0 var(--space-5)}.settings-section{margin-bottom:var(--space-6)}.settings-section h2{font-size:var(--fs-h3);border-bottom:var(--hairline);padding-bottom:var(--space-2);margin-bottom:var(--space-3)}.setting-row{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-2) 0;display:flex}.setting-label{flex-direction:column;gap:2px;min-width:0;display:flex}.setting-label .name{font-size:var(--fs-secondary)}.setting-label .hint{font-size:var(--fs-small);color:var(--muted)}.setting-control{min-width:0;max-width:100%}.agent-context-row .setting-label{flex-shrink:0}.setting-control select,.setting-control input{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:2px var(--space-2);max-width:100%}.checkbox-control{align-items:center;gap:var(--space-2);font-size:var(--fs-secondary);display:inline-flex}.checkbox-control input{width:auto}.settings-error{border:1px solid var(--status-error);border-radius:var(--radius);color:var(--status-error);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);margin-bottom:var(--space-4);white-space:pre-wrap}.settings-warning{border:1px solid var(--status-attention);border-radius:var(--radius);color:var(--status-attention);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);margin-bottom:var(--space-4);white-space:pre-wrap}.model-picker-button{white-space:normal;overflow-wrap:anywhere;text-align:left;min-width:0;max-width:min(100%,520px)}.agent-model-row{gap:var(--space-3);padding:var(--space-2) 0;border-bottom:var(--hairline);grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) auto;align-items:start;display:grid}.agent-model-summary{flex-direction:column;gap:2px;min-width:0;display:flex}.agent-model-name{font-size:var(--fs-secondary);font-weight:600}.agent-model-description{color:var(--muted);font-size:var(--fs-small)}.agent-model-fallbacks{gap:var(--space-1);flex-wrap:wrap;min-width:0;display:flex}.agent-model-chip{border:var(--hairline);border-radius:var(--radius);color:var(--muted);font-size:var(--fs-small);padding:0 var(--space-1);overflow-wrap:anywhere;white-space:normal;min-width:0;max-width:100%}.agent-model-editor{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);padding:var(--space-2);flex-direction:column;grid-column:1/-1;display:flex}.agent-model-entry{justify-content:space-between;gap:var(--space-2);font-size:var(--fs-secondary);align-items:center;min-width:0;display:flex}.agent-model-entry>span:first-child{overflow-wrap:anywhere;min-width:0}.agent-model-entry-actions{gap:var(--space-1);flex-shrink:0;display:flex}.context-trust-subsection{margin:var(--space-4) 0}.context-trust-subsection h3{font-size:var(--fs-secondary);margin-bottom:var(--space-1)}.context-trust-global-warning,.trusted-context-empty{margin:var(--space-3) 0}.trusted-context-folder-row{align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:var(--hairline);font-size:var(--fs-secondary);display:flex}.trusted-context-folder-row code{overflow-wrap:anywhere;min-width:0}.trusted-context-folder-row .meta{color:var(--muted);font-size:var(--fs-small);margin-left:auto}.trusted-context-folder-row .btn{flex-shrink:0}.trusted-context-folder-add{align-items:center;gap:var(--space-2);margin-top:var(--space-3);display:flex}.trusted-context-folder-add label{font-size:var(--fs-small);white-space:nowrap}.trusted-context-folder-add input{border:var(--hairline);border-radius:var(--radius);background:var(--bg);min-width:0;color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:2px var(--space-2);flex:1}.settings-footnote{margin-top:calc(-1 * var(--space-3));margin-bottom:var(--space-5)}.appearance-block{margin-bottom:var(--space-4)}.appearance-heading-row .name{font-weight:600}.theme-gallery{gap:var(--space-3);margin-top:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.theme-card{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);padding:var(--space-2);text-align:left;cursor:pointer;flex-direction:column;font-family:inherit;transition:border-color .2s;display:flex}.theme-card:hover{border-color:var(--muted)}.theme-card.active{border-color:var(--text)}.theme-card-preview{gap:var(--space-2);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-2);flex-direction:column;display:flex;overflow:hidden}.theme-card-swatch{flex-direction:column;gap:2px;min-width:0;display:flex}.theme-card-name{font-size:var(--fs-secondary);color:var(--text);font-weight:600}.theme-card-muted{font-size:var(--fs-small);color:var(--muted)}.theme-card-chips{gap:var(--space-1);flex-wrap:wrap;display:flex}.theme-card-code{font-size:var(--fs-small);white-space:pre;margin:0;font-family:IBM Plex Mono,Courier New,monospace;line-height:1.4;overflow:hidden}.theme-card-code .hljs{background:0 0;padding:0}.theme-card-footer{justify-content:space-between;align-items:baseline;gap:var(--space-2);font-size:var(--fs-small);display:flex}.theme-card-title{font-size:var(--fs-secondary);color:var(--text)}.theme-card-state{color:var(--muted)}.theme-card.active .theme-card-state{color:var(--text)}@media (width<=700px){.theme-gallery{grid-template-columns:1fr}}.device-row{align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:var(--hairline);font-size:var(--fs-secondary);display:flex}.device-row .meta{color:var(--muted);font-size:var(--fs-small);margin-left:auto}.this-device{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);color:var(--muted);padding:0 var(--space-1);margin-left:var(--space-1)}.pair-wrap{min-height:100vh;padding:var(--space-4);justify-content:center;align-items:center;display:flex}.pair-card{border:var(--hairline);border-radius:var(--radius);width:100%;max-width:460px;padding:var(--space-6);gap:var(--space-4);flex-direction:column;display:flex}.pair-card h1{font-size:var(--fs-h2)}.pair-card .sub{color:var(--muted);font-size:var(--fs-secondary)}.identity{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);font-size:var(--fs-secondary);flex-direction:column;display:flex}.identity .row-line{justify-content:space-between;gap:var(--space-3);display:flex}.identity .k{color:var(--muted);font-size:var(--fs-small)}.pin-input{text-align:center;width:100%;font-size:var(--fs-h1);letter-spacing:.5em;border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);padding:var(--space-2);font-family:inherit}.pin-input:focus{border-color:var(--text);outline:none}.pin-hint{font-size:var(--fs-small);color:var(--muted)}.security-note{border-top:var(--hairline);padding-top:var(--space-3);gap:var(--space-2);font-size:var(--fs-small);color:var(--muted);flex-direction:column;display:flex}.pair-error{color:var(--status-error);font-size:var(--fs-secondary)}.denied-card{border:1px solid var(--status-error);border-radius:var(--radius);width:100%;max-width:460px;padding:var(--space-6);gap:var(--space-3);flex-direction:column;display:flex}.field{gap:var(--space-1);flex-direction:column;display:flex}.field label{font-size:var(--fs-small);color:var(--muted)}.field input,.field textarea,.field select{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:var(--space-2)}.field input:focus,.field textarea:focus{border-color:var(--text);outline:none}.recent-projects{flex-direction:column;gap:2px;max-height:160px;display:flex;overflow-y:auto}.recent-projects button{text-align:left;color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:var(--space-1) var(--space-2);cursor:pointer;border-radius:var(--radius);background:0 0;border:none}.recent-projects button:hover{background:var(--border)}.model-scope-tabs{border:var(--hairline);border-radius:var(--radius);margin-bottom:var(--space-3);font-size:var(--fs-small);display:inline-flex;overflow:hidden}.model-scope-tabs button{background:var(--bg);color:var(--muted);padding:2px var(--space-3);cursor:pointer;border:none;font-family:inherit}.model-scope-tabs button.selected{background:var(--text);color:var(--bg)}.model-picker-modal{min-width:min(360px,100vw - 32px);max-width:min(900px,100vw - 32px);overflow:auto}@media (width>=701px){.model-picker-modal{resize:horizontal}}.model-list{gap:var(--space-2);flex-direction:column;min-width:0;display:flex;overflow:hidden auto}.model-provider-group{flex-direction:column;gap:2px;display:flex}.model-provider-heading{background:var(--bg);color:var(--muted);font-size:var(--fs-small);border-bottom:var(--hairline);padding:var(--space-1) var(--space-2);z-index:1;position:sticky;top:0}.model-row{align-items:start;gap:2px var(--space-2);text-align:left;border:var(--hairline);border-radius:var(--radius);color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:var(--space-1) var(--space-2);cursor:pointer;background:0 0;grid-template-columns:18px minmax(0,1fr) auto auto;min-width:0;display:grid}.model-row:hover,.model-row.current{border-color:var(--text)}.model-current{color:var(--status-running);grid-area:1/1}.model-id{overflow-wrap:anywhere;white-space:normal;grid-area:1/2;min-width:0;font-weight:600}.model-name{color:var(--muted);font-size:var(--fs-small);overflow-wrap:anywhere;white-space:normal;grid-area:2/2/auto/-1;min-width:0}.model-provider-badge,.model-reasoning{color:var(--muted);font-size:var(--fs-small);white-space:nowrap;border:var(--hairline);border-radius:var(--radius);padding:0 var(--space-1);grid-row:1}.model-provider-badge{grid-column:3}.model-reasoning{grid-column:4}.context-modal-body{gap:var(--space-4);flex-direction:column;display:flex}.context-section h3{font-size:var(--fs-secondary);margin-bottom:var(--space-1)}.context-section ul{gap:var(--space-1);font-size:var(--fs-small);flex-direction:column;list-style:none;display:flex}.context-section li{overflow-wrap:anywhere}.fork-message-list{gap:var(--space-2);flex-direction:column;max-height:360px;display:flex;overflow-y:auto}.fork-message{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font:inherit;text-align:left;padding:var(--space-2);cursor:pointer;gap:var(--space-2);display:flex}.fork-message:hover{border-color:var(--text)}.fork-entry-id{color:var(--muted);font-size:var(--fs-small);flex:none}@media (width<=700px){.container,.topbar-inner,.session-bar-inner,.dock-inner,.dock-collapse-row,.chat-inner{width:100%;min-width:0;max-width:100%;padding-left:var(--space-3);padding-right:var(--space-3)}.session-grid{grid-template-columns:minmax(0,1fr)}.session-card,.disk-row,.session-meta,.session-actions,.disk-row .actions{min-width:0;max-width:100%}.disk-row,.session-meta,.session-actions,.disk-row .actions{flex-wrap:wrap}.session-title{flex-wrap:wrap;justify-content:flex-start;min-width:0;max-width:100%}.session-title .name{text-overflow:clip;white-space:normal;overflow-wrap:anywhere;flex:12rem;min-width:0;max-width:100%;overflow:visible}.session-title .chip{flex:none;max-width:100%}.session-project,.attention-reason,.error-reason,.activity,.subagents,.session-meta,.group-head h3{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.session-project{text-overflow:clip;overflow:visible}.activity{text-overflow:clip}.subagents .agent-line{text-overflow:clip;white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%;overflow:visible}.session-meta>span{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.group-head h3{flex:1 1 0}.disk-row .name,.disk-row .meta{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.disk-row .name{text-overflow:clip;flex:1 1 0;overflow:visible}.disk-row .meta{order:3;width:100%;margin-left:0}.session-bar .project{display:none}.session-bar .right{align-items:stretch;width:100%;margin-left:0}.session-bar .right .switcher{justify-content:center}.session-bar .right .model-switcher{flex:100%;max-width:100%}.entry.user{max-width:100%}.file-table .cols{display:none}.setting-row{flex-direction:column;align-items:stretch}.setting-control{align-self:flex-end}.agent-model-row{grid-template-columns:1fr}.agent-model-edit{justify-self:start}.agent-model-entry{flex-direction:column;align-items:flex-start}.trusted-context-folder-row{flex-wrap:wrap;align-items:flex-start}.trusted-context-folder-row code{flex-basis:100%}.trusted-context-folder-row .meta{margin-left:0}.trusted-context-folder-add{flex-direction:column;align-items:stretch}.trusted-context-folder-add label{white-space:normal}.trusted-context-folder-add .btn{align-self:flex-start}.subagent-strip{align-items:stretch;gap:var(--space-2)}.subagent-strip .subagent-toggle{flex:none;min-height:32px}.subagent-strip .count,.subagent-strip .collapsed-hint{white-space:normal}.subagent-strip .agent-chip{max-width:100%}.head-actions .btn{flex:1}.composer textarea{font-size:16px}}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(./jetbrains-mono-BCtJif-v.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:italic;font-weight:100 800;font-display:swap;src:url(./jetbrains-mono-italic-WKDR0M8A.woff2)format("woff2")}[data-color-mode=light]:not([data-theme]){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--text:#000;--border:#e0e0e0;--muted:#666;--status-running:#00871f;--status-attention:#8a5400;--status-idle:#666;--status-error:#d10041;--syntax-comment:green;--syntax-keyword:#00f;--syntax-string:#a31515;--syntax-number:#098658;--syntax-function:#795e26;--syntax-type:#267f99;--syntax-variable:#001080;--syntax-operator:#000;--syntax-punctuation:#000}[data-color-mode=dark]:not([data-theme]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d;--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}[data-theme=default]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:#fff;--text:#000;--border:#e0e0e0;--muted:#666;--status-running:#00871f;--status-attention:#8a5400;--status-idle:#666;--status-error:#d10041;--syntax-comment:green;--syntax-keyword:#00f;--syntax-string:#a31515;--syntax-number:#098658;--syntax-function:#795e26;--syntax-type:#267f99;--syntax-variable:#001080;--syntax-operator:#000;--syntax-punctuation:#000}[data-theme=default][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d;--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}@media (prefers-color-scheme:dark){[data-theme=default]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d;--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}}[data-theme=dim]{--dim-d-bg:#1e1f22;--dim-d-text:#d7d8da;--dim-d-border:#3a3c40;--dim-d-muted:#9a9ea6;--dim-d-running:#5ec27a;--dim-d-attention:#d8a341;--dim-d-idle:#9a9ea6;--dim-d-error:#f0637f;--dim-d-comment:#8b9199;--dim-d-keyword:#8ab4f8;--dim-d-string:#c3956a;--dim-d-number:#9fce8a;--dim-d-function:#d9c46e;--dim-d-type:#5cc2b0;--dim-d-variable:#9cc7e8;--dim-d-operator:#c3c6cb;--dim-d-punctuation:#c3c6cb;--dim-l-bg:#f0f0ee;--dim-l-text:#33353a;--dim-l-border:#d3d4d1;--dim-l-muted:#5c5f66;--dim-l-running:#1c7a37;--dim-l-attention:#8a5400;--dim-l-idle:#5c5f66;--dim-l-error:#c01743;--dim-l-comment:#4f6e42;--dim-l-keyword:#1a4fc0;--dim-l-string:#9a3a20;--dim-l-number:#1f7a4a;--dim-l-function:#6f5a12;--dim-l-type:#136b7a;--dim-l-variable:#123a9c;--dim-l-operator:#33353a;--dim-l-punctuation:#33353a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--dim-l-bg);--text:var(--dim-l-text);--border:var(--dim-l-border);--muted:var(--dim-l-muted);--status-running:var(--dim-l-running);--status-attention:var(--dim-l-attention);--status-idle:var(--dim-l-idle);--status-error:var(--dim-l-error);--syntax-comment:var(--dim-l-comment);--syntax-keyword:var(--dim-l-keyword);--syntax-string:var(--dim-l-string);--syntax-number:var(--dim-l-number);--syntax-function:var(--dim-l-function);--syntax-type:var(--dim-l-type);--syntax-variable:var(--dim-l-variable);--syntax-operator:var(--dim-l-operator);--syntax-punctuation:var(--dim-l-punctuation)}[data-theme=dim][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--dim-d-bg);--text:var(--dim-d-text);--border:var(--dim-d-border);--muted:var(--dim-d-muted);--status-running:var(--dim-d-running);--status-attention:var(--dim-d-attention);--status-idle:var(--dim-d-idle);--status-error:var(--dim-d-error);--syntax-comment:var(--dim-d-comment);--syntax-keyword:var(--dim-d-keyword);--syntax-string:var(--dim-d-string);--syntax-number:var(--dim-d-number);--syntax-function:var(--dim-d-function);--syntax-type:var(--dim-d-type);--syntax-variable:var(--dim-d-variable);--syntax-operator:var(--dim-d-operator);--syntax-punctuation:var(--dim-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=dim]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--dim-d-bg);--text:var(--dim-d-text);--border:var(--dim-d-border);--muted:var(--dim-d-muted);--status-running:var(--dim-d-running);--status-attention:var(--dim-d-attention);--status-idle:var(--dim-d-idle);--status-error:var(--dim-d-error);--syntax-comment:var(--dim-d-comment);--syntax-keyword:var(--dim-d-keyword);--syntax-string:var(--dim-d-string);--syntax-number:var(--dim-d-number);--syntax-function:var(--dim-d-function);--syntax-type:var(--dim-d-type);--syntax-variable:var(--dim-d-variable);--syntax-operator:var(--dim-d-operator);--syntax-punctuation:var(--dim-d-punctuation)}}[data-theme=solarized]{--sol-d-bg:#002b36;--sol-d-text:#93a1a1;--sol-d-border:#0a4b5a;--sol-d-muted:#839496;--sol-d-running:#859900;--sol-d-attention:#cb8b18;--sol-d-idle:#839496;--sol-d-error:#fa6459;--sol-d-comment:#7e9295;--sol-d-keyword:#6c8fd6;--sol-d-string:#2aa198;--sol-d-number:#b58900;--sol-d-function:#4a9fdb;--sol-d-type:#b58900;--sol-d-variable:#93a1a1;--sol-d-operator:#93a1a1;--sol-d-punctuation:#93a1a1;--sol-l-bg:#fdf6e3;--sol-l-text:#586e75;--sol-l-border:#e7e0cb;--sol-l-muted:#5b6f76;--sol-l-running:#567500;--sol-l-attention:#a35700;--sol-l-idle:#5b6f76;--sol-l-error:#c9412f;--sol-l-comment:#5e7272;--sol-l-keyword:#5d62bd;--sol-l-string:#147878;--sol-l-number:#8a6d00;--sol-l-function:#1f6fa8;--sol-l-type:#a35700;--sol-l-variable:#586e75;--sol-l-operator:#586e75;--sol-l-punctuation:#586e75;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--sol-l-bg);--text:var(--sol-l-text);--border:var(--sol-l-border);--muted:var(--sol-l-muted);--status-running:var(--sol-l-running);--status-attention:var(--sol-l-attention);--status-idle:var(--sol-l-idle);--status-error:var(--sol-l-error);--syntax-comment:var(--sol-l-comment);--syntax-keyword:var(--sol-l-keyword);--syntax-string:var(--sol-l-string);--syntax-number:var(--sol-l-number);--syntax-function:var(--sol-l-function);--syntax-type:var(--sol-l-type);--syntax-variable:var(--sol-l-variable);--syntax-operator:var(--sol-l-operator);--syntax-punctuation:var(--sol-l-punctuation)}[data-theme=solarized][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--sol-d-bg);--text:var(--sol-d-text);--border:var(--sol-d-border);--muted:var(--sol-d-muted);--status-running:var(--sol-d-running);--status-attention:var(--sol-d-attention);--status-idle:var(--sol-d-idle);--status-error:var(--sol-d-error);--syntax-comment:var(--sol-d-comment);--syntax-keyword:var(--sol-d-keyword);--syntax-string:var(--sol-d-string);--syntax-number:var(--sol-d-number);--syntax-function:var(--sol-d-function);--syntax-type:var(--sol-d-type);--syntax-variable:var(--sol-d-variable);--syntax-operator:var(--sol-d-operator);--syntax-punctuation:var(--sol-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=solarized]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--sol-d-bg);--text:var(--sol-d-text);--border:var(--sol-d-border);--muted:var(--sol-d-muted);--status-running:var(--sol-d-running);--status-attention:var(--sol-d-attention);--status-idle:var(--sol-d-idle);--status-error:var(--sol-d-error);--syntax-comment:var(--sol-d-comment);--syntax-keyword:var(--sol-d-keyword);--syntax-string:var(--sol-d-string);--syntax-number:var(--sol-d-number);--syntax-function:var(--sol-d-function);--syntax-type:var(--sol-d-type);--syntax-variable:var(--sol-d-variable);--syntax-operator:var(--sol-d-operator);--syntax-punctuation:var(--sol-d-punctuation)}}[data-theme=gruvbox]{--gruv-d-bg:#282828;--gruv-d-text:#ebdbb2;--gruv-d-border:#504945;--gruv-d-muted:#a89984;--gruv-d-running:#b8bb26;--gruv-d-attention:#fabd2f;--gruv-d-idle:#a89984;--gruv-d-error:#fc6a58;--gruv-d-comment:#a08f7d;--gruv-d-keyword:#fc6a58;--gruv-d-string:#b8bb26;--gruv-d-number:#d3869b;--gruv-d-function:#b8bb26;--gruv-d-type:#fabd2f;--gruv-d-variable:#83a598;--gruv-d-operator:#ebdbb2;--gruv-d-punctuation:#ebdbb2;--gruv-l-bg:#fbf1c7;--gruv-l-text:#3c3836;--gruv-l-border:#e6dcae;--gruv-l-muted:#665c54;--gruv-l-running:#557000;--gruv-l-attention:#a35a00;--gruv-l-idle:#665c54;--gruv-l-error:#9d0006;--gruv-l-comment:#6f6358;--gruv-l-keyword:#9d0006;--gruv-l-string:#557000;--gruv-l-number:#8f3f71;--gruv-l-function:#6d680c;--gruv-l-type:#97600f;--gruv-l-variable:#076678;--gruv-l-operator:#3c3836;--gruv-l-punctuation:#3c3836;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"JetBrains Mono", "IBM Plex Mono", "Courier New", monospace;--bg:var(--gruv-l-bg);--text:var(--gruv-l-text);--border:var(--gruv-l-border);--muted:var(--gruv-l-muted);--status-running:var(--gruv-l-running);--status-attention:var(--gruv-l-attention);--status-idle:var(--gruv-l-idle);--status-error:var(--gruv-l-error);--syntax-comment:var(--gruv-l-comment);--syntax-keyword:var(--gruv-l-keyword);--syntax-string:var(--gruv-l-string);--syntax-number:var(--gruv-l-number);--syntax-function:var(--gruv-l-function);--syntax-type:var(--gruv-l-type);--syntax-variable:var(--gruv-l-variable);--syntax-operator:var(--gruv-l-operator);--syntax-punctuation:var(--gruv-l-punctuation)}[data-theme=gruvbox][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--gruv-d-bg);--text:var(--gruv-d-text);--border:var(--gruv-d-border);--muted:var(--gruv-d-muted);--status-running:var(--gruv-d-running);--status-attention:var(--gruv-d-attention);--status-idle:var(--gruv-d-idle);--status-error:var(--gruv-d-error);--syntax-comment:var(--gruv-d-comment);--syntax-keyword:var(--gruv-d-keyword);--syntax-string:var(--gruv-d-string);--syntax-number:var(--gruv-d-number);--syntax-function:var(--gruv-d-function);--syntax-type:var(--gruv-d-type);--syntax-variable:var(--gruv-d-variable);--syntax-operator:var(--gruv-d-operator);--syntax-punctuation:var(--gruv-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=gruvbox]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--gruv-d-bg);--text:var(--gruv-d-text);--border:var(--gruv-d-border);--muted:var(--gruv-d-muted);--status-running:var(--gruv-d-running);--status-attention:var(--gruv-d-attention);--status-idle:var(--gruv-d-idle);--status-error:var(--gruv-d-error);--syntax-comment:var(--gruv-d-comment);--syntax-keyword:var(--gruv-d-keyword);--syntax-string:var(--gruv-d-string);--syntax-number:var(--gruv-d-number);--syntax-function:var(--gruv-d-function);--syntax-type:var(--gruv-d-type);--syntax-variable:var(--gruv-d-variable);--syntax-operator:var(--gruv-d-operator);--syntax-punctuation:var(--gruv-d-punctuation)}}[data-theme=qud]{--qud-d-bg:#0f3b3a;--qud-d-text:#d7e4de;--qud-d-border:#1f5b57;--qud-d-muted:#8fb3aa;--qud-d-running:#00c420;--qud-d-attention:#e99f10;--qud-d-idle:#8fb3aa;--qud-d-error:#ff8a70;--qud-d-comment:#8ab0a1;--qud-d-keyword:#3aa6ff;--qud-d-string:#cfc041;--qud-d-number:#e894e2;--qud-d-function:#3fd45f;--qud-d-type:#77bfcf;--qud-d-variable:#8fd0dd;--qud-d-operator:#b1c9c3;--qud-d-punctuation:#b1c9c3;--qud-l-bg:#e8efe9;--qud-l-text:#123b38;--qud-l-border:#cdddd6;--qud-l-muted:#3c655d;--qud-l-running:#0a6b1f;--qud-l-attention:#8a5400;--qud-l-idle:#3c655d;--qud-l-error:#b3341a;--qud-l-comment:#3f6a5e;--qud-l-keyword:#12489c;--qud-l-string:#7a6a00;--qud-l-number:#8f3a86;--qud-l-function:#0a6b1f;--qud-l-type:#0f6070;--qud-l-variable:#155352;--qud-l-operator:#123b38;--qud-l-punctuation:#123b38;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--qud-l-bg);--text:var(--qud-l-text);--border:var(--qud-l-border);--muted:var(--qud-l-muted);--status-running:var(--qud-l-running);--status-attention:var(--qud-l-attention);--status-idle:var(--qud-l-idle);--status-error:var(--qud-l-error);--syntax-comment:var(--qud-l-comment);--syntax-keyword:var(--qud-l-keyword);--syntax-string:var(--qud-l-string);--syntax-number:var(--qud-l-number);--syntax-function:var(--qud-l-function);--syntax-type:var(--qud-l-type);--syntax-variable:var(--qud-l-variable);--syntax-operator:var(--qud-l-operator);--syntax-punctuation:var(--qud-l-punctuation)}[data-theme=qud][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--qud-d-bg);--text:var(--qud-d-text);--border:var(--qud-d-border);--muted:var(--qud-d-muted);--status-running:var(--qud-d-running);--status-attention:var(--qud-d-attention);--status-idle:var(--qud-d-idle);--status-error:var(--qud-d-error);--syntax-comment:var(--qud-d-comment);--syntax-keyword:var(--qud-d-keyword);--syntax-string:var(--qud-d-string);--syntax-number:var(--qud-d-number);--syntax-function:var(--qud-d-function);--syntax-type:var(--qud-d-type);--syntax-variable:var(--qud-d-variable);--syntax-operator:var(--qud-d-operator);--syntax-punctuation:var(--qud-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=qud]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--qud-d-bg);--text:var(--qud-d-text);--border:var(--qud-d-border);--muted:var(--qud-d-muted);--status-running:var(--qud-d-running);--status-attention:var(--qud-d-attention);--status-idle:var(--qud-d-idle);--status-error:var(--qud-d-error);--syntax-comment:var(--qud-d-comment);--syntax-keyword:var(--qud-d-keyword);--syntax-string:var(--qud-d-string);--syntax-number:var(--qud-d-number);--syntax-function:var(--qud-d-function);--syntax-type:var(--qud-d-type);--syntax-variable:var(--qud-d-variable);--syntax-operator:var(--qud-d-operator);--syntax-punctuation:var(--qud-d-punctuation)}}[data-theme=vangogh]{--vg-d-bg:#0d1b3d;--vg-d-text:#f0e6c8;--vg-d-border:#2a3e6a;--vg-d-muted:#aab4d2;--vg-d-running:#8fbf6a;--vg-d-attention:#f5db37;--vg-d-idle:#aab4d2;--vg-d-error:#f07a52;--vg-d-comment:#8c96b8;--vg-d-keyword:#f5db37;--vg-d-string:#7fc5dc;--vg-d-number:#e0a95a;--vg-d-function:#5fb0e0;--vg-d-type:#c9b26a;--vg-d-variable:#a9c7ea;--vg-d-operator:#dad69f;--vg-d-punctuation:#dad69f;--vg-l-bg:#f4ecd2;--vg-l-text:#1a2a52;--vg-l-border:#e0d4ad;--vg-l-muted:#4a557d;--vg-l-running:#4a6b1f;--vg-l-attention:#855000;--vg-l-idle:#4a557d;--vg-l-error:#b03a1a;--vg-l-comment:#5a6488;--vg-l-keyword:#1a3a8c;--vg-l-string:#1f6f8c;--vg-l-number:#8a5a12;--vg-l-function:#2a4e93;--vg-l-type:#6a5a12;--vg-l-variable:#2a3e83;--vg-l-operator:#1a2a52;--vg-l-punctuation:#1a2a52;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--vg-l-bg);--text:var(--vg-l-text);--border:var(--vg-l-border);--muted:var(--vg-l-muted);--status-running:var(--vg-l-running);--status-attention:var(--vg-l-attention);--status-idle:var(--vg-l-idle);--status-error:var(--vg-l-error);--syntax-comment:var(--vg-l-comment);--syntax-keyword:var(--vg-l-keyword);--syntax-string:var(--vg-l-string);--syntax-number:var(--vg-l-number);--syntax-function:var(--vg-l-function);--syntax-type:var(--vg-l-type);--syntax-variable:var(--vg-l-variable);--syntax-operator:var(--vg-l-operator);--syntax-punctuation:var(--vg-l-punctuation)}[data-theme=vangogh][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--vg-d-bg);--text:var(--vg-d-text);--border:var(--vg-d-border);--muted:var(--vg-d-muted);--status-running:var(--vg-d-running);--status-attention:var(--vg-d-attention);--status-idle:var(--vg-d-idle);--status-error:var(--vg-d-error);--syntax-comment:var(--vg-d-comment);--syntax-keyword:var(--vg-d-keyword);--syntax-string:var(--vg-d-string);--syntax-number:var(--vg-d-number);--syntax-function:var(--vg-d-function);--syntax-type:var(--vg-d-type);--syntax-variable:var(--vg-d-variable);--syntax-operator:var(--vg-d-operator);--syntax-punctuation:var(--vg-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=vangogh]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--vg-d-bg);--text:var(--vg-d-text);--border:var(--vg-d-border);--muted:var(--vg-d-muted);--status-running:var(--vg-d-running);--status-attention:var(--vg-d-attention);--status-idle:var(--vg-d-idle);--status-error:var(--vg-d-error);--syntax-comment:var(--vg-d-comment);--syntax-keyword:var(--vg-d-keyword);--syntax-string:var(--vg-d-string);--syntax-number:var(--vg-d-number);--syntax-function:var(--vg-d-function);--syntax-type:var(--vg-d-type);--syntax-variable:var(--vg-d-variable);--syntax-operator:var(--vg-d-operator);--syntax-punctuation:var(--vg-d-punctuation)}}[data-theme=okabe]{--okabe-d-bg:#16181d;--okabe-d-text:#eceef2;--okabe-d-border:#363a42;--okabe-d-muted:#9ba1ab;--okabe-d-running:#56b4e9;--okabe-d-attention:#f0e442;--okabe-d-idle:#9ba1ab;--okabe-d-error:#f57a48;--okabe-d-comment:#8b95a3;--okabe-d-keyword:#56b4e9;--okabe-d-string:#4fc6a0;--okabe-d-number:#e08cc6;--okabe-d-function:#f0c04a;--okabe-d-type:#8fd4f0;--okabe-d-variable:#d7dbe1;--okabe-d-operator:#cdd2d9;--okabe-d-punctuation:#cdd2d9;--okabe-l-bg:#f6f6f3;--okabe-l-text:#1a1a1a;--okabe-l-border:#dcdcd6;--okabe-l-muted:#565b62;--okabe-l-running:#0067a3;--okabe-l-attention:#8a5a00;--okabe-l-idle:#565b62;--okabe-l-error:#b8430a;--okabe-l-comment:#4a5560;--okabe-l-keyword:#0067a3;--okabe-l-string:#077a5a;--okabe-l-number:#9a4a86;--okabe-l-function:#7a5500;--okabe-l-type:#0f6a86;--okabe-l-variable:#333;--okabe-l-operator:#1a1a1a;--okabe-l-punctuation:#1a1a1a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--okabe-l-bg);--text:var(--okabe-l-text);--border:var(--okabe-l-border);--muted:var(--okabe-l-muted);--status-running:var(--okabe-l-running);--status-attention:var(--okabe-l-attention);--status-idle:var(--okabe-l-idle);--status-error:var(--okabe-l-error);--syntax-comment:var(--okabe-l-comment);--syntax-keyword:var(--okabe-l-keyword);--syntax-string:var(--okabe-l-string);--syntax-number:var(--okabe-l-number);--syntax-function:var(--okabe-l-function);--syntax-type:var(--okabe-l-type);--syntax-variable:var(--okabe-l-variable);--syntax-operator:var(--okabe-l-operator);--syntax-punctuation:var(--okabe-l-punctuation)}[data-theme=okabe][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--okabe-d-bg);--text:var(--okabe-d-text);--border:var(--okabe-d-border);--muted:var(--okabe-d-muted);--status-running:var(--okabe-d-running);--status-attention:var(--okabe-d-attention);--status-idle:var(--okabe-d-idle);--status-error:var(--okabe-d-error);--syntax-comment:var(--okabe-d-comment);--syntax-keyword:var(--okabe-d-keyword);--syntax-string:var(--okabe-d-string);--syntax-number:var(--okabe-d-number);--syntax-function:var(--okabe-d-function);--syntax-type:var(--okabe-d-type);--syntax-variable:var(--okabe-d-variable);--syntax-operator:var(--okabe-d-operator);--syntax-punctuation:var(--okabe-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=okabe]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--okabe-d-bg);--text:var(--okabe-d-text);--border:var(--okabe-d-border);--muted:var(--okabe-d-muted);--status-running:var(--okabe-d-running);--status-attention:var(--okabe-d-attention);--status-idle:var(--okabe-d-idle);--status-error:var(--okabe-d-error);--syntax-comment:var(--okabe-d-comment);--syntax-keyword:var(--okabe-d-keyword);--syntax-string:var(--okabe-d-string);--syntax-number:var(--okabe-d-number);--syntax-function:var(--okabe-d-function);--syntax-type:var(--okabe-d-type);--syntax-variable:var(--okabe-d-variable);--syntax-operator:var(--okabe-d-operator);--syntax-punctuation:var(--okabe-d-punctuation)}}[data-theme=tol]{--tol-d-bg:#1b1d21;--tol-d-text:#e9eaec;--tol-d-border:#363a43;--tol-d-muted:#9a9ea6;--tol-d-running:#3fc0a8;--tol-d-attention:#d9c94a;--tol-d-idle:#9a9ea6;--tol-d-error:#f0687a;--tol-d-comment:#8a929c;--tol-d-keyword:#6ce;--tol-d-string:#4fc08a;--tol-d-number:#c9d;--tol-d-function:#eb5;--tol-d-type:#7fd0f0;--tol-d-variable:#d6d9de;--tol-d-operator:#cbcfd5;--tol-d-punctuation:#cbcfd5;--tol-l-bg:#f4f4f6;--tol-l-text:#1a1c22;--tol-l-border:#dadae0;--tol-l-muted:#565a62;--tol-l-running:#007a68;--tol-l-attention:#8a6a00;--tol-l-idle:#565a62;--tol-l-error:#c23346;--tol-l-comment:#565a62;--tol-l-keyword:#1a5a8c;--tol-l-string:#0a6a52;--tol-l-number:#8a3a77;--tol-l-function:#8a5a12;--tol-l-type:#0f6a86;--tol-l-variable:#2a2e83;--tol-l-operator:#1a1c22;--tol-l-punctuation:#1a1c22;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--tol-l-bg);--text:var(--tol-l-text);--border:var(--tol-l-border);--muted:var(--tol-l-muted);--status-running:var(--tol-l-running);--status-attention:var(--tol-l-attention);--status-idle:var(--tol-l-idle);--status-error:var(--tol-l-error);--syntax-comment:var(--tol-l-comment);--syntax-keyword:var(--tol-l-keyword);--syntax-string:var(--tol-l-string);--syntax-number:var(--tol-l-number);--syntax-function:var(--tol-l-function);--syntax-type:var(--tol-l-type);--syntax-variable:var(--tol-l-variable);--syntax-operator:var(--tol-l-operator);--syntax-punctuation:var(--tol-l-punctuation)}[data-theme=tol][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--tol-d-bg);--text:var(--tol-d-text);--border:var(--tol-d-border);--muted:var(--tol-d-muted);--status-running:var(--tol-d-running);--status-attention:var(--tol-d-attention);--status-idle:var(--tol-d-idle);--status-error:var(--tol-d-error);--syntax-comment:var(--tol-d-comment);--syntax-keyword:var(--tol-d-keyword);--syntax-string:var(--tol-d-string);--syntax-number:var(--tol-d-number);--syntax-function:var(--tol-d-function);--syntax-type:var(--tol-d-type);--syntax-variable:var(--tol-d-variable);--syntax-operator:var(--tol-d-operator);--syntax-punctuation:var(--tol-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=tol]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--tol-d-bg);--text:var(--tol-d-text);--border:var(--tol-d-border);--muted:var(--tol-d-muted);--status-running:var(--tol-d-running);--status-attention:var(--tol-d-attention);--status-idle:var(--tol-d-idle);--status-error:var(--tol-d-error);--syntax-comment:var(--tol-d-comment);--syntax-keyword:var(--tol-d-keyword);--syntax-string:var(--tol-d-string);--syntax-number:var(--tol-d-number);--syntax-function:var(--tol-d-function);--syntax-type:var(--tol-d-type);--syntax-variable:var(--tol-d-variable);--syntax-operator:var(--tol-d-operator);--syntax-punctuation:var(--tol-d-punctuation)}}
@@ -59,21 +59,21 @@ ${e}</tr>
59
59
  `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
60
60
  `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Va(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=Ha(e);if(i===null)return r;e=i;let a=`<a href="`+e+`"`;return t&&(a+=` title="`+Va(t)+`"`),a+=`>`+r+`</a>`,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=Ha(e);if(i===null)return Va(n);e=i;let a=`<img src="${e}" alt="${n}"`;return t&&(a+=` title="${Va(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:Va(e.text)}},Za=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}},Qa=class e{options;renderer;textRenderer;constructor(e){this.options=e||Ni,this.options.renderer=this.options.renderer||new Xa,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Za}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e,t=!0){let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=i,t=this.options.extensions.renderers[e.type].call({parser:this},e);if(t!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`html`,`paragraph`,`text`].includes(e.type)){n+=t||``;continue}}let a=i;switch(a.type){case`space`:n+=this.renderer.space(a);continue;case`hr`:n+=this.renderer.hr(a);continue;case`heading`:n+=this.renderer.heading(a);continue;case`code`:n+=this.renderer.code(a);continue;case`table`:n+=this.renderer.table(a);continue;case`blockquote`:n+=this.renderer.blockquote(a);continue;case`list`:n+=this.renderer.list(a);continue;case`html`:n+=this.renderer.html(a);continue;case`paragraph`:n+=this.renderer.paragraph(a);continue;case`text`:{let i=a,o=this.renderer.text(i);for(;r+1<e.length&&e[r+1].type===`text`;)i=e[++r],o+=`
61
61
  `+this.renderer.text(i);t?n+=this.renderer.paragraph({type:`paragraph`,raw:o,text:o,tokens:[{type:`text`,raw:o,text:o,escaped:!0}]}):n+=o;continue}default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}parseInline(e,t=this.renderer){let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},$a=class{options;block;constructor(e){this.options=e||Ni}static passThroughHooks=new Set([`preprocess`,`postprocess`,`processAllTokens`]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}provideLexer(){return this.block?Ya.lex:Ya.lexInline}provideParser(){return this.block?Qa.parse:Qa.parseInline}},eo=new class{defaults=Mi();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Qa;Renderer=Xa;TextRenderer=Za;Lexer=Ya;Tokenizer=Ja;Hooks=$a;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case`list`:{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new Xa(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new Ja(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new $a;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];$a.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async)return Promise.resolve(i.call(t,e)).then(e=>a.call(t,e));let n=i.call(t,e);return a.call(t,n)}:t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return Ya.lex(e,t??this.defaults)}parser(e,t){return Qa.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(t==null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));i.hooks&&(i.hooks.options=i,i.hooks.block=e);let o=i.hooks?i.hooks.provideLexer():e?Ya.lex:Ya.lexInline,s=i.hooks?i.hooks.provideParser():e?Qa.parse:Qa.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(t):t).then(e=>o(e,i)).then(e=>i.hooks?i.hooks.processAllTokens(e):e).then(e=>i.walkTokens?Promise.all(this.walkTokens(e,i.walkTokens)).then(()=>e):e).then(e=>s(e,i)).then(e=>i.hooks?i.hooks.postprocess(e):e).catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let e=o(t,i);i.hooks&&(e=i.hooks.processAllTokens(e)),i.walkTokens&&this.walkTokens(e,i.walkTokens);let n=s(e,i);return i.hooks&&(n=i.hooks.postprocess(n)),n}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
62
- Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+Va(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function to(e,t){return eo.parse(e,t)}to.options=to.setOptions=function(e){return eo.setOptions(e),to.defaults=eo.defaults,Pi(to.defaults),to},to.getDefaults=Mi,to.defaults=Ni,to.use=function(...e){return eo.use(...e),to.defaults=eo.defaults,Pi(to.defaults),to},to.walkTokens=function(e,t){return eo.walkTokens(e,t)},to.parseInline=eo.parseInline,to.Parser=Qa,to.parser=Qa.parse,to.Renderer=Xa,to.TextRenderer=Za,to.Lexer=Ya,to.lexer=Ya.lex,to.Tokenizer=Ja,to.Hooks=$a,to.parse=to,to.options,to.setOptions,to.use,to.walkTokens,to.parseInline,Qa.parse,Ya.lex;function no(e){let t=e.requestAnimationFrame??requestAnimationFrame,n=e.cancelAnimationFrame??cancelAnimationFrame,r,i;function a(){r!==void 0&&n(r),i!==void 0&&n(i),r=void 0,i=void 0}function o(){r!==void 0||i!==void 0||(r=t(()=>{r=void 0,i=t(()=>{i=void 0;let t=e.element();t&&e.shouldScroll()&&(t.scrollTop=t.scrollHeight)})}))}return{request:o,cancel:a}}function ro(e,t,n){let r=e instanceof Node?e:null;for(;r&&r!==t;){if(r instanceof HTMLElement&&r.scrollHeight>r.clientHeight+1){let e=n===`up`?r.scrollTop>0:r.scrollTop+r.clientHeight<r.scrollHeight-1,t=typeof getComputedStyle==`function`?getComputedStyle(r).overflowY:``;if(e&&(t===`auto`||t===`scroll`))return!0}r=r.parentNode}return!1}function io(e){let t=e.threshold??40,n=e.now??(()=>Date.now()),r=e.intentWindowMs??400,i=e.ResizeObserverImpl??globalThis.ResizeObserver,a=!0,o=!1,s,c=!1,l=!1,u=!1,d=-1/0,f=-1/0,p=0,m=0,h,g,_=!1,v=no({element:e.scroller,shouldScroll:()=>{if(!(a&&!o))return!1;let t=e.scroller();return t&&(p=Math.max(0,t.scrollHeight-t.clientHeight),m=p),!0},requestAnimationFrame:e.requestAnimationFrame,cancelAnimationFrame:e.cancelAnimationFrame});function y(){if(S(),n()-d>r){let t=e.scroller()?.scrollTop??p;m=Math.max(p,t)}d=n()}function b(){x(),m=p,f=n()}function x(){d=-1/0}function S(){f=-1/0}function C(e){x(),m=e}function w(){return o&&c||u||n()-d<=r}function T(){return o&&l||u||n()-f<=r}function E(){a&&!o&&v.request()}function D(){let n=e.scroller();if(!n)return;let r=n.scrollTop,i=r>p;r+n.clientHeight>=n.scrollHeight-t&&(a||i&&T())?(a=!0,(!w()||i)&&C(r)):a&&r<m-1&&w()?a=!1:i?C(r):w()||(m=r),p=r}function O(){x(),S(),m=p}let k=new Set([`ArrowUp`,`PageUp`,`Home`]);function A(t,n){let r=e.scroller();if(t<0){if(r&&n&&ro(n,r,`up`))return;y()}else if(t>0){if(r&&n&&ro(n,r,`down`))return;b()}}function j(t,n=!1,r){let i=e.scroller();if(k.has(t)||n&&t===` `){if(i&&r&&ro(r,i,`up`))return;y()}else if(t===`ArrowDown`||t===`PageDown`||t===`End`||!n&&t===` `){if(i&&r&&ro(r,i,`down`))return;b()}}function M(e){e&&(u=!0)}function N(){u=!1}function P(e){o=!0,s=Number.isFinite(e)?e:void 0,c=!1,l=!1}function F(t,n){if(!(!o||!Number.isFinite(t))){if(s!==void 0){let r=e.scroller();t>s+1?r&&n&&ro(n,r,`up`)?(c=!1,l=!1,x(),S()):(c=!0,l=!1,y()):t<s-1&&(r&&n&&ro(n,r,`down`)?(c=!1,l=!1,x(),S()):(c=!1,l=!0,b()))}s=t}}function I(){o=!1,s=void 0,c?y():l&&b(),c=!1,l=!1,a&&v.request()}function L(){I()}function R(){I()}function z(e){if(!i){_||(_=!0,console.warn(`[dashboard] ResizeObserver unavailable — stick-to-bottom async re-pin disabled; the transcript may lag behind live output until the next envelope arrives.`));return}let t=new i(()=>E());return t.observe(e),t}function B(e){e&&(h?.disconnect(),h=z(e))}function ee(e){e&&(g?.disconnect(),g=z(e))}function te(){h?.disconnect(),g?.disconnect(),h=void 0,g=void 0,v.cancel()}return{notifyContentChanged:E,handleScroll:D,handleScrollEnd:O,handleWheel:A,handleKeyDown:j,handlePointerDown:M,handlePointerUp:N,handleTouchStart:P,handleTouchMove:F,handleTouchEnd:L,handleTouchCancel:R,observeContent:B,observeViewport:ee,isFollowing:()=>a,dispose:te}}function ao(e){return e instanceof Element&&e.closest(`input, textarea, select, [contenteditable]`)!==null}function oo(e,t,n){let r=n.enabled??(()=>!0),i=[];function a(e,t,n){let a=(e=>{r()&&n(e)});e.addEventListener(t,a,{passive:!0}),i.push(()=>e.removeEventListener(t,a))}return a(t,`scroll`,()=>e.handleScroll()),a(t,`scrollend`,()=>e.handleScrollEnd()),a(t,`wheel`,t=>e.handleWheel(t.deltaY,t.target)),a(t,`touchstart`,t=>e.handleTouchStart(t.touches?.[0]?.clientY)),a(t,`touchmove`,t=>{let n=t.touches?.[0]?.clientY;n!==void 0&&e.handleTouchMove(n,t.target)}),a(t,`touchend`,()=>e.handleTouchEnd()),a(t,`touchcancel`,()=>e.handleTouchCancel()),a(t,`pointerdown`,n=>{e.handlePointerDown(n.pointerType===`mouse`&&n.offsetX>=t.clientWidth)}),a(window,`pointerup`,()=>e.handlePointerUp()),a(window,`pointercancel`,()=>e.handlePointerUp()),n.keyboard===`window`?a(window,`keydown`,t=>{ao(t.target)||e.handleKeyDown(t.key,t.shiftKey,t.target)}):a(t,`keydown`,t=>{ao(t.target)||e.handleKeyDown(t.key,t.shiftKey,t.target)}),()=>{for(let e of i)e()}}var so=`dreb.dashboard.expandThinking`,co=`dreb.dashboard.toolAutoExpand`,lo=[`read`,`edit`,`write`,`suggest_next`,`bash`],uo=!0,fo=new Set(lo),po=Object.fromEntries(lo.map(e=>[e,!0]));function mo(e,t){if(typeof window>`u`)return t;try{let n=window.localStorage.getItem(e);return n===null?t:n===`true`}catch{return t}}function ho(e,t){if(!(typeof window>`u`))try{window.localStorage.setItem(e,t?`true`:`false`)}catch{}}function go(){if(typeof window>`u`)return{...po};try{let e=window.localStorage.getItem(co);if(e===null)return{...po};let t=JSON.parse(e),n={...po};for(let e of lo)typeof t[e]==`boolean`&&(n[e]=t[e]);return n}catch{return{...po}}}function _o(e){if(!(typeof window>`u`))try{window.localStorage.setItem(co,JSON.stringify(e))}catch{}}var[vo,yo]=k(mo(so,uo)),[bo,xo]=k(go()),So=vo;function Co(e){yo(e),ho(so,e)}function wo(e,t){let n={...bo(),[e]:t};xo(n),_o(n)}function To(e){return bo()[e]??fo.has(e)}var Eo=J(`<div>`),Do=J(`<pre tabindex=0>`),Oo=J(`<code class=hljs>`),ko=J(`<pre>`),Ao=J(`<span>`),jo=J(`<div class=tool-output-truncated>output truncated — showing last <!> of <!>. <button type=button class=entry-action>show full (<!>)`),Mo=J(`<div class=tool-command><code>`),No=J(`<details class=tool><summary><span class=tool-name></span><span class=tool-arg></span><span>`),Po=J(`<div class=tool-input><span class=tool-input-label>`),Fo=J(`<div class=tool-result><p class=suggested-command>→ <code>`),Io=J(`<div class=tool-result>`),Lo=J(`<button type=button class=entry-action>`),Ro=J(`<span>·`),zo=J(`<span>streaming`),Bo=J(`<div class="entry assistant"><div class=entry-head><span>`),Vo=J(`<details class=thinking><summary>thinking`),Ho=J(`<div class=entry-body>`),Uo=J(`<div class="entry user"><div class=entry-head><span></span></div><div class=entry-body>`),Wo=J(`<div class="entry summary-card"><details><summary></summary><div class=entry-body style=margin-top:8px>`),Go=J(`<div class="entry custom-card"><div class=entry-head><span></span></div><div class=entry-body>`),Ko=J(`<span class=skill-badge>skill: `),qo=J(`<span class=agent-result-header>`),Jo=J(`<div class="entry agent-result-card"><details><summary><span>background agent result`),Yo=J(`<div class=transcript-window-control><button type=button class="btn btn-small">show earlier <!> (<!> hidden)`),Xo=J(`<div class=assistant-turn data-testid=assistant-turn>`),Zo=150,Qo=200*1024;function $o(e){let t=to.parse(e,{async:!1});return qr.sanitize(t)}function es(e,t,n=Zo){let[r,i]=k(e()),a,o=e(),s=()=>{a&&clearTimeout(a),a=void 0};return M(()=>{let r=e(),c=t();if(o=r,!c){s(),i(r);return}a||=setTimeout(()=>{a=void 0,i(o)},n)}),z(s),r}function ts(e){let t=e/1024;return t<1024?`${Math.round(t)} KB`:`${(t/1024).toFixed(1)} MB`}function ns(e){let t=es(()=>e.text,()=>e.throttle===!0),n=N(()=>$o(t()));return(()=>{var t=Eo();return j(r=>{var i=e.class??`markdown-body`,a=e.classList,o=n();return i!==r.e&&je(t,r.e=i),r.t=Ne(t,a,r.t),o!==r.a&&(t.innerHTML=r.a=o),r},{e:void 0,t:void 0,a:void 0}),t})()}function rs(e){if(typeof e!=`string`||!e)return;let t=e.split(/[\\/]/).pop()?.toLowerCase()??``,n=t.includes(`.`)?t.split(`.`).pop():t;return n?{ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,mjs:`javascript`,cjs:`javascript`,py:`python`,rb:`ruby`,rs:`rust`,go:`go`,java:`java`,c:`c`,h:`c`,cpp:`cpp`,cc:`cpp`,cxx:`cpp`,hpp:`cpp`,cs:`csharp`,php:`php`,sh:`bash`,bash:`bash`,zsh:`bash`,sql:`sql`,html:`html`,css:`css`,scss:`scss`,json:`json`,yaml:`yaml`,yml:`yaml`,xml:`xml`,md:`markdown`,dockerfile:`dockerfile`}[n]:void 0}function is(e){return e?.path??e?.file_path}function as(e,t){if(!(!t||!ji.getLanguage(t)))return qr.sanitize(ji.highlight(e,{language:t,ignoreIllegals:!0}).value)}function os(e){let t,n=es(()=>e.text,()=>e.throttle===!0),r=N(()=>as(n(),e.language)),i=io({scroller:()=>t,threshold:24});return M(()=>{n(),e.language,e.autoScroll&&i.notifyContentChanged()}),R(()=>{t&&z(oo(i,t,{enabled:()=>e.autoScroll===!0,keyboard:`element`}))}),z(()=>i.dispose()),(()=>{var e=Do(),i=t;return typeof i==`function`?Pe(i,e):t=e,X(e,W(K,{get when(){return r()},get fallback(){return n()},children:e=>(()=>{var t=Oo();return j(()=>t.innerHTML=e()),t})()})),e})()}function ss(e){let t=e.args;if(!t||typeof t!=`object`)return``;switch(e.toolName){case`read`:{let n=cs(e);return`${String(t.path??``)}${n?` · ${n} lines`:``}`}case`write`:return String(t.path??``);case`edit`:return String(t.path??``);case`bash`:case`bash (user)`:return String(t.command??``);case`grep`:case`search`:return String(t.pattern??t.query??``);case`find`:return String(t.pattern??``);case`ls`:return String(t.path??`.`);case`web_fetch`:return String(t.url??``);case`web_search`:return String(t.query??``);case`subagent`:return typeof t.task==`string`?t.task.slice(0,120):Array.isArray(t.tasks)?`${t.tasks.length} parallel tasks`:Array.isArray(t.chain)?`${t.chain.length}-step chain`:``;case`skill`:return String(t.skill??``);default:{let e=Object.values(t)[0];return typeof e==`string`?e.slice(0,120):``}}}function cs(e){if(!(e.toolName!==`read`||!e.resultText))return e.resultText.split(`
63
- `).length}function ls(e){if(e.kind===`user`)return e.text;if(e.kind===`assistant`)return e.blocks.filter(e=>e.kind===`text`).map(e=>e.text).join(`
64
- `)}function us(e){return e.match(/^\/skill:([\w-]+)/)?.[1]}function ds(e){if(e.status===`running`){let t=Math.floor((Date.now()-e.startedAt)/1e3);return{text:`● running${t>2?` ${t}s`:``}`,cls:`running`}}return e.status===`error`?{text:`✕ error`,cls:`error`}:{text:`done`,cls:``}}var fs=new Set([`subagent`,`skill`,`web_fetch`]);function ps(e){let t=e.args;if(!t||typeof t!=`object`)return[];switch(e.toolName){case`bash`:case`bash (user)`:return[];case`read`:case`ls`:case`edit`:return[];case`suggest_next`:return[];case`write`:return e.resultText&&typeof t.content==`string`?[{label:`content`,text:String(t.content),language:rs(is(t))}]:[];case`subagent`:{let e=[];return typeof t.task==`string`&&e.push({label:`task`,text:t.task,markdown:!0}),Array.isArray(t.tasks)&&t.tasks.forEach((t,n)=>{typeof t?.task==`string`&&e.push({label:`task ${n+1}${t.agent?` (${t.agent})`:``}`,text:t.task,markdown:!0})}),Array.isArray(t.chain)&&t.chain.forEach((t,n)=>{typeof t?.task==`string`&&e.push({label:`step ${n+1}${t.agent?` (${t.agent})`:``}`,text:t.task,markdown:!0})}),e}default:{let e=[];for(let[n,r]of Object.entries(t)){let t=typeof r==`string`?r:JSON.stringify(r,null,2);t&&t.length>80&&e.push({label:n,text:t})}return e}}}function ms(e){return(()=>{var t=ko();return X(t,W(G,{get each(){return e.text.split(`
62
+ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+Va(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function to(e,t){return eo.parse(e,t)}to.options=to.setOptions=function(e){return eo.setOptions(e),to.defaults=eo.defaults,Pi(to.defaults),to},to.getDefaults=Mi,to.defaults=Ni,to.use=function(...e){return eo.use(...e),to.defaults=eo.defaults,Pi(to.defaults),to},to.walkTokens=function(e,t){return eo.walkTokens(e,t)},to.parseInline=eo.parseInline,to.Parser=Qa,to.parser=Qa.parse,to.Renderer=Xa,to.TextRenderer=Za,to.Lexer=Ya,to.lexer=Ya.lex,to.Tokenizer=Ja,to.Hooks=$a,to.parse=to,to.options,to.setOptions,to.use,to.walkTokens,to.parseInline,Qa.parse,Ya.lex;function no(e){let t=e.requestAnimationFrame??requestAnimationFrame,n=e.cancelAnimationFrame??cancelAnimationFrame,r,i;function a(){r!==void 0&&n(r),i!==void 0&&n(i),r=void 0,i=void 0}function o(){r!==void 0||i!==void 0||(r=t(()=>{r=void 0,i=t(()=>{i=void 0;let t=e.element();t&&e.shouldScroll()&&(t.scrollTop=t.scrollHeight)})}))}return{request:o,cancel:a}}function ro(e,t,n){let r=e instanceof Node?e:null;for(;r&&r!==t;){if(r instanceof HTMLElement&&r.scrollHeight>r.clientHeight+1){let e=n===`up`?r.scrollTop>0:r.scrollTop+r.clientHeight<r.scrollHeight-1,t=typeof getComputedStyle==`function`?getComputedStyle(r).overflowY:``;if(e&&(t===`auto`||t===`scroll`))return!0}r=r.parentNode}return!1}function io(e){let t=e.threshold??40,n=e.now??(()=>Date.now()),r=e.intentWindowMs??400,i=e.ResizeObserverImpl??globalThis.ResizeObserver,a=!0,o=!1,s,c=!1,l=!1,u=!1,d=-1/0,f=-1/0,p=0,m=0,h,g,_=!1,v=no({element:e.scroller,shouldScroll:()=>{if(!(a&&!o))return!1;let t=e.scroller();return t&&(p=Math.max(0,t.scrollHeight-t.clientHeight),m=p),!0},requestAnimationFrame:e.requestAnimationFrame,cancelAnimationFrame:e.cancelAnimationFrame});function y(){if(S(),n()-d>r){let t=e.scroller()?.scrollTop??p;m=Math.max(p,t)}d=n()}function b(){x(),m=p,f=n()}function x(){d=-1/0}function S(){f=-1/0}function C(e){x(),m=e}function w(){return o&&c||u||n()-d<=r}function T(){return o&&l||u||n()-f<=r}function E(){a&&!o&&v.request()}function D(){let n=e.scroller();if(!n)return;let r=n.scrollTop,i=r>p;r+n.clientHeight>=n.scrollHeight-t&&(a||i&&T())?(a=!0,(!w()||i)&&C(r)):a&&r<m-1&&w()?a=!1:i?C(r):w()||(m=r),p=r}function O(){x(),S(),m=p}let k=new Set([`ArrowUp`,`PageUp`,`Home`]);function A(t,n){let r=e.scroller();if(t<0){if(r&&n&&ro(n,r,`up`))return;y()}else if(t>0){if(r&&n&&ro(n,r,`down`))return;b()}}function j(t,n=!1,r){let i=e.scroller();if(k.has(t)||n&&t===` `){if(i&&r&&ro(r,i,`up`))return;y()}else if(t===`ArrowDown`||t===`PageDown`||t===`End`||!n&&t===` `){if(i&&r&&ro(r,i,`down`))return;b()}}function M(e){e&&(u=!0)}function N(){u=!1}function P(e){o=!0,s=Number.isFinite(e)?e:void 0,c=!1,l=!1}function F(t,n){if(!(!o||!Number.isFinite(t))){if(s!==void 0){let r=e.scroller();t>s+1?r&&n&&ro(n,r,`up`)?(c=!1,l=!1,x(),S()):(c=!0,l=!1,y()):t<s-1&&(r&&n&&ro(n,r,`down`)?(c=!1,l=!1,x(),S()):(c=!1,l=!0,b()))}s=t}}function I(){o=!1,s=void 0,c?y():l&&b(),c=!1,l=!1,a&&v.request()}function L(){I()}function R(){I()}function z(e){if(!i){_||(_=!0,console.warn(`[dashboard] ResizeObserver unavailable — stick-to-bottom async re-pin disabled; the transcript may lag behind live output until the next envelope arrives.`));return}let t=new i(()=>E());return t.observe(e),t}function B(e){e&&(h?.disconnect(),h=z(e))}function ee(e){e&&(g?.disconnect(),g=z(e))}function te(){h?.disconnect(),g?.disconnect(),h=void 0,g=void 0,v.cancel()}return{notifyContentChanged:E,handleScroll:D,handleScrollEnd:O,handleWheel:A,handleKeyDown:j,handlePointerDown:M,handlePointerUp:N,handleTouchStart:P,handleTouchMove:F,handleTouchEnd:L,handleTouchCancel:R,observeContent:B,observeViewport:ee,isFollowing:()=>a,dispose:te}}function ao(e){return e instanceof Element&&e.closest(`input, textarea, select, [contenteditable]`)!==null}function oo(e,t,n){let r=n.enabled??(()=>!0),i=[];function a(e,t,n){let a=(e=>{r()&&n(e)});e.addEventListener(t,a,{passive:!0}),i.push(()=>e.removeEventListener(t,a))}return a(t,`scroll`,()=>e.handleScroll()),a(t,`scrollend`,()=>e.handleScrollEnd()),a(t,`wheel`,t=>e.handleWheel(t.deltaY,t.target)),a(t,`touchstart`,t=>e.handleTouchStart(t.touches?.[0]?.clientY)),a(t,`touchmove`,t=>{let n=t.touches?.[0]?.clientY;n!==void 0&&e.handleTouchMove(n,t.target)}),a(t,`touchend`,()=>e.handleTouchEnd()),a(t,`touchcancel`,()=>e.handleTouchCancel()),a(t,`pointerdown`,n=>{e.handlePointerDown(n.pointerType===`mouse`&&n.offsetX>=t.clientWidth)}),a(window,`pointerup`,()=>e.handlePointerUp()),a(window,`pointercancel`,()=>e.handlePointerUp()),n.keyboard===`window`?a(window,`keydown`,t=>{ao(t.target)||e.handleKeyDown(t.key,t.shiftKey,t.target)}):a(t,`keydown`,t=>{ao(t.target)||e.handleKeyDown(t.key,t.shiftKey,t.target)}),()=>{for(let e of i)e()}}var so=`dreb.dashboard.expandThinking`,co=`dreb.dashboard.toolAutoExpand`,lo=[`read`,`edit`,`write`,`suggest_next`,`bash`],uo=!0,fo=new Set(lo),po=Object.fromEntries(lo.map(e=>[e,!0]));function mo(e,t){if(typeof window>`u`)return t;try{let n=window.localStorage.getItem(e);return n===null?t:n===`true`}catch{return t}}function ho(e,t){if(!(typeof window>`u`))try{window.localStorage.setItem(e,t?`true`:`false`)}catch{}}function go(){if(typeof window>`u`)return{...po};try{let e=window.localStorage.getItem(co);if(e===null)return{...po};let t=JSON.parse(e),n={...po};for(let e of lo)typeof t[e]==`boolean`&&(n[e]=t[e]);return n}catch{return{...po}}}function _o(e){if(!(typeof window>`u`))try{window.localStorage.setItem(co,JSON.stringify(e))}catch{}}var[vo,yo]=k(mo(so,uo)),[bo,xo]=k(go()),So=vo;function Co(e){yo(e),ho(so,e)}function wo(e,t){let n={...bo(),[e]:t};xo(n),_o(n)}function To(e){return bo()[e]??fo.has(e)}var Eo=J(`<div>`),Do=J(`<pre tabindex=0>`),Oo=J(`<code class=hljs>`),ko=J(`<pre>`),Ao=J(`<span>`),jo=J(`<div class=tool-images>`),Mo=J(`<img class=tool-image alt="Tool result">`),No=J(`<div class=tool-output-truncated>output truncated — showing last <!> of <!>. <button type=button class=entry-action>show full (<!>)`),Po=J(`<div class=tool-command><code>`),Fo=J(`<div class=tool-result>`),Io=J(`<details class=tool><summary><span class=tool-name></span><span class=tool-arg></span><span>`),Lo=J(`<div class=tool-input><span class=tool-input-label>`),Ro=J(`<div class=tool-result><p class=suggested-command>→ <code>`),zo=J(`<button type=button class=entry-action>`),Bo=J(`<span>·`),Vo=J(`<span>streaming`),Ho=J(`<div class="entry assistant"><div class=entry-head><span>`),Uo=J(`<details class=thinking><summary>thinking`),Wo=J(`<div class=entry-body>`),Go=J(`<div class="entry user"><div class=entry-head><span></span></div><div class=entry-body>`),Ko=J(`<div class="entry summary-card"><details><summary></summary><div class=entry-body style=margin-top:8px>`),qo=J(`<div class="entry custom-card"><div class=entry-head><span></span></div><div class=entry-body>`),Jo=J(`<span class=skill-badge>skill: `),Yo=J(`<span class=agent-result-header>`),Xo=J(`<div class="entry agent-result-card"><details><summary><span>background agent result`),Zo=J(`<div class=transcript-window-control><button type=button class="btn btn-small">show earlier <!> (<!> hidden)`),Qo=J(`<div class=assistant-turn data-testid=assistant-turn>`),$o=150,es=200*1024;function ts(e){let t=to.parse(e,{async:!1});return qr.sanitize(t)}function ns(e,t,n=$o){let[r,i]=k(e()),a,o=e(),s=()=>{a&&clearTimeout(a),a=void 0};return M(()=>{let r=e(),c=t();if(o=r,!c){s(),i(r);return}a||=setTimeout(()=>{a=void 0,i(o)},n)}),z(s),r}function rs(e){let t=e/1024;return t<1024?`${Math.round(t)} KB`:`${(t/1024).toFixed(1)} MB`}function is(e){let t=ns(()=>e.text,()=>e.throttle===!0),n=N(()=>ts(t()));return(()=>{var t=Eo();return j(r=>{var i=e.class??`markdown-body`,a=e.classList,o=n();return i!==r.e&&je(t,r.e=i),r.t=Ne(t,a,r.t),o!==r.a&&(t.innerHTML=r.a=o),r},{e:void 0,t:void 0,a:void 0}),t})()}function as(e){if(typeof e!=`string`||!e)return;let t=e.split(/[\\/]/).pop()?.toLowerCase()??``,n=t.includes(`.`)?t.split(`.`).pop():t;return n?{ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,mjs:`javascript`,cjs:`javascript`,py:`python`,rb:`ruby`,rs:`rust`,go:`go`,java:`java`,c:`c`,h:`c`,cpp:`cpp`,cc:`cpp`,cxx:`cpp`,hpp:`cpp`,cs:`csharp`,php:`php`,sh:`bash`,bash:`bash`,zsh:`bash`,sql:`sql`,html:`html`,css:`css`,scss:`scss`,json:`json`,yaml:`yaml`,yml:`yaml`,xml:`xml`,md:`markdown`,dockerfile:`dockerfile`}[n]:void 0}function os(e){return e?.path??e?.file_path}function ss(e,t){if(!(!t||!ji.getLanguage(t)))return qr.sanitize(ji.highlight(e,{language:t,ignoreIllegals:!0}).value)}function cs(e){let t,n=ns(()=>e.text,()=>e.throttle===!0),r=N(()=>ss(n(),e.language)),i=io({scroller:()=>t,threshold:24});return M(()=>{n(),e.language,e.autoScroll&&i.notifyContentChanged()}),R(()=>{t&&z(oo(i,t,{enabled:()=>e.autoScroll===!0,keyboard:`element`}))}),z(()=>i.dispose()),(()=>{var e=Do(),i=t;return typeof i==`function`?Pe(i,e):t=e,X(e,W(K,{get when(){return r()},get fallback(){return n()},children:e=>(()=>{var t=Oo();return j(()=>t.innerHTML=e()),t})()})),e})()}function ls(e){let t=e.args;if(!t||typeof t!=`object`)return``;switch(e.toolName){case`read`:{let n=us(e);return`${String(t.path??``)}${n?` · ${n} lines`:``}`}case`write`:return String(t.path??``);case`edit`:return String(t.path??``);case`bash`:case`bash (user)`:return String(t.command??``);case`grep`:case`search`:return String(t.pattern??t.query??``);case`find`:return String(t.pattern??``);case`ls`:return String(t.path??`.`);case`web_fetch`:return String(t.url??``);case`web_search`:return String(t.query??``);case`subagent`:return typeof t.task==`string`?t.task.slice(0,120):Array.isArray(t.tasks)?`${t.tasks.length} parallel tasks`:Array.isArray(t.chain)?`${t.chain.length}-step chain`:``;case`skill`:return String(t.skill??``);default:{let e=Object.values(t)[0];return typeof e==`string`?e.slice(0,120):``}}}function us(e){if(!(e.toolName!==`read`||!e.resultText))return e.resultText.split(`
63
+ `).length}function ds(e){if(e.kind===`user`)return e.text;if(e.kind===`assistant`)return e.blocks.filter(e=>e.kind===`text`).map(e=>e.text).join(`
64
+ `)}function fs(e){return e.match(/^\/skill:([\w-]+)/)?.[1]}function ps(e){if(e.status===`running`){let t=Math.floor((Date.now()-e.startedAt)/1e3);return{text:`● running${t>2?` ${t}s`:``}`,cls:`running`}}return e.status===`error`?{text:`✕ error`,cls:`error`}:{text:`done`,cls:``}}var ms=new Set([`subagent`,`skill`,`web_fetch`]);function hs(e){let t=e.args;if(!t||typeof t!=`object`)return[];switch(e.toolName){case`bash`:case`bash (user)`:return[];case`read`:case`ls`:case`edit`:return[];case`suggest_next`:return[];case`write`:return e.resultText&&typeof t.content==`string`?[{label:`content`,text:String(t.content),language:as(os(t))}]:[];case`subagent`:{let e=[];return typeof t.task==`string`&&e.push({label:`task`,text:t.task,markdown:!0}),Array.isArray(t.tasks)&&t.tasks.forEach((t,n)=>{typeof t?.task==`string`&&e.push({label:`task ${n+1}${t.agent?` (${t.agent})`:``}`,text:t.task,markdown:!0})}),Array.isArray(t.chain)&&t.chain.forEach((t,n)=>{typeof t?.task==`string`&&e.push({label:`step ${n+1}${t.agent?` (${t.agent})`:``}`,text:t.task,markdown:!0})}),e}default:{let e=[];for(let[n,r]of Object.entries(t)){let t=typeof r==`string`?r:JSON.stringify(r,null,2);t&&t.length>80&&e.push({label:n,text:t})}return e}}}function gs(e){return(()=>{var t=ko();return X(t,W(G,{get each(){return e.text.split(`
65
65
  `)},children:e=>[(()=>{var t=Ao();return X(t,e),j(n=>{var r=!!e.startsWith(`+`),i=!!e.startsWith(`-`);return r!==n.e&&t.classList.toggle(`diff-add`,n.e=r),i!==n.t&&t.classList.toggle(`diff-del`,n.t=i),n},{e:void 0,t:void 0}),t})(),`
66
- `]})),t})()}function hs(e){if(e.toolName!==`edit`)return;let t=e.details?.diff;return typeof t==`string`?t:void 0}function gs(e){let[t,n]=k(!1),r=()=>e.text.length>Qo;M(()=>{r()||n(!1)});let i=()=>r()&&!t()?e.text.slice(-204800):e.text;return[W(K,{get when(){return q(()=>!!r())()&&!t()},get children(){var t=jo(),r=t.firstChild.nextSibling,i=r.nextSibling.nextSibling,a=i.nextSibling.nextSibling,o=a.firstChild.nextSibling;return o.nextSibling,X(t,()=>ts(Qo),r),X(t,()=>ts(e.text.length),i),a.$$click=()=>n(!0),X(a,()=>ts(e.text.length),o),t}}),W(K,{get when(){return e.markdown},get fallback(){return W(os,{get text(){return i()},get language(){return e.language},get autoScroll(){return e.autoScroll},get throttle(){return e.throttle}})},get children(){return W(ns,{get text(){return i()},get throttle(){return e.throttle}})}})]}function _s(e){let t=()=>ds(e.entry),n=()=>e.entry.args,r=()=>{if(e.entry.toolName===`suggest_next`)return e.entry.details},i=()=>hs(e.entry),a=()=>e.entry.toolName===`write`&&!e.entry.resultText&&typeof n()?.content==`string`?String(n()?.content):e.entry.resultText,o=()=>{if(e.entry.toolName===`read`||e.entry.toolName===`write`&&!e.entry.resultText)return rs(is(n()))},s=()=>fs.has(e.entry.toolName)&&e.entry.status!==`error`,c=()=>e.entry.toolName===`bash`||e.entry.toolName===`bash (user)`,l=()=>ps(e.entry),u=()=>To(e.entry.toolName),[d,f]=k(u()||e.entry.status===`running`),p=e.entry.status===`running`,m=!1,h=!1,g,_=e=>{d()!==e&&(h=!0,f(e),g&&clearTimeout(g),g=setTimeout(()=>{h=!1,g=void 0},0))};return M(()=>{let t=e.entry.status===`running`,n=u();t?(m=!1,_(!0)):p?(m=!1,_(n)):m||_(n),p=t}),z(()=>{g&&clearTimeout(g)}),(()=>{var u=No(),p=u.firstChild.firstChild,_=p.nextSibling,v=_.nextSibling;return u.addEventListener(`toggle`,t=>{let n=t.currentTarget.open;if(h){f(n);return}if(e.entry.status===`running`&&!n){h=!0,t.currentTarget.open=!0,f(!0),g&&clearTimeout(g),g=setTimeout(()=>{h=!1,g=void 0},0);return}m=!0,f(n)}),X(p,()=>e.entry.toolName),X(_,()=>ss(e.entry)),X(v,()=>t().text),X(u,W(K,{get when(){return d()},get children(){return[W(K,{get when(){return e.entry.toolName===`bash`||e.entry.toolName===`bash (user)`},get children(){var e=Mo(),t=e.firstChild;return X(t,()=>String(n()?.command??``)),e}}),W(G,{get each(){return l()},children:e=>(()=>{var t=Po(),n=t.firstChild;return X(n,()=>e.label),X(t,W(K,{get when(){return e.markdown},get fallback(){return W(os,{get text(){return e.text},get language(){return e.language}})},get children(){return W(ns,{get text(){return e.text}})}}),null),t})()}),W(Te,{get children(){return[W(Ee,{get when(){return r()},children:e=>(()=>{var t=Fo(),n=t.firstChild,r=n.firstChild.nextSibling;return X(t,W(K,{get when(){return e().summary},get children(){return W(ns,{get text(){return e().summary}})}}),n),X(r,()=>e().suggestion),t})()}),W(Ee,{get when(){return i()},children:e=>(()=>{var t=Io();return X(t,W(ms,{get text(){return e()}})),t})()}),W(Ee,{get when(){return a()},children:t=>(()=>{var n=Io();return X(n,W(gs,{get text(){return t()},get language(){return o()},get markdown(){return s()},get autoScroll(){return c()},get throttle(){return e.entry.status===`running`}})),n})()})]}})]}}),null),j(e=>{var n=d(),r=`tool-status ${t().cls}`;return n!==e.e&&(u.open=e.e=n),r!==e.t&&je(v,e.t=r),e},{e:void 0,t:void 0}),u})()}function vs(e){let[t,n]=k(`idle`);async function r(){if(e.text){try{await navigator.clipboard.writeText(e.text),n(`copied`)}catch{n(`failed`)}setTimeout(()=>n(`idle`),1200)}}return(()=>{var n=Lo();return n.$$click=r,X(n,(()=>{var e=q(()=>t()===`copied`);return()=>e()?`copied`:t()===`failed`?`copy failed`:`copy`})()),j(()=>n.disabled=!e.text),n})()}function ys(e){return(()=>{var t=Bo(),n=t.firstChild,r=n.firstChild;return X(r,()=>e.who),X(n,W(K,{get when(){return e.entry.model},get children(){return[Ro(),(()=>{var t=Ao();return X(t,()=>e.entry.model),t})()]}}),null),X(n,W(K,{get when(){return e.entry.streaming},get children(){return[Ro(),zo()]}}),null),X(n,W(vs,{get text(){return ls(e.entry)}}),null),X(t,W(G,{get each(){return e.entry.blocks},children:(t,n)=>W(K,{get when(){return t.kind===`thinking`},get fallback(){return(()=>{var r=Ho();return X(r,W(ns,{get text(){return t.text},get classList(){return{"streaming-cursor":e.entry.streaming&&n()===e.entry.blocks.length-1}},get throttle(){return e.entry.streaming}})),r})()},get children(){var n=Vo();return n.firstChild,X(n,W(ns,{get text(){return t.text},class:`thinking-body markdown-body`,get throttle(){return e.entry.streaming}}),null),j(()=>n.open=So()),n}})}),null),t})()}function bs(e,t){return e?.kind===`entry`&&e.entry===t}function xs(e){let[t,n]=k(e);return{kind:`assistant-turn`,lead:e[0],entries:t,setEntries:n}}function Ss(e,t=[]){let n=[],r=0;for(;r<e.length;){let i=e[r];if(i?.kind===`assistant`){let a=[i];for(r+=1;e[r]?.kind===`tool`;)a.push(e[r]),r+=1;let o=t[n.length];if(o?.kind===`assistant-turn`&&o.lead===i){let e=L(o.entries);(e.length!==a.length||a.some((t,n)=>t!==e[n]))&&o.setEntries(a),n.push(o)}else n.push(xs(a));continue}if(i){let e=t[n.length];n.push(bs(e,i)?e:{kind:`entry`,entry:i})}r+=1}return n}function Cs(e){return W(Te,{get children(){return[W(Ee,{get when(){return e.entry.kind===`user`},get children(){var t=Uo(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return X(n,W(K,{get when(){return us(e.entry.text)},children:e=>(()=>{var t=Ko();return t.firstChild,X(t,e,null),t})()}),r),X(n,W(vs,{get text(){return ls(e.entry)}}),r),X(r,()=>e.userLabel),X(i,()=>e.entry.text),t}}),W(Ee,{get when(){return e.entry.kind===`agent-result`},get children(){return W(ws,{get entry(){return e.entry}})}}),W(Ee,{get when(){return e.entry.kind===`assistant`},get children(){return W(ys,{get entry(){return e.entry},get who(){return e.who}})}}),W(Ee,{get when(){return e.entry.kind===`tool`},get children(){return W(_s,{get entry(){return e.entry}})}}),W(Ee,{get when(){return e.entry.kind===`summary`},get children(){var t=Wo(),n=t.firstChild.firstChild,r=n.nextSibling;return X(n,()=>e.entry.label===`compaction`?`context compacted`:`branch summary`,null),X(n,W(K,{get when(){return e.entry.tokensBefore},get children(){return[` `,`— `,q(()=>e.entry.tokensBefore.toLocaleString()),` tokens summarized`]}}),null),X(r,()=>e.entry.text),t}}),W(Ee,{get when(){return e.entry.kind===`custom`},get children(){var t=Go(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return X(r,()=>e.entry.tag),X(i,()=>e.entry.text),t}})]}})}function ws(e){return(()=>{var t=Jo(),n=t.firstChild,r=n.firstChild;return r.firstChild,X(r,W(K,{get when(){return e.entry.header},get children(){var t=qo();return X(t,()=>e.entry.header),t}}),null),X(n,W(ns,{get text(){return e.entry.text},class:`entry-body markdown-body`}),null),t})()}function Ts(e){let t=()=>e.who??`dreb`,n=()=>e.userLabel??`you`,r=N(t=>Ss(e.entries,t)),[i,a]=k(150),o;M(()=>{let t=e.resetKey??e.entries;t!==o&&(o=t,a(150))});let s=N(()=>{let e=r(),t=i();return e.length>t?e.slice(-t):e}),c=()=>Math.max(0,r().length-s().length);return[W(K,{get when(){return c()>0},get children(){var e=Yo(),t=e.firstChild,n=t.firstChild.nextSibling,o=n.nextSibling.nextSibling;return o.nextSibling,t.$$click=()=>a(Math.min(r().length,i()+150)),X(t,()=>Math.min(150,c()),n),X(t,c,o),e}}),W(G,{get each(){return s()},children:e=>W(Te,{get children(){return[W(Ee,{get when(){return e.kind===`assistant-turn`},get children(){var r=Xo();return X(r,W(G,{get each(){return e.entries()},children:e=>W(Cs,{entry:e,get who(){return t()},get userLabel(){return n()}})})),r}}),W(Ee,{get when(){return e.kind===`entry`},get children(){return W(Cs,{get entry(){return e.entry},get who(){return t()},get userLabel(){return n()}})}})]}})})]}Ae([`click`]);function Es(e){return typeof DOMException<`u`&&e instanceof DOMException&&e.name===`AbortError`?!0:typeof e==`object`&&!!e&&`name`in e&&e.name===`AbortError`}var Ds=new Map,Os=new Map;function ks(e){return Os.get(e)}function As(e,t){Os.set(e,t)}function js(e){return Ds.get(e)??[]}function Ms(e,t){let n=Ds.get(e)??[];n.push(t),Ds.set(e,n.slice(-100))}function Ns(e){Ds.delete(e),Os.delete(e)}var Ps=J(`<p style=margin-bottom:12px>`),Fs=J(`<div class=recent-projects>`),Is=J(`<div class=field><input type=text>`),Ls=J(`<div class=field><textarea rows=8>`),Rs=J(`<button type=button class="btn btn-small">cancel`),zs=J(`<button type=button class="btn btn-small btn-primary">confirm`),Bs=J(`<button type=button class="btn btn-small btn-primary">submit`),Vs=J(`<button type=button>`),Hs=J(`<ul>`),Us=J(`<section class=context-section><h3>`),Ws=J(`<p class="muted small">none`),Gs=J(`<p class=pair-error>`),Ks=J(`<p class="muted small">loading…`),qs=J(`<p class="muted small">system prompt: custom`),Js=J(`<div class=context-modal-body>`),Ys=J(`<li>`),Xs=J(`<span class=muted> — `),Zs=J(`<li><span>`),Qs=J(`<li><span></span><span class=muted> — `),$s=J(`<div class=model-scope-tabs role=tablist aria-label="model scope"><button type=button role=tab>scoped</button><button type=button role=tab>all`),ec=J(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),tc=J(`<div class="model-list session-model-list"style=max-height:320px>`),nc=J(`<p class="muted small">No matching models.`),rc=J(`<section class=model-provider-group><div class=model-provider-heading>`),ic=J(`<span class=model-name>`),ac=J(`<span class=model-reasoning>think`),oc=J(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),sc=J(`<span class=project>`),cc=J(`<output class=switcher><span class=label>ctx</span> `),lc=J(`<span class=right><button type=button class="switcher optional model-switcher"><span class=label>model</span> <span class=value></span></button><button type=button class="switcher optional"><span class=label>think</span> </button><button type=button class=switcher>⋯`),uc=J(`<div class=stats-popover>`),dc=J(`<div class="session-bar-inner session-info-bar"><span class=session-info-left></span><button type=button class="session-info-right stats-trigger">`),fc=J(`<button type=button class="btn btn-small">model: `),pc=J(`<button type=button class="btn btn-small">think: `),mc=J(`<div class=session-bar-inner style=justify-content:flex-end;gap:8px><a class="btn btn-small">export HTML</a><button type=button class="btn btn-small">compact now</button><button type=button class="btn btn-small">expand tools</button><button type=button class="btn btn-small">collapse tools</button><button type=button class="btn btn-small">rename</button><button type=button class="btn btn-small">fork</button><button type=button class="btn btn-small">loaded context</button><button type=button class="btn btn-small btn-danger">`),hc=J(`<div class=container style=padding-top:8px><div class=fallback-banner><span>◆ </span><button type=button class="btn btn-small dismiss">dismiss`),gc=J(`<span class=dock-collapsed-hint>`),_c=J(`<details class=tasks><summary>tasks — <!> of <!> done</summary><ul>`),vc=J(`<span class=collapsed-hint>subagent panel hidden`),yc=J(`<div class=subagent-strip><button type=button class=subagent-toggle></button><span class=count>⚡ <!> running · <!> done`),bc=J(`<span class=working>● working`),xc=J(`<span class=error>`),Sc=J(`<button type=button class="btn btn-small btn-danger">`),Cc=J(`<div class=status-line>`),wc=J(`<div class=queued-message-row><button type=button class="btn btn-small">restore to composer`),Tc=J(`<div class=attachment-strip>`),Ec=J(`<div class=command-popover role=listbox id=command-listbox aria-label="slash commands">`),Dc=J(`<span class=mode-toggle role=radiogroup aria-label="send mode"><button type=button title="Deliver now — injected into the running turn">steer</button><button type=button title="Queue — delivered after the agent finishes">follow-up`),Oc=J(`<button type=button class=ghost-suggest>suggested: <code></code> <span class=key>tap`),kc=J(`<div class=dock-inner><div class=composer><textarea></textarea><div class=composer-row><input type=file multiple class=hidden-file-input><input type=file accept=image/* multiple class=hidden-file-input><button type=button class="btn btn-small"title="attach file (uploads to workspace and sends path)">📎 file</button><button type=button class="btn btn-small"title="attach image inline">🖼 photo</button><button type=button class="btn btn-primary btn-small send">send ↵`),Ac=J(`<p>Summarize older context to free window space. The transcript keeps a summary card.`),jc=J(`<div class=fork-message-list>`),Mc=J(`<div class=session-screen><header class=session-bar><div class="session-bar-inner session-bar-main"><a class=back href=#/>← fleet</a><span class=title></span><button type=button class=chrome-toggle></button></div></header><main class=chat><div class=chat-inner></div></main><footer class=dock><div class=dock-collapse-row><button type=button class=chrome-toggle>`),Nc=J(`<span>`),Pc=J(`<p class="muted small">loading stats…`),Fc=J(`<div class=stats-grid><span>user messages</span><strong></strong><span>assistant messages</span><strong></strong><span>tool calls/results</span><strong>/</strong><span>input/output</span><strong> / </strong><span>cache read/write</span><strong> / </strong><span>total tokens</span><strong></strong><span>cost</span><strong>$`),Ic=J(`<p class=muted>loading transcript…`),Lc=J(`<div class=widget-block>`),Rc=J(`<li> `),zc=J(`<button type=button class=agent-chip title="view this subagent's session"><span></span><span class=task> — `),Bc=J(`<button type=button class="btn btn-small btn-danger inline-stop">stop`),Vc=J(`<span class=queued-chip><span class=queued-kind>`),Hc=J(`<span class=attachment-file><span>📎 </span><span class=muted></span><button type=button aria-label="remove file attachment">×`),Uc=J(`<span class=attachment-thumb><img><button type=button aria-label="remove image">×`),Wc=J(`<span class=command-description>`),Gc=J(`<button type=button role=option class=command-option><span class=command-name>/</span><span class=command-source>`),Kc=J(`<button type=button class="btn btn-small btn-primary">compact`),qc=J(`<p class="muted small">loading forkable messages…`),Jc=J(`<button type=button class=fork-message><span class=fork-entry-id></span><span>`),Yc=J(`<button type=button class="btn btn-small btn-primary">rename`),Xc=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],Zc=10*1024*1024,Qc=`.dreb-dashboard-uploads`;function $c(e){return e?`${e.provider}/${e.id}`:`—`}function el(e){if(!e)return`—`;let t=`${e.provider}/${e.id}`;return e.name?`${t} — ${e.name}`:t}function tl(e){return e<1e3?e.toString():e<1e4?`${(e/1e3).toFixed(1)}k`:e<1e6?`${Math.round(e/1e3)}k`:e<1e7?`${(e/1e6).toFixed(1)}M`:`${Math.round(e/1e6)}M`}function nl(e){return e.replace(/^\/home\/[^/]+/,`~`)}function rl(e,t){return`${e.replace(/\/+$/,``)}/${t}`}function il(e){let t=e.trim().replace(/[\\/\0]/g,`_`);return t&&t!==`.`&&t!==`..`?t:`upload.bin`}function al(e,t){return`${new Date().toISOString().replace(/[:.]/g,`-`)}-${t+1}-${il(e.name||`upload.bin`)}`}function ol(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${(e/(1024*1024*1024)).toFixed(1)} GB`}function sl(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function cl(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 ll(e){e.style.height=`auto`;let t=Math.max(120,Math.floor((window.innerHeight||800)*.4)),n=Math.min(e.scrollHeight,t);n>0&&(e.style.height=`${n}px`),e.style.overflowY=e.scrollHeight>t?`auto`:`hidden`}function ul(e){let[t,n]=k(e.request.prefill??``),r=t=>e.onRespond({type:`extension_ui_response`,id:e.request.id,...t});return W(nt,{get title(){return e.request.title},onDismiss:()=>r({cancelled:!0}),get actions(){return W(K,{get when(){return e.request.method!==`select`},get children(){return[(()=>{var e=Rs();return e.$$click=()=>r({cancelled:!0}),e})(),W(K,{get when(){return e.request.method===`confirm`},get children(){var e=zs();return e.$$click=()=>r({confirmed:!0}),e}}),W(K,{get when(){return e.request.method===`input`||e.request.method===`editor`},get children(){var e=Bs();return e.$$click=()=>r({value:t()}),e}})]}})},get children(){return[W(K,{get when(){return e.request.message},get children(){var t=Ps();return X(t,()=>e.request.message),t}}),W(K,{get when(){return e.request.method===`select`},get children(){var t=Fs();return X(t,W(G,{get each(){return e.request.options??[]},children:e=>(()=>{var t=Vs();return t.$$click=()=>r({value:e}),X(t,e),t})()})),t}}),W(K,{get when(){return e.request.method===`input`},get children(){var r=Is(),i=r.firstChild;return i.$$input=e=>n(e.currentTarget.value),j(()=>Y(i,`placeholder`,e.request.placeholder)),j(()=>i.value=t()),r}}),W(K,{get when(){return e.request.method===`editor`},get children(){var e=Ls(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e}})]}})}function dl(e){let t=(e,t)=>(()=>{var n=Us(),r=n.firstChild;return X(r,e),X(n,W(K,{get when(){return t.length>0},get fallback(){return Ws()},get children(){var e=Hs();return X(e,t),e}}),null),n})();return W(nt,{title:`loaded context`,get onDismiss(){return e.onClose},get children(){return[W(K,{get when(){return e.error},get children(){var t=Gs();return X(t,()=>e.error),t}}),W(K,{get when(){return e.resources},get fallback(){return Ks()},children:e=>(()=>{var n=Js();return X(n,()=>t(`context files`,e().contextFiles.map(e=>(()=>{var t=Ys();return X(t,()=>nl(e.path)),j(()=>Y(t,`title`,e.path)),t})())),null),X(n,()=>t(`skills`,e().skills.map(e=>(()=>{var t=Zs(),n=t.firstChild;return X(n,()=>e.name),X(t,W(K,{get when(){return e.description},get children(){var t=Xs();return t.firstChild,X(t,()=>e.description,null),t}}),null),t})())),null),X(n,()=>t(`extensions`,e().extensions.map(e=>(()=>{var t=Qs(),n=t.firstChild,r=n.nextSibling;return r.firstChild,X(n,()=>e.name??`extension`),X(r,()=>nl(e.path),null),j(()=>Y(t,`title`,e.path)),t})())),null),X(n,()=>t(`prompt templates`,e().promptTemplates.map(e=>(()=>{var t=Ys();return X(t,()=>e.name),t})())),null),X(n,W(K,{get when(){return e().systemPromptPresent},get children(){return qs()}}),null),n})()})]}})}function fl(e){let[t,n]=k([]),[r,i]=k(``),[a,o]=k((e.state?.scopedModels?.length??0)>0?`scoped`:`all`),[s,c]=k();R(async()=>{try{let{models:t}=await Q.models(e.sessionKey);n(t)}catch(e){c(e instanceof Error?e.message:String(e))}});let l=N(()=>(e.state?.scopedModels??[]).map(e=>({provider:e.provider,id:e.id,name:e.name,reasoning:e.reasoning}))),u=()=>l().length>0,d=()=>a()===`scoped`&&u()?l():t(),f=N(()=>{let e=r().toLowerCase();return cl(d().filter(t=>!e||sl(t,e)).slice(0,100))}),p=t=>e.state?.model?.provider===t.provider&&e.state?.model?.id===t.id;async function m(t){try{let n=await Q.setModel(e.sessionKey,t.provider,t.id);e.onSelected(n),e.onClose()}catch(e){c(e instanceof Error?e.message:String(e))}}return W(nt,{title:`select model`,get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[W(K,{get when(){return u()},get children(){var e=$s(),t=e.firstChild,n=t.nextSibling;return t.$$click=()=>o(`scoped`),n.$$click=()=>o(`all`),j(e=>{var r=a()===`scoped`,i=a()===`scoped`,o=a()===`all`,s=a()===`all`;return r!==e.e&&Y(t,`aria-selected`,e.e=r),i!==e.t&&t.classList.toggle(`selected`,e.t=i),o!==e.a&&Y(n,`aria-selected`,e.a=o),s!==e.o&&n.classList.toggle(`selected`,e.o=s),e},{e:void 0,t:void 0,a:void 0,o:void 0}),e}}),(()=>{var e=ec(),t=e.firstChild;return t.$$input=e=>i(e.currentTarget.value),j(()=>t.value=r()),e})(),W(K,{get when(){return s()},get children(){var e=Gs();return X(e,s),e}}),(()=>{var e=tc();return X(e,W(K,{get when(){return f().length>0},get fallback(){return nc()},get children(){return W(G,{get each(){return f()},children:e=>(()=>{var t=rc(),n=t.firstChild;return X(n,()=>e.provider),X(t,W(G,{get each(){return e.models},children:e=>(()=>{var t=oc(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling;return t.$$click=()=>m(e),X(n,()=>p(e)?`✓`:``),X(r,()=>e.id),X(t,W(K,{get when(){return e.name},get children(){var t=ic();return X(t,()=>e.name),t}}),i),X(i,()=>e.provider),X(t,W(K,{get when(){return e.reasoning},get children(){return ac()}}),null),j(n=>{var r=!!p(e),i=el(e);return r!==n.e&&t.classList.toggle(`current`,n.e=r),i!==n.t&&Y(t,`title`,n.t=i),n},{e:void 0,t:void 0}),t})()}),null),t})()})}})),e})()]}})}function pl(e){let t=()=>e.store.sessions[e.sessionKey],n=N(()=>e.store.fleet().runtimes.find(t=>t.key===e.sessionKey)),[r,i]=k(ks(e.sessionKey)??``),[a,o]=k(`steer`),[s,c]=k(!1),[l,u]=k(!1),[d,f]=k(!1),[p,m]=k(!1),[h,g]=k(!1),[_,v]=k(!1),[y,b]=k(!1),[x,S]=k(!1),[C,w]=k(!1),[T,E]=k(!1),[D,O]=k(!1),[A,P]=k(),[F,I]=k(0),[L,B]=k(),[ee,te]=k(),[ne,re]=k(),[ie,V]=k(),[ae,H]=k([]),[oe,U]=k(!1),[se,ce]=k(0),[le,ue]=k(),[de,fe]=k(),[pe,me]=k({steering:[],followUp:[]}),[he,ge]=k([]),[_e,ve]=k([]),[ye,be]=k(),[xe,Se]=k(!1),[Ce,we]=k([]),[Te,Ee]=k(),[De,Oe]=k(!1),[ke,J]=k(),Ae,Me,Ne,Fe,Ie,Le,Re=!1,ze=()=>t()?.streaming??!1,Be=()=>t()?.compacting??!1,Ve=()=>(t()?.statusEntries??[]).some(e=>e.key===`paused`),He=()=>Object.values(t()?.backgroundAgents??{}).some(e=>e.status===`running`),Ue=()=>ze()||Be()||Ve()||He(),We=io({scroller:()=>Ae});async function Ge(t=!1){let[n,r,i]=await Promise.allSettled([Q.stats(e.sessionKey),Q.performance(e.sessionKey),Q.branch(e.sessionKey)]),a=t?await Promise.allSettled([Q.dailyCost()]):void 0;if(Re)return;n.status===`fulfilled`&&B(n.value),r.status===`fulfilled`&&te(r.value),i.status===`fulfilled`&&re(i.value.branch),a?.[0]?.status===`fulfilled`&&V(a[0].value.cost);let o=[n,r,i,...a??[]].find(e=>e.status===`rejected`);o?.status===`rejected`&&P(o.reason instanceof Error?o.reason.message:String(o.reason))}async function Ke(){try{let{commands:t}=await Q.commands(e.sessionKey);Re||H(t)}catch(e){Re||P(e instanceof Error?e.message:String(e))}}async function qe(){E(!0),fe(void 0);try{ue(await Q.resources(e.sessionKey))}catch(e){fe(e instanceof Error?e.message:String(e))}}async function Je(){try{me(await Q.pending(e.sessionKey))}catch(e){P(e instanceof Error?e.message:String(e))}}function Ye(e){let t=atob(e);return Uint8Array.from(t,e=>e.charCodeAt(0))}function Xe(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode(...e.subarray(r,r+n));return btoa(t)}async function Ze(e){return Xe(new Uint8Array(await e.arrayBuffer()))}function Qe(e){URL.revokeObjectURL(e.previewUrl)}function $e(){for(let e of he())Qe(e);ge([])}function et(e){ge(t=>{let n=t[e];return n&&Qe(n),t.filter((t,n)=>n!==e)})}function rt(e){if(he().reduce((e,t)=>e+t.size,0)+e>Tn)throw Error(`Images too large: total inline images exceed ${ol(Tn)}`)}function it(e,t,n){return{blob:e,mimeType:t,fileName:n,size:e.size,previewUrl:URL.createObjectURL(e)}}function at(e,t,n){let r=Ye(e.data);return it(new Blob([r],{type:e.mimeType}),e.mimeType,`queued-image-${t+1}-${n+1}`)}function ot(e){return[...e.steeringMessages??e.steering.map(e=>({text:e})),...e.followUpMessages??e.followUp.map(e=>({text:e}))]}function Z(e){let t=[];for(let[n,r]of e.entries())for(let[e,i]of(r.images??[]).entries())t.push(at(i,n,e));return t}function st(e){for(let t of e)Qe(t)}function ct(e){let t=e.map(e=>e.text).join(`
66
+ `]})),t})()}function _s(e){if(e.toolName!==`edit`)return;let t=e.details?.diff;return typeof t==`string`?t:void 0}var vs=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]);function ys(e){let t=()=>e.images.filter(e=>vs.has(e.mimeType));return W(K,{get when(){return t().length>0},get children(){var e=jo();return X(e,W(G,{get each(){return t()},children:e=>(()=>{var t=Mo();return j(()=>Y(t,`src`,`data:${e.mimeType};base64,${e.data}`)),t})()})),e}})}function bs(e){let[t,n]=k(!1),r=()=>e.text.length>es;M(()=>{r()||n(!1)});let i=()=>r()&&!t()?e.text.slice(-204800):e.text;return[W(K,{get when(){return q(()=>!!r())()&&!t()},get children(){var t=No(),r=t.firstChild.nextSibling,i=r.nextSibling.nextSibling,a=i.nextSibling.nextSibling,o=a.firstChild.nextSibling;return o.nextSibling,X(t,()=>rs(es),r),X(t,()=>rs(e.text.length),i),a.$$click=()=>n(!0),X(a,()=>rs(e.text.length),o),t}}),W(K,{get when(){return e.markdown},get fallback(){return W(cs,{get text(){return i()},get language(){return e.language},get autoScroll(){return e.autoScroll},get throttle(){return e.throttle}})},get children(){return W(is,{get text(){return i()},get throttle(){return e.throttle}})}})]}function xs(e){let t=()=>ps(e.entry),n=()=>e.entry.args,r=()=>{if(e.entry.toolName===`suggest_next`)return e.entry.details},i=()=>_s(e.entry),a=()=>e.entry.toolName===`write`&&!e.entry.resultText&&typeof n()?.content==`string`?String(n()?.content):e.entry.resultText,o=()=>{if(e.entry.toolName===`read`||e.entry.toolName===`write`&&!e.entry.resultText)return as(os(n()))},s=()=>ms.has(e.entry.toolName)&&e.entry.status!==`error`,c=()=>e.entry.toolName===`bash`||e.entry.toolName===`bash (user)`,l=()=>hs(e.entry),u=()=>To(e.entry.toolName),[d,f]=k(u()||e.entry.status===`running`),p=e.entry.status===`running`,m=!1,h=!1,g,_=e=>{d()!==e&&(h=!0,f(e),g&&clearTimeout(g),g=setTimeout(()=>{h=!1,g=void 0},0))};return M(()=>{let t=e.entry.status===`running`,n=u();t?(m=!1,_(!0)):p?(m=!1,_(n)):m||_(n),p=t}),z(()=>{g&&clearTimeout(g)}),(()=>{var u=Io(),p=u.firstChild.firstChild,_=p.nextSibling,v=_.nextSibling;return u.addEventListener(`toggle`,t=>{let n=t.currentTarget.open;if(h){f(n);return}if(e.entry.status===`running`&&!n){h=!0,t.currentTarget.open=!0,f(!0),g&&clearTimeout(g),g=setTimeout(()=>{h=!1,g=void 0},0);return}m=!0,f(n)}),X(p,()=>e.entry.toolName),X(_,()=>ls(e.entry)),X(v,()=>t().text),X(u,W(K,{get when(){return d()},get children(){return[W(K,{get when(){return e.entry.toolName===`bash`||e.entry.toolName===`bash (user)`},get children(){var e=Po(),t=e.firstChild;return X(t,()=>String(n()?.command??``)),e}}),W(G,{get each(){return l()},children:e=>(()=>{var t=Lo(),n=t.firstChild;return X(n,()=>e.label),X(t,W(K,{get when(){return e.markdown},get fallback(){return W(cs,{get text(){return e.text},get language(){return e.language}})},get children(){return W(is,{get text(){return e.text}})}}),null),t})()}),W(K,{get when(){return e.entry.images?.length},get children(){var t=Fo();return X(t,W(ys,{get images(){return e.entry.images}})),t}}),W(Te,{get children(){return[W(Ee,{get when(){return r()},children:e=>(()=>{var t=Ro(),n=t.firstChild,r=n.firstChild.nextSibling;return X(t,W(K,{get when(){return e().summary},get children(){return W(is,{get text(){return e().summary}})}}),n),X(r,()=>e().suggestion),t})()}),W(Ee,{get when(){return i()},children:e=>(()=>{var t=Fo();return X(t,W(gs,{get text(){return e()}})),t})()}),W(Ee,{get when(){return a()},children:t=>(()=>{var n=Fo();return X(n,W(bs,{get text(){return t()},get language(){return o()},get markdown(){return s()},get autoScroll(){return c()},get throttle(){return e.entry.status===`running`}})),n})()})]}})]}}),null),j(e=>{var n=d(),r=`tool-status ${t().cls}`;return n!==e.e&&(u.open=e.e=n),r!==e.t&&je(v,e.t=r),e},{e:void 0,t:void 0}),u})()}function Ss(e){let[t,n]=k(`idle`);async function r(){if(e.text){try{await navigator.clipboard.writeText(e.text),n(`copied`)}catch{n(`failed`)}setTimeout(()=>n(`idle`),1200)}}return(()=>{var n=zo();return n.$$click=r,X(n,(()=>{var e=q(()=>t()===`copied`);return()=>e()?`copied`:t()===`failed`?`copy failed`:`copy`})()),j(()=>n.disabled=!e.text),n})()}function Cs(e){return(()=>{var t=Ho(),n=t.firstChild,r=n.firstChild;return X(r,()=>e.who),X(n,W(K,{get when(){return e.entry.model},get children(){return[Bo(),(()=>{var t=Ao();return X(t,()=>e.entry.model),t})()]}}),null),X(n,W(K,{get when(){return e.entry.streaming},get children(){return[Bo(),Vo()]}}),null),X(n,W(Ss,{get text(){return ds(e.entry)}}),null),X(t,W(G,{get each(){return e.entry.blocks},children:(t,n)=>W(K,{get when(){return t.kind===`thinking`},get fallback(){return(()=>{var r=Wo();return X(r,W(is,{get text(){return t.text},get classList(){return{"streaming-cursor":e.entry.streaming&&n()===e.entry.blocks.length-1}},get throttle(){return e.entry.streaming}})),r})()},get children(){var n=Uo();return n.firstChild,X(n,W(is,{get text(){return t.text},class:`thinking-body markdown-body`,get throttle(){return e.entry.streaming}}),null),j(()=>n.open=So()),n}})}),null),t})()}function ws(e,t){return e?.kind===`entry`&&e.entry===t}function Ts(e){let[t,n]=k(e);return{kind:`assistant-turn`,lead:e[0],entries:t,setEntries:n}}function Es(e,t=[]){let n=[],r=0;for(;r<e.length;){let i=e[r];if(i?.kind===`assistant`){let a=[i];for(r+=1;e[r]?.kind===`tool`;)a.push(e[r]),r+=1;let o=t[n.length];if(o?.kind===`assistant-turn`&&o.lead===i){let e=L(o.entries);(e.length!==a.length||a.some((t,n)=>t!==e[n]))&&o.setEntries(a),n.push(o)}else n.push(Ts(a));continue}if(i){let e=t[n.length];n.push(ws(e,i)?e:{kind:`entry`,entry:i})}r+=1}return n}function Ds(e){return W(Te,{get children(){return[W(Ee,{get when(){return e.entry.kind===`user`},get children(){var t=Go(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return X(n,W(K,{get when(){return fs(e.entry.text)},children:e=>(()=>{var t=Jo();return t.firstChild,X(t,e,null),t})()}),r),X(n,W(Ss,{get text(){return ds(e.entry)}}),r),X(r,()=>e.userLabel),X(i,()=>e.entry.text),t}}),W(Ee,{get when(){return e.entry.kind===`agent-result`},get children(){return W(Os,{get entry(){return e.entry}})}}),W(Ee,{get when(){return e.entry.kind===`assistant`},get children(){return W(Cs,{get entry(){return e.entry},get who(){return e.who}})}}),W(Ee,{get when(){return e.entry.kind===`tool`},get children(){return W(xs,{get entry(){return e.entry}})}}),W(Ee,{get when(){return e.entry.kind===`summary`},get children(){var t=Ko(),n=t.firstChild.firstChild,r=n.nextSibling;return X(n,()=>e.entry.label===`compaction`?`context compacted`:`branch summary`,null),X(n,W(K,{get when(){return e.entry.tokensBefore},get children(){return[` `,`— `,q(()=>e.entry.tokensBefore.toLocaleString()),` tokens summarized`]}}),null),X(r,()=>e.entry.text),t}}),W(Ee,{get when(){return e.entry.kind===`custom`},get children(){var t=qo(),n=t.firstChild,r=n.firstChild,i=n.nextSibling;return X(r,()=>e.entry.tag),X(i,()=>e.entry.text),t}})]}})}function Os(e){return(()=>{var t=Xo(),n=t.firstChild,r=n.firstChild;return r.firstChild,X(r,W(K,{get when(){return e.entry.header},get children(){var t=Yo();return X(t,()=>e.entry.header),t}}),null),X(n,W(is,{get text(){return e.entry.text},class:`entry-body markdown-body`}),null),t})()}function ks(e){let t=()=>e.who??`dreb`,n=()=>e.userLabel??`you`,r=N(t=>Es(e.entries,t)),[i,a]=k(150),o;M(()=>{let t=e.resetKey??e.entries;t!==o&&(o=t,a(150))});let s=N(()=>{let e=r(),t=i();return e.length>t?e.slice(-t):e}),c=()=>Math.max(0,r().length-s().length);return[W(K,{get when(){return c()>0},get children(){var e=Zo(),t=e.firstChild,n=t.firstChild.nextSibling,o=n.nextSibling.nextSibling;return o.nextSibling,t.$$click=()=>a(Math.min(r().length,i()+150)),X(t,()=>Math.min(150,c()),n),X(t,c,o),e}}),W(G,{get each(){return s()},children:e=>W(Te,{get children(){return[W(Ee,{get when(){return e.kind===`assistant-turn`},get children(){var r=Qo();return X(r,W(G,{get each(){return e.entries()},children:e=>W(Ds,{entry:e,get who(){return t()},get userLabel(){return n()}})})),r}}),W(Ee,{get when(){return e.kind===`entry`},get children(){return W(Ds,{get entry(){return e.entry},get who(){return t()},get userLabel(){return n()}})}})]}})})]}Ae([`click`]);function As(e){return typeof DOMException<`u`&&e instanceof DOMException&&e.name===`AbortError`?!0:typeof e==`object`&&!!e&&`name`in e&&e.name===`AbortError`}var js=new Map,Ms=new Map;function Ns(e){return Ms.get(e)}function Ps(e,t){Ms.set(e,t)}function Fs(e){return js.get(e)??[]}function Is(e,t){let n=js.get(e)??[];n.push(t),js.set(e,n.slice(-100))}function Ls(e){js.delete(e),Ms.delete(e)}var Rs=J(`<p style=margin-bottom:12px>`),zs=J(`<div class=recent-projects>`),Bs=J(`<div class=field><input type=text>`),Vs=J(`<div class=field><textarea rows=8>`),Hs=J(`<button type=button class="btn btn-small">cancel`),Us=J(`<button type=button class="btn btn-small btn-primary">confirm`),Ws=J(`<button type=button class="btn btn-small btn-primary">submit`),Gs=J(`<button type=button>`),Ks=J(`<ul>`),qs=J(`<section class=context-section><h3>`),Js=J(`<p class="muted small">none`),Ys=J(`<p class=pair-error>`),Xs=J(`<p class="muted small">loading…`),Zs=J(`<p class="muted small">system prompt: custom`),Qs=J(`<div class=context-modal-body>`),$s=J(`<li>`),ec=J(`<span class=muted> — `),tc=J(`<li><span>`),nc=J(`<li><span></span><span class=muted> — `),rc=J(`<div class=model-scope-tabs role=tablist aria-label="model scope"><button type=button role=tab>scoped</button><button type=button role=tab>all`),ic=J(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),ac=J(`<div class="model-list session-model-list"style=max-height:320px>`),oc=J(`<p class="muted small">No matching models.`),sc=J(`<section class=model-provider-group><div class=model-provider-heading>`),cc=J(`<span class=model-name>`),lc=J(`<span class=model-reasoning>think`),uc=J(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),dc=J(`<span class=project>`),fc=J(`<output class=switcher><span class=label>ctx</span> `),pc=J(`<span class=right><button type=button class="switcher optional model-switcher"><span class=label>model</span> <span class=value></span></button><button type=button class="switcher optional"><span class=label>think</span> </button><button type=button class=switcher>⋯`),mc=J(`<div class=stats-popover>`),hc=J(`<div class="session-bar-inner session-info-bar"><span class=session-info-left></span><button type=button class="session-info-right stats-trigger">`),gc=J(`<button type=button class="btn btn-small">model: `),_c=J(`<button type=button class="btn btn-small">think: `),vc=J(`<div class=session-bar-inner style=justify-content:flex-end;gap:8px><a class="btn btn-small">export HTML</a><button type=button class="btn btn-small">compact now</button><button type=button class="btn btn-small">expand tools</button><button type=button class="btn btn-small">collapse tools</button><button type=button class="btn btn-small">rename</button><button type=button class="btn btn-small">fork</button><button type=button class="btn btn-small">loaded context</button><button type=button class="btn btn-small btn-danger">`),yc=J(`<div class=container style=padding-top:8px><div class=fallback-banner><span>◆ </span><button type=button class="btn btn-small dismiss">dismiss`),bc=J(`<span class=dock-collapsed-hint>`),xc=J(`<details class=tasks><summary>tasks — <!> of <!> done</summary><ul>`),Sc=J(`<span class=collapsed-hint>subagent panel hidden`),Cc=J(`<div class=subagent-strip><button type=button class=subagent-toggle></button><span class=count>⚡ <!> running · <!> done`),wc=J(`<span class=working>● working`),Tc=J(`<span class=error>`),Ec=J(`<button type=button class="btn btn-small btn-danger">`),Dc=J(`<div class=status-line>`),Oc=J(`<div class=queued-message-row><button type=button class="btn btn-small">restore to composer`),kc=J(`<div class=attachment-strip>`),Ac=J(`<div class=command-popover role=listbox id=command-listbox aria-label="slash commands">`),jc=J(`<span class=mode-toggle role=radiogroup aria-label="send mode"><button type=button title="Deliver now — injected into the running turn">steer</button><button type=button title="Queue — delivered after the agent finishes">follow-up`),Mc=J(`<button type=button class=ghost-suggest>suggested: <code></code> <span class=key>tap`),Nc=J(`<div class=dock-inner><div class=composer><textarea></textarea><div class=composer-row><input type=file multiple class=hidden-file-input><input type=file accept=image/* multiple class=hidden-file-input><button type=button class="btn btn-small"title="attach file (uploads to workspace and sends path)">📎 file</button><button type=button class="btn btn-small"title="attach image inline">🖼 photo</button><button type=button class="btn btn-primary btn-small send">send ↵`),Pc=J(`<p>Summarize older context to free window space. The transcript keeps a summary card.`),Fc=J(`<div class=fork-message-list>`),Ic=J(`<div class=session-screen><header class=session-bar><div class="session-bar-inner session-bar-main"><a class=back href=#/>← fleet</a><span class=title></span><button type=button class=chrome-toggle></button></div></header><main class=chat><div class=chat-inner></div></main><footer class=dock><div class=dock-collapse-row><button type=button class=chrome-toggle>`),Lc=J(`<span>`),Rc=J(`<p class="muted small">loading stats…`),zc=J(`<div class=stats-grid><span>user messages</span><strong></strong><span>assistant messages</span><strong></strong><span>tool calls/results</span><strong>/</strong><span>input/output</span><strong> / </strong><span>cache read/write</span><strong> / </strong><span>total tokens</span><strong></strong><span>cost</span><strong>$`),Bc=J(`<p class=muted>loading transcript…`),Vc=J(`<div class=widget-block>`),Hc=J(`<li> `),Uc=J(`<button type=button class=agent-chip title="view this subagent's session"><span></span><span class=task> — `),Wc=J(`<button type=button class="btn btn-small btn-danger inline-stop">stop`),Gc=J(`<span class=queued-chip><span class=queued-kind>`),Kc=J(`<span class=attachment-file><span>📎 </span><span class=muted></span><button type=button aria-label="remove file attachment">×`),qc=J(`<span class=attachment-thumb><img><button type=button aria-label="remove image">×`),Jc=J(`<span class=command-description>`),Yc=J(`<button type=button role=option class=command-option><span class=command-name>/</span><span class=command-source>`),Xc=J(`<button type=button class="btn btn-small btn-primary">compact`),Zc=J(`<p class="muted small">loading forkable messages…`),Qc=J(`<button type=button class=fork-message><span class=fork-entry-id></span><span>`),$c=J(`<button type=button class="btn btn-small btn-primary">rename`),el=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],tl=10*1024*1024,nl=`.dreb-dashboard-uploads`;function rl(e){return e?`${e.provider}/${e.id}`:`—`}function il(e){if(!e)return`—`;let t=`${e.provider}/${e.id}`;return e.name?`${t} — ${e.name}`:t}function al(e){return e<1e3?e.toString():e<1e4?`${(e/1e3).toFixed(1)}k`:e<1e6?`${Math.round(e/1e3)}k`:e<1e7?`${(e/1e6).toFixed(1)}M`:`${Math.round(e/1e6)}M`}function ol(e){return e.replace(/^\/home\/[^/]+/,`~`)}function sl(e,t){return`${e.replace(/\/+$/,``)}/${t}`}function cl(e){let t=e.trim().replace(/[\\/\0]/g,`_`);return t&&t!==`.`&&t!==`..`?t:`upload.bin`}function ll(e,t){return`${new Date().toISOString().replace(/[:.]/g,`-`)}-${t+1}-${cl(e.name||`upload.bin`)}`}function ul(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${(e/(1024*1024*1024)).toFixed(1)} GB`}function dl(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function fl(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 pl(e){e.style.height=`auto`;let t=Math.max(120,Math.floor((window.innerHeight||800)*.4)),n=Math.min(e.scrollHeight,t);n>0&&(e.style.height=`${n}px`),e.style.overflowY=e.scrollHeight>t?`auto`:`hidden`}function ml(e){let[t,n]=k(e.request.prefill??``),r=t=>e.onRespond({type:`extension_ui_response`,id:e.request.id,...t});return W(nt,{get title(){return e.request.title},onDismiss:()=>r({cancelled:!0}),get actions(){return W(K,{get when(){return e.request.method!==`select`},get children(){return[(()=>{var e=Hs();return e.$$click=()=>r({cancelled:!0}),e})(),W(K,{get when(){return e.request.method===`confirm`},get children(){var e=Us();return e.$$click=()=>r({confirmed:!0}),e}}),W(K,{get when(){return e.request.method===`input`||e.request.method===`editor`},get children(){var e=Ws();return e.$$click=()=>r({value:t()}),e}})]}})},get children(){return[W(K,{get when(){return e.request.message},get children(){var t=Rs();return X(t,()=>e.request.message),t}}),W(K,{get when(){return e.request.method===`select`},get children(){var t=zs();return X(t,W(G,{get each(){return e.request.options??[]},children:e=>(()=>{var t=Gs();return t.$$click=()=>r({value:e}),X(t,e),t})()})),t}}),W(K,{get when(){return e.request.method===`input`},get children(){var r=Bs(),i=r.firstChild;return i.$$input=e=>n(e.currentTarget.value),j(()=>Y(i,`placeholder`,e.request.placeholder)),j(()=>i.value=t()),r}}),W(K,{get when(){return e.request.method===`editor`},get children(){var e=Vs(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e}})]}})}function hl(e){let t=(e,t)=>(()=>{var n=qs(),r=n.firstChild;return X(r,e),X(n,W(K,{get when(){return t.length>0},get fallback(){return Js()},get children(){var e=Ks();return X(e,t),e}}),null),n})();return W(nt,{title:`loaded context`,get onDismiss(){return e.onClose},get children(){return[W(K,{get when(){return e.error},get children(){var t=Ys();return X(t,()=>e.error),t}}),W(K,{get when(){return e.resources},get fallback(){return Xs()},children:e=>(()=>{var n=Qs();return X(n,()=>t(`context files`,e().contextFiles.map(e=>(()=>{var t=$s();return X(t,()=>ol(e.path)),j(()=>Y(t,`title`,e.path)),t})())),null),X(n,()=>t(`skills`,e().skills.map(e=>(()=>{var t=tc(),n=t.firstChild;return X(n,()=>e.name),X(t,W(K,{get when(){return e.description},get children(){var t=ec();return t.firstChild,X(t,()=>e.description,null),t}}),null),t})())),null),X(n,()=>t(`extensions`,e().extensions.map(e=>(()=>{var t=nc(),n=t.firstChild,r=n.nextSibling;return r.firstChild,X(n,()=>e.name??`extension`),X(r,()=>ol(e.path),null),j(()=>Y(t,`title`,e.path)),t})())),null),X(n,()=>t(`prompt templates`,e().promptTemplates.map(e=>(()=>{var t=$s();return X(t,()=>e.name),t})())),null),X(n,W(K,{get when(){return e().systemPromptPresent},get children(){return Zs()}}),null),n})()})]}})}function gl(e){let[t,n]=k([]),[r,i]=k(``),[a,o]=k((e.state?.scopedModels?.length??0)>0?`scoped`:`all`),[s,c]=k();R(async()=>{try{let{models:t}=await Q.models(e.sessionKey);n(t)}catch(e){c(e instanceof Error?e.message:String(e))}});let l=N(()=>(e.state?.scopedModels??[]).map(e=>({provider:e.provider,id:e.id,name:e.name,reasoning:e.reasoning}))),u=()=>l().length>0,d=()=>a()===`scoped`&&u()?l():t(),f=N(()=>{let e=r().toLowerCase();return fl(d().filter(t=>!e||dl(t,e)).slice(0,100))}),p=t=>e.state?.model?.provider===t.provider&&e.state?.model?.id===t.id;async function m(t){try{let n=await Q.setModel(e.sessionKey,t.provider,t.id);e.onSelected(n),e.onClose()}catch(e){c(e instanceof Error?e.message:String(e))}}return W(nt,{title:`select model`,get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[W(K,{get when(){return u()},get children(){var e=rc(),t=e.firstChild,n=t.nextSibling;return t.$$click=()=>o(`scoped`),n.$$click=()=>o(`all`),j(e=>{var r=a()===`scoped`,i=a()===`scoped`,o=a()===`all`,s=a()===`all`;return r!==e.e&&Y(t,`aria-selected`,e.e=r),i!==e.t&&t.classList.toggle(`selected`,e.t=i),o!==e.a&&Y(n,`aria-selected`,e.a=o),s!==e.o&&n.classList.toggle(`selected`,e.o=s),e},{e:void 0,t:void 0,a:void 0,o:void 0}),e}}),(()=>{var e=ic(),t=e.firstChild;return t.$$input=e=>i(e.currentTarget.value),j(()=>t.value=r()),e})(),W(K,{get when(){return s()},get children(){var e=Ys();return X(e,s),e}}),(()=>{var e=ac();return X(e,W(K,{get when(){return f().length>0},get fallback(){return oc()},get children(){return W(G,{get each(){return f()},children:e=>(()=>{var t=sc(),n=t.firstChild;return X(n,()=>e.provider),X(t,W(G,{get each(){return e.models},children:e=>(()=>{var t=uc(),n=t.firstChild,r=n.nextSibling,i=r.nextSibling;return t.$$click=()=>m(e),X(n,()=>p(e)?`✓`:``),X(r,()=>e.id),X(t,W(K,{get when(){return e.name},get children(){var t=cc();return X(t,()=>e.name),t}}),i),X(i,()=>e.provider),X(t,W(K,{get when(){return e.reasoning},get children(){return lc()}}),null),j(n=>{var r=!!p(e),i=il(e);return r!==n.e&&t.classList.toggle(`current`,n.e=r),i!==n.t&&Y(t,`title`,n.t=i),n},{e:void 0,t:void 0}),t})()}),null),t})()})}})),e})()]}})}function _l(e){let t=()=>e.store.sessions[e.sessionKey],n=N(()=>e.store.fleet().runtimes.find(t=>t.key===e.sessionKey)),[r,i]=k(Ns(e.sessionKey)??``),[a,o]=k(`steer`),[s,c]=k(!1),[l,u]=k(!1),[d,f]=k(!1),[p,m]=k(!1),[h,g]=k(!1),[_,v]=k(!1),[y,b]=k(!1),[x,S]=k(!1),[C,w]=k(!1),[T,E]=k(!1),[D,O]=k(!1),[A,P]=k(),[F,I]=k(0),[L,B]=k(),[ee,te]=k(),[ne,re]=k(),[ie,V]=k(),[ae,H]=k([]),[oe,U]=k(!1),[se,ce]=k(0),[le,ue]=k(),[de,fe]=k(),[pe,me]=k({steering:[],followUp:[]}),[he,ge]=k([]),[_e,ve]=k([]),[ye,be]=k(),[xe,Se]=k(!1),[Ce,we]=k([]),[Te,Ee]=k(),[De,Oe]=k(!1),[ke,J]=k(),Ae,Me,Ne,Fe,Ie,Le,Re=!1,ze=()=>t()?.streaming??!1,Be=()=>t()?.compacting??!1,Ve=()=>(t()?.statusEntries??[]).some(e=>e.key===`paused`),He=()=>Object.values(t()?.backgroundAgents??{}).some(e=>e.status===`running`),Ue=()=>ze()||Be()||Ve()||He(),We=io({scroller:()=>Ae});async function Ge(t=!1){let[n,r,i]=await Promise.allSettled([Q.stats(e.sessionKey),Q.performance(e.sessionKey),Q.branch(e.sessionKey)]),a=t?await Promise.allSettled([Q.dailyCost()]):void 0;if(Re)return;n.status===`fulfilled`&&B(n.value),r.status===`fulfilled`&&te(r.value),i.status===`fulfilled`&&re(i.value.branch),a?.[0]?.status===`fulfilled`&&V(a[0].value.cost);let o=[n,r,i,...a??[]].find(e=>e.status===`rejected`);o?.status===`rejected`&&P(o.reason instanceof Error?o.reason.message:String(o.reason))}async function Ke(){try{let{commands:t}=await Q.commands(e.sessionKey);Re||H(t)}catch(e){Re||P(e instanceof Error?e.message:String(e))}}async function qe(){E(!0),fe(void 0);try{ue(await Q.resources(e.sessionKey))}catch(e){fe(e instanceof Error?e.message:String(e))}}async function Je(){try{me(await Q.pending(e.sessionKey))}catch(e){P(e instanceof Error?e.message:String(e))}}function Ye(e){let t=atob(e);return Uint8Array.from(t,e=>e.charCodeAt(0))}function Xe(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode(...e.subarray(r,r+n));return btoa(t)}async function Ze(e){return Xe(new Uint8Array(await e.arrayBuffer()))}function Qe(e){URL.revokeObjectURL(e.previewUrl)}function $e(){for(let e of he())Qe(e);ge([])}function et(e){ge(t=>{let n=t[e];return n&&Qe(n),t.filter((t,n)=>n!==e)})}function rt(e){if(he().reduce((e,t)=>e+t.size,0)+e>Tn)throw Error(`Images too large: total inline images exceed ${ul(Tn)}`)}function it(e,t,n){return{blob:e,mimeType:t,fileName:n,size:e.size,previewUrl:URL.createObjectURL(e)}}function at(e,t,n){let r=Ye(e.data);return it(new Blob([r],{type:e.mimeType}),e.mimeType,`queued-image-${t+1}-${n+1}`)}function ot(e){return[...e.steeringMessages??e.steering.map(e=>({text:e})),...e.followUpMessages??e.followUp.map(e=>({text:e}))]}function Z(e){let t=[];for(let[n,r]of e.entries())for(let[e,i]of(r.images??[]).entries())t.push(at(i,n,e));return t}function st(e){for(let t of e)Qe(t)}function ct(e){let t=e.map(e=>e.text).join(`
67
67
 
68
68
  `),n=r();i([t,n].filter(e=>e.trim()).join(`
69
69
 
70
- `))}async function lt(){let t=[];try{let n=await Q.pending(e.sessionKey);t.push(...Z(ot(n))),rt(t.reduce((e,t)=>e+t.size,0))}catch(e){st(t),P(e instanceof Error?e.message:String(e));return}st(t);let n=[],r=!1;try{let t=ot(await Q.dequeue(e.sessionKey));me({steering:[],followUp:[],steeringMessages:[],followUpMessages:[]}),ct(t);try{n.push(...Z(t)),rt(n.reduce((e,t)=>e+t.size,0))}catch(e){throw Error(`Queued image restore failed after restoring text: ${e instanceof Error?e.message:String(e)}`)}n.length>0&&(ge(e=>[...n,...e]),r=!0),queueMicrotask(()=>Ne?.focus())}catch(e){r||st(n),P(e instanceof Error?e.message:String(e))}}function ut(e){if(!e.type.startsWith(`image/`))throw Error(`Not an image: ${e.name||e.type}`);if(e.size>Zc)throw Error(`Image too large: ${e.name||e.type} exceeds 10MB`);return it(e,e.type,e.name||`image`)}async function dt(e){let t=[...e];if(t.length===0)return;let n=[];try{for(let e of t){if(!e.type.startsWith(`image/`))throw Error(`Not an image: ${e.name||e.type}`);if(e.size>Zc)throw Error(`Image too large: ${e.name||e.type} exceeds 10MB`)}rt(t.reduce((e,t)=>e+t.size,0));for(let e of t)n.push(ut(e));ge(e=>[...e,...n])}catch(e){for(let e of n)Qe(e);P(e instanceof Error?e.message:String(e))}}async function ft(e){let t=rl(e,Qc);try{return await Q.listFiles(t),t}catch{return await Q.mkdir(e,Qc),t}}async function pt(e){let t=[...e];if(t.length===0)return;let r=n()?.cwd;if(!r){P(`Cannot attach files until the runtime is loaded.`);return}P(void 0);try{let e=await ft(r),n=[];for(let[r,i]of t.entries()){let t=al(i,r),a=await Q.upload(e,new File([i],t,{type:i.type}),!1);n.push({fileName:i.name||t,size:i.size,mimeType:i.type||`application/octet-stream`,path:a.path})}ve(e=>[...e,...n])}catch(e){P(e instanceof Error?e.message:String(e))}}async function mt(){Se(!0),Ee(void 0),we([]);try{let{messages:t}=await Q.forkMessages(e.sessionKey);we(t)}catch(e){Ee(e instanceof Error?e.message:String(e))}}async function ht(t){Ee(void 0);try{let n=await Q.fork(e.sessionKey,t);n.cancelled||i(n.text),await e.store.hydrateSession(e.sessionKey),await e.store.refreshDiskSessions(),Se(!1)}catch(e){Ee(e instanceof Error?e.message:String(e))}}async function gt(){Oe(!0),J(void 0);try{B(await Q.stats(e.sessionKey))}catch(e){J(e instanceof Error?e.message:String(e))}}R(()=>{let t=new AbortController;e.store.hydrateSession(e.sessionKey,t.signal).catch(e=>{t.signal.aborted&&Es(e)||P(e instanceof Error?e.message:String(e))}),Ge(!0),Ke(),Je();let n=setInterval(()=>void Ge(!1),5e3);z(()=>{Re=!0,t.abort(),clearInterval(n)})});let _t=e=>{if(!De())return;let t=e.target;t&&Le?.contains(t)||Oe(!1)},vt=e=>{e.key===`Escape`&&Oe(!1)};document.addEventListener(`mousedown`,_t),document.addEventListener(`keydown`,vt),z(()=>{document.removeEventListener(`mousedown`,_t),document.removeEventListener(`keydown`,vt)});let yt=setInterval(()=>{let e=t()?.workingSince;I(e?Math.floor((Date.now()-e)/1e3):0)},1e3);z(()=>{clearInterval(yt),We.dispose(),$e()}),M(()=>{let e=t()?.composerPrefill;e&&i(e)}),M(()=>{r(),Ne&&queueMicrotask(()=>Ne&&ll(Ne))}),M(()=>{e.store.revisions[e.sessionKey],t()?.entries.length,We.notifyContentChanged()}),R(()=>{We.observeContent(Me),We.observeViewport(Ae),Ae&&z(oo(We,Ae,{keyboard:`window`}))});let bt=!1;M(()=>{let e=ze();bt&&!e&&Ge(!0),bt!==e&&Je(),bt=e}),M(()=>{n()?.state.pendingMessageCount,Je()}),M(()=>{As(e.sessionKey,r())});function xt(e){let t=[];return _e().length>0&&t.push([`Attached files uploaded to the host (paths only; inspect deliberately if needed):`,..._e().map(e=>`- ${e.path} (${e.fileName}, ${ol(e.size)}, ${e.mimeType||`unknown type`})`)].join(`
71
- `)),he().length>0&&t.push([`Attached images included inline with this turn:`,...he().map((e,t)=>`- image ${t+1}: ${e.fileName} (${ol(e.size)}, ${e.mimeType})`)].join(`
70
+ `))}async function lt(){let t=[];try{let n=await Q.pending(e.sessionKey);t.push(...Z(ot(n))),rt(t.reduce((e,t)=>e+t.size,0))}catch(e){st(t),P(e instanceof Error?e.message:String(e));return}st(t);let n=[],r=!1;try{let t=ot(await Q.dequeue(e.sessionKey));me({steering:[],followUp:[],steeringMessages:[],followUpMessages:[]}),ct(t);try{n.push(...Z(t)),rt(n.reduce((e,t)=>e+t.size,0))}catch(e){throw Error(`Queued image restore failed after restoring text: ${e instanceof Error?e.message:String(e)}`)}n.length>0&&(ge(e=>[...n,...e]),r=!0),queueMicrotask(()=>Ne?.focus())}catch(e){r||st(n),P(e instanceof Error?e.message:String(e))}}function ut(e){if(!e.type.startsWith(`image/`))throw Error(`Not an image: ${e.name||e.type}`);if(e.size>tl)throw Error(`Image too large: ${e.name||e.type} exceeds 10MB`);return it(e,e.type,e.name||`image`)}async function dt(e){let t=[...e];if(t.length===0)return;let n=[];try{for(let e of t){if(!e.type.startsWith(`image/`))throw Error(`Not an image: ${e.name||e.type}`);if(e.size>tl)throw Error(`Image too large: ${e.name||e.type} exceeds 10MB`)}rt(t.reduce((e,t)=>e+t.size,0));for(let e of t)n.push(ut(e));ge(e=>[...e,...n])}catch(e){for(let e of n)Qe(e);P(e instanceof Error?e.message:String(e))}}async function ft(e){let t=sl(e,nl);try{return await Q.listFiles(t),t}catch{return await Q.mkdir(e,nl),t}}async function pt(e){let t=[...e];if(t.length===0)return;let r=n()?.cwd;if(!r){P(`Cannot attach files until the runtime is loaded.`);return}P(void 0);try{let e=await ft(r),n=[];for(let[r,i]of t.entries()){let t=ll(i,r),a=await Q.upload(e,new File([i],t,{type:i.type}),!1);n.push({fileName:i.name||t,size:i.size,mimeType:i.type||`application/octet-stream`,path:a.path})}ve(e=>[...e,...n])}catch(e){P(e instanceof Error?e.message:String(e))}}async function mt(){Se(!0),Ee(void 0),we([]);try{let{messages:t}=await Q.forkMessages(e.sessionKey);we(t)}catch(e){Ee(e instanceof Error?e.message:String(e))}}async function ht(t){Ee(void 0);try{let n=await Q.fork(e.sessionKey,t);n.cancelled||i(n.text),await e.store.hydrateSession(e.sessionKey),await e.store.refreshDiskSessions(),Se(!1)}catch(e){Ee(e instanceof Error?e.message:String(e))}}async function gt(){Oe(!0),J(void 0);try{B(await Q.stats(e.sessionKey))}catch(e){J(e instanceof Error?e.message:String(e))}}R(()=>{let t=new AbortController;e.store.hydrateSession(e.sessionKey,t.signal).catch(e=>{t.signal.aborted&&As(e)||P(e instanceof Error?e.message:String(e))}),Ge(!0),Ke(),Je();let n=setInterval(()=>void Ge(!1),5e3);z(()=>{Re=!0,t.abort(),clearInterval(n)})});let _t=e=>{if(!De())return;let t=e.target;t&&Le?.contains(t)||Oe(!1)},vt=e=>{e.key===`Escape`&&Oe(!1)};document.addEventListener(`mousedown`,_t),document.addEventListener(`keydown`,vt),z(()=>{document.removeEventListener(`mousedown`,_t),document.removeEventListener(`keydown`,vt)});let yt=setInterval(()=>{let e=t()?.workingSince;I(e?Math.floor((Date.now()-e)/1e3):0)},1e3);z(()=>{clearInterval(yt),We.dispose(),$e()}),M(()=>{let e=t()?.composerPrefill;e&&i(e)}),M(()=>{r(),Ne&&queueMicrotask(()=>Ne&&pl(Ne))}),M(()=>{e.store.revisions[e.sessionKey],t()?.entries.length,We.notifyContentChanged()}),R(()=>{We.observeContent(Me),We.observeViewport(Ae),Ae&&z(oo(We,Ae,{keyboard:`window`}))});let bt=!1;M(()=>{let e=ze();bt&&!e&&Ge(!0),bt!==e&&Je(),bt=e}),M(()=>{n()?.state.pendingMessageCount,Je()}),M(()=>{Ps(e.sessionKey,r())});function xt(e){let t=[];return _e().length>0&&t.push([`Attached files uploaded to the host (paths only; inspect deliberately if needed):`,..._e().map(e=>`- ${e.path} (${e.fileName}, ${ul(e.size)}, ${e.mimeType||`unknown type`})`)].join(`
71
+ `)),he().length>0&&t.push([`Attached images included inline with this turn:`,...he().map((e,t)=>`- image ${t+1}: ${e.fileName} (${ul(e.size)}, ${e.mimeType})`)].join(`
72
72
  `)),[e,...t].filter(e=>e.trim()).join(`
73
73
 
74
- `)}async function St(){let t=r().trim();if(!t&&_e().length===0&&he().length===0)return;let n=xt(t||`Please review the attached item(s). `);P(void 0);try{let t=he(),r=t.length>0?await Promise.all(t.map(async({blob:e,mimeType:t})=>({data:await Ze(e),mimeType:t}))):void 0;ze()?await Q.prompt(e.sessionKey,n,a(),r):r?await Q.prompt(e.sessionKey,n,void 0,r):await Q.prompt(e.sessionKey,n),Ms(e.sessionKey,n),be(void 0),i(``),$e(),ve([]),Je()}catch(e){P(e instanceof Error?e.message:String(e))}}async function Ct(){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 wt(){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 Tt(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 Et(e){Ae?.querySelectorAll(`details.tool`).forEach(t=>{t.open=e})}let Dt=()=>Object.values(t()?.backgroundAgents??{}).filter(e=>e.status===`running`),Ot=()=>Object.values(t()?.backgroundAgents??{}).filter(e=>e.status!==`running`),kt=()=>t()?.tasks??[],At=()=>kt().filter(e=>e.status===`completed`).length,jt=()=>n()?.state.contextUsage??L()?.contextUsage,Mt=()=>typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 700px)`).matches,Nt=()=>t()?.sessionName??n()?.state.sessionName,Pt=()=>Nt()??t()?.title??e.sessionKey,Ft=()=>{let e=n()?.cwd;if(!e)return;let t=ne();return`${nl(e)}${t?` (${t})`:``}`},It=()=>{let e=Ft(),t=Nt();return e&&t?`${e} • ${t}`:e??t??`session`},Lt=()=>{let e=L()?.tokens;if(!e)return;let t=[];return e.input&&t.push(`↑${tl(e.input)}`),e.output&&t.push(`↓${tl(e.output)}`),e.cacheRead&&t.push(`R${tl(e.cacheRead)}`),e.cacheWrite&&t.push(`W${tl(e.cacheWrite)}`),t.length>0?t.join(` `):void 0},Rt=()=>{let e=L()?.cost??0,t=n()?.state.usingSubscription??!1;if(!e&&!t)return;let r=`$${e.toFixed(3)}${t?` (sub)`:``}`,i=ie();return i!==void 0&&i>e&&(r+=`, today: $${i.toFixed(2)}`),r},zt=()=>{let e=jt();if(e)return`ctx ${e.percent===null?`?`:`${e.percent.toFixed(0)}%`}/${tl(e.contextWindow)}`},Bt=()=>{let e=n()?.state.model;if(!e)return;let t=ee()?.models.find(t=>t.provider===e.provider&&t.modelId===e.id);if(!(!t||t.count<3))return`${Math.round(t.median)} tok/s`},Vt=()=>[Lt(),Rt(),zt(),Bt()].filter(Boolean),Ht=()=>[...(pe().steeringMessages??pe().steering.map(e=>({text:e}))).map(e=>({kind:`steer`,text:e.images?.length?`${e.text} (${e.images.length} image(s))`:e.text})),...(pe().followUpMessages??pe().followUp.map(e=>({text:e}))).map(e=>({kind:`follow-up`,text:e.images?.length?`${e.text} (${e.images.length} image(s))`:e.text}))],Ut=()=>{let e=r();if(oe()||!e.startsWith(`/`))return;let t=e.slice(1);if(!/\s/.test(t))return t.toLowerCase()},Wt=N(()=>{let e=Ut();return e===void 0?[]:ae().filter(t=>{let n=t.name.toLowerCase();return!e||n.startsWith(e)||n.includes(e)}).sort((t,n)=>!t.name.toLowerCase().startsWith(e)-+!n.name.toLowerCase().startsWith(e)||t.name.localeCompare(n.name)).slice(0,8)}),Gt=()=>Wt().length>0,Kt=e=>{i(`/${e.name} `),U(!0),queueMicrotask(()=>Ne?.focus())};return M(()=>{let e=Wt().length;se()>=e&&ce(Math.max(0,e-1))}),(()=>{var c=Mc(),u=c.firstChild,k=u.firstChild,M=k.firstChild.nextSibling,N=M.nextSibling,I=u.nextSibling,R=I.firstChild,z=I.nextSibling,B=z.firstChild,ee=B.firstChild;X(M,Pt),X(k,W(K,{get when(){return!h()},get children(){var e=sc();return X(e,(()=>{var e=q(()=>!!n()?.cwd);return()=>e()?nl(n().cwd):void 0})()),e}}),N),X(k,W(tt,{get store(){return e.store},class:`session-connection-indicator`}),N),X(k,W(K,{get when(){return!h()},get children(){var t=lc(),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,()=>$c(n()?.state.model)),a.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=Xc[(Xc.indexOf(t)+1)%Xc.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 jt()},get children(){var e=cc();return e.firstChild.nextSibling,X(e,(()=>{var e=q(()=>jt().percent===null);return()=>e()?`?`:`${jt().percent.toFixed(0)}%`})(),null),e}}),o),o.$$click=()=>m(!p()),j(()=>Y(r,`title`,el(n()?.state.model))),t}}),N),N.$$click=()=>g(!h()),X(N,()=>h()?`details ▾`:`details ▴`),X(u,W(K,{get when(){return!h()},get children(){return[(()=>{var e=dc(),t=e.firstChild,n=t.nextSibling;return X(t,It),n.$$click=gt,X(n,W(G,{get each(){return Vt()},children:e=>(()=>{var t=Nc();return X(t,e),t})()})),X(e,W(K,{get when(){return De()},get children(){var e=uc(),t=Le;return typeof t==`function`?Pe(t,e):Le=e,X(e,W(K,{get when(){return ke()},get children(){var e=Gs();return X(e,ke),e}}),null),X(e,W(K,{get when(){return L()},get fallback(){return Pc()},children:e=>(()=>{var t=Fc(),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,()=>tl(e().tokens.input),s),X(o,()=>tl(e().tokens.output),null),X(c,()=>tl(e().tokens.cacheRead),l),X(c,()=>tl(e().tokens.cacheWrite),null),X(u,()=>tl(e().tokens.total)),X(d,()=>e().cost.toFixed(4),null),t})()}),null),e}}),null),e})(),W(K,{get when(){return p()},get children(){var t=mc(),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=()=>Et(!0),o.$$click=()=>Et(!1),s.$$click=()=>w(!0),c.$$click=mt,u.$$click=qe,X(t,W(K,{get when(){return Mt()},get children(){return[(()=>{var e=fc();return e.firstChild,e.$$click=()=>f(!0),X(e,()=>$c(n()?.state.model),null),e})(),(()=>{var t=pc();return t.firstChild,t.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=Xc[(Xc.indexOf(t)+1)%Xc.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=wt,X(d,()=>l()?`stopping runtime…`:`stop runtime`),j(t=>{var n=Q.exportHtmlUrl(e.sessionKey),i=l();return n!==t.e&&Y(r,`href`,t.e=n),i!==t.t&&(d.disabled=t.t=i),t},{e:void 0,t:void 0}),t}})]}}),null),X(c,W(K,{get when(){return q(()=>!!(!h()&&n()?.state.modelFallbackMessage))()&&!D()},get children(){var e=hc(),t=e.firstChild.firstChild;t.firstChild;var r=t.nextSibling;return X(t,()=>n().state.modelFallbackMessage,null),r.$$click=()=>O(!0),e}}),I);var te=Ae;typeof te==`function`?Pe(te,I):Ae=I;var ne=Me;return typeof ne==`function`?Pe(ne,R):Me=R,X(R,W(K,{get when(){return t()},get fallback(){return Ic()},get children(){return[W(G,{get each(){return t().widgets.above},children:e=>(()=>{var t=Lc();return X(t,e),t})()}),W(Ts,{get entries(){return t().entries},get resetKey(){return e.sessionKey}}),W(G,{get each(){return t().widgets.below},children:e=>(()=>{var t=Lc();return X(t,e),t})()})]}})),ee.$$click=()=>v(!_()),X(ee,()=>_()?`compose ▴`:`compose ▾`),X(B,W(K,{get when(){return _()},get children(){var e=gc();return X(e,(()=>{var e=q(()=>!!Ue());return()=>e()?`agent working — open controls to stop or steer`:q(()=>Ht().length>0)()?`${Ht().length} queued message(s)`:`composer hidden for transcript reading`})()),e}}),null),X(z,W(K,{get when(){return!_()},get children(){var n=kc(),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 kt().length>0},get children(){var e=_c(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;r.nextSibling;var i=t.nextSibling;return X(t,At,n),X(t,()=>kt().length,r),X(i,W(G,{get each(){return kt()},children:e=>(()=>{var t=Rc(),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=!Mt()),e}}),c),X(n,W(K,{get when(){return Dt().length+Ot().length>0},get children(){var t=yc(),n=t.firstChild,r=n.nextSibling,i=r.firstChild.nextSibling,a=i.nextSibling.nextSibling;return a.nextSibling,n.$$click=()=>b(!y()),X(n,()=>y()?`subagents ▴`:`subagents ▾`),X(r,()=>Dt().length,i),X(r,()=>Ot().length,a),X(t,W(K,{get when(){return y()},get children(){return vc()}}),null),X(t,W(K,{get when(){return!y()},get children(){return W(G,{get each(){return[...Dt(),...Ot()].slice(0,4)},children:t=>(()=>{var n=zc(),r=n.firstChild,i=r.nextSibling,a=i.firstChild;return n.$$click=()=>e.store.navigate({screen:`subagent`,key:e.sessionKey,agentId:t.agentId}),X(r,(()=>{var e=q(()=>t.status===`running`);return()=>e()?`●`:t.status===`completed`?`✓`:`✕`})()),X(i,()=>t.agentType,a),X(i,()=>t.taskSummary,null),j(()=>je(r,t.status===`running`?`live`:`done`)),n})()})}}),null),j(e=>{var r=!!y(),i=y()?`show subagents`:`hide subagents`;return r!==e.e&&t.classList.toggle(`collapsed`,e.e=r),i!==e.t&&Y(n,`title`,e.t=i),e},{e:void 0,t:void 0}),t}}),c),X(n,W(K,{get when(){return Ue()||(t()?.statusEntries.length??0)>0||A()},get children(){var e=Cc();return X(e,W(K,{get when(){return ze()},get children(){var e=bc();return e.firstChild,X(e,(()=>{var e=q(()=>!!t()?.workingText);return()=>e()?` — ${t().workingText}`:``})(),null),X(e,(()=>{var e=q(()=>F()>2);return()=>e()?` (${F()}s)`:``})(),null),e}}),null),X(e,W(G,{get each(){return t()?.statusEntries??[]},children:e=>(()=>{var t=Nc();return X(t,()=>e.text,null),X(t,W(K,{get when(){return e.key===`compaction`||e.key===`retry`},get children(){var t=Bc();return t.$$click=()=>Tt(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=xc();return X(e,A),e}}),null),X(e,W(K,{get when(){return Ue()},get children(){var e=Sc();return e.$$click=Ct,X(e,()=>s()?`stopping…`:`■ stop`),j(()=>e.disabled=s()),e}}),null),e}}),c),X(c,W(K,{get when(){return Ht().length>0},get children(){var e=wc(),t=e.firstChild;return X(e,W(G,{get each(){return Ht()},children:e=>(()=>{var t=Vc(),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 _e().length>0||he().length>0},get children(){var e=Tc();return X(e,W(G,{get each(){return _e()},children:(e,t)=>(()=>{var n=Hc(),r=n.firstChild;r.firstChild;var i=r.nextSibling,a=i.nextSibling;return X(r,()=>e.fileName,null),X(i,()=>ol(e.size)),a.$$click=()=>ve(e=>e.filter((e,n)=>n!==t())),j(()=>Y(n,`title`,e.path)),n})()}),null),X(e,W(G,{get each(){return he()},children:(e,t)=>(()=>{var n=Uc(),r=n.firstChild,i=r.nextSibling;return i.$$click=()=>et(t()),j(t=>{var i=`${e.fileName} (${ol(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 Gt()},get children(){var e=Ec();return X(e,W(G,{get each(){return Wt()},children:(e,t)=>(()=>{var n=Gc(),r=n.firstChild;r.firstChild;var i=r.nextSibling;return n.$$click=()=>Kt(e),n.addEventListener(`mouseenter`,()=>ce(t())),X(r,()=>e.name,null),X(n,W(K,{get when(){return e.description},get children(){var t=Wc();return X(t,()=>e.description),t}}),i),X(i,()=>e.source),j(e=>{var r=`command-option-${t()}`,i=se()===t(),a=se()===t();return r!==e.e&&Y(n,`id`,e.e=r),i!==e.t&&Y(n,`aria-selected`,e.t=i),a!==e.a&&n.classList.toggle(`selected`,e.a=a),e},{e:void 0,t:void 0,a:void 0}),n})()})),e}}),l),l.$$keydown=t=>{if(Gt()){if(t.key===`ArrowDown`){t.preventDefault(),ce((se()+1)%Wt().length);return}if(t.key===`ArrowUp`){t.preventDefault(),ce((se()-1+Wt().length)%Wt().length);return}if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey&&!Mt()){t.preventDefault();let e=Wt()[se()];e&&Kt(e);return}if(t.key===`Escape`){t.preventDefault(),U(!0);return}}if((t.key===`ArrowUp`||t.key===`ArrowDown`)&&(r()===``||ye()!==void 0)){let n=js(e.sessionKey);if(n.length>0){if(t.preventDefault(),t.key===`ArrowUp`){let e=ye()===void 0?n.length-1:Math.max(0,ye()-1);be(e),i(n[e]??``)}else if(ye()!==void 0){let e=ye()+1;e>=n.length?(be(void 0),i(``)):(be(e),i(n[e]??``))}}return}t.key===`Enter`&&!t.shiftKey&&!Mt()&&(t.preventDefault(),St())},l.$$input=e=>{U(!1),ce(0),be(void 0),i(e.currentTarget.value),ll(e.currentTarget)},l.addEventListener(`paste`,e=>{let t=[...e.clipboardData?.items??[]].filter(e=>e.type.startsWith(`image/`)).map(e=>e.getAsFile()).filter(e=>!!e);t.length>0&&(e.preventDefault(),dt(t))});var g=Ne;typeof g==`function`?Pe(g,l):Ne=l,d.addEventListener(`change`,e=>{pt(e.currentTarget.files??[]),e.currentTarget.value=``});var _=Fe;typeof _==`function`?Pe(_,d):Fe=d,f.addEventListener(`change`,e=>{dt(e.currentTarget.files??[]),e.currentTarget.value=``});var v=Ie;return typeof v==`function`?Pe(v,f):Ie=f,p.$$click=()=>Fe?.click(),m.$$click=()=>Ie?.click(),X(u,W(K,{get when(){return ze()},get children(){var e=Dc(),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=Oc(),n=e.firstChild.nextSibling;return e.$$click=()=>i(t().suggestedCommand),X(n,()=>t().suggestedCommand),e}}),h),h.$$click=St,j(e=>{var t=ze()?`Message dreb — sends as steer while it works…`:`Message dreb…`,n=Gt()?`command-listbox`:void 0,r=Gt()?`command-option-${se()}`:void 0;return t!==e.e&&Y(l,`placeholder`,e.e=t),n!==e.t&&Y(l,`aria-controls`,e.t=n),r!==e.a&&Y(l,`aria-activedescendant`,e.a=r),e},{e:void 0,t:void 0,a:void 0}),j(()=>l.value=r()),n}}),null),X(c,W(K,{get when(){return t()?.uiRequests[0]},children:t=>W(ul,{get request(){return t()},onRespond:async t=>{try{await Q.extensionUiResponse(e.sessionKey,t)}catch(e){P(e instanceof Error?e.message:String(e))}}})}),null),X(c,W(K,{get when(){return d()},get children(){return W(fl,{get sessionKey(){return e.sessionKey},get state(){return n()?.state},onClose:()=>f(!1),onSelected:t=>e.store.setRuntimeModel(e.sessionKey,t)})}}),null),X(c,W(K,{get when(){return x()},get children(){return W(nt,{title:`compact context`,onDismiss:()=>S(!1),get actions(){return[(()=>{var e=Rs();return e.$$click=()=>S(!1),e})(),(()=>{var t=Kc();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 Ac()}})}}),null),X(c,W(K,{get when(){return T()},get children(){return W(dl,{get resources(){return le()},get error(){return de()},onClose:()=>E(!1)})}}),null),X(c,W(K,{get when(){return xe()},get children(){return W(nt,{title:`fork from message`,onDismiss:()=>Se(!1),get children(){return[W(K,{get when(){return Te()},get children(){var e=Gs();return X(e,Te),e}}),W(K,{get when(){return Ce().length>0},get fallback(){return qc()},get children(){var e=jc();return X(e,W(G,{get each(){return Ce()},children:e=>(()=>{var t=Jc(),n=t.firstChild,r=n.nextSibling;return t.$$click=()=>ht(e.entryId),X(n,()=>e.entryId),X(r,()=>e.text),t})()})),e}})]}})}}),null),X(c,W(K,{get when(){return C()},get children(){return W(ml,{get current(){return Nt()??``},onClose:()=>w(!1),onRename:async t=>{try{await Q.rename(e.sessionKey,t),w(!1)}catch(e){P(e instanceof Error?e.message:String(e))}}})}}),null),j(e=>{var t=!!h(),n=h()?`show session details`:`hide session details`,r=!!_(),i=_()?`show composer and controls`:`hide composer and controls`;return t!==e.e&&u.classList.toggle(`collapsed`,e.e=t),n!==e.t&&Y(N,`title`,e.t=n),r!==e.a&&z.classList.toggle(`collapsed`,e.a=r),i!==e.o&&Y(ee,`title`,e.o=i),e},{e:void 0,t:void 0,a:void 0,o:void 0}),c})()}function ml(e){let[t,n]=k(e.current);return W(nt,{title:`rename session`,get onDismiss(){return e.onClose},get actions(){return[(()=>{var t=Rs();return Me(t,`click`,e.onClose,!0),t})(),(()=>{var n=Yc();return n.$$click=()=>e.onRename(t().trim()),j(()=>n.disabled=!t().trim()),n})()]},get children(){var e=Is(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e}})}Ae([`input`,`click`,`keydown`]);var hl=[{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)`}],gl=hl.map(e=>e.id),_l=[`system`,`light`,`dark`],vl=`dreb.dashboard.theme`,yl=`dreb.dashboard.colorMode`,bl=`default`,xl=`system`;function Sl(e){return typeof e==`string`&&gl.includes(e)}function Cl(e){return typeof e==`string`&&_l.includes(e)}function wl(){if(typeof window>`u`)return bl;try{let e=window.localStorage.getItem(vl);return Sl(e)?e:bl}catch{return bl}}function Tl(){if(typeof window>`u`)return xl;try{let e=window.localStorage.getItem(yl);return Cl(e)?e:xl}catch{return xl}}function El(e,t,n){if(!(typeof window>`u`))try{t===n?window.localStorage.removeItem(e):window.localStorage.setItem(e,t)}catch{}}var[Dl,Ol]=k(wl()),[kl,Al]=k(Tl()),jl=Dl,Ml=kl;function Nl(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 Pl(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=t.documentElement;if(!n)return;let r=Dl(),i=kl();if(r===bl?n.removeAttribute(`data-theme`):n.setAttribute(`data-theme`,r),i===xl?n.removeAttribute(`data-color-mode`):n.setAttribute(`data-color-mode`,i),!(r!==bl||i!==xl))n.style.removeProperty(`color-scheme`);else{let e=i===`light`?`light`:i===`dark`?`dark`:`light dark`;n.style.setProperty(`color-scheme`,e)}}catch{}}function Fl(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=Nl(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 Il(e){let t=Sl(e)?e:bl;Ol(t),El(vl,t,bl),Pl(),Fl()}function Ll(e){let t=Cl(e)?e:xl;Al(t),El(yl,t,xl),Pl(),Fl()}var Rl=null,zl=!1;function Bl(){kl()===xl&&Fl()}function Vl(e){e.key!==null&&e.key!==`dreb.dashboard.theme`&&e.key!==`dreb.dashboard.colorMode`||Hl()}function Hl(){Ol(wl()),Al(Tl()),Pl(),Fl()}function Ul(){if(!(typeof window>`u`)){try{typeof window.matchMedia==`function`&&(Rl=window.matchMedia(`(prefers-color-scheme: dark)`),typeof Rl.addEventListener==`function`?Rl.addEventListener(`change`,Bl):typeof Rl.addListener==`function`&&Rl.addListener(Bl))}catch{}try{window.addEventListener(`storage`,Vl)}catch{}}}function Wl(){Hl(),!zl&&(zl=!0,Ul())}var Gl=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>`),Kl=J(`<option>`),ql=J(`<button type=button class=theme-card><div class=theme-card-preview><div class=theme-card-swatch><span class=theme-card-name></span><span class=theme-card-muted>The quick brown fox.</span></div><div class=theme-card-chips></div><pre class=theme-card-code><code class=hljs><span class=hljs-keyword>const</span> <span class=hljs-variable>count</span><span class=hljs-operator> = </span><span class=hljs-number>42</span><span class=hljs-punctuation>;</span>
74
+ `)}async function St(){let t=r().trim();if(!t&&_e().length===0&&he().length===0)return;let n=xt(t||`Please review the attached item(s). `);P(void 0);try{let t=he(),r=t.length>0?await Promise.all(t.map(async({blob:e,mimeType:t})=>({data:await Ze(e),mimeType:t}))):void 0;ze()?await Q.prompt(e.sessionKey,n,a(),r):r?await Q.prompt(e.sessionKey,n,void 0,r):await Q.prompt(e.sessionKey,n),Is(e.sessionKey,n),be(void 0),i(``),$e(),ve([]),Je()}catch(e){P(e instanceof Error?e.message:String(e))}}async function Ct(){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 wt(){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 Tt(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 Et(e){Ae?.querySelectorAll(`details.tool`).forEach(t=>{t.open=e})}let Dt=()=>Object.values(t()?.backgroundAgents??{}).filter(e=>e.status===`running`),Ot=()=>Object.values(t()?.backgroundAgents??{}).filter(e=>e.status!==`running`),kt=()=>t()?.tasks??[],At=()=>kt().filter(e=>e.status===`completed`).length,jt=()=>n()?.state.contextUsage??L()?.contextUsage,Mt=()=>typeof window.matchMedia==`function`&&window.matchMedia(`(max-width: 700px)`).matches,Nt=()=>t()?.sessionName??n()?.state.sessionName,Pt=()=>Nt()??t()?.title??e.sessionKey,Ft=()=>{let e=n()?.cwd;if(!e)return;let t=ne();return`${ol(e)}${t?` (${t})`:``}`},It=()=>{let e=Ft(),t=Nt();return e&&t?`${e} • ${t}`:e??t??`session`},Lt=()=>{let e=L()?.tokens;if(!e)return;let t=[];return e.input&&t.push(`↑${al(e.input)}`),e.output&&t.push(`↓${al(e.output)}`),e.cacheRead&&t.push(`R${al(e.cacheRead)}`),e.cacheWrite&&t.push(`W${al(e.cacheWrite)}`),t.length>0?t.join(` `):void 0},Rt=()=>{let e=L()?.cost??0,t=n()?.state.usingSubscription??!1;if(!e&&!t)return;let r=`$${e.toFixed(3)}${t?` (sub)`:``}`,i=ie();return i!==void 0&&i>e&&(r+=`, today: $${i.toFixed(2)}`),r},zt=()=>{let e=jt();if(e)return`ctx ${e.percent===null?`?`:`${e.percent.toFixed(0)}%`}/${al(e.contextWindow)}`},Bt=()=>{let e=n()?.state.model;if(!e)return;let t=ee()?.models.find(t=>t.provider===e.provider&&t.modelId===e.id);if(!(!t||t.count<3))return`${Math.round(t.median)} tok/s`},Vt=()=>[Lt(),Rt(),zt(),Bt()].filter(Boolean),Ht=()=>[...(pe().steeringMessages??pe().steering.map(e=>({text:e}))).map(e=>({kind:`steer`,text:e.images?.length?`${e.text} (${e.images.length} image(s))`:e.text})),...(pe().followUpMessages??pe().followUp.map(e=>({text:e}))).map(e=>({kind:`follow-up`,text:e.images?.length?`${e.text} (${e.images.length} image(s))`:e.text}))],Ut=()=>{let e=r();if(oe()||!e.startsWith(`/`))return;let t=e.slice(1);if(!/\s/.test(t))return t.toLowerCase()},Wt=N(()=>{let e=Ut();return e===void 0?[]:ae().filter(t=>{let n=t.name.toLowerCase();return!e||n.startsWith(e)||n.includes(e)}).sort((t,n)=>!t.name.toLowerCase().startsWith(e)-+!n.name.toLowerCase().startsWith(e)||t.name.localeCompare(n.name)).slice(0,8)}),Gt=()=>Wt().length>0,Kt=e=>{i(`/${e.name} `),U(!0),queueMicrotask(()=>Ne?.focus())};return M(()=>{let e=Wt().length;se()>=e&&ce(Math.max(0,e-1))}),(()=>{var c=Ic(),u=c.firstChild,k=u.firstChild,M=k.firstChild.nextSibling,N=M.nextSibling,I=u.nextSibling,R=I.firstChild,z=I.nextSibling,B=z.firstChild,ee=B.firstChild;X(M,Pt),X(k,W(K,{get when(){return!h()},get children(){var e=dc();return X(e,(()=>{var e=q(()=>!!n()?.cwd);return()=>e()?ol(n().cwd):void 0})()),e}}),N),X(k,W(tt,{get store(){return e.store},class:`session-connection-indicator`}),N),X(k,W(K,{get when(){return!h()},get children(){var t=pc(),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,()=>rl(n()?.state.model)),a.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=el[(el.indexOf(t)+1)%el.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 jt()},get children(){var e=fc();return e.firstChild.nextSibling,X(e,(()=>{var e=q(()=>jt().percent===null);return()=>e()?`?`:`${jt().percent.toFixed(0)}%`})(),null),e}}),o),o.$$click=()=>m(!p()),j(()=>Y(r,`title`,il(n()?.state.model))),t}}),N),N.$$click=()=>g(!h()),X(N,()=>h()?`details ▾`:`details ▴`),X(u,W(K,{get when(){return!h()},get children(){return[(()=>{var e=hc(),t=e.firstChild,n=t.nextSibling;return X(t,It),n.$$click=gt,X(n,W(G,{get each(){return Vt()},children:e=>(()=>{var t=Lc();return X(t,e),t})()})),X(e,W(K,{get when(){return De()},get children(){var e=mc(),t=Le;return typeof t==`function`?Pe(t,e):Le=e,X(e,W(K,{get when(){return ke()},get children(){var e=Ys();return X(e,ke),e}}),null),X(e,W(K,{get when(){return L()},get fallback(){return Rc()},children:e=>(()=>{var t=zc(),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,()=>al(e().tokens.input),s),X(o,()=>al(e().tokens.output),null),X(c,()=>al(e().tokens.cacheRead),l),X(c,()=>al(e().tokens.cacheWrite),null),X(u,()=>al(e().tokens.total)),X(d,()=>e().cost.toFixed(4),null),t})()}),null),e}}),null),e})(),W(K,{get when(){return p()},get children(){var t=vc(),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=()=>Et(!0),o.$$click=()=>Et(!1),s.$$click=()=>w(!0),c.$$click=mt,u.$$click=qe,X(t,W(K,{get when(){return Mt()},get children(){return[(()=>{var e=gc();return e.firstChild,e.$$click=()=>f(!0),X(e,()=>rl(n()?.state.model),null),e})(),(()=>{var t=_c();return t.firstChild,t.$$click=async()=>{let t=n()?.state.thinkingLevel??`off`,r=el[(el.indexOf(t)+1)%el.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=wt,X(d,()=>l()?`stopping runtime…`:`stop runtime`),j(t=>{var n=Q.exportHtmlUrl(e.sessionKey),i=l();return n!==t.e&&Y(r,`href`,t.e=n),i!==t.t&&(d.disabled=t.t=i),t},{e:void 0,t:void 0}),t}})]}}),null),X(c,W(K,{get when(){return q(()=>!!(!h()&&n()?.state.modelFallbackMessage))()&&!D()},get children(){var e=yc(),t=e.firstChild.firstChild;t.firstChild;var r=t.nextSibling;return X(t,()=>n().state.modelFallbackMessage,null),r.$$click=()=>O(!0),e}}),I);var te=Ae;typeof te==`function`?Pe(te,I):Ae=I;var ne=Me;return typeof ne==`function`?Pe(ne,R):Me=R,X(R,W(K,{get when(){return t()},get fallback(){return Bc()},get children(){return[W(G,{get each(){return t().widgets.above},children:e=>(()=>{var t=Vc();return X(t,e),t})()}),W(ks,{get entries(){return t().entries},get resetKey(){return e.sessionKey}}),W(G,{get each(){return t().widgets.below},children:e=>(()=>{var t=Vc();return X(t,e),t})()})]}})),ee.$$click=()=>v(!_()),X(ee,()=>_()?`compose ▴`:`compose ▾`),X(B,W(K,{get when(){return _()},get children(){var e=bc();return X(e,(()=>{var e=q(()=>!!Ue());return()=>e()?`agent working — open controls to stop or steer`:q(()=>Ht().length>0)()?`${Ht().length} queued message(s)`:`composer hidden for transcript reading`})()),e}}),null),X(z,W(K,{get when(){return!_()},get children(){var n=Nc(),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 kt().length>0},get children(){var e=xc(),t=e.firstChild,n=t.firstChild.nextSibling,r=n.nextSibling.nextSibling;r.nextSibling;var i=t.nextSibling;return X(t,At,n),X(t,()=>kt().length,r),X(i,W(G,{get each(){return kt()},children:e=>(()=>{var t=Hc(),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=!Mt()),e}}),c),X(n,W(K,{get when(){return Dt().length+Ot().length>0},get children(){var t=Cc(),n=t.firstChild,r=n.nextSibling,i=r.firstChild.nextSibling,a=i.nextSibling.nextSibling;return a.nextSibling,n.$$click=()=>b(!y()),X(n,()=>y()?`subagents ▴`:`subagents ▾`),X(r,()=>Dt().length,i),X(r,()=>Ot().length,a),X(t,W(K,{get when(){return y()},get children(){return Sc()}}),null),X(t,W(K,{get when(){return!y()},get children(){return W(G,{get each(){return[...Dt(),...Ot()].slice(0,4)},children:t=>(()=>{var n=Uc(),r=n.firstChild,i=r.nextSibling,a=i.firstChild;return n.$$click=()=>e.store.navigate({screen:`subagent`,key:e.sessionKey,agentId:t.agentId}),X(r,(()=>{var e=q(()=>t.status===`running`);return()=>e()?`●`:t.status===`completed`?`✓`:`✕`})()),X(i,()=>t.agentType,a),X(i,()=>t.taskSummary,null),j(()=>je(r,t.status===`running`?`live`:`done`)),n})()})}}),null),j(e=>{var r=!!y(),i=y()?`show subagents`:`hide subagents`;return r!==e.e&&t.classList.toggle(`collapsed`,e.e=r),i!==e.t&&Y(n,`title`,e.t=i),e},{e:void 0,t:void 0}),t}}),c),X(n,W(K,{get when(){return Ue()||(t()?.statusEntries.length??0)>0||A()},get children(){var e=Dc();return X(e,W(K,{get when(){return ze()},get children(){var e=wc();return e.firstChild,X(e,(()=>{var e=q(()=>!!t()?.workingText);return()=>e()?` — ${t().workingText}`:``})(),null),X(e,(()=>{var e=q(()=>F()>2);return()=>e()?` (${F()}s)`:``})(),null),e}}),null),X(e,W(G,{get each(){return t()?.statusEntries??[]},children:e=>(()=>{var t=Lc();return X(t,()=>e.text,null),X(t,W(K,{get when(){return e.key===`compaction`||e.key===`retry`},get children(){var t=Wc();return t.$$click=()=>Tt(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=Tc();return X(e,A),e}}),null),X(e,W(K,{get when(){return Ue()},get children(){var e=Ec();return e.$$click=Ct,X(e,()=>s()?`stopping…`:`■ stop`),j(()=>e.disabled=s()),e}}),null),e}}),c),X(c,W(K,{get when(){return Ht().length>0},get children(){var e=Oc(),t=e.firstChild;return X(e,W(G,{get each(){return Ht()},children:e=>(()=>{var t=Gc(),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 _e().length>0||he().length>0},get children(){var e=kc();return X(e,W(G,{get each(){return _e()},children:(e,t)=>(()=>{var n=Kc(),r=n.firstChild;r.firstChild;var i=r.nextSibling,a=i.nextSibling;return X(r,()=>e.fileName,null),X(i,()=>ul(e.size)),a.$$click=()=>ve(e=>e.filter((e,n)=>n!==t())),j(()=>Y(n,`title`,e.path)),n})()}),null),X(e,W(G,{get each(){return he()},children:(e,t)=>(()=>{var n=qc(),r=n.firstChild,i=r.nextSibling;return i.$$click=()=>et(t()),j(t=>{var i=`${e.fileName} (${ul(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 Gt()},get children(){var e=Ac();return X(e,W(G,{get each(){return Wt()},children:(e,t)=>(()=>{var n=Yc(),r=n.firstChild;r.firstChild;var i=r.nextSibling;return n.$$click=()=>Kt(e),n.addEventListener(`mouseenter`,()=>ce(t())),X(r,()=>e.name,null),X(n,W(K,{get when(){return e.description},get children(){var t=Jc();return X(t,()=>e.description),t}}),i),X(i,()=>e.source),j(e=>{var r=`command-option-${t()}`,i=se()===t(),a=se()===t();return r!==e.e&&Y(n,`id`,e.e=r),i!==e.t&&Y(n,`aria-selected`,e.t=i),a!==e.a&&n.classList.toggle(`selected`,e.a=a),e},{e:void 0,t:void 0,a:void 0}),n})()})),e}}),l),l.$$keydown=t=>{if(Gt()){if(t.key===`ArrowDown`){t.preventDefault(),ce((se()+1)%Wt().length);return}if(t.key===`ArrowUp`){t.preventDefault(),ce((se()-1+Wt().length)%Wt().length);return}if(t.key===`Tab`||t.key===`Enter`&&!t.shiftKey&&!Mt()){t.preventDefault();let e=Wt()[se()];e&&Kt(e);return}if(t.key===`Escape`){t.preventDefault(),U(!0);return}}if((t.key===`ArrowUp`||t.key===`ArrowDown`)&&(r()===``||ye()!==void 0)){let n=Fs(e.sessionKey);if(n.length>0){if(t.preventDefault(),t.key===`ArrowUp`){let e=ye()===void 0?n.length-1:Math.max(0,ye()-1);be(e),i(n[e]??``)}else if(ye()!==void 0){let e=ye()+1;e>=n.length?(be(void 0),i(``)):(be(e),i(n[e]??``))}}return}t.key===`Enter`&&!t.shiftKey&&!Mt()&&(t.preventDefault(),St())},l.$$input=e=>{U(!1),ce(0),be(void 0),i(e.currentTarget.value),pl(e.currentTarget)},l.addEventListener(`paste`,e=>{let t=[...e.clipboardData?.items??[]].filter(e=>e.type.startsWith(`image/`)).map(e=>e.getAsFile()).filter(e=>!!e);t.length>0&&(e.preventDefault(),dt(t))});var g=Ne;typeof g==`function`?Pe(g,l):Ne=l,d.addEventListener(`change`,e=>{pt(e.currentTarget.files??[]),e.currentTarget.value=``});var _=Fe;typeof _==`function`?Pe(_,d):Fe=d,f.addEventListener(`change`,e=>{dt(e.currentTarget.files??[]),e.currentTarget.value=``});var v=Ie;return typeof v==`function`?Pe(v,f):Ie=f,p.$$click=()=>Fe?.click(),m.$$click=()=>Ie?.click(),X(u,W(K,{get when(){return ze()},get children(){var e=jc(),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=Mc(),n=e.firstChild.nextSibling;return e.$$click=()=>i(t().suggestedCommand),X(n,()=>t().suggestedCommand),e}}),h),h.$$click=St,j(e=>{var t=ze()?`Message dreb — sends as steer while it works…`:`Message dreb…`,n=Gt()?`command-listbox`:void 0,r=Gt()?`command-option-${se()}`:void 0;return t!==e.e&&Y(l,`placeholder`,e.e=t),n!==e.t&&Y(l,`aria-controls`,e.t=n),r!==e.a&&Y(l,`aria-activedescendant`,e.a=r),e},{e:void 0,t:void 0,a:void 0}),j(()=>l.value=r()),n}}),null),X(c,W(K,{get when(){return t()?.uiRequests[0]},children:t=>W(ml,{get request(){return t()},onRespond:async t=>{try{await Q.extensionUiResponse(e.sessionKey,t)}catch(e){P(e instanceof Error?e.message:String(e))}}})}),null),X(c,W(K,{get when(){return d()},get children(){return W(gl,{get sessionKey(){return e.sessionKey},get state(){return n()?.state},onClose:()=>f(!1),onSelected:t=>e.store.setRuntimeModel(e.sessionKey,t)})}}),null),X(c,W(K,{get when(){return x()},get children(){return W(nt,{title:`compact context`,onDismiss:()=>S(!1),get actions(){return[(()=>{var e=Hs();return e.$$click=()=>S(!1),e})(),(()=>{var t=Xc();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 Pc()}})}}),null),X(c,W(K,{get when(){return T()},get children(){return W(hl,{get resources(){return le()},get error(){return de()},onClose:()=>E(!1)})}}),null),X(c,W(K,{get when(){return xe()},get children(){return W(nt,{title:`fork from message`,onDismiss:()=>Se(!1),get children(){return[W(K,{get when(){return Te()},get children(){var e=Ys();return X(e,Te),e}}),W(K,{get when(){return Ce().length>0},get fallback(){return Zc()},get children(){var e=Fc();return X(e,W(G,{get each(){return Ce()},children:e=>(()=>{var t=Qc(),n=t.firstChild,r=n.nextSibling;return t.$$click=()=>ht(e.entryId),X(n,()=>e.entryId),X(r,()=>e.text),t})()})),e}})]}})}}),null),X(c,W(K,{get when(){return C()},get children(){return W(vl,{get current(){return Nt()??``},onClose:()=>w(!1),onRename:async t=>{try{await Q.rename(e.sessionKey,t),w(!1)}catch(e){P(e instanceof Error?e.message:String(e))}}})}}),null),j(e=>{var t=!!h(),n=h()?`show session details`:`hide session details`,r=!!_(),i=_()?`show composer and controls`:`hide composer and controls`;return t!==e.e&&u.classList.toggle(`collapsed`,e.e=t),n!==e.t&&Y(N,`title`,e.t=n),r!==e.a&&z.classList.toggle(`collapsed`,e.a=r),i!==e.o&&Y(ee,`title`,e.o=i),e},{e:void 0,t:void 0,a:void 0,o:void 0}),c})()}function vl(e){let[t,n]=k(e.current);return W(nt,{title:`rename session`,get onDismiss(){return e.onClose},get actions(){return[(()=>{var t=Hs();return Me(t,`click`,e.onClose,!0),t})(),(()=>{var n=$c();return n.$$click=()=>e.onRename(t().trim()),j(()=>n.disabled=!t().trim()),n})()]},get children(){var e=Bs(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e}})}Ae([`input`,`click`,`keydown`]);var yl=[{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)`}],bl=yl.map(e=>e.id),xl=[`system`,`light`,`dark`],Sl=`dreb.dashboard.theme`,Cl=`dreb.dashboard.colorMode`,wl=`default`,Tl=`system`;function El(e){return typeof e==`string`&&bl.includes(e)}function Dl(e){return typeof e==`string`&&xl.includes(e)}function Ol(){if(typeof window>`u`)return wl;try{let e=window.localStorage.getItem(Sl);return El(e)?e:wl}catch{return wl}}function kl(){if(typeof window>`u`)return Tl;try{let e=window.localStorage.getItem(Cl);return Dl(e)?e:Tl}catch{return Tl}}function Al(e,t,n){if(!(typeof window>`u`))try{t===n?window.localStorage.removeItem(e):window.localStorage.setItem(e,t)}catch{}}var[jl,Ml]=k(Ol()),[Nl,Pl]=k(kl()),Fl=jl,Il=Nl;function Ll(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 Rl(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=t.documentElement;if(!n)return;let r=jl(),i=Nl();if(r===wl?n.removeAttribute(`data-theme`):n.setAttribute(`data-theme`,r),i===Tl?n.removeAttribute(`data-color-mode`):n.setAttribute(`data-color-mode`,i),!(r!==wl||i!==Tl))n.style.removeProperty(`color-scheme`);else{let e=i===`light`?`light`:i===`dark`?`dark`:`light dark`;n.style.setProperty(`color-scheme`,e)}}catch{}}function zl(e){try{let t=e??(typeof document<`u`?document:void 0);if(!t)return;let n=Ll(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 Bl(e){let t=El(e)?e:wl;Ml(t),Al(Sl,t,wl),Rl(),zl()}function Vl(e){let t=Dl(e)?e:Tl;Pl(t),Al(Cl,t,Tl),Rl(),zl()}var Hl=null,Ul=!1;function Wl(){Nl()===Tl&&zl()}function Gl(e){e.key!==null&&e.key!==`dreb.dashboard.theme`&&e.key!==`dreb.dashboard.colorMode`||Kl()}function Kl(){Ml(Ol()),Pl(kl()),Rl(),zl()}function ql(){if(!(typeof window>`u`)){try{typeof window.matchMedia==`function`&&(Hl=window.matchMedia(`(prefers-color-scheme: dark)`),typeof Hl.addEventListener==`function`?Hl.addEventListener(`change`,Wl):typeof Hl.addListener==`function`&&Hl.addListener(Wl))}catch{}try{window.addEventListener(`storage`,Gl)}catch{}}}function Jl(){Kl(),!Ul&&(Ul=!0,ql())}var Yl=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>`),Xl=J(`<option>`),Zl=J(`<button type=button class=theme-card><div class=theme-card-preview><div class=theme-card-swatch><span class=theme-card-name></span><span class=theme-card-muted>The quick brown fox.</span></div><div class=theme-card-chips></div><pre class=theme-card-code><code class=hljs><span class=hljs-keyword>const</span> <span class=hljs-variable>count</span><span class=hljs-operator> = </span><span class=hljs-number>42</span><span class=hljs-punctuation>;</span>
75
75
  <span class=hljs-comment>// preview</span>
76
- <span class=hljs-function>render</span><span class=hljs-punctuation>(</span><span class=hljs-string>"ok"</span><span class=hljs-punctuation>)</span><span class=hljs-punctuation>;</span></code></pre></div><span class=theme-card-footer><span class=theme-card-title></span><span class=theme-card-state>`),Jl=[`running`,`attention`,`idle`,`error`];function Yl(){let e=()=>{let e=Ml();return e===`system`?void 0:e};return(()=>{var t=Gl(),n=t.firstChild,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling;return r.addEventListener(`change`,e=>Ll(e.currentTarget.value)),X(r,W(G,{each:_l,children:e=>(()=>{var t=Kl();return t.value=e,X(t,e),t})()})),X(i,W(G,{each:hl,children:t=>{let n=()=>jl()===t.id;return(()=>{var r=ql(),i=r.firstChild,a=i.firstChild,o=a.firstChild,s=a.nextSibling,c=i.nextSibling.firstChild,l=c.nextSibling;return r.$$click=()=>Il(t.id),X(o,()=>t.label),X(s,W(G,{each:Jl,children:e=>W(Qe,{status:e,label:``})})),X(c,()=>t.label),X(l,()=>n()?`✓ active`:`select`),j(i=>{var a=!!n(),o=t.id,s=t.id,c=e(),l=n(),u=n()?`true`:void 0,d=`use the ${t.label} theme`;return a!==i.e&&r.classList.toggle(`active`,i.e=a),o!==i.t&&Y(r,`data-theme-card`,i.t=o),s!==i.a&&Y(r,`data-theme`,i.a=s),c!==i.o&&Y(r,`data-color-mode`,i.o=c),l!==i.i&&Y(r,`aria-pressed`,i.i=l),u!==i.n&&Y(r,`aria-current`,i.n=u),d!==i.s&&Y(r,`title`,i.s=d),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),r})()}})),j(()=>r.value=Ml()),t})()}Ae([`click`]);var Xl=J(`<select><option value=on>on</option><option value=off>off`),Zl=J(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),Ql=J(`<div class=model-list style=max-height:320px>`),$l=J(`<p class="muted small">No matching models.`),eu=J(`<section class=model-provider-group><div class=model-provider-heading>`),tu=J(`<span class=model-name>`),nu=J(`<span class=model-reasoning>think`),ru=J(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),iu=J(`<div class=settings-error>`),au=J(`<div class=settings-warning>`),ou=J(`<p class="muted small"style=margin-bottom:16px>✓ saved`),su=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>`),cu=J(`<p class="muted small"style=padding-top:8px>No remote devices paired. Launch with <code>--remote --allow &lt;identity&gt;</code> to enable Tailscale access.`),lu=J(`<p>This exits the dashboard server process and terminates <strong>all running sessions</strong>.`),uu=J(`<div class=screen-fill><main class="container settings-wrap"><h1>settings</h1><p class=settings-intro>Ordinary defaults apply only to new sessions. 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><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`),du=J(`<div>`),fu=J(`<p class=muted>`),pu=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>`),mu=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`),hu=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.`),gu=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>`),_u=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>`),vu=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>`),yu=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>`),bu=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.`),xu=J(`<option>`),Su=J(`<p class="muted small">No agent definitions found.`),Cu=J(`<div class=agent-model-editor><button type=button class="btn btn-small">add model…`),wu=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">`),Tu=J(`<span class="muted small">default`),Eu=J(`<span class=agent-model-chip>. `),Du=J(`<p class="muted small">Using the default model.`),Ou=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">×`),ku=J(`<p class="muted small trusted-context-empty">No trusted folders. Use the Files view to trust a project folder and its descendants.`),Au=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">`),ju=J(`<label class=checkbox-control><input type=checkbox><span>`),Mu=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`),Nu=J(`<button type=button class="btn btn-small">cancel`),Pu=J(`<button type=button class="btn btn-small btn-danger">restart`),Fu=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],Iu=[`all`,`one-at-a-time`],Lu=[`sse`,`websocket`,`auto`];function Ru(e){return`${e.provider}/${e.id}`}function zu(e){let t=Ru(e);return e.name?`${t} — ${e.name}`:t}function Bu(e){return e.defaultProvider&&e.defaultModel?`${e.defaultProvider}/${e.defaultModel}`:`choose model…`}function Vu(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function Hu(){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 Uu(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 Wu(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 Gu(e){return(()=>{var t=Xl();return t.addEventListener(`change`,t=>e.onChange(t.currentTarget.value===`on`)),j(()=>t.value=e.value?`on`:`off`),t})()}function Ku(e){let[t,n]=k(``),r=()=>new Set(e.selected??[]),i=N(()=>{let n=t().toLowerCase();return Uu(e.models.filter(e=>!n||Vu(e,n)).slice(0,100))}),a=e=>r().has(Ru(e));return W(nt,{get title(){return e.title},get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[(()=>{var e=Zl(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e})(),(()=>{var t=Ql();return X(t,W(K,{get when(){return i().length>0},get fallback(){return $l()},get children(){return W(G,{get each(){return i()},children:t=>(()=>{var n=eu(),r=n.firstChild;return X(r,()=>t.provider),X(n,W(G,{get each(){return t.models},children:t=>(()=>{var n=ru(),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=tu();return X(e,()=>t.name),e}}),o),X(o,()=>t.provider),X(n,W(K,{get when(){return t.reasoning},get children(){return nu()}}),null),j(e=>{var r=!!a(t),i=zu(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 qu(e){let[t,n]=k(),[r,i]=k([]),[a,o]=k(!1),[s,c]=k(),[l,u]=k(),[d,f]=k(),[p,m]=k(``),[h,g]=k(!1),[_,v]=k(Hu()),[y,{mutate:b,refetch:x}]=F(async()=>{n(void 0);try{return await Q.settings()}catch(e){n(e instanceof Error?e.message:String(e));return}}),[S]=F(y,async()=>{try{let{models:e}=await Q.settingsModels();return e}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),C=N(()=>{let t=new Set;for(let n of e.store.fleet().runtimes)t.add(n.cwd);for(let n of e.store.fleet().diskSessions)t.add(n.cwd);return[...t].sort((e,t)=>e.localeCompare(t))}),[w]=F(()=>({settings:y(),cwd:d()}),async({cwd:e})=>{if(!y())return[];try{let{agentTypes:t}=await Q.agentTypes(e);return t}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),[T,{refetch:E}]=F(async()=>{let{devices:e}=await Q.devices();return e}),[D,O]=k(),A;function M(){A&&clearTimeout(A),A=void 0}function P(e){M();let t=Math.max(250,e??3e4)+100;A=setTimeout(()=>void I(),t)}async function I(){try{let e=await Q.pairingCode();if(!e.enabled||!e.code){O(void 0),M();return}O(e),P(e.expiresInMs)}catch(e){console.warn(`pairing code unavailable`,e),O(void 0),M()}}let[L]=F(async()=>{try{let{version:e}=await Q.version();return e}catch{return}}),[B]=F(async()=>{try{return await Q.serverInfo()}catch{return}}),[ee,te]=k(!1),[ne,re]=k(!1),[ie,V]=k();async function ae(){V(void 0),re(!0);try{await Q.restartServer()}catch(e){V(e instanceof Error?e.message:String(e)),re(!1)}}async function H(e){n(void 0),i([]),o(!1);try{let t=await Q.saveSettings(e);b(t),i(t.warnings??[]),o(!0),setTimeout(()=>o(!1),2e3)}catch(e){n(e instanceof Error?e.message:String(e)),await x()}}async function oe(e,t){await H({agentModels:{[e]:t}})}async function U(e){n(void 0),g(!0);try{let t=await Q.trustContextFolder(e);b(t.settings),m(``)}catch(e){n(e instanceof Error?e.message:String(e))}finally{g(!1)}}async function se(e){n(void 0),g(!0);try{let t=await Q.removeTrustedContextFolder(e);b(t.settings)}catch(e){n(e instanceof Error?e.message:String(e))}finally{g(!1)}}function ce(e){return y()?.agentModels?.[e]??[]}async function le(){typeof Notification>`u`||v(await Notification.requestPermission())}R(()=>void I()),z(M);let ue=()=>e.store.auth();return(()=>{var n=uu(),i=n.firstChild,o=i.firstChild.nextSibling.nextSibling,g=o.firstChild.nextSibling;g.firstChild;var v=g.nextSibling,b=v.firstChild.nextSibling.firstChild.firstChild,x=v.nextSibling,O=x.firstChild.nextSibling,k=x.nextSibling,A=k.firstChild,M=A.firstChild.nextSibling,N=A.nextSibling.firstChild.firstChild,P=N.nextSibling,F=k.nextSibling.firstChild,I=F.firstChild.nextSibling,R=F.nextSibling.firstChild,z=o.nextSibling,re=z.firstChild.nextSibling.firstChild.firstChild.nextSibling,V=z.nextSibling,de=V.firstChild.nextSibling;return de.nextSibling,X(n,W(et,{get store(){return e.store},active:`settings`}),i),X(i,W(K,{get when(){return t()},get children(){var e=iu();return X(e,t),e}}),o),X(i,W(K,{get when(){return r().length>0},get children(){var e=au();return X(e,W(G,{get each(){return r()},children:e=>(()=>{var t=du();return X(t,e),t})()})),e}}),o),X(i,W(K,{get when(){return a()},get children(){return ou()}}),o),X(i,W(K,{get when(){return y()},get fallback(){return(()=>{var e=fu();return X(e,()=>t()?`Settings could not be loaded — see the error above.`:`Loading settings…`),e})()},children:e=>[(()=>{var t=pu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling,a=i.firstChild,o=a.firstChild.nextSibling,s=a.nextSibling.firstChild,l=i.nextSibling.firstChild.nextSibling.firstChild;return r.$$click=()=>c({kind:`default`}),X(r,()=>Bu(e())),X(o,()=>Fu.join(` · `)),s.addEventListener(`change`,e=>H({defaultThinkingLevel:e.currentTarget.value})),X(s,W(G,{each:Fu,children:e=>(()=>{var t=xu();return t.value=e,X(t,e),t})()})),l.addEventListener(`change`,e=>H({transport:e.currentTarget.value})),X(l,W(G,{get each(){return[...Lu]},children:e=>(()=>{var t=xu();return t.value=e,X(t,e),t})()})),j(()=>s.value=e().defaultThinkingLevel??`off`),j(()=>l.value=e().transport??`sse`),t})(),(()=>{var t=hu();return t.firstChild.nextSibling,X(t,W(K,{get when(){return C().length>0},get children(){var e=mu(),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 C()},children:e=>(()=>{var t=xu();return t.value=e,X(t,e),t})()}),null),j(()=>Y(t,`title`,d()??`global/home only`)),j(()=>t.value=d()??``),e}}),null),X(t,W(K,{get when(){return(w()??[]).length>0},get fallback(){return Su()},get children(){return W(G,{get each(){return w()??[]},children:t=>{let n=()=>e().agentModels?.[t.name]??[];return(()=>{var e=wu(),r=e.firstChild,i=r.firstChild,a=i.nextSibling,o=r.nextSibling,s=o.nextSibling;return X(i,()=>t.name),X(a,()=>t.description),X(o,W(K,{get when(){return n().length>0},get fallback(){return Tu()},get children(){return W(G,{get each(){return n()},children:(e,t)=>(()=>{var n=Eu(),r=n.firstChild;return X(n,()=>t()+1,r),X(n,e,null),n})()})}})),s.$$click=()=>u(l()===t.name?void 0:t.name),X(s,()=>l()===t.name?`done`:`edit`),X(e,W(K,{get when(){return l()===t.name},get children(){var e=Cu(),r=e.firstChild;return X(e,W(K,{get when(){return n().length>0},get fallback(){return Du()},get children(){return W(G,{get each(){return n()},children:(e,r)=>(()=>{var i=Ou(),a=i.firstChild,o=a.nextSibling.firstChild,s=o.nextSibling,c=s.nextSibling;return X(a,e),o.$$click=()=>void oe(t.name,Wu(n(),r(),-1)),s.$$click=()=>void oe(t.name,Wu(n(),r(),1)),c.$$click=()=>void oe(t.name,n().filter((e,t)=>t!==r())),j(e=>{var t=r()===0,i=r()===n().length-1;return t!==e.e&&(o.disabled=e.e=t),i!==e.t&&(s.disabled=e.t=i),e},{e:void 0,t:void 0}),i})()})}}),r),r.$$click=()=>c({kind:`agent`,agentName:t.name}),e}}),null),e})()}})}}),null),t})(),(()=>{var t=gu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return X(r,W(Gu,{get value(){return e().imageAutoResize!==!1},onChange:e=>H({imageAutoResize:e})})),X(i,W(Gu,{get value(){return e().blockImages===!0},onChange:e=>H({blockImages:e})})),t})(),(()=>{var t=_u(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling.firstChild.nextSibling.firstChild;return r.addEventListener(`change`,e=>H({steeringMode:e.currentTarget.value})),X(r,W(G,{get each(){return[...Iu]},children:e=>(()=>{var t=xu();return t.value=e,X(t,e),t})()})),i.addEventListener(`change`,e=>H({followUpMode:e.currentTarget.value})),X(i,W(G,{get each(){return[...Iu]},children:e=>(()=>{var t=xu();return t.value=e,X(t,e),t})()})),j(()=>r.value=e().steeringMode??`all`),j(()=>i.value=e().followUpMode??`all`),t})(),(()=>{var t=vu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling,a=i.firstChild.nextSibling.nextSibling.nextSibling,o=a.firstChild.nextSibling,s=o.nextSibling,c=i.nextSibling,l=c.firstChild.nextSibling,u=c.nextSibling.nextSibling.firstChild.nextSibling;return X(r,W(Gu,{get value(){return e().enableSkillCommands!==!1},onChange:e=>H({enableSkillCommands:e})})),X(i,W(K,{get when(){return(e().trustedContextFolders??[]).length>0},get fallback(){return ku()},get children(){return W(G,{get each(){return e().trustedContextFolders??[]},children:e=>(()=>{var t=Au(),n=t.firstChild,r=n.nextSibling.nextSibling;return X(n,e),r.$$click=()=>void se(e),X(r,()=>h()?`revoking…`:`revoke trust`),j(()=>r.disabled=h()),t})()})}}),a),a.addEventListener(`submit`,e=>{e.preventDefault();let t=p().trim();t&&U(t)}),o.$$input=e=>m(e.currentTarget.value),X(s,()=>h()?`trusting…`:`trust folder`),X(l,W(Gu,{get value(){return e().autoLoadNestedContext===!0},onChange:e=>H({autoLoadNestedContext:e})})),X(u,W(Gu,{get value(){return e().hideThinkingBlock===!0},onChange:e=>H({hideThinkingBlock:e})})),j(()=>s.disabled=h()||!p().trim()),j(()=>o.value=p()),t})(),(()=>{var t=yu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return X(r,W(Gu,{get value(){return e().compactionEnabled!==!1},onChange:e=>H({compactionEnabled:e})})),X(i,W(Gu,{get value(){return e().retryEnabled!==!1},onChange:e=>H({retryEnabled:e})})),t})(),bu()]}),o),X(g,W(Yl,{}),null),b.addEventListener(`change`,e=>Co(e.currentTarget.checked)),X(O,W(G,{each:lo,children:e=>(()=>{var t=ju(),n=t.firstChild,r=n.nextSibling;return n.addEventListener(`change`,t=>wo(e,t.currentTarget.checked)),Y(n,`id`,`pref-tool-expand-${e}`),X(r,e),j(()=>n.checked=To(e)),t})()})),X(M,(()=>{var e=q(()=>_()===`denied`);return()=>e()?`blocked by browser settings — re-enable notifications in site permissions`:q(()=>_()===`insecure`)()?`this page is not a secure context — notifications need HTTPS. Run the server with --https (tailscale cert <host>.<tailnet>.ts.net) and open it via the https:// hostname`:q(()=>_()===`ios-install`)()?`iOS notifications need the installed PWA — tap Share → Add to Home Screen, then open dreb from the home screen icon`:_()===`unsupported`?`browser notifications are unavailable in this environment`:`show a notification when the tab needs input (Android/desktop need the app installed on mobile; works over HTTPS or localhost)`})()),N.addEventListener(`change`,e=>{e.currentTarget.checked&&le()}),X(P,()=>_()===`granted`?`enabled`:`enable notifications`),X(I,()=>B()?.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`),R.$$click=()=>te(!0),X(R,()=>ne()?`restarting…`:`restart`),X(o,W(K,{get when(){return ie()},get children(){var e=iu();return X(e,ie),e}}),null),X(re,()=>ue()?.mode===`local`?`local`:`host`),X(z,W(K,{get when(){return q(()=>!!D()?.enabled)()&&D()?.code},get children(){var e=su(),t=e.firstChild.nextSibling.firstChild;return X(t,()=>D().code),e}}),null),X(z,W(G,{get each(){return T()??[]},children:e=>(()=>{var t=Mu(),n=t.firstChild,r=n.nextSibling,i=r.firstChild,a=r.nextSibling.firstChild;return X(n,()=>e.device??e.id),X(r,()=>e.identity,i),X(r,()=>it(e.createdAt),null),a.$$click=async()=>{await Q.unpair(e.id),await E()},t})()}),null),X(z,W(K,{get when(){return(T()??[]).length===0},get children(){return cu()}}),null),X(V,(()=>{var e=q(()=>!!B()?.version);return()=>e()?` v${B().version}`:q(()=>!!L())()?` v${L()}`:``})(),de),X(V,W(K,{get when(){return B()?.startedAt},get children(){return[` · server build, up `,q(()=>it(B().startedAt))]}}),null),X(n,W(K,{get when(){return ee()},get children(){return W(nt,{title:`restart dashboard service?`,onDismiss:()=>te(!1),get actions(){return[(()=>{var e=Nu();return e.$$click=()=>te(!1),e})(),(()=>{var e=Pu();return e.$$click=()=>{te(!1),ae()},e})()]},get children(){var e=lu();return e.firstChild.nextSibling.nextSibling,X(e,()=>B()?.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(n,W(K,{get when(){return s()},children:e=>{let t=()=>{let t=e();return t.kind==="default"?`select default model`:`add model for ${t.agentName}`},n=()=>{let t=e();return t.kind==="default"?y()?.defaultProvider&&y()?.defaultModel?[`${y().defaultProvider}/${y().defaultModel}`]:[]:ce(t.agentName)};return W(Ku,{get title(){return t()},get models(){return S()??[]},get selected(){return n()},onClose:()=>c(void 0),onPick:t=>{let n=e();if(c(void 0),n.kind==="default"){H({defaultProvider:t.provider,defaultModel:t.id});return}let r=Ru(t),i=ce(n.agentName);i.includes(r)||oe(n.agentName,[...i,r])}})}}),null),j(e=>{var t=_()===`denied`||_()===`unsupported`||_()===`ios-install`||_()===`insecure`,n=ne();return t!==e.e&&(N.disabled=e.e=t),n!==e.t&&(R.disabled=e.t=n),e},{e:void 0,t:void 0}),j(()=>b.checked=So()),j(()=>N.checked=_()===`granted`),n})()}Ae([`input`,`click`]);var Ju=J(`<p class=pair-error>`),Yu=J(`<div class=status-line><span class=working>● working`),Xu=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.`),Zu=J(`<p class=muted>`);function Qu(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=io({scroller:()=>c});return R(()=>{let t=new AbortController;e.store.hydrateSubagent(e.sessionKey,e.agentId,t.signal).catch(e=>{t.signal.aborted&&Es(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(oo(u,c,{keyboard:`window`}))}),z(()=>u.dispose()),(()=>{var t=Xu(),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(Qe,{get status(){return n()?.status===`failed`?`error`:`idle`},get label(){return n()?.status}})},get children(){return W(Qe,{status:`running`})}}));var _=c;typeof _==`function`?Pe(_,p):c=p;var v=l;return typeof v==`function`?Pe(v,m):l=m,X(m,W(K,{get when(){return o()},get children(){var e=Ju();return X(e,o),e}}),null),X(m,W(K,{get when(){return q(()=>!!r())()&&r().entries.length>0},get fallback(){return(()=>{var e=Zu();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(Ts,{get entries(){return r().entries},get who(){return n()?.agentType??`agent`},userLabel:`task from parent`,get resetKey(){return`${e.sessionKey}:${e.agentId}`}})}}),null),X(h,W(K,{get when(){return r()?.streaming},get children(){return Yu()}}),g),j(()=>Y(s,`href`,`#/session/${e.sessionKey}`)),t})()}function $u(e){return{key:e,entries:[],streaming:!1,compacting:!1,statusEntries:[],tasks:[],backgroundAgents:{},uiRequests:[],toasts:[],widgets:{above:[],below:[]},needsAttention:!1,subagents:{}}}function ed(e){return typeof e==`string`?e:Array.isArray(e)?e.filter(e=>typeof e?.text==`string`).map(e=>e.text).join(`
77
- `):``}function td(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(`
76
+ <span class=hljs-function>render</span><span class=hljs-punctuation>(</span><span class=hljs-string>"ok"</span><span class=hljs-punctuation>)</span><span class=hljs-punctuation>;</span></code></pre></div><span class=theme-card-footer><span class=theme-card-title></span><span class=theme-card-state>`),Ql=[`running`,`attention`,`idle`,`error`];function $l(){let e=()=>{let e=Il();return e===`system`?void 0:e};return(()=>{var t=Yl(),n=t.firstChild,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling;return r.addEventListener(`change`,e=>Vl(e.currentTarget.value)),X(r,W(G,{each:xl,children:e=>(()=>{var t=Xl();return t.value=e,X(t,e),t})()})),X(i,W(G,{each:yl,children:t=>{let n=()=>Fl()===t.id;return(()=>{var r=Zl(),i=r.firstChild,a=i.firstChild,o=a.firstChild,s=a.nextSibling,c=i.nextSibling.firstChild,l=c.nextSibling;return r.$$click=()=>Bl(t.id),X(o,()=>t.label),X(s,W(G,{each:Ql,children:e=>W(Qe,{status:e,label:``})})),X(c,()=>t.label),X(l,()=>n()?`✓ active`:`select`),j(i=>{var a=!!n(),o=t.id,s=t.id,c=e(),l=n(),u=n()?`true`:void 0,d=`use the ${t.label} theme`;return a!==i.e&&r.classList.toggle(`active`,i.e=a),o!==i.t&&Y(r,`data-theme-card`,i.t=o),s!==i.a&&Y(r,`data-theme`,i.a=s),c!==i.o&&Y(r,`data-color-mode`,i.o=c),l!==i.i&&Y(r,`aria-pressed`,i.i=l),u!==i.n&&Y(r,`aria-current`,i.n=u),d!==i.s&&Y(r,`title`,i.s=d),i},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0}),r})()}})),j(()=>r.value=Il()),t})()}Ae([`click`]);var eu=J(`<select><option value=on>on</option><option value=off>off`),tu=J(`<div class=field style=margin-bottom:8px><input type=text placeholder="search models…">`),nu=J(`<div class=model-list style=max-height:320px>`),ru=J(`<p class="muted small">No matching models.`),iu=J(`<section class=model-provider-group><div class=model-provider-heading>`),au=J(`<span class=model-name>`),ou=J(`<span class=model-reasoning>think`),su=J(`<button type=button class=model-row><span class=model-current></span><span class=model-id></span><span class=model-provider-badge>`),cu=J(`<div class=settings-error>`),lu=J(`<div class=settings-warning>`),uu=J(`<p class="muted small"style=margin-bottom:16px>✓ saved`),du=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>`),fu=J(`<p class="muted small"style=padding-top:8px>No remote devices paired. Launch with <code>--remote --allow &lt;identity&gt;</code> to enable Tailscale access.`),pu=J(`<p>This exits the dashboard server process and terminates <strong>all running sessions</strong>.`),mu=J(`<div class=screen-fill><main class="container settings-wrap"><h1>settings</h1><p class=settings-intro>Ordinary defaults apply only to new sessions. 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><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`),hu=J(`<div>`),gu=J(`<p class=muted>`),_u=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>`),vu=J(`<div class="setting-row agent-context-row"><span class=setting-label><span class=name>agent definition context</span><span class=hint>choose a project to include its .dreb/agents definitions</span></span><span class=setting-control><select><option value>global/home only`),yu=J(`<section class=settings-section><h2>agent models</h2><p class="muted small"style=margin-bottom:8px>Per-agent fallback lists. First available model wins; empty lists revert to the default model. Agent definitions are loaded from an explicit project context so project-local agents do not depend on which runtime opened first.`),bu=J(`<section class=settings-section><h2>images</h2><div class=setting-row><span class=setting-label><span class=name>auto-resize images</span><span class=hint>resize image inputs before sending them to providers</span></span><span class=setting-control></span></div><div class=setting-row><span class=setting-label><span class=name>block images</span><span class=hint>prevent image inputs from being sent to providers</span></span><span class=setting-control>`),xu=J(`<section class=settings-section><h2>queueing</h2><div class=setting-row><span class=setting-label><span class=name>steering delivery</span><span class=hint>deliver queued steers all at once, or one per turn</span></span><span class=setting-control><select></select></span></div><div class=setting-row><span class=setting-label><span class=name>follow-up delivery</span><span class=hint>deliver queued follow-ups all at once, or one per turn</span></span><span class=setting-control><select>`),Su=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>`),Cu=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>`),wu=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.`),Tu=J(`<option>`),Eu=J(`<p class="muted small">No agent definitions found.`),Du=J(`<div class=agent-model-editor><button type=button class="btn btn-small">add model…`),Ou=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">`),ku=J(`<span class="muted small">default`),Au=J(`<span class=agent-model-chip>. `),ju=J(`<p class="muted small">Using the default model.`),Mu=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">×`),Nu=J(`<p class="muted small trusted-context-empty">No trusted folders. Use the Files view to trust a project folder and its descendants.`),Pu=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">`),Fu=J(`<label class=checkbox-control><input type=checkbox><span>`),Iu=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`),Lu=J(`<button type=button class="btn btn-small">cancel`),Ru=J(`<button type=button class="btn btn-small btn-danger">restart`),zu=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`],Bu=[`all`,`one-at-a-time`],Vu=[`sse`,`websocket`,`auto`];function Hu(e){return`${e.provider}/${e.id}`}function Uu(e){let t=Hu(e);return e.name?`${t} — ${e.name}`:t}function Wu(e){return e.defaultProvider&&e.defaultModel?`${e.defaultProvider}/${e.defaultModel}`:`choose model…`}function Gu(e,t){return`${e.provider}/${e.id} ${e.name??``}`.toLowerCase().includes(t)}function Ku(){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 qu(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 Ju(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 Yu(e){return(()=>{var t=eu();return t.addEventListener(`change`,t=>e.onChange(t.currentTarget.value===`on`)),j(()=>t.value=e.value?`on`:`off`),t})()}function Xu(e){let[t,n]=k(``),r=()=>new Set(e.selected??[]),i=N(()=>{let n=t().toLowerCase();return qu(e.models.filter(e=>!n||Gu(e,n)).slice(0,100))}),a=e=>r().has(Hu(e));return W(nt,{get title(){return e.title},get onDismiss(){return e.onClose},class:`model-picker-modal`,get children(){return[(()=>{var e=tu(),r=e.firstChild;return r.$$input=e=>n(e.currentTarget.value),j(()=>r.value=t()),e})(),(()=>{var t=nu();return X(t,W(K,{get when(){return i().length>0},get fallback(){return ru()},get children(){return W(G,{get each(){return i()},children:t=>(()=>{var n=iu(),r=n.firstChild;return X(r,()=>t.provider),X(n,W(G,{get each(){return t.models},children:t=>(()=>{var n=su(),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=au();return X(e,()=>t.name),e}}),o),X(o,()=>t.provider),X(n,W(K,{get when(){return t.reasoning},get children(){return ou()}}),null),j(e=>{var r=!!a(t),i=Uu(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 Zu(e){let[t,n]=k(),[r,i]=k([]),[a,o]=k(!1),[s,c]=k(),[l,u]=k(),[d,f]=k(),[p,m]=k(``),[h,g]=k(!1),[_,v]=k(Ku()),[y,{mutate:b,refetch:x}]=F(async()=>{n(void 0);try{return await Q.settings()}catch(e){n(e instanceof Error?e.message:String(e));return}}),[S]=F(y,async()=>{try{let{models:e}=await Q.settingsModels();return e}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),C=N(()=>{let t=new Set;for(let n of e.store.fleet().runtimes)t.add(n.cwd);for(let n of e.store.fleet().diskSessions)t.add(n.cwd);return[...t].sort((e,t)=>e.localeCompare(t))}),[w]=F(()=>({settings:y(),cwd:d()}),async({cwd:e})=>{if(!y())return[];try{let{agentTypes:t}=await Q.agentTypes(e);return t}catch(e){return n(e instanceof Error?e.message:String(e)),[]}}),[T,{refetch:E}]=F(async()=>{let{devices:e}=await Q.devices();return e}),[D,O]=k(),A;function M(){A&&clearTimeout(A),A=void 0}function P(e){M();let t=Math.max(250,e??3e4)+100;A=setTimeout(()=>void I(),t)}async function I(){try{let e=await Q.pairingCode();if(!e.enabled||!e.code){O(void 0),M();return}O(e),P(e.expiresInMs)}catch(e){console.warn(`pairing code unavailable`,e),O(void 0),M()}}let[L]=F(async()=>{try{let{version:e}=await Q.version();return e}catch{return}}),[B]=F(async()=>{try{return await Q.serverInfo()}catch{return}}),[ee,te]=k(!1),[ne,re]=k(!1),[ie,V]=k();async function ae(){V(void 0),re(!0);try{await Q.restartServer()}catch(e){V(e instanceof Error?e.message:String(e)),re(!1)}}async function H(e){n(void 0),i([]),o(!1);try{let t=await Q.saveSettings(e);b(t),i(t.warnings??[]),o(!0),setTimeout(()=>o(!1),2e3)}catch(e){n(e instanceof Error?e.message:String(e)),await x()}}async function oe(e,t){await H({agentModels:{[e]:t}})}async function U(e){n(void 0),g(!0);try{let t=await Q.trustContextFolder(e);b(t.settings),m(``)}catch(e){n(e instanceof Error?e.message:String(e))}finally{g(!1)}}async function se(e){n(void 0),g(!0);try{let t=await Q.removeTrustedContextFolder(e);b(t.settings)}catch(e){n(e instanceof Error?e.message:String(e))}finally{g(!1)}}function ce(e){return y()?.agentModels?.[e]??[]}async function le(){typeof Notification>`u`||v(await Notification.requestPermission())}R(()=>void I()),z(M);let ue=()=>e.store.auth();return(()=>{var n=mu(),i=n.firstChild,o=i.firstChild.nextSibling.nextSibling,g=o.firstChild.nextSibling;g.firstChild;var v=g.nextSibling,b=v.firstChild.nextSibling.firstChild.firstChild,x=v.nextSibling,O=x.firstChild.nextSibling,k=x.nextSibling,A=k.firstChild,M=A.firstChild.nextSibling,N=A.nextSibling.firstChild.firstChild,P=N.nextSibling,F=k.nextSibling.firstChild,I=F.firstChild.nextSibling,R=F.nextSibling.firstChild,z=o.nextSibling,re=z.firstChild.nextSibling.firstChild.firstChild.nextSibling,V=z.nextSibling,de=V.firstChild.nextSibling;return de.nextSibling,X(n,W(et,{get store(){return e.store},active:`settings`}),i),X(i,W(K,{get when(){return t()},get children(){var e=cu();return X(e,t),e}}),o),X(i,W(K,{get when(){return r().length>0},get children(){var e=lu();return X(e,W(G,{get each(){return r()},children:e=>(()=>{var t=hu();return X(t,e),t})()})),e}}),o),X(i,W(K,{get when(){return a()},get children(){return uu()}}),o),X(i,W(K,{get when(){return y()},get fallback(){return(()=>{var e=gu();return X(e,()=>t()?`Settings could not be loaded — see the error above.`:`Loading settings…`),e})()},children:e=>[(()=>{var t=_u(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling,a=i.firstChild,o=a.firstChild.nextSibling,s=a.nextSibling.firstChild,l=i.nextSibling.firstChild.nextSibling.firstChild;return r.$$click=()=>c({kind:`default`}),X(r,()=>Wu(e())),X(o,()=>zu.join(` · `)),s.addEventListener(`change`,e=>H({defaultThinkingLevel:e.currentTarget.value})),X(s,W(G,{each:zu,children:e=>(()=>{var t=Tu();return t.value=e,X(t,e),t})()})),l.addEventListener(`change`,e=>H({transport:e.currentTarget.value})),X(l,W(G,{get each(){return[...Vu]},children:e=>(()=>{var t=Tu();return t.value=e,X(t,e),t})()})),j(()=>s.value=e().defaultThinkingLevel??`off`),j(()=>l.value=e().transport??`sse`),t})(),(()=>{var t=yu();return t.firstChild.nextSibling,X(t,W(K,{get when(){return C().length>0},get children(){var e=vu(),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 C()},children:e=>(()=>{var t=Tu();return t.value=e,X(t,e),t})()}),null),j(()=>Y(t,`title`,d()??`global/home only`)),j(()=>t.value=d()??``),e}}),null),X(t,W(K,{get when(){return(w()??[]).length>0},get fallback(){return Eu()},get children(){return W(G,{get each(){return w()??[]},children:t=>{let n=()=>e().agentModels?.[t.name]??[];return(()=>{var e=Ou(),r=e.firstChild,i=r.firstChild,a=i.nextSibling,o=r.nextSibling,s=o.nextSibling;return X(i,()=>t.name),X(a,()=>t.description),X(o,W(K,{get when(){return n().length>0},get fallback(){return ku()},get children(){return W(G,{get each(){return n()},children:(e,t)=>(()=>{var n=Au(),r=n.firstChild;return X(n,()=>t()+1,r),X(n,e,null),n})()})}})),s.$$click=()=>u(l()===t.name?void 0:t.name),X(s,()=>l()===t.name?`done`:`edit`),X(e,W(K,{get when(){return l()===t.name},get children(){var e=Du(),r=e.firstChild;return X(e,W(K,{get when(){return n().length>0},get fallback(){return ju()},get children(){return W(G,{get each(){return n()},children:(e,r)=>(()=>{var i=Mu(),a=i.firstChild,o=a.nextSibling.firstChild,s=o.nextSibling,c=s.nextSibling;return X(a,e),o.$$click=()=>void oe(t.name,Ju(n(),r(),-1)),s.$$click=()=>void oe(t.name,Ju(n(),r(),1)),c.$$click=()=>void oe(t.name,n().filter((e,t)=>t!==r())),j(e=>{var t=r()===0,i=r()===n().length-1;return t!==e.e&&(o.disabled=e.e=t),i!==e.t&&(s.disabled=e.t=i),e},{e:void 0,t:void 0}),i})()})}}),r),r.$$click=()=>c({kind:`agent`,agentName:t.name}),e}}),null),e})()}})}}),null),t})(),(()=>{var t=bu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return X(r,W(Yu,{get value(){return e().imageAutoResize!==!1},onChange:e=>H({imageAutoResize:e})})),X(i,W(Yu,{get value(){return e().blockImages===!0},onChange:e=>H({blockImages:e})})),t})(),(()=>{var t=xu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling.firstChild,i=n.nextSibling.firstChild.nextSibling.firstChild;return r.addEventListener(`change`,e=>H({steeringMode:e.currentTarget.value})),X(r,W(G,{get each(){return[...Bu]},children:e=>(()=>{var t=Tu();return t.value=e,X(t,e),t})()})),i.addEventListener(`change`,e=>H({followUpMode:e.currentTarget.value})),X(i,W(G,{get each(){return[...Bu]},children:e=>(()=>{var t=Tu();return t.value=e,X(t,e),t})()})),j(()=>r.value=e().steeringMode??`all`),j(()=>i.value=e().followUpMode??`all`),t})(),(()=>{var t=Su(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling,a=i.firstChild.nextSibling.nextSibling.nextSibling,o=a.firstChild.nextSibling,s=o.nextSibling,c=i.nextSibling,l=c.firstChild.nextSibling,u=c.nextSibling.nextSibling.firstChild.nextSibling;return X(r,W(Yu,{get value(){return e().enableSkillCommands!==!1},onChange:e=>H({enableSkillCommands:e})})),X(i,W(K,{get when(){return(e().trustedContextFolders??[]).length>0},get fallback(){return Nu()},get children(){return W(G,{get each(){return e().trustedContextFolders??[]},children:e=>(()=>{var t=Pu(),n=t.firstChild,r=n.nextSibling.nextSibling;return X(n,e),r.$$click=()=>void se(e),X(r,()=>h()?`revoking…`:`revoke trust`),j(()=>r.disabled=h()),t})()})}}),a),a.addEventListener(`submit`,e=>{e.preventDefault();let t=p().trim();t&&U(t)}),o.$$input=e=>m(e.currentTarget.value),X(s,()=>h()?`trusting…`:`trust folder`),X(l,W(Yu,{get value(){return e().autoLoadNestedContext===!0},onChange:e=>H({autoLoadNestedContext:e})})),X(u,W(Yu,{get value(){return e().hideThinkingBlock===!0},onChange:e=>H({hideThinkingBlock:e})})),j(()=>s.disabled=h()||!p().trim()),j(()=>o.value=p()),t})(),(()=>{var t=Cu(),n=t.firstChild.nextSibling,r=n.firstChild.nextSibling,i=n.nextSibling.firstChild.nextSibling;return X(r,W(Yu,{get value(){return e().compactionEnabled!==!1},onChange:e=>H({compactionEnabled:e})})),X(i,W(Yu,{get value(){return e().retryEnabled!==!1},onChange:e=>H({retryEnabled:e})})),t})(),wu()]}),o),X(g,W($l,{}),null),b.addEventListener(`change`,e=>Co(e.currentTarget.checked)),X(O,W(G,{each:lo,children:e=>(()=>{var t=Fu(),n=t.firstChild,r=n.nextSibling;return n.addEventListener(`change`,t=>wo(e,t.currentTarget.checked)),Y(n,`id`,`pref-tool-expand-${e}`),X(r,e),j(()=>n.checked=To(e)),t})()})),X(M,(()=>{var e=q(()=>_()===`denied`);return()=>e()?`blocked by browser settings — re-enable notifications in site permissions`:q(()=>_()===`insecure`)()?`this page is not a secure context — notifications need HTTPS. Run the server with --https (tailscale cert <host>.<tailnet>.ts.net) and open it via the https:// hostname`:q(()=>_()===`ios-install`)()?`iOS notifications need the installed PWA — tap Share → Add to Home Screen, then open dreb from the home screen icon`:_()===`unsupported`?`browser notifications are unavailable in this environment`:`show a notification when the tab needs input (Android/desktop need the app installed on mobile; works over HTTPS or localhost)`})()),N.addEventListener(`change`,e=>{e.currentTarget.checked&&le()}),X(P,()=>_()===`granted`?`enabled`:`enable notifications`),X(I,()=>B()?.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`),R.$$click=()=>te(!0),X(R,()=>ne()?`restarting…`:`restart`),X(o,W(K,{get when(){return ie()},get children(){var e=cu();return X(e,ie),e}}),null),X(re,()=>ue()?.mode===`local`?`local`:`host`),X(z,W(K,{get when(){return q(()=>!!D()?.enabled)()&&D()?.code},get children(){var e=du(),t=e.firstChild.nextSibling.firstChild;return X(t,()=>D().code),e}}),null),X(z,W(G,{get each(){return T()??[]},children:e=>(()=>{var t=Iu(),n=t.firstChild,r=n.nextSibling,i=r.firstChild,a=r.nextSibling.firstChild;return X(n,()=>e.device??e.id),X(r,()=>e.identity,i),X(r,()=>it(e.createdAt),null),a.$$click=async()=>{await Q.unpair(e.id),await E()},t})()}),null),X(z,W(K,{get when(){return(T()??[]).length===0},get children(){return fu()}}),null),X(V,(()=>{var e=q(()=>!!B()?.version);return()=>e()?` v${B().version}`:q(()=>!!L())()?` v${L()}`:``})(),de),X(V,W(K,{get when(){return B()?.startedAt},get children(){return[` · server build, up `,q(()=>it(B().startedAt))]}}),null),X(n,W(K,{get when(){return ee()},get children(){return W(nt,{title:`restart dashboard service?`,onDismiss:()=>te(!1),get actions(){return[(()=>{var e=Lu();return e.$$click=()=>te(!1),e})(),(()=>{var e=Ru();return e.$$click=()=>{te(!1),ae()},e})()]},get children(){var e=pu();return e.firstChild.nextSibling.nextSibling,X(e,()=>B()?.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(n,W(K,{get when(){return s()},children:e=>{let t=()=>{let t=e();return t.kind==="default"?`select default model`:`add model for ${t.agentName}`},n=()=>{let t=e();return t.kind==="default"?y()?.defaultProvider&&y()?.defaultModel?[`${y().defaultProvider}/${y().defaultModel}`]:[]:ce(t.agentName)};return W(Xu,{get title(){return t()},get models(){return S()??[]},get selected(){return n()},onClose:()=>c(void 0),onPick:t=>{let n=e();if(c(void 0),n.kind==="default"){H({defaultProvider:t.provider,defaultModel:t.id});return}let r=Hu(t),i=ce(n.agentName);i.includes(r)||oe(n.agentName,[...i,r])}})}}),null),j(e=>{var t=_()===`denied`||_()===`unsupported`||_()===`ios-install`||_()===`insecure`,n=ne();return t!==e.e&&(N.disabled=e.e=t),n!==e.t&&(R.disabled=e.t=n),e},{e:void 0,t:void 0}),j(()=>b.checked=So()),j(()=>N.checked=_()===`granted`),n})()}Ae([`input`,`click`]);var Qu=J(`<p class=pair-error>`),$u=J(`<div class=status-line><span class=working>● working`),ed=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.`),td=J(`<p class=muted>`);function nd(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=io({scroller:()=>c});return R(()=>{let t=new AbortController;e.store.hydrateSubagent(e.sessionKey,e.agentId,t.signal).catch(e=>{t.signal.aborted&&As(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(oo(u,c,{keyboard:`window`}))}),z(()=>u.dispose()),(()=>{var t=ed(),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(Qe,{get status(){return n()?.status===`failed`?`error`:`idle`},get label(){return n()?.status}})},get children(){return W(Qe,{status:`running`})}}));var _=c;typeof _==`function`?Pe(_,p):c=p;var v=l;return typeof v==`function`?Pe(v,m):l=m,X(m,W(K,{get when(){return o()},get children(){var e=Qu();return X(e,o),e}}),null),X(m,W(K,{get when(){return q(()=>!!r())()&&r().entries.length>0},get fallback(){return(()=>{var e=td();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(ks,{get entries(){return r().entries},get who(){return n()?.agentType??`agent`},userLabel:`task from parent`,get resetKey(){return`${e.sessionKey}:${e.agentId}`}})}}),null),X(h,W(K,{get when(){return r()?.streaming},get children(){return $u()}}),g),j(()=>Y(s,`href`,`#/session/${e.sessionKey}`)),t})()}function rd(e){return{key:e,entries:[],streaming:!1,compacting:!1,statusEntries:[],tasks:[],backgroundAgents:{},uiRequests:[],toasts:[],widgets:{above:[],below:[]},needsAttention:!1,subagents:{}}}var id=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]);function ad(e){return e.length===0||e.length%4!=0?!1:/^[A-Za-z0-9+/]+={0,2}$/.test(e)}function od(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`&&typeof e.data==`string`&&typeof e.mimeType==`string`&&id.has(e.mimeType)&&ad(e.data)&&n.push({mimeType:e.mimeType,data:e.data})}return{text:t.join(`
77
+ `),images:n}}function sd(e){return od(e).text}function cd(e,t){let n=e.match(/<background-agent-complete>\n?([\s\S]*?)\n?<\/background-agent-complete>/)?.[1]?.trim();if(!n)return;let r=n.split(`
78
78
  `),i=r.findIndex(e=>e.trim().length>0),a,o=n;return i>=0&&/^Background agent .+\.$/.test(r[i]?.trim()??``)&&(a=r[i].trim(),o=r.slice(i+1).join(`
79
- `).trim()||a),{kind:`agent-result`,text:o,header:a,raw:e,timestamp:t}}function nd(e){let t=ed(e.content);return td(t,e.timestamp)??{kind:`user`,text:t,timestamp:e.timestamp}}function rd(e){let t=[],n=new Map;for(let r of e)if(r.role===`user`)t.push(nd(r));else if(r.role===`assistant`){let e=[],i=()=>{e.length!==0&&(t.push({kind:`assistant`,blocks:e,model:r.model,streaming:!1,timestamp:r.timestamp}),e=[])};if(Array.isArray(r.content)){for(let a of r.content)if(a.type===`text`&&typeof a.text==`string`)e.push({kind:`text`,text:a.text});else if(a.type===`thinking`&&typeof a.thinking==`string`)e.push({kind:`thinking`,text:a.thinking});else if(a.type===`toolCall`){i();let e=a,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)}}i()}else if(r.role===`toolResult`){let e=n.get(String(r.toolCallId));e&&(e.status=r.isError?`error`:`done`,e.resultText=ed(r.content),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??ed(r.content)})}return t}var id=0,ad=20;function od(e){let t=e.toasts.length-ad;t>0&&e.toasts.splice(0,t)}function sd(e){let t=Date.parse(e.startedAt);return Number.isFinite(t)?t:0}function cd(e){let t=Object.values(e.backgroundAgents).filter(e=>e.status!==`running`).sort((e,t)=>sd(e)-sd(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 ld(e){e.needsAttention=e.uiRequests.length>0||e.statusEntries.some(e=>e.tone===`error`)||!!e.suggestedCommand}function ud(e){for(let t=e.entries.length-1;t>=0;t--){let n=e.entries[t];if(n.kind===`assistant`)return n}}function dd(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 fd(e,t){switch(t.type){case`agent_start`:e.streaming=!0;break;case`agent_end`:{e.streaming=!1;let t=ud(e);t&&(t.streaming=!1);break}case`message_start`:{let n=t.message;n?.role===`user`?e.entries.push(nd(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=ud(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=ud(e);if(t?.streaming){let e=rd([n]).find(e=>e.kind===`assistant`);e&&(t.blocks=e.blocks,t.model=e.model),t.streaming=!1}else t||e.entries.push(...rd([n]))}else if(n?.role===`user`){let t=e.entries[e.entries.length-1],r=nd(n);r.kind===`agent-result`?t?.kind===`agent-result`&&t.raw===r.raw||e.entries.push(r):t?.kind===`user`&&t.text===r.text||e.entries.push(r)}break}case`tool_execution_start`:e.entries.push({kind:`tool`,toolCallId:String(t.toolCallId),toolName:String(t.toolName),args:t.args,status:`running`,resultText:``,startedAt:Date.now()});break;case`tool_execution_update`:{let n=dd(e,String(t.toolCallId));if(n){let e=t.partialResult;n.resultText=typeof e==`string`?e:e?.content?ed(e.content):n.resultText}break}case`tool_execution_end`:{let n=dd(e,String(t.toolCallId));if(n){n.status=t.isError?`error`:`done`;let e=t.result;n.resultText=typeof e==`string`?e:e?.content?ed(e.content):n.resultText,n.details=t.result?.details,n.endedAt=Date.now()}break}default:break}}function pd(e,t){switch(fd(e,t),t.type){case`agent_start`:e.workingText=`working`,e.workingSince=Date.now(),e.lastError=void 0,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`tool_execution_start`:e.workingText=`${t.toolName}`;break;case`auto_compaction_start`:e.compacting=!0,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`: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&&(e.statusEntries.push({key:`error`,text:String(t.finalError),tone:`error`}),e.lastError=String(t.finalError));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=ud(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=ud(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`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),cd(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),fd(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_request`:{let n=t.method;if(n===`select`||n===`confirm`||n===`input`||n===`editor`)e.uiRequests.push({id:String(t.id),method:n,title:String(t.title??``),message:t.message,options:t.options,prefill:t.prefill,placeholder:t.placeholder});else if(n===`notify`){id+=1;let n=t.notifyType??`info`;e.toasts.push({id,text:String(t.message??``),tone:n}),od(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`:id+=1,e.toasts.push({id,text:`extension error: ${t.error}`,tone:`error`}),od(e);break;default:break}ld(e)}function md(e,t){e.toasts=e.toasts.filter(e=>e.id!==t)}var hd=Symbol(`store-raw`),gd=Symbol(`store-node`),_d=Symbol(`store-has`),vd=Symbol(`store-self`);function yd(e){let t=e[p];if(!t&&(Object.defineProperty(e,p,{value:t=new Proxy(e,Dd)}),!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 bd(e){let t;return typeof e==`object`&&!!e&&(e[p]||!(t=Object.getPrototypeOf(e))||t===Object.prototype||Array.isArray(e))}function xd(e,t=new Set){let n,r,i,a;if(n=e!=null&&e[hd])return n;if(!bd(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=xd(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=xd(i,t))!==i&&(e[a]=r))}return e}function Sd(e,t){let n=e[t];return n||Object.defineProperty(e,t,{value:n=Object.create(null)}),n}function Cd(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 wd(e,t){let n=Reflect.getOwnPropertyDescriptor(e,t);return!n||n.get||!n.configurable||t===p||t===gd?n:(delete n.value,delete n.writable,n.get=()=>e[p][t],n)}function Td(e){B()&&Cd(Sd(e,gd),vd)()}function Ed(e){return Td(e),Reflect.ownKeys(e)}var Dd={get(e,t,n){if(t===hd)return e;if(t===p)return n;if(t===m)return Td(e),n;let r=Sd(e,gd),i=r[t],a=i?i():e[t];if(t===gd||t===_d||t===`__proto__`)return a;if(!i){let n=Object.getOwnPropertyDescriptor(e,t);B()&&(typeof a!=`function`||Object.prototype.hasOwnProperty.call(e,t))&&!(n&&n.get)&&(a=Cd(r,t,a)())}return bd(a)?yd(a):a},has(e,t){return t===hd||t===p||t===m||t===gd||t===_d||t===`__proto__`?!0:(B()&&Cd(Sd(e,_d),t)(),t in e)},set(){return!0},deleteProperty(){return!0},ownKeys:Ed,getOwnPropertyDescriptor:wd};function Od(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[_d]&&e[_d][t]&&i!==void 0&&e[_d][t].$()):(e[t]=n,e[_d]&&e[_d][t]&&i===void 0&&e[_d][t].$());let o=Sd(e,gd),s;if((s=Cd(o,t,i))&&s.$(()=>n),Array.isArray(e)&&e.length!==a){for(let t=e.length;t<a;t++)(s=o[t])&&s.$();(s=Cd(o,`length`,a))&&s.$(e.length)}(s=o[vd])&&s.$()}function kd(e,t){let n=Object.keys(t);for(let r=0;r<n.length;r+=1){let i=n[r];Ad(i)||Od(e,i,t[i])}}function Ad(e){return e===`__proto__`||e===`constructor`||e===`prototype`}function jd(e,t){if(typeof t==`function`&&(t=t(e)),t=xd(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&&Od(e,n,r)}Od(e,`length`,r)}else kd(e,t)}function Md(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&&Ad(r)))return;if(Array.isArray(r)){for(let i=0;i<r.length;i++)Md(e,[r[i]].concat(t),n);return}else if(o&&a===`function`){for(let i=0;i<e.length;i++)r(e[i],i)&&Md(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)Md(e,[r].concat(t),n);return}else if(t.length>1){Md(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=xd(a),r===void 0||bd(i)&&bd(a)&&!Array.isArray(a)?kd(i,a):Od(e,r,a))}function Nd(...[e,t]){let n=xd(e||{}),r=Array.isArray(n),i=yd(n);function a(...e){I(()=>{r&&e.length===1?jd(n,e[0]):Md(n,e)})}return[i,a]}var Pd=new WeakMap,Fd={get(e,t){if(t===hd)return e;let n=e[t];if(t===p||t===m||t===gd||t===_d||t===`__proto__`)return n;let r;return bd(n)?Pd.get(n)||(Pd.set(n,r=new Proxy(n,Fd)),r):n},set(e,t,n){return Od(e,t,xd(n)),!0},deleteProperty(e,t){return Od(e,t,void 0,!0),!0}};function Id(e){return t=>{if(bd(t)){let n;(n=Pd.get(t))||Pd.set(t,n=new Proxy(t,Fd)),e(n)}return t}}function Ld(){let[e,...t]=window.location.hash.replace(/^#\/?/,``).split(`/`);return e===`session`&&t[0]?t[1]===`subagent`&&t[2]?{screen:`subagent`,key:t[0],agentId:t[2]}:{screen:`session`,key:t[0]}:e===`files`?{screen:`files`,path:t.length?decodeURIComponent(t.join(`/`)):void 0}:e===`settings`?{screen:`settings`}:e===`pairing`?{screen:`pairing`}:{screen:`fleet`}}function Rd(e){switch(e.screen){case`fleet`:return`#/`;case`session`:return`#/session/${e.key}`;case`subagent`:return`#/session/${e.key}/subagent/${e.agentId}`;case`files`:return e.path?`#/files/${encodeURIComponent(e.path)}`:`#/files`;case`settings`:return`#/settings`;case`pairing`:return`#/pairing`}}var zd=2e3,Bd=3*1024*1024,Vd=zd,Hd=Bd,Ud=3e4,Wd=1e4,Gd=1e3,Kd=3e4,qd=new TextEncoder;function Jd(){let[e,t]=Nd({}),[n,r]=Nd({}),[i,a]=k(Ld()),[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,B=new Map,ee=0,te=0,ne,re=new Set,ie=!1;window.addEventListener(`hashchange`,()=>a(Ld()));function V(e){window.location.hash=Rd(e)}function ae(e){return n[e]??0}function H(e){return C.get(e)??0}function oe(e){return w.get(e)??0}function U(e){w.set(e,oe(e)+1)}function se(e){C.set(e,H(e)+1)}function ce(e){return{revision:ae(e),generation:H(e),epoch:E}}function le(e,t){return H(e)===t.generation&&E===t.epoch}function ue(e,t){return ae(e)===t.revision&&le(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,ae(e)+1)}function pe(n){e[n]||t(n,$u(n))}function me(e,n){pe(e),t(e,Id(n)),fe(e)}function he(e){de(e),se(e),w.delete(e),t(e,void 0),r(e,void 0),Ns(e)}function ge(){let e=Ld();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):B.set(e,Math.max(B.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){re.clear(),be(()=>e)}function Se(e,t){let n=new Set(e.filter(e=>!re.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=>!re.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=re.has(e);return re.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=++ee,t=L;return Q.fleet().then(n=>{e!==ee||t!==L||(xe(n),l(void 0))},n=>{throw e===ee&&t===L&&l(n instanceof Error?n.message:String(n)),n})}function we(){let e=++te;return Q.sessions().then(t=>{e===te&&(be(e=>({...e,diskSessions:t.sessions})),l(void 0))},t=>{throw e===te&&l(t instanceof Error?t.message:String(t)),t})}function G(e){re.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=B.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 ${Wd} ms`);i(n),t.abort(n)},Wd)});return Promise.race([Q.stats(e,t.signal),r]).finally(()=>{n!==void 0&&clearTimeout(n)})}function Oe(){if(ne)return ne;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(()=>{ne===r&&(ne=void 0)});return ne=r,r}function ke(e){return qd.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(Kd,Gd*2**Math.max(0,P-1))}function je(){if(ie||j!==void 0)return;P+=1;let e=Y();h(!1),M||=v(),y(t=>t.state===`auth_failed`?t:(N=!0,{...t,state:`retrying`,attempt:Math.max(t.attempt,P),retryDelayMs:e,retryAt:Date.now()+e})),j=setTimeout(()=>{j=void 0,Fe()},e)}function Me(){let e=M,t=N;M=void 0,N=!1,!(!t||e?.state!==`connected`||v().state!==`retrying`)&&y({state:`connected`,attempt:e.attempt,lastAppliedSeq:e.lastAppliedSeq})}function Ne(e){let t=e.event?.type;if(t===`fleet_snapshot`)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`),V({screen:`fleet`}))}}else e.key&&(me(e.key,t=>pd(t,e.event)),t===`tasks_update`&&U(e.key))}function Pe(e){let t=e.subagent;me(e.key,n=>{if(n.entries=rd(e.messages),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=[],n.statusEntries=[],n.suggestedCommand=void 0,n.lastError=void 0,n.widgets={above:[],below:[]},n.toasts=[],n.title=void 0,n.composerPrefill=void 0,ld(n),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])),cd(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:rd(t.messages),streaming:r.status===`running`}}}),U(e.key)}function X(e,t){if(A!==e||e.state!==`active`||e.barrierSeq===void 0)return;Ae(),P=0,Me();let n=e.barrierSeq;if(I=n,xe(t.fleet),l(void 0),t.active)Pe(t.active);else{let e=ge();e&&(he(e),_e(`session ${e} was stopped`,`warning`),V({screen:`fleet`}))}let r=[...e.queued].sort((e,t)=>e.seq-t.seq),i=t.active?.subagent;if(i&&t.active)for(let e of r)e.seq>i.barrierSeq&&e.seq<=n&&e.key===t.active.key&&e.event.type===`background_agent_event`&&String(e.event.agentId)===i.agentId&&Ne(e);for(let e of r)e.seq>n&&Ne(e);J(e),A=void 0,h(!1),p(void 0)}function Fe(e=!1){if(ie)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`),Ud),s=Q.resync(n,r,a.controller.signal).then(e=>{a.barrierSeq=e.barrierSeq,X(a,e)}).catch(e=>{if(A!==a)return;a.state=`failed`,J(a);let t=a.controller.signal.reason;p(typeof t==`string`?t:e instanceof Error?e.message:String(e)),je(),j===void 0&&h(!1)}).finally(()=>{clearTimeout(o),O===s&&(O=void 0),!ie&&F&&(F=!1,Fe())});return O=s,s}function Ie(){return Fe(!0)}function Le(e){if(e.event?.type===`dashboard_resync`){Fe(!0);return}if(A){if(A.state===`failed`)throw je(),Error(`Dashboard recovery is failed; refusing to acknowledge live envelope before resync succeeds`);let t=ke(e);if(A.queued.length>=zd||A.queuedBytes+t>Bd){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>=Vd||t.queuedBytes+n>Hd)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(){ie=!1;try{let e=await Q.auth();_(e)}catch(e){_({mode:`remote`,needsPairing:e?.body?.needsPairing??!1,identity:e?.body?.identity,error:e?.message}),V({screen:`pairing`});return}await W().catch(()=>{}),Re=pt({onEnvelope:Le,onStatusChange:e=>{N=!1,M=e.state===`connected`?e:void 0,y(e)},onRecovery:()=>{Fe()}})}function Be(){ie=!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=>md(e,t));return}}async function He(e,t){de(e);let n=ve(e),r={guard:ce(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||!le(e,r.guard))return;me(e,e=>{e.entries=rd(i.messages),e.backgroundAgents=Object.fromEntries(i.backgroundAgents.map(e=>[e.agentId,e])),cd(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)}),U(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=ce(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=rd(a)),n.streaming=i.status===`running`})}return{sessions:e,revisions:n,route:i,navigate:V,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,hydrateSession:He,hydrateSubagent:Ue}}var Yd=5e3;function Xd(e){let t;return Promise.race([e,new Promise((e,n)=>{t=setTimeout(()=>n(Error(`service worker not ready`)),Yd)})]).finally(()=>{t&&clearTimeout(t)})}function Zd(){let e=Jd();R(()=>{e.start(),`serviceWorker`in navigator&&(navigator.serviceWorker.addEventListener(`message`,t=>{if(t.data?.type===`navigate-session`&&typeof t.data.sessionKey==`string`){let n=t.data.sessionKey,r=!!e.sessions[n]||e.fleet().runtimes.some(e=>e.key===n);e.navigate(r?{screen:`session`,key:n}:{screen:`fleet`})}}),navigator.serviceWorker.register(`./sw.js`).catch(e=>{console.warn(`dashboard: service worker registration failed`,e)}))}),z(()=>e.stop());let t=new Set,n=new Set,r=t=>!!(e.fleet().runtimes.find(e=>e.key===t)?.needsAttention||e.sessions[t]?.needsAttention);M(()=>{let i=new Map;for(let t of e.fleet().runtimes)t.needsAttention&&i.set(t.key,{name:t.state.sessionName??t.state.sessionId.slice(0,8),reason:`needs attention`});for(let t of Object.values(e.sessions))t.needsAttention&&i.set(t.key,{name:t.sessionName??t.title??t.key,reason:t.uiRequests[0]?.title?`waiting for input — ${t.uiRequests[0].title}`:t.statusEntries.find(e=>e.tone===`error`)?.text??`needs attention`});let a=i.size>0,o=e.route(),s=o.screen===`session`||o.screen===`subagent`?o.key:void 0,c=s?e.sessions[s]:void 0,l=s?e.fleet().runtimes.find(e=>e.key===s):void 0,u=c?.title??c?.sessionName??l?.state.sessionName,d=u?`${u} — dreb`:`dreb`;document.title=a?`◆ ${d}`:d;for(let[e,a]of i)n.has(e)||t.has(e)||typeof Notification<`u`&&Notification.permission===`granted`&&document.visibilityState!==`visible`&&`serviceWorker`in navigator&&(t.add(e),Xd(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(vn,{store:e})},get children(){return[W(Ee,{get when(){return e.route().screen===`session`},get children(){return W(pl,{store:e,get sessionKey(){return e.route().key}})}}),W(Ee,{get when(){return e.route().screen===`subagent`},get children(){return W(Qu,{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(Nt,{store:e,get initialPath(){return e.route().path}})}}),W(Ee,{get when(){return e.route().screen===`settings`},get children(){return W(qu,{store:e})}}),W(Ee,{get when(){return e.route().screen===`pairing`},get children(){return W(wn,{store:e})}})]}}),W(rt,{get toasts(){return i()},onDismiss:t=>e.dismissToast(t)})]}Wl();var Qd=document.getElementById(`root`);if(!Qd)throw Error(`dashboard: #root element missing from index.html`);ke(()=>W(Zd,{}),Qd);
79
+ `).trim()||a),{kind:`agent-result`,text:o,header:a,raw:e,timestamp:t}}function ld(e){let t=sd(e.content);return cd(t,e.timestamp)??{kind:`user`,text:t,timestamp:e.timestamp}}function ud(e){let t=[],n=new Map;for(let r of e)if(r.role===`user`)t.push(ld(r));else if(r.role===`assistant`){let e=[],i=()=>{e.length!==0&&(t.push({kind:`assistant`,blocks:e,model:r.model,streaming:!1,timestamp:r.timestamp}),e=[])};if(Array.isArray(r.content)){for(let a of r.content)if(a.type===`text`&&typeof a.text==`string`)e.push({kind:`text`,text:a.text});else if(a.type===`thinking`&&typeof a.thinking==`string`)e.push({kind:`thinking`,text:a.thinking});else if(a.type===`toolCall`){i();let e=a,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)}}i()}else if(r.role===`toolResult`){let e=n.get(String(r.toolCallId));if(e){e.status=r.isError?`error`:`done`;let t=od(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??sd(r.content)})}return t}var dd=0,fd=20;function pd(e){let t=e.toasts.length-fd;t>0&&e.toasts.splice(0,t)}function md(e){let t=Date.parse(e.startedAt);return Number.isFinite(t)?t:0}function hd(e){let t=Object.values(e.backgroundAgents).filter(e=>e.status!==`running`).sort((e,t)=>md(e)-md(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 gd(e){e.needsAttention=e.uiRequests.length>0||e.statusEntries.some(e=>e.tone===`error`)||!!e.suggestedCommand}function _d(e){for(let t=e.entries.length-1;t>=0;t--){let n=e.entries[t];if(n.kind===`assistant`)return n}}function vd(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 yd(e,t){switch(t.type){case`agent_start`:e.streaming=!0;break;case`agent_end`:{e.streaming=!1;let t=_d(e);t&&(t.streaming=!1);break}case`message_start`:{let n=t.message;n?.role===`user`?e.entries.push(ld(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=_d(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=_d(e);if(t?.streaming){let e=ud([n]).find(e=>e.kind===`assistant`);e&&(t.blocks=e.blocks,t.model=e.model),t.streaming=!1}else t||e.entries.push(...ud([n]))}else if(n?.role===`user`){let t=e.entries[e.entries.length-1],r=ld(n);r.kind===`agent-result`?t?.kind===`agent-result`&&t.raw===r.raw||e.entries.push(r):t?.kind===`user`&&t.text===r.text||e.entries.push(r)}break}case`tool_execution_start`:e.entries.push({kind:`tool`,toolCallId:String(t.toolCallId),toolName:String(t.toolName),args:t.args,status:`running`,resultText:``,startedAt:Date.now()});break;case`tool_execution_update`:{let n=vd(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=od(e.content);n.resultText=t.text,n.images=t.images.length>0?t.images:void 0}}break}case`tool_execution_end`:{let n=vd(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=od(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 bd(e,t){switch(yd(e,t),t.type){case`agent_start`:e.workingText=`working`,e.workingSince=Date.now(),e.lastError=void 0,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`tool_execution_start`:e.workingText=`${t.toolName}`;break;case`auto_compaction_start`:e.compacting=!0,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`: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&&(e.statusEntries.push({key:`error`,text:String(t.finalError),tone:`error`}),e.lastError=String(t.finalError));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=_d(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=_d(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`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),hd(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),yd(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_request`:{let n=t.method;if(n===`select`||n===`confirm`||n===`input`||n===`editor`)e.uiRequests.push({id:String(t.id),method:n,title:String(t.title??``),message:t.message,options:t.options,prefill:t.prefill,placeholder:t.placeholder});else if(n===`notify`){dd+=1;let n=t.notifyType??`info`;e.toasts.push({id:dd,text:String(t.message??``),tone:n}),pd(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`:dd+=1,e.toasts.push({id:dd,text:`extension error: ${t.error}`,tone:`error`}),pd(e);break;default:break}gd(e)}function xd(e,t){e.toasts=e.toasts.filter(e=>e.id!==t)}var Sd=Symbol(`store-raw`),Cd=Symbol(`store-node`),wd=Symbol(`store-has`),Td=Symbol(`store-self`);function Ed(e){let t=e[p];if(!t&&(Object.defineProperty(e,p,{value:t=new Proxy(e,Pd)}),!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 Dd(e){let t;return typeof e==`object`&&!!e&&(e[p]||!(t=Object.getPrototypeOf(e))||t===Object.prototype||Array.isArray(e))}function Od(e,t=new Set){let n,r,i,a;if(n=e!=null&&e[Sd])return n;if(!Dd(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=Od(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=Od(i,t))!==i&&(e[a]=r))}return e}function kd(e,t){let n=e[t];return n||Object.defineProperty(e,t,{value:n=Object.create(null)}),n}function Ad(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 jd(e,t){let n=Reflect.getOwnPropertyDescriptor(e,t);return!n||n.get||!n.configurable||t===p||t===Cd?n:(delete n.value,delete n.writable,n.get=()=>e[p][t],n)}function Md(e){B()&&Ad(kd(e,Cd),Td)()}function Nd(e){return Md(e),Reflect.ownKeys(e)}var Pd={get(e,t,n){if(t===Sd)return e;if(t===p)return n;if(t===m)return Md(e),n;let r=kd(e,Cd),i=r[t],a=i?i():e[t];if(t===Cd||t===wd||t===`__proto__`)return a;if(!i){let n=Object.getOwnPropertyDescriptor(e,t);B()&&(typeof a!=`function`||Object.prototype.hasOwnProperty.call(e,t))&&!(n&&n.get)&&(a=Ad(r,t,a)())}return Dd(a)?Ed(a):a},has(e,t){return t===Sd||t===p||t===m||t===Cd||t===wd||t===`__proto__`?!0:(B()&&Ad(kd(e,wd),t)(),t in e)},set(){return!0},deleteProperty(){return!0},ownKeys:Nd,getOwnPropertyDescriptor:jd};function Fd(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[wd]&&e[wd][t]&&i!==void 0&&e[wd][t].$()):(e[t]=n,e[wd]&&e[wd][t]&&i===void 0&&e[wd][t].$());let o=kd(e,Cd),s;if((s=Ad(o,t,i))&&s.$(()=>n),Array.isArray(e)&&e.length!==a){for(let t=e.length;t<a;t++)(s=o[t])&&s.$();(s=Ad(o,`length`,a))&&s.$(e.length)}(s=o[Td])&&s.$()}function Id(e,t){let n=Object.keys(t);for(let r=0;r<n.length;r+=1){let i=n[r];Ld(i)||Fd(e,i,t[i])}}function Ld(e){return e===`__proto__`||e===`constructor`||e===`prototype`}function Rd(e,t){if(typeof t==`function`&&(t=t(e)),t=Od(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&&Fd(e,n,r)}Fd(e,`length`,r)}else Id(e,t)}function zd(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&&Ld(r)))return;if(Array.isArray(r)){for(let i=0;i<r.length;i++)zd(e,[r[i]].concat(t),n);return}else if(o&&a===`function`){for(let i=0;i<e.length;i++)r(e[i],i)&&zd(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)zd(e,[r].concat(t),n);return}else if(t.length>1){zd(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=Od(a),r===void 0||Dd(i)&&Dd(a)&&!Array.isArray(a)?Id(i,a):Fd(e,r,a))}function Bd(...[e,t]){let n=Od(e||{}),r=Array.isArray(n),i=Ed(n);function a(...e){I(()=>{r&&e.length===1?Rd(n,e[0]):zd(n,e)})}return[i,a]}var Vd=new WeakMap,Hd={get(e,t){if(t===Sd)return e;let n=e[t];if(t===p||t===m||t===Cd||t===wd||t===`__proto__`)return n;let r;return Dd(n)?Vd.get(n)||(Vd.set(n,r=new Proxy(n,Hd)),r):n},set(e,t,n){return Fd(e,t,Od(n)),!0},deleteProperty(e,t){return Fd(e,t,void 0,!0),!0}};function Ud(e){return t=>{if(Dd(t)){let n;(n=Vd.get(t))||Vd.set(t,n=new Proxy(t,Hd)),e(n)}return t}}function Wd(){let[e,...t]=window.location.hash.replace(/^#\/?/,``).split(`/`);return e===`session`&&t[0]?t[1]===`subagent`&&t[2]?{screen:`subagent`,key:t[0],agentId:t[2]}:{screen:`session`,key:t[0]}:e===`files`?{screen:`files`,path:t.length?decodeURIComponent(t.join(`/`)):void 0}:e===`settings`?{screen:`settings`}:e===`pairing`?{screen:`pairing`}:{screen:`fleet`}}function Gd(e){switch(e.screen){case`fleet`:return`#/`;case`session`:return`#/session/${e.key}`;case`subagent`:return`#/session/${e.key}/subagent/${e.agentId}`;case`files`:return e.path?`#/files/${encodeURIComponent(e.path)}`:`#/files`;case`settings`:return`#/settings`;case`pairing`:return`#/pairing`}}var Kd=2e3,qd=3*1024*1024,Jd=Kd,Yd=qd,Xd=3e4,Zd=1e4,Qd=1e3,$d=3e4,ef=new TextEncoder;function tf(){let[e,t]=Bd({}),[n,r]=Bd({}),[i,a]=k(Wd()),[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,B=new Map,ee=0,te=0,ne,re=new Set,ie=!1;window.addEventListener(`hashchange`,()=>a(Wd()));function V(e){window.location.hash=Gd(e)}function ae(e){return n[e]??0}function H(e){return C.get(e)??0}function oe(e){return w.get(e)??0}function U(e){w.set(e,oe(e)+1)}function se(e){C.set(e,H(e)+1)}function ce(e){return{revision:ae(e),generation:H(e),epoch:E}}function le(e,t){return H(e)===t.generation&&E===t.epoch}function ue(e,t){return ae(e)===t.revision&&le(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,ae(e)+1)}function pe(n){e[n]||t(n,rd(n))}function me(e,n){pe(e),t(e,Ud(n)),fe(e)}function he(e){de(e),se(e),w.delete(e),t(e,void 0),r(e,void 0),Ls(e)}function ge(){let e=Wd();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):B.set(e,Math.max(B.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){re.clear(),be(()=>e)}function Se(e,t){let n=new Set(e.filter(e=>!re.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=>!re.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=re.has(e);return re.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=++ee,t=L;return Q.fleet().then(n=>{e!==ee||t!==L||(xe(n),l(void 0))},n=>{throw e===ee&&t===L&&l(n instanceof Error?n.message:String(n)),n})}function we(){let e=++te;return Q.sessions().then(t=>{e===te&&(be(e=>({...e,diskSessions:t.sessions})),l(void 0))},t=>{throw e===te&&l(t instanceof Error?t.message:String(t)),t})}function G(e){re.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=B.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 ${Zd} ms`);i(n),t.abort(n)},Zd)});return Promise.race([Q.stats(e,t.signal),r]).finally(()=>{n!==void 0&&clearTimeout(n)})}function Oe(){if(ne)return ne;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(()=>{ne===r&&(ne=void 0)});return ne=r,r}function ke(e){return ef.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($d,Qd*2**Math.max(0,P-1))}function je(){if(ie||j!==void 0)return;P+=1;let e=Y();h(!1),M||=v(),y(t=>t.state===`auth_failed`?t:(N=!0,{...t,state:`retrying`,attempt:Math.max(t.attempt,P),retryDelayMs:e,retryAt:Date.now()+e})),j=setTimeout(()=>{j=void 0,Fe()},e)}function Me(){let e=M,t=N;M=void 0,N=!1,!(!t||e?.state!==`connected`||v().state!==`retrying`)&&y({state:`connected`,attempt:e.attempt,lastAppliedSeq:e.lastAppliedSeq})}function Ne(e){let t=e.event?.type;if(t===`fleet_snapshot`)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`),V({screen:`fleet`}))}}else e.key&&(me(e.key,t=>bd(t,e.event)),t===`tasks_update`&&U(e.key))}function Pe(e){let t=e.subagent;me(e.key,n=>{if(n.entries=ud(e.messages),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=[],n.statusEntries=[],n.suggestedCommand=void 0,n.lastError=void 0,n.widgets={above:[],below:[]},n.toasts=[],n.title=void 0,n.composerPrefill=void 0,gd(n),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])),hd(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:ud(t.messages),streaming:r.status===`running`}}}),U(e.key)}function X(e,t){if(A!==e||e.state!==`active`||e.barrierSeq===void 0)return;Ae(),P=0,Me();let n=e.barrierSeq;if(I=n,xe(t.fleet),l(void 0),t.active)Pe(t.active);else{let e=ge();e&&(he(e),_e(`session ${e} was stopped`,`warning`),V({screen:`fleet`}))}let r=[...e.queued].sort((e,t)=>e.seq-t.seq),i=t.active?.subagent;if(i&&t.active)for(let e of r)e.seq>i.barrierSeq&&e.seq<=n&&e.key===t.active.key&&e.event.type===`background_agent_event`&&String(e.event.agentId)===i.agentId&&Ne(e);for(let e of r)e.seq>n&&Ne(e);J(e),A=void 0,h(!1),p(void 0)}function Fe(e=!1){if(ie)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`),Xd),s=Q.resync(n,r,a.controller.signal).then(e=>{a.barrierSeq=e.barrierSeq,X(a,e)}).catch(e=>{if(A!==a)return;a.state=`failed`,J(a);let t=a.controller.signal.reason;p(typeof t==`string`?t:e instanceof Error?e.message:String(e)),je(),j===void 0&&h(!1)}).finally(()=>{clearTimeout(o),O===s&&(O=void 0),!ie&&F&&(F=!1,Fe())});return O=s,s}function Ie(){return Fe(!0)}function Le(e){if(e.event?.type===`dashboard_resync`){Fe(!0);return}if(A){if(A.state===`failed`)throw je(),Error(`Dashboard recovery is failed; refusing to acknowledge live envelope before resync succeeds`);let t=ke(e);if(A.queued.length>=Kd||A.queuedBytes+t>qd){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>=Jd||t.queuedBytes+n>Yd)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(){ie=!1;try{let e=await Q.auth();_(e)}catch(e){_({mode:`remote`,needsPairing:e?.body?.needsPairing??!1,identity:e?.body?.identity,error:e?.message}),V({screen:`pairing`});return}await W().catch(()=>{}),Re=pt({onEnvelope:Le,onStatusChange:e=>{N=!1,M=e.state===`connected`?e:void 0,y(e)},onRecovery:()=>{Fe()}})}function Be(){ie=!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=>xd(e,t));return}}async function He(e,t){de(e);let n=ve(e),r={guard:ce(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||!le(e,r.guard))return;me(e,e=>{e.entries=ud(i.messages),e.backgroundAgents=Object.fromEntries(i.backgroundAgents.map(e=>[e.agentId,e])),hd(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)}),U(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=ce(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=ud(a)),n.streaming=i.status===`running`})}return{sessions:e,revisions:n,route:i,navigate:V,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,hydrateSession:He,hydrateSubagent:Ue}}var nf=5e3;function rf(e){let t;return Promise.race([e,new Promise((e,n)=>{t=setTimeout(()=>n(Error(`service worker not ready`)),nf)})]).finally(()=>{t&&clearTimeout(t)})}function af(){let e=tf();R(()=>{e.start(),`serviceWorker`in navigator&&(navigator.serviceWorker.addEventListener(`message`,t=>{if(t.data?.type===`navigate-session`&&typeof t.data.sessionKey==`string`){let n=t.data.sessionKey,r=!!e.sessions[n]||e.fleet().runtimes.some(e=>e.key===n);e.navigate(r?{screen:`session`,key:n}:{screen:`fleet`})}}),navigator.serviceWorker.register(`./sw.js`).catch(e=>{console.warn(`dashboard: service worker registration failed`,e)}))}),z(()=>e.stop());let t=new Set,n=new Set,r=t=>!!(e.fleet().runtimes.find(e=>e.key===t)?.needsAttention||e.sessions[t]?.needsAttention);M(()=>{let i=new Map;for(let t of e.fleet().runtimes)t.needsAttention&&i.set(t.key,{name:t.state.sessionName??t.state.sessionId.slice(0,8),reason:`needs attention`});for(let t of Object.values(e.sessions))t.needsAttention&&i.set(t.key,{name:t.sessionName??t.title??t.key,reason:t.uiRequests[0]?.title?`waiting for input — ${t.uiRequests[0].title}`:t.statusEntries.find(e=>e.tone===`error`)?.text??`needs attention`});let a=i.size>0,o=e.route(),s=o.screen===`session`||o.screen===`subagent`?o.key:void 0,c=s?e.sessions[s]:void 0,l=s?e.fleet().runtimes.find(e=>e.key===s):void 0,u=c?.title??c?.sessionName??l?.state.sessionName,d=u?`${u} — dreb`:`dreb`;document.title=a?`◆ ${d}`:d;for(let[e,a]of i)n.has(e)||t.has(e)||typeof Notification<`u`&&Notification.permission===`granted`&&document.visibilityState!==`visible`&&`serviceWorker`in navigator&&(t.add(e),rf(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(vn,{store:e})},get children(){return[W(Ee,{get when(){return e.route().screen===`session`},get children(){return W(_l,{store:e,get sessionKey(){return e.route().key}})}}),W(Ee,{get when(){return e.route().screen===`subagent`},get children(){return W(nd,{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(Nt,{store:e,get initialPath(){return e.route().path}})}}),W(Ee,{get when(){return e.route().screen===`settings`},get children(){return W(Zu,{store:e})}}),W(Ee,{get when(){return e.route().screen===`pairing`},get children(){return W(wn,{store:e})}})]}}),W(rt,{get toasts(){return i()},onDismiss:t=>e.dismissToast(t)})]}Jl();var of=document.getElementById(`root`);if(!of)throw Error(`dashboard: #root element missing from index.html`);ke(()=>W(af,{}),of);
@@ -55,8 +55,8 @@
55
55
  } catch (e) {}
56
56
  })();
57
57
  </script>
58
- <script type="module" crossorigin src="./assets/index-BrWSaUHE.js"></script>
59
- <link rel="stylesheet" crossorigin href="./assets/index-C0tLqeae.css">
58
+ <script type="module" crossorigin src="./assets/index-pIhYczTO.js"></script>
59
+ <link rel="stylesheet" crossorigin href="./assets/index-0AYVPowv.css">
60
60
  </head>
61
61
  <body>
62
62
  <div id="root"></div>
package/dist/static/sw.js CHANGED
@@ -14,7 +14,7 @@
14
14
  */
15
15
 
16
16
  // Replaced at build time; see vite.config.ts generateBundle hook.
17
- const SW_CACHE_VERSION = "2.45.0";
17
+ const SW_CACHE_VERSION = "2.45.1";
18
18
  const SHELL_CACHE = `dreb-dashboard-shell-v${SW_CACHE_VERSION}`;
19
19
 
20
20
  // Shell assets (HTML, JS, CSS) get a network-first strategy. The dashboard
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dreb/dashboard",
3
- "version": "2.45.0",
3
+ "version": "2.45.1",
4
4
  "description": "Web dashboard for dreb — fleet overview, chat parity, subagent observability",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- :root{--bg:#fff;--text:#000;--border:#e0e0e0;--muted:#666;--status-running:#00871f;--status-attention:#8a5400;--status-idle:#666;--status-error:#d10041;--mono-font:"IBM Plex Mono", "Courier New", monospace;--fs-small:12px;--fs-secondary:13px;--fs-body:14px;--fs-h3:16px;--fs-h2:18px;--fs-h1:24px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--radius:3px;--hairline:1px solid var(--border)}@media (prefers-color-scheme:dark){:root{--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d}}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}img,svg{max-width:100%;display:block}button,input,textarea,select{font:inherit;color:inherit}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius)}::-webkit-scrollbar-thumb:hover{background:var(--muted)}::-webkit-scrollbar-corner{background:0 0}body{background:var(--bg);color:var(--text);font-family:var(--mono-font);font-size:var(--fs-body);overflow-wrap:break-word;line-height:1.6;overflow-x:hidden}h1{font-size:var(--fs-h1);font-weight:500}h2{font-size:var(--fs-h2);font-weight:500}h3{font-size:var(--fs-h3);font-weight:500}a{color:var(--text);cursor:pointer}a:hover{color:var(--muted)}code,pre{font-family:var(--mono-font);font-size:var(--fs-secondary)}pre{border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);white-space:pre-wrap;word-break:break-word;overflow-x:auto}::placeholder{color:var(--muted);opacity:1}:focus-visible{outline:1px solid var(--text);outline-offset:2px}.muted{color:var(--muted)}.small{font-size:var(--fs-small)}.container{width:100%;max-width:1200px;padding:var(--space-4) var(--space-5);margin:0 auto}.topbar{border-bottom:var(--hairline);padding-top:env(safe-area-inset-top,0px)}.topbar-inner{max-width:1200px;padding:var(--space-3) var(--space-5);align-items:center;gap:var(--space-4);flex-wrap:wrap;margin:0 auto;display:flex}.wordmark{font-size:var(--fs-h2);letter-spacing:.04em;font-weight:600;text-decoration:none}.topbar nav{gap:var(--space-4);align-items:center;display:flex}.topbar nav a{padding:var(--space-1) 0;border-bottom:1px solid #0000;text-decoration:none}.topbar nav a:hover{color:var(--text);border-bottom-color:var(--text)}.topbar nav a[aria-current=page]{border-bottom-color:var(--text)}.topbar-spacer{margin-left:auto}.connection-indicator{align-items:center;gap:var(--space-2);display:inline-flex}footer{border-top:var(--hairline);margin-top:var(--space-7);padding:var(--space-4) 0;font-size:var(--fs-secondary);color:var(--muted)}.btn{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);cursor:pointer;font-size:var(--fs-body);text-decoration:none;transition:border-color .2s;display:inline-flex}.btn:hover{border-color:var(--text);color:var(--text)}.btn-primary{background:var(--text);color:var(--bg);border-color:var(--text)}.btn-primary:hover{color:var(--bg)}.btn-danger:hover{border-color:var(--status-error);color:var(--status-error)}.btn-small{padding:2px var(--space-2);font-size:var(--fs-small)}.chip{padding:1px var(--space-2);border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);white-space:nowrap;align-items:center;gap:6px;line-height:1.5;display:inline-flex}.chip .dot{font-size:10px}.chip-running{border-color:var(--status-running);color:var(--status-running)}.chip-attention{background:var(--status-attention);border-color:var(--status-attention);color:var(--bg);font-weight:600}.chip-idle{border-color:var(--border);color:var(--status-idle)}.chip-error{border-color:var(--status-error);color:var(--status-error)}.chip-plain{border-color:var(--border);color:var(--muted)}.card{border:var(--hairline);border-radius:var(--radius);padding:var(--space-4);transition:border-color .2s}a.card{text-decoration:none;display:block}.card:hover{border-color:var(--text);color:var(--text)}.input,.textarea,.select{width:100%;padding:var(--space-2) var(--space-3);border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-size:var(--fs-body);transition:border-color .2s}.input:hover,.textarea:hover,.select:hover{border-color:var(--text)}.textarea{resize:vertical;min-height:72px;line-height:1.6}.field{gap:var(--space-1);margin-bottom:var(--space-4);flex-direction:column;display:flex}.field>label{font-size:var(--fs-secondary)}.field>.hint{font-size:var(--fs-small);color:var(--muted)}.toggle{border:var(--hairline);border-radius:var(--radius);display:inline-flex;overflow:hidden}.toggle span{padding:2px var(--space-3);font-size:var(--fs-small);color:var(--muted)}.toggle .on{background:var(--text);color:var(--bg)}.table{border-collapse:collapse;width:100%;font-size:var(--fs-body)}.table th{text-align:left;font-weight:500;font-size:var(--fs-small);color:var(--muted);padding:var(--space-2) var(--space-3);border-bottom:var(--hairline)}.table td{padding:var(--space-2) var(--space-3);border-bottom:var(--hairline)}.modal-backdrop{padding:var(--space-4);background:#80808040;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg);border:1px solid var(--text);border-radius:var(--radius);width:100%;max-width:480px;padding:var(--space-5)}.modal h3{margin-bottom:var(--space-3)}.modal-actions{gap:var(--space-2);margin-top:var(--space-5);justify-content:flex-end;display:flex}.row{align-items:center;gap:var(--space-2);display:flex}.stack{gap:var(--space-2);flex-direction:column;display:flex}.hidden{display:none}:root{--syntax-comment:green;--syntax-keyword:#00f;--syntax-string:#a31515;--syntax-number:#098658;--syntax-function:#795e26;--syntax-type:#267f99;--syntax-variable:#001080;--syntax-operator:#000;--syntax-punctuation:#000}@media (prefers-color-scheme:dark){:root{--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}}html,body,#root{width:100%;min-width:0;max-width:100%}#root{flex-direction:column;min-height:100vh;display:flex}.screen-fill{flex-direction:column;flex:1;min-height:0;display:flex}.fleet-head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin:var(--space-5) 0 var(--space-6);flex-wrap:wrap;display:flex}.live-sessions{margin-bottom:var(--space-6)}.past-sessions-head{font-size:var(--fs-h3);color:var(--muted);border-bottom:var(--hairline);padding-bottom:var(--space-2);margin-bottom:var(--space-4)}.project-group{margin-bottom:var(--space-5)}.group-head{align-items:baseline;gap:var(--space-3);padding-bottom:var(--space-1);margin-bottom:var(--space-1);flex-wrap:wrap;display:flex}.group-head h2,.group-head h3{font-size:var(--fs-secondary);font-weight:600}.group-head .btn{margin-left:auto}.session-grid{gap:var(--space-4);margin-bottom:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(340px,1fr));display:grid}.session-card{border:var(--hairline);border-radius:var(--radius);min-width:0;padding:var(--space-4);gap:var(--space-2);flex-direction:column;transition:border-color .2s;display:flex}.session-card:hover{border-color:var(--text)}.session-card.attention{border-color:var(--status-attention)}.session-card.error{border-color:var(--status-error)}.session-title{justify-content:space-between;align-items:baseline;gap:var(--space-2);min-width:0;display:flex}.session-title .name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.session-project{font-size:var(--fs-small);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.attention-reason{font-weight:600;font-size:var(--fs-secondary)}.error-reason{color:var(--status-error);font-size:var(--fs-secondary)}.activity{font-size:var(--fs-secondary);color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.subagents{border-left:var(--hairline);padding-left:var(--space-3);font-size:var(--fs-small);flex-direction:column;gap:2px;display:flex}.subagents .agent-line{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.subagents .agent-line .live{color:var(--status-running)}.session-meta{font-size:var(--fs-small);color:var(--muted);gap:var(--space-1);flex-wrap:wrap;display:flex}.session-actions{gap:var(--space-2);padding-top:var(--space-2);flex-wrap:wrap;margin-top:auto;display:flex}.disk-row{align-items:center;gap:var(--space-3);border-bottom:var(--hairline);font-size:var(--fs-secondary);padding:2px 0;display:flex}.disk-row .name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.disk-row .meta{color:var(--muted);font-size:var(--fs-small);white-space:nowrap;margin-left:auto}.disk-row .actions{gap:var(--space-2);flex-shrink:0;display:flex}.disk-more{margin-top:var(--space-1);font-size:var(--fs-small);color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;text-decoration:underline;display:inline-block}.disk-more:hover{color:var(--text)}.empty-state{border:var(--hairline);border-radius:var(--radius);padding:var(--space-6);text-align:center;color:var(--muted);margin-top:var(--space-6)}.session-screen{flex-direction:column;width:100%;min-width:0;max-width:100%;height:100dvh;display:flex;overflow:hidden}.session-bar{border-bottom:var(--hairline);padding-top:env(safe-area-inset-top,0px);flex-shrink:0}.session-bar-inner{width:100%;min-width:0;max-width:960px;padding:var(--space-2) var(--space-4);align-items:center;gap:var(--space-3);flex-wrap:wrap;margin:0 auto;display:flex}.session-bar .back{white-space:nowrap;text-decoration:none}.session-bar .title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.session-bar .project,.session-bar .agent-type{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}.session-bar .right{align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0;margin-left:auto;display:flex}.session-connection-indicator{flex-wrap:wrap;flex:0 auto;min-width:0}.session-connection-indicator .chip,.session-connection-indicator .btn{font-size:var(--fs-small);padding:1px var(--space-2)}.session-info-bar{font-size:var(--fs-small);color:var(--muted);justify-content:space-between;padding-top:0}.session-info-left{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.session-info-right{gap:var(--space-2);flex-wrap:wrap;justify-content:flex-end;margin-left:auto;display:flex}.stats-trigger{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.stats-popover{right:max(var(--space-4), calc((100vw - 960px) / 2 + var(--space-4)));z-index:10;border:var(--hairline);border-radius:var(--radius);background:var(--bg);padding:var(--space-3);min-width:280px;position:absolute;top:78px;box-shadow:0 12px 32px #0000002e}.stats-grid{gap:var(--space-1) var(--space-3);font-size:var(--fs-small);grid-template-columns:1fr auto;display:grid}.stats-grid span{color:var(--muted)}.session-info-right span+span:before{content:"·";margin-right:var(--space-2);color:var(--muted)}.switcher{min-width:0;padding:1px var(--space-2);border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);background:var(--bg);color:var(--text);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;font-family:inherit;transition:border-color .2s;display:inline-flex}.switcher:hover{border-color:var(--text)}.switcher .label{color:var(--muted)}.switcher .value{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.model-switcher{max-width:min(340px,45vw)}.session-bar.collapsed{background:var(--bg)}.session-bar-main .chrome-toggle{margin-left:auto}.chrome-toggle{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--muted);font:inherit;font-size:var(--fs-small);padding:1px var(--space-2);cursor:pointer;white-space:nowrap}.chrome-toggle:hover{border-color:var(--text);color:var(--text)}.chat{flex:1;min-height:0;overflow-y:auto}.chat-inner{max-width:960px;padding:var(--space-4);gap:var(--space-4);flex-direction:column;margin:0 auto;display:flex}.assistant-turn{border-left:var(--hairline);padding-left:var(--space-3);gap:var(--space-3);flex-direction:column;display:flex}.entry{min-width:0}.entry-head{font-size:var(--fs-small);color:var(--muted);margin-bottom:var(--space-1);gap:var(--space-2);align-items:baseline;display:flex}.entry-action{color:var(--muted);font:inherit;font-size:var(--fs-small);cursor:pointer;opacity:.65;background:0 0;border:none;padding:0}.entry-action:hover{opacity:1;text-decoration:underline}.skill-badge,.queued-kind{border:var(--hairline);border-radius:var(--radius);padding:0 var(--space-1);font-size:var(--fs-small);color:var(--muted)}.entry.user{align-self:flex-end;max-width:85%}.entry.user .entry-body{border:1px solid var(--text);border-radius:var(--radius);padding:var(--space-2) var(--space-3);white-space:pre-wrap}.entry.user .entry-head{justify-content:flex-end}.entry.assistant{max-width:100%}.entry.assistant .entry-body{white-space:normal}.markdown-body{color:var(--text)}.markdown-body,.markdown-body *{-webkit-text-fill-color:currentColor}.markdown-body p,.markdown-body ul,.markdown-body ol,.markdown-body pre,.markdown-body blockquote,.markdown-body table{margin:0 0 var(--space-2)}.markdown-body :last-child{margin-bottom:0}.markdown-body ul,.markdown-body ol{padding-left:var(--space-5)}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{font-size:var(--fs-h3);margin:var(--space-2) 0 var(--space-1);font-weight:500}.markdown-body code{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-secondary);padding:0 4px}.markdown-body pre{background:var(--bg);margin-top:var(--space-1)}.markdown-body pre code{border:none;padding:0}.markdown-body a{text-decoration:underline}.markdown-body table{border-collapse:collapse;width:100%;font-size:var(--fs-secondary)}.markdown-body th,.markdown-body td{border:var(--hairline);padding:var(--space-1) var(--space-2);text-align:left}.markdown-body blockquote{border-left:var(--hairline);padding-left:var(--space-3);color:var(--muted)}.entry-body code{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-secondary);padding:0 4px}details.thinking{border-left:var(--hairline);padding-left:var(--space-3);margin-bottom:var(--space-3)}details.thinking summary{cursor:pointer;font-size:var(--fs-small);color:var(--muted);-webkit-user-select:none;user-select:none;list-style:none}details.thinking summary:before{content:"▸ "}details.thinking[open] summary:before{content:"▾ "}details.thinking .thinking-body{color:var(--muted);font-size:var(--fs-secondary);padding-top:var(--space-1);white-space:pre-wrap}.tool{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-secondary)}.tool summary{cursor:pointer;-webkit-user-select:none;user-select:none;gap:var(--space-2);padding:var(--space-1) var(--space-3);align-items:baseline;list-style:none;display:flex}.tool summary:before{content:"▸";color:var(--muted)}.tool[open] summary:before{content:"▾"}.tool .tool-name{font-weight:600}.tool .tool-arg{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.tool .tool-status{white-space:nowrap;font-size:var(--fs-small);color:var(--muted);margin-left:auto}.tool .tool-status.running{color:var(--status-running)}.tool .tool-status.error{color:var(--status-error)}.tool .tool-command{border-top:var(--hairline);padding:var(--space-2) var(--space-3) 0;overflow-x:auto}.tool .tool-command code{border:var(--hairline);border-radius:var(--radius);padding:var(--space-1) var(--space-2);white-space:pre-wrap;display:block}.tool .tool-input{border-top:var(--hairline);padding:var(--space-2) var(--space-3);overflow-x:auto}.tool .tool-input-label{font-size:var(--fs-small);color:var(--muted);margin-bottom:var(--space-1);display:block}.tool .tool-input pre{font-size:var(--fs-small);white-space:pre-wrap;border:none;padding:0}.tool .suggested-command{margin-top:var(--space-1)}.tool .suggested-command code{border:var(--hairline);border-radius:var(--radius);padding:1px var(--space-2)}.tool .tool-result{border-top:var(--hairline);padding:var(--space-2) var(--space-3);overflow-x:auto}.tool-output-truncated,.transcript-window-control{color:var(--muted);font-size:var(--fs-small);margin-bottom:var(--space-2)}.transcript-window-control{text-align:center}.tool .tool-command+.tool-result,.tool .tool-input+.tool-result{border-top:none}.tool .tool-result pre{font-size:var(--fs-small);border:none;padding:0}.tool .tool-result pre,.tool .tool-input pre{max-height:340px;overflow-y:auto}.hljs{color:var(--text);background:0 0}.hljs-comment,.hljs-quote{color:var(--syntax-comment)}.hljs-keyword,.hljs-selector-tag{color:var(--syntax-keyword)}.hljs-number,.hljs-literal{color:var(--syntax-number)}.hljs-string,.hljs-doctag{color:var(--syntax-string)}.hljs-function,.hljs-title,.hljs-title.function_,.hljs-section,.hljs-name{color:var(--syntax-function)}.hljs-type,.hljs-class,.hljs-title.class_,.hljs-built_in{color:var(--syntax-type)}.hljs-attr,.hljs-variable,.hljs-variable.language_,.hljs-params,.hljs-property{color:var(--syntax-variable)}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:var(--syntax-keyword)}.hljs-operator{color:var(--syntax-operator)}.hljs-punctuation{color:var(--syntax-punctuation)}.hljs-subst{color:var(--text)}.diff-add{color:var(--status-running)}.diff-del{color:var(--status-error)}.entry.summary-card .entry-body{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);color:var(--muted);font-size:var(--fs-secondary)}.entry.summary-card summary{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--muted);font-size:var(--fs-secondary);list-style:none}.entry.summary-card summary:before{content:"▸ "}.entry.summary-card details[open] summary:before{content:"▾ "}.entry.custom-card .entry-body,.entry.agent-result-card details{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary)}.entry.agent-result-card summary{cursor:pointer;-webkit-user-select:none;user-select:none;gap:var(--space-2);color:var(--muted);align-items:baseline;list-style:none;display:flex}.entry.agent-result-card summary:before{content:"▸ "}.entry.agent-result-card details[open] summary:before{content:"▾ "}.agent-result-header{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.entry.agent-result-card .entry-body{margin-top:var(--space-2)}.streaming-cursor:after{content:"▌";color:var(--status-running)}.dock{border-top:var(--hairline);flex-shrink:0}.dock.collapsed{background:var(--bg)}.dock-collapse-row{max-width:960px;padding:var(--space-1) calc(var(--space-4) + env(safe-area-inset-right,0px)) calc(var(--space-1) + env(safe-area-inset-bottom,0px)) calc(var(--space-4) + env(safe-area-inset-left,0px));align-items:center;gap:var(--space-3);font-size:var(--fs-small);color:var(--muted);flex-wrap:wrap;margin:0 auto;display:flex}.dock-collapsed-hint{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.dock-inner{max-width:960px;padding:var(--space-3) calc(var(--space-4) + env(safe-area-inset-right,0px)) calc(var(--space-3) + env(safe-area-inset-bottom,0px)) calc(var(--space-4) + env(safe-area-inset-left,0px));gap:var(--space-2);flex-direction:column;margin:0 auto;display:flex}.tasks{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary)}.tasks summary{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--muted);font-size:var(--fs-small);list-style:none}.tasks summary:before{content:"▸ "}.tasks[open] summary:before{content:"▾ "}.tasks ul{padding-top:var(--space-1);list-style:none}.tasks .done{color:var(--muted)}.tasks .active{font-weight:600}.subagent-strip{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.subagent-strip .count,.subagent-strip .collapsed-hint{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}.subagent-strip .subagent-toggle{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-family:inherit;font-size:var(--fs-small);padding:1px var(--space-2);cursor:pointer}.subagent-strip .subagent-toggle:hover{border-color:var(--text)}.subagent-strip.collapsed{padding-block:var(--space-1)}.subagent-strip .agent-chip{border:var(--hairline);border-radius:var(--radius);padding:1px var(--space-2);font-size:var(--fs-small);background:var(--bg);color:var(--text);cursor:pointer;align-items:center;gap:6px;max-width:260px;font-family:inherit;transition:border-color .2s;display:inline-flex}.subagent-strip .agent-chip:hover{border-color:var(--text)}.subagent-strip .agent-chip .live{color:var(--status-running)}.subagent-strip .agent-chip .done{color:var(--muted)}.subagent-strip .agent-chip .task{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.status-line{align-items:center;gap:var(--space-3);font-size:var(--fs-secondary);flex-wrap:wrap;display:flex}.status-line .working{color:var(--status-running)}.status-line .warning{color:var(--status-attention)}.status-line .error{color:var(--status-error)}.status-line .queued{color:var(--muted);font-size:var(--fs-small)}.status-line .btn{margin-left:auto}.status-line .inline-stop{margin-left:var(--space-2)}.composer{gap:var(--space-2);flex-direction:column;display:flex;position:relative}.queued-message-row{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2);align-items:center;gap:var(--space-2);font-size:var(--fs-small);flex-wrap:wrap;display:flex}.queued-chip{align-items:baseline;gap:var(--space-1);text-overflow:ellipsis;white-space:nowrap;max-width:240px;color:var(--muted);display:inline-flex;overflow:hidden}.attachment-strip{gap:var(--space-2);flex-wrap:wrap;display:flex}.attachment-thumb,.attachment-file{border:var(--hairline);border-radius:var(--radius);padding:2px;position:relative}.attachment-file{align-items:baseline;gap:var(--space-2);padding:2px var(--space-2);font-size:var(--fs-small);overflow-wrap:anywhere;max-width:100%;display:inline-flex}.attachment-thumb img{object-fit:cover;width:72px;height:54px;display:block}.attachment-thumb button,.attachment-file button{border:var(--hairline);background:var(--bg);color:var(--text);cursor:pointer;border-radius:999px;position:absolute;top:-8px;right:-8px}.command-popover{left:0;right:0;bottom:calc(100% + var(--space-2));border:var(--hairline);border-radius:var(--radius);background:var(--bg);padding:var(--space-1);z-index:5;max-height:260px;position:absolute;overflow-y:auto}.command-option{background:var(--bg);width:100%;color:var(--text);font:inherit;text-align:left;padding:var(--space-2);border-radius:var(--radius);gap:var(--space-2);cursor:pointer;border:none;grid-template-columns:minmax(120px,max-content) 1fr max-content;align-items:baseline;display:grid}.command-option:hover,.command-option.selected{background:var(--text);color:var(--bg)}.command-name{font-weight:500}.command-description{color:var(--muted);font-size:var(--fs-small);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.command-source{border:var(--hairline);border-radius:var(--radius);color:var(--muted);font-size:var(--fs-small);padding:0 var(--space-1)}.command-option.selected .command-description,.command-option:hover .command-description,.command-option.selected .command-source,.command-option:hover .command-source{color:var(--bg)}.composer textarea{border:var(--hairline);border-radius:var(--radius);background:var(--bg);width:100%;color:var(--text);padding:var(--space-2) var(--space-3);font-size:var(--fs-body);resize:vertical;min-height:60px;max-height:40vh;font-family:inherit;line-height:1.6;transition:border-color .2s;overflow-y:hidden}.composer textarea:hover,.composer textarea:focus{border-color:var(--text);outline:none}.hidden-file-input{display:none}.composer-row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.mode-toggle{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);display:inline-flex;overflow:hidden}.mode-toggle button{background:var(--bg);color:var(--muted);padding:2px var(--space-3);cursor:pointer;border:none;font-family:inherit}.mode-toggle button.selected{background:var(--text);color:var(--bg)}.composer-row .send{margin-left:auto}.ghost-suggest{font-size:var(--fs-small);color:var(--muted);cursor:pointer;background:0 0;border:none;font-family:inherit}.ghost-suggest .key{border:var(--hairline);border-radius:var(--radius);padding:0 4px}.readonly-note{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);color:var(--muted)}.fallback-banner{border:1px solid var(--status-attention);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);gap:var(--space-3);align-items:baseline;display:flex}.fallback-banner .dismiss{margin-left:auto}.widget-block{border:var(--hairline);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--fs-small);color:var(--muted);white-space:pre-wrap}.toast-region{bottom:var(--space-4);right:var(--space-4);gap:var(--space-2);z-index:50;flex-direction:column;max-width:360px;display:flex;position:fixed}.toast{border:var(--hairline);border-radius:var(--radius);background:var(--bg);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);gap:var(--space-2);align-items:baseline;display:flex}.toast.warning{border-color:var(--status-attention)}.toast.error{border-color:var(--status-error)}.files-head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin:var(--space-5) 0 var(--space-4);flex-wrap:wrap;display:flex}.crumbs{font-size:var(--fs-secondary);flex-wrap:wrap;align-items:baseline;gap:2px;display:flex}.crumbs .sep{color:var(--muted);margin:0 2px}.scope-note{color:var(--muted);font-size:var(--fs-small);margin-top:var(--space-1)}.context-trust{border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);margin-bottom:var(--space-4);font-size:var(--fs-secondary)}.context-trust p{color:var(--muted);font-size:var(--fs-small);margin:var(--space-1) 0 var(--space-2);overflow-wrap:anywhere}.context-trust-impact{margin-bottom:0!important}.context-trust-warning{color:var(--status-attention)}.context-trust-warning a{color:inherit}.head-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.places{gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;align-items:baseline;display:flex}.places .label{color:var(--muted);font-size:var(--fs-small)}.place-chip{border:var(--hairline);border-radius:var(--radius);padding:1px var(--space-2);font-size:var(--fs-small);background:var(--bg);color:var(--text);cursor:pointer;font-family:inherit;text-decoration:none;transition:border-color .2s}.place-chip:hover{border-color:var(--text)}.file-table{border-collapse:collapse;width:100%;font-size:var(--fs-secondary)}.file-table th{text-align:left;font-size:var(--fs-small);color:var(--muted);border-bottom:var(--hairline);padding:var(--space-1) var(--space-2);font-weight:400}.file-table td{border-bottom:var(--hairline);padding:var(--space-2)}.file-table .name{color:var(--text);cursor:pointer;font-family:inherit;font-size:inherit;background:0 0;border:none;padding:0;text-decoration:none}.file-table .name .icon{color:var(--muted);margin-right:var(--space-1)}.file-table .meta{color:var(--muted);font-size:var(--fs-small);white-space:nowrap}.file-table .actions{text-align:right}.drop-zone{border:1px dashed var(--border);border-radius:var(--radius);padding:var(--space-4);text-align:center;color:var(--muted);font-size:var(--fs-small);margin-top:var(--space-4);transition:border-color .2s}.drop-zone.active{border-color:var(--text);color:var(--text)}.upload-warning{font-size:var(--fs-small);color:var(--muted);margin-top:var(--space-2)}.settings-wrap{max-width:720px}.settings-intro{color:var(--muted);font-size:var(--fs-secondary);margin:var(--space-2) 0 var(--space-5)}.settings-section{margin-bottom:var(--space-6)}.settings-section h2{font-size:var(--fs-h3);border-bottom:var(--hairline);padding-bottom:var(--space-2);margin-bottom:var(--space-3)}.setting-row{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-2) 0;display:flex}.setting-label{flex-direction:column;gap:2px;min-width:0;display:flex}.setting-label .name{font-size:var(--fs-secondary)}.setting-label .hint{font-size:var(--fs-small);color:var(--muted)}.setting-control{min-width:0;max-width:100%}.agent-context-row .setting-label{flex-shrink:0}.setting-control select,.setting-control input{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:2px var(--space-2);max-width:100%}.checkbox-control{align-items:center;gap:var(--space-2);font-size:var(--fs-secondary);display:inline-flex}.checkbox-control input{width:auto}.settings-error{border:1px solid var(--status-error);border-radius:var(--radius);color:var(--status-error);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);margin-bottom:var(--space-4);white-space:pre-wrap}.settings-warning{border:1px solid var(--status-attention);border-radius:var(--radius);color:var(--status-attention);padding:var(--space-2) var(--space-3);font-size:var(--fs-secondary);margin-bottom:var(--space-4);white-space:pre-wrap}.model-picker-button{white-space:normal;overflow-wrap:anywhere;text-align:left;min-width:0;max-width:min(100%,520px)}.agent-model-row{gap:var(--space-3);padding:var(--space-2) 0;border-bottom:var(--hairline);grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) auto;align-items:start;display:grid}.agent-model-summary{flex-direction:column;gap:2px;min-width:0;display:flex}.agent-model-name{font-size:var(--fs-secondary);font-weight:600}.agent-model-description{color:var(--muted);font-size:var(--fs-small)}.agent-model-fallbacks{gap:var(--space-1);flex-wrap:wrap;min-width:0;display:flex}.agent-model-chip{border:var(--hairline);border-radius:var(--radius);color:var(--muted);font-size:var(--fs-small);padding:0 var(--space-1);overflow-wrap:anywhere;white-space:normal;min-width:0;max-width:100%}.agent-model-editor{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);padding:var(--space-2);flex-direction:column;grid-column:1/-1;display:flex}.agent-model-entry{justify-content:space-between;gap:var(--space-2);font-size:var(--fs-secondary);align-items:center;min-width:0;display:flex}.agent-model-entry>span:first-child{overflow-wrap:anywhere;min-width:0}.agent-model-entry-actions{gap:var(--space-1);flex-shrink:0;display:flex}.context-trust-subsection{margin:var(--space-4) 0}.context-trust-subsection h3{font-size:var(--fs-secondary);margin-bottom:var(--space-1)}.context-trust-global-warning,.trusted-context-empty{margin:var(--space-3) 0}.trusted-context-folder-row{align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:var(--hairline);font-size:var(--fs-secondary);display:flex}.trusted-context-folder-row code{overflow-wrap:anywhere;min-width:0}.trusted-context-folder-row .meta{color:var(--muted);font-size:var(--fs-small);margin-left:auto}.trusted-context-folder-row .btn{flex-shrink:0}.trusted-context-folder-add{align-items:center;gap:var(--space-2);margin-top:var(--space-3);display:flex}.trusted-context-folder-add label{font-size:var(--fs-small);white-space:nowrap}.trusted-context-folder-add input{border:var(--hairline);border-radius:var(--radius);background:var(--bg);min-width:0;color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:2px var(--space-2);flex:1}.settings-footnote{margin-top:calc(-1 * var(--space-3));margin-bottom:var(--space-5)}.appearance-block{margin-bottom:var(--space-4)}.appearance-heading-row .name{font-weight:600}.theme-gallery{gap:var(--space-3);margin-top:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.theme-card{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);padding:var(--space-2);text-align:left;cursor:pointer;flex-direction:column;font-family:inherit;transition:border-color .2s;display:flex}.theme-card:hover{border-color:var(--muted)}.theme-card.active{border-color:var(--text)}.theme-card-preview{gap:var(--space-2);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-2);flex-direction:column;display:flex;overflow:hidden}.theme-card-swatch{flex-direction:column;gap:2px;min-width:0;display:flex}.theme-card-name{font-size:var(--fs-secondary);color:var(--text);font-weight:600}.theme-card-muted{font-size:var(--fs-small);color:var(--muted)}.theme-card-chips{gap:var(--space-1);flex-wrap:wrap;display:flex}.theme-card-code{font-size:var(--fs-small);white-space:pre;margin:0;font-family:IBM Plex Mono,Courier New,monospace;line-height:1.4;overflow:hidden}.theme-card-code .hljs{background:0 0;padding:0}.theme-card-footer{justify-content:space-between;align-items:baseline;gap:var(--space-2);font-size:var(--fs-small);display:flex}.theme-card-title{font-size:var(--fs-secondary);color:var(--text)}.theme-card-state{color:var(--muted)}.theme-card.active .theme-card-state{color:var(--text)}@media (width<=700px){.theme-gallery{grid-template-columns:1fr}}.device-row{align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:var(--hairline);font-size:var(--fs-secondary);display:flex}.device-row .meta{color:var(--muted);font-size:var(--fs-small);margin-left:auto}.this-device{border:var(--hairline);border-radius:var(--radius);font-size:var(--fs-small);color:var(--muted);padding:0 var(--space-1);margin-left:var(--space-1)}.pair-wrap{min-height:100vh;padding:var(--space-4);justify-content:center;align-items:center;display:flex}.pair-card{border:var(--hairline);border-radius:var(--radius);width:100%;max-width:460px;padding:var(--space-6);gap:var(--space-4);flex-direction:column;display:flex}.pair-card h1{font-size:var(--fs-h2)}.pair-card .sub{color:var(--muted);font-size:var(--fs-secondary)}.identity{gap:var(--space-2);border:var(--hairline);border-radius:var(--radius);padding:var(--space-3);font-size:var(--fs-secondary);flex-direction:column;display:flex}.identity .row-line{justify-content:space-between;gap:var(--space-3);display:flex}.identity .k{color:var(--muted);font-size:var(--fs-small)}.pin-input{text-align:center;width:100%;font-size:var(--fs-h1);letter-spacing:.5em;border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);padding:var(--space-2);font-family:inherit}.pin-input:focus{border-color:var(--text);outline:none}.pin-hint{font-size:var(--fs-small);color:var(--muted)}.security-note{border-top:var(--hairline);padding-top:var(--space-3);gap:var(--space-2);font-size:var(--fs-small);color:var(--muted);flex-direction:column;display:flex}.pair-error{color:var(--status-error);font-size:var(--fs-secondary)}.denied-card{border:1px solid var(--status-error);border-radius:var(--radius);width:100%;max-width:460px;padding:var(--space-6);gap:var(--space-3);flex-direction:column;display:flex}.field{gap:var(--space-1);flex-direction:column;display:flex}.field label{font-size:var(--fs-small);color:var(--muted)}.field input,.field textarea,.field select{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:var(--space-2)}.field input:focus,.field textarea:focus{border-color:var(--text);outline:none}.recent-projects{flex-direction:column;gap:2px;max-height:160px;display:flex;overflow-y:auto}.recent-projects button{text-align:left;color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:var(--space-1) var(--space-2);cursor:pointer;border-radius:var(--radius);background:0 0;border:none}.recent-projects button:hover{background:var(--border)}.model-scope-tabs{border:var(--hairline);border-radius:var(--radius);margin-bottom:var(--space-3);font-size:var(--fs-small);display:inline-flex;overflow:hidden}.model-scope-tabs button{background:var(--bg);color:var(--muted);padding:2px var(--space-3);cursor:pointer;border:none;font-family:inherit}.model-scope-tabs button.selected{background:var(--text);color:var(--bg)}.model-picker-modal{min-width:min(360px,100vw - 32px);max-width:min(900px,100vw - 32px);overflow:auto}@media (width>=701px){.model-picker-modal{resize:horizontal}}.model-list{gap:var(--space-2);flex-direction:column;min-width:0;display:flex;overflow:hidden auto}.model-provider-group{flex-direction:column;gap:2px;display:flex}.model-provider-heading{background:var(--bg);color:var(--muted);font-size:var(--fs-small);border-bottom:var(--hairline);padding:var(--space-1) var(--space-2);z-index:1;position:sticky;top:0}.model-row{align-items:start;gap:2px var(--space-2);text-align:left;border:var(--hairline);border-radius:var(--radius);color:var(--text);font-family:inherit;font-size:var(--fs-secondary);padding:var(--space-1) var(--space-2);cursor:pointer;background:0 0;grid-template-columns:18px minmax(0,1fr) auto auto;min-width:0;display:grid}.model-row:hover,.model-row.current{border-color:var(--text)}.model-current{color:var(--status-running);grid-area:1/1}.model-id{overflow-wrap:anywhere;white-space:normal;grid-area:1/2;min-width:0;font-weight:600}.model-name{color:var(--muted);font-size:var(--fs-small);overflow-wrap:anywhere;white-space:normal;grid-area:2/2/auto/-1;min-width:0}.model-provider-badge,.model-reasoning{color:var(--muted);font-size:var(--fs-small);white-space:nowrap;border:var(--hairline);border-radius:var(--radius);padding:0 var(--space-1);grid-row:1}.model-provider-badge{grid-column:3}.model-reasoning{grid-column:4}.context-modal-body{gap:var(--space-4);flex-direction:column;display:flex}.context-section h3{font-size:var(--fs-secondary);margin-bottom:var(--space-1)}.context-section ul{gap:var(--space-1);font-size:var(--fs-small);flex-direction:column;list-style:none;display:flex}.context-section li{overflow-wrap:anywhere}.fork-message-list{gap:var(--space-2);flex-direction:column;max-height:360px;display:flex;overflow-y:auto}.fork-message{border:var(--hairline);border-radius:var(--radius);background:var(--bg);color:var(--text);font:inherit;text-align:left;padding:var(--space-2);cursor:pointer;gap:var(--space-2);display:flex}.fork-message:hover{border-color:var(--text)}.fork-entry-id{color:var(--muted);font-size:var(--fs-small);flex:none}@media (width<=700px){.container,.topbar-inner,.session-bar-inner,.dock-inner,.dock-collapse-row,.chat-inner{width:100%;min-width:0;max-width:100%;padding-left:var(--space-3);padding-right:var(--space-3)}.session-grid{grid-template-columns:minmax(0,1fr)}.session-card,.disk-row,.session-meta,.session-actions,.disk-row .actions{min-width:0;max-width:100%}.disk-row,.session-meta,.session-actions,.disk-row .actions{flex-wrap:wrap}.session-title{flex-wrap:wrap;justify-content:flex-start;min-width:0;max-width:100%}.session-title .name{text-overflow:clip;white-space:normal;overflow-wrap:anywhere;flex:12rem;min-width:0;max-width:100%;overflow:visible}.session-title .chip{flex:none;max-width:100%}.session-project,.attention-reason,.error-reason,.activity,.subagents,.session-meta,.group-head h3{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.session-project{text-overflow:clip;overflow:visible}.activity{text-overflow:clip}.subagents .agent-line{text-overflow:clip;white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%;overflow:visible}.session-meta>span{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.group-head h3{flex:1 1 0}.disk-row .name,.disk-row .meta{white-space:normal;overflow-wrap:anywhere;min-width:0;max-width:100%}.disk-row .name{text-overflow:clip;flex:1 1 0;overflow:visible}.disk-row .meta{order:3;width:100%;margin-left:0}.session-bar .project{display:none}.session-bar .right{align-items:stretch;width:100%;margin-left:0}.session-bar .right .switcher{justify-content:center}.session-bar .right .model-switcher{flex:100%;max-width:100%}.entry.user{max-width:100%}.file-table .cols{display:none}.setting-row{flex-direction:column;align-items:stretch}.setting-control{align-self:flex-end}.agent-model-row{grid-template-columns:1fr}.agent-model-edit{justify-self:start}.agent-model-entry{flex-direction:column;align-items:flex-start}.trusted-context-folder-row{flex-wrap:wrap;align-items:flex-start}.trusted-context-folder-row code{flex-basis:100%}.trusted-context-folder-row .meta{margin-left:0}.trusted-context-folder-add{flex-direction:column;align-items:stretch}.trusted-context-folder-add label{white-space:normal}.trusted-context-folder-add .btn{align-self:flex-start}.subagent-strip{align-items:stretch;gap:var(--space-2)}.subagent-strip .subagent-toggle{flex:none;min-height:32px}.subagent-strip .count,.subagent-strip .collapsed-hint{white-space:normal}.subagent-strip .agent-chip{max-width:100%}.head-actions .btn{flex:1}.composer textarea{font-size:16px}}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(./jetbrains-mono-BCtJif-v.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:italic;font-weight:100 800;font-display:swap;src:url(./jetbrains-mono-italic-WKDR0M8A.woff2)format("woff2")}[data-color-mode=light]:not([data-theme]){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--text:#000;--border:#e0e0e0;--muted:#666;--status-running:#00871f;--status-attention:#8a5400;--status-idle:#666;--status-error:#d10041;--syntax-comment:green;--syntax-keyword:#00f;--syntax-string:#a31515;--syntax-number:#098658;--syntax-function:#795e26;--syntax-type:#267f99;--syntax-variable:#001080;--syntax-operator:#000;--syntax-punctuation:#000}[data-color-mode=dark]:not([data-theme]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d;--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}[data-theme=default]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:#fff;--text:#000;--border:#e0e0e0;--muted:#666;--status-running:#00871f;--status-attention:#8a5400;--status-idle:#666;--status-error:#d10041;--syntax-comment:green;--syntax-keyword:#00f;--syntax-string:#a31515;--syntax-number:#098658;--syntax-function:#795e26;--syntax-type:#267f99;--syntax-variable:#001080;--syntax-operator:#000;--syntax-punctuation:#000}[data-theme=default][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d;--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}@media (prefers-color-scheme:dark){[data-theme=default]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--text:#fff;--border:#333;--muted:#999;--status-running:#00e436;--status-attention:#ffa300;--status-idle:#999;--status-error:#ff004d;--syntax-comment:#6a9955;--syntax-keyword:#569cd6;--syntax-string:#ce9178;--syntax-number:#b5cea8;--syntax-function:#dcdcaa;--syntax-type:#4ec9b0;--syntax-variable:#9cdcfe;--syntax-operator:#d4d4d4;--syntax-punctuation:#d4d4d4}}[data-theme=dim]{--dim-d-bg:#1e1f22;--dim-d-text:#d7d8da;--dim-d-border:#3a3c40;--dim-d-muted:#9a9ea6;--dim-d-running:#5ec27a;--dim-d-attention:#d8a341;--dim-d-idle:#9a9ea6;--dim-d-error:#f0637f;--dim-d-comment:#8b9199;--dim-d-keyword:#8ab4f8;--dim-d-string:#c3956a;--dim-d-number:#9fce8a;--dim-d-function:#d9c46e;--dim-d-type:#5cc2b0;--dim-d-variable:#9cc7e8;--dim-d-operator:#c3c6cb;--dim-d-punctuation:#c3c6cb;--dim-l-bg:#f0f0ee;--dim-l-text:#33353a;--dim-l-border:#d3d4d1;--dim-l-muted:#5c5f66;--dim-l-running:#1c7a37;--dim-l-attention:#8a5400;--dim-l-idle:#5c5f66;--dim-l-error:#c01743;--dim-l-comment:#4f6e42;--dim-l-keyword:#1a4fc0;--dim-l-string:#9a3a20;--dim-l-number:#1f7a4a;--dim-l-function:#6f5a12;--dim-l-type:#136b7a;--dim-l-variable:#123a9c;--dim-l-operator:#33353a;--dim-l-punctuation:#33353a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--dim-l-bg);--text:var(--dim-l-text);--border:var(--dim-l-border);--muted:var(--dim-l-muted);--status-running:var(--dim-l-running);--status-attention:var(--dim-l-attention);--status-idle:var(--dim-l-idle);--status-error:var(--dim-l-error);--syntax-comment:var(--dim-l-comment);--syntax-keyword:var(--dim-l-keyword);--syntax-string:var(--dim-l-string);--syntax-number:var(--dim-l-number);--syntax-function:var(--dim-l-function);--syntax-type:var(--dim-l-type);--syntax-variable:var(--dim-l-variable);--syntax-operator:var(--dim-l-operator);--syntax-punctuation:var(--dim-l-punctuation)}[data-theme=dim][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--dim-d-bg);--text:var(--dim-d-text);--border:var(--dim-d-border);--muted:var(--dim-d-muted);--status-running:var(--dim-d-running);--status-attention:var(--dim-d-attention);--status-idle:var(--dim-d-idle);--status-error:var(--dim-d-error);--syntax-comment:var(--dim-d-comment);--syntax-keyword:var(--dim-d-keyword);--syntax-string:var(--dim-d-string);--syntax-number:var(--dim-d-number);--syntax-function:var(--dim-d-function);--syntax-type:var(--dim-d-type);--syntax-variable:var(--dim-d-variable);--syntax-operator:var(--dim-d-operator);--syntax-punctuation:var(--dim-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=dim]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--dim-d-bg);--text:var(--dim-d-text);--border:var(--dim-d-border);--muted:var(--dim-d-muted);--status-running:var(--dim-d-running);--status-attention:var(--dim-d-attention);--status-idle:var(--dim-d-idle);--status-error:var(--dim-d-error);--syntax-comment:var(--dim-d-comment);--syntax-keyword:var(--dim-d-keyword);--syntax-string:var(--dim-d-string);--syntax-number:var(--dim-d-number);--syntax-function:var(--dim-d-function);--syntax-type:var(--dim-d-type);--syntax-variable:var(--dim-d-variable);--syntax-operator:var(--dim-d-operator);--syntax-punctuation:var(--dim-d-punctuation)}}[data-theme=solarized]{--sol-d-bg:#002b36;--sol-d-text:#93a1a1;--sol-d-border:#0a4b5a;--sol-d-muted:#839496;--sol-d-running:#859900;--sol-d-attention:#cb8b18;--sol-d-idle:#839496;--sol-d-error:#fa6459;--sol-d-comment:#7e9295;--sol-d-keyword:#6c8fd6;--sol-d-string:#2aa198;--sol-d-number:#b58900;--sol-d-function:#4a9fdb;--sol-d-type:#b58900;--sol-d-variable:#93a1a1;--sol-d-operator:#93a1a1;--sol-d-punctuation:#93a1a1;--sol-l-bg:#fdf6e3;--sol-l-text:#586e75;--sol-l-border:#e7e0cb;--sol-l-muted:#5b6f76;--sol-l-running:#567500;--sol-l-attention:#a35700;--sol-l-idle:#5b6f76;--sol-l-error:#c9412f;--sol-l-comment:#5e7272;--sol-l-keyword:#5d62bd;--sol-l-string:#147878;--sol-l-number:#8a6d00;--sol-l-function:#1f6fa8;--sol-l-type:#a35700;--sol-l-variable:#586e75;--sol-l-operator:#586e75;--sol-l-punctuation:#586e75;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--sol-l-bg);--text:var(--sol-l-text);--border:var(--sol-l-border);--muted:var(--sol-l-muted);--status-running:var(--sol-l-running);--status-attention:var(--sol-l-attention);--status-idle:var(--sol-l-idle);--status-error:var(--sol-l-error);--syntax-comment:var(--sol-l-comment);--syntax-keyword:var(--sol-l-keyword);--syntax-string:var(--sol-l-string);--syntax-number:var(--sol-l-number);--syntax-function:var(--sol-l-function);--syntax-type:var(--sol-l-type);--syntax-variable:var(--sol-l-variable);--syntax-operator:var(--sol-l-operator);--syntax-punctuation:var(--sol-l-punctuation)}[data-theme=solarized][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--sol-d-bg);--text:var(--sol-d-text);--border:var(--sol-d-border);--muted:var(--sol-d-muted);--status-running:var(--sol-d-running);--status-attention:var(--sol-d-attention);--status-idle:var(--sol-d-idle);--status-error:var(--sol-d-error);--syntax-comment:var(--sol-d-comment);--syntax-keyword:var(--sol-d-keyword);--syntax-string:var(--sol-d-string);--syntax-number:var(--sol-d-number);--syntax-function:var(--sol-d-function);--syntax-type:var(--sol-d-type);--syntax-variable:var(--sol-d-variable);--syntax-operator:var(--sol-d-operator);--syntax-punctuation:var(--sol-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=solarized]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--sol-d-bg);--text:var(--sol-d-text);--border:var(--sol-d-border);--muted:var(--sol-d-muted);--status-running:var(--sol-d-running);--status-attention:var(--sol-d-attention);--status-idle:var(--sol-d-idle);--status-error:var(--sol-d-error);--syntax-comment:var(--sol-d-comment);--syntax-keyword:var(--sol-d-keyword);--syntax-string:var(--sol-d-string);--syntax-number:var(--sol-d-number);--syntax-function:var(--sol-d-function);--syntax-type:var(--sol-d-type);--syntax-variable:var(--sol-d-variable);--syntax-operator:var(--sol-d-operator);--syntax-punctuation:var(--sol-d-punctuation)}}[data-theme=gruvbox]{--gruv-d-bg:#282828;--gruv-d-text:#ebdbb2;--gruv-d-border:#504945;--gruv-d-muted:#a89984;--gruv-d-running:#b8bb26;--gruv-d-attention:#fabd2f;--gruv-d-idle:#a89984;--gruv-d-error:#fc6a58;--gruv-d-comment:#a08f7d;--gruv-d-keyword:#fc6a58;--gruv-d-string:#b8bb26;--gruv-d-number:#d3869b;--gruv-d-function:#b8bb26;--gruv-d-type:#fabd2f;--gruv-d-variable:#83a598;--gruv-d-operator:#ebdbb2;--gruv-d-punctuation:#ebdbb2;--gruv-l-bg:#fbf1c7;--gruv-l-text:#3c3836;--gruv-l-border:#e6dcae;--gruv-l-muted:#665c54;--gruv-l-running:#557000;--gruv-l-attention:#a35a00;--gruv-l-idle:#665c54;--gruv-l-error:#9d0006;--gruv-l-comment:#6f6358;--gruv-l-keyword:#9d0006;--gruv-l-string:#557000;--gruv-l-number:#8f3f71;--gruv-l-function:#6d680c;--gruv-l-type:#97600f;--gruv-l-variable:#076678;--gruv-l-operator:#3c3836;--gruv-l-punctuation:#3c3836;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"JetBrains Mono", "IBM Plex Mono", "Courier New", monospace;--bg:var(--gruv-l-bg);--text:var(--gruv-l-text);--border:var(--gruv-l-border);--muted:var(--gruv-l-muted);--status-running:var(--gruv-l-running);--status-attention:var(--gruv-l-attention);--status-idle:var(--gruv-l-idle);--status-error:var(--gruv-l-error);--syntax-comment:var(--gruv-l-comment);--syntax-keyword:var(--gruv-l-keyword);--syntax-string:var(--gruv-l-string);--syntax-number:var(--gruv-l-number);--syntax-function:var(--gruv-l-function);--syntax-type:var(--gruv-l-type);--syntax-variable:var(--gruv-l-variable);--syntax-operator:var(--gruv-l-operator);--syntax-punctuation:var(--gruv-l-punctuation)}[data-theme=gruvbox][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--gruv-d-bg);--text:var(--gruv-d-text);--border:var(--gruv-d-border);--muted:var(--gruv-d-muted);--status-running:var(--gruv-d-running);--status-attention:var(--gruv-d-attention);--status-idle:var(--gruv-d-idle);--status-error:var(--gruv-d-error);--syntax-comment:var(--gruv-d-comment);--syntax-keyword:var(--gruv-d-keyword);--syntax-string:var(--gruv-d-string);--syntax-number:var(--gruv-d-number);--syntax-function:var(--gruv-d-function);--syntax-type:var(--gruv-d-type);--syntax-variable:var(--gruv-d-variable);--syntax-operator:var(--gruv-d-operator);--syntax-punctuation:var(--gruv-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=gruvbox]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--gruv-d-bg);--text:var(--gruv-d-text);--border:var(--gruv-d-border);--muted:var(--gruv-d-muted);--status-running:var(--gruv-d-running);--status-attention:var(--gruv-d-attention);--status-idle:var(--gruv-d-idle);--status-error:var(--gruv-d-error);--syntax-comment:var(--gruv-d-comment);--syntax-keyword:var(--gruv-d-keyword);--syntax-string:var(--gruv-d-string);--syntax-number:var(--gruv-d-number);--syntax-function:var(--gruv-d-function);--syntax-type:var(--gruv-d-type);--syntax-variable:var(--gruv-d-variable);--syntax-operator:var(--gruv-d-operator);--syntax-punctuation:var(--gruv-d-punctuation)}}[data-theme=qud]{--qud-d-bg:#0f3b3a;--qud-d-text:#d7e4de;--qud-d-border:#1f5b57;--qud-d-muted:#8fb3aa;--qud-d-running:#00c420;--qud-d-attention:#e99f10;--qud-d-idle:#8fb3aa;--qud-d-error:#ff8a70;--qud-d-comment:#8ab0a1;--qud-d-keyword:#3aa6ff;--qud-d-string:#cfc041;--qud-d-number:#e894e2;--qud-d-function:#3fd45f;--qud-d-type:#77bfcf;--qud-d-variable:#8fd0dd;--qud-d-operator:#b1c9c3;--qud-d-punctuation:#b1c9c3;--qud-l-bg:#e8efe9;--qud-l-text:#123b38;--qud-l-border:#cdddd6;--qud-l-muted:#3c655d;--qud-l-running:#0a6b1f;--qud-l-attention:#8a5400;--qud-l-idle:#3c655d;--qud-l-error:#b3341a;--qud-l-comment:#3f6a5e;--qud-l-keyword:#12489c;--qud-l-string:#7a6a00;--qud-l-number:#8f3a86;--qud-l-function:#0a6b1f;--qud-l-type:#0f6070;--qud-l-variable:#155352;--qud-l-operator:#123b38;--qud-l-punctuation:#123b38;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--qud-l-bg);--text:var(--qud-l-text);--border:var(--qud-l-border);--muted:var(--qud-l-muted);--status-running:var(--qud-l-running);--status-attention:var(--qud-l-attention);--status-idle:var(--qud-l-idle);--status-error:var(--qud-l-error);--syntax-comment:var(--qud-l-comment);--syntax-keyword:var(--qud-l-keyword);--syntax-string:var(--qud-l-string);--syntax-number:var(--qud-l-number);--syntax-function:var(--qud-l-function);--syntax-type:var(--qud-l-type);--syntax-variable:var(--qud-l-variable);--syntax-operator:var(--qud-l-operator);--syntax-punctuation:var(--qud-l-punctuation)}[data-theme=qud][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--qud-d-bg);--text:var(--qud-d-text);--border:var(--qud-d-border);--muted:var(--qud-d-muted);--status-running:var(--qud-d-running);--status-attention:var(--qud-d-attention);--status-idle:var(--qud-d-idle);--status-error:var(--qud-d-error);--syntax-comment:var(--qud-d-comment);--syntax-keyword:var(--qud-d-keyword);--syntax-string:var(--qud-d-string);--syntax-number:var(--qud-d-number);--syntax-function:var(--qud-d-function);--syntax-type:var(--qud-d-type);--syntax-variable:var(--qud-d-variable);--syntax-operator:var(--qud-d-operator);--syntax-punctuation:var(--qud-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=qud]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--qud-d-bg);--text:var(--qud-d-text);--border:var(--qud-d-border);--muted:var(--qud-d-muted);--status-running:var(--qud-d-running);--status-attention:var(--qud-d-attention);--status-idle:var(--qud-d-idle);--status-error:var(--qud-d-error);--syntax-comment:var(--qud-d-comment);--syntax-keyword:var(--qud-d-keyword);--syntax-string:var(--qud-d-string);--syntax-number:var(--qud-d-number);--syntax-function:var(--qud-d-function);--syntax-type:var(--qud-d-type);--syntax-variable:var(--qud-d-variable);--syntax-operator:var(--qud-d-operator);--syntax-punctuation:var(--qud-d-punctuation)}}[data-theme=vangogh]{--vg-d-bg:#0d1b3d;--vg-d-text:#f0e6c8;--vg-d-border:#2a3e6a;--vg-d-muted:#aab4d2;--vg-d-running:#8fbf6a;--vg-d-attention:#f5db37;--vg-d-idle:#aab4d2;--vg-d-error:#f07a52;--vg-d-comment:#8c96b8;--vg-d-keyword:#f5db37;--vg-d-string:#7fc5dc;--vg-d-number:#e0a95a;--vg-d-function:#5fb0e0;--vg-d-type:#c9b26a;--vg-d-variable:#a9c7ea;--vg-d-operator:#dad69f;--vg-d-punctuation:#dad69f;--vg-l-bg:#f4ecd2;--vg-l-text:#1a2a52;--vg-l-border:#e0d4ad;--vg-l-muted:#4a557d;--vg-l-running:#4a6b1f;--vg-l-attention:#855000;--vg-l-idle:#4a557d;--vg-l-error:#b03a1a;--vg-l-comment:#5a6488;--vg-l-keyword:#1a3a8c;--vg-l-string:#1f6f8c;--vg-l-number:#8a5a12;--vg-l-function:#2a4e93;--vg-l-type:#6a5a12;--vg-l-variable:#2a3e83;--vg-l-operator:#1a2a52;--vg-l-punctuation:#1a2a52;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--vg-l-bg);--text:var(--vg-l-text);--border:var(--vg-l-border);--muted:var(--vg-l-muted);--status-running:var(--vg-l-running);--status-attention:var(--vg-l-attention);--status-idle:var(--vg-l-idle);--status-error:var(--vg-l-error);--syntax-comment:var(--vg-l-comment);--syntax-keyword:var(--vg-l-keyword);--syntax-string:var(--vg-l-string);--syntax-number:var(--vg-l-number);--syntax-function:var(--vg-l-function);--syntax-type:var(--vg-l-type);--syntax-variable:var(--vg-l-variable);--syntax-operator:var(--vg-l-operator);--syntax-punctuation:var(--vg-l-punctuation)}[data-theme=vangogh][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--vg-d-bg);--text:var(--vg-d-text);--border:var(--vg-d-border);--muted:var(--vg-d-muted);--status-running:var(--vg-d-running);--status-attention:var(--vg-d-attention);--status-idle:var(--vg-d-idle);--status-error:var(--vg-d-error);--syntax-comment:var(--vg-d-comment);--syntax-keyword:var(--vg-d-keyword);--syntax-string:var(--vg-d-string);--syntax-number:var(--vg-d-number);--syntax-function:var(--vg-d-function);--syntax-type:var(--vg-d-type);--syntax-variable:var(--vg-d-variable);--syntax-operator:var(--vg-d-operator);--syntax-punctuation:var(--vg-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=vangogh]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--vg-d-bg);--text:var(--vg-d-text);--border:var(--vg-d-border);--muted:var(--vg-d-muted);--status-running:var(--vg-d-running);--status-attention:var(--vg-d-attention);--status-idle:var(--vg-d-idle);--status-error:var(--vg-d-error);--syntax-comment:var(--vg-d-comment);--syntax-keyword:var(--vg-d-keyword);--syntax-string:var(--vg-d-string);--syntax-number:var(--vg-d-number);--syntax-function:var(--vg-d-function);--syntax-type:var(--vg-d-type);--syntax-variable:var(--vg-d-variable);--syntax-operator:var(--vg-d-operator);--syntax-punctuation:var(--vg-d-punctuation)}}[data-theme=okabe]{--okabe-d-bg:#16181d;--okabe-d-text:#eceef2;--okabe-d-border:#363a42;--okabe-d-muted:#9ba1ab;--okabe-d-running:#56b4e9;--okabe-d-attention:#f0e442;--okabe-d-idle:#9ba1ab;--okabe-d-error:#f57a48;--okabe-d-comment:#8b95a3;--okabe-d-keyword:#56b4e9;--okabe-d-string:#4fc6a0;--okabe-d-number:#e08cc6;--okabe-d-function:#f0c04a;--okabe-d-type:#8fd4f0;--okabe-d-variable:#d7dbe1;--okabe-d-operator:#cdd2d9;--okabe-d-punctuation:#cdd2d9;--okabe-l-bg:#f6f6f3;--okabe-l-text:#1a1a1a;--okabe-l-border:#dcdcd6;--okabe-l-muted:#565b62;--okabe-l-running:#0067a3;--okabe-l-attention:#8a5a00;--okabe-l-idle:#565b62;--okabe-l-error:#b8430a;--okabe-l-comment:#4a5560;--okabe-l-keyword:#0067a3;--okabe-l-string:#077a5a;--okabe-l-number:#9a4a86;--okabe-l-function:#7a5500;--okabe-l-type:#0f6a86;--okabe-l-variable:#333;--okabe-l-operator:#1a1a1a;--okabe-l-punctuation:#1a1a1a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--okabe-l-bg);--text:var(--okabe-l-text);--border:var(--okabe-l-border);--muted:var(--okabe-l-muted);--status-running:var(--okabe-l-running);--status-attention:var(--okabe-l-attention);--status-idle:var(--okabe-l-idle);--status-error:var(--okabe-l-error);--syntax-comment:var(--okabe-l-comment);--syntax-keyword:var(--okabe-l-keyword);--syntax-string:var(--okabe-l-string);--syntax-number:var(--okabe-l-number);--syntax-function:var(--okabe-l-function);--syntax-type:var(--okabe-l-type);--syntax-variable:var(--okabe-l-variable);--syntax-operator:var(--okabe-l-operator);--syntax-punctuation:var(--okabe-l-punctuation)}[data-theme=okabe][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--okabe-d-bg);--text:var(--okabe-d-text);--border:var(--okabe-d-border);--muted:var(--okabe-d-muted);--status-running:var(--okabe-d-running);--status-attention:var(--okabe-d-attention);--status-idle:var(--okabe-d-idle);--status-error:var(--okabe-d-error);--syntax-comment:var(--okabe-d-comment);--syntax-keyword:var(--okabe-d-keyword);--syntax-string:var(--okabe-d-string);--syntax-number:var(--okabe-d-number);--syntax-function:var(--okabe-d-function);--syntax-type:var(--okabe-d-type);--syntax-variable:var(--okabe-d-variable);--syntax-operator:var(--okabe-d-operator);--syntax-punctuation:var(--okabe-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=okabe]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--okabe-d-bg);--text:var(--okabe-d-text);--border:var(--okabe-d-border);--muted:var(--okabe-d-muted);--status-running:var(--okabe-d-running);--status-attention:var(--okabe-d-attention);--status-idle:var(--okabe-d-idle);--status-error:var(--okabe-d-error);--syntax-comment:var(--okabe-d-comment);--syntax-keyword:var(--okabe-d-keyword);--syntax-string:var(--okabe-d-string);--syntax-number:var(--okabe-d-number);--syntax-function:var(--okabe-d-function);--syntax-type:var(--okabe-d-type);--syntax-variable:var(--okabe-d-variable);--syntax-operator:var(--okabe-d-operator);--syntax-punctuation:var(--okabe-d-punctuation)}}[data-theme=tol]{--tol-d-bg:#1b1d21;--tol-d-text:#e9eaec;--tol-d-border:#363a43;--tol-d-muted:#9a9ea6;--tol-d-running:#3fc0a8;--tol-d-attention:#d9c94a;--tol-d-idle:#9a9ea6;--tol-d-error:#f0687a;--tol-d-comment:#8a929c;--tol-d-keyword:#6ce;--tol-d-string:#4fc08a;--tol-d-number:#c9d;--tol-d-function:#eb5;--tol-d-type:#7fd0f0;--tol-d-variable:#d6d9de;--tol-d-operator:#cbcfd5;--tol-d-punctuation:#cbcfd5;--tol-l-bg:#f4f4f6;--tol-l-text:#1a1c22;--tol-l-border:#dadae0;--tol-l-muted:#565a62;--tol-l-running:#007a68;--tol-l-attention:#8a6a00;--tol-l-idle:#565a62;--tol-l-error:#c23346;--tol-l-comment:#565a62;--tol-l-keyword:#1a5a8c;--tol-l-string:#0a6a52;--tol-l-number:#8a3a77;--tol-l-function:#8a5a12;--tol-l-type:#0f6a86;--tol-l-variable:#2a2e83;--tol-l-operator:#1a1c22;--tol-l-punctuation:#1a1c22;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--mono-font:"IBM Plex Mono", "Courier New", monospace;--bg:var(--tol-l-bg);--text:var(--tol-l-text);--border:var(--tol-l-border);--muted:var(--tol-l-muted);--status-running:var(--tol-l-running);--status-attention:var(--tol-l-attention);--status-idle:var(--tol-l-idle);--status-error:var(--tol-l-error);--syntax-comment:var(--tol-l-comment);--syntax-keyword:var(--tol-l-keyword);--syntax-string:var(--tol-l-string);--syntax-number:var(--tol-l-number);--syntax-function:var(--tol-l-function);--syntax-type:var(--tol-l-type);--syntax-variable:var(--tol-l-variable);--syntax-operator:var(--tol-l-operator);--syntax-punctuation:var(--tol-l-punctuation)}[data-theme=tol][data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--tol-d-bg);--text:var(--tol-d-text);--border:var(--tol-d-border);--muted:var(--tol-d-muted);--status-running:var(--tol-d-running);--status-attention:var(--tol-d-attention);--status-idle:var(--tol-d-idle);--status-error:var(--tol-d-error);--syntax-comment:var(--tol-d-comment);--syntax-keyword:var(--tol-d-keyword);--syntax-string:var(--tol-d-string);--syntax-number:var(--tol-d-number);--syntax-function:var(--tol-d-function);--syntax-type:var(--tol-d-type);--syntax-variable:var(--tol-d-variable);--syntax-operator:var(--tol-d-operator);--syntax-punctuation:var(--tol-d-punctuation)}@media (prefers-color-scheme:dark){[data-theme=tol]:not([data-color-mode=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:var(--tol-d-bg);--text:var(--tol-d-text);--border:var(--tol-d-border);--muted:var(--tol-d-muted);--status-running:var(--tol-d-running);--status-attention:var(--tol-d-attention);--status-idle:var(--tol-d-idle);--status-error:var(--tol-d-error);--syntax-comment:var(--tol-d-comment);--syntax-keyword:var(--tol-d-keyword);--syntax-string:var(--tol-d-string);--syntax-number:var(--tol-d-number);--syntax-function:var(--tol-d-function);--syntax-type:var(--tol-d-type);--syntax-variable:var(--tol-d-variable);--syntax-operator:var(--tol-d-operator);--syntax-punctuation:var(--tol-d-punctuation)}}