@wrongstack/webui 0.275.0 → 0.276.2

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.
@@ -0,0 +1,141 @@
1
+ import{n as e,r as t}from"./rolldown-runtime-QTnfLwEv.js";import{$ as n,$n as r,$r as i,$t as a,A as o,An as s,Ar as c,At as l,B as u,Bn as d,Br as f,Bt as p,C as m,Ci as h,Cn as g,Cr as _,Ct as v,D as y,Dn as b,Dr as x,Dt as S,E as C,En as w,Er as T,Et as E,F as D,Fn as O,Fr as k,Ft as A,G as j,Gn as M,Gr as N,Gt as P,H as F,Hn as I,Hr as L,Ht as R,I as z,In as ee,Ir as te,It as ne,J as re,Jn as B,Jr as V,Jt as ie,K as ae,Kn as oe,Kr as se,Kt as ce,L as le,Ln as ue,Lr as de,Lt as fe,M as pe,Mn as me,Mr as he,Mt as ge,N as _e,Nn as ve,Nr as ye,Nt as be,O as xe,On as Se,Or as Ce,Ot as we,P as Te,Pn as Ee,Pr as De,Pt as Oe,Q as ke,Qn as Ae,Qr as je,Qt as Me,R as Ne,Rn as Pe,Rr as Fe,Rt as Ie,S as Le,Si as Re,Sn as ze,Sr as Be,St as Ve,T as He,Tn as Ue,Tr as We,Tt as Ge,U as Ke,Un as qe,Ur as Je,Ut as Ye,V as Xe,Vn as Ze,Vr as Qe,Vt as $e,W as et,Wn as tt,Wr as nt,Wt as rt,X as it,Xn as at,Xr as ot,Xt as st,Y as ct,Yn as lt,Yr as ut,Yt as dt,Z as ft,Zn as pt,Zr as mt,Zt as ht,_ as gt,_i as _t,_n as vt,_r as yt,_t as bt,a as xt,ai as St,an as Ct,ar as wt,at as Tt,b as Et,bi as Dt,bn as Ot,br as kt,bt as At,c as jt,ci as Mt,cn as Nt,cr as Pt,ct as Ft,d as It,di as Lt,dn as Rt,dr as zt,dt as Bt,ei as Vt,en as Ht,er as Ut,et as Wt,f as Gt,fi as Kt,fn as qt,fr as Jt,ft as Yt,g as Xt,gi as Zt,gn as Qt,gr as $t,gt as en,h as tn,hi as nn,hn as rn,hr as an,ht as on,i as sn,ii as cn,in as ln,ir as un,it as dn,j as fn,jn as pn,jr as mn,jt as hn,k as gn,kn as _n,kr as vn,kt as yn,l as bn,li as xn,ln as Sn,lr as Cn,lt as wn,m as Tn,mi as En,mn as Dn,mr as On,mt as kn,n as An,ni as jn,nn as Mn,nr as Nn,nt as Pn,o as Fn,oi as In,on as Ln,or as Rn,ot as zn,p as Bn,pi as Vn,pn as Hn,pr as Un,pt as H,q as Wn,qn as Gn,qr as Kn,qt as qn,r as Jn,ri as Yn,rn as Xn,rr as Zn,rt as Qn,s as $n,si as er,sn as tr,sr as nr,st as rr,t as ir,ti as ar,tn as or,tr as sr,tt as cr,u as lr,ui as ur,un as dr,ur as fr,ut as pr,v as mr,vi as hr,vn as gr,vr as _r,vt as vr,w as yr,wi as br,wn as xr,wr as Sr,wt as Cr,x as wr,xi as Tr,xn as Er,xr as Dr,xt as Or,y as kr,yi as Ar,yn as jr,yr as Mr,yt as Nr,z as Pr,zn as Fr,zr as Ir,zt as Lr}from"./vendor-Co2oLbbP.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function Rr(e,t){if(e==null){let e=Error(t?`Expected ${t} to be defined`:`Expected value to be defined`);throw e.name=`ExpectDefinedError`,e}return e}function zr(e,t){let n=e=>e.trim().replace(/\s+/g,` `).toLowerCase();return n(e)===n(t)}function Br(e){return e instanceof Error?e.message:String(e)}var U=t(br(),1),Vr=t(h(),1),Hr=`#4f46e5`;function Ur(e){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
2
+ <rect x="2" y="2" width="60" height="60" rx="14" fill="${Hr}" />
3
+ <text x="32" y="44" text-anchor="middle" font-family="-apple-system,Segoe UI,Roboto,sans-serif" font-size="38" font-weight="700" fill="#fff">W</text>
4
+ ${e===`ready`?`<circle cx="50" cy="14" r="14" fill="#22c55e" stroke="#fff" stroke-width="3" />`:e===`error`?`<circle cx="50" cy="14" r="14" fill="#ef4444" stroke="#fff" stroke-width="3" />`:e===`running`?`<circle cx="50" cy="14" r="14" fill="#f59e0b" stroke="#fff" stroke-width="3" />`:e===`attention`?`<circle cx="50" cy="14" r="14" fill="#eab308" stroke="#fff" stroke-width="3"><animate attributeName="opacity" values="1;0.3;1" dur="1s" repeatCount="indefinite"/></circle>`:``}
5
+ </svg>`}function Wr(e){return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`}function Gr(){if(typeof document>`u`)return null;let e=document.querySelector(`link[rel="icon"]`);return e||(e=document.createElement(`link`),e.rel=`icon`,e.type=`image/svg+xml`,document.head.appendChild(e)),e}var Kr=`idle`;function qr(e){Kr=e;let t=Gr();t&&(t.href=Wr(Ur(e)))}var Jr=!1;function Yr(){Jr||typeof document>`u`||(Jr=!0,document.addEventListener(`visibilitychange`,()=>{!document.hidden&&(Kr===`ready`||Kr===`error`||Kr===`attention`)&&qr(`idle`)}))}function Xr(e){typeof requestAnimationFrame==`function`?requestAnimationFrame(e):queueMicrotask(e)}var Zr=new class{pending=new Map;scheduled=!1;push(e,t,n){if(!t)return;let r=this.pending.get(e);r?(r.buffer+=t,r.flush=n):this.pending.set(e,{buffer:t,flush:n}),this.schedule()}schedule(){this.scheduled||(this.scheduled=!0,Xr(()=>{this.scheduled=!1,this.drain()}))}drain(){if(this.pending.size===0)return;let e=Array.from(this.pending.entries());this.pending.clear();for(let[t,n]of e)n.buffer&&n.flush(t,n.buffer)}drop(e){this.pending.delete(e)}dropAll(){this.pending.clear()}flush(e){let t=this.pending.get(e);t&&(this.pending.delete(e),t.buffer&&t.flush(e,t.buffer))}flushAll(){this.drain()}};function Qr(e){return{type:`provider.clear_models`,payload:{providerId:e}}}function $r(e,t){return{type:`provider.undo_clear`,payload:{providerId:e,previousModels:[...t]}}}function ei(e){return{type:`provider.update`,payload:e}}function ti(e){try{return new URL(e).searchParams.get(`token`)}catch{return null}}function ni(){if(typeof window>`u`||!window.location)return null;try{let e=window.location.search??``;return new URLSearchParams(e).get(`token`)}catch{return null}}function ri(e){try{let t=new URL(e);return t.searchParams.delete(`token`),t.toString()}catch{return e}}function ii(){if(!(typeof window>`u`||!window.location||!window.history?.replaceState))try{let e=window.location.href;if(!e)return;let t=new URL(e);if(!t.searchParams.has(`token`))return;t.searchParams.delete(`token`),window.history.replaceState(window.history.state,document.title,t.toString())}catch{}}var ai=3457;function oi(){if(typeof document>`u`)return ai;let e=document.querySelector(`meta[name="wrongstack-ws-port"]`)?.getAttribute(`content`),t=e?Number.parseInt(e,10):NaN;return Number.isFinite(t)&&t>0&&t<65536?t:ai}function si(){if(typeof document>`u`)return null;let e=document.querySelector(`meta[name="wrongstack-ws-url"]`)?.getAttribute(`content`)?.trim();if(!e)return null;try{let t=new URL(e);if(t.protocol!==`ws:`&&t.protocol!==`wss:`)return null;let n=ni();return n&&!t.searchParams.has(`token`)&&t.searchParams.set(`token`,n),t.toString()}catch{return null}}function ci(){let e=si();if(e)return e;let t=oi();if(typeof window>`u`||!window.location?.hostname)return`ws://127.0.0.1:${t}`;let n=window.location.protocol===`https:`?`wss`:`ws`,r=window.location.hostname.toLowerCase(),i=ni(),a=i?`?token=${encodeURIComponent(i)}`:``;return r===`localhost`||r===`127.0.0.1`||r===`[::1]`||r===`::1`?`${n}://127.0.0.1:${t}${a}`:`${n}://${window.location.hostname}:${t}${a}`}function li(){if(typeof window>`u`||!window.location?.hostname)return`http://127.0.0.1:3456`;let e=window.location.protocol===`https:`?`https`:`http`,t=window.location.hostname.toLowerCase(),n=window.location.port?`:${window.location.port}`:``;return t===`localhost`||t===`127.0.0.1`||t===`[::1]`||t===`::1`?`${e}://127.0.0.1${n}`:`${e}://${window.location.hostname}${n}`}var ui=e({WrongStackWebSocketClient:()=>fi,getWSClient:()=>W});function di(e){try{let t=new URL(e),n=new URL(li());return t.hostname===n.hostname}catch{return!0}}var fi=class e{ws=null;url;handlers=new Map;reconnectAttempts=0;maxReconnectAttempts=10;reconnectDelay=1e3;shouldReconnect=!0;reconnectTimer=null;messageQueue=[];static MAX_QUEUED_MESSAGES=1e3;pendingConfirms=new Map;sessionId=null;lastErrorText;statusListeners=new Set;currentStatus={state:`connecting`};onStatus(e){return this.statusListeners.add(e),e(this.currentStatus),()=>this.statusListeners.delete(e)}get status(){return this.currentStatus}setStatus(e){this.currentStatus=e;for(let t of this.statusListeners)try{t(e)}catch{}}constructor(e){this.url=e??ci()}withSession(e){return this.sessionId?{...e,sessionId:this.sessionId}:e}async ensureAuthCookie(){if(typeof window>`u`)return;if(document.cookie.split(`;`).some(e=>e.trim().startsWith(`ws_token=`))){di(this.url)&&(this.url=ri(this.url)),ii();return}let e=ti(this.url)??ni();if(!e)return;let t=li()+`/ws-auth?token=${encodeURIComponent(e)}`;try{let e=await fetch(t,{method:`GET`,credentials:`same-origin`,cache:`no-store`});e.ok?(di(this.url)&&(this.url=ri(this.url)),ii()):console.warn(JSON.stringify({level:`warn`,event:`ws_client.ws_auth_failed`,status:e.status,timestamp:new Date().toISOString()}))}catch(e){console.warn(JSON.stringify({level:`warn`,event:`ws_client.ws_auth_error`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}}async connect(){return await this.ensureAuthCookie(),new Promise((e,t)=>{if(this.ws?.readyState===WebSocket.OPEN){e();return}this.setStatus({state:`connecting`});try{this.ws=new WebSocket(this.url),this.ws.binaryType=`arraybuffer`;let n=setTimeout(()=>{t(Error(`Connection timeout`))},1e4),r=!1;this.ws.onopen=()=>{clearTimeout(n),r=!0,this.reconnectAttempts=0,this.lastErrorText=void 0,this.setStatus({state:`open`}),this.flushMessageQueue(),e()},this.ws.onmessage=e=>{try{let t=JSON.parse(e.data);this.handleMessage(t)}catch(e){console.error(JSON.stringify({level:`error`,event:`ws_client.message_parse_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}},this.ws.onerror=e=>{console.error(JSON.stringify({level:`error`,event:`ws_client.error`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()})),this.lastErrorText=`Connection error (see browser devtools)`,r||(clearTimeout(n),t(Error(this.lastErrorText)))},this.ws.onclose=e=>{if(!r){clearTimeout(n);let r=e.reason||`Closed with code ${e.code}`;this.lastErrorText=r,t(Error(r));return}e.reason&&!this.lastErrorText?this.lastErrorText=`${e.reason} (code ${e.code})`:!this.lastErrorText&&e.code!==1e3&&(this.lastErrorText=`Closed with code ${e.code}`),this.attemptReconnect()}}catch(e){this.lastErrorText=e instanceof Error?e.message:String(e),this.setStatus({state:`closed`,error:this.lastErrorText}),t(e)}})}attemptReconnect(){if(!this.shouldReconnect||this.reconnectAttempts>=this.maxReconnectAttempts){this.reconnectTimer=null,this.setStatus({state:`closed`,error:this.lastErrorText??`Disconnected`});return}this.reconnectAttempts++;let e=Math.min(this.reconnectDelay*2**(this.reconnectAttempts-1),3e4),t=Date.now()+e;this.setStatus({state:`reconnecting`,attempt:this.reconnectAttempts,nextRetryAt:t,lastError:this.lastErrorText}),this.reconnectTimer=setTimeout(async()=>{if(this.shouldReconnect)try{await this.connect()}catch(e){console.error(JSON.stringify({level:`error`,event:`ws_client.reconnect_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}},e)}retryNow(){this.currentStatus.state!==`open`&&(this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.reconnectAttempts=0,this.connect().catch(e=>console.warn(JSON.stringify({level:`warn`,event:`ws_client.reconnect_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))))}flushMessageQueue(){for(;this.messageQueue.length>0;){let e=this.messageQueue.shift();e&&this.send(e)}}handleMessage(e){if(e.type===`tool.confirm_needed`){let t=e.payload;this.pendingConfirms.set(t.id,{resolve:t.resolve});let n={...e,payload:{...t,resolve:()=>{}}};this.emit(n);return}if(e.type===`session.start`){let t=e.payload;this.sessionId=t.sessionId}this.emit(e)}emit(e){let t=this.handlers.get(e.type);if(t)for(let n of t)try{n(e)}catch(t){console.error(JSON.stringify({level:`error`,event:`ws_client.handler_error`,messageType:e.type,message:t instanceof Error?t.message:String(t),timestamp:new Date().toISOString()}))}}send(t){if((t.type===`context.clear`||t.type===`session.new`||t.type===`session.resume`||t.type===`projects.select`)&&Zr.dropAll(),this.ws?.readyState===WebSocket.OPEN)this.ws.send(JSON.stringify(t));else{if(this.messageQueue.length>=e.MAX_QUEUED_MESSAGES){let t=this.messageQueue.shift();t&&console.warn(JSON.stringify({level:`warn`,event:`ws_client.message_queue_full`,cap:e.MAX_QUEUED_MESSAGES,droppedType:t.type,timestamp:new Date().toISOString()}))}this.messageQueue.push(t)}}on(e,t){let n=this.handlers.get(e);return n||(n=new Set,this.handlers.set(e,n)),n.add(t),()=>n?.delete(t)}off(e,t){this.handlers.get(e)?.delete(t)}sendMessage(e,t){let n=`msg_${Date.now()}_${crypto.randomUUID().slice(0,8)}`;return this.send({type:`user_message`,payload:this.withSession({id:n,content:e,timestamp:Date.now(),...t?{imageBase64:t}:{}})}),n}sendAbort(){this.send({type:`abort`,payload:this.withSession({})})}getGitInfo(){this.send({type:`git.info`})}getGitChanges(){this.send({type:`git.changes`})}getGitDiff(e){this.send({type:`git.diff`,payload:{path:e}})}sendConfirm(e,t){let n=this.pendingConfirms.get(e);n&&(n.resolve(t),this.pendingConfirms.delete(e)),this.send({type:`tool.confirm_result`,payload:this.withSession({id:e,decision:t})})}switchModel(e,t){this.send({type:`model.switch`,payload:{provider:e,model:t}})}newSession(){this.send({type:`session.new`,payload:this.withSession({})})}listProviders(){this.send({type:`providers.list`})}listProviderModels(e){this.send({type:`provider.models`,payload:{providerId:e}})}listSavedProviders(){this.send({type:`providers.saved`})}addKey(e,t,n){this.send({type:`key.add`,payload:{providerId:e,label:t,apiKey:n}})}updateKey(e,t,n){this.send({type:`key.update`,payload:{providerId:e,label:t,apiKey:n}})}deleteKey(e,t){this.send({type:`key.delete`,payload:{providerId:e,label:t}})}setActiveKey(e,t){this.send({type:`key.set_active`,payload:{providerId:e,label:t}})}addProvider(e,t,n,r){this.send({type:`provider.add`,payload:{id:e,family:t,baseUrl:n,apiKey:r}})}removeProvider(e){this.send({type:`provider.remove`,payload:{providerId:e}})}startOAuth(e){this.send({type:`auth.oauth.start`,payload:{kind:e}})}submitOAuthCode(e,t){this.send({type:`auth.oauth.code`,payload:{kind:e,input:t}})}cancelOAuth(e){this.send({type:`auth.oauth.cancel`,payload:{kind:e}})}probeProvider(e,t){this.send({type:`provider.probe`,payload:t===void 0?{providerId:e}:{providerId:e,timeoutMs:t}})}clearProviderModels(e){this.send(Qr(e))}undoProviderClear(e,t){this.send($r(e,t))}updateProvider(e){this.send(ei(e))}clearContext(){this.send({type:`context.clear`,payload:this.withSession({})})}compactContext(e=!1){this.send({type:`context.compact`,payload:this.withSession({aggressive:e})})}repairContext(){this.send({type:`context.repair`,payload:this.withSession({})})}debugContext(){this.send({type:`context.debug`,payload:this.withSession({})})}listContextModes(){this.send({type:`context.modes.list`,payload:this.withSession({})})}switchContextMode(e){this.send({type:`context.mode.switch`,payload:this.withSession({id:e})})}createContextMode(e){this.send({type:`context.mode.create`,payload:this.withSession(e)})}updateContextMode(e,t){this.send({type:`context.mode.update`,payload:this.withSession({id:e,...t})})}deleteContextMode(e){this.send({type:`context.mode.delete`,payload:this.withSession({id:e})})}switchAutonomy(e){this.send({type:`autonomy.switch`,payload:{mode:e}})}updatePrefs(e){this.send({type:`prefs.update`,payload:e})}getPrefs(){this.send({type:`prefs.get`})}listTools(){this.send({type:`tools.list`})}listMemory(){this.send({type:`memory.list`})}remember(e,t){this.send({type:`memory.remember`,payload:{text:e,scope:t}})}forget(e,t){this.send({type:`memory.forget`,payload:{text:e,scope:t}})}listMcpServers(){this.send({type:`mcp.list`})}addMcpServer(e){this.send({type:`mcp.add`,payload:e})}removeMcpServer(e){this.send({type:`mcp.remove`,payload:{name:e}})}updateMcpServer(e){this.send({type:`mcp.update`,payload:e})}wakeMcpServer(e){this.send({type:`mcp.wake`,payload:{name:e}})}sleepMcpServer(e){this.send({type:`mcp.sleep`,payload:{name:e}})}discoverMcpServer(e){this.send({type:`mcp.discover`,payload:{name:e}})}enableMcpServer(e){this.send({type:`mcp.enable`,payload:{name:e}})}disableMcpServer(e){this.send({type:`mcp.disable`,payload:{name:e}})}restartMcpServer(e){this.send({type:`mcp.restart`,payload:{name:e}})}listSkills(){this.send({type:`skills.list`})}getSkillContent(e,t){this.send({type:`skills.content`,payload:{name:e,source:t}})}installSkill(e,t){this.send({type:`skills.install`,payload:{ref:e,global:t}})}uninstallSkill(e,t){this.send({type:`skills.uninstall`,payload:{name:e,global:t}})}checkForUpdates(e,t){this.send({type:`skills.update`,payload:{name:e,global:t}})}createSkill(e,t,n){this.send({type:`skills.create`,payload:{name:e,description:t,scope:n}})}editSkill(e,t){this.send({type:`skills.edit`,payload:{name:e,body:t}})}exportAllSkills(){this.send({type:`skills.export`})}getDiag(){this.send({type:`diag.get`,payload:this.withSession({})})}getStats(){this.send({type:`stats.get`,payload:this.withSession({})})}saveSession(){this.send({type:`session.save`,payload:this.withSession({})})}resumeSessionById(e){this.send({type:`session.resume`,payload:this.withSession({id:e})})}listModes(){this.send({type:`modes.list`})}switchMode(e){this.send({type:`mode.switch`,payload:{id:e}})}listFiles(e,t,n){this.send({type:`files.list`,payload:{query:e,limit:t,path:n}})}requestCompletion(e){this.send({type:`completion.request`,payload:e})}getTodos(){this.send({type:`todos.get`,payload:this.withSession({})})}clearTodos(){this.send({type:`todos.clear`,payload:this.withSession({})})}removeTodo(e){let t=typeof e==`number`?{index:e}:{id:e};this.send({type:`todos.remove`,payload:this.withSession(t)})}updateTodoStatus(e,t){this.send({type:`todo.update`,payload:this.withSession({id:e,status:t})})}getTasks(){this.send({type:`tasks.get`,payload:this.withSession({})})}updateTaskStatus(e,t){this.send({type:`task.update`,payload:this.withSession({id:e,status:t})})}getPlan(){this.send({type:`plan.get`,payload:this.withSession({})})}updatePlanItem(e,t){this.send({type:`plan.item.update`,payload:this.withSession({target:e,status:t})})}listSessions(e=50){this.send({type:`sessions.list`,payload:this.withSession({limit:e})})}deleteSession(e){this.send({type:`session.delete`,payload:{id:e}})}listProjects(){this.send({type:`projects.list`})}addProject(e,t){this.send({type:`projects.add`,payload:{root:e,name:t}})}selectProject(e,t){this.send({type:`projects.select`,payload:{root:e,name:t}})}setWorkingDir(e){this.send({type:`working_dir.set`,payload:{path:e}})}resumeSession(e){this.send({type:`session.resume`,payload:this.withSession({id:e})})}ping(){this.send({type:`ping`})}refineModel(e){this.send({type:`model.refine`,payload:{text:e}})}disconnect(){this.shouldReconnect=!1,this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.messageQueue.length=0,this.ws?.close(),this.ws=null}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}get currentSessionId(){return this.sessionId}},pi=null;function W(e){return pi||=new fi(e),pi}function mi(e){if(!e)return e;let t=e.split(/\n{2,}/),n=[];for(let e of t)n.length>0&&n[n.length-1]?.trim()===e.trim()||n.push(e);return n.map(e=>{let t=e.split(`
6
+ `),n=[];for(let e of t)n.length>0&&e.trim().length>0&&n[n.length-1]?.trim()===e.trim()||n.push(e);return n.join(`
7
+ `)}).join(`
8
+
9
+ `)}function hi(e){let t=new Map;for(let n of e)n.role===`tool`&&n.toolUseId&&t.set(n.toolUseId,n.id);return t}var G=Re()(Tr((e,t)=>({messages:[],currentAssistantMessageId:null,currentToolId:null,isLoading:!1,abortController:null,executions:new Map,toolMessageIdsByUseId:new Map,queue:[],runStart:null,thinkingBuffer:``,thinkingStartedAt:null,thinkingLogBuffer:``,thinkingLogStartedAt:null,boundSessionId:null,addMessage:t=>{let n=`msg_${Date.now()}_${crypto.randomUUID().slice(0,8)}`,r={...t,id:n,timestamp:t.timestamp??Date.now()};return e(e=>{let i={messages:[...e.messages,r],currentAssistantMessageId:t.role===`assistant`?n:e.currentAssistantMessageId};if(r.role===`tool`&&r.toolUseId){let t=new Map(e.toolMessageIdsByUseId);t.set(r.toolUseId,n),i.toolMessageIdsByUseId=t}return i}),n},setMessages:t=>{e({messages:t,currentAssistantMessageId:null,currentToolId:null,executions:new Map,toolMessageIdsByUseId:hi(t),thinkingBuffer:``,thinkingStartedAt:null,thinkingLogBuffer:``,thinkingLogStartedAt:null})},updateMessage:(t,n)=>{e(e=>({messages:e.messages.map(e=>e.id===t?{...e,...n}:e)}))},appendToMessage:(t,n)=>{e(e=>({messages:e.messages.map(e=>e.id===t?{...e,content:e.content+n}:e)}))},finalizeMessage:t=>{e(e=>({messages:e.messages.map(e=>e.id===t?{...e,content:mi(e.content),streaming:!1}:e)}))},setToolResult:(t,n,r)=>{e(e=>({messages:e.messages.map(e=>e.id===t?{...e,toolResult:n,isError:!r,progressLines:void 0}:e)}))},appendToolProgress:(e,n)=>{t().appendToolProgressLines(e,[n])},appendToolProgressLines:(t,n)=>{n.length!==0&&e(e=>({messages:e.messages.map(e=>{if(e.id!==t)return e;let r=e.progressLines??[];return r.push(...n),r.length>30&&r.splice(0,r.length-30),{...e,progressLines:r}})}))},getToolMessageId:e=>t().toolMessageIdsByUseId.get(e),setToolResultByUseId:(e,n,r)=>{let i=t().toolMessageIdsByUseId.get(e);i&&t().setToolResult(i,n,r)},appendToolProgressLinesByUseId:(e,n)=>{let r=t().toolMessageIdsByUseId.get(e);r&&t().appendToolProgressLines(r,n)},setLoading:t=>e({isLoading:t}),setAbortController:t=>e({abortController:t}),clearMessages:()=>e({messages:[],currentAssistantMessageId:null,currentToolId:null,executions:new Map,toolMessageIdsByUseId:new Map,thinkingBuffer:``,thinkingStartedAt:null,thinkingLogBuffer:``,thinkingLogStartedAt:null,boundSessionId:null}),setBoundSessionId:t=>e({boundSessionId:t}),setCurrentAssistantMessage:t=>e({currentAssistantMessageId:t}),setCurrentToolId:t=>e({currentToolId:t}),truncateAfter:t=>e(e=>{let n=e.messages.findIndex(e=>e.id===t);if(n===-1)return e;let r=e.messages.slice(0,n+1);return{messages:r,currentAssistantMessageId:null,currentToolId:null,toolMessageIdsByUseId:hi(r)}}),addExecution:t=>{e(e=>{let n=new Map(e.executions);return n.set(t.id,t),{executions:n}})},updateExecution:(t,n)=>{e(e=>{let r=new Map(e.executions),i=r.get(t);return i&&r.set(t,{...i,...n}),{executions:r}})},enqueue:(t,n=`queue`)=>e(e=>({queue:[...e.queue,{text:t,mode:n,addedAt:Date.now()}]})),dequeue:()=>{let{queue:n}=t();if(n.length===0)return null;let[r,...i]=n;return e({queue:i}),Rr(r)},removeQueued:t=>e(e=>({queue:e.queue.filter((e,n)=>n!==t)})),clearQueue:()=>e({queue:[]}),setRunStart:t=>e({runStart:t}),appendThinking:t=>e(e=>({thinkingBuffer:e.thinkingBuffer+t,thinkingStartedAt:e.thinkingStartedAt??Date.now(),thinkingLogBuffer:e.thinkingLogBuffer+t,thinkingLogStartedAt:e.thinkingLogStartedAt??Date.now()})),clearThinking:()=>e({thinkingBuffer:``,thinkingStartedAt:null}),flushThinkingLog:e=>{let{thinkingLogBuffer:n,thinkingLogStartedAt:r}=t(),i=n.trim();if(!i)return;let a=r??Date.now();t().addMessage({role:`system`,content:``,thinkingLog:{iteration:e,text:i,startedAt:a,durationMs:Math.max(0,Date.now()-a)}}),t().clearThinkingLog()},clearThinkingLog:()=>e({thinkingLogBuffer:``,thinkingLogStartedAt:null})}),{name:`wrongstack-chat`,version:1,partialize:e=>({messages:e.messages,queue:e.queue,boundSessionId:e.boundSessionId,thinkingLogBuffer:e.thinkingLogBuffer}),migrate:(e,t)=>{if(t>1)return null;let n=e??{};return{messages:Array.isArray(n.messages)?n.messages:[],queue:Array.isArray(n.queue)?n.queue:[],boundSessionId:typeof n.boundSessionId==`string`?n.boundSessionId:null,thinkingLogBuffer:typeof n.thinkingLogBuffer==`string`?n.thinkingLogBuffer:``}},onRehydrateStorage:()=>(e,t)=>{t||typeof window<`u`&&(window.__wrongstackChatRehydrated=!0)}})),K=Re()(Tr(e=>({provider:`anthropic`,model:`claude-sonnet-4-20250514`,wsUrl:ci(),wsConnected:!1,wsStatus:{state:`connecting`},theme:`system`,autoConnect:!0,soundOnComplete:!1,setProvider:t=>e({provider:t}),setModel:t=>e({model:t}),setConfig:t=>e(t),setTheme:t=>e({theme:t}),setWsConnected:t=>e({wsConnected:t}),setWsStatus:t=>e({wsStatus:t,wsConnected:t.state===`open`}),setSoundOnComplete:t=>e({soundOnComplete:t})}),{name:`wrongstack-config`,partialize:e=>({provider:e.provider,model:e.model,baseUrl:e.baseUrl,apiKey:e.apiKey,theme:e.theme,autoConnect:e.autoConnect,soundOnComplete:e.soundOnComplete}),merge:(e,t)=>({...t,...e,wsUrl:ci(),wsConnected:!1,wsStatus:{state:`connecting`}})})),gi=1,q=Re()(Tr(e=>({session:null,totalTokens:{input:0,output:0,cacheRead:0,cacheWrite:0},lastInputTokens:0,cost:0,startTime:null,maxContext:0,inputCost:0,outputCost:0,cacheReadCost:0,projectName:``,projectRoot:``,cwd:``,mode:`default`,modes:[],contextMode:`balanced`,contextModes:[],iteration:null,todos:[],lastVisitedAt:0,setSession:t=>e({session:t,lastVisitedAt:Date.now()}),updateUsage:t=>e(e=>{let n=t.input+(t.cacheRead??0)+(t.cacheWrite??0),r=t.cacheRead??0,i=t.cacheWrite??0;return{totalTokens:{input:e.totalTokens.input+t.input,output:e.totalTokens.output+t.output,cacheRead:(e.totalTokens.cacheRead??0)+r,cacheWrite:(e.totalTokens.cacheWrite??0)+i},lastInputTokens:n||e.lastInputTokens}}),addCost:t=>e(e=>({cost:e.cost+t})),startSession:t=>e({session:t,startTime:Date.now(),iteration:null,lastInputTokens:0,totalTokens:{input:0,output:0,cacheRead:0,cacheWrite:0},cost:0,lastVisitedAt:Date.now()}),endSession:()=>e({session:null,startTime:null,iteration:null}),setEnv:t=>e(e=>({maxContext:t.maxContext??e.maxContext,projectRoot:t.projectRoot??e.projectRoot,projectName:t.projectName??e.projectName,cwd:t.cwd??e.cwd,mode:t.mode??e.mode,contextMode:t.contextMode??e.contextMode,inputCost:t.inputCost??e.inputCost,outputCost:t.outputCost??e.outputCost,cacheReadCost:t.cacheReadCost??e.cacheReadCost})),setIteration:t=>e({iteration:t}),setContextUsage:(t,n)=>e(e=>({lastInputTokens:t,maxContext:n??e.maxContext})),setModes:t=>e({modes:t}),setContextModes:t=>e({contextModes:t}),setTodos:t=>e({todos:t})}),{name:`wrongstack-session`,version:gi,partialize:e=>({session:e.session,projectName:e.projectName,projectRoot:e.projectRoot,cwd:e.cwd,mode:e.mode,contextMode:e.contextMode,lastVisitedAt:e.lastVisitedAt}),migrate:(e,t)=>{if(t>gi)return null;let n=e??{};return n.session!==null&&n.session!==void 0&&typeof n.session!=`object`?null:{session:n.session??null,projectName:typeof n.projectName==`string`?n.projectName:``,projectRoot:typeof n.projectRoot==`string`?n.projectRoot:``,cwd:typeof n.cwd==`string`?n.cwd:``,mode:typeof n.mode==`string`?n.mode:`default`,contextMode:typeof n.contextMode==`string`?n.contextMode:`balanced`,lastVisitedAt:typeof n.lastVisitedAt==`number`?n.lastVisitedAt:0}},onRehydrateStorage:()=>(e,t)=>{t||typeof window<`u`&&(window.__wrongstackSessionRehydrated=!0)}})),_i=[`chat`,`agents`,`history`,`files`,`changes`,`projects`,`mailbox`,`skills`,`worktrees`,`officemap`];function vi(e){return _i.includes(e)?e:e===`context`?`chat`:e===`sessions`?`history`:e===`officemap`?`officemap`:`chat`}var yi=[`chat`,`settings`,`autophase`,`specs`,`sddboard`,`sddwizard`,`files`,`changes`,`sessions`,`setup`,`skill`,`officemap`,`mailbox`,`debug`,`design-gallery`,`refresh-debug`,`analytics`];function bi(e){return yi.includes(e)?e:`chat`}var J=Re()(Tr(e=>({sidebarOpen:!0,activeActivity:`chat`,settingsOpen:!1,currentView:`chat`,showConfirmDialog:!1,confirmInfo:null,paletteOpen:!1,shortcutsOpen:!1,searchOpen:!1,searchQuery:``,searchActiveMessageId:null,scrollTarget:null,promptHistory:[],sidebarWidth:304,pinnedIds:[],compactMode:!1,modelSwitcherOpen:!1,favoriteSessionIds:[],sessionNicknames:{},fileExplorerWidth:220,refineEnabled:!0,refinePanel:null,promptLibraryOpen:!1,promptInsertRequest:null,dockSection:null,workDashboardTab:`todos`,hiddenChips:[],dockCustomizeOpen:!1,fleetMonitorOpen:!1,agentsMonitorOpen:!1,inspectorOpen:!1,inspectorTab:`fleet`,processMonitorOpen:!1,queuePanelOpen:!1,terminalOpen:!1,selectedMailMessage:null,skillsState:{selectedSkill:null,navHistory:[],historyIndex:-1,detailOpen:!1,knownRefs:{},updateAvailableCount:0},selectActivity:t=>e({activeActivity:t}),toggleSidebar:()=>e(e=>({sidebarOpen:!e.sidebarOpen})),setSidebarOpen:t=>e({sidebarOpen:t}),setSettingsOpen:t=>e({settingsOpen:t}),setCurrentView:t=>e({currentView:t}),showConfirm:t=>e({showConfirmDialog:!0,confirmInfo:t}),hideConfirm:()=>e({showConfirmDialog:!1,confirmInfo:null}),setPaletteOpen:t=>e({paletteOpen:t}),setShortcutsOpen:t=>e({shortcutsOpen:t}),setSearchOpen:t=>e({searchOpen:t,searchQuery:``,searchActiveMessageId:null}),setSearchQuery:t=>e({searchQuery:t}),setSearchActiveMessageId:t=>e({searchActiveMessageId:t}),requestScrollToMessage:t=>e(e=>({scrollTarget:{id:t,nonce:(e.scrollTarget?.nonce??0)+1}})),pushPrompt:t=>e(e=>{let n=t.trim();return n?{promptHistory:[n,...e.promptHistory.filter(e=>e!==n)].slice(0,50)}:e}),setSidebarWidth:t=>e({sidebarWidth:Math.max(240,Math.min(560,Math.round(t)))}),togglePin:t=>e(e=>({pinnedIds:e.pinnedIds.includes(t)?e.pinnedIds.filter(e=>e!==t):[...e.pinnedIds,t]})),unpinAll:()=>e({pinnedIds:[]}),toggleCompactMode:()=>e(e=>({compactMode:!e.compactMode})),setModelSwitcherOpen:t=>e({modelSwitcherOpen:t}),toggleFavoriteSession:t=>e(e=>({favoriteSessionIds:e.favoriteSessionIds.includes(t)?e.favoriteSessionIds.filter(e=>e!==t):[...e.favoriteSessionIds,t]})),setSessionNickname:(t,n)=>e(e=>{let r=n.trim(),i={...e.sessionNicknames};return r?i[t]=r:delete i[t],{sessionNicknames:i}}),setFileExplorerWidth:t=>e({fileExplorerWidth:Math.max(160,Math.min(400,Math.round(t)))}),toggleRefineEnabled:()=>e(e=>({refineEnabled:!e.refineEnabled})),setRefinePanel:t=>e({refinePanel:t}),setPromptLibraryOpen:t=>e({promptLibraryOpen:t}),requestPromptInsert:t=>e({promptInsertRequest:t,promptLibraryOpen:!1}),clearPromptInsert:()=>e({promptInsertRequest:null}),setDockSection:t=>e({dockSection:t}),setWorkDashboardTab:t=>e({workDashboardTab:t}),toggleDockSection:t=>e(e=>({dockSection:e.dockSection===t?null:t})),toggleChipHidden:t=>e(e=>{let n=e.hiddenChips.includes(t);return{hiddenChips:n?e.hiddenChips.filter(e=>e!==t):[...e.hiddenChips,t],dockSection:!n&&e.dockSection===t?null:e.dockSection}}),setDockCustomizeOpen:t=>e({dockCustomizeOpen:t}),setFleetMonitorOpen:t=>e({fleetMonitorOpen:t}),setAgentsMonitorOpen:t=>e({agentsMonitorOpen:t}),setInspectorOpen:t=>e({inspectorOpen:t}),setInspectorTab:t=>e({inspectorTab:t}),toggleInspector:()=>e(e=>({inspectorOpen:!e.inspectorOpen})),setProcessMonitorOpen:t=>e({processMonitorOpen:t}),setQueuePanelOpen:t=>e({queuePanelOpen:t}),setTerminalOpen:t=>e({terminalOpen:t}),toggleTerminal:()=>e(e=>({terminalOpen:!e.terminalOpen})),setSkillsState:t=>e({skillsState:t}),setSelectedMailMessage:t=>e({selectedMailMessage:t})}),{name:`wrongstack-ui`,version:5,migrate:(e,t)=>{let n=e??{};return n.activeActivity=vi(n.activeActivity),typeof n.sidebarWidth==`number`&&(n.sidebarWidth=Math.max(240,Math.min(560,n.sidebarWidth))),t<2&&(delete n.fleetDrawerOpen,delete n.agentsDrawerOpen),`currentView`in n&&(n.currentView=bi(n.currentView)),`dockSection`in n&&n.dockSection!==null&&![`autophase`,`goal`,`fleet`,`work`,`worktrees`,`collab`].includes(n.dockSection)&&(n.dockSection=null),n},partialize:e=>({sidebarOpen:e.sidebarOpen,activeActivity:e.activeActivity,sidebarWidth:e.sidebarWidth,promptHistory:e.promptHistory,pinnedIds:e.pinnedIds,compactMode:e.compactMode,favoriteSessionIds:e.favoriteSessionIds,sessionNicknames:e.sessionNicknames,fileExplorerWidth:e.fileExplorerWidth,refineEnabled:e.refineEnabled,hiddenChips:e.hiddenChips,workDashboardTab:e.workDashboardTab,inspectorOpen:e.inspectorOpen,inspectorTab:e.inspectorTab,skillsState:e.skillsState,currentView:e.currentView,dockSection:e.dockSection})})),xi=Re()(e=>({messages:[],agents:[],setMessages:t=>e({messages:t}),setAgents:t=>e({agents:t})}));function Si(e){return e.messages.filter(e=>!e.completed&&(e.readByCount??0)===0).length}var Ci=Re()(e=>({info:null,setInfo:t=>e({info:t}),clear:()=>e({info:null})})),wi=Re(e=>({sideEffects:[],loading:!1,setSideEffects:t=>e({sideEffects:t,loading:!1}),setLoading:t=>e({loading:t}),clear:()=>e({sideEffects:[],loading:!1})})),Ti=Re()(e=>({files:[],error:null,loadingList:!1,selectedPath:null,diff:null,loadingDiff:!1,setFiles:(t,n)=>e({files:t,error:n,loadingList:!1}),setListLoading:t=>e({loadingList:t}),select:t=>e({selectedPath:t,diff:null,loadingDiff:!!t}),setDiff:t=>e({diff:t,loadingDiff:!1}),setDiffLoading:t=>e({loadingDiff:t}),clear:()=>e({files:[],error:null,selectedPath:null,diff:null,loadingDiff:!1})})),Ei=Re()(e=>({entries:[],loading:!1,error:null,setEntries:(t,n=null)=>e({entries:t,error:n,loading:!1}),setLoading:t=>e({loading:t}),removeEntry:t=>e(e=>({entries:e.entries.filter(e=>e.id!==t)})),clearHistory:()=>e({entries:[]})})),Di=Re()(e=>({worktrees:[],baseBranch:``,activity:[],orphans:[],canClean:!1,cleanResult:null,mergeResult:null,diffByDir:{},setSnapshot:(t,n)=>e({worktrees:t,baseBranch:n}),pushEvent:t=>e(e=>({activity:[...e.activity,t].slice(-40)})),setOrphans:(t,n,r)=>e({orphans:t,canClean:n,cleanBlockedReason:r}),setCleanResult:t=>e({cleanResult:t}),setMergeResult:t=>e({mergeResult:t}),setDiff:(t,n)=>e(e=>({diffByDir:{...e.diffByDir,[t]:n}}))})),Y=Bt(),Oi=/(?:💡\s*Next steps?|<next_steps>)\s*\n+/i,ki=/^(?:(\d+)[.)]\s*|[-*•]\s*)(.+?)(\s+auto="true")?$/,Ai=6;function ji(e,t=!0){let n=t?Oi.exec(e):Ni().exec(e);if(!n)return{steps:[],stripped:e};let r=n.index+n[0].length,i=e.slice(r),a=i.split(`
10
+ `),o=[],s=new Set,c=0,l=0;for(let e of a){let t=e.trim();if(t===`</next_steps>`){c+=e.length+1;break}if(!t){c+=e.length+1;continue}let n=ki.exec(t);if(!n)break;let r=n[1],i=n[2].trim(),a=!!n[3],u=r===void 0?o.length+1:Number.parseInt(r,10);if(s.has(u)){c+=e.length+1;continue}if(s.add(u),o.push(a?{index:u,text:i,auto:!0}:{index:u,text:i}),c+=e.length+1,l++,l>=Ai)break}if(o.length===0||t&&/<next_steps>/i.test(n[0])&&!i.includes(`</next_steps>`))return{steps:[],stripped:e};let u=n.index,d=r+c;return{steps:o,stripped:(e.slice(0,u)+e.slice(d)).replace(/\n{3,}/g,`
11
+
12
+ `).trim()}}var Mi=[{re:/💡\s*Next steps?\s*\n+/i,label:`emoji`},{re:/##?\s*Next steps?\s*\n+/i,label:`markdown`},{re:/\n{1,2}Next steps?\s*\n+/i,label:`plain`},{re:/<next_steps>\s*\n+/i,label:`xml-tag`}];function Ni(){let e=Mi.map(({re:e})=>`(?:${e.source})`).join(`|`);return new RegExp(e,`i`)}function Pi(e){return e.replace(/<next_steps\b[^>]*>[\s\S]*?<\/next_steps>/gi,``).replace(/<next_steps\b[^>]*\/?>/gi,``).replace(/\n{3,}/g,`
13
+
14
+ `).trim()}function Fi(e){let t=document.querySelector(`textarea`);t&&((Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype,`value`)?.set)?.call(t,e),t.dispatchEvent(new Event(`input`,{bubbles:!0})),t.focus())}function Ii({delayMs:e,onComplete:t}){let[n,r]=(0,U.useState)(Math.ceil(e/1e3));return(0,U.useEffect)(()=>{if(n<=0){t();return}let e=setTimeout(()=>r(e=>e-1),1e3);return()=>clearTimeout(e)},[n,t]),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 text-xs text-primary font-medium`,children:[(0,Y.jsx)(l,{className:`h-3 w-3`}),n,`s`]})}function Li({steps:e,yoloMode:t=!1,autoMode:n=!1,autoDelayMs:r=3e4,onAutoSubmit:i,canAutoSubmit:a=!0}){if(e.length===0)return null;let o=t&&n&&a,s=o?e.find(e=>e.auto):void 0;return(0,Y.jsxs)(`div`,{className:`mt-4 rounded-xl border border-primary/20 bg-primary/[0.03] overflow-hidden animate-message`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 px-3.5 py-2 border-b border-primary/10 bg-primary/[0.04]`,children:[(0,Y.jsx)(`span`,{className:`flex items-center justify-center w-5 h-5 rounded-md bg-primary/15 text-primary`,children:(0,Y.jsx)(d,{className:`h-3 w-3`})}),(0,Y.jsx)(`span`,{className:`text-xs font-semibold text-foreground/90`,children:`Next steps`}),o&&s?(0,Y.jsxs)(`span`,{className:`ml-auto flex items-center gap-1 text-xs text-primary`,children:[(0,Y.jsx)(l,{className:`h-3 w-3`}),`auto-submitting in `,(0,Y.jsx)(Ii,{delayMs:r,onComplete:()=>i?.(s.text)})]}):(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground ml-auto`,children:`click to fill input`})]}),(0,Y.jsx)(`div`,{className:`flex flex-col p-2 gap-1`,children:e.map(e=>{let t=o&&e.auto;return(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>Fi(e.text),className:`group flex items-center gap-2.5 w-full text-left px-3 py-2 rounded-lg transition-all border ${t?`bg-primary/10 border-primary/30 ring-1 ring-primary/20`:`border-transparent hover:bg-primary/[0.08] hover:shadow-sm hover:border-primary/20`}`,title:`Click to fill: ${e.text}`,children:[(0,Y.jsx)(`span`,{className:`flex items-center justify-center w-5 h-5 rounded-md text-[11px] font-mono font-semibold tabular-nums shrink-0 transition-colors ${t?`bg-primary/30 text-primary`:`bg-muted/80 group-hover:bg-primary/20 text-muted-foreground group-hover:text-primary`}`,children:e.index}),(0,Y.jsx)(Vn,{className:`h-3.5 w-3.5 shrink-0 transition-all ${t?`text-primary`:`text-muted-foreground/60 group-hover:text-primary group-hover:translate-x-0.5`}`}),(0,Y.jsx)(`span`,{className:`text-sm leading-snug flex-1 min-w-0 transition-colors ${t?`text-foreground font-medium`:`text-foreground/80 group-hover:text-foreground`}`,children:e.text}),e.auto&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 text-[10px] text-primary/70`,children:[n&&e.index===1&&!o?(0,Y.jsx)(`span`,{title:`Will auto-submit after countdown`,children:`⏩`}):(0,Y.jsx)(l,{className:`h-3 w-3`}),`auto`]}),(0,Y.jsx)(ze,{className:`h-3.5 w-3.5 shrink-0 transition-all ${t?`opacity-100 text-primary/60`:`opacity-0 group-hover:opacity-100 text-primary/60`}`})]},e.index)})})]})}var Ri=12,zi=20;function Bi(e,t,n){return{id:e,name:t?.trim()||e,sessionId:n,status:`running`,iteration:0,toolCalls:0,costUsd:0,ctxPct:0,ctxTokens:0,maxContext:0,extensions:0,startedAt:Date.now(),toolLog:[],sparklineBins:Array(Ri).fill(0)}}var Vi=0;function Hi(){return`tl_${Date.now()}_${++Vi}`}function Ui(e,t){return[t,...e].slice(0,zi)}function Wi(e){return[e[0]+1,...e.slice(0,Ri-1)]}function Gi(e){return Number.isFinite(e)?Math.max(0,Math.min(100,e)):0}var X=Re()((e,t)=>({agents:new Map,leaderId:void 0,fleetTokensIn:0,fleetTokensOut:0,fleetConcurrency:0,fleetConcurrencyMax:4,eventTimeline:[],agentTimeline:[],pushAgentTimelineEntry:t=>e(e=>({agentTimeline:[{id:`agent_tl_${Date.now()}_${Math.random().toString(36).slice(2,6)}`,...t},...e.agentTimeline].slice(0,200)})),clear:()=>e({agents:new Map,leaderId:void 0,fleetTokensIn:0,fleetTokensOut:0,fleetConcurrency:0,eventTimeline:[],agentTimeline:[]}),getAgentsBySession:e=>{let n=[];for(let r of t().agents.values())r.sessionId===e&&n.push(r);return n},applyEvent:t=>e(e=>{let n=new Map(e.agents),r=e.eventTimeline,i=e.leaderId,a=e.fleetTokensIn,o=e.fleetTokensOut;if(t.kind===`session_stopped`&&t.sessionId){for(let[e,r]of n)r.sessionId===t.sessionId&&n.delete(e);return{agents:n,leaderId:void 0,fleetTokensIn:0,fleetTokensOut:0}}if(t.kind===`leader_updated`&&t.subagentId){let a=e.leaderId;if(a&&a!==t.subagentId){let e=n.get(a);e&&n.set(a,{...e,isLeader:!1})}i=t.subagentId;let o=n.get(t.subagentId)??Bi(t.subagentId,t.name,t.sessionId);return n.set(t.subagentId,{...o,isLeader:!0,name:t.name?.trim()||o.name}),r=Ui(r,{id:Hi(),kind:`leader_updated`,agentId:t.subagentId,agentName:t.name??i,timestamp:Date.now(),message:`${t.name??t.subagentId} became leader`}),{agents:n,leaderId:i,eventTimeline:r}}if(!t.subagentId)return e;let s=n.get(t.subagentId)??Bi(t.subagentId,t.name,t.sessionId),c={...s},l=Date.now();switch(t.kind){case`spawned`:c.name=t.name?.trim()||c.name,c.provider=t.provider??c.provider,c.model=t.model??c.model,c.description=t.description??c.description,c.taskId=t.taskId??c.taskId,c.sessionId=t.sessionId??c.sessionId,c.status=`running`,c.sparklineBins=Array(Ri).fill(0),r=Ui(r,{id:Hi(),kind:`spawned`,agentId:t.subagentId,agentName:c.name,timestamp:l,message:`${c.name} spawned`});break;case`task_started`:c.description=t.description??c.description,c.taskId=t.taskId??c.taskId,c.status=`running`,r=Ui(r,{id:Hi(),kind:`task_started`,agentId:t.subagentId,agentName:c.name,timestamp:l,message:`${c.name} started: ${t.description??`new task`}`});break;case`tool_executed`:{let e=typeof t.ok==`boolean`?t.ok:!0,n=typeof t.durationMs==`number`?t.durationMs:0;c.lastTool=t.toolName??c.lastTool,c.toolCalls+=1,c.toolLog=[{name:t.toolName??`unknown`,ok:e,durationMs:n,at:l},...c.toolLog].slice(0,50),c.sparklineBins=Wi(c.sparklineBins),r=Ui(r,{id:Hi(),kind:`tool_executed`,agentId:t.subagentId,agentName:c.name,timestamp:l,message:`${c.name} ${e?`✓`:`✗`} ${t.toolName??`tool`}`,value:n});break}case`iteration_summary`:c.iteration=t.iteration??c.iteration,typeof t.toolCalls==`number`&&(c.toolCalls=t.toolCalls),typeof t.costUsd==`number`&&(c.costUsd=t.costUsd),c.currentTool=t.currentTool??c.currentTool,typeof t.partialText==`string`&&t.partialText&&(c.partialText=t.partialText),c.sparklineBins=Wi(c.sparklineBins),r=Ui(r,{id:Hi(),kind:`iteration_summary`,agentId:t.subagentId,agentName:c.name,timestamp:l,message:`${c.name} iter ${t.iteration??c.iteration} · ${t.currentTool?`${t.currentTool}`:``}`,value:t.costUsd});break;case`budget_warning`:{let e=t.budgetKind??`budget`,n=typeof t.used==`number`?t.used:0,i=typeof t.limit==`number`?t.limit:0;c.budgetWarning={kind:e,used:n,limit:i},r=Ui(r,{id:Hi(),kind:`budget_warning`,agentId:t.subagentId,agentName:c.name,timestamp:l,message:`${c.name} hit ${e} budget ${n}/${i}`,value:n});break}case`budget_extended`:c.extensions=t.totalExtensions??c.extensions+1,c.budgetWarning=void 0,r=Ui(r,{id:Hi(),kind:`budget_extended`,agentId:t.subagentId,agentName:c.name,timestamp:l,message:`${c.name} extended budget ⚡×${c.extensions}`});break;case`ctx_pct`:c.ctxPct=Gi(Math.round(Math.max(0,t.load??0)*100)),c.ctxTokens=t.tokens??c.ctxTokens,c.maxContext=t.maxContext??c.maxContext,c.ctxPct>=80&&!c.budgetWarning&&(c.budgetWarning=c.ctxPct>=100?{kind:`hard`,used:c.ctxPct,limit:100}:{kind:`soft`,used:c.ctxPct,limit:100}),typeof t.costUsd==`number`&&(c.costUsd=t.costUsd),typeof t.tokensIn==`number`&&(c.tokensIn=t.tokensIn,a=a-(s.tokensIn??0)+t.tokensIn),typeof t.tokensOut==`number`&&(c.tokensOut=t.tokensOut,o=o-(s.tokensOut??0)+t.tokensOut),r=Ui(r,{id:Hi(),kind:`ctx_pct`,agentId:t.subagentId,agentName:c.name,timestamp:l,message:`${c.name} ctx ${c.ctxPct}%`,value:c.ctxPct});break;case`task_completed`:{c.status=t.status===`success`?`completed`:t.status??`completed`,typeof t.iterations==`number`&&(c.iteration=t.iterations),typeof t.toolCalls==`number`&&(c.toolCalls=t.toolCalls),c.error=t.error,c.currentTool=void 0,c.completedAt=l,c.failureReason=t.failureReason??c.failureReason,typeof t.finalText==`string`&&t.finalText&&(c.finalText=Pi(t.finalText));let e=t.status===`success`?`✓ completed`:t.status===`failed`?`✗ failed${t.failureReason?` (${t.failureReason})`:``}`:t.status===`timeout`?`⏱ timeout${t.failureReason?` (${t.failureReason})`:``}`:`stopped`;r=Ui(r,{id:Hi(),kind:`task_completed`,agentId:t.subagentId,agentName:c.name,timestamp:l,message:`${c.name} ${e}`,value:c.costUsd});break}}return n.set(t.subagentId,c),{agents:n,leaderId:i,fleetTokensIn:a,fleetTokensOut:o,eventTimeline:r}})}));function Ki(e){return!e||typeof e.goal!=`string`||!e.goal.trim()?null:{goal:e.goal,refinedGoal:typeof e.refinedGoal==`string`?e.refinedGoal:void 0,goalState:[`active`,`paused`,`completed`,`failed`,`abandoned`].includes(e.goalState)?e.goalState:`active`,iterations:typeof e.iterations==`number`?e.iterations:0,progress:typeof e.progress==`number`?e.progress:0,progressNote:typeof e.progressNote==`string`?e.progressNote:void 0,progressTrend:e.progressTrend===`accelerating`?`up`:e.progressTrend===`stalling`?`down`:e.progressTrend===`steady`?`stable`:void 0,deliverables:Array.isArray(e.deliverables)?e.deliverables.map((e,t)=>typeof e==`string`?{id:`d${t}`,text:e,status:/^\[[x✓]\]|✅|\(done\)/i.test(e)?`done`:`pending`}:e):void 0,journal:Array.isArray(e.journal)?e.journal:void 0,lastTask:typeof e.lastTask==`string`?e.lastTask:void 0,lastStatus:typeof e.lastStatus==`string`?e.lastStatus:void 0}}var qi=Re()(e=>({goal:null,setGoal:t=>e({goal:Ki(t)}),clear:()=>e({goal:null}),appendJournalEntry:t=>e(e=>e.goal?{goal:{...e.goal,iterations:Math.max(e.goal.iterations,t.iteration),lastTask:t.task??e.goal.lastTask,lastStatus:t.status??e.goal.lastStatus,journal:[t,...e.goal.journal??[]].slice(0,200)}}:e),refresh:()=>{try{W()?.send?.({type:`goal.get`})}catch{}}})),Ji=Re()(e=>({phases:[],activePhaseId:null,overallPercent:0,autonomous:!1,title:null,goal:null,status:`idle`,lastEvent:null,lastError:null,graphs:[],progress:null,setState:t=>e(e=>({phases:t.phases??e.phases,activePhaseId:t.activePhaseId===void 0?e.activePhaseId:t.activePhaseId,overallPercent:t.overallPercent??e.overallPercent,autonomous:t.autonomous??e.autonomous,title:t.title===void 0?e.title:t.title,goal:t.goal===void 0?e.goal:t.goal,status:t.status??e.status,lastEvent:t.lastEvent===void 0?e.lastEvent:t.lastEvent,lastError:t.lastError===void 0?e.lastError:t.lastError,graphs:t.graphs??e.graphs,progress:t.progress===void 0?e.progress:t.progress})),clear:()=>e({phases:[],activePhaseId:null,overallPercent:0,autonomous:!1,title:null,goal:null,status:`idle`,lastEvent:null,lastError:null,graphs:[],progress:null})})),Yi=Re()(e=>({specs:[],detail:null,expandedSpecId:null,setSpecs:t=>e({specs:t}),setDetail:t=>e({detail:t}),setExpanded:t=>e({expandedSpecId:t,detail:null})})),Xi=Re()(e=>({snapshot:null,boards:[],lifecycleResult:null,destroying:!1,setSnapshot:t=>e({snapshot:t}),setBoards:t=>e({boards:t}),setLifecycleResult:t=>e({lifecycleResult:t}),setDestroying:t=>e({destroying:t})})),Zi=Re()(e=>({snapshot:null,agentText:``,error:null,startedRunId:null,setSnapshot:t=>e({snapshot:t,error:null}),setAgentText:t=>e({agentText:t}),setError:t=>e({error:t}),setStartedRunId:t=>e({startedRunId:t}),reset:()=>e({snapshot:null,agentText:``,error:null,startedRunId:null})})),Qi={autonomy:`off`,autonomyDelayMs:45e3,autoProceedMaxIterations:50,yolo:!1,maxIterations:500,chime:!1,confirmExit:!0,streamFleet:!0,nextPrediction:!1,fallbackModels:[],fallbackProfiles:{},favoriteModels:[],favoriteModelsOnly:!1,modelMatrix:{},fallbackAuto:!0,featureMcp:!0,featurePlugins:!0,featureMemory:!0,featureSkills:!0,featureModelsRegistry:!0,indexOnStart:!0,contextAutoCompact:!0,contextStrategy:`hybrid`,contextMode:`balanced`,tokenSavingTier:`off`,maxConcurrent:10,titleAnimation:!0,logLevel:`info`,auditLevel:`standard`,enhanceEnabled:!0,enhanceDelayMs:6e4,enhanceLanguage:`original`,reasoningMode:`auto`,reasoningEffort:`high`,reasoningPreserve:!1,cacheTtl:`default`,hqEnabled:!1,hqUrl:``,hqToken:``,hqRawContent:!1,tgConfigured:!1,tgSessionEnd:!1,tgDelegate:!0,tgLongToolMs:3e4},$i=Re()(Tr(e=>({...Qi,set:t=>e(t),reset:()=>e(Qi)}),{name:`wrongstack-local-prefs`,version:4,migrate:e=>{let t=e??{};return[`hybrid`,`intelligent`,`selective`].includes(t.contextStrategy)||(t.contextStrategy=`hybrid`),t.auditLevel===`verbose`&&(t.auditLevel=`full`),[`minimal`,`standard`,`full`].includes(t.auditLevel)||(t.auditLevel=`standard`),typeof t.autoProceedMaxIterations!=`number`&&(t.autoProceedMaxIterations=50),(!t.fallbackProfiles||typeof t.fallbackProfiles!=`object`||Array.isArray(t.fallbackProfiles))&&(t.fallbackProfiles={}),Array.isArray(t.favoriteModels)||(t.favoriteModels=[]),typeof t.favoriteModelsOnly!=`boolean`&&(t.favoriteModelsOnly=!1),(!t.modelMatrix||typeof t.modelMatrix!=`object`||Array.isArray(t.modelMatrix))&&(t.modelMatrix={}),t}})),ea=Re()((e,t)=>({projectRoot:``,tree:[],openFiles:[],activeFilePath:null,treeLoading:!1,error:null,setTree:(t,n)=>e({projectRoot:t,tree:n,treeLoading:!1,error:null}),openFile:(n,r)=>{let i=t();if(i.openFiles.find(e=>e.path===n)){e({activeFilePath:n});return}e({openFiles:[...i.openFiles,{path:n,content:r,dirty:!1,savedContent:r}],activeFilePath:n})},closeFile:n=>{let r=t(),i=r.openFiles.findIndex(e=>e.path===n);if(i===-1)return;let a=[...r.openFiles];a.splice(i,1);let o=r.activeFilePath;r.activeFilePath===n&&(o=a.length===0?null:i<a.length?a[i].path:a[a.length-1].path),e({openFiles:a,activeFilePath:o})},setActiveFile:t=>e({activeFilePath:t}),updateContent:(t,n)=>{e(e=>({openFiles:e.openFiles.map(e=>e.path===t?{...e,content:n,dirty:n!==e.savedContent}:e)}))},markSaved:t=>{e(e=>({openFiles:e.openFiles.map(e=>e.path===t?{...e,dirty:!1,savedContent:e.content}:e)}))},setTreeLoading:t=>e({treeLoading:t}),setError:t=>e({error:t})}));function ta(e){return Math.max(0,Math.min(100,Math.round((typeof e==`number`&&Number.isFinite(e)?e:0)*100)))}function na(e,t=!1){if(t&&e.target){if(e.kind===`agent:tool`||e.kind===`tool:executed`||e.kind===`tool:started`)return`tool`;if(e.source===`leader`||e.source===`coordinator`)return`coordinator`;if(e.kind.startsWith(`provider:`))return`provider`;if(e.kind.startsWith(`mailbox:`))return`mailbox`}switch(e.kind){case`provider:call`:case`provider:delta`:case`provider:response`:return`provider`;case`agent:spawned`:case`agent:tool`:case`agent:status`:case`agent:text`:case`agent:ctx`:case`budget:warning`:case`budget:extended`:return`agent`;case`tool:started`:case`tool:executed`:case`tool:progress`:return`tool`;case`mailbox:send`:case`mailbox:deliver`:return`mailbox`;case`collab:event`:return`system`;case`session:start`:case`session:end`:case`iteration:start`:case`iteration:end`:case`eternal:iteration`:case`fleet:snapshot`:return`session`;case`context:compacted`:case`context:repaired`:case`cost:update`:return`system`;case`error`:return`error`;default:return`system`}}function ra(e){switch(e){case`provider:call`:case`provider:delta`:case`agent:tool`:case`tool:started`:case`tool:progress`:case`iteration:start`:case`agent:text`:return`streaming`;case`agent:status`:case`iteration:end`:return`completed`;case`error`:return`error`;case`tool:executed`:return`completed`;case`session:end`:return`idle`;default:return`active`}}var ia=0;function aa(){return`viz_${Date.now()}_${++ia}`}function oa(e,t){if(e===t)return!0;if(!e||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n){let n=e[r],i=t[r];if(n!==i){if(n==null||i==null||typeof n!=typeof i)return!1;if(typeof n==`object`){if(Array.isArray(n)||Array.isArray(i)||!oa(n,i))return!1;continue}return!1}}return!0}var sa={provider:`hsl(180, 80%, 55%)`,agent:`hsl(280, 80%, 65%)`,tool:`hsl(40, 90%, 55%)`,mailbox:`hsl(140, 70%, 55%)`,session:`hsl(220, 80%, 60%)`,system:`hsl(0, 0%, 60%)`,error:`hsl(0, 80%, 55%)`},ca={"provider:call":`hsl(180, 80%, 55%)`,"provider:delta":`hsl(180, 60%, 70%)`,"agent:tool":`hsl(40, 90%, 55%)`,"mailbox:send":`hsl(140, 70%, 55%)`,default:`hsl(0, 0%, 40%)`},la=Re()((e,t)=>({events:[],nodes:new Map,edges:new Map,isActive:!1,maxEvents:2e3,counters:{totalTokens:0,totalCost:0,totalToolCalls:0,activeAgents:0,completedTasks:0,errors:0,mailboxMessages:0},pushEvent:t=>e(e=>{let n=[{...t,id:t.id??aa(),timestamp:t.timestamp||Date.now()},...e.events];n.length>e.maxEvents&&(n.length=e.maxEvents);let r=Date.now(),i=t.source,a={id:i,kind:na(t),label:t.label,status:ra(t.kind),activity:1,color:t.color??sa[na(t)],lastSeenAt:r},o=e.nodes.get(i),s=o?{...o,...a}:a,c=!oa(o,s),l,u=!1,d;if(t.target){d=t.target;let n={id:d,kind:na(t,!0),label:d,status:ra(t.kind),activity:.8,color:t.color??sa[na(t,!0)],lastSeenAt:r},i=e.nodes.get(d);l=i?{...i,...n}:n,u=!oa(i,l)}let f,p=!1,m;if(t.target&&i){m=`${i}->${t.target}`;let n=e.edges.get(m),a={id:m,source:i,target:t.target,kind:t.kind,label:t.label,intensity:n?Math.min(1,n.intensity+.3):.7,color:t.color??sa[na(t)]??`#6366f1`,lastActiveAt:r,totalMagnitude:(n?.totalMagnitude??0)+(t.magnitude??0)};f=n?{...n,...a}:a,p=!oa(n,f)}let h=e.nodes,g=e.edges;return(c||u)&&(h=new Map(e.nodes),c&&h.set(i,s),u&&l&&d&&h.set(d,l)),p&&f&&m&&(g=new Map(e.edges),g.set(m,f)),{events:n,nodes:h,edges:g}}),upsertNode:t=>e(e=>{let n=new Map(e.nodes),r=n.get(t.id);return n.set(t.id,{...r,...t,lastSeenAt:t.lastSeenAt===void 0?Date.now():t.lastSeenAt}),{nodes:n}}),removeNode:t=>e(e=>{let n=new Map(e.nodes);n.delete(t);let r=new Map(e.edges);for(let[e,n]of r)(n.source===t||n.target===t)&&r.delete(e);return{nodes:n,edges:r}}),upsertEdge:t=>e(e=>{let n=new Map(e.edges),r=n.get(t.id);return n.set(t.id,{...r,...t,lastActiveAt:t.lastActiveAt===void 0?Date.now():t.lastActiveAt,intensity:t.intensity??r?.intensity??.5,color:t.color??ca[t.kind]??ca.default,totalMagnitude:(r?.totalMagnitude??0)+(t.totalMagnitude??0)}),{edges:n}}),removeEdge:t=>e(e=>{let n=new Map(e.edges);return n.delete(t),{edges:n}}),clear:()=>e({events:[],nodes:new Map,edges:new Map,counters:{totalTokens:0,totalCost:0,totalToolCalls:0,activeAgents:0,completedTasks:0,errors:0,mailboxMessages:0}}),setActive:t=>e({isActive:t}),decayActivity:()=>e(e=>{let t=new Map(e.nodes);for(let[e,n]of t)if(n.activity>=.01){let r=n.activity*.92;t.set(e,{...n,activity:r<.01?0:r})}let n=new Map(e.edges);for(let[e,t]of n)if(t.intensity>=.01){let r=t.intensity*.9;n.set(e,{...t,intensity:r<.01?0:r})}return{nodes:t,edges:n}}),prunesStale:t=>e(e=>{let n=Date.now()-t,r=new Map(e.nodes);for(let[e,t]of r)t.lastSeenAt<n&&t.status!==void 0&&t.status!==`active`&&r.delete(e);let i=new Map(e.edges);for(let[e,t]of i)t.lastActiveAt<n&&i.delete(e);return{nodes:r,edges:i,events:e.events.filter(e=>e.timestamp>n)}})}));function ua(e,t){switch(e){case`provider.text_delta`:{let e=t.text??``;return{id:aa(),kind:`provider:delta`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,60),magnitude:e.length,data:{text:e},color:sa.provider,flowGroup:`provider`}}case`provider.response`:{let e=t.usage,n=(e?.input??0)+(e?.output??0);return{id:aa(),kind:`provider:response`,timestamp:Date.now(),source:`provider`,target:`leader`,label:`${(e?.input??0).toLocaleString(`en-US`)} in / ${(e?.output??0).toLocaleString(`en-US`)} out`,magnitude:n,data:t,color:sa.provider,flowGroup:`provider`}}case`provider.stream_error`:{let e=t.message??`Provider stream error`;return{id:aa(),kind:`error`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,80),magnitude:1,data:t,color:sa.error,flowGroup:`provider`}}case`tool.started`:{let e=t.name??`tool`;return{id:aa(),kind:`tool:started`,timestamp:Date.now(),source:e,target:`filesystem`,label:e,magnitude:1,data:t,color:sa.tool,flowGroup:`tool:${e}`}}case`tool.executed`:{let e=t.name??`tool`,n=t.ok??!0;return{id:aa(),kind:`tool:executed`,timestamp:Date.now(),source:e,target:`leader`,label:`${e} ${n?`✓`:`✗`} (${t.durationMs??0}ms)`,magnitude:t.durationMs??0,data:t,color:n?sa.tool:sa.error,flowGroup:`tool:${e}`}}case`tool.progress`:{let e=t.name??`tool`,n=t.event?.text??``;return{id:aa(),kind:`tool:progress`,timestamp:Date.now(),source:e,target:`leader`,label:n.slice(0,60)||e,magnitude:n.length,data:t,color:sa.tool,flowGroup:`tool:${e}`}}case`tool.loop_detected`:{let e=t.tools??``,n=t.kind??`loop`;return{id:aa(),kind:`error`,timestamp:Date.now(),source:e||n,target:`leader`,label:`${n} loop x${t.repeatCount??0}`,magnitude:t.repeatCount??1,data:t,color:sa.error,flowGroup:`tool`}}case`delegate.started`:{let e=t.target??`delegate`,n=t.task??``;return{id:aa(),kind:`agent:status`,timestamp:Date.now(),source:`leader`,target:e,label:n.slice(0,80)||`Delegating to ${e}`,magnitude:1,data:t,color:sa.agent,flowGroup:`delegate:${e}`}}case`delegate.completed`:{let e=t.subagentId??t.target??`delegate`,n=t.ok??!1;return{id:aa(),kind:n?`agent:status`:`error`,timestamp:Date.now(),source:e,target:`leader`,label:(t.summary??t.status??`delegate completed`).slice(0,80),magnitude:t.durationMs??1,data:t,color:n?sa.agent:sa.error,flowGroup:`delegate:${e}`}}case`subagent.event`:{let e=t.kind,n=t.subagentId??`unknown`,r=t.name??n;switch(e){case`spawned`:return{id:aa(),kind:`agent:spawned`,timestamp:Date.now(),source:n,target:`session`,label:`${r} spawned`,magnitude:1,data:t,color:sa.agent,flowGroup:`agent:${n}`};case`tool_executed`:{let e=t.toolName??`tool`,r=t.ok??!0;return{id:aa(),kind:`agent:tool`,timestamp:Date.now(),source:n,target:e,label:e,magnitude:t.durationMs??0,data:t,color:r?sa.tool:sa.error,flowGroup:`agent:${n}`}}case`task_completed`:{let e=t.status??`completed`;return{id:aa(),kind:`agent:status`,timestamp:Date.now(),source:n,target:`session`,label:`${r} ${e}`,magnitude:1,data:t,color:e===`success`?`hsl(140, 70%, 55%)`:sa.error,flowGroup:`agent:${n}`}}case`ctx_pct`:return{id:aa(),kind:`agent:ctx`,timestamp:Date.now(),source:n,target:`session`,label:`ctx ${ta(t.load)}%`,magnitude:t.tokens??0,data:t,color:sa.agent,flowGroup:`agent:${n}`};case`iteration_summary`:return{id:aa(),kind:`agent:text`,timestamp:Date.now(),source:n,target:`session`,label:(t.partialText??``).slice(0,80)||`iter ${t.iteration??0}`,magnitude:t.costUsd??0,data:t,color:sa.agent,flowGroup:`agent:${n}`};case`budget_extended`:return{id:aa(),kind:`budget:extended`,timestamp:Date.now(),source:n,target:`session`,label:`${r} extended budget`,magnitude:t.totalExtensions??1,data:t,color:`hsl(40, 90%, 55%)`,flowGroup:`agent:${n}`};case`budget_warning`:return{id:aa(),kind:`budget:warning`,timestamp:Date.now(),source:n,target:`session`,label:`${r} hit ${t.budgetKind??`budget`} ${t.used??0}/${t.limit??0}`,magnitude:t.used??1,data:t,color:sa.error,flowGroup:`agent:${n}`}}return null}case`mailbox.event`:{let e=t.event,n=t.from??`?`,r=t.to??`?`,i=t.subject??``,a=e===`mailbox.sent`;return{id:aa(),kind:a?`mailbox:send`:`mailbox:deliver`,timestamp:Date.now(),source:n,target:r,label:i||(a?`→ ${r}`:`← ${n}`),magnitude:1,data:t,color:sa.mailbox,flowGroup:`mailbox`}}case`iteration.started`:{let e=t.index??0;return{id:aa(),kind:`iteration:start`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e}`,magnitude:e,data:t,color:sa.agent,flowGroup:`iteration`}}case`iteration.completed`:{let e=t.index??0;return{id:aa(),kind:`iteration:end`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e} done`,magnitude:e,data:t,color:sa.session,flowGroup:`iteration`}}case`ctx.pct`:{let e=t.tokens??0;return{id:aa(),kind:`agent:ctx`,timestamp:Date.now(),source:`leader`,target:`session`,label:`ctx ${ta(t.load)}%`,magnitude:e,data:t,color:sa.agent,flowGroup:`leader`}}case`error`:{let e=t.message??`Error`;return{id:aa(),kind:`error`,timestamp:Date.now(),source:t.phase??`system`,target:`session`,label:e,magnitude:1,data:t,color:sa.error,flowGroup:`error`}}case`context.compacted`:return{id:aa(),kind:`context:compacted`,timestamp:Date.now(),source:`system`,target:`session`,label:`Compacted: ${(t.saved??0).toLocaleString(`en-US`)} tokens`,magnitude:t.saved??0,data:t,color:`hsl(220, 60%, 50%)`,flowGroup:`context`};case`compaction.failed`:{let e=t.message??`Compaction failed`;return{id:aa(),kind:`error`,timestamp:Date.now(),source:`compactor`,target:`session`,label:e.slice(0,80),magnitude:t.tokens??1,data:t,color:sa.error,flowGroup:`context`}}case`context.repaired`:return{id:aa(),kind:`context:repaired`,timestamp:Date.now(),source:`system`,target:`session`,label:`Repaired: ${t.removedMessages??0} msgs`,magnitude:t.removedMessages??0,data:t,color:`hsl(220, 60%, 50%)`,flowGroup:`context`};case`session.start`:{let e=t.sessionId??`?`,n=t.projectName??``;return{id:aa(),kind:`session:start`,timestamp:Date.now(),source:`session`,target:`leader`,label:n||e.slice(0,12),magnitude:1,data:t,color:sa.session,flowGroup:`session`}}case`sessions.status_update`:{let e=t.sessions??[];return{id:aa(),kind:`fleet:snapshot`,timestamp:Date.now(),source:`system`,target:`session`,label:`${e.length} session(s)`,magnitude:e.length,data:t,color:sa.system,flowGroup:`fleet`}}default:return null}}function da(e){switch(e){case`tui`:return`tui`;case`cli`:case`repl`:return`repl`;case`webui`:return`webui`;default:return`webui`}}function fa(e){let t={tui:0,webui:0,repl:0},n=0,r=0,i={toolCalls:0,costUsd:0,tokensIn:0,tokensOut:0};for(let a of e){t[da(a.clientType)]+=1;for(let e of a.agents)n+=1,(e.status===`running`||e.status===`streaming`)&&(r+=1),i.toolCalls+=e.toolCalls??0,i.costUsd+=e.costUsd??0,i.tokensIn+=e.tokensIn??0,i.tokensOut+=e.tokensOut??0}return{clientCounts:t,totalAgents:n,activeAgents:r,aggregate:i}}function pa(e){if(e!==void 0)return Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function ma(e){return e.map(e=>({...e,agents:e.agents.map(e=>({...e,ctxPct:pa(e.ctxPct)}))}))}var ha=0,ga=Re()(e=>({clientCounts:{tui:0,webui:0,repl:0},mailActivity:[],totalMessages:0,openMessages:0,unreadMessages:0,totalAgents:0,activeAgents:0,currentSession:{},liveSessions:[],aggregate:{toolCalls:0,costUsd:0,tokensIn:0,tokensOut:0},lastUpdated:Date.now(),setClientCounts:t=>e({clientCounts:t,lastUpdated:Date.now()}),setLiveSessions:t=>{let n=ma(t);e({liveSessions:n,...fa(n),lastUpdated:Date.now()})},addMailActivity:t=>e(e=>({mailActivity:[{...t,seq:t.seq??++ha},...e.mailActivity].slice(0,50),lastUpdated:Date.now()})),setMailStats:(t,n,r)=>e({totalMessages:t,openMessages:n,unreadMessages:r,lastUpdated:Date.now()}),setAgentStats:(t,n)=>e({totalAgents:t,activeAgents:n,lastUpdated:Date.now()}),setCurrentSession:t=>e({currentSession:{...ga.getState().currentSession,...t},lastUpdated:Date.now()}),clear:()=>e({clientCounts:{tui:0,webui:0,repl:0},mailActivity:[],totalMessages:0,openMessages:0,unreadMessages:0,totalAgents:0,activeAgents:0,currentSession:{},liveSessions:[],aggregate:{toolCalls:0,costUsd:0,tokensIn:0,tokensOut:0},lastUpdated:Date.now()})}));function _a(e,t){return t>=100?`danger`:`warning`}function va(e,t){switch(e){case`budget.threshold_reached`:{let e=t,n=e.limit>0?Math.round(e.used/e.limit*100):0;return`${e.subagentId} [${e.kind}] ${n}% (${e.used}/${e.limit})`}case`budget.decision`:{let e=t;return`${e.subagentId} [${e.kind}] → ${e.decision}`}case`consensus.vote_initiated`:{let e=t;return`Vote: "${e.title}" — ${e.eligible.length} voters`}case`consensus.vote_cast`:{let e=t;return`${e.voterId} voted ${e.value}`}case`consensus.vote_resolved`:{let e=t;return`${e.result} — ✅${e.approveCount} ❌${e.rejectCount}`}case`task.pending`:return`Task queued: "${t.description.slice(0,60)}"`;case`task.started`:{let e=t;return`${e.subagentId} started ${e.taskId}`}case`task.completed`:{let e=t;return`Task ${e.taskId} ${e.status} (${e.durationMs}ms)`}case`task.failed`:{let e=t;return`Task ${e.taskId} failed: ${e.error.slice(0,60)}`}case`subagent.budget_extended`:{let e=t;return`${e.subagentId} [${e.kind}] extended → ${e.extendedTo}ms`}default:return e}}var ya=200,ba=50,xa=300,Sa=200,Ca=100;function wa(e,t,n){if(!(e.size<=t)){if(n)for(let[r,i]of e){if(e.size<=t)break;n(i)&&e.delete(r)}for(let n of e.keys()){if(e.size<=t)break;e.delete(n)}}}var Ta=Re()(e=>({coordinatorStatus:`idle`,subagents:new Map,events:[],consensusVotes:new Map,tasks:new Map,taskCounts:{pending:0,running:0,completed:0,failed:0},budgetAlerts:[],lastUpdated:Date.now(),setCoordinatorStatus:(t,n)=>e(e=>({coordinatorStatus:t,coordinatorMode:n,lastUpdated:Date.now()})),updateCoordinatorStats:t=>e(e=>{let n=new Map(e.subagents);for(let e of t.subagentStatuses??[]){let t=n.get(e.id);n.set(e.id,{id:e.id,name:e.name,role:t?.role??`agent`,status:e.status,currentTask:e.currentTask,budgetLimits:t?.budgetLimits,budgetUsage:t?.budgetUsage,lastSeen:t?.lastSeen??Date.now()})}return wa(n,Sa,e=>e.status===`stopped`),{subagents:n,taskCounts:{pending:t.pending,running:t.inFlight,completed:t.completed,failed:0},lastUpdated:Date.now()}}),updateSubagentBudget:(t,n)=>e(e=>{let r=new Map(e.subagents),i=r.get(t);return r.set(t,{id:t,name:i?.name??t,role:i?.role??`agent`,status:i?.status??`idle`,...i,...n,lastSeen:Date.now()}),wa(r,Sa,e=>e.status===`stopped`),{subagents:r,lastUpdated:Date.now()}}),pushEvent:(t,n,r,i,a)=>e(e=>{let o=n.kind??t,s=(t.includes(`budget`)||t.includes(`threshold`))&&typeof n.limit==`number`&&n.limit>0?Math.round(n.used/n.limit*100):void 0,c=s===void 0?t.includes(`consensus.vote_resolved`)?`info`:t.includes(`consensus.vote_initiated`)?`warning`:`info`:s>=100?`danger`:s>=85?`warning`:`info`;return{events:[{id:`${r}-${t}`,ts:r,type:t,subagentId:i,taskId:a,payload:n,kind:o,level:c,message:va(t,n)},...e.events].slice(0,ya),lastUpdated:Date.now()}}),pushConsensusVote:(t,n,r)=>e(e=>{let i=new Map(e.consensusVotes);return i.set(t,{changeId:t,title:n,status:`pending`,eligible:r,votes:[],approveCount:0,rejectCount:0,abstainCount:0,expiresAt:Date.now()+300*1e3}),wa(i,Ca,e=>e.status!==`pending`),{consensusVotes:i,lastUpdated:Date.now()}}),recordConsensusVote:(t,n,r,i)=>e(e=>{let a=new Map(e.consensusVotes),o=a.get(t);if(!o)return{};let s={...o,votes:[...o.votes.filter(e=>e.agentId!==n),{agentId:n,agentName:r,value:i,votedAt:Date.now()}],approveCount:i===`approve`?o.approveCount+1:o.approveCount,rejectCount:i===`reject`?o.rejectCount+1:o.rejectCount,abstainCount:i===`abstain`?o.abstainCount+1:o.abstainCount};return a.set(t,s),{consensusVotes:a,lastUpdated:Date.now()}}),resolveConsensusVote:(t,n,r,i)=>e(e=>{let a=new Map(e.consensusVotes),o=a.get(t);return o?(a.set(t,{...o,status:n,approveCount:r,rejectCount:i,resolvedAt:Date.now()}),{consensusVotes:a,lastUpdated:Date.now()}):{}}),pushTaskPending:(t,n,r)=>e(e=>{let i=new Map(e.tasks);return i.set(t,{id:t,description:n,status:`pending`,priority:r,queuedAt:Date.now()}),wa(i,xa,e=>e.status===`completed`||e.status===`failed`),{tasks:i,taskCounts:{...e.taskCounts,pending:e.taskCounts.pending+1},lastUpdated:Date.now()}}),startTask:(t,n)=>e(e=>{let r=new Map(e.tasks),i=r.get(t);return i?r.set(t,{...i,status:`running`,subagentId:n,startedAt:Date.now()}):r.set(t,{id:t,description:``,status:`running`,subagentId:n,startedAt:Date.now()}),{tasks:r,taskCounts:{...e.taskCounts,pending:Math.max(0,e.taskCounts.pending-1),running:e.taskCounts.running+1},lastUpdated:Date.now()}}),completeTask:(t,n,r)=>e(e=>{let i=new Map(e.tasks),a=i.get(t);return a&&i.set(t,{...a,status:n,completedAt:Date.now(),durationMs:r}),wa(i,xa,e=>e.status===`completed`||e.status===`failed`),{tasks:i,taskCounts:{...e.taskCounts,running:Math.max(0,e.taskCounts.running-1),completed:n===`completed`?e.taskCounts.completed+1:e.taskCounts.completed,failed:n===`failed`?e.taskCounts.failed+1:e.taskCounts.failed},lastUpdated:Date.now()}}),failTask:(t,n)=>e(e=>{let r=new Map(e.tasks),i=r.get(t);return i&&r.set(t,{...i,status:`failed`,error:n,completedAt:Date.now()}),wa(r,xa,e=>e.status===`completed`||e.status===`failed`),{tasks:r,taskCounts:{...e.taskCounts,running:Math.max(0,e.taskCounts.running-1),failed:e.taskCounts.failed+1},lastUpdated:Date.now()}}),recordBudgetDecision:(t,n,r,i)=>e(e=>{let a=new Map(e.budgetAlerts.reduce((e,r)=>(r.subagentId===t&&r.kind===n||e.set(`${r.subagentId}:${r.kind}`,r),e),new Map)),o=`${t}:${n}`,s=a.get(o);return s&&a.set(o,{...s,decision:r,newLimit:i,level:r===`extend`?`warning`:`danger`}),{budgetAlerts:Array.from(a.values()),lastUpdated:Date.now()}}),recordBudgetAlert:(t,n,r,i)=>e(e=>{let a=`${Date.now()}-${t}-${n}`,o=i>0?Math.round(r/i*100):0;return{budgetAlerts:[{id:a,ts:Date.now(),subagentId:t,kind:n,level:_a(n,o),used:r,limit:i,pct:o},...e.budgetAlerts].slice(0,ba),lastUpdated:Date.now()}}),recordBudgetExtended:(t,n,r)=>e(e=>{let i=new Map(e.subagents),a=i.get(t);if(a?.budgetLimits){let e={...a.budgetLimits};n===`timeout`&&r&&(e.timeoutMs=r),n===`iterations`&&(e.maxIterations=r),n===`tool_calls`&&(e.maxToolCalls=r),i.set(t,{...a,budgetLimits:e,lastSeen:Date.now()})}return{subagents:i,lastUpdated:Date.now()}}),clear:()=>e({coordinatorStatus:`idle`,coordinatorMode:void 0,subagents:new Map,events:[],consensusVotes:new Map,tasks:new Map,taskCounts:{pending:0,running:0,completed:0,failed:0},budgetAlerts:[],lastUpdated:Date.now()})})),Ea=Re()(Tr(e=>({showHud:!0,showLegend:!0,showMinimap:!0,showControls:!0,animateEdges:!0,showFeed:!0,background:`dots`,setShowHud:t=>e({showHud:t}),setShowLegend:t=>e({showLegend:t}),setShowMinimap:t=>e({showMinimap:t}),setShowControls:t=>e({showControls:t}),setAnimateEdges:t=>e({animateEdges:t}),setShowFeed:t=>e({showFeed:t}),setBackground:t=>e({background:t})}),{name:`wrongstack-officemap`}));function Z(...e){return wn(pr(e))}function Da(){return`toast_${typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}`}var Oa=8e3,ka=Re(e=>({toasts:[],push:t=>{let n=Da();return e(e=>({toasts:[...e.toasts,{...t,id:n}]})),n},dismiss:t=>e(e=>({toasts:e.toasts.filter(e=>e.id!==t)}))})),Q={success:(e,t=3500)=>ka.getState().push({message:e,variant:`success`,ttl:t}),error:(e,t=6e3)=>ka.getState().push({message:e,variant:`error`,ttl:t}),warn:(e,t=4500)=>ka.getState().push({message:e,variant:`warn`,ttl:t}),info:(e,t=3500)=>ka.getState().push({message:e,variant:`info`,ttl:t}),undoable:(e,t,n=`Undo`,r=Oa)=>ka.getState().push({message:e,variant:`info`,ttl:r,action:{label:n,onClick:t}}),dismiss:e=>ka.getState().dismiss(e)};function Aa({variant:e}){return e===`success`?(0,Y.jsx)(V,{className:`h-4 w-4 text-green-500`}):e===`error`?(0,Y.jsx)(N,{className:`h-4 w-4 text-destructive`}):e===`warn`?(0,Y.jsx)(E,{className:`h-4 w-4 text-amber-500`}):(0,Y.jsx)(Gn,{className:`h-4 w-4 text-blue-500`})}function ja({entry:e}){let t=ka(e=>e.dismiss);return(0,U.useEffect)(()=>{let n=setTimeout(()=>t(e.id),e.ttl);return()=>clearTimeout(n)},[e.id,e.ttl,t]),(0,Y.jsxs)(`div`,{className:Z(`flex items-start gap-2 rounded-lg border bg-popover shadow-lg px-3 py-2 text-sm max-w-sm`,`animate-message`,e.variant===`error`&&`border-destructive/40`,e.variant===`warn`&&`border-amber-500/40`,e.variant===`success`&&`border-green-500/40`),children:[(0,Y.jsx)(Aa,{variant:e.variant}),(0,Y.jsx)(`div`,{className:`flex-1 min-w-0 whitespace-pre-wrap break-words leading-snug`,children:e.message}),e.action&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{e.action?.onClick(),t(e.id)},className:`shrink-0 font-medium text-primary hover:underline`,children:e.action.label}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>t(e.id),className:`text-muted-foreground hover:text-foreground`,title:`Dismiss`,children:(0,Y.jsx)(H,{className:`h-3.5 w-3.5`})})]})}function Ma(){let e=ka(e=>e.toasts);return e.length===0?null:(0,Y.jsx)(`div`,{className:`fixed bottom-4 right-4 z-[60] flex flex-col gap-2 pointer-events-auto`,children:e.map(e=>(0,Y.jsx)(ja,{entry:e},e.id))})}var Na=null;function Pa(){if(typeof window>`u`)return null;if(Na)return Na;let e=window.AudioContext||window.webkitAudioContext;if(!e)return null;try{Na=new e}catch{return null}return Na}function Fa(e,t,n){let r=Pa();if(!r)return;let i=r.currentTime+t,a=r.createOscillator(),o=r.createGain();a.type=`sine`,a.frequency.value=e,o.gain.setValueAtTime(0,i),o.gain.linearRampToValueAtTime(.18,i+.01),o.gain.exponentialRampToValueAtTime(1e-4,i+n),a.connect(o).connect(r.destination),a.start(i),a.stop(i+n+.02)}function Ia(){Fa(659.25,0,.18),Fa(880,.12,.24)}function La(){Fa(523.25,0,.15),Fa(659.25,.1,.15),Fa(783.99,.2,.25)}var Ra=`default`;Ra=typeof window<`u`&&`Notification`in window?Notification.permission:`unsupported`;async function za(){if(Ra===`unsupported`||Ra===`granted`||Ra===`denied`)return Ra;try{let e=await Notification.requestPermission();return Ra=e,e}catch{return`denied`}}function Ba(e,t,n){if(!(typeof document>`u`||!document.hidden)&&Ra===`granted`)try{let r=new Notification(e,{body:t,icon:`/favicon.ico`,tag:n??`wrongstack-run`,requireInteraction:n===`wrongstack-confirm`});r.onclick=()=>{window.focus(),r.close()}}catch{}}function Va(e){let t=ua(e.type,e.payload);t&&(la.getState().pushEvent(t),la.getState().setActive(!0))}function Ha(e){let t=e.payload?.sessionId,n=q.getState().session?.id;return!t||!n||t===n}var Ua={"iteration.started":Wa,"provider.text_delta":Ga,"provider.thinking_delta":Ka,"tool.started":qa,"tool.progress":Ja,"tool.executed":Ya,"tool.confirm_needed":Xa,"run.result":Za};function Wa(e){if(!Ha(e))return;Va(e);let t=e.payload;q.getState().setIteration({index:t.index,max:t.maxIterations??0}),G.getState().setLoading(!0),typeof document<`u`&&document.hidden&&qr(`running`),G.getState().runStart===null&&G.getState().setRunStart({at:Date.now(),cost:q.getState().cost}),G.getState().setCurrentAssistantMessage(null)}function Ga(e){if(!Ha(e))return;let t=e.payload;Zr.flush(`__thinking__`),G.getState().clearThinking();let n=G.getState().currentAssistantMessageId;n||(n=G.getState().addMessage({role:`assistant`,content:``,streaming:!0}),G.getState().setCurrentAssistantMessage(n)),Zr.push(n,t.text,(e,t)=>G.getState().appendToMessage(e,t))}function Ka(e){if(!Ha(e))return;let t=e.payload;t.text&&Zr.push(`__thinking__`,t.text,(e,t)=>G.getState().appendThinking(t))}function qa(e){if(!Ha(e))return;Va(e);let t=e.payload,n=G.getState().getToolMessageId(t.id);if(n){G.getState().setCurrentToolId(n);return}Zr.flush(`__thinking__`),G.getState().clearThinking(),G.getState().setCurrentAssistantMessage(null);let r=G.getState().addMessage({role:`tool`,content:``,toolName:t.name,toolInput:t.input,toolUseId:t.id});G.getState().setCurrentToolId(r),G.getState().addExecution({id:t.id,name:t.name,input:t.input,ok:!0,startedAt:Date.now()})}function Ja(e){if(!Ha(e))return;let t=e.payload,n=(t.event?.text??``).trim();if(!n)return;let r=G.getState().getToolMessageId(t.id);if(!r)return;let i=t.event?.type===`warning`?`⚠ `:``;Zr.push(r,`${i}${n}\n`,(e,n)=>G.getState().appendToolProgressLinesByUseId(t.id,n.split(`
15
+ `).filter(e=>e.length>0)))}function Ya(e){if(!Ha(e))return;Va(e);let t=e.payload,{currentToolId:n}=G.getState(),r=t.id?G.getState().getToolMessageId(t.id):n;r&&(Zr.drop(r),t.id?G.getState().setToolResultByUseId(t.id,t.output??``,t.ok):G.getState().setToolResult(r,t.output??``,t.ok),G.getState().updateMessage(r,{toolDurationMs:t.durationMs})),t.id&&G.getState().updateExecution(t.id,{completedAt:Date.now(),durationMs:t.durationMs,output:t.output,ok:t.ok}),n&&r===n&&G.getState().setCurrentToolId(null)}function Xa(e){if(!Ha(e))return;let t=e.payload;J.getState().showConfirm({id:t.id,toolName:t.toolName,input:t.input,suggestedPattern:t.suggestedPattern});try{La()}catch{}za(),Ba(`${q.getState().projectName||`Agent`} needs approval`,`Tool "${t.toolName}" is waiting for your decision.`,`agent-confirm`),typeof document<`u`&&document.hidden&&qr(`attention`)}function Za(e){if(!Ha(e))return;let t=e.payload;Zr.flushAll(),G.getState().flushThinkingLog(Math.max(1,t.iterations)),q.getState().setIteration(null),G.getState().setLoading(!1),G.getState().setCurrentAssistantMessage(null),G.getState().clearThinking();let n=G.getState().runStart;if(n&&t.status===`done`){let e=G.getState().messages,r=-1,i=0;for(let t=e.length-1;t>=0;t--){let a=Rr(e[t]);if(a.role===`assistant`&&r===-1&&a.content&&(r=t),a.role===`tool`&&a.timestamp>=n.at&&(i+=1),a.role===`user`&&a.timestamp<=n.at)break}if(r!==-1){let a=q.getState().cost;G.getState().updateMessage(e[r]?.id,{runSummary:{iterations:t.iterations,tools:i,durationMs:Date.now()-n.at,costDelta:Math.max(0,a-n.cost)}})}}if(G.getState().setRunStart(null),t.status!==`done`&&t.error)G.getState().addMessage({role:`assistant`,content:`Error: ${t.error.message}`,isError:!0}),Q.error(`Run ended: ${t.error.message}`),Ba(`${q.getState().projectName||`Agent`} run failed`,t.error.message),typeof document<`u`&&document.hidden&&qr(`error`);else if(t.status===`done`&&(typeof document<`u`&&document.hidden&&(Q.success(`Run completed in ${t.iterations} iteration${t.iterations===1?``:`s`}`),Ba(`${q.getState().projectName||`Agent`} run finished`,`Completed in ${t.iterations} iteration${t.iterations===1?``:`s`}.`),qr(`ready`)),za(),K.getState().soundOnComplete))try{Ia()}catch{}let r=G.getState().dequeue();if(r){let e=W(K.getState().wsUrl);G.getState().addMessage({role:`user`,content:r.text}),G.getState().setLoading(!0),e.sendMessage(r.text)}}function Qa(e){if(typeof e!=`string`)return Date.now();let t=Date.parse(e);return Number.isFinite(t)?t:Date.now()}function $a(e){return`replay_${Date.now()}_${e}`}function eo(e){return typeof e==`string`?e:JSON.stringify(e)}function to(e){let t=[],n=new Map,r=0,i=(e,n,r)=>{n&&t.push({id:$a(t.length),role:e,content:n,timestamp:r})},a=(e,n)=>{let i=e.trim();i&&(r+=1,t.push({id:$a(t.length),role:`system`,content:``,timestamp:n,thinkingLog:{iteration:r,text:i,startedAt:n,durationMs:0,replayed:!0}}))};for(let r of e){if(r.role!==`user`&&r.role!==`assistant`&&r.role!==`system`)continue;let e=r.role,o=Qa(r.ts);if(typeof r.content==`string`){i(e,r.content,o);continue}if(!Array.isArray(r.content))continue;let s=``,c=[];for(let a of r.content){if(a.type===`thinking`&&typeof a.thinking==`string`){c.push(a.thinking);continue}if(a.type===`text`&&typeof a.text==`string`){s+=(s?`
16
+ `:``)+a.text;continue}if(a.type===`tool_use`){i(e,s,o),s=``;let r=String(a.id??``),c={id:$a(t.length),role:`tool`,content:``,toolName:String(a.name??`tool`),toolInput:a.input,toolUseId:r,timestamp:o};t.push(c),r&&n.set(r,c);continue}if(a.type===`tool_result`){let e=String(a.tool_use_id??``),t=n.get(e);t&&(t.toolResult=eo(a.content),t.isError=!!a.is_error)}}i(e,s,o),e===`assistant`&&c.length>0&&a(c.join(`
17
+
18
+ `),o)}return t}function no(e){let t=ua(e.type,e.payload);t&&(la.getState().pushEvent(t),la.getState().setActive(!0))}function ro(e){let t=e.payload?.sessionId,n=q.getState().session?.id;return!t||!n||t===n}var io=new Set;function ao(e,t=140){return e.length>t?`${e.slice(0,t-1)}…`:e}function oo(){Zr.flush(`__thinking__`);let e=q.getState().iteration;G.getState().flushThinkingLog(Math.max(1,e?.index??1)),G.getState().clearThinking()}function so(e){let t=ua(`session.start`,e.payload);t&&(la.getState().pushEvent(t),la.getState().setActive(!0));let n=e.payload,r=q.getState().session?.id,i=!r||r!==n.sessionId||n.reset;if(n.needsSetup&&J.getState().setCurrentView(`setup`),i?q.getState().startSession({id:n.sessionId,startedAt:Date.now(),model:n.model,provider:n.provider}):q.getState().setSession({id:n.sessionId,startedAt:q.getState().session?.startedAt??Date.now(),model:n.model,provider:n.provider}),q.getState().setEnv({maxContext:n.maxContext,projectRoot:n.projectRoot??``,projectName:n.projectName,cwd:n.cwd,mode:n.mode,contextMode:n.contextMode,inputCost:n.inputCost,outputCost:n.outputCost,cacheReadCost:n.cacheReadCost}),K.getState().setConfig({provider:n.provider,model:n.model}),i){Zr.dropAll(),G.getState().clearMessages(),G.getState().setBoundSessionId(n.sessionId),J.getState().setSearchActiveMessageId(null),G.getState().setLoading(!1),q.setState({todos:[]}),qr(`ready`);let e=X.getState();if(n.clearedSessionId){let t=new Map;for(let[r,i]of e.agents)i.sessionId!==n.clearedSessionId&&t.set(r,i);X.setState({agents:t})}else e.clear();ea.getState().setTreeLoading(!0),W().send({type:`files.tree`,payload:{path:q.getState().cwd}})}let a=n.replayMessages;if(a&&a.length>0&&(G.getState().setMessages(to(a)),G.getState().setBoundSessionId(n.sessionId)),a){let e=n.replayUsage;if(e){let t=q.getState(),n=e.input??0,r=e.output??0,i=e.cacheRead??0,a=e.cacheWrite??0;q.setState({totalTokens:{input:n,output:r,cacheRead:i,cacheWrite:a},cost:(n*t.inputCost+r*t.outputCost+i*t.cacheReadCost)/1e6})}J.getState().currentView!==`chat`&&J.getState().setCurrentView(`chat`),typeof window<`u`&&window.matchMedia?.(`(max-width: 768px)`).matches&&J.getState().setSidebarOpen(!1)}}function co(e){if(!ro(e))return;let t=e.payload,n=e=>e.toLocaleString(),r=[...t.tools.breakdown].sort((e,t)=>t.tokens-e.tokens).slice(0,8),i=[...t.messages.breakdown].sort((e,t)=>t.tokens-e.tokens).slice(0,8);G.getState().addMessage({role:`assistant`,content:[`📊 **Context breakdown** (heuristic — 4 chars/token)`,``,`**Total estimate:** ${n(t.total)} tokens`,`• System prompt: ${n(t.systemPrompt)}`,`• Tool schemas: ${n(t.tools.total)} (${t.tools.count} tools)`,`• Messages: ${n(t.messages.total)} (${t.messages.count} messages)`,``,`**Top tool schemas:**`,...r.map(e=>` · ${e.name}: ${n(e.tokens)}`),``,`**Top messages:**`,...i.map(e=>` · #${e.index} ${e.role}: ${n(e.tokens)} — ${e.preview||`(empty)`}`)].join(`
19
+ `)})}function lo(e){let t=e.payload;t.success?Q.success(t.message):Q.error(t.message),W(K.getState().wsUrl).listSavedProviders()}function uo(e){if(!ro(e))return;no(e);let t=e.payload,n=t.reductions.length?t.reductions.map(e=>`${e.phase}: ${e.saved}`).join(`, `):`no-op`;t.repaired&&(n+=`; repaired ${t.repaired.removedToolUses?.length??0} tool_use, ${t.repaired.removedToolResults?.length??0} tool_result, ${t.repaired.removedMessages} empty messages`),G.getState().addMessage({role:`assistant`,content:`🗜️ Context compacted: ${t.before} → ${t.after} tokens (saved ~${t.saved}). ${n}`}),q.setState({lastInputTokens:t.after})}function fo(e){if(!ro(e))return;no(e);let t=e.payload,n,r;t.budget&&t.budget.availableInputTokens>0?(n=Math.min(100,Math.max(0,Math.round(t.budget.load*100))),r=`input budget`):(n=t.maxContext>0?Math.min(100,Math.max(0,Math.round(t.tokens/t.maxContext*100))):0,r=`context`),G.getState().addMessage({role:`assistant`,content:`Compaction failed at ${t.level} (${n}% ${r}): ${t.message}`,isError:t.fatal}),Q.error(`Compaction failed: ${t.message}`)}function po(e){if(!ro(e))return;no(e);let t=e.payload,n=t.usage,r=(n.input??0)+(n.cacheWrite??0)-(n.cacheRead??0);r>0&&q.setState({lastInputTokens:r}),q.getState().updateUsage(t.usage);let{inputCost:i,outputCost:a,cacheReadCost:o}=q.getState(),s=(t.usage.input*i+t.usage.output*a+(t.usage.cacheRead??0)*o)/1e6;s>0&&q.getState().addCost(s),t.stopReason!==`tool_use`&&t.stopReason!==`tool_call`&&G.getState().setLoading(!1);let c=G.getState().currentAssistantMessageId;c&&(Zr.flush(c),G.getState().finalizeMessage(c),t.usage.output>0&&G.getState().updateMessage(c,{usage:t.usage})),G.getState().setCurrentAssistantMessage(null),Zr.flush(`__thinking__`),G.getState().clearThinking()}function mo(e){if(!ro(e))return;no(e);let t=e.payload;Zr.flush(`__thinking__`),G.getState().flushThinkingLog(t.index),G.getState().clearThinking();let n=q.getState().iteration;n&&q.getState().setIteration({index:t.index,max:n.max})}function ho(e){if(!ro(e))return;let t=e.payload;G.getState().addMessage({role:`assistant`,content:`Iteration limit reached: ${t.currentIterations}/${t.currentLimit}.`,isError:!0}),Q.warn(`Iteration limit reached (${t.currentIterations}/${t.currentLimit})`)}function go(e){if(!ro(e))return;let t=e.payload,n=Math.max(0,Math.round(t.delayMs/100)/10);Q.warn(`${t.providerId} retry ${t.attempt} after ${n}s (${t.status})`)}function _o(e){if(!ro(e))return;let t=e.payload;G.getState().addMessage({role:`assistant`,content:[`Provider error from \`${t.providerId}\` (${t.status}).`,t.description,t.retryable?`_Retryable; WrongStack may recover automatically._`:``].filter(Boolean).join(`
20
+
21
+ `),isError:!0}),Q.error(`${t.providerId} provider error (${t.status})`)}function vo(e){if(!ro(e))return;let t=e.payload,n=`${t.from.providerId}/${t.from.model}`,r=`${t.to.providerId}/${t.to.model}`;G.getState().addMessage({role:`assistant`,content:`Provider fallback: \`${n}\` returned ${t.status}; switching to \`${r}\`${t.providerSwitched?` with provider change`:``}.`}),Q.warn(`Fallback to ${r}`)}function yo(e){if(!ro(e))return;no(e);let t=e.payload;Q.warn(`Provider stream event skipped: ${t.eventType}`),G.getState().addMessage({role:`assistant`,content:`Provider stream warning (${t.eventType}): ${t.message}`,isError:!0})}function bo(e){if(!ro(e))return;no(e);let t=e.payload,n=t.tools||t.kind||`assistant response`;G.getState().addMessage({role:`assistant`,content:`Loop guard triggered: ${n} repeated ${t.repeatCount} time(s) at iteration ${t.iteration}.`,isError:!0}),Q.warn(`Loop guard triggered`)}function xo(e){if(!ro(e))return;no(e);let t=e.payload,n=ao(t.task,180);G.getState().addMessage({role:`assistant`,content:`Delegating to \`${t.target}\`: ${n}`}),X.getState().pushAgentTimelineEntry({subagentId:t.target,agentName:t.target,content:n,kind:`status`,iteration:0,ts:new Date().toISOString(),status:`delegating`})}function So(e){if(!ro(e))return;no(e);let t=e.payload,n=Math.max(0,Math.round(t.durationMs/100)/10),r=typeof t.costUsd==`number`&&t.costUsd>0?` · $${t.costUsd.toFixed(4)}`:``,i=`${t.iterations} iteration(s), ${t.toolCalls} tool call(s), ${n}s${r}`;G.getState().addMessage({role:`assistant`,content:[`Delegate ${t.ok?`completed`:`failed`} for \`${t.target}\`${t.status?` (${t.status})`:``}.`,t.summary,i].join(`
22
+ `),isError:!t.ok}),X.getState().pushAgentTimelineEntry({subagentId:t.subagentId??t.target,agentName:t.target,content:t.summary,kind:t.ok?`status`:`error`,iteration:t.iterations,ts:new Date().toISOString(),status:t.status??(t.ok?`completed`:`failed`)}),t.ok||Q.warn(`Delegate failed: ${t.target}`)}function Co(e){if(!ro(e))return;let t=e.payload,n=`${t.tool}: ${t.pattern}`;t.decision===`always`?Q.success(`Always allowed ${n}`):Q.warn(`Denied ${n}`)}function wo(e){if(!ro(e))return;no(e);let t=e.payload,n=t.removedToolUses.length+t.removedToolResults.length+t.removedMessages,r=t.beforeMessages!==void 0&&t.afterMessages!==void 0?` Messages: ${t.beforeMessages} -> ${t.afterMessages}.`:``;G.getState().addMessage({role:`assistant`,content:`Context repaired: removed ${n} orphan protocol item(s).${r} tool_use ${t.removedToolUses.length}, tool_result ${t.removedToolResults.length}.`})}function To(e){if(!ro(e))return;no(e);let t=e.payload;q.getState().setContextUsage(t.tokens,t.maxContext)}function Eo(e){if(!ro(e))return;let t=e.payload;q.getState().setEnv({maxContext:t.maxContext})}function Do(e){if(!ro(e))return;let t=e.payload;q.getState().setContextUsage(t.used,t.limit);let n=t.limit>0?Math.round(t.used/t.limit*100):0;Q.warn(`Token threshold reached (${n}%)`)}function Oo(e){if(!ro(e))return;let t=e.payload.model||`<unknown>`;io.has(t)||(io.add(t),Q.warn(`Cost estimate unavailable for ${t}`))}function ko(e){if(!ro(e))return;let t=e.payload;G.getState().addMessage({role:`assistant`,content:`Session ${t.sessionId} is damaged: ${t.detail}`,isError:!0}),Q.error(`Session damage detected`)}function Ao(e){if(!ro(e))return;let t=e.payload;G.getState().addMessage({role:`assistant`,content:`Session rewound to prompt #${t.toPromptIndex}. Removed ${t.removedEvents} event(s); reverted ${t.revertedFiles.length} file(s).`}),Q.info(`Session rewound`)}function jo(e){if(!ro(e))return;let t=e.payload;Q.success(`Checkpoint #${t.promptIndex} written (${t.fileCount} file(s))`)}function Mo(e){if(!ro(e))return;let t=e.payload;la.getState().pushEvent({id:`inflight_${Date.now()}`,kind:`session:start`,timestamp:Date.now(),source:`session`,target:`leader`,label:`In-flight: ${t.context}`,magnitude:1,data:t,raw:e.payload,flowGroup:`session`})}function No(e){ro(e)&&e.payload.reason===`recovered`&&Q.info(`Recovered previous in-flight operation`)}function Po(){K.getState().setWsConnected(!1)}function Fo(e){if(!ro(e))return;let t=e.payload;q.getState().setContextModes(t.modes.map(e=>({id:e.id,name:e.name,description:e.description,thresholds:e.thresholds,preserveK:e.preserveK,eliseThreshold:e.eliseThreshold,custom:e.custom}))),q.getState().setEnv({contextMode:t.activeId})}function Io(e){if(!ro(e))return;let t=e.payload;q.getState().setEnv({contextMode:t.id})}function Lo(e){let t=e.payload;Ei.getState().setEntries(t.sessions??[],t.error??null)}function Ro(e){if(!ro(e))return;let t=e.payload;oo(),G.getState().addMessage({role:`assistant`,content:`[${t.phase}] ${t.message}`,isError:!0}),G.getState().setLoading(!1)}var zo={"context.debug":co,"key.operation_result":lo,"context.compacted":uo,"compaction.failed":fo,"provider.response":po,"iteration.completed":mo,"iteration.limit_reached":ho,"provider.retry":go,"provider.error":_o,"provider.fallback":vo,"provider.stream_error":yo,"tool.loop_detected":bo,"delegate.started":xo,"delegate.completed":So,"trust.persisted":Co,"context.repaired":wo,"ctx.pct":To,"ctx.max_context":Eo,"token.threshold":Do,"token.cost_estimate_unavailable":Oo,"session.end":Po,"session.damaged":ko,"session.rewound":Ao,"checkpoint.written":jo,"in_flight.started":Mo,"in_flight.ended":No,"context.modes.list":Fo,"context.mode.changed":Io,"sessions.list":Lo,error:Ro};function Bo(e){let t=e.payload;Di.getState().setSnapshot(t.worktrees??[],t.baseBranch??``)}function Vo(e){let t=e.payload;Di.getState().pushEvent(t)}function Ho(e){let t=e.payload;Di.getState().setOrphans(t.orphans??[],t.canClean??!1,t.reason)}function Uo(e){let t=e.payload;Di.getState().setCleanResult({...t,at:Date.now()})}function Wo(e){let t=e.payload;Di.getState().setMergeResult({...t,at:Date.now()})}function Go(e){let t=e.payload;Di.getState().setDiff(t.dir,t.summary)}function Ko(e){X.getState().applyEvent(e.payload);let t=ua(`subagent.event`,e.payload);t&&(la.getState().pushEvent(t),la.getState().setActive(!0))}function qo(e){let t=e.payload;X.setState({fleetConcurrency:t.fleetConcurrency,fleetConcurrencyMax:t.fleetConcurrencyMax})}function Jo(e){let t=e.payload;ga.getState().setCurrentSession({clientType:t.clientType,clientId:t.clientId,agentCount:t.agentCount,model:t.model,mode:t.mode,toolCalls:t.toolCalls,inputTokens:t.inputTokens,outputTokens:t.outputTokens,cacheTokens:t.cacheTokens,costUsd:t.costUsd,timestamp:t.timestamp})}function Yo(e){let t=e.payload;ga.getState().setLiveSessions(t?.sessions??[]);let n=ua(`sessions.status_update`,e.payload);n&&(la.getState().pushEvent(n),la.getState().setActive(!0))}var Xo={"worktree.state":Bo,"worktree.event":Vo,"worktree.orphans":Ho,"worktree.cleanup_result":Uo,"worktree.merge_result":Wo,"worktree.diff_result":Go,"subagent.event":Ko,"fleet.concurrency_update":qo,"client.status_update":Jo,"sessions.status_update":Yo};function Zo(){let e=W();e?.send?.({type:`mailbox.messages`,payload:{limit:30,incompleteOnly:!0}}),e?.send?.({type:`mailbox.agents`,payload:{}})}function Qo(e){let t=e.payload;if(t.error){ea.getState().setError(t.error);return}ea.getState().setTree(t.root,t.tree)}function $o(e){let t=e.payload;if(t.error){ea.getState().setError(t.error);return}ea.getState().openFile(t.filePath,t.content)}function es(e){let t=e.payload;t.success?ea.getState().markSaved(t.filePath):t.error&&ea.getState().setError(`Save failed: ${t.error}`)}function ts(e){let t=ua(`mailbox.event`,e.payload);t&&(la.getState().pushEvent(t),la.getState().setActive(!0)),Zo()}function ns(e){let t=e.payload;t?.messages&&xi.getState().setMessages(t.messages)}function rs(e){let t=e.payload;t?.agents&&xi.getState().setAgents(t.agents)}function is(e){let t=ua(`mailbox.received`,e.payload);t&&(la.getState().pushEvent(t),la.getState().setActive(!0)),Zo()}function as(e){Zo()}function os(e){xi.getState().setMessages([]),Zo()}function ss(e){Zo()}var cs={"files.tree":Qo,"files.read":$o,"files.written":es,"mailbox.event":ts,"mailbox.messages":ns,"mailbox.agents":rs,"mailbox.received":is,"mailbox.agent_registered":as,"mailbox.cleared":os,"mailbox.purged":ss};function ls(e){let t=e.payload?.sessionId,n=q.getState().session?.id;return!t||!n||t===n}function us(e){if(!e||e.length===0)return;let t=e.map(e=>e.status);return t.some(e=>e===`failed`)?`failed`:t.every(e=>e===`completed`||e===`skipped`)?`completed`:t.some(e=>e===`paused`)?`paused`:`running`}function ds(e){let t=e.payload,n=Array.isArray(t.phases)?t.phases:void 0,r=us(n);Ji.getState().setState({phases:n,activePhaseId:typeof t.activePhaseId==`string`?t.activePhaseId:void 0,overallPercent:typeof t.overallPercent==`number`?t.overallPercent:void 0,autonomous:typeof t.autonomous==`boolean`?t.autonomous:void 0,title:typeof t.title==`string`?t.title:void 0,goal:typeof t.goal==`string`?t.goal:void 0,status:r,lastError:r===`failed`?Ji.getState().lastError:null})}function fs(e){let t=e.payload,n={totalPhases:typeof t.totalPhases==`number`?t.totalPhases:0,completed:typeof t.completed==`number`?t.completed:0,failed:typeof t.failed==`number`?t.failed:0,totalTasks:typeof t.totalTasks==`number`?t.totalTasks:0,completedTasks:typeof t.completedTasks==`number`?t.completedTasks:0,failedTasks:typeof t.failedTasks==`number`?t.failedTasks:0};Ji.getState().setState({progress:n,overallPercent:typeof t.percentComplete==`number`?Math.round(t.percentComplete):void 0,status:n.failed>0||n.failedTasks>0?`failed`:`running`,lastEvent:`progress`})}function ps(e){let t=e.payload,n=typeof t.title==`string`&&t.title?t.title:`AutoPhase`,r=typeof t.error==`string`&&t.error?t.error:void 0;if(e.type===`autophase.paused`){Ji.getState().setState({status:`paused`,autonomous:!1,lastEvent:`paused`}),Q.info(`AutoPhase paused`);return}if(e.type===`autophase.resumed`){Ji.getState().setState({status:`running`,autonomous:!0,lastEvent:`resumed`}),Q.info(`AutoPhase resumed`);return}if(e.type===`autophase.stopped`){Ji.getState().setState({status:`stopped`,autonomous:!1,lastEvent:`stopped`}),Q.warn(`AutoPhase stopped`);return}if(e.type===`autophase.cleared`){Ji.getState().clear();return}if(e.type===`autophase.reverted`){let e=t.ok===!0,n=typeof t.reverted==`number`?t.reverted:0,r=typeof t.reason==`string`?t.reason:void 0;e?Q.success(n>0?`Reverted ${n} commit${n===1?``:`s`}`:`Nothing to revert`):Q.error(`Revert failed: ${r??`unknown error`}`),Ji.getState().setState({lastEvent:`reverted`});return}if(e.type===`autophase.saved`){Ji.getState().setState({lastEvent:`saved`}),Q.success(`AutoPhase graph saved`);return}if(e.type===`autophase.completed`){Ji.getState().setState({status:`completed`,autonomous:!1,overallPercent:100,lastEvent:`completed`,lastError:null}),Q.success(`${n} completed`);return}if(e.type===`autophase.failed`||e.type===`autophase.error`){let e=r??(typeof t.message==`string`?t.message:`${n} failed`);Ji.getState().setState({status:`failed`,autonomous:!1,lastEvent:`failed`,lastError:e}),Q.error(e)}}function ms(e){let t=e.payload;Ji.getState().setState({lastEvent:`list`,graphs:Array.isArray(t.graphs)?t.graphs:[]})}function hs(e){let t=e.payload;qi.getState().setGoal(t)}function gs(e){let t=e.payload;$i.getState().set(t)}function _s(e){if(!ls(e))return;let t=e.payload,n=[`🧠 **Brain** — policy → LLM decision chain`,``,`Autonomy ceiling: \`${t.maxAutoRisk}\` _(change with \`/brain risk <off|low|medium|high|all>\`)_`];if(t.log.length===0)n.push(``,`_No decisions recorded yet this session._`);else{n.push(``,`Recent decisions (${t.log.length}):`);for(let e of t.log.slice(-10)){let t=Math.max(0,Math.round((Date.now()-e.at)/1e3)),r=t<60?`${t}s`:t<3600?`${Math.round(t/60)}m`:`${Math.round(t/3600)}h`,i=e.question.length>70?`${e.question.slice(0,67)}…`:e.question;n.push(`- \`${r} ago\` **${e.kind}** — ${i}${e.outcome?` → _${e.outcome}_`:``}`)}}G.getState().addMessage({role:`assistant`,content:n.join(`
23
+ `)})}function vs(e){if(!ls(e))return;let t=e.payload,n;if(t.decision.type===`answer`){let e=t.decision.rationale&&t.decision.rationale!==t.decision.text?`\n\n_${t.decision.rationale}_`:``;n=`🧠 ${t.decision.text??``}${e}`}else n=t.decision.type===`deny`?`🧠 Denied: ${t.decision.reason??``}`:`🧠 The Brain escalated this question back to you — it needs human judgement.`;G.getState().addMessage({role:`assistant`,content:n})}function ys(e){if(!ls(e))return;let t=e.payload;if(t.event===`brain.intervention`){let e=t.decision?.rationale??t.decision?.text??``,n=t.intervened?`🧠 **Brain intervention** — corrective guidance was sent to the agent.`:`🧠 **Brain check** — a distress signal was reviewed; no action needed.`;G.getState().addMessage({role:`assistant`,content:[n,t.request?.question??``,e?`_${e}_`:``].filter(Boolean).join(`
24
+
25
+ `)}),t.intervened&&Q.info(`Brain intervened: agent steered`)}else t.event===`brain.decision_denied`&&Q.warn(`Brain denied: ${t.decision?.reason??t.request?.question??`request`}`)}function bs(e){let t=e.payload,n=typeof t.kind==`string`?t.kind:typeof t.event==`string`?t.event:`collab.event`;la.getState().pushEvent({id:`collab_${Date.now()}_${Math.random().toString(36).slice(2,7)}`,kind:`collab:event`,timestamp:Date.now(),source:`collab`,target:typeof t.sessionId==`string`?t.sessionId:`session`,label:n,magnitude:1,data:t,raw:e.payload,color:`hsl(200, 70%, 55%)`,flowGroup:`collab`}),la.getState().setActive(!0)}function xs(e){bs(e);let t=e.payload;t?.phase===`consumed`?Q.success(`Tool injection applied${t.toolName?` to ${t.toolName}`:``}`):Q.info(`Collab tool injection queued`)}function Ss(e){let t=e.payload?.entry;if(!t)return;let n=typeof t.iteration==`number`?t.iteration:0,r=typeof t.task==`string`?t.task:void 0,i=typeof t.status==`string`?t.status:void 0,a=typeof t.at==`string`?t.at:new Date().toISOString();qi.getState().appendJournalEntry({iteration:n,task:r,status:i,timestamp:a}),la.getState().pushEvent({id:`eternal_${Date.now()}_${n}`,kind:`eternal:iteration`,timestamp:Date.now(),source:`eternal`,target:`goal`,label:r?`L${n}: ${r}`:`Eternal iteration ${n}`,magnitude:typeof t.costUsd==`number`?t.costUsd:1,data:t,raw:e.payload,color:i===`failure`?`hsl(0, 80%, 55%)`:`hsl(220, 80%, 60%)`,flowGroup:`eternal`}),la.getState().setActive(!0)}function Cs(e){let t=e.payload;q.getState().setEnv({cwd:t.cwd,projectRoot:t.projectRoot,projectName:t.projectRoot.split(/[/\\]/).pop()||t.projectRoot}),ea.getState().setTreeLoading(!0),W().send({type:`files.tree`,payload:{path:t.cwd}})}function ws(e){let t=e.payload,n=J.getState().refinePanel;if(!n)return;if(t.error){Q.error(`Refinement failed: ${t.error}`);let{original:e}=n;J.getState().setRefinePanel(null),G.getState().addMessage({role:`user`,content:e}),G.getState().setLoading(!0),W().sendMessage(e);return}let r=n.original;if(zr(t.refined,r)){J.getState().setRefinePanel(null),G.getState().addMessage({role:`user`,content:r}),G.getState().setLoading(!0),W().sendMessage(r);return}J.getState().setRefinePanel({...n,refined:t.refined,english:t.english})}function Ts(e){let t=e.payload;Ci.getState().setInfo({...t,fetchedAt:Date.now()})}function Es(e){let t=e.payload;Ti.getState().setFiles(t.files??[],t.error??null)}function Ds(e){let t=e.payload;Ti.getState().selectedPath===t.path&&Ti.getState().setDiff({path:t.path,oldText:t.oldText??``,newText:t.newText??``,binary:t.binary,tooLarge:t.tooLarge,error:t.error})}var Os={"goal.updated":hs,"prefs.updated":gs,"autophase.state":ds,"autophase.progress":fs,"autophase.paused":ps,"autophase.resumed":ps,"autophase.stopped":ps,"autophase.cleared":ps,"autophase.reverted":ps,"autophase.saved":ps,"autophase.completed":ps,"autophase.failed":ps,"autophase.error":ps,"autophase.list":ms,"brain.status":_s,"brain.answer":vs,"brain.event":ys,"collab.event":bs,"collab.injection.granted":xs,"eternal.iteration":Ss,"working_dir.changed":Cs,"model.refine_result":ws,"git.info":Ts,"git.changes":Es,"git.diff":Ds},ks={"coordinator.status":e=>{let t=e.payload;Ta.getState().setCoordinatorStatus(t.status,t.mode),t.taskQueue&&Ta.getState().updateCoordinatorStats({total:t.subagentCount??0,running:0,idle:0,stopped:0,inFlight:t.taskQueue.running,pending:t.taskQueue.pending,completed:t.taskQueue.completed})},"coordinator.stats":e=>{let t=e.payload;Ta.getState().updateCoordinatorStats(t)},"budget.threshold_reached":e=>{let t=e.payload;Ta.getState().pushEvent(`budget.threshold_reached`,t,t.ts??Date.now(),t.subagentId,t.taskId),t.limit>0&&t.used/t.limit*100>=85&&Ta.getState().recordBudgetAlert(t.subagentId,t.kind,t.used,t.limit),Ta.getState().updateSubagentBudget(t.subagentId,{budgetUsage:{iterations:0,toolCalls:0,tokens:0,costUsd:0,elapsedMs:t.used??0}})},"budget.decision":e=>{let t=e.payload,n=t.extended?.timeoutMs??t.extended?.maxIterations??t.extended?.maxToolCalls;Ta.getState().recordBudgetDecision(t.subagentId,t.kind,t.decision,n),Ta.getState().pushEvent(`budget.decision`,{subagentId:t.subagentId,kind:t.kind,decision:t.decision,newLimit:n},Date.now(),t.subagentId)},"subagent.budget_extended":e=>{let t=e.payload;Ta.getState().recordBudgetExtended(t.subagentId,t.kind,t.extendedTo),Ta.getState().pushEvent(`subagent.budget_extended`,t,Date.now(),t.subagentId)},"consensus.vote_initiated":e=>{let t=e.payload;Ta.getState().pushConsensusVote(t.changeId,t.title,t.eligible),Ta.getState().pushEvent(`consensus.vote_initiated`,t,Date.now()),Q.info(`Vote started: `+t.title)},"consensus.vote_cast":e=>{let t=e.payload,n=Ta.getState().consensusVotes.get(t.changeId)?.eligible.find(e=>e.agentId===t.voterId);Ta.getState().recordConsensusVote(t.changeId,t.voterId,n?.agentName??t.voterId,t.value),Ta.getState().pushEvent(`consensus.vote_cast`,t,Date.now(),t.voterId)},"consensus.vote_resolved":e=>{let t=e.payload;Ta.getState().resolveConsensusVote(t.changeId,t.result,t.approveCount,t.rejectCount),Ta.getState().pushEvent(`consensus.vote_resolved`,t,Date.now()),Q.info(`Vote resolved: `+t.result+` (y`+t.approveCount+` n`+t.rejectCount+`)`)},"task.pending":e=>{let t=e.payload;Ta.getState().pushTaskPending(t.taskId,t.description,t.priority),Ta.getState().pushEvent(`task.pending`,t,Date.now())},"task.started":e=>{let t=e.payload;Ta.getState().startTask(t.taskId,t.subagentId),Ta.getState().pushEvent(`task.started`,t,Date.now(),t.subagentId)},"task.completed":e=>{let t=e.payload;Ta.getState().completeTask(t.taskId,t.status,t.durationMs),Ta.getState().pushEvent(`task.completed`,t,Date.now(),t.subagentId)},"task.failed":e=>{let t=e.payload;Ta.getState().failTask(t.taskId,t.error),Ta.getState().pushEvent(`task.failed`,{taskId:t.taskId,subagentId:t.subagentId,error:String(t.error).slice(0,120)},Date.now(),t.subagentId),Q.error(`Task failed: `+String(t.error).slice(0,80))}};function As(e){let t=e.payload?.sessionId,n=q.getState().session?.id;return!t||!n||t===n}function js(e){let t=e.payload;G.getState().addMessage({role:`assistant`,content:[`🛠️ **Registered tools** (${t.tools.length})`,``,...t.tools.map(e=>`• \`${e.name}\`${e.params.length?` (${e.params.join(`, `)})`:``} — ${e.description||`_no description_`}`)].join(`
26
+ `)})}function Ms(e){let t=e.payload,n=t.text?.trim();G.getState().addMessage({role:`assistant`,content:t.error?`Memory read failed: ${t.error}`:n?`🧠 **Memory** \n\n${n}`:`🧠 **Memory**
27
+
28
+ _empty — nothing remembered yet_`})}function Ns(e){let t=e.payload;if(!t.enabled){G.getState().addMessage({role:`assistant`,content:`🎯 **Skills**
29
+
30
+ _disabled (config.features.skills = false)_`});return}let n=[`🎯 **Skills** (${t.skills.length})`,``,...t.skills.length===0?[`_none registered_`]:t.skills.map(e=>`• \`${e.name}\`${e.version?` v${e.version}`:``} _(${e.source})_ — ${e.description||e.trigger||`_no description_`}`)];t.error&&n.push(``,`⚠ ${t.error}`),G.getState().addMessage({role:`assistant`,content:n.join(`
31
+ `)})}function Ps(e){if(!As(e))return;let t=e.payload;G.getState().addMessage({role:`assistant`,content:[`🩺 **Runtime diagnostics**`,``,`**Provider:** \`${t.provider}\` / \`${t.model}\``,`**Mode:** \`${t.mode}\``,`**Session:** \`${t.sessionId}\``,`**CWD:** \`${t.cwd}\``,``,`**Tools:** ${t.tools.count}`,`**Messages:** ${t.messages} · **Todos:** ${t.todos}`,`**Usage:** ${t.usage.input.toLocaleString()} in · ${t.usage.output.toLocaleString()} out${t.usage.cacheRead?` · ${t.usage.cacheRead.toLocaleString()} cache`:``}`,``,`**Features:** memory=${t.features.memory?`✓`:`✗`} · skills=${t.features.skills?`✓`:`✗`} · modelsRegistry=${t.features.modelsRegistry?`✓`:`✗`}`].join(`
32
+ `)})}function Fs(e){if(!As(e))return;let t=e.payload,n=Math.floor(t.elapsedMs/1e3),r=n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m ${n%60}s`:`${Math.floor(n/3600)}h ${Math.floor(n%3600/60)}m`;G.getState().addMessage({role:`assistant`,content:[`📈 **Session stats**`,``,`**Session:** \`${t.sessionId}\``,`**Provider/Model:** \`${t.provider}\` / \`${t.model}\``,`**Elapsed:** ${r}`,``,`**Usage:** ${t.usage.input.toLocaleString()} in · ${t.usage.output.toLocaleString()} out`,...t.cache&&t.cache.readTokens>0?[`**Cache:** ${t.cache.readTokens.toLocaleString()} read · ${t.cache.writeTokens.toLocaleString()} write · hit ratio ${(t.cache.hitRatio*100).toFixed(1)}%`]:[],`**Cost:** ${t.cost.toFixed(4)}`,``,`**Messages:** ${t.messages} · **Files read:** ${t.readFiles} · **Tools available:** ${t.tools}`,...t.sideEffectCount?[`**Side effects:** ⚠ ${t.sideEffectCount}`]:[]].join(`
33
+ `)})}function Is(e){if(!As(e))return;let t=e.payload;q.getState().setTodos(t.todos??[])}function Ls(e){let t=e.payload;q.getState().setModes(t.modes.map(e=>({id:e.id,name:e.name,description:e.description}))),q.getState().setEnv({mode:t.activeId})}var Rs={...Ua,...zo,...Xo,...cs,...Os,...ks,"session.start":e=>{so(e),Zo()},"specs.list":e=>{let t=e.payload;Yi.getState().setSpecs(t.specs??[])},"specs.detail":e=>{Yi.getState().setDetail(e.payload)},"sdd.board.snapshot":e=>{Xi.getState().setSnapshot(e.payload)},"sdd.board.list":e=>{let t=e.payload;Xi.getState().setBoards(t.boards??[])},"sdd.board.lifecycle_result":e=>{let t=e.payload,n=Xi.getState();n.setLifecycleResult({...t,at:Date.now()}),n.setDestroying(!1)},"sdd.spec.snapshot":e=>{Zi.getState().setSnapshot(e.payload)},"sdd.spec.agent_text":e=>{Zi.getState().setAgentText(e.payload.text??``)},"sdd.spec.error":e=>{Zi.getState().setError(e.payload.message??`Error`)},"sdd.run.started":e=>{Zi.getState().setStartedRunId(e.payload.runId??null)},"tools.list":js,"memory.list":Ms,"skills.list":Ns,"diag.get":Ps,"stats.get":Fs,side_effects:e=>{if(!As(e))return;let t=e.payload;wi.getState().setSideEffects(t.sideEffects??[])},"todos.updated":Is,"todos.cleared":e=>{As(e)&&q.getState().setTodos([])},"agent.timeline.message":e=>{if(!As(e))return;let t=e.payload;X.getState().pushAgentTimelineEntry({subagentId:t.subagentId,agentName:t.agentName,content:t.content.slice(0,200),kind:t.kind,iteration:t.iteration,ts:t.ts,toolName:t.toolName})},"agent.status_changed":e=>{if(!As(e))return;let t=e.payload;X.getState().pushAgentTimelineEntry({subagentId:t.subagentId,agentName:t.agentName,content:t.summary??t.status,kind:`status`,iteration:0,ts:t.ts,status:t.status})},"tasks.updated":e=>{},"plan.updated":e=>{},"modes.list":Ls,"session.checkpoints":e=>{},"process.list":e=>{},"projects.list":e=>{},"projects.added":e=>{},"projects.selected":e=>{},"prompts.search":e=>{},"prompts.created":e=>{},"prompts.favorite":e=>{},"prompts.used":e=>{},"design.state":e=>{}};function zs(e){let t=[];for(let[n,r]of Object.entries(Rs))t.push(e.on(n,r));return()=>{for(let e of t)e()}}function Bs(){let{autoConnect:e,wsUrl:t}=K(),n=K(e=>e.setWsStatus),r=(0,U.useRef)(!1);(0,U.useEffect)(()=>{if(!e)return;Yr();let i=W(t),a=!1,o=i.onStatus(e=>{a||n(e)});if(i.connect().then(()=>{a||i.getPrefs()}).catch(e=>{a||console.warn(JSON.stringify({level:`warn`,event:`webui.ws_connection_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}),r.current)return()=>{a=!0,o()};r.current=!0;let s=zs(i);return()=>{a=!0,s(),o()}},[e,t,n])}function Vs(){let{wsUrl:e}=K(),t=W(e),n=(0,U.useCallback)((e,n)=>t.isConnected?t.sendMessage(e,n):null,[t]),r=(0,U.useCallback)(()=>t.sendAbort(),[t]),{hideConfirm:i}=J(),a=(0,U.useCallback)((e,n)=>{t.sendConfirm(e,n),i()},[t,i]),o=(0,U.useCallback)((e,n)=>t.switchModel(e,n),[t]),s=(0,U.useCallback)(()=>t.listProviders(),[t]),c=(0,U.useCallback)(e=>t.listProviderModels(e),[t]),l=(0,U.useCallback)(()=>t.listSavedProviders(),[t]),u=(0,U.useCallback)((e,n,r)=>t.addKey(e,n,r),[t]),d=(0,U.useCallback)((e,n,r)=>t.updateKey(e,n,r),[t]),f=(0,U.useCallback)((e,n)=>t.deleteKey(e,n),[t]),p=(0,U.useCallback)((e,n)=>t.setActiveKey(e,n),[t]),m=(0,U.useCallback)((e,n,r,i)=>t.addProvider(e,n,r,i),[t]),h=(0,U.useCallback)(e=>t.removeProvider(e),[t]),g=(0,U.useCallback)(e=>{Ei.getState().setLoading(!0),t.listSessions(e)},[t]),_=(0,U.useCallback)(e=>{Ei.getState().removeEntry(e),t.deleteSession(e)},[t]),v=(0,U.useCallback)(e=>t.resumeSessionById(e),[t]),y=(0,U.useCallback)(()=>t.saveSession(),[t]),b=(0,U.useCallback)(()=>t.listTools(),[t]),x=(0,U.useCallback)(()=>t.listMemory(),[t]),S=(0,U.useCallback)(()=>t.listSkills(),[t]),C=(0,U.useCallback)(()=>t.getDiag(),[t]),w=(0,U.useCallback)(()=>t.getStats(),[t]),T=(0,U.useCallback)(()=>t.getPlan(),[t]),E=(0,U.useCallback)(()=>t.listModes(),[t]),D=(0,U.useCallback)(e=>t.switchMode(e),[t]),O=(0,U.useCallback)(()=>t.listContextModes(),[t]),k=(0,U.useCallback)(e=>t.switchContextMode(e),[t]),A=(0,U.useCallback)(e=>t.createContextMode(e),[t]),j=(0,U.useCallback)((e,n)=>t.updateContextMode(e,n),[t]),M=(0,U.useCallback)(e=>t.deleteContextMode(e),[t]),N=(0,U.useCallback)(()=>t.repairContext(),[t]),P=(0,U.useCallback)(e=>t.refineModel(e),[t]),F=(0,U.useCallback)(e=>t.switchAutonomy(e),[t]),I=(0,U.useCallback)(e=>t.updatePrefs(e),[t]);return{client:t,sendMessage:n,sendAbort:r,sendConfirm:a,switchModel:o,listProviders:s,listProviderModels:c,listSavedProviders:l,addKey:u,updateKey:d,deleteKey:f,setActiveKey:p,addProvider:m,removeProvider:h,listSessions:g,deleteSession:_,resumeSession:v,saveSession:y,listTools:b,listMemory:x,listSkills:S,getDiag:C,getStats:w,getPlan:T,listModes:E,switchMode:D,listContextModes:O,switchContextMode:k,createContextMode:A,updateContextMode:j,deleteContextMode:M,repairContext:N,toggleAutoPhaseAutonomous:(0,U.useCallback)(e=>{t.send({type:`autophase.toggleAutonomous`,payload:{autonomous:e}})},[t]),startAutoPhase:(0,U.useCallback)((e,n,r=!0)=>{t.send({type:`autophase.start`,payload:{title:e,phases:n,autonomous:r}})},[t]),pauseAutoPhase:(0,U.useCallback)(()=>{t.send({type:`autophase.pause`,payload:{}})},[t]),resumeAutoPhase:(0,U.useCallback)(()=>{t.send({type:`autophase.resume`,payload:{}})},[t]),stopAutoPhase:(0,U.useCallback)(()=>{t.send({type:`autophase.stop`,payload:{}})},[t]),selectAutoPhase:(0,U.useCallback)(e=>{t.send({type:`autophase.selectPhase`,payload:{phaseId:e}})},[t]),switchAutonomy:F,updatePrefs:I,refineModel:P}}var Hs=(0,U.createContext)(void 0);function Us({children:e,defaultTheme:t=`system`,storageKey:n=`wrongstack-theme`}){let{setTheme:r}=K(),[i,a]=(0,U.useState)(()=>typeof window<`u`&&localStorage.getItem(n)||t);(0,U.useEffect)(()=>{let e=window.document.documentElement;if(e.classList.remove(`light`,`dark`),i===`system`){let t=window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`;e.classList.add(t)}else e.classList.add(i)},[i]);let o={theme:i,setTheme:e=>{localStorage.setItem(n,e),a(e),r(e)}};return(0,Y.jsx)(Hs.Provider,{value:o,children:e})}function Ws(){let e=(0,U.useContext)(Hs);if(e===void 0)throw Error(`useTheme must be used within a ThemeProvider`);return e}var Gs=Qn,Ks=rr,qs=cr,Js=U.forwardRef(({className:e,inset:t,children:n,...r},a)=>(0,Y.jsxs)(zn,{ref:a,className:Z(`flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent`,t&&`pl-8`,e),...r,children:[n,(0,Y.jsx)(i,{className:`ml-auto h-4 w-4`})]}));Js.displayName=zn.displayName;var Ys=U.forwardRef(({className:e,...t},n)=>(0,Y.jsx)(Tt,{ref:n,className:Z(`z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,e),...t}));Ys.displayName=Tt.displayName;var Xs=U.forwardRef(({className:e,sideOffset:t=4,...n},r)=>(0,Y.jsx)(Wt,{children:(0,Y.jsx)(it,{ref:r,sideOffset:t,className:Z(`z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,e),...n})}));Xs.displayName=it.displayName;var Zs=U.forwardRef(({className:e,inset:t,...n},r)=>(0,Y.jsx)(ft,{ref:r,className:Z(`relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0`,t&&`pl-8`,e),...n}));Zs.displayName=ft.displayName;var Qs=U.forwardRef(({className:e,children:t,checked:n,...r},i)=>(0,Y.jsxs)(ct,{ref:i,className:Z(`relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,e),checked:n,...r,children:[(0,Y.jsx)(`span`,{className:`absolute left-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,Y.jsx)(ke,{children:(0,Y.jsx)(jn,{className:`h-4 w-4`})})}),t]}));Qs.displayName=ct.displayName;var $s=U.forwardRef(({className:e,children:t,...n},r)=>(0,Y.jsxs)(Pn,{ref:r,className:Z(`relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,e),...n,children:[(0,Y.jsx)(`span`,{className:`absolute left-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,Y.jsx)(ke,{children:(0,Y.jsx)(nt,{className:`h-2 w-2 fill-current`})})}),t]}));$s.displayName=Pn.displayName;var ec=U.forwardRef(({className:e,inset:t,...r},i)=>(0,Y.jsx)(n,{ref:i,className:Z(`px-2 py-1.5 text-sm font-semibold`,t&&`pl-8`,e),...r}));ec.displayName=n.displayName;var tc=U.forwardRef(({className:e,...t},n)=>(0,Y.jsx)(dn,{ref:n,className:Z(`-mx-1 my-1 h-px bg-muted`,e),...t}));tc.displayName=dn.displayName;var nc=({className:e,...t})=>(0,Y.jsx)(`span`,{className:Z(`ml-auto text-xs tracking-widest opacity-60`,e),...t});nc.displayName=`DropdownMenuShortcut`;var rc=[`chat`,`files`,`skill`,`officemap`,`changes`,`mailbox`],ic=[{id:`chat`,icon:(0,Y.jsx)(b,{size:16}),label:`Session`,shortcut:`Ctrl+1`,pairedView:`chat`},{id:`agents`,icon:(0,Y.jsx)(In,{size:16}),label:`Agents`,shortcut:`Ctrl+2`},{id:`history`,icon:(0,Y.jsx)(L,{size:16}),label:`History`,shortcut:`Ctrl+3`},{id:`files`,icon:(0,Y.jsx)(Pt,{size:16}),label:`Files`,shortcut:`Ctrl+4`,pairedView:`files`},{id:`changes`,icon:(0,Y.jsx)(Ut,{size:16}),label:`Changes`,shortcut:`Ctrl+5`,pairedView:`changes`},{id:`projects`,icon:(0,Y.jsx)(un,{size:16}),label:`Projects`,shortcut:`Ctrl+6`},{id:`mailbox`,icon:(0,Y.jsx)(s,{size:16}),label:`Mailbox`,shortcut:`Ctrl+7`,pairedView:`mailbox`},{id:`skills`,icon:(0,Y.jsx)($e,{size:16}),label:`Skills`,shortcut:`Ctrl+8`,pairedView:`skill`},{id:`worktrees`,icon:(0,Y.jsx)(sr,{size:16}),label:`Worktrees`,shortcut:`Ctrl+Shift+W`},{id:`design`,icon:(0,Y.jsx)(jr,{size:16}),label:`Design Studio`,shortcut:`Ctrl+0`},{id:`officemap`,icon:(0,Y.jsx)(cn,{size:16}),label:`Office Map`,shortcut:`Ctrl+9`,pairedView:`officemap`}],ac=[{id:`sddwizard`,icon:(0,Y.jsx)(bt,{size:16}),label:`New SDD Project`},{id:`specs`,icon:(0,Y.jsx)(On,{size:16}),label:`Specs`},{id:`sddboard`,icon:(0,Y.jsx)(Dt,{size:16}),label:`Live Board`},{id:`autophase`,icon:(0,Y.jsx)(ln,{size:16}),label:`Phases`},{id:`settings`,icon:(0,Y.jsx)(dt,{size:16}),label:`Settings`}];function oc(e){let t=J.getState();if(!t.sidebarOpen)t.setSidebarOpen(!0),t.selectActivity(e);else if(t.activeActivity===e){t.setSidebarOpen(!1);return}else t.selectActivity(e);let n=ic.find(t=>t.id===e)?.pairedView;n?t.currentView!==n&&t.setCurrentView(n):rc.includes(t.currentView)&&t.currentView!==`chat`&&t.setCurrentView(`chat`)}var sc=ic.map(e=>e.id);function cc(){let e=J(e=>e.activeActivity),t=J(e=>e.sidebarOpen),n=J(e=>e.currentView),r=J(e=>e.setCurrentView),i=q(e=>e.projectName),a=q(e=>e.cwd),o=K(e=>e.wsConnected),s=X(e=>Array.from(e.agents.values()).filter(e=>e.status===`running`).length),c=xi(Si),l=J(e=>e.inspectorOpen),u=J(e=>e.inspectorTab),d=e=>{if(e===`agents`)return s||void 0;if(e===`mailbox`)return c||void 0};return(0,Y.jsxs)(`div`,{className:`flex flex-col h-full w-12 shrink-0 border-r bg-card/60`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col items-center pt-2.5 pb-2 border-b border-border/50 shrink-0`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{J.getState().setSidebarOpen(!0),J.getState().selectActivity(`chat`),r(`chat`)},title:i?`${i} — return to chat`:`WrongStack — return to chat`,className:`relative w-8 h-8 rounded-md bg-primary flex items-center justify-center shadow-[0_0_0_1px_hsl(var(--primary)/0.4),0_2px_8px_-2px_hsl(var(--primary)/0.5)] hover:shadow-[0_0_0_1px_hsl(var(--primary)/0.6),0_3px_12px_-2px_hsl(var(--primary)/0.6)] transition-shadow`,children:(0,Y.jsx)(Yt,{className:`h-4 w-4 text-primary-foreground`,strokeWidth:2.4})}),(0,Y.jsx)(`span`,{className:`mt-1.5 text-[8px] font-semibold tracking-tight text-muted-foreground text-center leading-tight w-10 truncate`,title:a||i||`WrongStack`,children:i||`WS`}),(0,Y.jsx)(`span`,{className:Z(`mt-1 inline-block w-1.5 h-1.5 rounded-full`,o?`bg-[hsl(var(--success))] shadow-[0_0_4px_hsl(var(--success)/0.6)]`:`bg-[hsl(var(--warning))]`),title:o?`Connected`:`Disconnected`})]}),(0,Y.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-y-auto no-scrollbar flex flex-col items-center pt-2 pb-1`,children:[ic.map(n=>(0,Y.jsx)(uc,{icon:n.icon,label:`${n.label} (${n.shortcut})`,active:t&&e===n.id,badge:d(n.id),onClick:()=>oc(n.id)},n.id)),(0,Y.jsx)(`div`,{className:`my-1.5 h-px w-6 bg-border/60 shrink-0`}),ac.map(e=>(0,Y.jsx)(uc,{icon:e.icon,label:e.label,active:n===e.id,onClick:()=>r(n===e.id?`chat`:e.id)},e.id))]}),(0,Y.jsx)(`div`,{className:`flex flex-col items-center shrink-0 pt-1 pb-2 border-t border-border/50`,children:(0,Y.jsx)(lc,{monitorOpen:l&&(u===`fleet`||u===`agents`)})})]})}function lc({monitorOpen:e}){let{theme:t,setTheme:n}=Ws(),r=J(e=>e.inspectorOpen),i=J(e=>e.inspectorTab),a=e=>{let t=J.getState();t.inspectorOpen&&t.inspectorTab===e?t.setInspectorOpen(!1):(t.setInspectorTab(e),t.setInspectorOpen(!0))};return(0,Y.jsxs)(Gs,{children:[(0,Y.jsx)(Ks,{asChild:!0,children:(0,Y.jsxs)(`button`,{type:`button`,title:`More — palette, theme, shortcuts, monitors`,className:Z(`relative flex items-center justify-center w-10 h-10 rounded-lg transition-colors`,`text-muted-foreground hover:text-foreground hover:bg-muted/70`,`data-[state=open]:text-primary data-[state=open]:bg-primary/10`,e&&`text-primary`),children:[(0,Y.jsx)(`span`,{className:`h-5 w-5 flex items-center justify-center`,children:(0,Y.jsx)(vn,{size:16})}),e&&(0,Y.jsx)(`span`,{className:`absolute top-1 right-1 w-1.5 h-1.5 rounded-full bg-primary`})]})}),(0,Y.jsxs)(Xs,{side:`right`,align:`end`,sideOffset:8,className:`w-56`,children:[(0,Y.jsxs)(Zs,{onSelect:()=>J.getState().setPaletteOpen(!0),children:[(0,Y.jsx)(Fe,{size:16}),(0,Y.jsx)(`span`,{children:`Command Palette`}),(0,Y.jsx)(nc,{children:`⌘K`})]}),(0,Y.jsxs)(Zs,{onSelect:()=>J.getState().setShortcutsOpen(!0),children:[(0,Y.jsx)(tt,{size:16}),(0,Y.jsx)(`span`,{children:`Keyboard Shortcuts`}),(0,Y.jsx)(nc,{children:`?`})]}),(0,Y.jsx)(tc,{}),(0,Y.jsx)(ec,{className:`text-[11px] uppercase tracking-wide text-muted-foreground`,children:`Theme`}),(0,Y.jsxs)(qs,{value:t,onValueChange:e=>n(e),children:[(0,Y.jsxs)($s,{value:`light`,children:[(0,Y.jsx)(A,{size:16,className:`mr-2`}),`Light`]}),(0,Y.jsxs)($s,{value:`dark`,children:[(0,Y.jsx)(g,{size:16,className:`mr-2`}),`Dark`]}),(0,Y.jsxs)($s,{value:`system`,children:[(0,Y.jsx)(xr,{size:16,className:`mr-2`}),`System`]})]}),(0,Y.jsx)(tc,{}),(0,Y.jsx)(ec,{className:`text-[11px] uppercase tracking-wide text-muted-foreground`,children:`Monitors`}),(0,Y.jsxs)(Zs,{onSelect:()=>a(`fleet`),children:[(0,Y.jsx)(Ze,{size:16}),(0,Y.jsx)(`span`,{children:`Fleet Monitor`}),r&&i===`fleet`?(0,Y.jsx)(`span`,{className:`ml-auto w-1.5 h-1.5 rounded-full bg-primary`}):(0,Y.jsx)(nc,{children:`⇧⌘M`})]}),(0,Y.jsxs)(Zs,{onSelect:()=>a(`agents`),children:[(0,Y.jsx)(Dt,{size:16}),(0,Y.jsx)(`span`,{children:`Agents Monitor`}),r&&i===`agents`?(0,Y.jsx)(`span`,{className:`ml-auto w-1.5 h-1.5 rounded-full bg-primary`}):(0,Y.jsx)(nc,{children:`⇧⌘A`})]})]})]})}function uc({icon:e,label:t,active:n,badge:r,onClick:i}){return(0,Y.jsxs)(`button`,{type:`button`,onClick:i,title:t,className:Z(`relative flex items-center justify-center w-10 h-10 rounded-lg transition-colors`,`text-muted-foreground hover:text-foreground hover:bg-muted/70`,n&&`text-primary bg-primary/10`),children:[n&&(0,Y.jsx)(`span`,{className:`absolute left-0 top-1/2 -translate-y-1/2 w-0.5 h-6 rounded-r-full bg-primary`}),(0,Y.jsx)(`span`,{className:`h-5 w-5`,children:e}),r!==void 0&&r>0&&(0,Y.jsx)(`span`,{className:`absolute -top-0.5 -right-0.5 min-w-[15px] h-[15px] flex items-center justify-center rounded-full bg-primary text-[8px] font-bold text-primary-foreground leading-none px-1 tabular`,children:r>99?`99+`:r})]})}function dc(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(e>=1e4?0:1)}k`:String(e)}var fc=e=>{let t=new Date(e);return`${t.getFullYear()}-${t.getMonth()}-${t.getDate()}`};function pc(e,t){let n=new Date(e),r=new Date(t),i=new Date(t-864e5);return fc(e)===fc(r.getTime())?`Today`:fc(e)===fc(i.getTime())?`Yesterday`:n.toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`,year:n.getFullYear()===r.getFullYear()?void 0:`numeric`})}function mc(e,t=Date.now()){let n=[];for(let t=0;t<e.length;t++){let r=Rr(e[t]);if(r.role===`tool`){let e=n[n.length-1];e&&e.kind===`tools`?e.tools.push(r):n.push({kind:`tools`,tools:[r],key:r.id})}else{let i=e[t-1];n.push({kind:`msg`,message:r,isFirst:!i||i.role!==r.role})}}let r=[];for(let e of n){if(e.kind===`msg`&&e.message.role===`user`){r.push({kind:`user`,message:e.message,key:e.message.id});continue}let t=r[r.length-1];if(t&&t.kind===`agent`)t.items.push(e);else{let t=e.kind===`msg`?e.message.id:e.key;r.push({kind:`agent`,items:[e],key:t})}}let i=e=>{if(e.kind===`user`)return e.message.timestamp;let t=Rr(e.items[0]);return t.kind===`msg`?t.message.timestamp:t.tools[0]?.timestamp??0},a=[],o=null;for(let e=0;e<r.length;e++){let n=Rr(r[e]),s=i(n),c=fc(s);if(c!==o&&(a.push({kind:`day`,key:`day-${c}-${e}`,label:pc(s,t)}),o=c),n.kind===`user`){a.push({kind:`user`,key:n.key,message:n.message});continue}let l=e===r.length-1,u=n.items.map((e,t)=>{let r=t>0;return e.kind===`msg`?{kind:`msg`,key:e.message.id,message:e.message,isFirst:!r&&e.isFirst,isContinuation:r}:{kind:`tools`,key:e.key,tools:e.tools,isContinuation:r,isLastGroup:t===n.items.length-1,hasRunningTool:e.tools.some(e=>e.toolResult===void 0)}});a.push({kind:`agent`,key:n.key,items:u,isLastTurn:l})}return a}var hc={0:``,1:`▏`,2:`▎`,3:`▍`,4:`▌`,5:`▋`,6:`▊`,7:`▉`,8:`█`};function gc(e){return e>=75?`bg-destructive`:e>=60?`bg-[hsl(var(--warning))]`:`bg-[hsl(var(--success))]`}function _c(e){return e>=75?`text-destructive`:e>=60?`text-[hsl(var(--warning))]`:`text-[hsl(var(--success))]`}function vc(e){return Number.isFinite(e)?Math.max(0,Math.min(100,e)):0}function yc({pct:e,tokens:t,maxTokens:n,segments:r=10,showTokens:i=!0,className:a,onClick:o}){let s=vc(e),c=Math.round(s/100*r*8),l=[],u=c;for(let e=0;e<r;e++){let e=Math.min(8,u);l.push({fill:e}),u-=e}let d=`${Math.round(s)}%`,f=i&&t!==void 0&&n!==void 0&&n>0?` ${dc(t)}/${dc(n)}`:``;return(0,Y.jsxs)(`span`,{className:Z(`inline-flex items-center gap-1 px-1.5 py-0.5 rounded-full text-[11px] font-mono font-medium shrink-0`,o&&`cursor-pointer hover:ring-1 hover:ring-ring transition-shadow`,_c(s),s>=75?`bg-red-500/10`:s>=60?`bg-amber-500/10`:`bg-emerald-500/10`,a),title:(t!==void 0&&n!==void 0?`Context window: ${t.toLocaleString()} / ${n.toLocaleString()} tokens (${d})`:`Context window: ${d}`)+(o?` — click for breakdown`:``),onClick:o?e=>{e.stopPropagation(),o()}:void 0,onKeyDown:o?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.stopPropagation(),o())}:void 0,role:o?`button`:void 0,tabIndex:o?0:void 0,children:[(0,Y.jsx)(`span`,{className:`inline-flex font-mono text-[10px] leading-none tracking-tight`,children:l.map((e,t)=>(0,Y.jsx)(`span`,{className:Z(`tabular-nums w-[0.55em] text-center`,e.fill>0?_c(s):`text-muted-foreground/30`),children:hc[e.fill]??` `},t))}),(0,Y.jsx)(`span`,{children:d}),f&&(0,Y.jsx)(`span`,{className:`tabular-nums`,children:f})]})}function bc({pct:e,tokens:t,maxTokens:n,showTokens:r=!0,className:i,onClick:a}){let o=vc(e),s=`${Math.round(o)}%`,c=r&&t!==void 0&&n!==void 0&&n>0?` ${dc(t)}/${dc(n)}`:``;return(0,Y.jsxs)(`span`,{className:Z(`inline-flex items-center gap-1.5`,a&&`cursor-pointer hover:opacity-80 transition-opacity`,i),title:(t!==void 0&&n!==void 0?`Context window: ${t.toLocaleString()} / ${n.toLocaleString()} tokens (${s})`:`Context window: ${s}`)+(a?` — click for breakdown`:``),onClick:a?e=>{e.stopPropagation(),a()}:void 0,onKeyDown:a?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),e.stopPropagation(),a())}:void 0,role:a?`button`:void 0,tabIndex:a?0:void 0,children:[(0,Y.jsx)(`span`,{className:`h-1.5 w-16 overflow-hidden rounded-full bg-muted shrink-0`,children:(0,Y.jsx)(`span`,{className:Z(`h-full rounded-full transition-all duration-300`,gc(o)),style:{width:`${Math.max(2,o)}%`}})}),(0,Y.jsx)(`span`,{className:Z(`text-[11px] font-mono tabular-nums font-medium`,_c(o)),children:s}),c&&(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:c})]})}var xc=[` `,`▁`,`▂`,`▃`,`▄`,`▅`,`▆`,`▇`,`█`],Sc=12;function Cc(e,t){return t===0?0:Math.min(8,Math.round(e/t*8))}function wc({bins:e,className:t}){let n=Array.from({length:Sc},(t,n)=>e.at(-(Sc-n))??0),r=Math.max(...n,1);return r===1&&n.every(e=>e===0)?(0,Y.jsx)(`span`,{className:t,"aria-label":`No activity`,title:`No activity yet`,children:`—`}):(0,Y.jsx)(`span`,{className:t,"aria-label":`Activity sparkline: max ${r} events`,title:`Activity sparkline — peak ${r} events/bucket`,children:n.map((e,t)=>{let n=Cc(e,r),i=xc[n];return(0,Y.jsx)(`span`,{style:{color:n>=7?`hsl(var(--success))`:`hsl(var(--muted-foreground))`,opacity:n>0?void 0:.3},children:i},t)})})}function Tc(e){return e<=0?`$0`:e>=.01?`$${e.toFixed(3)}`:`$${e.toFixed(5)}`.replace(/0+$/,``).replace(/\.$/,``)}function Ec(e){let t=Math.floor(e/1e3);return t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`}var Dc={running:{led:`bg-[hsl(var(--success))]`,label:`running`,pulse:!0,badge:`bg-[hsl(var(--success))]/15 text-[hsl(var(--success))]`},completed:{led:`bg-[hsl(var(--success))]`,label:`done`,pulse:!1,badge:`bg-muted text-muted-foreground`},failed:{led:`bg-destructive`,label:`failed`,pulse:!1,badge:`bg-destructive/15 text-destructive`},timeout:{led:`bg-[hsl(var(--warning))]`,label:`timeout`,pulse:!1,badge:`bg-amber-500/15 text-amber-500`},stopped:{led:`bg-muted-foreground`,label:`stopped`,pulse:!1,badge:`bg-muted text-muted-foreground`}};function Oc({agent:e,isLeader:t}){let n=Dc[e.status],r=e.status===`running`,i=Date.now()-e.startedAt,a=[...e.toolLog.slice(0,8)].reverse();return(0,Y.jsxs)(`div`,{className:Z(`rounded-xl border p-4 space-y-3`,r?`border-primary/20 bg-primary/[0.02]`:`border-border bg-card`,t&&`ring-2 ring-amber-500/30`),children:[(0,Y.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:Z(`led`,n.led,n.pulse&&`led-pulse`,`mt-0.5`)}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(`span`,{className:`text-sm font-semibold`,children:e.name}),t&&(0,Y.jsx)(ye,{className:`h-3.5 w-3.5 text-amber-500`,"aria-label":`leader`}),e.extensions>0&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded-full bg-amber-500/15 text-[10px] text-amber-600 dark:text-amber-400 font-medium`,children:[(0,Y.jsx)(Yt,{className:`h-2.5 w-2.5`}),`×`,e.extensions]})]}),(0,Y.jsx)(`span`,{className:Z(`inline-block mt-0.5 px-1.5 py-0.5 rounded text-[10px] font-medium`,n.badge),children:n.label})]})]}),(0,Y.jsx)(`div`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground`,children:t&&(0,Y.jsx)(`span`,{className:`text-[9px] bg-amber-500/15 text-amber-600 dark:text-amber-400 px-1.5 py-0.5 rounded`,children:`LEADER`})})]}),e.description&&(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground leading-relaxed line-clamp-2`,children:e.description}),e.budgetWarning&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/20 text-xs`,children:[(0,Y.jsx)(Yt,{className:`h-3.5 w-3.5 text-amber-500 shrink-0`}),(0,Y.jsxs)(`span`,{className:`text-amber-600 dark:text-amber-400`,children:[`⚡ hitting `,(0,Y.jsx)(`strong`,{children:e.budgetWarning.kind}),` limit (`,e.budgetWarning.used,`/`,e.budgetWarning.limit,`) — extending`]})]}),e.failureReason&&(0,Y.jsx)(`div`,{className:`flex items-center gap-2 px-3 py-2 rounded-lg bg-destructive/10 border border-destructive/20 text-xs`,children:(0,Y.jsxs)(`span`,{className:`text-destructive font-medium`,children:[`✗ `,e.failureReason]})}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-4 gap-2`,children:[(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/30 px-2 py-1.5 text-center`,children:[(0,Y.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Iters`}),(0,Y.jsx)(`div`,{className:`text-xs font-mono font-semibold tabular-nums`,children:e.iteration})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/30 px-2 py-1.5 text-center`,children:[(0,Y.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Tools`}),(0,Y.jsx)(`div`,{className:`text-xs font-mono font-semibold tabular-nums`,children:e.toolCalls})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/30 px-2 py-1.5 text-center`,children:[(0,Y.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Cost`}),(0,Y.jsx)(`div`,{className:`text-xs font-mono font-semibold tabular-nums`,children:Tc(e.costUsd)})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/30 px-2 py-1.5 text-center`,children:[(0,Y.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Elapsed`}),(0,Y.jsx)(`div`,{className:`text-xs font-mono font-semibold tabular-nums`,children:Ec(i)})]})]}),(0,Y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`Activity (12 bins)`}),(0,Y.jsx)(wc,{bins:e.sparklineBins,className:`font-mono text-[9px]`})]}),(0,Y.jsx)(yc,{pct:e.ctxPct,tokens:e.ctxTokens,maxTokens:e.maxContext})]}),(e.provider||e.model)&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-muted-foreground`,children:[(0,Y.jsx)(k,{className:`h-3 w-3`}),(0,Y.jsxs)(`span`,{className:`font-mono`,children:[e.provider??`?`,`/`,e.model??`?`]})]}),(e.currentTool||e.lastTool)&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-muted-foreground`,children:[(0,Y.jsx)(kn,{className:Z(`h-3 w-3`,r&&`animate-pulse text-primary`)}),(0,Y.jsx)(`span`,{className:`font-mono`,children:e.currentTool??e.lastTool}),r&&(0,Y.jsx)(O,{className:`h-3 w-3 animate-spin`})]}),e.partialText&&r&&(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/30 p-2`,children:[(0,Y.jsx)(`div`,{className:`text-[9px] text-muted-foreground uppercase tracking-wider mb-1`,children:`Streaming output`}),(0,Y.jsx)(`pre`,{className:`text-[10px] font-mono text-foreground/80 whitespace-pre-wrap line-clamp-3 leading-relaxed`,children:e.partialText})]}),a.length>0&&(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(`div`,{className:`text-[9px] text-muted-foreground uppercase tracking-wider`,children:`Recent tools`}),(0,Y.jsx)(`div`,{className:`space-y-0.5`,children:a.map((e,t)=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] font-mono`,children:[(0,Y.jsx)(`span`,{className:Z(`shrink-0`,e.ok?`text-[hsl(var(--success))]`:`text-destructive`),children:e.ok?`✓`:`✗`}),(0,Y.jsx)(`span`,{className:`text-muted-foreground truncate`,children:e.name}),(0,Y.jsx)(`span`,{className:`ml-auto tabular-nums text-muted-foreground shrink-0`,children:e.durationMs>=1e3?`${(e.durationMs/1e3).toFixed(1)}s`:`${e.durationMs}ms`})]},t))})]}),e.finalText&&!r&&(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/30 p-2`,children:[(0,Y.jsx)(`div`,{className:`text-[9px] text-muted-foreground uppercase tracking-wider mb-1`,children:`Final output`}),(0,Y.jsx)(`pre`,{className:`text-[10px] font-mono text-foreground/80 whitespace-pre-wrap line-clamp-4 leading-relaxed`,children:e.finalText})]})]})}function kc({onClose:e}){let t=X(e=>e.agents),n=X(e=>e.leaderId),[r,a]=(0,U.useState)(0),o=(0,U.useMemo)(()=>{let e=Array.from(t.values());return e.sort((e,t)=>{if(e.id===n)return-1;if(t.id===n)return 1;let r=e.status===`running`?0:1,i=t.status===`running`?0:1;return r===i?e.startedAt-t.startedAt:r-i}),e},[t,n]),s=(0,U.useCallback)(t=>{if(t.key===`Escape`){e();return}if(t.key===`ArrowDown`){t.preventDefault(),a(e=>Math.min(e+1,o.length-1));return}if(t.key===`ArrowUp`){t.preventDefault(),a(e=>Math.max(e-1,0));return}},[o.length,e]);(0,U.useEffect)(()=>{let t=t=>{t.key===`Escape`&&e()};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e]);let c=o[r]??null;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/10 backdrop-blur-[1px]`,onClick:e,"aria-hidden":`true`}),(0,Y.jsxs)(`div`,{className:`fixed right-0 top-0 h-full z-50 w-[600px] max-w-[90vw] flex flex-col bg-background border-l shadow-2xl animate-slide-in-right`,onKeyDown:s,tabIndex:-1,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b bg-card/80 backdrop-blur shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(In,{className:`h-5 w-5 text-primary`}),(0,Y.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Agents Monitor`}),(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[o.length,` total`]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>a(e=>Math.max(e-1,0)),className:`p-1.5 rounded-md hover:bg-muted transition-colors disabled:opacity-30`,disabled:r===0,"aria-label":`Previous agent`,children:(0,Y.jsx)(Vt,{className:`h-4 w-4`})}),(0,Y.jsx)(`span`,{className:`text-xs tabular-nums text-muted-foreground font-mono`,children:o.length>0?`${r+1}/${o.length}`:`0/0`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>a(e=>Math.min(e+1,o.length-1)),className:`p-1.5 rounded-md hover:bg-muted transition-colors disabled:opacity-30`,disabled:r>=o.length-1,"aria-label":`Next agent`,children:(0,Y.jsx)(i,{className:`h-4 w-4`})}),(0,Y.jsx)(`button`,{type:`button`,onClick:e,className:`p-1.5 rounded-md hover:bg-muted transition-colors ml-2`,"aria-label":`Close agents monitor`,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:o.length===0?(0,Y.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full text-muted-foreground`,children:[(0,Y.jsx)(In,{className:`h-12 w-12 mb-3 opacity-20`}),(0,Y.jsx)(`p`,{className:`text-sm font-medium`,children:`No agents active`})]}):c?(0,Y.jsx)(`div`,{className:`max-w-2xl mx-auto`,children:(0,Y.jsx)(Oc,{agent:c,isLeader:c.id===n})}):null}),o.length>0&&(0,Y.jsxs)(`div`,{className:`border-t bg-card/80 backdrop-blur shrink-0`,children:[(0,Y.jsx)(`div`,{className:`px-4 py-2 flex items-center gap-2 overflow-x-auto`,children:o.map((e,t)=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>a(t),className:Z(`shrink-0 flex items-center gap-1.5 px-2 py-1 rounded-md text-[10px] transition-colors`,t===r?`bg-primary/15 text-primary ring-1 ring-primary/40`:`hover:bg-accent text-muted-foreground`),children:[(0,Y.jsx)(`span`,{className:Z(`led`,Dc[e.status].led,Dc[e.status].pulse&&`led-pulse`,`shrink-0`)}),(0,Y.jsx)(`span`,{children:e.name}),e.id===n&&(0,Y.jsx)(ye,{className:`h-2.5 w-2.5 text-amber-500 shrink-0`})]},e.id))}),(0,Y.jsxs)(`div`,{className:`px-4 py-1.5 border-t text-[10px] text-muted-foreground flex items-center gap-4`,children:[(0,Y.jsx)(`span`,{children:`←→ page`}),(0,Y.jsx)(`span`,{children:`↑↓ navigate list`}),(0,Y.jsx)(`span`,{children:`Esc close`})]})]})]})]})}function Ac(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m ${t%60}s`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d`}function jc(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function Mc(e){return e<.01?`$${e.toFixed(4)}`:`$${e.toFixed(2)}`}function Nc(e){return new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function Pc(e){return e.includes(`error`)||e.includes(`fail`)?`text-red-400`:e.includes(`warn`)?`text-amber-400`:e.includes(`success`)||e.includes(`complete`)?`text-emerald-400`:`text-slate-400`}function Fc({icon:e,label:t,value:n,sub:r,color:i=`text-slate-300`}){return(0,Y.jsxs)(`div`,{className:`rounded-lg border border-slate-700 bg-slate-800/50 p-4 flex items-start gap-3`,children:[(0,Y.jsx)(`div`,{className:`mt-0.5 ${i}`,children:e}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-2xl font-semibold tabular-nums text-slate-100`,children:n}),(0,Y.jsx)(`div`,{className:`text-xs text-slate-500 mt-0.5`,children:t}),r?(0,Y.jsx)(`div`,{className:`text-xs text-slate-600 mt-1`,children:r}):null]})]})}function Ic(){let[e,t]=(0,U.useState)(null),[n,r]=(0,U.useState)([]),[i,a]=(0,U.useState)([]),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(!0),[u,d]=(0,U.useState)(!1),f=(0,U.useRef)(null),p=(0,U.useCallback)(async()=>{try{let e=await fetch(`/api/analytics/summary`);e.ok&&t(await e.json())}catch{}},[]),m=(0,U.useCallback)(async()=>{try{let e=await fetch(`/api/analytics?limit=50`);e.ok&&r((await e.json()).events)}catch{}},[]),h=(0,U.useCallback)(async()=>{try{let e=await fetch(`/api/sessions`);e.ok&&a(await e.json())}catch{}},[]),g=(0,U.useCallback)(async()=>{if(!u){d(!0);try{let e=W(K.getState().wsUrl);f.current=e;let t=e.on(`stats.get`,e=>{let n=e.payload;s(n),d(!1),t()});e.getStats(),setTimeout(()=>{d(!1),t()},8e3)}catch{d(!1)}}},[u]);(0,U.useEffect)(()=>{let e=()=>{Promise.all([p(),m(),h(),g()]).finally(()=>l(!1))};e();let t=setInterval(e,1e4);return()=>clearInterval(t)},[p,m,h,g]);let{totalAgents:_,activeAgents:v,totalToolCalls:y,totalIterations:x}=(0,U.useMemo)(()=>{let e=0,t=0,n=0,r=0;for(let a of i)for(let i of a.agents)e++,i.status===`running`&&t++,n+=i.toolCalls,r+=i.iterations;return{totalAgents:e,activeAgents:t,totalToolCalls:n,totalIterations:r}},[i]),C=(0,U.useMemo)(()=>e?Object.entries(e.categoryBreakdown).sort((e,t)=>t[1]-e[1]).slice(0,8):[],[e]),w=(0,U.useMemo)(()=>e?Object.entries(e.eventBreakdown).sort((e,t)=>t[1]-e[1]).slice(0,10):[],[e]),T=(0,U.useMemo)(()=>{if(!e)return 0;let t=0;for(let[n,r]of Object.entries(e.eventBreakdown))n.toLowerCase().includes(`error`)&&(t+=r);return t},[e]),D=(0,U.useMemo)(()=>{if(!e)return 0;let t=0;for(let[n,r]of Object.entries(e.eventBreakdown))n.toLowerCase().includes(`warn`)&&(t+=r);return t},[e]),A=(0,U.useMemo)(()=>[...n].reverse(),[n]);return c?(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 p-4 text-slate-400`,children:[(0,Y.jsx)(O,{className:`h-4 w-4 animate-spin`}),`Loading analytics...`]}):(0,Y.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,Y.jsx)(`div`,{className:`shrink-0 px-4 pt-3 pb-2 border-b border-slate-700/50`,children:(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(Yn,{className:`h-4 w-4 text-cyan-400`}),(0,Y.jsx)(`h1`,{className:`text-sm font-semibold text-slate-200 uppercase tracking-wider`,children:`Analytics Dashboard`})]}),(0,Y.jsx)(`span`,{className:`text-xs text-slate-600`,children:`auto-refresh every 10s`})]})}),(0,Y.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 space-y-5`,children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3`,children:[(0,Y.jsx)(Fc,{icon:(0,Y.jsx)(Dt,{className:`h-4 w-4`}),label:`Live Sessions`,value:i.length,color:`text-cyan-400`}),(0,Y.jsx)(Fc,{icon:(0,Y.jsx)(At,{className:`h-4 w-4`}),label:`Agents`,value:`${v}/${_}`,sub:v>0?`${v} active`:void 0,color:`text-blue-400`}),(0,Y.jsx)(Fc,{icon:(0,Y.jsx)(b,{className:`h-4 w-4`}),label:`Total Events`,value:e?.totalEvents??0,sub:`${e?.uniqueCategories??0} categories`,color:`text-violet-400`}),(0,Y.jsx)(Fc,{icon:(0,Y.jsx)(hn,{className:`h-4 w-4`}),label:`Tool Calls`,value:y,sub:`${x} iterations`,color:`text-emerald-400`}),(0,Y.jsx)(Fc,{icon:(0,Y.jsx)(mn,{className:`h-4 w-4`}),label:`Session Cost`,value:o?Mc(o.cost):`—`,sub:o?`${jc(o.usage.input)} in / ${jc(o.usage.output)} out`:void 0,color:`text-amber-400`}),(0,Y.jsx)(Fc,{icon:(0,Y.jsx)(k,{className:`h-4 w-4`}),label:`Session Duration`,value:o?Ac(o.elapsedMs):`—`,sub:o?`${o.messages} messages`:void 0,color:`text-rose-400`})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-2 gap-4`,children:[(0,Y.jsxs)(`div`,{className:`rounded-lg border border-slate-700 bg-slate-800/30 p-4`,children:[(0,Y.jsxs)(`h3`,{className:`text-xs font-semibold text-slate-400 uppercase tracking-wider mb-3 flex items-center gap-2`,children:[(0,Y.jsx)(S,{className:`h-3.5 w-3.5 text-cyan-400`}),`Events by Category`]}),C.length===0?(0,Y.jsx)(`p`,{className:`text-slate-600 text-xs`,children:`No events recorded yet.`}):(0,Y.jsx)(`div`,{className:`space-y-1.5`,children:C.map(([e,t])=>{let n=C[0]?.[1]??1,r=Math.round(t/n*100);return(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,Y.jsx)(`span`,{className:`w-28 shrink-0 truncate text-slate-300`,children:e}),(0,Y.jsx)(`div`,{className:`flex-1 h-4 bg-slate-700/50 rounded-full overflow-hidden`,children:(0,Y.jsx)(`div`,{className:`h-full bg-cyan-500/60 rounded-full transition-all`,style:{width:`${Math.max(r,4)}%`}})}),(0,Y.jsx)(`span`,{className:`w-10 text-right tabular-nums text-slate-400`,children:t})]},e)})})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border border-slate-700 bg-slate-800/30 p-4`,children:[(0,Y.jsxs)(`h3`,{className:`text-xs font-semibold text-slate-400 uppercase tracking-wider mb-3 flex items-center gap-2`,children:[(0,Y.jsx)(Yn,{className:`h-3.5 w-3.5 text-violet-400`}),`Top Events`]}),w.length===0?(0,Y.jsx)(`p`,{className:`text-slate-600 text-xs`,children:`No events recorded yet.`}):(0,Y.jsx)(`div`,{className:`space-y-1.5`,children:w.map(([e,t])=>{let n=w[0]?.[1]??1,r=Math.round(t/n*100);return(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,Y.jsx)(`span`,{className:`w-36 shrink-0 truncate ${Pc(e)}`,children:e}),(0,Y.jsx)(`div`,{className:`flex-1 h-4 bg-slate-700/50 rounded-full overflow-hidden`,children:(0,Y.jsx)(`div`,{className:`h-full bg-violet-500/60 rounded-full transition-all`,style:{width:`${Math.max(r,4)}%`}})}),(0,Y.jsx)(`span`,{className:`w-10 text-right tabular-nums text-slate-400`,children:t})]},e)})})]})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-2 gap-4`,children:[(0,Y.jsxs)(`div`,{className:`rounded-lg border border-slate-700 bg-slate-800/30 p-4`,children:[(0,Y.jsxs)(`h3`,{className:`text-xs font-semibold text-slate-400 uppercase tracking-wider mb-3 flex items-center gap-2`,children:[(0,Y.jsx)(mn,{className:`h-3.5 w-3.5 text-amber-400`}),`Active Session Usage`]}),o?(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 text-xs`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-slate-500`,children:`Provider`}),(0,Y.jsx)(`p`,{className:`text-slate-200 font-mono mt-0.5`,children:o.provider})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-slate-500`,children:`Model`}),(0,Y.jsx)(`p`,{className:`text-slate-200 font-mono mt-0.5`,children:o.model})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-slate-500`,children:`Input Tokens`}),(0,Y.jsx)(`p`,{className:`text-slate-200 tabular-nums mt-0.5`,children:jc(o.usage.input)})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-slate-500`,children:`Output Tokens`}),(0,Y.jsx)(`p`,{className:`text-slate-200 tabular-nums mt-0.5`,children:jc(o.usage.output)})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-slate-500`,children:`Cache Ratio`}),(0,Y.jsxs)(`p`,{className:`text-slate-200 tabular-nums mt-0.5`,children:[(o.cache.ratio*100).toFixed(1),`%`]})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-slate-500`,children:`Files Read`}),(0,Y.jsx)(`p`,{className:`text-slate-200 tabular-nums mt-0.5`,children:o.readFiles})]})]}):(0,Y.jsx)(`p`,{className:`text-slate-600 text-xs`,children:`No active session or waiting for data…`})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border border-slate-700 bg-slate-800/30 p-4`,children:[(0,Y.jsxs)(`h3`,{className:`text-xs font-semibold text-slate-400 uppercase tracking-wider mb-3 flex items-center gap-2`,children:[(0,Y.jsx)(E,{className:`h-3.5 w-3.5 text-amber-400`}),`Health & Errors`]}),(0,Y.jsx)(`div`,{className:`space-y-2 text-xs`,children:e?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-slate-500`,children:`Error events`}),(0,Y.jsx)(`span`,{className:`text-red-400 tabular-nums`,children:T})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-slate-500`,children:`Warning events`}),(0,Y.jsx)(`span`,{className:`text-amber-400 tabular-nums`,children:D})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-slate-500`,children:`Cache hit rate`}),(0,Y.jsx)(`span`,{className:`text-emerald-400 tabular-nums`,children:o?`${(o.cache.ratio*100).toFixed(1)}%`:`—`})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-slate-500`,children:`Total categories`}),(0,Y.jsx)(`span`,{className:`text-slate-300 tabular-nums`,children:e.uniqueCategories})]})]}):(0,Y.jsx)(`p`,{className:`text-slate-600`,children:`Waiting for data…`})})]})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border border-slate-700 bg-slate-800/30 p-4`,children:[(0,Y.jsxs)(`h3`,{className:`text-xs font-semibold text-slate-400 uppercase tracking-wider mb-3 flex items-center gap-2`,children:[(0,Y.jsx)(Dt,{className:`h-3.5 w-3.5 text-cyan-400`}),`Recent Events`]}),n.length===0?(0,Y.jsx)(`p`,{className:`text-slate-600 text-xs`,children:`No recent events. Interact with the UI to generate events.`}):(0,Y.jsx)(`div`,{className:`max-h-64 overflow-y-auto space-y-1`,children:A.map((e,t)=>(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 py-1 px-2 rounded hover:bg-slate-700/30 text-xs`,children:[(0,Y.jsx)(`span`,{className:`text-slate-600 tabular-nums shrink-0 w-16`,children:Nc(e.timestamp)}),(0,Y.jsx)(`span`,{className:`shrink-0 w-24 truncate ${Pc(e.event)}`,children:e.event}),(0,Y.jsx)(`span`,{className:`text-slate-500 shrink-0 w-20 truncate`,children:e.category}),(0,Y.jsx)(`span`,{className:`text-slate-400 truncate`,children:e.label??e.sessionId??``})]},`${e.timestamp}-${t}`))})]})]})]})}var Lc={pending:{icon:(0,Y.jsx)(nt,{className:`w-4 h-4`}),color:`text-muted-foreground`,label:`Pending`},in_progress:{icon:(0,Y.jsx)(L,{className:`w-4 h-4 animate-spin`,"aria-label":`In Progress`}),color:`text-primary`,label:`In Progress`},blocked:{icon:(0,Y.jsx)(rn,{className:`w-4 h-4`}),color:`text-[hsl(var(--warning))]`,label:`Blocked`},failed:{icon:(0,Y.jsx)(N,{className:`w-4 h-4`}),color:`text-destructive`,label:`Failed`},review:{icon:(0,Y.jsx)(Xn,{className:`w-4 h-4`}),color:`text-[hsl(var(--info))]`,label:`Review`},completed:{icon:(0,Y.jsx)(V,{className:`w-4 h-4`}),color:`text-[hsl(var(--success))]`,label:`Done`}},Rc={critical:`bg-destructive/15 text-destructive`,high:`bg-orange-500/15 text-orange-600 dark:text-orange-400`,medium:`bg-[hsl(var(--info)/0.15)] text-[hsl(var(--info))]`,low:`bg-muted text-muted-foreground`},zc={feature:`bg-[hsl(var(--success)/0.15)] text-[hsl(var(--success))]`,bugfix:`bg-destructive/15 text-destructive`,refactor:`bg-violet-500/15 text-violet-600 dark:text-violet-400`,docs:`bg-sky-500/15 text-sky-600 dark:text-sky-400`,test:`bg-primary/15 text-primary`,chore:`bg-muted text-muted-foreground`};function Bc(e){if(!e)return``;let t=Math.floor(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60),r=t%60;return r>0?`${n}h ${r}m`:`${n}h`}function Vc({task:e,onStatusChange:t,onRetry:n,agents:r,onAssign:i,compact:a,className:o}){let s=Lc[e.status],[c,l]=(0,U.useState)(!1),u=e.status===`in_progress`;return(0,Y.jsxs)(`div`,{className:Z(`w-full text-left rounded-lg border p-3 transition-all hover:shadow-sm`,u?`border-primary/40 bg-primary/5`:e.status===`completed`?`border-[hsl(var(--success)/0.35)] bg-[hsl(var(--success)/0.06)]`:e.status===`failed`?`border-destructive/40 bg-destructive/5`:`border-border bg-card`,o),children:[(0,Y.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,Y.jsx)(`span`,{className:Z(`mt-0.5`,s.color),children:s.icon}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium`,children:e.title}),(0,Y.jsx)(`span`,{className:Z(`px-1.5 py-0.5 rounded text-[10px] font-medium`,Rc[e.priority]),children:e.priority}),(0,Y.jsx)(`span`,{className:Z(`px-1.5 py-0.5 rounded text-[10px] font-medium`,zc[e.type]),children:e.type})]}),e.description&&(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1 line-clamp-2`,children:e.description})]})]}),e.assignee&&(0,Y.jsxs)(`div`,{className:Z(`mt-2 inline-flex items-center gap-1.5 rounded-full px-2 py-0.5 text-[10px] font-medium`,u?`bg-primary/15 text-primary`:`bg-muted text-muted-foreground`),children:[u&&(0,Y.jsx)(L,{className:`w-3 h-3 animate-spin`,"aria-label":`working`}),(0,Y.jsx)(`span`,{children:e.assignee})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 mt-2 text-xs text-muted-foreground`,children:[e.estimateHours?(0,Y.jsxs)(`span`,{children:[`~`,e.estimateHours,`h`]}):null,e.actualHours?(0,Y.jsxs)(`span`,{children:[`• `,e.actualHours,`h`]}):null,e.startedAt?(0,Y.jsxs)(`span`,{children:[`• `,Bc(Date.now()-e.startedAt)]}):null]}),e.tags.length>0&&(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-2`,children:e.tags.map(e=>(0,Y.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] bg-muted text-muted-foreground`,children:e},e))}),!a&&(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1 mt-2`,children:[t&&e.status!==`in_progress`&&e.status!==`completed`&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>t(e.id,`in_progress`),className:`px-2 py-0.5 text-[10px] rounded bg-primary/15 text-primary hover:bg-primary/25 transition-colors`,children:`Start`}),t&&e.status===`in_progress`&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>t(e.id,`completed`),className:`px-2 py-0.5 text-[10px] rounded bg-[hsl(var(--success)/0.15)] text-[hsl(var(--success))] hover:bg-[hsl(var(--success)/0.25)] transition-colors`,children:`Complete`}),n&&(e.status===`failed`||e.status===`completed`)&&(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>n(e.id),className:`px-2 py-0.5 text-[10px] rounded bg-muted text-muted-foreground hover:bg-muted/70 transition-colors inline-flex items-center gap-1`,children:[(0,Y.jsx)(Xn,{className:`w-3 h-3`}),` Retry`]}),i&&r&&r.length>0&&(c?(0,Y.jsxs)(`select`,{autoFocus:!0,defaultValue:e.assignee??``,onChange:t=>{i(e.id,t.target.value),l(!1)},onBlur:()=>l(!1),className:`px-1 py-0.5 text-[10px] rounded border border-border bg-card`,children:[(0,Y.jsx)(`option`,{value:``,children:`Unassigned`}),r.map(e=>(0,Y.jsx)(`option`,{value:e,children:e},e))]}):(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>l(!0),className:`px-2 py-0.5 text-[10px] rounded bg-muted text-muted-foreground hover:bg-muted/70 transition-colors inline-flex items-center gap-1`,title:`Assign agent`,children:[(0,Y.jsx)(v,{className:`w-3 h-3`}),` Assign`]}))]})]})}var Hc=re(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-input bg-background hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-10 px-4 py-2`,sm:`h-9 rounded-md px-3`,lg:`h-11 rounded-md px-8`,icon:`h-10 w-10`}},defaultVariants:{variant:`default`,size:`default`}}),$=U.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...i},a)=>(0,Y.jsx)(r?Ft:`button`,{className:Z(Hc({variant:t,size:n,className:e})),ref:a,...i}));$.displayName=`Button`;var Uc=j,Wc=Wn,Gc=et,Kc=U.forwardRef(({className:e,...t},n)=>(0,Y.jsx)(Ke,{ref:n,className:Z(`fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,e),...t}));Kc.displayName=Ke.displayName;var qc=U.forwardRef(({className:e,children:t,...n},r)=>(0,Y.jsxs)(Gc,{children:[(0,Y.jsx)(Kc,{}),(0,Y.jsxs)(Xe,{ref:r,className:Z(`fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg`,e),...n,children:[t,(0,Y.jsxs)(u,{className:`absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground`,children:[(0,Y.jsx)(H,{className:`h-4 w-4`}),(0,Y.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]}));qc.displayName=Xe.displayName;var Jc=({className:e,...t})=>(0,Y.jsx)(`div`,{className:Z(`flex flex-col space-y-1.5 text-center sm:text-left`,e),...t});Jc.displayName=`DialogHeader`;var Yc=({className:e,...t})=>(0,Y.jsx)(`div`,{className:Z(`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,e),...t});Yc.displayName=`DialogFooter`;var Xc=U.forwardRef(({className:e,...t},n)=>(0,Y.jsx)(ae,{ref:n,className:Z(`text-lg font-semibold leading-none tracking-tight`,e),...t}));Xc.displayName=ae.displayName;var Zc=U.forwardRef(({className:e,...t},n)=>(0,Y.jsx)(F,{ref:n,className:Z(`text-sm text-muted-foreground`,e),...t}));Zc.displayName=F.displayName;var Qc=U.forwardRef(({className:e,type:t,...n},r)=>(0,Y.jsx)(`input`,{type:t,className:Z(`flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50`,e),ref:r,...n}));Qc.displayName=`Input`;var $c=Re()((e,t)=>({request:null,open:n=>{t().request?.resolve(!1),e({request:n})},settle:n=>{t().request?.resolve(n),e({request:null})}}));function el(e){return new Promise(t=>{$c.getState().open({...e,resolve:t})})}function tl(){let e=$c(e=>e.request),t=$c(e=>e.settle);return(0,U.useEffect)(()=>{if(!e)return;let t=e=>{e.key===`Enter`&&(e.preventDefault(),$c.getState().settle(!0))};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e]),(0,Y.jsx)(Uc,{open:e!==null,onOpenChange:e=>{e||t(!1)},children:(0,Y.jsxs)(qc,{className:`max-w-md`,children:[(0,Y.jsxs)(Jc,{children:[(0,Y.jsx)(Xc,{children:e?.title}),e?.message&&(0,Y.jsx)(Zc,{children:e.message})]}),(0,Y.jsxs)(Yc,{className:`gap-2`,children:[(0,Y.jsx)($,{variant:`outline`,size:`sm`,onClick:()=>t(!1),children:e?.cancelLabel??`Cancel`}),(0,Y.jsx)($,{variant:e?.danger?`destructive`:`default`,size:`sm`,autoFocus:!0,onClick:()=>t(!0),children:e?.confirmLabel??`Confirm`})]})]})})}var nl=Re()((e,t)=>({request:null,open:n=>{t().request?.resolve(null),e({request:n})},settle:n=>{t().request?.resolve(n),e({request:null})}}));function rl(e){return new Promise(t=>{nl.getState().open({...e,resolve:t})})}function il(){let e=nl(e=>e.request),t=nl(e=>e.settle),[n,r]=(0,U.useState)(``);(0,U.useEffect)(()=>{r(e?.defaultValue??``)},[e]);let i=()=>{let e=n.trim();t(e.length>0?e:null)};return(0,Y.jsx)(Uc,{open:e!==null,onOpenChange:e=>{e||t(null)},children:(0,Y.jsxs)(qc,{className:`max-w-md`,children:[(0,Y.jsxs)(Jc,{children:[(0,Y.jsx)(Xc,{children:e?.title}),e?.message&&(0,Y.jsx)(Zc,{children:e.message})]}),(0,Y.jsx)(Qc,{autoFocus:!0,value:n,placeholder:e?.placeholder,onChange:e=>r(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),i())}}),(0,Y.jsxs)(Yc,{className:`gap-2`,children:[(0,Y.jsx)($,{variant:`outline`,size:`sm`,onClick:()=>t(null),children:e?.cancelLabel??`Cancel`}),(0,Y.jsx)($,{size:`sm`,disabled:n.trim().length===0,onClick:i,children:e?.confirmLabel??`OK`})]})]})})}var al=[{key:`pending`,label:`Pending`,match:[`pending`,`blocked`]},{key:`in_progress`,label:`In Progress`,match:[`in_progress`]},{key:`review`,label:`Review`,match:[`review`]},{key:`failed`,label:`Failed`,match:[`failed`]},{key:`completed`,label:`Done`,match:[`completed`]}],ol={pending:`bg-muted text-muted-foreground`,ready:`bg-[hsl(var(--info)/0.15)] text-[hsl(var(--info))]`,running:`bg-primary/15 text-primary`,paused:`bg-amber-500/15 text-amber-600 dark:text-amber-400`,completed:`bg-[hsl(var(--success)/0.15)] text-[hsl(var(--success))]`,failed:`bg-destructive/15 text-destructive`,skipped:`bg-muted text-muted-foreground`};function sl(){let{client:e}=Vs(),t=Ji(e=>e.phases),[n,r]=(0,U.useState)(`phase`),[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(null),c=(0,U.useMemo)(()=>t.flatMap(e=>(e.tasks??[]).map(t=>({...t,phaseId:e.id}))),[t]),l=(0,U.useMemo)(()=>[...new Set(c.map(e=>e.assignee).filter(e=>!!e))],[c]),u=(0,U.useCallback)(t=>e?.send?.(t),[e]),d=(0,U.useCallback)((e,t)=>u({type:`autophase.taskStatus`,payload:{taskId:e,status:t}}),[u]),f=(0,U.useCallback)(e=>u({type:`autophase.retryTask`,payload:{taskId:e}}),[u]),p=(0,U.useCallback)((e,t)=>u({type:`autophase.assignTask`,payload:{taskId:e,agentName:t||void 0}}),[u]),m=(0,U.useCallback)(e=>{rl({title:`New task`,placeholder:`Task title…`,confirmLabel:`Add task`}).then(t=>{t&&u({type:`autophase.addTask`,payload:{phaseId:e,title:t}})})},[u]),h=(0,U.useCallback)(e=>{i&&u({type:`autophase.moveTask`,payload:{taskId:i,toPhaseId:e}}),a(null),s(null)},[i,u]),g=(0,U.useCallback)(e=>{i&&u({type:`autophase.taskStatus`,payload:{taskId:i,status:e}}),a(null),s(null)},[i,u]),_={onStatusChange:d,onRetry:f,agents:l,onAssign:p};function v(e){return{draggable:!0,onDragStart:t=>{a(e),t.dataTransfer.effectAllowed=`move`},onDragEnd:()=>{a(null),s(null)}}}function y(e,t){return{onDragOver:t=>{t.preventDefault(),t.dataTransfer.dropEffect=`move`,o!==e&&s(e)},onDragLeave:()=>s(t=>t===e?null:t),onDrop:e=>{e.preventDefault(),t()},"data-hover":o===e||void 0}}return t.length===0?(0,Y.jsx)(`div`,{className:`flex h-full items-center justify-center text-muted-foreground`,children:(0,Y.jsx)(`p`,{className:`text-sm`,children:`No phases yet — start an AutoPhase run to populate the board.`})}):(0,Y.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border px-4 py-2`,children:[(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[t.length,` phases · `,c.length,` tasks`]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 rounded-md border border-border p-0.5`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>r(`phase`),className:Z(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors`,n===`phase`?`bg-primary/15 text-primary`:`text-muted-foreground hover:text-foreground`),children:[(0,Y.jsx)(Ir,{className:`h-3.5 w-3.5`}),` Phases`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>r(`status`),className:Z(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs transition-colors`,n===`status`?`bg-primary/15 text-primary`:`text-muted-foreground hover:text-foreground`),children:[(0,Y.jsx)(or,{className:`h-3.5 w-3.5`}),` Status`]})]})]}),n===`phase`?(0,Y.jsx)(`div`,{className:`flex flex-1 gap-3 overflow-x-auto p-3`,children:t.map(e=>{let t=c.filter(t=>t.phaseId===e.id);return(0,Y.jsxs)(`div`,{...y(`phase:${e.id}`,()=>h(e.id)),className:Z(`flex w-80 shrink-0 flex-col rounded-lg border bg-muted/30 transition-colors`,o===`phase:${e.id}`?`border-primary/60 bg-primary/5`:`border-border`),children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2 border-b border-border px-3 py-2`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`truncate text-sm font-semibold`,children:e.name}),(0,Y.jsx)(`span`,{className:Z(`rounded px-1.5 py-0.5 text-[10px] font-medium capitalize`,ol[e.status]),children:e.status})]}),(0,Y.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[e.completedTasks,`/`,e.taskCount,` · `,e.progressPercent,`%`]})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>m(e.id),title:`Add task`,className:`rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,Y.jsx)(Sn,{className:`h-4 w-4`})})]}),(0,Y.jsx)(`div`,{className:`flex-1 space-y-2 overflow-y-auto p-2`,children:t.length===0?(0,Y.jsx)(`p`,{className:`px-1 py-4 text-center text-[11px] text-muted-foreground`,children:`Drop tasks here`}):t.map(e=>(0,Y.jsx)(`div`,{...v(e.id),className:Z(i===e.id&&`opacity-50`),children:(0,Y.jsx)(Vc,{task:e,..._})},e.id))})]},e.id)})}):(0,Y.jsx)(`div`,{className:`flex-1 overflow-auto p-3`,children:(0,Y.jsxs)(`div`,{className:`grid min-w-[900px] gap-2`,style:{gridTemplateColumns:`9rem repeat(${al.length}, minmax(0, 1fr))`},children:[(0,Y.jsx)(`div`,{}),al.map(e=>(0,Y.jsx)(`div`,{className:`px-2 pb-1 text-xs font-semibold uppercase tracking-wider text-muted-foreground`,children:e.label},e.key)),t.map(e=>(0,Y.jsxs)(cl,{children:[(0,Y.jsx)(`div`,{className:`flex items-center pr-2`,children:(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.name}),(0,Y.jsx)(`span`,{className:Z(`mt-0.5 inline-block rounded px-1.5 py-0.5 text-[10px] capitalize`,ol[e.status]),children:e.status})]})}),al.map(t=>{let n=c.filter(n=>n.phaseId===e.id&&t.match.includes(n.status)),r=`cell:${e.id}:${t.key}`;return(0,Y.jsx)(`div`,{...y(r,()=>g(t.key)),className:Z(`min-h-[4rem] space-y-2 rounded-md border p-1.5 transition-colors`,o===r?`border-primary/60 bg-primary/5`:`border-border bg-muted/20`),children:n.map(e=>(0,Y.jsx)(`div`,{...v(e.id),className:Z(i===e.id&&`opacity-50`),children:(0,Y.jsx)(Vc,{task:e,compact:!0,..._})},e.id))},t.key)})]},e.id))]})})]})}function cl({children:e}){return(0,Y.jsx)(Y.Fragment,{children:e})}var ll=[`#3b82f6`,`#06b6d4`,`#22c55e`,`#eab308`,`#f97316`,`#a855f7`,`#ec4899`],ul=e=>e.replace(/^wstack\/ap\//,``);function dl(e){return[...e].sort((e,t)=>e.allocatedAt-t.allocatedAt).map((e,t)=>({handle:e,color:ll[t%ll.length],y:60+t*48}))}var fl={allocating:{dash:`4 4`,opacity:.4},active:{dash:`4 4`,opacity:.6},committing:{dash:`4 4`,opacity:.8},merging:{dash:`0`,opacity:.9},merged:{dash:`0`,opacity:1},"needs-review":{dash:`2 3`,opacity:.9},failed:{dash:`2 3`,opacity:.6}};function pl({worktrees:e,baseBranch:t}){let n=dl(e),r=Math.max(120,60+n.length*48+20);return(0,Y.jsx)(`div`,{className:`overflow-x-auto rounded-lg border border-[--color-border-dark] bg-[--color-card-dark]/40 p-3`,children:(0,Y.jsxs)(`svg`,{width:`100%`,height:r,viewBox:`0 0 600 ${r}`,className:`min-w-[420px]`,role:`img`,"aria-label":`Worktree branch graph off ${t||`HEAD`}`,children:[(0,Y.jsx)(`title`,{children:`Worktree branch graph off ${t||`HEAD`}`}),(0,Y.jsx)(`line`,{x1:40,y1:20,x2:40,y2:r-10,stroke:`#F93951`,strokeWidth:3}),(0,Y.jsx)(`text`,{x:36,y:14,fontSize:11,fill:`#9ca3af`,children:t||`HEAD`}),(0,Y.jsx)(`circle`,{cx:40,cy:20,r:5,fill:`#F93951`}),n.map(e=>{let n=fl[e.handle.status]??Rr(fl.active),r=e.handle.status===`merged`,i=e.handle.status===`needs-review`||e.handle.status===`failed`;return(0,Y.jsxs)(`g`,{className:`transition-all duration-500`,children:[(0,Y.jsx)(`path`,{d:`M 40 ${e.y-24} C 100 ${e.y-24}, 160 ${e.y}, 220 ${e.y}`,fill:`none`,stroke:e.color,strokeWidth:2,strokeDasharray:n.dash,opacity:n.opacity}),r?(0,Y.jsx)(`path`,{d:`M 220 ${e.y} C 160 ${e.y+20}, 100 ${e.y+24}, 40 ${e.y+24}`,fill:`none`,stroke:`#34d399`,strokeWidth:2,opacity:.9}):null,(0,Y.jsx)(`circle`,{cx:220,cy:e.y,r:5,fill:i?`#e879f9`:e.color}),(0,Y.jsx)(`text`,{x:232,y:e.y-6,fontSize:12,fill:`#e5e7eb`,fontFamily:`monospace`,children:ul(e.handle.branch)}),(0,Y.jsx)(`text`,{x:232,y:e.y+10,fontSize:10,fill:`#9ca3af`,children:i?`⚠ ${e.handle.status}`:r?`✓ merged → ${t}`:`+${e.handle.insertions}/-${e.handle.deletions} · ${e.handle.ownerLabel}`})]},e.handle.handleId)})]})})}var ml={allocating:{icon:`○`,label:`allocating`,tint:`border-zinc-400/40`,dot:`bg-zinc-400`},active:{icon:`●`,label:`active`,tint:`border-amber-400/40`,dot:`bg-amber-400 animate-pulse`},committing:{icon:`◐`,label:`committing`,tint:`border-cyan-400/40`,dot:`bg-cyan-400 animate-pulse`},merging:{icon:`⇡`,label:`merging`,tint:`border-blue-400/40`,dot:`bg-blue-400 animate-pulse`},merged:{icon:`✓`,label:`merged`,tint:`border-emerald-400/40`,dot:`bg-emerald-400`},"needs-review":{icon:`⚠`,label:`conflict`,tint:`border-fuchsia-400/50`,dot:`bg-fuchsia-400`},failed:{icon:`✗`,label:`failed`,tint:`border-rose-400/50`,dot:`bg-rose-400`}};function hl(e){return ml[e]??{icon:`?`,label:e,tint:`border-border`,dot:`bg-muted-foreground`}}var gl=e=>e.replace(/^wstack\/ap\//,``);function _l({worktrees:e,baseBranch:t}){if(e.length===0)return null;let n=[...e].sort((e,t)=>e.allocatedAt-t.allocatedAt);return(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-card/50 backdrop-blur-sm px-3 py-3`,children:[(0,Y.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,Y.jsx)(`span`,{className:`font-semibold tracking-wide uppercase text-[10px]`,children:`Worktrees`}),(0,Y.jsx)(`span`,{className:`opacity-60`,children:`· base`}),(0,Y.jsx)(`code`,{className:`font-mono text-primary`,children:t||`HEAD`}),(0,Y.jsxs)(`span`,{className:`opacity-60`,children:[`· `,n.length,` isolated`]})]}),(0,Y.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:n.map(e=>{let t=hl(e.status),n=e.status===`needs-review`,r=Math.min(100,e.insertions+e.deletions);return(0,Y.jsxs)(`div`,{className:Z(`group relative flex items-center gap-3 rounded-lg border px-3 py-2 transition-all duration-500`,`bg-background/60 hover:bg-accent/20`,t.tint),children:[(0,Y.jsx)(`span`,{className:Z(`h-2.5 w-2.5 shrink-0 rounded-full`,t.dot),"aria-hidden":!0}),(0,Y.jsx)(`code`,{className:`w-44 shrink-0 truncate font-mono text-sm`,children:gl(e.branch)}),(0,Y.jsxs)(`span`,{className:`shrink-0 rounded bg-muted px-2 py-0.5 text-xs text-muted-foreground`,children:[`⟵ `,e.ownerLabel]}),n?(0,Y.jsx)(`span`,{className:`font-mono text-xs font-bold text-fuchsia-400`,children:`CONFLICT`}):(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 font-mono text-xs transition-all duration-500`,children:[(0,Y.jsxs)(`span`,{className:`text-emerald-500`,children:[`+`,e.insertions]}),(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`·`}),(0,Y.jsxs)(`span`,{className:`text-rose-500`,children:[`-`,e.deletions]}),(0,Y.jsxs)(`span`,{className:`ml-1 text-muted-foreground`,children:[e.files,`f`]})]}),(0,Y.jsx)(`div`,{className:`ml-auto hidden h-1 w-24 overflow-hidden rounded-full bg-muted sm:block`,children:(0,Y.jsx)(`div`,{className:`h-full bg-gradient-to-r from-emerald-500 to-rose-500 transition-all duration-700`,style:{width:`${r}%`}})}),(0,Y.jsx)(`span`,{className:`w-20 shrink-0 text-right text-xs text-muted-foreground`,children:t.label}),e.recentActivity.length>0?(0,Y.jsxs)(`span`,{className:`absolute -bottom-2 left-9 max-w-[60%] truncate rounded bg-muted px-1.5 text-[10px] text-muted-foreground opacity-0 transition-opacity duration-300 group-hover:opacity-100`,children:[e.recentActivity[e.recentActivity.length-1]?.kind,`: `,e.recentActivity[e.recentActivity.length-1]?.text]}):null]},e.handleId)})})]})}var vl=e=>e?e.replace(/^wstack\/ap\//,``):``;function yl(){let{client:e}=Vs(),t=Di(e=>e.orphans),n=Di(e=>e.canClean),r=Di(e=>e.cleanBlockedReason),i=Di(e=>e.cleanResult),[a,o]=(0,U.useState)(!1);return(0,U.useEffect)(()=>{e?.send?.({type:`worktree.scan`})},[e]),(0,U.useEffect)(()=>{i&&o(!1)},[i]),t.length===0&&!i?null:(0,Y.jsxs)(`div`,{className:`rounded-md border border-amber-500/30 bg-amber-500/5 px-3 py-2 text-xs`,children:[t.length>0?(0,Y.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,Y.jsx)(E,{className:`mt-0.5 h-4 w-4 shrink-0 text-amber-500`}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`font-medium text-amber-700 dark:text-amber-300`,children:[t.length,` orphaned worktree`,t.length===1?``:`s`,` from previous runs`]}),(0,Y.jsxs)(`div`,{className:`mt-0.5 max-h-16 overflow-auto font-mono text-[10px] text-muted-foreground`,children:[t.slice(0,8).map((e,t)=>(0,Y.jsxs)(`div`,{className:`truncate`,children:[e.kind===`branch`?`⌥ `:`▢ `,vl(e.branch)||e.dir]},`${e.kind}-${e.branch??e.dir??t}`)),t.length>8&&(0,Y.jsxs)(`div`,{children:[`…and `,t.length-8,` more`]})]})]}),(0,Y.jsxs)(`button`,{type:`button`,disabled:!n||a,onClick:async()=>{let n=t.length;await el({title:`Clean ${n} orphaned worktree${n===1?``:`s`}?`,message:`Force-removes every leftover git worktree + wstack/ap branch from previous runs. Un-merged work in them is discarded.`,confirmLabel:`Clean orphans`,danger:!0})&&(o(!0),e?.send?.({type:`worktree.cleanup`}))},title:n?`Force-remove all orphaned worktrees + branches`:r,className:`inline-flex shrink-0 items-center gap-1 rounded bg-amber-600/90 px-2 py-1 font-medium text-white hover:bg-amber-700 disabled:cursor-not-allowed disabled:opacity-50`,children:[a?(0,Y.jsx)(O,{className:`h-3.5 w-3.5 animate-spin`}):(0,Y.jsx)(Ce,{className:`h-3.5 w-3.5`}),`Clean orphans`]})]}):null,i&&(0,Y.jsx)(`div`,{className:i.ok?`mt-1 text-emerald-600 dark:text-emerald-400`:`mt-1 text-rose-500`,children:i.ok?`✓ Removed ${i.removed} orphaned worktree${i.removed===1?``:`s`}.`:`✗ ${i.reason??`cleanup failed`}`})]})}function bl({onClose:e}){let{client:t}=Vs(),n=Ji(e=>e.phases),r=Ji(e=>e.overallPercent),i=Ji(e=>e.autonomous),a=Ji(e=>e.title),o=Ji(e=>e.goal),s=Ji(e=>e.status),c=Ji(e=>e.lastError),l=Ji(e=>e.graphs);(0,U.useEffect)(()=>{t?.send?.({type:`autophase.list`})},[t]);let u=Di(e=>e.worktrees),d=Di(e=>e.baseBranch),[f,p]=(0,U.useState)(``),[m,h]=(0,U.useState)(null),[g,_]=(0,U.useState)(!1),[v,y]=(0,U.useState)(!0),b=n.length>0,x=m!=null&&!b;(0,U.useEffect)(()=>{b&&h(null)},[b]);let S=(0,U.useCallback)(()=>{let e=f.trim();if(!e||m!=null)return;let n=G.getState();n.addMessage({role:`user`,content:e}),n.addMessage({role:`assistant`,content:`🚀 **AutoPhase** — got it. Planning phases for your goal now…`}),h(e),p(``),t?.send?.({type:`autophase.start`,payload:{title:e,autonomous:!0,worktrees:v}})},[f,m,t,v]),C=(0,U.useCallback)(()=>{t?.send?.({type:`autophase.stop`,payload:{}}),h(null)},[t]),w=(0,U.useCallback)(()=>{t?.send?.({type:`autophase.toggleAutonomous`,payload:{}})},[t]),T=(0,U.useCallback)(()=>{t?.send?.(s===`paused`?{type:`autophase.resume`,payload:{}}:{type:`autophase.pause`,payload:{}})},[t,s]),E=(0,U.useCallback)(()=>{t?.send?.({type:`autophase.stop`,payload:{}})},[t]),D=(0,U.useCallback)(()=>{t?.send?.({type:`autophase.clear`,payload:{}}),Ji.getState().clear(),h(null),p(``)},[t]),[k,A]=(0,U.useState)(!1),j=(0,U.useCallback)(()=>{t?.send?.({type:`autophase.revert`,payload:{}}),A(!1)},[t]),M=s===`running`||s===`paused`,N=s===`stopped`||s===`completed`||s===`failed`,P=(0,U.useCallback)(e=>{e&&t?.send?.({type:`autophase.load`,payload:{graphId:e}})},[t]);return(0,Y.jsxs)(`div`,{className:`flex flex-col h-full bg-background`,children:[(0,Y.jsxs)(`header`,{className:`flex items-center justify-between px-4 py-2 border-b bg-card shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(qe,{className:`h-5 w-5 text-muted-foreground`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h1`,{className:`text-lg font-semibold`,children:b&&a||`AutoPhase`}),b&&(0,Y.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[n.length,` phase`,n.length===1?``:`s`,` · `,r,`% complete`]})]}),b&&(0,Y.jsx)(`span`,{className:Z(`rounded border px-2 py-0.5 text-[11px] font-medium capitalize`,s===`failed`?`border-destructive/40 bg-destructive/10 text-destructive`:s===`paused`||s===`stopped`?`border-amber-500/40 bg-amber-500/10 text-amber-700 dark:text-amber-300`:s===`completed`?`border-green-500/40 bg-green-500/10 text-green-700 dark:text-green-300`:`border-primary/30 bg-primary/10 text-primary`),title:c??void 0,children:s})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[l.length>0&&(0,Y.jsxs)(`select`,{value:b?l.find(e=>e.title===a)?.id??``:``,onChange:e=>P(e.target.value),title:`Switch board`,className:`rounded border border-border bg-card px-2 py-1 text-xs text-foreground`,children:[(0,Y.jsxs)(`option`,{value:``,disabled:!0,children:[l.length,` board`,l.length===1?``:`s`,`…`]}),l.map(e=>(0,Y.jsxs)(`option`,{value:e.id,children:[e.title,` · `,e.status]},e.id))]}),b&&(0,Y.jsxs)(`button`,{type:`button`,onClick:w,title:`Toggle autonomous mode`,className:Z(`inline-flex items-center gap-1 rounded border px-2 py-1 text-xs transition-colors`,i?`border-primary/30 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:text-foreground`),children:[(0,Y.jsx)(Yt,{className:`h-3.5 w-3.5`}),` `,i?`Autonomous`:`Manual`]}),M&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:T,title:s===`paused`?`Resume the run`:`Pause the run`,className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-xs text-muted-foreground transition-colors hover:text-foreground`,children:[s===`paused`?(0,Y.jsx)(dr,{className:`h-3.5 w-3.5`}):(0,Y.jsx)(rn,{className:`h-3.5 w-3.5`}),s===`paused`?`Resume`:`Pause`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:E,title:`Stop the run — aborts in-flight agents immediately`,className:`inline-flex items-center gap-1 rounded border border-destructive/40 bg-destructive/10 px-2 py-1 text-xs font-medium text-destructive transition-colors hover:bg-destructive/20`,children:[(0,Y.jsx)(Ie,{className:`h-3.5 w-3.5 fill-current`}),` Stop`]})]}),b&&N&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:D,title:`Clear this board and start a new AutoPhase run`,className:`inline-flex items-center gap-1 rounded border border-primary/30 bg-primary/10 px-2 py-1 text-xs font-medium text-primary transition-colors hover:bg-primary/20`,children:[(0,Y.jsx)(Sn,{className:`h-3.5 w-3.5`}),` New`]}),k?(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border border-amber-500/40 bg-amber-500/10 px-1.5 py-0.5 text-xs`,children:[(0,Y.jsx)(`span`,{className:`text-amber-700 dark:text-amber-300`,children:`Revert run's commits?`}),(0,Y.jsx)(`button`,{type:`button`,onClick:j,className:`rounded bg-destructive/15 px-1.5 py-0.5 font-medium text-destructive hover:bg-destructive/25`,children:`Yes`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>A(!1),className:`rounded px-1.5 py-0.5 text-muted-foreground hover:text-foreground`,children:`No`})]}):(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>A(!0),title:`Undo this run — git-revert the commits it landed and remove its worktrees`,className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-xs text-muted-foreground transition-colors hover:text-foreground`,children:[(0,Y.jsx)(Ge,{className:`h-3.5 w-3.5`}),` Revert`]})]}),(0,Y.jsx)($,{variant:`ghost`,size:`icon`,onClick:e,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]})]}),b&&o&&(0,Y.jsxs)(`div`,{className:`shrink-0 border-b border-border/60 bg-muted/20 px-4 py-2.5`,children:[(0,Y.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[(0,Y.jsx)(ln,{className:`h-3 w-3`}),` Goal`]}),(0,Y.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:o})]}),b?(0,Y.jsx)(`div`,{className:`flex min-h-0 flex-1`,children:(0,Y.jsx)(sl,{})}):x?(0,Y.jsx)(`div`,{className:`flex-1 flex items-center justify-center p-8`,children:(0,Y.jsxs)(`div`,{className:`max-w-lg w-full space-y-5 text-center`,children:[(0,Y.jsx)(O,{className:`h-10 w-10 mx-auto animate-spin text-primary/70`}),(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(`h2`,{className:`text-xl font-semibold`,children:`Planning phases…`}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Your goal was received. WrongStack is breaking it into phases and tasks — the board appears here the moment the plan is ready.`})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border border-border bg-card px-4 py-3 text-left`,children:[(0,Y.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[(0,Y.jsx)(ln,{className:`h-3 w-3`}),` Goal`]}),(0,Y.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:m})]}),(0,Y.jsxs)($,{variant:`outline`,onClick:C,className:`gap-2`,children:[(0,Y.jsx)(Ie,{className:`h-4 w-4 fill-current`}),` Cancel`]})]})}):(0,Y.jsx)(`div`,{className:`flex-1 flex items-center justify-center p-8`,children:(0,Y.jsxs)(`div`,{className:`max-w-lg w-full space-y-6`,children:[(0,Y.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,Y.jsx)(ln,{className:`h-10 w-10 mx-auto text-primary/60`}),(0,Y.jsx)(`h2`,{className:`text-xl font-semibold`,children:`Start a Phase Plan`}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Describe what you want to build. WrongStack will plan phases and tasks, then execute them — watch and steer the run on the board.`})]}),(0,Y.jsx)(`textarea`,{value:f,onChange:e=>p(e.target.value),placeholder:`e.g. Build a REST API for user management with Express and SQLite...`,rows:5,className:`w-full rounded-lg border border-border bg-card px-4 py-3 text-sm resize-none focus:outline-none focus:ring-2 focus:ring-primary/30 placeholder:text-muted-foreground/50`,onKeyDown:e=>{e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),S())}}),(0,Y.jsxs)(`label`,{className:`flex cursor-pointer items-center justify-center gap-2 text-xs text-muted-foreground`,children:[(0,Y.jsx)(`input`,{type:`checkbox`,checked:v,onChange:e=>y(e.target.checked),className:`h-3.5 w-3.5 accent-primary`}),`Isolate each phase in its own git worktree`]}),(0,Y.jsx)(`div`,{className:`flex items-center gap-3`,children:(0,Y.jsxs)($,{onClick:S,disabled:!f.trim(),className:`flex-1 gap-2`,children:[(0,Y.jsx)(dr,{className:`h-4 w-4`}),`Start AutoPhase`]})}),(0,Y.jsxs)(`p`,{className:`text-xs text-muted-foreground text-center`,children:[`Ctrl+Enter to start ·`,` `,v?`phases run in isolated worktrees, squash-merged back`:`phases run directly on the current branch`]})]})}),u.length>0&&(0,Y.jsxs)(`div`,{className:`border-t bg-card/50 shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-end gap-2 px-4 pt-2 text-xs`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>_(!1),className:Z(`rounded px-2 py-0.5 border transition-colors`,g?`border-border text-muted-foreground hover:text-foreground`:`bg-primary/10 border-primary/30 text-primary`),children:`Lanes`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>_(!0),className:Z(`rounded px-2 py-0.5 border transition-colors`,g?`bg-primary/10 border-primary/30 text-primary`:`border-border text-muted-foreground hover:text-foreground`),children:`Graph`})]}),(0,Y.jsxs)(`div`,{className:`space-y-2 px-4 pb-3`,children:[(0,Y.jsx)(yl,{}),g?(0,Y.jsx)(pl,{worktrees:u,baseBranch:d}):(0,Y.jsx)(_l,{worktrees:u,baseBranch:d})]})]})]})}var xl=(0,U.memo)(function({oldText:e,newText:t,caption:n,fill:r}){let i=(0,U.useMemo)(()=>Cl(e,t),[e,t]);if(i===null)return(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground italic px-3 py-2`,children:`Diff omitted (file too large to render inline).`});let a=i.filter(e=>e.kind===`add`).length,o=i.filter(e=>e.kind===`del`).length;return(0,Y.jsxs)(`div`,{className:Z(`rounded-lg border bg-background/40 overflow-hidden text-xs`,r&&`flex flex-col h-full`),children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-1.5 border-b bg-muted/40 shrink-0`,children:[(0,Y.jsx)(`span`,{className:`font-mono text-muted-foreground truncate`,children:n??`diff`}),(0,Y.jsxs)(`span`,{className:`font-mono shrink-0`,children:[(0,Y.jsxs)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:[`+`,a]}),(0,Y.jsx)(`span`,{className:`text-muted-foreground mx-1 opacity-50`,children:`·`}),(0,Y.jsxs)(`span`,{className:`text-rose-600 dark:text-rose-400`,children:[`-`,o]})]})]}),(0,Y.jsx)(`div`,{className:Z(`font-mono leading-relaxed overflow-auto`,r?`flex-1`:`max-h-96`),children:i.map((e,t)=>(0,Y.jsxs)(`div`,{className:Z(`flex`,e.kind===`add`&&`bg-emerald-500/10`,e.kind===`del`&&`bg-rose-500/10`),children:[(0,Y.jsx)(`span`,{className:Z(`w-6 shrink-0 text-center select-none`,e.kind===`add`&&`text-emerald-600 dark:text-emerald-400`,e.kind===`del`&&`text-rose-600 dark:text-rose-400`,e.kind===`ctx`&&`text-muted-foreground/40`),children:e.kind===`add`?`+`:e.kind===`del`?`-`:` `}),(0,Y.jsx)(`pre`,{className:Z(`whitespace-pre-wrap break-all flex-1 px-2`,e.kind===`ctx`&&`text-muted-foreground/70`),children:e.text||`\xA0`})]},t))})]})}),Sl=5e3;function Cl(e,t){let n=e.split(`
34
+ `),r=t.split(`
35
+ `);if(n.length>Sl||r.length>Sl)return null;let i=n.length,a=r.length,o=Array.from({length:i+1},()=>Array(a+1).fill(0));for(let e=i-1;e>=0;e--)for(let t=a-1;t>=0;t--)n[e]===r[t]?Rr(o[e])[t]=Rr(o[e+1]?.[t+1])+1:Rr(o[e])[t]=Math.max(Rr(o[e+1]?.[t]),Rr(o[e]?.[t+1]));let s=[],c=0,l=0;for(;c<i&&l<a;)n[c]===r[l]?(s.push({kind:`ctx`,text:Rr(n[c])}),c++,l++):Rr(o[c+1]?.[l])>=Rr(o[c]?.[l+1])?(s.push({kind:`del`,text:Rr(n[c])}),c++):(s.push({kind:`add`,text:Rr(r[l])}),l++);for(;c<i;)s.push({kind:`del`,text:Rr(n[c++])});for(;l<a;)s.push({kind:`add`,text:Rr(r[l++])});return s}function wl(e,t){if(!e||typeof t!=`object`||!t)return null;let n=t,r=String(n.file_path??n.path??``);switch(e){case`edit`:case`str_replace`:case`edit_file`:{let e=typeof n.old_string==`string`?n.old_string:``,t=typeof n.new_string==`string`?n.new_string:``;return!e&&!t?null:{oldText:e,newText:t,caption:`edit ${r}`}}case`write`:case`write_file`:case`create_file`:return{oldText:``,newText:typeof n.content==`string`?n.content:``,caption:`write ${r} (new)`};default:return null}}D.defineTheme(`wrongstack-dark`,{base:`vs-dark`,inherit:!0,rules:[{token:`comment`,foreground:`6e717a`,fontStyle:`italic`},{token:`comment.line`,foreground:`6e717a`,fontStyle:`italic`},{token:`comment.block`,foreground:`6e717a`,fontStyle:`italic`},{token:`comment.documentation`,foreground:`6e717a`,fontStyle:`italic`},{token:`string`,foreground:`64d488`},{token:`string.escape`,foreground:`49d3c5`},{token:`string.template`,foreground:`64d488`},{token:`number`,foreground:`f2a23a`},{token:`number.hex`,foreground:`f2a23a`},{token:`number.float`,foreground:`f2a23a`},{token:`keyword`,foreground:`f28dbc`},{token:`keyword.control`,foreground:`f28dbc`},{token:`keyword.operator`,foreground:`9ea0a8`},{token:`type`,foreground:`6cb6ff`},{token:`type.identifier`,foreground:`6cb6ff`},{token:`type.parameter`,foreground:`eeede7`},{token:`function`,foreground:`6cb6ff`},{token:`predefined`,foreground:`6cb6ff`},{token:`variable`,foreground:`eeede7`},{token:`variable.parameter`,foreground:`f2a23a`},{token:`variable.readonly`,foreground:`f2a23a`},{token:`variable.language`,foreground:`f28dbc`},{token:`tag`,foreground:`f47a95`},{token:`metatag`,foreground:`f47a95`},{token:`tag.html`,foreground:`f47a95`},{token:`tag.jsx`,foreground:`f47a95`},{token:`tag.tsx`,foreground:`f47a95`},{token:`attribute.name`,foreground:`ffb055`},{token:`attribute.value`,foreground:`64d488`},{token:`attribute.name.html`,foreground:`ffb055`},{token:`attribute.name.jsx`,foreground:`ffb055`},{token:`regexp`,foreground:`49d3c5`},{token:`delimiter`,foreground:`9ea0a8`},{token:`delimiter.bracket`,foreground:`9ea0a8`},{token:`delimiter.parenthesis`,foreground:`9ea0a8`},{token:`delimiter.curly`,foreground:`9ea0a8`},{token:`delimiter.square`,foreground:`9ea0a8`},{token:`delimiter.array`,foreground:`9ea0a8`},{token:`operator`,foreground:`9ea0a8`},{token:`constant`,foreground:`f2a23a`},{token:`constant.language`,foreground:`f28dbc`},{token:`support`,foreground:`6cb6ff`},{token:`support.function`,foreground:`6cb6ff`},{token:`support.type`,foreground:`6cb6ff`},{token:`support.constant`,foreground:`f2a23a`},{token:`support.variable`,foreground:`eeede7`},{token:`storage`,foreground:`f28dbc`},{token:`storage.modifier`,foreground:`f28dbc`},{token:`storage.type`,foreground:`6cb6ff`},{token:`entity.name.type`,foreground:`6cb6ff`},{token:`entity.name.function`,foreground:`6cb6ff`},{token:`entity.other.inherited-class`,foreground:`6cb6ff`},{token:`entity.name.tag`,foreground:`f47a95`},{token:`entity.other.attribute-name`,foreground:`ffb055`},{token:`invalid`,foreground:`d63c3c`},{token:`invalid.deprecated`,foreground:`d63c3c`},{token:`emphasis`,fontStyle:`italic`},{token:`strong`,fontStyle:`bold`},{token:`header`,foreground:`6cb6ff`,fontStyle:`bold`},{token:`link`,foreground:`49d3c5`,fontStyle:`underline`},{token:`class`,foreground:`6cb6ff`},{token:`interface`,foreground:`49d3c5`},{token:`enum`,foreground:`f2a23a`},{token:`enumMember`,foreground:`f2a23a`},{token:`typeParameter`,foreground:`f2a23a`},{token:`namespace`,foreground:`6cb6ff`},{token:`method`,foreground:`6cb6ff`},{token:`property`,foreground:`eeede7`},{token:`property.readonly`,foreground:`f2a23a`},{token:`property.static`,foreground:`eeede7`},{token:`parameter`,foreground:`f2a23a`},{token:`variable.defaultLibrary`,foreground:`6cb6ff`},{token:`function.defaultLibrary`,foreground:`6cb6ff`},{token:`macro`,foreground:`c4a0ff`},{token:`decorator`,foreground:`c4a0ff`},{token:`label`,foreground:`f2a23a`},{token:`comment.deprecated`,foreground:`6e717a`,fontStyle:`italic strikethrough`},{token:`variable.deprecated`,foreground:`6e717a`,fontStyle:`strikethrough`}],colors:{"editor.background":`#121318`,"editor.foreground":`#eeede7`,"editorCursor.foreground":`#f2a23a`,"editor.selectionBackground":`#f2a23a25`,"editor.selectionHighlightBackground":`#f2a23a15`,"editor.inactiveSelectionBackground":`#f2a23a10`,"editor.lineHighlightBackground":`#1a1c23`,"editorLineNumber.foreground":`#4a4d55`,"editorLineNumber.activeForeground":`#9ea0a8`,"editorRuler.foreground":`#1e2028`,"editorBracketMatch.background":`#f2a23a15`,"editorBracketMatch.border":`#f2a23a30`,"editor.findMatchBackground":`#f2a23a30`,"editor.findMatchHighlightBackground":`#f2a23a15`,"editorWidget.background":`#1a1c23`,"editorWidget.border":`#262830`,"editorSuggestWidget.background":`#1a1c23`,"editorSuggestWidget.border":`#262830`,"editorSuggestWidget.selectedBackground":`#262830`,"editorHoverWidget.background":`#1a1c23`,"editorHoverWidget.border":`#262830`,"scrollbar.shadow":`#00000000`,"scrollbarSlider.background":`#4a4d5530`,"scrollbarSlider.hoverBackground":`#f2a23a50`,"scrollbarSlider.activeBackground":`#f2a23a70`,"minimap.background":`#121318`,"diffEditor.insertedTextBackground":`#64d48815`,"diffEditor.removedTextBackground":`#d63c3c15`,"sideBar.background":`#121318`,"sideBar.border":`#1e2028`,"input.background":`#1a1c23`,"input.border":`#262830`,"input.foreground":`#eeede7`,"input.placeholderForeground":`#6e717a`,focusBorder:`#f2a23a40`,"list.activeSelectionBackground":`#262830`,"list.hoverBackground":`#1e2028`,"dropdown.background":`#1a1c23`,"dropdown.border":`#262830`,"badge.background":`#f2a23a`,"badge.foreground":`#1a1208`,"editorBracketHighlighting.foreground1":`#f2a23a`,"editorBracketHighlighting.foreground2":`#6cb6ff`,"editorBracketHighlighting.foreground3":`#f28dbc`,"editorBracketHighlighting.foreground4":`#64d488`,"editorBracketHighlighting.foreground5":`#49d3c5`,"editorBracketHighlighting.foreground6":`#c4a0ff`,"editorBracketPairGuide.background1":`#f2a23a18`,"editorBracketPairGuide.background2":`#6cb6ff18`,"editorBracketPairGuide.background3":`#f28dbc18`,"editorBracketPairGuide.background4":`#64d48818`,"editorBracketPairGuide.background5":`#49d3c518`,"editorBracketPairGuide.background6":`#c4a0ff18`,"editorBracketPairGuide.activeBackground1":`#f2a23a30`,"editorBracketPairGuide.activeBackground2":`#6cb6ff30`,"editorBracketPairGuide.activeBackground3":`#f28dbc30`,"editorBracketPairGuide.activeBackground4":`#64d48830`,"editorBracketPairGuide.activeBackground5":`#49d3c530`,"editorBracketPairGuide.activeBackground6":`#c4a0ff30`}}),D.defineTheme(`wrongstack-light`,{base:`vs`,inherit:!0,rules:[{token:`comment`,foreground:`9a9d99`,fontStyle:`italic`},{token:`comment.line`,foreground:`9a9d99`,fontStyle:`italic`},{token:`comment.block`,foreground:`9a9d99`,fontStyle:`italic`},{token:`comment.documentation`,foreground:`9a9d99`,fontStyle:`italic`},{token:`string`,foreground:`3b8c5a`},{token:`string.escape`,foreground:`17998e`},{token:`string.template`,foreground:`3b8c5a`},{token:`number`,foreground:`d97a12`},{token:`number.hex`,foreground:`d97a12`},{token:`number.float`,foreground:`d97a12`},{token:`keyword`,foreground:`d65a9a`},{token:`keyword.control`,foreground:`d65a9a`},{token:`keyword.operator`,foreground:`6b6d72`},{token:`type`,foreground:`3178c6`},{token:`type.identifier`,foreground:`3178c6`},{token:`type.parameter`,foreground:`1a1c23`},{token:`function`,foreground:`3178c6`},{token:`predefined`,foreground:`3178c6`},{token:`variable`,foreground:`1a1c23`},{token:`variable.parameter`,foreground:`d97a12`},{token:`variable.readonly`,foreground:`d97a12`},{token:`variable.language`,foreground:`d65a9a`},{token:`tag`,foreground:`c93a5e`},{token:`metatag`,foreground:`c93a5e`},{token:`tag.html`,foreground:`c93a5e`},{token:`tag.jsx`,foreground:`c93a5e`},{token:`tag.tsx`,foreground:`c93a5e`},{token:`attribute.name`,foreground:`d4893a`},{token:`attribute.value`,foreground:`3b8c5a`},{token:`attribute.name.html`,foreground:`d4893a`},{token:`attribute.name.jsx`,foreground:`d4893a`},{token:`regexp`,foreground:`17998e`},{token:`delimiter`,foreground:`6b6d72`},{token:`delimiter.bracket`,foreground:`6b6d72`},{token:`delimiter.parenthesis`,foreground:`6b6d72`},{token:`delimiter.curly`,foreground:`6b6d72`},{token:`delimiter.square`,foreground:`6b6d72`},{token:`delimiter.array`,foreground:`6b6d72`},{token:`operator`,foreground:`6b6d72`},{token:`constant`,foreground:`d97a12`},{token:`constant.language`,foreground:`d65a9a`},{token:`support`,foreground:`3178c6`},{token:`support.function`,foreground:`3178c6`},{token:`support.type`,foreground:`3178c6`},{token:`support.constant`,foreground:`d97a12`},{token:`support.variable`,foreground:`1a1c23`},{token:`storage`,foreground:`d65a9a`},{token:`storage.modifier`,foreground:`d65a9a`},{token:`storage.type`,foreground:`3178c6`},{token:`entity.name.type`,foreground:`3178c6`},{token:`entity.name.function`,foreground:`3178c6`},{token:`entity.other.inherited-class`,foreground:`3178c6`},{token:`entity.name.tag`,foreground:`c93a5e`},{token:`entity.other.attribute-name`,foreground:`d4893a`},{token:`invalid`,foreground:`d63c3c`},{token:`invalid.deprecated`,foreground:`d63c3c`},{token:`emphasis`,fontStyle:`italic`},{token:`strong`,fontStyle:`bold`},{token:`header`,foreground:`3178c6`,fontStyle:`bold`},{token:`link`,foreground:`17998e`,fontStyle:`underline`},{token:`class`,foreground:`3178c6`},{token:`interface`,foreground:`17998e`},{token:`enum`,foreground:`d97a12`},{token:`enumMember`,foreground:`d97a12`},{token:`typeParameter`,foreground:`d97a12`},{token:`namespace`,foreground:`3178c6`},{token:`method`,foreground:`3178c6`},{token:`property`,foreground:`1a1c23`},{token:`property.readonly`,foreground:`d97a12`},{token:`property.static`,foreground:`1a1c23`},{token:`parameter`,foreground:`d97a12`},{token:`variable.defaultLibrary`,foreground:`3178c6`},{token:`function.defaultLibrary`,foreground:`3178c6`},{token:`macro`,foreground:`8b5cf6`},{token:`decorator`,foreground:`8b5cf6`},{token:`label`,foreground:`d97a12`},{token:`comment.deprecated`,foreground:`9a9d99`,fontStyle:`italic strikethrough`},{token:`variable.deprecated`,foreground:`9a9d99`,fontStyle:`strikethrough`}],colors:{"editor.background":`#f7f7f5`,"editor.foreground":`#1a1c23`,"editorCursor.foreground":`#e07b0e`,"editor.selectionBackground":`#e07b0e18`,"editor.selectionHighlightBackground":`#e07b0e10`,"editor.inactiveSelectionBackground":`#e07b0e08`,"editor.lineHighlightBackground":`#f0efe9`,"editorLineNumber.foreground":`#bab8b0`,"editorLineNumber.activeForeground":`#6b6d72`,"editorRuler.foreground":`#e8e6de`,"editorBracketMatch.background":`#e07b0e12`,"editorBracketMatch.border":`#e07b0e25`,"editor.findMatchBackground":`#e07b0e25`,"editor.findMatchHighlightBackground":`#e07b0e12`,"editorWidget.background":`#f7f7f5`,"editorWidget.border":`#ddd9d0`,"editorSuggestWidget.background":`#f7f7f5`,"editorSuggestWidget.border":`#ddd9d0`,"editorSuggestWidget.selectedBackground":`#eeece2`,"editorHoverWidget.background":`#f7f7f5`,"editorHoverWidget.border":`#ddd9d0`,"scrollbar.shadow":`#00000000`,"scrollbarSlider.background":`#bab8b040`,"scrollbarSlider.hoverBackground":`#e07b0e50`,"scrollbarSlider.activeBackground":`#e07b0e70`,"minimap.background":`#f7f7f5`,"diffEditor.insertedTextBackground":`#3b8c5a12`,"diffEditor.removedTextBackground":`#d63c3c12`,"sideBar.background":`#f7f7f5`,"sideBar.border":`#e8e6de`,"input.background":`#ffffff`,"input.border":`#ddd9d0`,"input.foreground":`#1a1c23`,"input.placeholderForeground":`#9a9d99`,focusBorder:`#e07b0e35`,"list.activeSelectionBackground":`#eeece2`,"list.hoverBackground":`#f0efe9`,"dropdown.background":`#ffffff`,"dropdown.border":`#ddd9d0`,"badge.background":`#e07b0e`,"badge.foreground":`#ffffff`,"editorBracketHighlighting.foreground1":`#d97a12`,"editorBracketHighlighting.foreground2":`#3178c6`,"editorBracketHighlighting.foreground3":`#d65a9a`,"editorBracketHighlighting.foreground4":`#3b8c5a`,"editorBracketHighlighting.foreground5":`#17998e`,"editorBracketHighlighting.foreground6":`#8b5cf6`,"editorBracketPairGuide.background1":`#d97a1215`,"editorBracketPairGuide.background2":`#3178c615`,"editorBracketPairGuide.background3":`#d65a9a15`,"editorBracketPairGuide.background4":`#3b8c5a15`,"editorBracketPairGuide.background5":`#17998e15`,"editorBracketPairGuide.background6":`#8b5cf615`,"editorBracketPairGuide.activeBackground1":`#d97a1228`,"editorBracketPairGuide.activeBackground2":`#3178c628`,"editorBracketPairGuide.activeBackground3":`#d65a9a28`,"editorBracketPairGuide.activeBackground4":`#3b8c5a28`,"editorBracketPairGuide.activeBackground5":`#17998e28`,"editorBracketPairGuide.activeBackground6":`#8b5cf628`}});function Tl(){return typeof document>`u`||document.documentElement.classList.contains(`dark`)?`wrongstack-dark`:`wrongstack-light`}Pr.config({monaco:_e});var El={ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,mjs:`javascript`,json:`json`,css:`css`,scss:`scss`,html:`html`,md:`markdown`,py:`python`,go:`go`,rs:`rust`,java:`java`,c:`c`,cpp:`cpp`,cs:`csharp`,rb:`ruby`,php:`php`,sh:`shell`,bash:`shell`,yml:`yaml`,yaml:`yaml`,toml:`toml`,sql:`sql`};function Dl(e){return El[e.split(`.`).pop()?.toLowerCase()??``]??`plaintext`}function Ol({path:e,oldText:t,newText:n}){let r=(0,U.useRef)(null),[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(!1),[c,l]=(0,U.useState)(null);(0,U.useEffect)(()=>{a(!1),s(!1),l(null)},[]);let u=(0,U.useCallback)(e=>{r.current=e,D.setTheme(Tl()),e.getModifiedEditor().onDidChangeModelContent(()=>a(!0))},[]),d=(0,U.useCallback)(()=>{let t=r.current?.getModifiedEditor().getValue();if(t==null)return;s(!0);let n=W(K.getState().wsUrl),i=n.on(`files.written`,t=>{t.type===`files.written`&&t.payload.filePath===e&&(i(),clearTimeout(o),s(!1),t.payload.success&&(a(!1),l(Date.now())))}),o=setTimeout(()=>{i(),s(!1)},5e3);n.send({type:`files.write`,payload:{filePath:e,content:t}})},[e]),f=Dl(e);return(0,Y.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-2 py-1.5 border-b border-border/40`,children:[(0,Y.jsx)(`span`,{className:`text-xs font-mono text-muted-foreground truncate`,children:e}),(0,Y.jsxs)(`button`,{type:`button`,onClick:d,disabled:!i||o,className:`inline-flex items-center gap-1.5 h-7 px-2.5 rounded-md border border-border text-xs font-medium disabled:opacity-40 enabled:hover:bg-muted transition-colors`,title:`Write the edited version back to disk`,children:[o?(0,Y.jsx)(O,{className:`h-3.5 w-3.5 animate-spin`}):c&&!i?(0,Y.jsx)(jn,{className:`h-3.5 w-3.5 text-emerald-500`}):(0,Y.jsx)(Ht,{className:`h-3.5 w-3.5`}),o?`Applying…`:c&&!i?`Applied`:`Apply`]})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-hidden`,children:(0,Y.jsx)(Ne,{original:t,modified:n,language:f,theme:Tl(),onMount:u,options:{renderSideBySide:!0,readOnly:!1,originalEditable:!1,minimap:{enabled:!1},fontSize:13,scrollBeyondLastLine:!1,automaticLayout:!0}})})]})}function kl({className:e}){let t=Ti(e=>e.selectedPath),n=Ti(e=>e.diff),r=Ti(e=>e.loadingDiff),[i,a]=(0,U.useState)(`unified`);if(!t)return(0,Y.jsxs)(`div`,{className:Z(`flex-1 flex flex-col items-center justify-center gap-3 text-muted-foreground`,e),children:[(0,Y.jsx)(kt,{className:`h-10 w-10 opacity-30`}),(0,Y.jsx)(`p`,{className:`text-sm`,children:`Select a changed file to view its diff.`})]});let o=n&&!n.error&&!n.binary&&!n.tooLarge;return(0,Y.jsxs)(`div`,{className:Z(`flex-1 flex flex-col overflow-hidden p-3`,e),children:[o&&(0,Y.jsxs)(`div`,{className:`flex items-center justify-end gap-1 pb-2`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>a(`unified`),title:`Unified diff`,className:Z(`inline-flex items-center gap-1 h-7 px-2 rounded-md border text-xs transition-colors`,i===`unified`?`border-primary/40 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:bg-muted`),children:[(0,Y.jsx)(or,{className:`h-3.5 w-3.5`}),` Unified`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>a(`edit`),title:`Side-by-side editable diff`,className:Z(`inline-flex items-center gap-1 h-7 px-2 rounded-md border text-xs transition-colors`,i===`edit`?`border-primary/40 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:bg-muted`),children:[(0,Y.jsx)(f,{className:`h-3.5 w-3.5`}),` Edit`]})]}),r||!n?(0,Y.jsxs)(`div`,{className:`flex-1 flex items-center justify-center text-muted-foreground gap-2 text-sm`,children:[(0,Y.jsx)(O,{className:`h-4 w-4 animate-spin`}),` Loading diff…`]}):n.error?(0,Y.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-sm text-rose-500`,children:n.error}):n.binary?(0,Y.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-sm text-muted-foreground`,children:`Binary file — diff not shown.`}):n.tooLarge?(0,Y.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-sm text-muted-foreground`,children:`File too large to diff.`}):i===`edit`?(0,Y.jsx)(Ol,{path:n.path,oldText:n.oldText??``,newText:n.newText??``},n.path):(0,Y.jsx)(xl,{oldText:n.oldText,newText:n.newText,caption:n.path,fill:!0})]})}var Al=[{mode:`off`,label:`Off`,description:`Full manual control — agent waits for your input.`,icon:(0,Y.jsx)(rn,{className:`h-3.5 w-3.5`})},{mode:`suggest`,label:`Suggest`,description:`Agent suggests next steps but waits for approval.`,icon:(0,Y.jsx)(En,{className:`h-3.5 w-3.5`})},{mode:`auto`,label:`Auto`,description:`Agent auto-proceeds after brief confirmation delay.`,icon:(0,Y.jsx)(dr,{className:`h-3.5 w-3.5`})},{mode:`eternal`,label:`Eternal`,description:`Agent runs autonomously until goal is complete.`,icon:(0,Y.jsx)(Dt,{className:`h-3.5 w-3.5`})},{mode:`eternal-parallel`,label:`Eternal Parallel`,description:`Multi-agent autonomous execution — fleet mode.`,icon:(0,Y.jsx)(Dt,{className:`h-3.5 w-3.5`})}];function jl({value:e,onChange:t,className:n,compact:r=!1}){let[i,a]=(0,U.useState)(!1),o=(0,U.useRef)(null);(0,U.useEffect)(()=>{if(!i)return;let e=e=>{o.current&&!o.current.contains(e.target)&&a(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[i]),(0,U.useEffect)(()=>{if(!i)return;let e=e=>{e.key===`Escape`&&a(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[i]);let s=Al.find(t=>t.mode===e);return(0,Y.jsxs)(`div`,{ref:o,className:`relative`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>a(e=>!e),className:Z(`flex items-center gap-1 px-2 py-0.5 rounded-md border text-[11px] font-medium transition-colors hover:opacity-80`,e===`eternal`||e===`eternal-parallel`?`bg-rose-500/15 text-rose-600 dark:text-rose-400 border-rose-500/30`:e===`auto`?`bg-amber-500/15 text-amber-600 dark:text-amber-400 border-amber-500/30`:e===`suggest`?`bg-blue-500/15 text-blue-600 dark:text-blue-400 border-blue-500/30`:`bg-muted text-muted-foreground border-transparent`,n),title:`Autonomy: ${s?.label??e}`,children:[s?.icon,!r&&(0,Y.jsx)(`span`,{className:`truncate max-w-[7rem]`,children:s?.label??e}),(0,Y.jsx)(ar,{className:`h-3 w-3 opacity-60`})]}),i&&(0,Y.jsxs)(`div`,{className:`absolute top-full mt-1 right-0 z-50 w-56 rounded-lg border bg-popover shadow-lg p-1`,children:[(0,Y.jsx)(`div`,{className:`px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted-foreground border-b mb-1`,children:`Autonomy Mode`}),Al.map(n=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{t(n.mode),a(!1)},className:Z(`w-full flex items-start gap-2 px-3 py-2 rounded text-left transition-colors`,e===n.mode?`bg-accent text-accent-foreground`:`hover:bg-accent/40`),children:[(0,Y.jsx)(`span`,{className:`mt-0.5 text-muted-foreground`,children:n.icon}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium`,children:n.label}),(0,Y.jsx)(`p`,{className:`text-[10px] text-muted-foreground leading-snug`,children:n.description})]}),e===n.mode&&(0,Y.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-primary mt-2 shrink-0`})]},n.mode))]})]})}var Ml=0,Nl=!1;function Pl(){let e=$i(e=>e.autoProceedMaxIterations),t=$i(e=>e.autonomy),n=(0,U.useRef)(Ml),r=(0,U.useRef)(Nl),i=(0,U.useRef)(t);(0,U.useEffect)(()=>{n.current=Ml,r.current=Nl}),(0,U.useEffect)(()=>{i.current!==`auto`&&t===`auto`&&(Nl=!1,r.current=!1),i.current=t},[t]);let a=(0,U.useCallback)(()=>e<=0?!0:n.current<e,[e]),o=(0,U.useCallback)(()=>{let t=e;return t>0&&n.current>=t?!1:(Ml=++n.current,t>0&&Ml>=t&&(Nl=!0,r.current=!0),!0)},[e]),s=(0,U.useCallback)(()=>{Ml=0,n.current=0,Nl=!1,r.current=!1},[]),c=(0,U.useCallback)(()=>{Nl=!1,r.current=!1},[]);return{streak:n.current,capWarned:r.current,canAutoSubmit:a,recordAutoSubmit:o,reset:s,resetCapWarned:c}}function Fl({query:e,onPick:t,onClose:n}){let r=Vs(),i=K(e=>e.wsUrl),[a,o]=(0,U.useState)([]),[s,c]=(0,U.useState)(0),l=(0,U.useRef)(null),u=(0,U.useRef)(null);return(0,U.useEffect)(()=>{let e=W(i).on(`files.list`,e=>{let t=e.payload;o(t.files??[]),c(0),u.current?.resolve(t.files??[]),u.current=null});return()=>e()},[i]),(0,U.useEffect)(()=>(l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{r.client.listFiles(e,50)},80),()=>{l.current&&clearTimeout(l.current)}),[e,r.client]),(0,U.useEffect)(()=>{let e=e=>{if(e.key===`ArrowDown`)e.preventDefault(),c(e=>(e+1)%Math.max(1,a.length));else if(e.key===`ArrowUp`)e.preventDefault(),c(e=>(e-1+Math.max(1,a.length))%Math.max(1,a.length));else if(e.key===`Enter`||e.key===`Tab`){if(a.length===0)return;e.preventDefault(),t(Rr(a[s]))}else e.key===`Escape`&&(e.preventDefault(),n())};return window.addEventListener(`keydown`,e,!0),()=>window.removeEventListener(`keydown`,e,!0)},[a,s,t,n]),(0,Y.jsxs)(`div`,{className:`absolute bottom-full left-0 right-0 mb-2 rounded-lg border bg-popover shadow-md p-1 text-sm max-h-72 overflow-auto`,children:[(0,Y.jsxs)(`div`,{className:`px-3 py-1 text-[10px] uppercase tracking-wider text-muted-foreground border-b mb-1 flex items-center justify-between`,children:[(0,Y.jsxs)(`span`,{children:[`@ Files `,e&&`· "${e}"`]}),(0,Y.jsx)(`span`,{children:`↑/↓ select · ↵ insert · Esc dismiss`})]}),a.length===0?(0,Y.jsx)(`div`,{className:`px-3 py-2 text-xs text-muted-foreground italic`,children:e?`No files match "${e}"`:`Searching project…`}):a.map((e,n)=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>t(e),onMouseEnter:()=>c(n),className:Z(`w-full text-left px-3 py-1.5 rounded transition-colors flex items-center gap-2 font-mono text-xs`,n===s?`bg-accent text-accent-foreground`:`hover:bg-accent/40`),children:[e.includes(`/`)?(0,Y.jsx)(wt,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}):(0,Y.jsx)(On,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}),(0,Y.jsx)(`span`,{className:`truncate`,children:e})]},e))]})}function Il({atMention:e,input:t,textareaRef:n,setInput:r,setAtMention:i}){return e?(0,Y.jsx)(Fl,{query:e.query,onClose:()=>i(null),onPick:a=>{let o=t.slice(0,e.start),s=t.slice(e.start+1+e.query.length),c=`@${a} `;r(o+c+s),i(null),requestAnimationFrame(()=>{let e=n.current;if(e){let t=o.length+c.length;e.focus(),e.setSelectionRange(t,t),e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,200)}px`}})}}):null}var Ll={btw:{label:`btw`,tone:`bg-sky-500/10 text-sky-700 dark:text-sky-300 border-sky-500/30`,title:`By-the-way — sent without interrupting the running agent`},steer:{label:`steer`,tone:`bg-amber-500/10 text-amber-700 dark:text-amber-300 border-amber-500/30`,title:`Steer — interrupts the running agent and redirects it`},queue:{label:`queue`,tone:`bg-indigo-500/10 text-indigo-700 dark:text-indigo-300 border-indigo-500/30`,title:`Queued — held until the current agent run completes`}};function Rl({queue:e,onClear:t,onRemove:n}){let[r,i]=(0,U.useState)(`oldest`),a=(0,U.useMemo)(()=>{let t=e.slice();return t.sort((e,t)=>r===`newest`?t.addedAt-e.addedAt:e.addedAt-t.addedAt),t},[e,r]);return e.length===0?null:(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/30 p-2 text-xs`,"data-testid":`inline-queue`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between mb-1.5 gap-2`,children:[(0,Y.jsxs)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium shrink-0`,children:[`Queue (`,e.length,`)`]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>i(e=>e===`newest`?`oldest`:`newest`),className:Z(`inline-flex items-center gap-1 text-muted-foreground hover:text-foreground transition-colors px-1.5 py-0.5 rounded text-[10px]`,`hover:bg-muted`),title:r===`newest`?`Sorted newest first — click to sort oldest first`:`Sorted oldest first — click to sort newest first`,"data-testid":`inline-queue-sort`,children:[r===`newest`?(0,Y.jsx)(_t,{className:`h-3 w-3`}):(0,Y.jsx)(Kt,{className:`h-3 w-3`}),r===`newest`?`Newest`:`Oldest`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:t,className:`inline-flex items-center gap-1 text-muted-foreground hover:text-destructive transition-colors px-1.5 py-0.5 rounded text-[10px]`,title:`Remove every queued message`,"data-testid":`inline-queue-clear-all`,children:[(0,Y.jsx)(yn,{className:`h-3 w-3`}),`Clear all`]})]})]}),(0,Y.jsx)(`ul`,{className:`space-y-1`,children:a.map(t=>{let r=e.indexOf(t),i=Ll[t.mode];return(0,Y.jsxs)(`li`,{className:`flex items-start justify-between gap-2 rounded bg-background/60 border px-2 py-1`,"data-testid":`inline-queue-item`,"data-queue-mode":t.mode,children:[(0,Y.jsxs)(`div`,{className:`flex items-start gap-1.5 min-w-0 flex-1`,children:[(0,Y.jsx)(`span`,{className:Z(`shrink-0 inline-flex items-center justify-center text-[9px] font-semibold uppercase tracking-wider px-1 py-px rounded border mt-0.5`,i.tone),title:i.title,children:i.label}),(0,Y.jsx)(`span`,{className:`truncate flex-1 min-w-0`,children:t.text})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>n(r),className:`text-muted-foreground hover:text-destructive shrink-0`,title:`Remove from queue`,"data-testid":`inline-queue-remove-${r}`,children:`×`})]},`${t.addedAt}-${r}`)})})]})}var zl=[{name:`/new`,category:`Session`,description:`Start a brand-new session (fresh on disk and in memory)`},{name:`/clear`,category:`Session`,description:`Wipe current context (keeps session id, disk record stays)`},{name:`/compact`,category:`Session`,description:`Shrink context — elide ancient tool output`},{name:`/compact!`,category:`Session`,description:`Aggressively shrink context now`},{name:`/repair`,category:`Session`,description:`Repair orphan tool-use / tool-result protocol blocks`},{name:`/save`,category:`Session`,description:`Force-flush the session (auto-saved already)`},{name:`/load`,category:`Session`,aliases:[`/resume`],description:`Resume a previous session from disk`},{name:`/export`,category:`Session`,description:`Download the current chat as markdown`},{name:`/debug`,category:`Inspect`,aliases:[`/context`],description:`Context size breakdown per section`},{name:`/tools`,category:`Inspect`,description:`List every registered tool the model can call`},{name:`/memory`,category:`Inspect`,description:`Manage memory: show, remember, forget, clear, stats`},{name:`/todos`,category:`Inspect`,description:`List current todos`},{name:`/stats`,category:`Inspect`,description:`Session stats: tokens, cost, elapsed`},{name:`/skill`,category:`Inspect`,aliases:[`/skills`],description:`List active skills`},{name:`/prompt`,category:`Inspect`,aliases:[`/prompts`],description:`Browse & insert prompts from the library`},{name:`/diag`,category:`Inspect`,description:`Runtime diagnostics (provider, tools, mode, usage)`},{name:`/agents`,category:`Inspect`,description:`Show status of spawned subagents`},{name:`/brain`,category:`Inspect`,description:`Brain status, risk ceiling (risk <level>), or decision support (ask <question>)`},{name:`/plan`,category:`Inspect`,description:`Strategic plan board: show, add, start, done, promote, clear`},{name:`/suggest`,category:`Inspect`,aliases:[`/next-steps`],description:`Ask the agent for concrete next steps`},{name:`/next`,category:`Inspect`,description:`Show or run numbered next-step suggestions`},{name:`/review`,category:`Agent`,aliases:[`/cr`],description:`Ask the agent to review the pending changes (optional focus)`},{name:`/fix`,category:`Agent`,description:`Diagnose and fix an error (paste it) or the latest failure`},{name:`/autonomy`,category:`Agent`,description:`Switch self-driving mode: off | suggest | auto | eternal | eternal-parallel`},{name:`/goal`,category:`Agent`,description:`Show the current goal (opens the Goal dock chip)`},{name:`/fleet`,category:`Agent`,description:`Open the Fleet orchestration monitor`},{name:`/terminal`,category:`App`,aliases:[`/term`],description:"Open the integrated terminal (Ctrl+`)"},{name:`/collab`,category:`Agent`,description:`Open the live collaboration panel`},{name:`/worktree`,category:`Agent`,aliases:[`/worktrees`],description:`Open the worktree view`},{name:`/autophase`,category:`Agent`,description:`AutoPhase: start <title> | pause | resume | stop`},{name:`/mode`,category:`Agent`,description:`Switch session mode (no arg lists available modes)`},{name:`/mcp`,category:`Agent`,description:`Open MCP server settings and refresh the server list`},{name:`/working-dir`,category:`Agent`,aliases:[`/cwd`],description:`Show or change the working directory`},{name:`/settings`,category:`Config`,aliases:[`/model`],description:`Open settings (provider/model/keys)`},{name:`/setup`,category:`Config`,description:`Open the provider setup screen to add or change API keys`},{name:`/enhance`,category:`Config`,description:`Toggle prompt refinement before sending`},{name:`/interrupt`,category:`Run`,aliases:[`/abort`,`/stop`,`/int`],description:`Stop the current run (abort the in-flight request)`},{name:`/help`,category:`App`,description:`Show every slash command and what it does`},{name:`/exit`,category:`App`,description:`Exit the session and close WebUI`},{name:`/f`,category:`App`,description:`Open F-key panels (F1–F12). Type /f for numbered options.`},{name:`/f1`,category:`App`,description:`Project switcher`,hidden:!0},{name:`/f2`,category:`App`,description:`Fleet orchestration monitor`,hidden:!0},{name:`/f3`,category:`App`,description:`Agents live monitor`,hidden:!0},{name:`/f4`,category:`App`,description:`Worktree monitor`,hidden:!0},{name:`/f5`,category:`App`,description:`Plan panel`,hidden:!0},{name:`/f6`,category:`App`,description:`Todos monitor overlay`,hidden:!0},{name:`/f7`,category:`App`,description:`Queue panel`,hidden:!0},{name:`/f8`,category:`App`,description:`Process list overlay`,hidden:!0},{name:`/f9`,category:`App`,description:`Goal panel`,hidden:!0},{name:`/f10`,category:`App`,description:`Live sessions panel`,hidden:!0},{name:`/f11`,category:`App`,description:`Coordinator monitor`,hidden:!0},{name:`/f12`,category:`App`,description:`Status line picker`,hidden:!0}],Bl=[`Run`,`Session`,`Inspect`,`Agent`,`Config`,`App`];function Vl(e){let t=e.toLowerCase();return t===`/`||t===``?zl.filter(e=>!e.hidden):zl.filter(e=>e.name.startsWith(t)||(e.aliases?.some(e=>e.startsWith(t))??!1))}function Hl(e,t){let n=t-1;for(;n>=0;){let r=Rr(e[n]);if(r===`@`){let r=n>0?e[n-1]:``;return n===0||/\s/.test(r??``)?{start:n,query:e.slice(n+1,t)}:null}if(/\s/.test(r))return null;n--}return null}function Ul(e){let t=e.thinkingLog;if(!t)return``;if(t.replayed)return`replay`;let n=Math.max(.1,t.durationMs/1e3);return`${n.toFixed(+(n<10))}s`}function Wl(e){let t=Math.max(3,...Array.from(e.matchAll(/`+/g),e=>e[0].length+1));return"`".repeat(t)}function Gl(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function Kl(){let e=G.getState().messages,t=[],n=new Date().toISOString().slice(0,19).replace(/[:T]/g,`-`),r=q.getState().projectName||`chat`,i=q.getState().session?.title||r;t.push(`# ${i} — chat export`),t.push(`*Exported: ${new Date().toISOString()}*`),t.push(``);for(let n of e)if(n.thinkingLog){let e=Wl(n.thinkingLog.text),r=n.thinkingLog.text.split(`
36
+ `).length;t.push(`### 🧠 Thinking process — iteration ${n.thinkingLog.iteration}`),t.push(``),t.push(`_${Ul(n)} · ${r} line${r===1?``:`s`}_`),t.push(``),t.push(`<details><summary>Log</summary>`),t.push(``),t.push(`${e}text`),t.push(n.thinkingLog.text),t.push(e),t.push(``),t.push(`</details>`),t.push(``)}else if(n.role===`user`)t.push(`## 👤 User`),t.push(``),t.push(n.content),t.push(``);else if(n.role===`assistant`)t.push(`## 🤖 Assistant`),t.push(``),t.push(n.content),t.push(``);else if(n.role===`tool`){let e=n.isError?`❌`:n.toolResult===void 0?`⏳`:`✅`;t.push(`### 🔧 Tool: \`${n.toolName??`unknown`}\` ${e}`),n.toolInput!==void 0&&(t.push("```json"),t.push(JSON.stringify(n.toolInput,null,2)),t.push("```")),n.toolResult&&(t.push(`<details><summary>Output</summary>`),t.push(``),t.push("```"),t.push(n.toolResult),t.push("```"),t.push(`</details>`)),t.push(``)}let a=new Blob([t.join(`
37
+ `)],{type:`text/markdown`}),o=URL.createObjectURL(a),s=document.createElement(`a`);s.href=o,s.download=`${r.toLowerCase().replace(/[^a-z0-9]+/g,`-`)}-chat-${n}.md`,document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(o)}function ql(){let e=G.getState().messages,t=q.getState(),n=t.projectName||`chat`,r=Gl(t.session?.title||n),i=new Date().toISOString().slice(0,19).replace(/[:T]/g,`-`),a=e.map(e=>{if(e.thinkingLog){let t=e.thinkingLog.text.split(`
38
+ `).length;return`
39
+ <section class="bubble thinking">
40
+ <header><span class="icon">🧠</span><strong>Thinking process</strong> <span class="meta-chip">iter ${e.thinkingLog.iteration} · ${Gl(Ul(e))} · ${t} line${t===1?``:`s`}</span></header>
41
+ <details open><summary>Log</summary><pre>${Gl(e.thinkingLog.text)}</pre></details>
42
+ </section>`}if(e.role===`tool`){let t=e.isError?`❌`:e.toolResult===void 0?`⏳`:`✅`;return`
43
+ <section class="bubble tool ${e.isError?`error`:``}">
44
+ <header><span class="icon">🔧</span><code>${Gl(e.toolName??`tool`)}</code> ${t}</header>
45
+ ${e.toolInput===void 0?``:`<details><summary>Input</summary><pre>${Gl(JSON.stringify(e.toolInput,null,2))}</pre></details>`}
46
+ ${e.toolResult?`<details><summary>Output</summary><pre>${Gl(e.toolResult)}</pre></details>`:``}
47
+ </section>`}return`
48
+ <section class="bubble ${e.role===`user`?`user`:`assistant`}">
49
+ <header><span class="icon">${e.role===`user`?`👤`:`🤖`}</span><strong>${e.role===`user`?`User`:`Assistant`}</strong></header>
50
+ <pre class="content">${Gl(e.content)}</pre>
51
+ </section>`}),o=`<!doctype html>
52
+ <html lang="en"><head>
53
+ <meta charset="utf-8">
54
+ <title>${r} — chat export</title>
55
+ <style>
56
+ :root { color-scheme: light dark; }
57
+ body { font: 14px/1.55 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; max-width: 920px; margin: 24px auto; padding: 0 16px; }
58
+ h1 { font-size: 20px; margin-bottom: 4px; }
59
+ .meta { color: #666; font-size: 12px; margin-bottom: 24px; }
60
+ .bubble { margin: 12px 0; padding: 10px 14px; border-radius: 10px; border: 1px solid #ddd; }
61
+ .bubble header { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: #666; margin-bottom: 6px; }
62
+ .bubble header .icon { margin-right: 4px; }
63
+ .bubble.user { background: #eef4ff; border-color: #c8d8f5; }
64
+ .bubble.assistant { background: #fff; }
65
+ .bubble.thinking { background: #fbf7ff; border-color: #dcc7ff; }
66
+ .bubble.tool { background: #fafafa; }
67
+ .bubble.tool.error { background: #fff5f5; border-color: #f5c8c8; }
68
+ .meta-chip { text-transform: none; letter-spacing: 0; font-weight: 400; }
69
+ pre.content, .bubble pre { white-space: pre-wrap; word-break: break-word; font: 12px/1.5 ui-monospace, Menlo, Consolas, monospace; margin: 0; }
70
+ details summary { cursor: pointer; color: #555; font-size: 12px; }
71
+ details pre { margin-top: 6px; background: #f4f4f4; padding: 8px; border-radius: 6px; max-height: 360px; overflow: auto; }
72
+ @media (prefers-color-scheme: dark) {
73
+ body { background: #0d0d0f; color: #e6e6e6; }
74
+ .bubble { border-color: #2a2a2e; }
75
+ .bubble.user { background: #16213a; border-color: #2a3d6b; }
76
+ .bubble.assistant { background: #161618; }
77
+ .bubble.thinking { background: #1d1728; border-color: #4b3673; }
78
+ .bubble.tool { background: #131315; }
79
+ .bubble.tool.error { background: #2a1717; border-color: #5c2a2a; }
80
+ details pre { background: #1a1a1c; }
81
+ .meta, .bubble header, details summary { color: #999; }
82
+ }
83
+ </style>
84
+ </head><body>
85
+ <h1>${r} — chat export</h1>
86
+ <div class="meta">
87
+ Exported ${new Date().toISOString()}${t.session?.provider?` · ${Gl(t.session.provider)}/${Gl(t.session.model)}`:``} · ${e.length} message${e.length===1?``:`s`}
88
+ </div>
89
+ ${a.join(``)}
90
+ </body></html>`,s=new Blob([o],{type:`text/html;charset=utf-8`}),c=URL.createObjectURL(s),l=document.createElement(`a`);l.href=c,l.download=`${n.toLowerCase().replace(/[^a-z0-9]+/g,`-`)}-chat-${i}.html`,document.body.appendChild(l),l.click(),document.body.removeChild(l),URL.revokeObjectURL(c)}function Jl(){let e=J(e=>e.paletteOpen),t=J(e=>e.setPaletteOpen),n=J(e=>e.setCurrentView),r=K(e=>e.setTheme),{entries:i}=Ei(),{addMessage:a,clearMessages:o}=G(),s=Vs(),[l,u]=(0,U.useState)(``),[d,f]=(0,U.useState)(0),p=(0,U.useRef)(null);(0,U.useEffect)(()=>{e&&(u(``),f(0),requestAnimationFrame(()=>p.current?.focus()))},[e]),(0,U.useEffect)(()=>{let e=e=>{if((e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`k`){e.preventDefault(),t(!J.getState().paletteOpen);return}e.key===`Escape`&&J.getState().paletteOpen&&(e.preventDefault(),t(!1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]);let m=(0,U.useMemo)(()=>{let e=[{id:`help`,category:`Command`,label:`Show slash commands`,icon:at,keywords:[`help`,`commands`,`?`],run:()=>{a({role:`assistant`,content:"Type `/` in the message box to see every slash command."})}},{id:`tools`,category:`Command`,label:`List tools`,icon:kn,keywords:[`tools`,`list`],run:()=>s.listTools()},{id:`memory`,category:`Command`,label:`Show memory`,icon:St,keywords:[`memory`,`remember`,`notes`],run:()=>s.listMemory()},{id:`skills`,category:`Command`,label:`List skills`,icon:$e,keywords:[`skills`],run:()=>s.listSkills()},{id:`diag`,category:`Command`,label:`Runtime diagnostics`,icon:ne,keywords:[`diag`,`diagnostics`,`debug`],run:()=>s.getDiag()},{id:`stats`,category:`Command`,label:`Session stats (tokens, cache, cost)`,icon:Yn,keywords:[`stats`,`tokens`,`cost`,`cache`],run:()=>s.getStats()},{id:`clear`,category:`Session`,label:`Clear context`,hint:`Wipe in-memory context, keep session id`,icon:yn,keywords:[`clear`,`reset`,`wipe`],run:()=>{Zr.dropAll(),o(),s.client?.clearContext?.()}},{id:`new`,category:`Session`,label:`New session`,hint:`Brand-new on disk + memory`,icon:Xn,keywords:[`new`,`fresh`,`session`],run:()=>{s.client?.newSession?.(),n(`chat`)}},{id:`compact`,category:`Session`,label:`Compact context`,icon:he,keywords:[`compact`,`shrink`,`context`],run:()=>s.client?.compactContext?.()},{id:`repair-context`,category:`Session`,label:`Repair context`,hint:`Remove orphan tool protocol blocks`,icon:kn,keywords:[`repair`,`context`,`tool_use`,`tool_result`],run:()=>s.client?.repairContext?.()},{id:`export`,category:`Session`,label:`Export chat as markdown`,icon:c,keywords:[`export`,`save`,`markdown`,`download`],run:()=>Kl()},{id:`export-html`,category:`Session`,label:`Export chat as HTML`,hint:`Self-contained, opens in any browser`,icon:c,keywords:[`export`,`html`,`download`,`archive`],run:()=>ql()},{id:`history`,category:`Command`,label:`Open history panel`,icon:lt,keywords:[`history`,`sessions`],run:()=>{J.getState().setSidebarOpen(!0),J.getState().selectActivity(`history`)}},{id:`settings`,category:`Command`,label:`Open settings`,icon:dt,keywords:[`settings`,`config`],run:()=>n(`settings`)},{id:`model`,category:`Command`,label:`Change provider/model`,icon:k,keywords:[`model`,`provider`,`change`],run:()=>J.getState().setModelSwitcherOpen(!0)},{id:`theme-light`,category:`Theme`,label:`Theme: Light`,icon:A,keywords:[`theme`,`light`,`mode`],run:()=>r(`light`)},{id:`theme-dark`,category:`Theme`,label:`Theme: Dark`,icon:g,keywords:[`theme`,`dark`,`mode`],run:()=>r(`dark`)},{id:`theme-system`,category:`Theme`,label:`Theme: Follow system`,icon:xr,keywords:[`theme`,`system`,`auto`],run:()=>r(`system`)},{id:`compact-toggle`,category:`Command`,label:`Toggle compact density`,icon:_n,hint:`Ctrl+Shift+D`,keywords:[`compact`,`dense`,`density`,`size`],run:()=>J.getState().toggleCompactMode()},{id:`sound-toggle`,category:`Command`,label:K.getState().soundOnComplete?`Sound on completion: ON — turn off`:`Sound on completion: OFF — turn on`,icon:K.getState().soundOnComplete?Nr:vr,hint:`Chime when a run finishes`,keywords:[`sound`,`audio`,`chime`,`notify`,`beep`],run:()=>{let e=!K.getState().soundOnComplete;K.getState().setSoundOnComplete(e),e&&Ia()}},{id:`autophase-open`,category:`Command`,label:`Open AutoPhase view`,icon:ln,keywords:[`autophase`,`autonomous`,`phases`,`rocket`],run:()=>n(`autophase`)},{id:`autophase-toggle`,category:`Command`,label:Ji.getState().autonomous?`Autonomous mode: ON — disable`:`Autonomous mode: OFF — enable`,icon:Ji.getState().autonomous?rn:dr,hint:`Toggle autonomous phase execution`,keywords:[`autonomous`,`autophase`,`auto`,`pause`,`resume`],run:()=>{let e=!Ji.getState().autonomous;s.toggleAutoPhaseAutonomous(e)}},{id:`autophase-stop`,category:`Command`,label:`Stop AutoPhase`,icon:Ie,keywords:[`autophase`,`stop`,`autonomous`,`end`],run:()=>s.stopAutoPhase()}],t=e=>{let t=G.getState(),r=J.getState();return{raw:e,addMessage:a,clearMessages:o,client:s.client,queue:t.queue,sendAbort:s.sendAbort,sendMsg:e=>{if(t.isLoading){t.enqueue(e);return}t.addMessage({role:`user`,content:e}),s.sendMessage(e)&&t.setLoading(!0)},setLoading:t.setLoading,setCurrentView:n,toggleRefineEnabled:r.toggleRefineEnabled,setProcessMonitorOpen:r.setProcessMonitorOpen,setQueuePanelOpen:r.setQueuePanelOpen,ws:s,onOpenBreakdown:()=>n(`debug`),handleNextList:()=>!1,handleNextSelect:()=>!1}};for(let n of zl)n.hidden||e.push({id:`slash-${n.name}`,category:`Slash`,label:n.name,hint:n.description,icon:at,keywords:[`slash`,n.name.replace(`/`,``),...(n.aliases??[]).map(e=>e.replace(`/`,``))],run:()=>{Xl(t(n.name))}});for(let t of i.slice(0,10))t.isCurrent||e.push({id:`resume-${t.id}`,category:`Session`,label:`Resume: ${t.title||`(empty)`}`,hint:`${t.provider}/${t.model}`,icon:Ar,keywords:[`resume`,t.title,t.id,t.provider,t.model],run:()=>s.resumeSession(t.id)});return e},[i,s,n,r,a,o]),h=(0,U.useMemo)(()=>{let e=l.toLowerCase().trim();return e?m.filter(t=>[t.label,t.hint??``,t.category,...t.keywords??[]].join(` `).toLowerCase().includes(e)):m},[m,l]);if((0,U.useEffect)(()=>{d>=h.length&&f(0)},[h.length,d]),!e)return null;let _=e=>{e&&(t(!1),e.run())};return(0,Y.jsx)(`div`,{className:`fixed inset-0 z-50 bg-background/60 backdrop-blur-sm flex items-start justify-center pt-[14vh] px-4`,onClick:()=>t(!1),onKeyDown:e=>{e.key===`Escape`&&t(!1)},children:(0,Y.jsxs)(`div`,{onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),className:`w-full max-w-2xl rounded-xl border bg-popover shadow-2xl overflow-hidden flex flex-col`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 px-4 py-3 border-b`,children:[(0,Y.jsx)(Me,{className:`h-4 w-4 text-muted-foreground`}),(0,Y.jsx)(`input`,{ref:p,value:l,onChange:e=>u(e.target.value),placeholder:`Search commands, sessions, settings…`,className:`flex-1 bg-transparent outline-none text-sm placeholder:text-muted-foreground`,onKeyDown:e=>{e.key===`ArrowDown`?(e.preventDefault(),f(e=>(e+1)%Math.max(1,h.length))):e.key===`ArrowUp`?(e.preventDefault(),f(e=>(e-1+Math.max(1,h.length))%Math.max(1,h.length))):e.key===`Enter`&&(e.preventDefault(),_(h[d]))}}),(0,Y.jsx)(`kbd`,{className:`text-[10px] text-muted-foreground border rounded px-1.5 py-0.5`,children:`Esc`})]}),(0,Y.jsx)(`div`,{className:`max-h-[60vh] overflow-y-auto`,children:h.length===0?(0,Y.jsxs)(`div`,{className:`px-4 py-8 text-center text-sm text-muted-foreground`,children:[`No matches for "`,l,`"`]}):Yl(h,d,_,f)}),(0,Y.jsxs)(`div`,{className:`border-t px-4 py-2 text-[10px] uppercase tracking-wider text-muted-foreground flex items-center gap-3`,children:[(0,Y.jsx)(`span`,{children:`↑↓ navigate`}),(0,Y.jsx)(`span`,{children:`↵ select`}),(0,Y.jsx)(`span`,{children:`Esc dismiss`})]})]})})}function Yl(e,t,n,r){let i={};return e.forEach((e,t)=>{i[e.category]||(i[e.category]=[]),i[e.category]?.push({item:e,globalIdx:t})}),(0,Y.jsx)(`div`,{className:`p-1`,children:Object.entries(i).map(([e,i])=>(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`px-3 pt-2 pb-1 text-[10px] uppercase tracking-wider text-muted-foreground`,children:e}),i.map(({item:e,globalIdx:i})=>{let a=e.icon,o=i===t;return(0,Y.jsxs)(`button`,{type:`button`,onMouseEnter:()=>r(i),onClick:()=>n(e),className:Z(`w-full flex items-center gap-3 px-3 py-2 rounded text-left text-sm transition-colors`,o?`bg-accent text-accent-foreground`:`hover:bg-accent/40`),children:[(0,Y.jsx)(a,{className:`h-4 w-4 text-muted-foreground shrink-0`}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`div`,{className:`truncate`,children:e.label}),e.hint&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:e.hint})]}),o&&(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`↵`})]},e.id)})]},e))})}function Xl(e){let{raw:t,addMessage:n,clearMessages:r,client:i,queue:a,sendAbort:o,sendMsg:s,setLoading:c,setCurrentView:l,toggleRefineEnabled:u,setProcessMonitorOpen:d,setQueuePanelOpen:f,ws:p,onOpenBreakdown:m,handleNextList:h,handleNextSelect:g}=e,_=t.trim(),v=_.indexOf(` `),y=(v===-1?_:_.slice(0,v)).toLowerCase(),b=v===-1?``:_.slice(v+1).trim(),x=y,S=e=>{let t=J.getState();t.setCurrentView(`chat`),t.setDockSection(`work`),t.setWorkDashboardTab(e)};switch(x){case`/help`:return n({role:`assistant`,content:[`📖 **Slash commands**`,``,...zl.map(e=>`• \`${e.name}\`${e.aliases?.length?` (${e.aliases.map(e=>`\`${e}\``).join(`, `)})`:``} — ${e.description}`)].join(`
91
+ `)}),!0;case`/clear`:return Zr.dropAll(),r(),i?.clearContext?.(),!0;case`/new`:return i?.newSession?.(),!0;case`/exit`:return i?.send?.({type:`webui.shutdown`}),n({role:`assistant`,content:`👋 Shutting down WebUI server…`}),!0;case`/compact`:case`/compact!`:return i?.compactContext?.(x===`/compact!`),!0;case`/repair`:return i?.repairContext?.(),!0;case`/debug`:case`/context`:return m?.(),!0;case`/tools`:return p.listTools(),!0;case`/memory`:return p.listMemory(),!0;case`/skill`:case`/skills`:return p.listSkills(),!0;case`/prompt`:case`/prompts`:return J.getState().setPromptLibraryOpen(!0),!0;case`/diag`:return p.getDiag(),!0;case`/stats`:return p.getStats(),!0;case`/save`:return p.saveSession(),!0;case`/load`:case`/resume`:return p.listSessions(50),l(`sessions`),!0;case`/agents`:return J.getState().setAgentsMonitorOpen(!0),!0;case`/autonomy`:{let e=b.trim().toLowerCase(),t=[`off`,`suggest`,`auto`,`eternal`,`eternal-parallel`];return e?t.includes(e)?(i?.send?.({type:`autonomy.switch`,payload:{mode:e}}),n({role:`assistant`,content:`🤖 Autonomy mode → **${e}**.`}),!0):(n({role:`assistant`,content:`Unknown autonomy mode \`${e}\`. Try: ${t.join(`, `)}.`}),!0):(n({role:`assistant`,content:`Usage: \`/autonomy <mode>\` — one of: ${t.map(e=>`\`${e}\``).join(`, `)}.`}),!0)}case`/goal`:return i?.send?.({type:`goal.get`}),J.getState().setDockSection(`goal`),!0;case`/fleet`:return J.getState().setFleetMonitorOpen(!0),!0;case`/terminal`:case`/term`:return J.getState().setTerminalOpen(!0),!0;case`/collab`:return J.getState().setDockSection(`collab`),!0;case`/worktree`:case`/worktrees`:return J.getState().setDockSection(`worktrees`),!0;case`/mode`:{let e=b.trim();return e?(i?.send?.({type:`mode.switch`,payload:{id:e}}),n({role:`assistant`,content:`Mode → **${e}**.`}),!0):(i?.send?.({type:`modes.list`}),n({role:`assistant`,content:"Fetching available modes… (or pass `/mode <name>` to switch)."}),!0)}case`/mcp`:return i?.send?.({type:`mcp.list`}),l(`settings`),!0;case`/working-dir`:case`/cwd`:{let e=b.trim();if(!e){let e=q.getState().cwd;return n({role:`assistant`,content:e?`📂 Working directory: \`${e}\`\n\n_Pass \`/working-dir <path>\` to change it._`:"Working directory unknown. Pass `/working-dir <path>` to set it."}),!0}return i?.send?.({type:`working_dir.set`,payload:{path:e}}),n({role:`assistant`,content:`📂 Working directory → \`${e}\`.`}),!0}case`/autophase`:{let[e,...t]=b.split(/\s+/).filter(Boolean),r=(e??``).toLowerCase();if(r===`start`){let e=t.join(` `).trim();return e?(i?.send?.({type:`autophase.start`,payload:{title:e}}),J.getState().setCurrentView(`autophase`),!0):(n({role:`assistant`,content:"Usage: `/autophase start <title>`"}),!0)}return r===`pause`?(i?.send?.({type:`autophase.pause`,payload:{}}),!0):r===`resume`?(i?.send?.({type:`autophase.resume`,payload:{}}),!0):r===`stop`?(i?.send?.({type:`autophase.stop`,payload:{}}),!0):(J.getState().setCurrentView(`autophase`),!0)}case`/brain`:{let[e,...t]=b.split(/\s+/).filter(Boolean),r=(e??``).toLowerCase();if(r===`risk`)i?.send?.({type:`brain.risk`,payload:{level:(t[0]??``).toLowerCase()}});else if(r===`ask`){let e=t.join(` `).trim();e?i?.send?.({type:`brain.ask`,payload:{question:e}}):n({role:`assistant`,content:"Usage: `/brain ask <question>`"})}else i?.send?.({type:`brain.status`});return!0}case`/plan`:return p.getPlan(),l(`chat`),S(`plan`),!0;case`/todos`:{if(b.toLowerCase()===`clear`)return i?.clearTodos?.(),!0;S(`todos`);let e=q.getState().todos;if(e.length===0)return n({role:`assistant`,content:`✅ **Todos** — _empty. Ask the agent to plan something and they'll show up here._`}),!0;let t=[`✅ **Todos** (${e.filter(e=>e.status===`completed`).length}/${e.length} done)`,``];for(let n of e){let e=n.status===`completed`?`[x]`:n.status===`in_progress`?`[~]`:`[ ]`,r=n.status===`in_progress`&&n.activeForm?n.activeForm:n.content;t.push(`- ${e} ${r}`)}return t.push(``,"_Use `/todos clear` to wipe the list._"),n({role:`assistant`,content:t.join(`
92
+ `)}),!0}case`/export`:return Kl(),n({role:`assistant`,content:`📥 Chat exported to your downloads folder.`}),!0;case`/interrupt`:case`/abort`:case`/stop`:case`/int`:return o(),c(!1),!0;case`/settings`:case`/model`:return l(`settings`),!0;case`/setup`:return J.getState().setCurrentView(`setup`),!0;case`/enhance`:{let e=!J.getState().refineEnabled;return u(),n({role:`assistant`,content:`Prompt refinement ${e?`enabled`:`disabled`}.`}),!0}case`/suggest`:case`/next-steps`:return s(`What are the next steps I should take? Be specific and actionable.`),!0;case`/review`:case`/cr`:{let e=b.trim();return s(`Review the pending git changes (run \`git diff\` and \`git status\` to see them). ${e?`Focus especially on: ${e}.`:`Cover correctness bugs, security issues, performance, and obvious simplifications.`} For each finding give the file, a short description, severity, and a concrete fix. If there are no changes, review the most recently edited files instead.`),!0}case`/fix`:{let e=b.trim();return s(e?`Diagnose and fix this error. Find the root cause, then apply the fix and explain it:\n\n${e}`:`Investigate the most recent error or failing test, find the root cause, fix it, and verify the fix.`),!0}case`/kill`:case`/ps`:return d(!0),!0;case`/queue`:{let e=a;if(e.length===0)n({role:`assistant`,content:`📋 **Message Queue** — empty.
93
+
94
+ Type while the agent is running to queue messages; they are sent automatically when the agent finishes.`});else{let t=[`📋 **Message Queue** (${e.length} queued)`,``];e.forEach((e,n)=>{let r=e.text.length>80?`${e.text.slice(0,77)}…`:e.text;t.push(`${n+1}. ${r}`)}),t.push(``,"_Use `/queue open` to manage, or `/queue clear` to wipe._"),n({role:`assistant`,content:t.join(`
95
+ `)})}return b.toLowerCase()===`open`&&f(!0),!0}case`/next`:{let e=b.trim().toLowerCase();return!e||e===`list`||e===`ls`||e===`show`?h():e===`clear`||e===`reset`?(n({role:`assistant`,content:`💡 _Suggestion list cleared._`}),!0):g(b.trim())}case`/f`:case`/f1`:case`/f2`:case`/f3`:case`/f4`:case`/f5`:case`/f6`:case`/f7`:case`/f8`:case`/f9`:case`/f10`:case`/f11`:case`/f12`:{let e={"/f":``,"/f1":`projectPicker`,"/f2":`fleetMonitor`,"/f3":`agentsMonitor`,"/f4":`worktreeMonitor`,"/f5":`planPanel`,"/f6":`todosMonitor`,"/f7":`queuePanel`,"/f8":`processList`,"/f9":`goalPanel`,"/f10":`sessionsPanel`,"/f11":`coordinatorMonitor`,"/f12":`statuslinePicker`},t=x===`/f`&&b?e[`/f${b.trim()}`]:e[x];if(!t)return n({role:`assistant`,content:[`🎛️ **F-key panels**`,``,`/f 1 — Project switcher`,`/f 2 — Fleet orchestration monitor`,`/f 3 — Agents live monitor`,`/f 4 — Worktree monitor`,`/f 5 — Plan panel`,`/f 6 — Todos monitor overlay`,`/f 7 — Queue panel`,`/f 8 — Process list overlay`,`/f 9 — Goal panel`,`/f 10 — Live sessions panel`,`/f 11 — Coordinator monitor`,`/f 12 — Status line picker`,``,`_Or use /f1 … /f12 directly._`].join(`
96
+ `)}),!0;let r=J.getState();return r.setCurrentView(`chat`),r.setDockCustomizeOpen(!1),t===`projectPicker`?(r.setSidebarOpen(!0),r.selectActivity(`projects`),!0):t===`fleetMonitor`?(r.setFleetMonitorOpen(!0),!0):t===`agentsMonitor`?(r.setAgentsMonitorOpen(!0),!0):t===`worktreeMonitor`?(r.setDockSection(`worktrees`),!0):t===`planPanel`?(p.getPlan(),r.setDockSection(`work`),r.setWorkDashboardTab(`plan`),!0):t===`todosMonitor`?(r.setDockSection(`work`),r.setWorkDashboardTab(`todos`),!0):t===`queuePanel`?(r.setQueuePanelOpen(!0),!0):t===`processList`?(r.setProcessMonitorOpen(!0),!0):t===`goalPanel`?(i?.send?.({type:`goal.get`}),r.setDockSection(`goal`),!0):t===`sessionsPanel`?(p.listSessions(50),l(`sessions`),!0):t===`coordinatorMonitor`?(r.setSidebarOpen(!0),r.selectActivity(`officemap`),r.setCurrentView(`officemap`),!0):t===`statuslinePicker`?(r.setDockSection(`work`),r.setDockCustomizeOpen(!0),!0):!0}default:return!1}}var Zl=[{lang:`typescript`,patterns:[{regex:/:\s*(string|number|boolean|void|never|any|unknown|Promise|Array|Record|Map|Set)\b/,weight:4},{regex:/\b(interface|type|enum|namespace|implements|extends|as|satisfies|infer)\b/,weight:3},{regex:/\b(import|export)\s+/,weight:3},{regex:/\b(const|let|var)\s+\w+\s*[:=]/,weight:2},{regex:/=>/,weight:1},{regex:/\.tsx?['"]/,weight:2}]},{lang:`javascript`,patterns:[{regex:/\b(import|export|require)\s*[({]/,weight:3},{regex:/\b(const|let|var)\s+\w+\s*=\s*require/,weight:2},{regex:/\bmodule\.exports/,weight:3},{regex:/\.jsx?['"]/,weight:2}]},{lang:`python`,patterns:[{regex:/^\s*def\s+\w+\s*\(/,weight:4},{regex:/^\s*class\s+\w+.*:/,weight:3},{regex:/\bimport\s+\w+/,weight:2},{regex:/\bfrom\s+\w+\s+import/,weight:3},{regex:/\bprint\(/,weight:1},{regex:/\bself\./,weight:2},{regex:/if\s+__name__\s*==\s*['"]__main__['"]/,weight:4}]},{lang:`rust`,patterns:[{regex:/\bfn\s+\w+\s*[<(]/,weight:4},{regex:/\blet\s+mut\s/,weight:3},{regex:/\b(struct|enum|impl|trait|mod)\s+\w+/,weight:3},{regex:/\bpub\s+(fn|struct|enum)/,weight:3},{regex:/->\s*\w+/,weight:1},{regex:/::\w+/,weight:1}]},{lang:`go`,patterns:[{regex:/\bfunc\s+\w+\s*\(/,weight:4},{regex:/\bpackage\s+\w+/,weight:4},{regex:/\bimport\s*\(/,weight:3},{regex:/\b(err|nil)\b/,weight:2},{regex:/:=/,weight:2},{regex:/\bdefer\s/,weight:2}]},{lang:`json`,patterns:[{regex:/^\s*[{[]/,weight:3},{regex:/"[^"]+"\s*:\s*/,weight:3},{regex:/^\s*[}\]]\s*$/,weight:1}]},{lang:`yaml`,patterns:[{regex:/^---\s*$/,weight:4},{regex:/^\s*\w[\w.-]*:\s/,weight:2},{regex:/^\s*-\s+\w/,weight:1}]},{lang:`html`,patterns:[{regex:/<(!DOCTYPE|html|head|body|div|span|a|p|ul|li|table)/i,weight:4},{regex:/<\/?\w+[\s>]/,weight:2},{regex:/\b(class|id|href|src)="/,weight:2}]},{lang:`css`,patterns:[{regex:/[{]\s*$/,weight:1},{regex:/^\s*[.#@]\S+\s*[{]/,weight:3},{regex:/\b(\d+px|\d+em|\d+rem|\d+vh|\d+vw)\b/,weight:3},{regex:/:\s*\w+\s*!important/,weight:3},{regex:/@(media|keyframes|import|apply)/,weight:3}]},{lang:`sql`,patterns:[{regex:/\b(SELECT|INSERT|UPDATE|DELETE|CREATE TABLE|ALTER TABLE|DROP TABLE)\b/i,weight:4},{regex:/\bFROM\s+\w+/i,weight:2},{regex:/\bWHERE\s+/i,weight:2},{regex:/\b(JOIN|INNER JOIN|LEFT JOIN)\b/i,weight:2}]},{lang:`bash`,patterns:[{regex:/^#!\/.*(bash|sh|zsh)/,weight:5},{regex:/\becho\s/,weight:2},{regex:/\bexport\s+\w+=/,weight:2},{regex:/\bif\s+\[\[?\s/,weight:2},{regex:/\$\{?\w+/,weight:1},{regex:/&&|\|\|/,weight:1}]},{lang:`toml`,patterns:[{regex:/^\s*\[.*\]\s*$/,weight:3},{regex:/^\s*\w+\s*=\s*['"]/,weight:2},{regex:/^\s*\[\[.*\]\]\s*$/,weight:3}]}],Ql=6,$l=3,eu=180;function tu(e){let t=e.split(`
97
+ `);if(t.length<$l)return!1;let n=0,r=0;for(let e of t){let t=e.trim();t.length!==0&&(t.length>eu&&r++,/^ {2,}/.test(e)&&n++,/[.!?]$/.test(t)&&r++,/[{}();=<>[\]]/.test(t)&&n++,/[#$]/.test(t)&&!/^# /.test(t)&&n++)}return n>=r&&n>=2}function nu(e){if(!tu(e))return null;let t={};for(let n of Zl){let r=0;for(let{regex:t,weight:i}of n.patterns){let n=e.match(new RegExp(t.source,t.flags.includes(`g`)?t.flags:`${t.flags}g`));n&&(r+=n.length*i)}r>0&&(t[n.lang]=r)}t.javascript&&t.typescript&&(t.typescript>=t.javascript?delete t.javascript:t.javascript>t.typescript&&delete t.typescript);let n=null,r=0;for(let[e,i]of Object.entries(t))i>r&&(r=i,n=e);return r>=Ql?n:null}function ru(e){let t=e.trim();return/^```[\s\S]*```\s*$/.test(t)}function iu(e){if(ru(e))return null;let t=nu(e);return t?{fenced:`\`\`\`${t}\n${e}\n\`\`\``,lang:t}:null}function au(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=()=>n(r.error),r.readAsDataURL(e)})}function ou({input:e,textareaRef:t,setInput:n,setAtMention:r}){let[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(!1),c=(0,U.useRef)(null),[l,u]=(0,U.useState)(null),d=e=>{c.current=e,u(e)};return(0,U.useEffect)(()=>{let e=t.current;if(!e)return;let n=async e=>{let t=e.clipboardData?.items;if(t){for(let n of t)if(n.type.startsWith(`image/`)){e.preventDefault();try{let e=n.getAsFile();if(!e)continue;let t=new FileReader;t.onload=()=>{d(t.result)},t.readAsDataURL(e)}catch{}return}}};return e.addEventListener(`paste`,n),()=>e.removeEventListener(`paste`,n)},[t]),{draggingOver:o,onDragEnter:e=>{!e.dataTransfer||!Array.from(e.dataTransfer.types).includes(`Files`)||(e.preventDefault(),s(!0))},onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||s(!1)},onDragOver:e=>{!e.dataTransfer||!Array.from(e.dataTransfer.types).includes(`Files`)||(e.preventDefault(),e.dataTransfer.dropEffect=`copy`)},onDrop:i=>{if(!i.dataTransfer)return;let a=Array.from(i.dataTransfer.files??[]);if(a.length===0){s(!1);return}i.preventDefault(),s(!1);let o=a.find(e=>e.type?.startsWith(`image/`));o&&au(o).then(e=>d(e)).catch(()=>{});let c=a.filter(e=>!e.type?.startsWith(`image/`));if(c.length===0)return;let l=t.current,u=l?.selectionStart??e.length,f=e.slice(0,u),p=e.slice(u),m=f.length>0&&!/\s$/.test(f)?` `:``,h=c.map(e=>`@${e.name}`),g=h.join(` `),_=p.length===0||!/^\s/.test(p)?` `:``,v=`${m}${g}${_}`;n(f+v+p);let y=f.length+m.length+h.slice(0,-1).join(` `).length+ +(h.length>1),b=c[c.length-1]?.name??``;requestAnimationFrame(()=>{if(l){let e=f.length+v.length-_.length;l.focus(),l.setSelectionRange(e,e),l.style.height=`auto`,l.style.height=`${Math.min(l.scrollHeight,200)}px`}r({start:y,query:b})})},onTextPaste:r=>{let i=r.clipboardData?.getData(`text`)??``;if(!i)return;let o=iu(i);if(o){r.preventDefault();let s=t.current;if(!s)return;let c=s.selectionStart,l=s.selectionEnd,u=e.slice(0,c),d=e.slice(l),f=o.fenced;n(u+f+d);let p=i.split(`
98
+ `).length;a({chars:i.length,lines:p,lang:o.lang,undoFence:()=>{n(u+i+d),a(null),requestAnimationFrame(()=>{s&&(s.focus(),s.style.height=`auto`,s.style.height=`${Math.min(s.scrollHeight,200)}px`)})}}),setTimeout(()=>a(null),6e3),requestAnimationFrame(()=>{s.style.height=`auto`,s.style.height=`${Math.min(s.scrollHeight,200)}px`;let e=u.length+f.length;s.setSelectionRange(e,e)});return}if(i.length>800){let e=i.split(`
99
+ `).length;a({chars:i.length,lines:e}),setTimeout(()=>a(null),4e3)}},pasteHint:i,pendingImageRef:c,pendingImage:l,clearPendingImage:()=>d(null),setPasteHint:a}}function su({original:e,refined:t,english:n,onDecision:r,autoSendDelayMs:i=0}){let a=J(e=>e.setRefinePanel),[o,s]=(0,U.useState)(i>0?Math.ceil(i/1e3):null),[c,l]=(0,U.useState)(t),[u,d]=(0,U.useState)(!1),f=(0,U.useRef)(null),p=(0,U.useRef)(null);(0,U.useEffect)(()=>{if(!(i<=0||u))return f.current=setInterval(()=>{s(e=>e===null||e<=1?(clearInterval(f.current),r(`refined`),null):e-1)},1e3),()=>{f.current&&clearInterval(f.current)}},[i,u,r]),(0,U.useEffect)(()=>{let e=e=>{if(!(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement))switch(e.key){case`Enter`:u||(e.preventDefault(),r(`refined`));break;case`e`:case`E`:u||(e.preventDefault(),r(`english`));break;case`o`:case`O`:u||(e.preventDefault(),r(`original`));break;case`t`:case`T`:u||(e.preventDefault(),d(!0));break;case`Escape`:e.preventDefault(),u?(d(!1),l(t)):(a(null),r(`original`));break}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[u,r,t,a]),(0,U.useEffect)(()=>{u&&p.current&&p.current.querySelector(`textarea`)?.focus()},[u]);let m=e=>{f.current&&clearInterval(f.current),a(null),r(e)};return(0,Y.jsxs)(`div`,{ref:p,className:`rounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden animate-message`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b bg-muted/30`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium`,children:`✨ Refine Prompt`}),o!==null&&!u&&(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`auto-send in `,o,`s`]})]}),(0,Y.jsx)(`button`,{onClick:()=>m(`original`),className:`text-muted-foreground hover:text-foreground transition-colors`,title:`Cancel (Esc)`,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]}),(0,Y.jsx)(`div`,{className:`p-4 space-y-3`,children:u?(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(`label`,{className:`text-xs text-muted-foreground font-medium`,children:`Edit refined prompt:`}),(0,Y.jsx)(`textarea`,{value:c,onChange:e=>l(e.target.value),className:`w-full min-h-[80px] rounded-md border border-input bg-background px-3 py-2 text-sm resize-none focus:outline-none focus:ring-2 focus:ring-ring`,placeholder:`Edit the refined prompt...`}),(0,Y.jsxs)(`div`,{className:`flex gap-2 justify-end`,children:[(0,Y.jsx)($,{variant:`outline`,size:`sm`,onClick:()=>{d(!1),l(t)},children:`Cancel`}),(0,Y.jsxs)($,{size:`sm`,onClick:()=>{c.trim()&&m(`edit`)},disabled:!c.trim(),children:[(0,Y.jsx)(jn,{className:`h-3 w-3 mr-1`}),`Use Edit`]})]})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(`div`,{className:`flex items-center gap-1 text-xs text-muted-foreground font-medium uppercase tracking-wider`,children:`Original`}),(0,Y.jsx)(`div`,{className:`text-sm text-muted-foreground bg-muted/30 rounded-md px-3 py-2`,children:e.length>200?e.slice(0,200)+`...`:e})]}),(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 text-xs text-yellow-600 dark:text-yellow-400 font-medium uppercase tracking-wider`,children:[`Refined `,(0,Y.jsx)(`span`,{className:`text-muted-foreground font-normal`,children:`(your language)`})]}),(0,Y.jsx)(`div`,{className:Z(`text-sm bg-yellow-500/10 border border-yellow-500/20 rounded-md px-3 py-2 cursor-pointer`,`hover:bg-yellow-500/20 transition-colors`),onClick:()=>m(`refined`),title:`Click or press Enter to use this version`,children:t.length>300?t.slice(0,300)+`...`:t})]}),(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 text-xs text-blue-600 dark:text-blue-400 font-medium uppercase tracking-wider`,children:[(0,Y.jsx)(Ae,{className:`h-3 w-3`}),`English`]}),(0,Y.jsx)(`div`,{className:Z(`text-sm bg-blue-500/10 border border-blue-500/20 rounded-md px-3 py-2 cursor-pointer`,`hover:bg-blue-500/20 transition-colors`),onClick:()=>m(`english`),title:`Press e to use English version`,children:n.length>300?n.slice(0,300)+`...`:n})]})]})}),!u&&(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2 px-4 py-3 border-t bg-muted/20`,children:[(0,Y.jsxs)(`div`,{className:`flex gap-1 text-xs text-muted-foreground`,children:[(0,Y.jsx)(`kbd`,{className:`px-1.5 py-0.5 rounded bg-muted border font-mono`,children:`Enter`}),(0,Y.jsx)(`span`,{children:`refined`}),(0,Y.jsx)(`kbd`,{className:`px-1.5 py-0.5 rounded bg-muted border font-mono ml-2`,children:`e`}),(0,Y.jsx)(`span`,{children:`English`}),(0,Y.jsx)(`kbd`,{className:`px-1.5 py-0.5 rounded bg-muted border font-mono ml-2`,children:`o`}),(0,Y.jsx)(`span`,{children:`original`}),(0,Y.jsx)(`kbd`,{className:`px-1.5 py-0.5 rounded bg-muted border font-mono ml-2`,children:`t`}),(0,Y.jsx)(`span`,{children:`edit`})]}),(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Y.jsxs)($,{variant:`ghost`,size:`sm`,onClick:()=>m(`original`),className:`text-xs`,children:[(0,Y.jsx)(H,{className:`h-3 w-3 mr-1`}),`Original`]}),(0,Y.jsxs)($,{variant:`outline`,size:`sm`,onClick:()=>d(!0),className:`text-xs`,children:[(0,Y.jsx)(Dn,{className:`h-3 w-3 mr-1`}),`Edit`]}),(0,Y.jsxs)($,{size:`sm`,onClick:()=>m(`refined`),className:`text-xs bg-yellow-600 hover:bg-yellow-700 text-white`,children:[(0,Y.jsx)(jn,{className:`h-3 w-3 mr-1`}),`Use Refined`]})]})]})]})}var cu={builtin:`📦`,user:`👤`,project:`📁`,synced:`☁`},lu={title:``,description:``,category:``,tagsCsv:``,content:``,vars:[]};function uu(e,t){return e.replace(/\{\{\s*([\w.-]+)\s*\}\}/g,(e,n)=>Object.hasOwn(t,n.trim())&&t[n.trim()]?t[n.trim()]:e)}function du(){let{client:e}=Vs(),t=J(e=>e.promptLibraryOpen),n=J(e=>e.setPromptLibraryOpen),r=J(e=>e.requestPromptInsert),[i,a]=(0,U.useState)([]),[o,s]=(0,U.useState)([]),[c,l]=(0,U.useState)(``),[u,d]=(0,U.useState)(null),[f,p]=(0,U.useState)(!1),[m,h]=(0,U.useState)(!1),[g,_]=(0,U.useState)([]),[v,y]=(0,U.useState)(null),[b,x]=(0,U.useState)(``),[S,C]=(0,U.useState)({}),w=(0,U.useRef)(null),[T,E]=(0,U.useState)(!1),[D,O]=(0,U.useState)(lu),[k,A]=(0,U.useState)(null);(0,U.useEffect)(()=>{if(!t||!e)return;let n=e=>{let t=e.payload;a(t.prompts??[]),s(t.categories??[])};return e.on(`prompts.list`,n),e.send({type:`prompts.list`}),setTimeout(()=>w.current?.focus(),50),()=>e.off(`prompts.list`,n)},[t,e]),(0,U.useEffect)(()=>{if(!v||!e)return;x(``),C(Object.fromEntries((v.variables??[]).map(e=>[e.name,e.default??``])));let t=e=>{let t=e.payload;t.slug===v.slug&&t.found&&x(t.content)};return e.on(`prompts.content`,t),e.send({type:`prompts.content`,payload:{slug:v.slug}}),()=>e.off(`prompts.content`,t)},[v,e]),(0,U.useEffect)(()=>{if(!t)return;let e=e=>{e.key===`Escape`&&n(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,n]),(0,U.useEffect)(()=>{if(!t||!e||!m)return;let n=e=>{_(e.payload.slugs??[])};return e.on(`prompts.recent`,n),e.send({type:`prompts.recent`}),()=>e.off(`prompts.recent`,n)},[t,e,m]);let j=(0,U.useMemo)(()=>{let e=c.trim().toLowerCase(),t=t=>!e||t.title.toLowerCase().includes(e)||t.description.toLowerCase().includes(e)||t.slug.includes(e)||t.tags.some(t=>t.toLowerCase().includes(e));if(m){let e=new Map(i.map(e=>[e.slug,e]));return g.map(t=>e.get(t)).filter(e=>!!e).filter(t)}return i.filter(e=>f&&!e.favorite||u&&e.category!==u?!1:t(e))},[i,c,u,f,m,g]),M=(0,U.useMemo)(()=>(v?.variables??[]).filter(e=>e.required&&!S[e.name]).map(e=>e.name),[v,S]),N=(0,U.useCallback)(()=>{!v||!b||(e?.send({type:`prompts.used`,payload:{slug:v.slug}}),r(uu(b,S)))},[v,b,S,r,e]),P=(0,U.useCallback)(t=>{e&&(e.send({type:`prompts.favorite`,payload:{slug:t.slug,favorite:!t.favorite}}),a(e=>e.map(e=>e.slug===t.slug?{...e,favorite:!e.favorite}:e)))},[e]);(0,U.useEffect)(()=>{if(!t||!e)return;let n=t=>{let n=t.payload;n.success?(E(!1),O(lu),A(null),e.send({type:`prompts.list`})):A(n.error??`Could not save the prompt.`)};return e.on(`prompts.created`,n),()=>e.off(`prompts.created`,n)},[t,e]);let F=(0,U.useCallback)(()=>{if(!e)return;if(!D.title.trim()||!D.content.trim()){A(`Title and content are required.`);return}let t=D.vars.filter(e=>e.name.trim()).map(e=>{let t=e.enumCsv.split(`,`).map(e=>e.trim()).filter(Boolean);return{name:e.name.trim(),...e.description.trim()?{description:e.description.trim()}:{},required:e.required,...e.multiline?{multiline:!0}:{},...t.length>0?{enum:t}:{}}});e.send({type:`prompts.create`,payload:{title:D.title.trim(),content:D.content,description:D.description.trim(),category:D.category.trim()||void 0,tags:D.tagsCsv.split(`,`).map(e=>e.trim()).filter(Boolean),...t.length>0?{variables:t}:{}}})},[e,D]);return t?(0,Y.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4`,onClick:()=>n(!1),children:(0,Y.jsxs)(`div`,{className:`flex h-[80vh] w-full max-w-4xl overflow-hidden rounded-lg border border-border bg-popover shadow-xl`,onClick:e=>e.stopPropagation(),children:[(0,Y.jsxs)(`div`,{className:`flex w-1/2 flex-col border-r border-border`,children:[(0,Y.jsxs)(`div`,{className:`border-b border-border p-3`,children:[(0,Y.jsx)(`input`,{ref:w,value:c,onChange:e=>l(e.target.value),placeholder:`Search prompts…`,className:`w-full rounded border border-border bg-background px-3 py-2 text-sm outline-none focus:ring-1 focus:ring-primary`}),(0,Y.jsx)(`button`,{onClick:()=>{E(!0),y(null),A(null),O(lu)},className:`mt-2 w-full rounded border border-dashed border-border px-2 py-1 text-xs text-muted-foreground hover:bg-accent hover:text-foreground`,children:`+ New prompt`}),(0,Y.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:[(0,Y.jsx)(`button`,{onClick:()=>{d(null),p(!1),h(!1)},className:`rounded px-2 py-0.5 text-xs ${u===null&&!f&&!m?`bg-primary text-primary-foreground`:`bg-muted text-muted-foreground hover:bg-accent`}`,children:`All`}),(0,Y.jsx)(`button`,{onClick:()=>{h(e=>!e),p(!1),d(null)},className:`rounded px-2 py-0.5 text-xs ${m?`bg-primary text-primary-foreground`:`bg-muted text-muted-foreground hover:bg-accent`}`,children:`🕘 Recent`}),(0,Y.jsx)(`button`,{onClick:()=>{p(e=>!e),h(!1),d(null)},className:`rounded px-2 py-0.5 text-xs ${f?`bg-yellow-500 text-black`:`bg-muted text-muted-foreground hover:bg-accent`}`,children:`★ Favorites`}),o.map(e=>(0,Y.jsxs)(`button`,{onClick:()=>{d(e.id),h(!1),p(!1)},className:`rounded px-2 py-0.5 text-xs ${u===e.id?`bg-primary text-primary-foreground`:`bg-muted text-muted-foreground hover:bg-accent`}`,children:[e.label,` (`,e.count,`)`]},e.id))]})]}),(0,Y.jsxs)(`div`,{className:`flex-1 overflow-auto`,children:[j.map(e=>(0,Y.jsxs)(`button`,{onClick:()=>y(e),className:`flex w-full flex-col items-start gap-0.5 border-b border-border/50 px-3 py-2 text-left hover:bg-accent ${v?.slug===e.slug?`bg-accent`:``}`,children:[(0,Y.jsxs)(`div`,{className:`flex w-full items-center gap-1 text-sm`,children:[(0,Y.jsx)(`span`,{children:cu[e.source]??`•`}),(0,Y.jsx)(`span`,{className:`font-medium`,children:e.title}),e.favorite&&(0,Y.jsx)(`span`,{className:`text-yellow-500`,children:`★`})]}),(0,Y.jsx)(`div`,{className:`line-clamp-1 text-xs text-muted-foreground`,children:e.description})]},e.slug)),j.length===0&&(0,Y.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:`No prompts match.`})]})]}),(0,Y.jsx)(`div`,{className:`flex w-1/2 flex-col`,children:T?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border p-3`,children:[(0,Y.jsx)(`div`,{className:`text-sm font-semibold`,children:`New prompt`}),(0,Y.jsx)(`button`,{onClick:()=>{E(!1),A(null)},className:`text-xs text-muted-foreground hover:text-foreground`,children:`Cancel`})]}),(0,Y.jsxs)(`div`,{className:`flex-1 space-y-2 overflow-auto p-3 text-xs`,children:[(0,Y.jsx)(`input`,{value:D.title,onChange:e=>O(t=>({...t,title:e.target.value})),placeholder:`Title *`,className:`w-full rounded border border-border bg-background px-2 py-1 outline-none`}),(0,Y.jsx)(`input`,{value:D.description,onChange:e=>O(t=>({...t,description:e.target.value})),placeholder:`One-line description`,className:`w-full rounded border border-border bg-background px-2 py-1 outline-none`}),(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Y.jsx)(`input`,{list:`prompt-category-list`,value:D.category,onChange:e=>O(t=>({...t,category:e.target.value})),placeholder:`Category`,className:`w-1/2 rounded border border-border bg-background px-2 py-1 outline-none`}),(0,Y.jsx)(`datalist`,{id:`prompt-category-list`,children:o.map(e=>(0,Y.jsx)(`option`,{value:e.id},e.id))}),(0,Y.jsx)(`input`,{value:D.tagsCsv,onChange:e=>O(t=>({...t,tagsCsv:e.target.value})),placeholder:`tags, comma, separated`,className:`w-1/2 rounded border border-border bg-background px-2 py-1 outline-none`})]}),(0,Y.jsx)(`textarea`,{value:D.content,onChange:e=>O(t=>({...t,content:e.target.value})),placeholder:`Prompt content * — use {{name}} for variables`,rows:6,className:`w-full resize-y rounded border border-border bg-background px-2 py-1 font-mono outline-none`}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between pt-1`,children:[(0,Y.jsx)(`span`,{className:`font-semibold text-muted-foreground`,children:`Variables`}),(0,Y.jsx)(`button`,{onClick:()=>O(e=>({...e,vars:[...e.vars,{name:``,description:``,required:!0,multiline:!1,enumCsv:``}]})),className:`rounded border border-border px-1.5 py-0.5 hover:bg-accent`,children:`+ var`})]}),D.vars.map((e,t)=>(0,Y.jsxs)(`div`,{className:`space-y-1 rounded border border-border/60 p-1.5`,children:[(0,Y.jsxs)(`div`,{className:`flex gap-1`,children:[(0,Y.jsx)(`input`,{value:e.name,onChange:e=>O(n=>({...n,vars:n.vars.map((n,r)=>r===t?{...n,name:e.target.value}:n)})),placeholder:`name`,className:`w-1/3 rounded border border-border bg-background px-1.5 py-0.5 outline-none`}),(0,Y.jsx)(`input`,{value:e.description,onChange:e=>O(n=>({...n,vars:n.vars.map((n,r)=>r===t?{...n,description:e.target.value}:n)})),placeholder:`description`,className:`flex-1 rounded border border-border bg-background px-1.5 py-0.5 outline-none`}),(0,Y.jsx)(`button`,{onClick:()=>O(e=>({...e,vars:e.vars.filter((e,n)=>n!==t)})),className:`rounded border border-border px-1.5 text-muted-foreground hover:bg-accent`,title:`Remove variable`,children:`✕`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsxs)(`label`,{className:`flex items-center gap-1 text-muted-foreground`,children:[(0,Y.jsx)(`input`,{type:`checkbox`,checked:e.required,onChange:e=>O(n=>({...n,vars:n.vars.map((n,r)=>r===t?{...n,required:e.target.checked}:n)}))}),`required`]}),(0,Y.jsxs)(`label`,{className:`flex items-center gap-1 text-muted-foreground`,children:[(0,Y.jsx)(`input`,{type:`checkbox`,checked:e.multiline,onChange:e=>O(n=>({...n,vars:n.vars.map((n,r)=>r===t?{...n,multiline:e.target.checked}:n)}))}),`multiline`]}),(0,Y.jsx)(`input`,{value:e.enumCsv,onChange:e=>O(n=>({...n,vars:n.vars.map((n,r)=>r===t?{...n,enumCsv:e.target.value}:n)})),placeholder:`enum: a, b, c`,className:`flex-1 rounded border border-border bg-background px-1.5 py-0.5 outline-none`})]})]},t))]}),(0,Y.jsxs)(`div`,{className:`border-t border-border p-3`,children:[k&&(0,Y.jsx)(`div`,{className:`mb-2 text-xs text-red-500`,children:k}),(0,Y.jsx)(`button`,{onClick:F,disabled:!D.title.trim()||!D.content.trim(),className:`w-full rounded bg-primary px-3 py-2 text-sm text-primary-foreground disabled:opacity-50`,children:`Save prompt`})]})]}):v?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`flex items-start justify-between border-b border-border p-3`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`text-sm font-semibold`,children:v.title}),(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[v.category,` · `,v.slug]})]}),(0,Y.jsx)(`button`,{onClick:()=>P(v),className:`text-lg`,title:`Toggle favorite`,children:v.favorite?`★`:`☆`})]}),(0,Y.jsxs)(`div`,{className:`flex-1 overflow-auto p-3`,children:[(0,Y.jsx)(`pre`,{className:`whitespace-pre-wrap break-words text-xs text-foreground`,children:b||`…`}),(v.variables??[]).length>0&&(0,Y.jsxs)(`div`,{className:`mt-3 space-y-2`,children:[(0,Y.jsx)(`div`,{className:`text-xs font-semibold text-muted-foreground`,children:`Variables`}),v.variables.map(e=>{let t=(0,Y.jsxs)(`label`,{className:`text-xs text-muted-foreground`,children:[e.name,e.required?` *`:``,e.description?` — ${e.description}`:``]}),n=t=>C(n=>({...n,[e.name]:t})),r=`mt-0.5 w-full rounded border border-border bg-background px-2 py-1 text-xs outline-none`;return e.enum&&e.enum.length>0?(0,Y.jsxs)(`div`,{children:[t,(0,Y.jsxs)(`select`,{value:S[e.name]??``,onChange:e=>n(e.target.value),className:r,children:[(0,Y.jsx)(`option`,{value:``,children:`— select —`}),e.enum.map(e=>(0,Y.jsx)(`option`,{value:e,children:e},e))]})]},e.name):e.multiline?(0,Y.jsxs)(`div`,{children:[t,(0,Y.jsx)(`textarea`,{value:S[e.name]??``,onChange:e=>n(e.target.value),rows:4,className:`${r} resize-y font-mono`})]},e.name):(0,Y.jsxs)(`div`,{children:[t,(0,Y.jsx)(`input`,{value:S[e.name]??``,onChange:e=>n(e.target.value),className:r})]},e.name)})]})]}),(0,Y.jsx)(`div`,{className:`border-t border-border p-3`,children:(0,Y.jsx)(`button`,{onClick:N,disabled:!b||M.length>0,className:`w-full rounded bg-primary px-3 py-2 text-sm text-primary-foreground disabled:opacity-50`,children:M.length>0?`Fill: ${M.join(`, `)}`:`Insert into chat`})})]}):(0,Y.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-4 text-sm text-muted-foreground`,children:`Select a prompt to preview and insert.`})})]})}):null}function fu({onOpenBreakdown:e}={}){let{isLoading:t,setLoading:n,addMessage:r,clearMessages:i}=G(),a=G(e=>e.messages).length>0,o=G(e=>e.queue),s=G(e=>e.enqueue),c=G(e=>e.removeQueued),l=G(e=>e.clearQueue),{setCurrentView:u}=J(),d=J(e=>e.pushPrompt),f=J(e=>e.promptHistory),p=Vs(),{sendMessage:m,sendAbort:h,client:g,refineModel:_}=p,v=J(e=>e.refineEnabled),y=J(e=>e.refinePanel),b=J(e=>e.promptInsertRequest),x=J(e=>e.clearPromptInsert),S=J(e=>e.toggleRefineEnabled),C=J(e=>e.setRefinePanel),w=J(e=>e.setProcessMonitorOpen),T=J(e=>e.setQueuePanelOpen),{reset:E}=Pl(),D=q(e=>e.lastInputTokens),O=q(e=>e.maxContext),[k,A]=(0,U.useState)(``),[j,M]=(0,U.useState)(0),[N,P]=(0,U.useState)(-1),[F,I]=(0,U.useState)(null),L=(0,U.useRef)(null),{draggingOver:R,onDragEnter:z,onDragLeave:ee,onDragOver:te,onDrop:ne,onTextPaste:re,pasteHint:B,pendingImageRef:V,pendingImage:ie,clearPendingImage:ae,setPasteHint:oe}=ou({input:k,textareaRef:L,setInput:A,setAtMention:I});(0,U.useEffect)(()=>{b!=null&&(A(e=>e.trim()?`${e}\n${b}`:b),x(),requestAnimationFrame(()=>L.current?.focus()))},[b,x]);let se=(0,U.useCallback)(t=>Xl({raw:t,addMessage:r,clearMessages:i,client:g,queue:o,sendAbort:h,sendMsg:fe,setLoading:n,setCurrentView:u,toggleRefineEnabled:S,setProcessMonitorOpen:w,setQueuePanelOpen:T,ws:p,onOpenBreakdown:e,handleNextList:pe,handleNextSelect:me}),[r,i,g,o,h,n,u,S,w,T,p,e]),ce=/💡\s*Next steps?\s*\n+((?:\d+\.\s+.+\n?)+)/i;function le(e){let t=ce.exec(e);if(!t?.[1])return[];let n=[];for(let e of t[1].split(`
100
+ `).filter(Boolean)){let t=/^(\d+)\.\s+(.+)$/.exec(e.trim());t&&n.push({index:Number.parseInt(t[1],10),text:t[2].trim()})}return n.slice(0,6)}function de(){let e=G.getState().messages;for(let t=e.length-1;t>=0;t--){let n=e[t];if(n?.role===`assistant`&&n.content)return le(n.content)}return[]}function fe(e){if(t){s(e);return}r({role:`user`,content:e}),m(e)&&n(!0)}function pe(){let e=G.getState().messages,t=``;for(let n=e.length-1;n>=0;n--){let r=e[n];if(r?.role===`assistant`&&r.content){t=r.content;break}}let n=le(t);if(n.length===0)return r({role:`assistant`,content:"💡 _No next-step suggestions found. Use `/suggest` to generate some._"}),!0;let i=[`💡 **Next steps**`,``];for(let e of n)i.push(`${e.index}. ${e.text}`);return i.push(``,"_Use `/next 1`, `/next 1 2 3` to execute._"),r({role:`assistant`,content:i.join(`
101
+ `)}),!0}function me(e){let t=de();if(t.length===0)return r({role:`assistant`,content:"💡 _No suggestions available. Use `/suggest` first._"}),!0;let n=e.split(/[\s,]+/).filter(Boolean).map(e=>Number.parseInt(e,10)).filter(e=>!Number.isNaN(e)&&e>0);if(n.length===0)return r({role:`assistant`,content:`💡 _No valid suggestion numbers._`}),!0;let i=n.filter(e=>e>t.length);if(i.length>0)return r({role:`assistant`,content:`💡 _Invalid suggestion(s): ${i.join(`, `)}. Valid range: 1–${t.length}._`}),!0;for(let e of n){let n=t[e-1];n&&fe(n.text)}return!0}let he=k.startsWith(`/`)&&!k.includes(` `)?Vl(k):[];(0,U.useEffect)(()=>{j>=he.length&&M(0)},[he.length,j]);let ge=(0,U.useCallback)(()=>{let e=L.current;e&&(e.value=``,e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,200)}px`,t||e.focus())},[t]),_e=(0,U.useCallback)(async e=>{if(E(),!k.trim()&&!V.current)return;let i=V.current;ae();let a=k.trim();if(a.startsWith(`/`)&&se(a)){d(a),A(``),P(-1),ge();return}A(``),P(-1),ge(),d(a),ge();let o=i?`![pasted image](${i})\n\n${a}`:a;if(e===`queue`){s(o,`queue`);return}let c=e===`steer`&&t;if(e===`btw`&&t){s(o,`btw`);return}c&&h();try{g?.isConnected?v&&_?(C({original:a,refined:a,english:a,resolve:e=>{}}),_(a)):(r({role:`user`,content:o}),n(!0),m(a,i??void 0)):console.warn(JSON.stringify({level:`warn`,event:`ws_send_failed`,reason:`not_connected`,timestamp:new Date().toISOString()}))}catch(e){console.warn(JSON.stringify({level:`warn`,event:`ws_send_error`,error:Br(e),timestamp:new Date().toISOString()})),n(!1)}},[k,t,s,g,m,h,_,v,C,r,n,se,d,ge,E,ae,V]),ve=(0,U.useCallback)(e=>{e.preventDefault(),_e(`btw`)},[_e]),ye=(0,U.useCallback)(()=>{_e(`btw`)},[_e]),be=(0,U.useCallback)(()=>{_e(`steer`)},[_e]),xe=(0,U.useCallback)(()=>{_e(`queue`)},[_e]),Se=(0,U.useCallback)(()=>{h(),n(!1)},[h,n]),Ce=(0,U.useCallback)(()=>{h(),n(!1);let e=G.getState().messages;for(let t=e.length-1;t>=0;t--){let n=Rr(e[t]);if(n.role===`user`&&n.content){A(n.content),requestAnimationFrame(()=>{let e=L.current;e&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,200)}px`,e.focus(),e.setSelectionRange(n.content.length,n.content.length))});return}}},[h,n]),we=(0,U.useCallback)(e=>{if(he.length===0&&!F&&f.length>0){if(e.key===`ArrowUp`){let t=e.currentTarget,n=t.value.slice(0,t.selectionStart);if(N>=0||n.indexOf(`
102
+ `)===-1){e.preventDefault();let t=Math.min(f.length-1,N+1);P(t);let n=f[t]??``;A(n),requestAnimationFrame(()=>{let e=L.current;e&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,200)}px`,e.setSelectionRange(n.length,n.length))});return}}if(e.key===`ArrowDown`&&N>=0){e.preventDefault();let t=N-1;if(t<0)P(-1),A(``);else{P(t);let e=f[t]??``;A(e),requestAnimationFrame(()=>{let t=L.current;t&&(t.style.height=`auto`,t.style.height=`${Math.min(t.scrollHeight,200)}px`,t.setSelectionRange(e.length,e.length))})}return}}if(he.length>0){if(e.key===`ArrowDown`){e.preventDefault(),M(e=>(e+1)%he.length);return}if(e.key===`ArrowUp`){e.preventDefault(),M(e=>(e-1+he.length)%he.length);return}if(e.key===`Tab`){e.preventDefault();let t=he[j];t&&(A(t.name+` `),M(0));return}if(e.key===`Enter`&&!e.shiftKey){let t=he[j];if(t&&t.name!==k.toLowerCase().trim()){e.preventDefault(),A(``),se(t.name);return}}if(e.key===`Escape`){e.preventDefault(),A(``);return}}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),ve(e))},[he,j,F,f,N,k,se,ve]),Te=()=>{let e=L.current;e&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,200)}px`)};return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Y.jsx)(du,{}),B&&(0,Y.jsxs)(`div`,{className:Z(`rounded-md border px-2.5 py-1.5 text-xs flex items-center justify-between gap-2 animate-message`,B.lang?`border-emerald-500/30 bg-emerald-500/5 text-emerald-700 dark:text-emerald-300`:`border-amber-500/30 bg-amber-500/5 text-amber-700 dark:text-amber-300`),children:[(0,Y.jsx)(`span`,{children:B.lang?(0,Y.jsxs)(Y.Fragment,{children:[`Auto-fenced as `,(0,Y.jsx)(`span`,{className:`font-mono font-semibold`,children:B.lang}),` — `,(0,Y.jsx)(`span`,{className:`font-mono tabular-nums`,children:B.chars.toLocaleString()}),` `,`chars`,` (`,(0,Y.jsx)(`span`,{className:`font-mono tabular-nums`,children:B.lines}),` lines)`]}):(0,Y.jsxs)(Y.Fragment,{children:[`Pasted`,` `,(0,Y.jsx)(`span`,{className:`font-mono tabular-nums`,children:B.chars.toLocaleString()}),` `,`chars`,` (`,(0,Y.jsx)(`span`,{className:`font-mono tabular-nums`,children:B.lines}),` lines) — fenced code blocks render best with `,(0,Y.jsx)(`span`,{className:`font-mono`,children:"```"}),`.`]})}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[B.undoFence&&(0,Y.jsx)(`button`,{type:`button`,onClick:B.undoFence,className:`underline underline-offset-2 hover:opacity-80`,title:`Remove fences and restore raw text`,children:`Undo`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>oe(null),className:`opacity-60 hover:opacity-100 shrink-0`,title:`Dismiss`,children:`×`})]})]}),ie&&(0,Y.jsxs)(`div`,{className:`mb-2 inline-flex items-center gap-2 rounded-lg border border-border bg-muted/40 px-2 py-1.5`,children:[(0,Y.jsx)(`img`,{src:ie,alt:`Pending attachment`,className:`h-12 w-12 rounded object-cover border border-border/50`}),(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Image attached`}),(0,Y.jsx)(`button`,{type:`button`,onClick:ae,title:`Remove image`,className:`inline-flex items-center justify-center h-5 w-5 rounded text-muted-foreground hover:bg-muted hover:text-foreground transition-colors`,children:`×`})]}),(0,Y.jsx)(Rl,{queue:o,onClear:l,onRemove:c}),y&&(0,Y.jsx)(su,{original:y.original,refined:y.refined,english:y.english,onDecision:e=>{let{original:t,refined:i,english:a}=y,o=t;if(e===`refined`?o=i:e===`english`?o=a:e===`edit`&&(o=i),e===`edit`){A(i);return}C(null),g?.isConnected&&(r({role:`user`,content:o}),n(!0),m(o))}}),(0,Y.jsxs)(`form`,{onSubmit:ve,onDragEnter:z,onDragOver:te,onDragLeave:ee,onDrop:ne,className:Z(`flex items-end gap-2 relative rounded-lg transition-colors`,R&&`ring-2 ring-primary ring-offset-2 ring-offset-background bg-primary/5`),children:[R&&(0,Y.jsxs)(`div`,{className:`absolute inset-0 z-20 flex items-center justify-center pointer-events-none rounded-lg bg-primary/10 text-primary text-sm font-medium`,children:[`Drop file`,`(s)`,` to attach as @-mention`]}),(0,Y.jsxs)(`div`,{className:`relative flex-1`,children:[(0,Y.jsx)(Il,{atMention:F,input:k,textareaRef:L,setInput:A,setAtMention:I}),!F&&he.length>0&&(()=>{let e={};he.forEach((t,n)=>{e[t.category]||(e[t.category]=[]),e[t.category]?.push({cmd:t,idx:n})});let t=Bl.filter(t=>e[t]?.length);return(0,Y.jsxs)(`div`,{className:`absolute bottom-full left-0 right-0 mb-2 rounded-lg border bg-popover shadow-md p-1 text-sm max-h-72 overflow-auto`,children:[(0,Y.jsx)(`div`,{className:`px-3 py-1 text-[10px] uppercase tracking-wider text-muted-foreground border-b mb-1`,children:`↑/↓ select · Tab complete · Enter dispatch · Esc dismiss`}),t.map(t=>(0,Y.jsxs)(`div`,{className:`mb-1`,children:[(0,Y.jsx)(`div`,{className:`px-3 pt-1 pb-0.5 text-[10px] uppercase tracking-wider text-muted-foreground/70 font-semibold`,children:t}),e[t]?.map(({cmd:e,idx:t})=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{A(``),se(e.name)},onMouseEnter:()=>M(t),className:Z(`w-full text-left px-3 py-1.5 rounded transition-colors flex items-center gap-3`,t===j?`bg-accent text-accent-foreground`:`hover:bg-accent/40`),children:[(0,Y.jsx)(`span`,{className:`font-mono shrink-0`,children:e.name}),e.aliases?.length?(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground/70 font-mono shrink-0`,children:[`(`,e.aliases.join(`, `),`)`]}):null,(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground truncate`,children:[`— `,e.description]})]},e.name))]},t))]})})(),(0,Y.jsx)(`textarea`,{ref:L,value:k,onChange:e=>{let t=e.target.value;A(t),Te(),N>=0&&P(-1),I(Hl(t,e.target.selectionStart??t.length))},onSelect:e=>{let t=e.currentTarget;I(Hl(t.value,t.selectionStart))},onKeyDown:we,onPaste:re,placeholder:g?.isConnected?t?`Type a btw/steer/queue follow-up…`:`Message the agent… (type / for commands, @ for files)`:`Connect to server first…`,className:Z(`flex min-h-[44px] w-full resize-none rounded-lg border border-input bg-background px-4 py-3 pr-12`,`text-sm ring-offset-background placeholder:text-muted-foreground`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,`disabled:cursor-not-allowed disabled:opacity-50`,`scrollbar-thin`),rows:1,disabled:!g?.isConnected}),k.length>0&&(()=>{let e=k.length>=400,t=Math.ceil(k.length/4),n=`text-muted-foreground`,r;if(O>0&&e){let e=(D+t+64)/O*100;e>=100?(n=`text-red-600 dark:text-red-400 font-medium`,r=`Projected ${Math.round(e)}% of ${O.toLocaleString()} ctx — will likely error or compact.`):e>=85?(n=`text-amber-600 dark:text-amber-400 font-medium`,r=`Projected ${Math.round(e)}% of ${O.toLocaleString()} ctx — getting tight.`):r=`≈ ${t.toLocaleString()} tokens · projected ${Math.round(e)}% of ${O.toLocaleString()} ctx.`}else e&&(r=`≈ ${t.toLocaleString()} tokens (4-char heuristic)`);return(0,Y.jsxs)(`span`,{className:Z(`absolute bottom-1.5 right-12 text-xs tabular-nums`,n),title:r,children:[k.length,e&&(0,Y.jsxs)(`span`,{className:`ml-1 opacity-70`,children:[`· ≈`,t>=1e3?`${(t/1e3).toFixed(1)}k`:t,`t`]})]})})()]}),(0,Y.jsxs)(`div`,{className:`flex gap-1`,children:[t&&a?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)($,{type:`button`,size:`icon`,variant:`outline`,onClick:Ce,className:`h-[44px] w-[44px] rounded-lg`,title:`Stop run and edit the last prompt (reuse + rewrite)`,"data-testid":`stop-and-edit`,children:(0,Y.jsx)(Hn,{className:`h-4 w-4`})}),(0,Y.jsx)($,{type:`button`,size:`icon`,variant:`destructive`,onClick:Se,className:`h-[44px] w-[44px] rounded-lg`,title:`Abort the current run`,"data-testid":`stop`,children:(0,Y.jsx)(Ie,{className:`h-4 w-4 fill-current`})})]}):(0,Y.jsx)($,{type:`button`,size:`icon`,variant:v?`default`:`outline`,disabled:!g?.isConnected,onClick:S,className:Z(`h-[44px] w-[44px] rounded-lg transition-colors`,v&&`bg-yellow-500/20 hover:bg-yellow-500/30 text-yellow-600 dark:text-yellow-400 border-yellow-500/50`),title:v?`Refining enabled — click to disable`:`Refining disabled — click to enable`,children:(0,Y.jsx)($e,{className:`h-4 w-4`})}),(0,Y.jsx)($,{type:`submit`,size:`icon`,variant:`default`,disabled:!k.trim()||!g?.isConnected,className:`h-[44px] w-[44px] rounded-lg bg-sky-600 hover:bg-sky-700 text-white dark:bg-sky-500 dark:hover:bg-sky-600`,title:`Send (Enter)`,"data-testid":`send-submit`,children:(0,Y.jsx)(ht,{className:`h-4 w-4`})}),a&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)($,{type:`button`,size:`icon`,variant:`default`,disabled:!k.trim()||!g?.isConnected,onClick:ye,className:`h-[44px] w-[44px] rounded-lg bg-sky-600 hover:bg-sky-700 text-white dark:bg-sky-500 dark:hover:bg-sky-600`,title:t?`btw — send without interrupting the running agent`:`btw — send (Enter)`,"data-testid":`send-btw`,children:(0,Y.jsx)(Mt,{className:`h-4 w-4`})}),(0,Y.jsx)($,{type:`button`,size:`icon`,variant:`outline`,disabled:!k.trim()||!g?.isConnected,onClick:be,className:`h-[44px] w-[44px] rounded-lg border-amber-500/50 text-amber-700 dark:text-amber-400 hover:bg-amber-500/10`,title:t?`steer — interrupt the running agent and redirect`:`steer — send (no interrupt target while idle)`,"data-testid":`send-steer`,children:(0,Y.jsx)(Mn,{className:`h-4 w-4`})}),(0,Y.jsx)($,{type:`button`,size:`icon`,variant:`outline`,disabled:!k.trim()||!g?.isConnected,onClick:xe,className:`h-[44px] w-[44px] rounded-lg border-indigo-500/50 text-indigo-700 dark:text-indigo-400 hover:bg-indigo-500/10`,title:`add queue — hold until the current run completes`,"data-testid":`send-queue`,children:(0,Y.jsx)(ue,{className:`h-4 w-4`})})]})]})]})]})}function pu({open:e,onClose:t,className:n}){let[r,i]=(0,U.useState)([]),[a,o]=(0,U.useState)(!1),s=Vs(),c=(0,U.useRef)(null);(0,U.useEffect)(()=>{if(!(!e||!s.client?.isConnected))return s.client.send?.({type:`session.checkpoints`}),c.current=s.client.on?.(`session.checkpoints`,e=>{let t=e?.payload;t?.checkpoints&&i(t.checkpoints)})??null,()=>{c.current?.()}},[e,s.client]);let l=(0,U.useCallback)(async e=>{o(!0),s.client.send?.({type:`session.rewind`,payload:{checkpointIndex:e}}),setTimeout(()=>{t(),o(!1)},800)},[s.client,t]);return e?(0,Y.jsx)(`div`,{className:Z(`fixed inset-0 z-50 flex items-start justify-center pt-[10vh] bg-black/40 backdrop-blur-sm`,n),onClick:e=>{e.target===e.currentTarget&&t()},children:(0,Y.jsxs)(`div`,{className:`w-full max-w-md rounded-xl border bg-card shadow-2xl max-h-[75vh] flex flex-col animate-in fade-in zoom-in-95`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,Y.jsx)(`span`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-violet-500/10 text-violet-600 dark:text-violet-400`,children:(0,Y.jsx)(lt,{className:`h-4 w-4`})}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Session Checkpoints`}),(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:[r.length,` checkpoint`,r.length===1?``:`s`]})]})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:t,className:`p-1.5 rounded-md hover:bg-muted transition-colors`,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]}),(0,Y.jsx)(`div`,{className:`px-4 py-2.5 border-b bg-muted/20 text-[10px] text-muted-foreground leading-relaxed`,children:`Rewind the session to any checkpoint. Messages and file changes revert to that point — the LLM continues from there as if nothing happened after.`}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:r.length===0?(0,Y.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16 gap-3 text-muted-foreground`,children:[(0,Y.jsx)(L,{className:`h-10 w-10 opacity-15`}),(0,Y.jsx)(`p`,{className:`text-sm font-medium`,children:`No checkpoints yet`}),(0,Y.jsx)(`p`,{className:`text-xs text-center max-w-xs`,children:`Checkpoints are automatically created each time you send a message. Send a few messages and come back.`})]}):(0,Y.jsx)(`div`,{className:`py-1`,children:[...r].reverse().map((e,t)=>{let n=t===0;return(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>l(e.index),disabled:a,className:Z(`w-full flex items-start gap-3 px-4 py-3 text-left transition-colors group`,n?`bg-primary/5 hover:bg-primary/10`:`hover:bg-accent/40`,a&&`opacity-50 pointer-events-none`),children:[(0,Y.jsxs)(`div`,{className:`flex flex-col items-center mt-1.5`,children:[(0,Y.jsx)(`div`,{className:Z(`w-2.5 h-2.5 rounded-full border-2 shrink-0 transition-colors`,n?`border-primary bg-primary/20 shadow-[0_0_0_3px_hsl(var(--primary)/0.25)]`:`border-muted-foreground/30 bg-background group-hover:border-primary/40`)}),t<r.length-1&&(0,Y.jsx)(`div`,{className:`w-px flex-1 min-h-[20px] bg-border/50`})]}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)(`span`,{className:`text-xs font-mono text-muted-foreground tabular-nums shrink-0`,children:[`#`,e.index]}),(0,Y.jsx)(`span`,{className:`text-xs font-medium truncate`,children:e.label}),n&&(0,Y.jsx)(`span`,{className:`text-[9px] px-1.5 py-0.5 rounded-full bg-primary/10 text-primary font-medium shrink-0`,children:`latest`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mt-1 text-[10px] text-muted-foreground`,children:[(0,Y.jsxs)(`span`,{className:`tabular-nums`,children:[e.messageCount,` msg`,e.messageCount===1?``:`s`]}),(0,Y.jsx)(`span`,{className:`opacity-50`,children:`·`}),(0,Y.jsxs)(`span`,{className:`tabular-nums`,children:[`~`,e.tokens.toLocaleString(),` tok`]}),(0,Y.jsx)(`span`,{className:`opacity-50`,children:`·`}),(0,Y.jsxs)(`span`,{className:`tabular-nums`,children:[`iter `,e.iteration]})]})]}),(0,Y.jsx)(`span`,{className:`shrink-0 mt-1.5 opacity-0 group-hover:opacity-100 transition-opacity`,children:(0,Y.jsx)(Ct,{className:`h-4 w-4 text-violet-500`})})]},e.index)})})}),(0,Y.jsxs)(`div`,{className:`border-t px-4 py-2 text-[10px] text-muted-foreground text-center shrink-0`,children:[`Click any checkpoint to rewind ·`,` `,(0,Y.jsx)(`kbd`,{className:`px-1 py-0.5 rounded bg-muted font-mono text-[9px]`,children:`Esc`}),` to close`]})]})}):null}var mu=[{id:`balanced`,name:`Balanced`,description:`Default rolling compaction`,thresholds:{warn:.6,soft:.75,hard:.9},preserveK:10,eliseThreshold:2e3}];function hu(){let e=q(e=>e.contextMode),t=q(e=>e.contextModes),{listContextModes:n,switchContextMode:r,client:i}=Vs(),[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(!1),l=(0,U.useRef)(null),u=(0,U.useRef)(null);(0,U.useEffect)(()=>{a&&n()},[a,n]),(0,U.useEffect)(()=>{if(!a)return;let e=e=>{l.current?.contains(e.target)||o(!1)},t=e=>{e.key===`Escape`&&o(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[a]),(0,U.useEffect)(()=>{if(!s)return;let e=e=>{u.current?.contains(e.target)||c(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[s]);let d=(0,U.useCallback)(e=>{i?.compactContext?.(e),c(!1),o(!1)},[i]),f=(0,U.useCallback)(()=>{i?.repairContext?.(),c(!1),o(!1)},[i]),p=t.length>0?t:mu,m=p.find(t=>t.id===e)??Rr(p[0]);return(0,Y.jsxs)(`div`,{ref:l,className:`relative shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:Z(`flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium`,`bg-emerald-500/10 text-emerald-700 dark:text-emerald-300 hover:bg-emerald-500/15 transition-colors border border-transparent hover:border-emerald-500/30`),title:`Context-window mode`,children:[(0,Y.jsx)(Zn,{className:`h-3 w-3`}),`ctx: `,(0,Y.jsx)(`span`,{className:`font-mono`,children:e||m.id}),(0,Y.jsx)(ar,{className:`h-3 w-3 opacity-60`})]}),(0,Y.jsxs)(`div`,{ref:u,className:`relative`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>c(e=>!e),className:Z(`flex items-center justify-center h-5 w-5 rounded-full`,`text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors`,s&&`bg-accent/50 text-foreground`),title:`Context operations`,children:(0,Y.jsx)(kn,{className:`h-3 w-3`})}),s&&(0,Y.jsxs)(`div`,{className:`absolute top-full right-0 mt-1 w-52 rounded-md border bg-popover shadow-lg z-40 py-1`,children:[(0,Y.jsx)(`div`,{className:`px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted-foreground border-b`,children:`Context Operations`}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>d(!1),className:`w-full text-left px-3 py-2 hover:bg-accent/40 flex items-center gap-2`,children:[(0,Y.jsx)(Yt,{className:`h-3.5 w-3.5 shrink-0 text-amber-500`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`text-xs`,children:`Compact Now`}),(0,Y.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Elide old tool output`})]})]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>d(!0),className:`w-full text-left px-3 py-2 hover:bg-accent/40 flex items-center gap-2`,children:[(0,Y.jsx)(Yt,{className:`h-3.5 w-3.5 shrink-0 text-red-400`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`text-xs`,children:`Compact Aggressive`}),(0,Y.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Maximum elision now`})]})]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:f,className:`w-full text-left px-3 py-2 hover:bg-accent/40 flex items-center gap-2`,children:[(0,Y.jsx)(kn,{className:`h-3.5 w-3.5 shrink-0 text-blue-400`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`text-xs`,children:`Repair Context`}),(0,Y.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Fix orphan tool-use blocks`})]})]}),(0,Y.jsx)(`div`,{className:`border-t mt-1 pt-1 px-3 py-1.5`,children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{document.dispatchEvent(new CustomEvent(`open:context-breakdown`)),c(!1),o(!1)},className:`w-full text-left px-3 py-2 hover:bg-accent/40 flex items-center gap-2`,children:[(0,Y.jsx)(an,{className:`h-3.5 w-3.5 shrink-0 text-green-400`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`text-xs`,children:`Debug Context`}),(0,Y.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Size breakdown per section`})]})]})})]})]})]}),a&&(0,Y.jsxs)(`div`,{className:`absolute top-full left-0 mt-1 w-80 rounded-md border bg-popover shadow-lg z-30 py-1`,children:[(0,Y.jsx)(`div`,{className:`px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted-foreground border-b`,children:`Context Window`}),p.map(t=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{r(t.id),o(!1)},className:Z(`w-full text-left px-3 py-2 hover:bg-accent/40 flex items-start gap-2`,t.id===e&&`bg-accent/30`),children:[(0,Y.jsx)(jn,{className:Z(`h-3.5 w-3.5 mt-0.5 shrink-0`,t.id===e?`opacity-100 text-primary`:`opacity-0`)}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-xs font-mono`,children:t.id}),t.thresholds?.warn!==void 0&&(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:[Math.round(t.thresholds.warn*100),`/`,Math.round(t.thresholds.soft*100),`/`,Math.round(t.thresholds.hard*100),`%`]})]}),(0,Y.jsx)(`div`,{className:`text-[11px] text-muted-foreground leading-snug`,children:t.description}),(t.preserveK||t.eliseThreshold)&&(0,Y.jsxs)(`div`,{className:`mt-1 text-[10px] text-muted-foreground/80`,children:[`keep `,t.preserveK??`-`,` recent · elide `,t.eliseThreshold??`-`,`+ tokens`]})]})]},t.id))]})]})}function gu({open:e,onClose:t}){let n=K(e=>e.wsUrl),{lastInputTokens:r,maxContext:i}=q(),[a,o]=(0,U.useState)(null),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(null);if((0,U.useEffect)(()=>{if(!e){o(null),u(null);return}c(!0),u(null),o(null);let t=W(n);if(!t?.send){u(`WebSocket not connected`),c(!1);return}t.send({type:`context.debug`});let r=t.on(`context.debug`,e=>{e.type===`context.debug`&&(o(e.payload),c(!1))}),i=setTimeout(()=>{s&&(c(!1),u(`No debug data received. The server may not support context debugging.`))},5e3);return()=>{clearTimeout(i),r()}},[e,n]),(0,U.useEffect)(()=>{if(!e)return;let n=e=>{e.key===`Escape`&&t()};return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[e,t]),!e)return null;let d=i>0&&r>0?Math.min(100,Math.round(r/i*100)):0;return(0,Y.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-start justify-center pt-[10vh] bg-black/40 backdrop-blur-sm`,children:(0,Y.jsxs)(`div`,{className:`w-full max-w-2xl max-h-[80vh] overflow-y-auto rounded-xl border bg-card shadow-2xl`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b sticky top-0 bg-card z-10`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold flex items-center gap-2`,children:[(0,Y.jsx)(E,{className:`h-4 w-4 text-[hsl(var(--warning))]`}),`Context Breakdown`]}),(0,Y.jsx)(`button`,{type:`button`,onClick:t,className:`p-1 rounded-md hover:bg-muted transition-colors`,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]}),(0,Y.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,Y.jsxs)(`div`,{className:`rounded bg-muted/30 px-3 py-2`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`Window Usage`}),(0,Y.jsxs)(`span`,{className:`block text-sm font-mono font-medium`,children:[dc(r),` / `,dc(i),` (`,d,`%)`]})]}),(0,Y.jsxs)(`div`,{className:`rounded bg-muted/30 px-3 py-2`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`Context Mode`}),(0,Y.jsx)(`span`,{className:`block text-sm font-mono font-medium`,children:a?.mode??`—`})]})]}),s?(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground py-4`,children:[(0,Y.jsx)(tr,{className:`h-4 w-4 animate-spin`}),`Fetching context breakdown…`]}):l?(0,Y.jsx)(`div`,{className:`rounded-md bg-destructive/10 border border-destructive/20 p-3 text-sm text-destructive`,children:l}):a?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-3 gap-2`,children:[(0,Y.jsxs)(`div`,{className:`rounded bg-muted/30 px-3 py-2`,children:[(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground flex items-center gap-1`,children:[(0,Y.jsx)(On,{className:`h-3 w-3`}),`System Prompt`]}),(0,Y.jsx)(`span`,{className:`block text-sm font-mono font-medium`,children:dc(a.systemPrompt)})]}),(0,Y.jsxs)(`div`,{className:`rounded bg-muted/30 px-3 py-2`,children:[(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground flex items-center gap-1`,children:[(0,Y.jsx)(kn,{className:`h-3 w-3`}),`Tools`]}),(0,Y.jsxs)(`span`,{className:`block text-sm font-mono font-medium`,children:[dc(a.tools.total),` (`,a.tools.count,`)`]})]}),(0,Y.jsxs)(`div`,{className:`rounded bg-muted/30 px-3 py-2`,children:[(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground flex items-center gap-1`,children:[(0,Y.jsx)(b,{className:`h-3 w-3`}),`Messages`]}),(0,Y.jsxs)(`span`,{className:`block text-sm font-mono font-medium`,children:[dc(a.messages.total),` (`,a.messages.count,`)`]})]})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-semibold`,children:`Token Allocation`}),(0,Y.jsx)(`div`,{className:`mt-1.5 h-3 w-full overflow-hidden rounded-full bg-muted flex`,children:a.total>0&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`h-full bg-blue-500/70 transition-all`,style:{width:`${a.systemPrompt/a.total*100}%`},title:`System: ${dc(a.systemPrompt)}`}),(0,Y.jsx)(`span`,{className:`h-full bg-amber-500/70 transition-all`,style:{width:`${a.tools.total/a.total*100}%`},title:`Tools: ${dc(a.tools.total)}`}),(0,Y.jsx)(`span`,{className:`h-full bg-emerald-500/70 transition-all`,style:{width:`${a.messages.total/a.total*100}%`},title:`Messages: ${dc(a.messages.total)}`})]})}),(0,Y.jsxs)(`div`,{className:`flex gap-3 mt-1 text-[10px] text-muted-foreground`,children:[(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-blue-500/70`}),` System`]}),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-amber-500/70`}),` Tools`]}),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-emerald-500/70`}),` Messages`]})]})]}),a.tools.breakdown.length>0&&(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-semibold`,children:`Tool Breakdown`}),(0,Y.jsx)(`div`,{className:`mt-1 space-y-0.5`,children:a.tools.breakdown.map(e=>(0,Y.jsxs)(`div`,{className:`flex items-center justify-between text-xs py-0.5`,children:[(0,Y.jsx)(`span`,{className:`font-mono`,children:e.name}),(0,Y.jsxs)(`span`,{className:`tabular-nums text-muted-foreground`,children:[e.tokens.toLocaleString(),` tok`]})]},e.name))})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-semibold`,children:[`Messages (`,a.messages.count,`) — `,dc(a.messages.total),` tok`]}),(0,Y.jsx)(`div`,{className:`mt-1 space-y-0.5 max-h-40 overflow-y-auto`,children:a.messages.breakdown.slice(0,20).map(e=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs py-0.5`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground font-mono w-6 text-right`,children:e.index}),(0,Y.jsx)(`span`,{className:`text-muted-foreground font-mono w-14`,children:e.role}),(0,Y.jsxs)(`span`,{className:`tabular-nums text-muted-foreground w-14`,children:[e.tokens.toLocaleString(),` tok`]}),(0,Y.jsx)(`span`,{className:`text-muted-foreground/70 truncate flex-1`,children:e.preview.slice(0,80)})]},e.index))})]})]}):null]})]})})}function _u(){let e=q(e=>e.cost),t=q(e=>e.inputCost),n=q(e=>e.outputCost),r=q(e=>e.cacheReadCost),i=G(e=>e.messages),[a,o]=(0,U.useState)(!1),s=(0,U.useRef)(null);(0,U.useEffect)(()=>{if(!a)return;let e=e=>{s.current?.contains(e.target)||o(!1)},t=e=>{e.key===`Escape`&&o(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[a]);let c=(()=>{let e=[];for(let t of i)t.role===`assistant`&&t.runSummary&&t.runSummary.costDelta>0&&e.push({id:t.id,preview:t.content.slice(0,80).replace(/\s+/g,` `).trim()||`(empty)`,cost:t.runSummary.costDelta,tools:t.runSummary.tools,ms:t.runSummary.durationMs,ts:t.timestamp});return e.sort((e,t)=>t.cost-e.cost),e.slice(0,5)})(),l=e=>e>=.01?`$${e.toFixed(4)}`:e>0?`$${e.toFixed(6).replace(/0+$/,``).replace(/\.$/,``)}`:`$0`,u=t>0||n>0;return(0,Y.jsxs)(`div`,{ref:s,className:`relative inline-block`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),className:Z(`font-medium text-green-600 dark:text-green-400 hover:underline tabular-nums`),title:`Click for per-turn cost breakdown`,children:[`$`,e.toFixed(4)]}),a&&(0,Y.jsxs)(`div`,{className:`absolute right-0 top-full mt-1 z-30 w-80 rounded-md border bg-popover shadow-lg p-3 text-foreground`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,Y.jsx)(`span`,{className:`text-xs uppercase tracking-wider text-muted-foreground font-medium`,children:`Cost breakdown`}),(0,Y.jsx)(`span`,{className:`font-mono tabular-nums text-sm font-semibold text-green-600 dark:text-green-400`,children:l(e)})]}),u?(0,Y.jsxs)(`div`,{className:`text-[11px] text-muted-foreground font-mono mb-3 border-b pb-2`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{children:`input /1M`}),(0,Y.jsxs)(`span`,{children:[`$`,t.toFixed(2)]})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{children:`output /1M`}),(0,Y.jsxs)(`span`,{children:[`$`,n.toFixed(2)]})]}),r>0&&(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{children:`cache /1M`}),(0,Y.jsxs)(`span`,{children:[`$`,r.toFixed(2)]})]})]}):(0,Y.jsx)(`div`,{className:`text-[11px] text-muted-foreground italic mb-3 border-b pb-2`,children:`No pricing for the current model — cost figures are zero.`}),c.length===0?(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground italic`,children:`No completed turns yet. Run a prompt to see per-turn cost here.`}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground/80 mb-1`,children:[`Top `,c.length,` expensive turn`,c.length===1?``:`s`]}),(0,Y.jsx)(`ul`,{className:`space-y-1`,children:c.map(e=>(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{let t=document.querySelector(`[data-message-id="${e.id}"]`);t&&t.scrollIntoView({behavior:`smooth`,block:`center`}),o(!1)},className:`w-full text-left rounded px-2 py-1.5 hover:bg-accent/40 transition-colors`,children:[(0,Y.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-xs truncate`,children:e.preview}),(0,Y.jsx)(`span`,{className:`text-xs font-mono tabular-nums text-green-600 dark:text-green-400 shrink-0`,children:l(e.cost)})]}),(0,Y.jsxs)(`div`,{className:`text-[10px] text-muted-foreground font-mono mt-0.5`,children:[e.tools,` tool`,e.tools===1?``:`s`,` · `,(e.ms/1e3).toFixed(1),`s`]})]})},e.id))})]})]})]})}var vu=[`path`,`file_path`,`pattern`,`command`,`cmd`,`url`,`query`,`description`,`content`];function yu(e,t){if(t==null)return``;if(typeof t!=`object`)return bu(String(t),120);let n=t,r=(e??``).toLowerCase();if(/^todo(_?write)?$|^todos$/i.test(r)||Array.isArray(n.todos)){let e=n.todos??[];if(Array.isArray(e)){let t=e.filter(e=>e.status===`completed`).length,n=e.filter(e=>e.status===`in_progress`).length,r=[`${e.length} todo${e.length===1?``:`s`}`];return t>0&&r.push(`${t} done`),n>0&&r.push(`${n} in-progress`),r.join(` · `)}}if(/batch|parallel/.test(r)||Array.isArray(n.tool_uses)||Array.isArray(n.calls)){let e=n.tool_uses??n.calls??n.batch;if(Array.isArray(e)){let t=new Set;for(let n of e)n&&typeof n==`object`&&`name`in n&&t.add(String(n.name));let n=[...t].slice(0,3).join(`, `),r=t.size>3?` +${t.size-3}`:``;return`${e.length} sub-tool${e.length===1?``:`s`}${n?` · ${n}${r}`:``}`}}if(/^(edit|str_replace|edit_file|patch)$/.test(r)){let e=xu(n),t=typeof n.old_string==`string`?n.old_string:``,r=typeof n.new_string==`string`?n.new_string:``,i=t?t.split(`
103
+ `).length:0,a=r?r.split(`
104
+ `).length:0;return`edit ${e||`(file)`}${i||a?` (${i} → ${a} lines)`:``}`}if(/^(write|write_file|create_file|new_file)$/.test(r)){let e=xu(n),t=typeof n.content==`string`?n.content:``,r=t?t.split(`
105
+ `).length:0;return`write ${e||`(file)`}${r?` · ${r} lines`:``}`}if(/^(bash|shell|exec|run|run_command|run_shell)$/.test(r)){let e=n.command??n.cmd??n.script;if(typeof e==`string`)return`$ ${bu(e,110)}`}if(/^(fetch|http|web|webfetch|curl|request)$/.test(r)){let e=n.url;if(typeof e==`string`)return`${(n.method??`GET`).toUpperCase()} ${bu(e,100)}`}if(/^(grep|search|ripgrep)$/.test(r)){let e=n.pattern,t=n.path??n.glob??n.type;if(typeof e==`string`)return t?`grep ${bu(e,60)} in ${t}`:`grep ${bu(e,100)}`}if(/^(glob|find)$/.test(r)){let e=n.pattern??n.glob;if(typeof e==`string`)return`glob ${bu(e,100)}`}if(/^(read|read_file|cat)$/.test(r)){let e=xu(n),t=n.offset,r=n.limit;if(e&&(typeof t==`number`||typeof r==`number`)){let n=t??0;return`read ${e} (${n}…${typeof r==`number`?n+r:``})`}if(e)return`read ${e}`}for(let e of vu){let t=n[e];if(typeof t==`string`&&t.length>0)return`${e}: ${bu(t,100)}`}return bu(Su(t),120)}function bu(e,t){return e.length>t?`${e.slice(0,t-1)}…`:e}function xu(e){let t=e.file_path??e.path??e.filepath;return typeof t==`string`?t:``}function Su(e){try{return JSON.stringify(e)}catch{return String(e)}}var Cu={file:{color:`#60a5fa`},edit:{color:`#fbbf24`},search:{color:`#a78bfa`},folder:{color:`#38bdf8`},terminal:{color:`#fb923c`},web:{color:`#34d399`},git:{color:`#fb923c`},tree:{color:`#22d3ee`},code:{color:`#818cf8`},test:{color:`#4ade80`},package:{color:`#f472b6`},document:{color:`#94a3b8`},scaffold:{color:`#c084fc`},todo:{color:`#facc15`},plan:{color:`#2dd4bf`},task:{color:`#5eead4`},meta:{color:`#cbd5e1`},index:{color:`#06b6d4`},json:{color:`#eab308`},diff:{color:`#f97316`},logs:{color:`#a3a3a3`},settings:{color:`#9ca3af`},brain:{color:`#e879f9`},fallback:{color:`#9ca3af`}},wu={read:`file`,cat:`file`,view:`file`,write:`file`,create:`file`,edit:`edit`,replace:`edit`,str_replace:`edit`,multi_edit:`edit`,patch:`diff`,grep:`search`,search:`search`,rg:`search`,ripgrep:`search`,glob:`search`,find:`search`,folder:`folder`,ls:`folder`,list:`folder`,set_working_dir:`folder`,tree:`tree`,bash:`terminal`,shell:`terminal`,sh:`terminal`,exec:`terminal`,run:`terminal`,command:`terminal`,fetch:`web`,web_fetch:`web`,web_search:`web`,git:`git`,diff:`diff`,lint:`code`,format:`settings`,typecheck:`code`,test:`test`,install:`package`,outdated:`package`,audit:`package`,document:`document`,scaffold:`scaffold`,todo:`todo`,plan:`plan`,task:`task`,json:`json`,index:`index`,logs:`logs`,mode:`meta`,tool_search:`meta`,tool_use:`meta`,batch_tool_use:`meta`,tool_help:`meta`,remember:`brain`,forget:`brain`,search_memory:`brain`,find_related_memories:`brain`};function Tu(e){return e?wu[e.toLowerCase()]??`fallback`:`fallback`}var Eu={file:On,edit:$t,search:Me,folder:Pt,terminal:qn,web:Ae,git:sr,tree:Rn,code:Qe,test:zt,package:Ot,document:a,scaffold:pt,todo:ee,plan:Je,task:Fr,meta:kn,index:he,json:Sr,diff:Ut,logs:at,settings:dt,brain:St,fallback:kn};function Du(e){let t=Tu(e);return{Icon:Eu[t],color:Cu[t].color}}var Ou={file:`file read/write`,edit:`file editing`,search:`search & grep`,folder:`folder navigation`,terminal:`shell commands`,web:`web fetch`,git:`git operations`,tree:`directory tree`,code:`code quality`,test:`testing`,package:`package management`,document:`documentation`,scaffold:`project scaffolding`,todo:`todo tracking`,plan:`planning`,task:`task management`,meta:`tool orchestration`,index:`code indexing`,json:`JSON data`,diff:`diff & patch`,logs:`log viewing`,settings:`configuration`,brain:`memory`,fallback:`external tool`};function ku(e){let t=Tu(e),n=Au(Cu[t].color);return`${Ou[t]} — ${n}`}function Au(e){return{"#60a5fa":`blue`,"#fbbf24":`amber`,"#a78bfa":`violet`,"#38bdf8":`sky`,"#fb923c":`orange`,"#34d399":`emerald`,"#22d3ee":`cyan`,"#818cf8":`indigo`,"#4ade80":`green`,"#f472b6":`pink`,"#94a3b8":`slate`,"#c084fc":`purple`,"#facc15":`yellow`,"#2dd4bf":`teal`,"#5eead4":`teal-light`,"#cbd5e1":`slate-light`,"#06b6d4":`cyan-dark`,"#eab308":`yellow-dark`,"#f97316":`orange-dark`,"#a3a3a3":`neutral`,"#9ca3af":`gray`,"#e879f9":`fuchsia`}[e]??`colored`}var ju=25,Mu=12;function Nu({text:e,isError:t,className:n,wrapClass:r,showLineNumbers:i,defaultCollapsed:a}){let o=(0,U.useMemo)(()=>e.split(`
106
+ `),[e]),s=o.length>ju,[c,l]=(0,U.useState)(a?!1:!s),u=c?e:o.slice(0,Mu).join(`
107
+ `),d=!!i&&s&&c;return(0,Y.jsxs)(`div`,{className:Z(`rounded-md border bg-background/40 overflow-hidden`,n),children:[d?(0,Y.jsxs)(`div`,{className:`flex max-h-96 overflow-auto`,children:[(0,Y.jsx)(`pre`,{"aria-hidden":!0,className:`text-xs font-mono leading-[1.4] py-2 pl-2 pr-2 text-muted-foreground/50 select-none border-r border-border/40 bg-muted/20 tabular-nums text-right whitespace-pre shrink-0`,children:o.map((e,t)=>`${t+1}`).join(`
108
+ `)}),(0,Y.jsx)(`pre`,{className:Z(`text-xs font-mono leading-[1.4] py-2 px-2 flex-1 whitespace-pre`,t?`text-destructive`:`text-foreground`),children:u})]}):(0,Y.jsx)(`pre`,{className:Z(`text-xs font-mono p-2 max-h-96 overflow-auto`,r,t?`text-destructive`:`text-foreground`),children:u}),s&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>l(e=>!e),className:`w-full flex items-center justify-center gap-1 px-2 py-1 border-t bg-muted/30 text-[11px] text-muted-foreground hover:text-foreground transition-colors`,children:c?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(ot,{className:`h-3 w-3`}),`Collapse to first `,Mu,` lines`]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(mt,{className:`h-3 w-3`}),`Show all `,o.length,` lines (`,o.length-Mu,` more)`]})})]})}var Pu=(0,U.memo)(function({toolName:e,result:t,isError:n,className:r,renderMode:i}){let a=(0,U.useMemo)(()=>Fu(e,t),[e,t]),o=i===`simple`;return a.kind===`json`?(0,Y.jsx)(Iu,{value:a.value,isError:n,className:r,defaultCollapsed:o}):a.kind===`numbered`?(0,Y.jsx)(Nu,{text:t,isError:n,className:r,wrapClass:`whitespace-pre`,defaultCollapsed:o}):a.kind===`bash`?(0,Y.jsxs)(`div`,{className:Z(`rounded-md border bg-background/40 overflow-hidden`,r),children:[a.stdout&&(0,Y.jsx)(Nu,{text:a.stdout,isError:n,className:`border-0 rounded-none bg-transparent`,wrapClass:`whitespace-pre-wrap break-all`,showLineNumbers:!0,defaultCollapsed:o}),(a.exitCode!==void 0||a.duration)&&(0,Y.jsxs)(`div`,{className:Z(`flex items-center gap-3 text-[11px] px-2 py-1 border-t bg-muted/30 tabular-nums`,a.exitCode&&a.exitCode!==0?`text-destructive`:`text-muted-foreground`),children:[a.exitCode!==void 0&&(0,Y.jsxs)(`span`,{children:[`exit code: `,(0,Y.jsx)(`span`,{className:`font-mono`,children:a.exitCode})]}),a.duration&&(0,Y.jsx)(`span`,{children:a.duration})]})]}):(0,Y.jsx)(Nu,{text:t,isError:n,className:r,wrapClass:`whitespace-pre-wrap break-all`,showLineNumbers:!0,defaultCollapsed:o})});function Fu(e,t){let n=t.trim();if(/^\s*\d+→/m.test(t.slice(0,200)))return{kind:`numbered`};if(n.startsWith(`{`)&&n.endsWith(`}`)||n.startsWith(`[`)&&n.endsWith(`]`))try{let e=JSON.parse(n);if(typeof e==`object`&&e)return{kind:`json`,value:e}}catch{}let r=!!e&&/^(bash|shell|exec|run)/i.test(e),i=t.match(/(?:^|\n)\s*(?:\[?exit(?:\s*code)?\]?\s*[:=]?\s*)(\d+)\s*$/i),a=t.match(/(?:^|\s)(\d+\s*ms|\d+\.\d+s)\s*$/i);if(r||i){let e=t;return i&&(e=t.slice(0,i.index).trimEnd()),{kind:`bash`,stdout:e,exitCode:i?Number(i[1]):void 0,duration:a?.[1]}}return{kind:`plain`}}function Iu({value:e,isError:t,className:n,defaultCollapsed:r}){let a=(0,U.useMemo)(()=>{try{return JSON.stringify(e,null,2)}catch{return String(e)}},[e]),o=a.split(`
109
+ `).length,[s,c]=(0,U.useState)(r?!1:o<30);return(0,Y.jsxs)(`div`,{className:Z(`rounded-md border bg-background/40 overflow-hidden`,t&&`border-destructive/40`,n),children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>c(e=>!e),className:`w-full flex items-center justify-between px-2 py-1 border-b bg-muted/30 text-[11px] text-muted-foreground hover:text-foreground`,children:[(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[s?(0,Y.jsx)(ar,{className:`h-3 w-3`}):(0,Y.jsx)(i,{className:`h-3 w-3`}),(0,Y.jsxs)(`span`,{className:`font-mono`,children:[`JSON · `,o,` lines`]})]}),(0,Y.jsx)(`span`,{children:s?`collapse`:`expand`})]}),s&&(0,Y.jsx)(`pre`,{className:Z(`text-xs font-mono whitespace-pre p-2 max-h-96 overflow-auto`,t?`text-destructive`:`text-foreground`),children:a})]})}async function Lu(e){try{if(typeof navigator<`u`&&navigator.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}function Ru(e,t){if(typeof document>`u`)return;let n=new Blob([t],{type:`text/plain;charset=utf-8`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=e,document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout(()=>URL.revokeObjectURL(r),1e3)}function zu(e){let t=(e??``).toLowerCase();return/bash|shell|exec|run/.test(t)?`log`:(/grep|search|find/.test(t),`txt`)}function Bu(e){return e<1e3?`${e} ms`:e<6e4?`${(e/1e3).toFixed(e<1e4?2:1)}s`:`${Math.floor(e/6e4)}m ${Math.floor(e%6e4/1e3)}s`}var Vu=[gn];function Hu({text:e}){let[t,n]=(0,U.useState)(!1);return(0,Y.jsxs)(`button`,{type:`button`,onClick:(0,U.useCallback)(async()=>{await Lu(e)&&(n(!0),setTimeout(()=>n(!1),1500))},[e]),className:Z(`inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] transition-colors`,`hover:bg-muted-foreground/10`,t?`text-emerald-500`:`text-muted-foreground hover:text-foreground`),title:t?`Copied!`:`Copy code`,children:[t?(0,Y.jsx)(jn,{className:`h-3 w-3`}):(0,Y.jsx)(de,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{children:t?`Copied`:`Copy`})]})}var Uu={code({inline:e,className:t,children:n,...r}){let i=/language-(\w+)/.exec(t??``),a=String(n??``).replace(/\n$/,``);if(e||!i)return(0,Y.jsx)(`code`,{className:Z(`rounded border border-border/60 px-1.5 py-0.5 text-[0.85em] font-mono`,t),...r,children:n});let o=(0,U.useMemo)(()=>a.split(`
110
+ `),[a]),s=o.length>1;return(0,Y.jsxs)(`div`,{className:`not-prose relative my-3 rounded-lg border border-border overflow-hidden group/codeblock`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-1 border-b border-border text-xs`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(_,{className:`h-3 w-3 text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`font-mono text-muted-foreground font-medium`,children:i[1]}),o.length>0&&(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground/60 tabular-nums`,children:[o.length,` line`,o.length===1?``:`s`]})]}),(0,Y.jsx)(Hu,{text:a})]}),s?(0,Y.jsxs)(`div`,{className:`flex max-h-[40rem] overflow-auto`,children:[(0,Y.jsx)(`pre`,{"aria-hidden":!0,className:`text-xs font-mono leading-[1.55] py-3 pl-3 pr-2 text-muted-foreground/40 select-none border-r border-border/30 tabular-nums text-right shrink-0`,children:o.map((e,t)=>(0,Y.jsx)(`div`,{children:t+1},t))}),(0,Y.jsx)(`pre`,{className:`overflow-x-auto py-3 px-3 text-xs leading-[1.55] font-mono flex-1`,children:(0,Y.jsx)(`code`,{className:Z(`hljs`,t),...r,children:n})})]}):(0,Y.jsx)(`pre`,{className:`overflow-x-auto p-3 text-xs leading-relaxed font-mono max-h-[40rem]`,children:(0,Y.jsx)(`code`,{className:Z(`hljs`,t),...r,children:n})}),(0,Y.jsx)(`div`,{className:`pointer-events-none absolute bottom-8 left-0 right-0 h-8 bg-gradient-to-t from-black/10 to-transparent opacity-0 group-hover/codeblock:opacity-100 transition-opacity`})]})}};function Wu({text:e,className:t,label:n=`Copy`}){let[r,i]=(0,U.useState)(!1);return(0,Y.jsx)(`button`,{type:`button`,onClick:async t=>{t.stopPropagation(),await Lu(e)&&(i(!0),setTimeout(()=>i(!1),1400))},className:Z(`inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors`,t),title:n,children:r?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(jn,{className:`h-3 w-3 text-green-500`}),(0,Y.jsx)(`span`,{children:`Copied`})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(de,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{children:n})]})})}function Gu(e){let t=e.split(`
111
+ `);for(let e=0;e<t.length;e++){let n=Rr(t[e]);if(/^\s*at\s+\S+.*\(.*:\d+:\d+\)\s*$/.test(n)||/^\s*at\s+\S+\.\S+\(\S+\.java:\d+\)\s*$/.test(n)||/^\s+File "[^"]+", line \d+/.test(n))return e}return-1}function Ku({text:e}){let t=Gu(e),[n,r]=(0,U.useState)(!1);if(t===-1)return(0,Y.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-mono text-xs leading-relaxed`,children:e});let i=e.split(`
112
+ `),a=i.slice(0,t).join(`
113
+ `).trim(),o=i.slice(t).join(`
114
+ `),s=o.split(`
115
+ `).filter(e=>e.trim().length>0).length;return(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[a&&(0,Y.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-mono text-xs leading-relaxed`,children:a}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>r(e=>!e),className:`inline-flex items-center gap-1 text-xs text-destructive hover:text-destructive/80 font-medium`,children:[n?`▾`:`▸`,` `,n?`Hide`:`Show`,` stack trace (`,s,` frame`,s===1?``:`s`,`)`]}),n&&(0,Y.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-mono text-[11px] leading-snug bg-destructive/5 border border-destructive/20 rounded p-2 max-h-80 overflow-auto`,children:o})]})}function qu({input:e}){let[t,n]=(0,U.useState)({});if(typeof e!=`object`||!e||Array.isArray(e))return(0,Y.jsx)(`pre`,{className:`whitespace-pre-wrap break-all text-xs font-mono`,children:JSON.stringify(e,null,2)});let r=Object.entries(e);return r.length===0?(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground italic`,children:`(no params)`}):(0,Y.jsx)(`div`,{className:`text-xs font-mono`,children:r.map(([e,r])=>{if(r==null||typeof r==`string`||typeof r==`number`||typeof r==`boolean`){let t=r===null?`null`:r===void 0?`undefined`:typeof r==`string`?r:String(r),n=typeof r==`string`&&(t.length>80||t.includes(`
116
+ `));return(0,Y.jsxs)(`div`,{className:Z(`py-0.5`,n?`flex flex-col gap-0.5`:`flex items-baseline gap-2`),children:[(0,Y.jsxs)(`span`,{className:`text-muted-foreground shrink-0`,children:[e,`:`]}),(0,Y.jsx)(`span`,{className:Z(`text-foreground`,n?`whitespace-pre-wrap break-all bg-muted/40 rounded px-1.5 py-1`:`truncate`,typeof r==`string`?``:`text-amber-600 dark:text-amber-400`),title:typeof r==`string`&&!n?t:void 0,children:t})]},e)}let i=!!t[e],a=Array.isArray(r)?`[${r.length} item${r.length===1?``:`s`}]`:`{${Object.keys(r).length} key${Object.keys(r).length===1?``:`s`}}`;return(0,Y.jsxs)(`div`,{className:`py-0.5`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>n(t=>({...t,[e]:!t[e]})),className:`flex items-baseline gap-2 hover:bg-muted/30 rounded px-1 -mx-1`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground/60 text-[10px]`,children:i?`▾`:`▸`}),(0,Y.jsxs)(`span`,{className:`text-muted-foreground`,children:[e,`:`]}),(0,Y.jsx)(`span`,{className:`text-violet-600 dark:text-violet-400`,children:a})]}),i&&(0,Y.jsx)(`pre`,{className:`ml-3 mt-1 whitespace-pre-wrap break-all text-[11px] bg-muted/40 rounded px-2 py-1.5`,children:JSON.stringify(r,null,2)})]},e)})})}var Ju=(0,U.memo)(function({message:e,isFirst:t=!1,isContinuation:n=!1}){let[r,a]=(0,U.useState)({}),[s,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(!1),[f,p]=(0,U.useState)(``),[m,h]=(0,U.useState)(!1),g=e.role===`user`,v=e.role===`tool`,y=!!e.thinkingLog;e.role;let b=G(e=>e.truncateAfter),x=G(e=>e.addMessage),S=G(e=>e.setLoading),C=G(e=>e.isLoading),w=K(e=>e.wsUrl),T=J(e=>e.pinnedIds),E=J(e=>e.togglePin),D=J(e=>e.compactMode),O=J(e=>e.searchOpen),k=J(e=>e.searchActiveMessageId),A=T.includes(e.id),j=q(e=>e.inputCost),M=q(e=>e.outputCost),P=q(e=>e.cacheReadCost),F=$i(),{autonomy:I,yolo:R}=F,{canAutoSubmit:z,recordAutoSubmit:ee,capWarned:te}=Pl(),ne=F.autoProceedMaxIterations<=0||z(),re=e=>{if(!z()){te||x({role:`assistant`,content:`⚠️ _Auto-proceed paused — maximum consecutive automatic turns reached. Type anything to continue (autonomy stays on)._`});return}ee(),x({role:`user`,content:e}),S(!0),W(w).sendMessage(e),Fi(``)},B=(()=>{if(e.role!==`assistant`||C)return!1;let t=G.getState().messages;for(let n=t.length-1;n>=0;n--){let r=Rr(t[n]);if(r.role===`assistant`)return r.id===e.id}return!1})(),ie=(0,U.useMemo)(()=>B&&e.content?ji(e.content):null,[B,e.content]);(0,U.useEffect)(()=>{if(!e.thinkingLog||!O||k!==e.id)return;let t=J.getState().searchQuery.trim().toLowerCase();t&&e.thinkingLog.text.toLowerCase().includes(t)&&l(!0)},[e.id,e.thinkingLog,k,O]);let ae=()=>{let t=G.getState().messages,n=t.findIndex(t=>t.id===e.id);if(n===-1)return;let r=-1;for(let e=n-1;e>=0;e--)if(t[e]?.role===`user`){r=e;break}if(r===-1)return;let i=Rr(t[r]);b(i.id),x({role:`user`,content:i.content}),S(!0),W(w).sendMessage(i.content)},oe=e=>{a(t=>({...t,[e]:!t[e]}))},se=()=>{p(e.content),d(!0)},ce=()=>{d(!1),p(``)},le=()=>{let t=f.trim();if(!t){ce();return}b(e.id),x({role:`user`,content:t}),S(!0),W(w).sendMessage(t),d(!1),p(``)};return(0,Y.jsxs)(`div`,{"data-message-id":e.id,"data-pinned":A?`1`:void 0,className:Z(`group flex msg-bubble animate-message rounded-lg transition-shadow`,D?`gap-2`:`gap-3`,g?`flex-row-reverse`:`flex-row`,A&&`ring-1 ring-amber-500/30 bg-amber-500/[0.02] px-1 -mx-1`),children:[n?(0,Y.jsx)(`div`,{className:`flex-shrink-0 w-8 h-8`,"aria-hidden":!0}):(0,Y.jsx)(`div`,{className:Z(`flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center`,`ring-2 ring-offset-2 ring-offset-background`,g?`bg-primary text-primary-foreground ring-primary/20`:v?`bg-secondary text-secondary-foreground ring-secondary/20`:y?`bg-violet-500/10 text-violet-600 dark:text-violet-400 ring-violet-500/20`:`bg-accent text-accent-foreground ring-accent/20`),children:g?(0,Y.jsx)(Or,{className:`h-4 w-4`}):v?(0,Y.jsx)(hn,{className:`h-4 w-4`}):y?(0,Y.jsx)(St,{className:`h-4 w-4`}):(0,Y.jsx)(In,{className:`h-4 w-4`})}),(0,Y.jsxs)(`div`,{className:Z(`flex flex-col gap-1.5 max-w-[85%]`,g&&`items-end`),children:[t&&!n&&(0,Y.jsx)(`span`,{className:Z(`text-xs font-medium px-1`,g?`text-primary`:v?`text-secondary`:y?`text-violet-600 dark:text-violet-400`:`text-muted-foreground`),children:g?`You`:v?`Tool`:y?`Thinking`:`Assistant`}),v&&e.toolName&&(()=>{let{Icon:t,color:n}=Du(e.toolName),a=ku(e.toolName);return(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>oe(e.id),className:Z(`flex items-center gap-2 text-sm font-medium cursor-pointer select-none`,`hover:bg-muted/50 rounded-lg px-2 py-1 -mx-2 transition-colors`,e.isError?`text-destructive`:`text-foreground`),title:a,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground/50`,children:r[e.id]?(0,Y.jsx)(ar,{className:`h-3 w-3`}):(0,Y.jsx)(i,{className:`h-3 w-3`})}),(0,Y.jsx)(t,{className:`h-3 w-3`,style:{color:n}}),(0,Y.jsx)(`span`,{className:`font-mono`,style:{color:n},children:e.toolName}),e.toolResult===void 0?(0,Y.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-amber-500 animate-pulse`,"aria-hidden":!0}):e.isError?(0,Y.jsx)(N,{className:`h-3 w-3 text-destructive`}):(0,Y.jsx)(V,{className:`h-3 w-3 text-green-500`}),typeof e.toolDurationMs==`number`&&(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground tabular-nums font-normal`,children:Bu(e.toolDurationMs)})]})})(),(0,Y.jsx)(`div`,{className:Z(`rounded-2xl`,D?`px-3 py-1.5`:`px-4 py-3`,g?`bg-primary text-primary-foreground rounded-br-md`:v?e.isError?`bg-destructive/5 border border-destructive/20 text-destructive`:`bg-muted/80 text-foreground`:`bg-card border text-foreground`,e.isError&&!v&&`border-destructive/20`,g&&e.status===`failed`&&`opacity-60 ring-1 ring-destructive/30`),children:v?(()=>{let t=!!r[e.id],n=e.toolInput===void 0?``:yu(e.toolName,e.toolInput),i=e.toolResult?e.toolResult.split(`
117
+ `).length:0;return(0,Y.jsxs)(`div`,{className:`space-y-1 tool-details`,children:[n&&!t&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground font-mono truncate`,children:n}),e.toolResult===void 0&&e.progressLines&&e.progressLines.length>0&&(0,Y.jsx)(`div`,{className:`mt-1 rounded-md border border-amber-500/20 bg-amber-500/5 p-1.5 text-[11px] font-mono leading-snug max-h-32 overflow-auto`,children:(()=>{let t=new Map;return e.progressLines.slice(-6).map(e=>{let n=t.get(e)??0;return t.set(e,n+1),(0,Y.jsx)(`div`,{className:`truncate text-muted-foreground`,children:e},`${e}-${n}`)})})()}),t&&e.toolInput!==void 0&&(()=>{let t=wl(e.toolName,e.toolInput);return t?(0,Y.jsx)(xl,{oldText:t.oldText,newText:t.newText,caption:t.caption}):(0,Y.jsxs)(`div`,{className:`p-3 bg-muted/50 rounded-lg overflow-x-auto`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 text-muted-foreground mb-2 text-xs`,children:[(0,Y.jsx)(L,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{children:`Input`})]}),(0,Y.jsx)(qu,{input:e.toolInput})]})})(),t&&e.toolResult!==void 0&&e.toolResult.length>0&&(0,Y.jsxs)(`div`,{className:`relative group/tool`,children:[(0,Y.jsx)(Pu,{toolName:e.toolName,result:e.toolResult,isError:e.isError}),(0,Y.jsxs)(`div`,{className:`absolute top-1.5 right-1.5 flex items-center gap-1 opacity-0 group-hover/tool:opacity-100 transition-opacity`,children:[(0,Y.jsx)(Wu,{text:e.toolResult,label:``,className:`bg-background/80 border rounded px-1.5 py-0.5`}),e.toolResult.split(`
118
+ `).length>5&&(0,Y.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation();let n=zu(e.toolName);Ru(`${(e.toolName??`output`).replace(/[^a-z0-9_-]+/gi,`-`).toLowerCase()}-${new Date().toISOString().replace(/[:.]/g,`-`)}.${n}`,e.toolResult??``)},className:`inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground bg-background/80 border rounded px-1.5 py-0.5`,title:`Download as file`,children:(0,Y.jsx)(c,{className:`h-3 w-3`})})]})]}),t&&e.toolResult!==void 0&&e.toolResult.length===0&&(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground italic`,children:`(empty)`}),!t&&e.isError&&e.toolResult&&(0,Y.jsx)(`div`,{className:`text-xs font-mono text-destructive truncate`,children:e.toolResult.split(`
119
+ `)[0]}),(e.toolResult!==void 0&&e.toolResult.length>0||e.toolInput!==void 0&&Object.keys(e.toolInput??{}).length>0)&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>oe(e.id),className:`text-xs text-muted-foreground hover:text-foreground transition-colors`,children:t?`Hide details`:`Show details${i>0?` (${i} line${i===1?``:`s`})`:``}`})]})})():u&&g?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2 min-w-[280px]`,children:[(0,Y.jsx)(`textarea`,{value:f,onChange:e=>p(e.target.value),onKeyDown:e=>{e.key===`Escape`?(e.preventDefault(),ce()):e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),le())},rows:Math.min(8,Math.max(2,f.split(`
120
+ `).length)),className:`w-full resize-none rounded-md border bg-background text-foreground px-2 py-1.5 text-sm font-mono focus:outline-none focus:ring-2 focus:ring-ring`}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-primary-foreground/60`,children:`⌘/Ctrl+Enter to save · Esc to cancel`}),(0,Y.jsxs)(`div`,{className:`flex gap-1`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:ce,className:`text-xs px-2 py-0.5 rounded border border-primary-foreground/30 hover:bg-primary-foreground/10`,children:`Cancel`}),(0,Y.jsx)(`button`,{type:`button`,onClick:le,disabled:!f.trim(),className:`text-xs px-2 py-0.5 rounded bg-primary-foreground text-primary disabled:opacity-50`,children:`Save & resend`})]})]})]}):e.thinkingLog?(()=>{let t=e.thinkingLog,n=t.text.split(`
121
+ `).length,r=Math.max(.1,t.durationMs/1e3),a=t.replayed?`replay`:`${r.toFixed(+(r<10))}s`,o=t.text.split(`
122
+ `).slice(-4).join(`
123
+ `).trim();return(0,Y.jsxs)(`div`,{className:`min-w-0 max-w-[min(720px,85vw)]`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>l(e=>!e),className:`flex w-full flex-wrap items-center gap-x-2 gap-y-1 text-left text-sm font-medium text-violet-600 dark:text-violet-400`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground/60`,children:s?(0,Y.jsx)(ar,{className:`h-3.5 w-3.5`}):(0,Y.jsx)(i,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(St,{className:`h-3.5 w-3.5`}),(0,Y.jsx)(`span`,{className:`min-w-0`,children:`Thinking process`}),(0,Y.jsxs)(`span`,{className:`ml-0 text-[10px] font-mono font-normal text-muted-foreground sm:ml-auto`,children:[`iter `,t.iteration,` · `,a,` · `,n,` line`,n===1?``:`s`]})]}),(0,Y.jsx)(`pre`,{className:Z(`mt-2 whitespace-pre-wrap break-words rounded-lg border border-violet-500/20 bg-violet-500/[0.04] p-3 font-mono text-xs leading-relaxed text-foreground/80`,s?`max-h-[32rem] overflow-auto`:`max-h-24 overflow-hidden`),children:s?t.text:o||t.text}),(0,Y.jsxs)(`div`,{className:`mt-2 flex items-center gap-2`,children:[(0,Y.jsx)(Wu,{text:t.text,label:`Copy log`,className:`opacity-70 hover:opacity-100 transition-opacity`}),!s&&n>4&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>l(!0),className:`text-xs text-muted-foreground hover:text-foreground transition-colors`,children:`Show full log`})]})]})})():(()=>{let t=ie?ie.stripped:e.content;return(0,Y.jsx)(`div`,{className:Z(`text-sm leading-relaxed markdown-content`,e.streaming&&`streaming-cursor`),children:t?m&&e.role===`assistant`?(0,Y.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-mono text-xs leading-relaxed text-foreground/90 max-h-[40rem] overflow-auto`,children:e.content}):e.role===`assistant`&&e.isError?(0,Y.jsx)(Ku,{text:e.content}):(0,Y.jsx)(fn,{remarkPlugins:[o],rehypePlugins:Vu,components:Uu,children:t}):e.streaming?(0,Y.jsx)(`span`,{className:`inline-block animate-pulse text-muted-foreground`,children:`Typing...`}):(0,Y.jsx)(`span`,{className:`text-muted-foreground italic`,children:`No content`})})})()}),g&&e.status===`failed`&&(0,Y.jsx)(`span`,{className:`text-[10px] font-medium text-destructive flex items-center gap-1 px-1`,children:`⚠ Failed to send`}),ie&&ie.steps.length>0&&(0,Y.jsx)(Li,{steps:ie.steps,yoloMode:R,autoMode:I===`auto`,autoDelayMs:F.autonomyDelayMs,onAutoSubmit:re,canAutoSubmit:ne}),(0,Y.jsxs)(`div`,{className:Z(`flex items-center gap-2 px-1`,g?`flex-row-reverse`:`flex-row`),children:[(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground/50`,children:new Date(e.timestamp).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}),(0,Y.jsx)(`span`,{className:`w-px h-3 bg-border/60 shrink-0`,"aria-hidden":!0}),e.runSummary&&(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground/60 font-mono tabular-nums`,title:[`Iterations: ${e.runSummary.iterations}`,`Tool calls: ${e.runSummary.tools}`,`Elapsed: ${(e.runSummary.durationMs/1e3).toFixed(2)}s`,e.runSummary.costDelta>0?`Cost: ${e.runSummary.costDelta.toFixed(4)}`:``].filter(Boolean).join(` · `),children:[e.runSummary.iterations,` iter`,e.runSummary.tools>0?` · ${e.runSummary.tools} tool${e.runSummary.tools===1?``:`s`}`:``,` · `,e.runSummary.durationMs<6e4?`${(e.runSummary.durationMs/1e3).toFixed(1)}s`:`${Math.floor(e.runSummary.durationMs/6e4)}m ${Math.floor(e.runSummary.durationMs%6e4/1e3)}s`,e.runSummary.costDelta>0?` · ${e.runSummary.costDelta>=.01?e.runSummary.costDelta.toFixed(4):e.runSummary.costDelta.toFixed(6).replace(/0+$/,``).replace(/\.$/,``)}`:``]}),e.usage&&(e.usage.input>0||e.usage.output>0)&&(()=>{let t=e.usage,n=(t.input*j+t.output*M+(t.cacheRead??0)*P)/1e6,r=j>0||M>0,i=n>=.01?`${n.toFixed(4)}`:n>0?`${n.toFixed(6).replace(/0+$/,``).replace(/\.$/,``)}`:``;return(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground/60 font-mono tabular-nums`,title:[`Input: ${t.input.toLocaleString()}`,`Output: ${t.output.toLocaleString()}`,t.cacheRead?`Cache read: ${t.cacheRead.toLocaleString()}`:``,r?`Cost: ${i}`:``].filter(Boolean).join(` · `),children:[t.input.toLocaleString(),`→`,t.output.toLocaleString(),t.cacheRead?` · ${t.cacheRead.toLocaleString()} ↺`:``,r&&i?` · ${i}`:``]})})(),!v&&e.content&&!e.streaming&&(0,Y.jsx)(Wu,{text:e.content,label:`Copy`,className:`opacity-50 hover:opacity-100 transition-opacity`}),e.role===`assistant`&&e.content&&!e.streaming&&(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>h(e=>!e),title:m?`Show rendered markdown`:`Show raw markdown source`,className:Z(`text-xs inline-flex items-center gap-1 transition-opacity`,m?`text-primary hover:text-primary/80 opacity-100`:`opacity-50 hover:opacity-100 text-muted-foreground hover:text-foreground`),children:[(0,Y.jsx)(_,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{children:m?`Rendered`:`Raw`})]}),g&&!u&&!C&&e.content&&(0,Y.jsxs)(`button`,{type:`button`,onClick:se,title:`Edit & resend this prompt`,className:`opacity-50 hover:opacity-100 transition-opacity text-xs text-muted-foreground hover:text-foreground inline-flex items-center gap-1`,children:[(0,Y.jsx)(Hn,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{children:`Edit`})]}),e.role===`assistant`&&e.content&&!e.streaming&&(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>E(e.id),title:A?`Unpin`:`Pin this answer`,className:Z(`text-xs inline-flex items-center gap-1 transition-opacity`,A?`text-amber-500 hover:text-amber-600 opacity-100`:`opacity-50 hover:opacity-100 text-muted-foreground hover:text-foreground`),children:[A?(0,Y.jsx)(qt,{className:`h-3 w-3`}):(0,Y.jsx)(Rt,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{children:A?`Pinned`:`Pin`})]}),B&&e.content&&!e.streaming&&(0,Y.jsxs)(`button`,{type:`button`,onClick:ae,title:`Regenerate this response`,className:`opacity-50 hover:opacity-100 transition-opacity text-xs text-muted-foreground hover:text-foreground inline-flex items-center gap-1`,children:[(0,Y.jsx)(Xn,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{children:`Retry`})]})]})]})]})});function Yu(){let e=q(e=>e.mode),t=q(e=>e.modes),{listModes:n,switchMode:r}=Vs(),[i,a]=(0,U.useState)(!1),o=(0,U.useRef)(null);(0,U.useEffect)(()=>{i&&n()},[i,n]),(0,U.useEffect)(()=>{if(!i)return;let e=e=>{o.current?.contains(e.target)||a(!1)},t=e=>{e.key===`Escape`&&a(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[i]);let s=t.length>0?t:[{id:`default`,name:`Default`,description:`Standard agent behaviour`}];return(0,Y.jsxs)(`div`,{ref:o,className:`relative shrink-0`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>a(e=>!e),className:Z(`flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium`,`bg-accent/40 text-foreground hover:bg-accent transition-colors border border-transparent hover:border-primary/30`),title:`Active mode`,children:[`mode: `,(0,Y.jsx)(`span`,{className:`font-mono`,children:e||`default`}),(0,Y.jsx)(ar,{className:`h-3 w-3 opacity-60`})]}),i&&(0,Y.jsxs)(`div`,{className:`absolute top-full left-0 mt-1 w-64 rounded-md border bg-popover shadow-lg z-30 py-1`,children:[(0,Y.jsx)(`div`,{className:`px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted-foreground border-b`,children:`Mode`}),s.map(t=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{r(t.id),a(!1)},className:Z(`w-full text-left px-3 py-2 hover:bg-accent/40 flex items-start gap-2`,t.id===e&&`bg-accent/30`),children:[(0,Y.jsx)(jn,{className:Z(`h-3.5 w-3.5 mt-0.5 shrink-0`,t.id===e?`opacity-100 text-primary`:`opacity-0`)}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`text-xs font-mono`,children:t.id}),t.description&&(0,Y.jsx)(`div`,{className:`text-[11px] text-muted-foreground leading-snug`,children:t.description})]})]},t.id))]})]})}function Xu({open:e,onClose:t,className:n}){let[r,i]=(0,U.useState)([]),a=Vs(),o=(0,U.useRef)(null),s=(0,U.useRef)(null);(0,U.useEffect)(()=>{if(!(!e||!a.client?.isConnected))return a.client.send?.({type:`process.list`}),o.current=a.client.on?.(`process.list`,e=>{let t=e?.payload;t?.processes&&i(t.processes)})??null,s.current=setInterval(()=>{a.client.send?.({type:`process.list`})},3e3),()=>{o.current?.(),s.current&&clearInterval(s.current)}},[e,a.client]);let c=(0,U.useCallback)(e=>{a.client.send?.({type:`process.kill`,payload:{pid:e}})},[a.client]),l=(0,U.useCallback)(()=>{a.client.send?.({type:`process.killAll`})},[a.client]),u=r.filter(e=>e.status===`running`);return e?(0,Y.jsx)(`div`,{className:Z(`fixed inset-0 z-50 flex items-start justify-center pt-[10vh] bg-black/40 backdrop-blur-sm`,n),onClick:e=>{e.target===e.currentTarget&&t()},children:(0,Y.jsxs)(`div`,{className:`w-full max-w-lg rounded-xl border bg-card shadow-2xl max-h-[75vh] flex flex-col animate-in fade-in zoom-in-95`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,Y.jsx)(`span`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-amber-500/10 text-amber-600 dark:text-amber-400`,children:(0,Y.jsx)(hn,{className:`h-4 w-4`})}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Running Processes`}),(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:[u.length,` active · `,r.length,` total`]})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[u.length>0&&(0,Y.jsxs)(`button`,{type:`button`,onClick:l,className:`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs text-destructive hover:bg-destructive/10 transition-colors font-medium`,children:[(0,Y.jsx)(Ie,{className:`h-3 w-3 fill-current`}),`Kill All`]}),(0,Y.jsx)(`button`,{type:`button`,onClick:t,className:`p-1.5 rounded-md hover:bg-muted transition-colors`,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:r.length===0?(0,Y.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16 gap-3 text-muted-foreground`,children:[(0,Y.jsx)(hn,{className:`h-10 w-10 opacity-15`}),(0,Y.jsx)(`p`,{className:`text-sm font-medium`,children:`No processes tracked`}),(0,Y.jsx)(`p`,{className:`text-xs text-center max-w-xs`,children:`Processes appear here when the agent runs bash or exec tools. Active processes show a pulsing LED.`})]}):(0,Y.jsx)(`div`,{className:`divide-y`,children:r.map(e=>{let t=e.status===`running`?Math.floor((Date.now()-e.startedAt)/1e3):null,n=t?t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`:null,r=e.protected===!0;return(0,Y.jsxs)(`div`,{className:Z(`flex items-center justify-between px-4 py-3 text-xs transition-colors`,e.status===`running`?`bg-background hover:bg-muted/30`:`bg-muted/20 text-muted-foreground`),children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0 flex-1`,children:[(0,Y.jsx)(`span`,{className:Z(`led shrink-0`,e.status===`running`?r?`text-blue-400`:`text-[hsl(var(--success))] led-pulse`:`text-muted-foreground`)}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)(`span`,{className:`font-mono text-[10px] text-muted-foreground shrink-0`,children:[`PID `,e.pid]}),(0,Y.jsx)(`span`,{className:`font-medium truncate`,children:e.tool}),r&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 px-1 py-0.5 rounded text-[9px] bg-blue-500/10 text-blue-600 dark:text-blue-400 font-medium shrink-0`,title:`Protected — survives kill/killAll`,children:[(0,Y.jsx)(rt,{className:`h-2.5 w-2.5`}),`protected`]})]}),(0,Y.jsx)(`code`,{className:`text-[10px] text-muted-foreground/70 truncate block mt-0.5 font-mono`,children:e.command})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 shrink-0 ml-3`,children:[n&&(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:n}),e.status===`running`&&!r&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>c(e.pid),className:`p-1.5 rounded-md hover:bg-destructive/10 hover:text-destructive transition-colors`,title:`Kill PID ${e.pid}`,children:(0,Y.jsx)(Ie,{className:`h-3.5 w-3.5 fill-current`})})]})]},e.pid)})})})]})}):null}var Zu=`
124
+ ::highlight(chat-search) { background-color: hsl(var(--primary) / 0.3); color: inherit; }
125
+ ::highlight(chat-search-active) { background-color: hsl(var(--primary) / 0.85); color: hsl(var(--primary-foreground)); }
126
+ `;function Qu(e){return e.thinkingLog?[e.content,e.thinkingLog.text].filter(Boolean).join(`
127
+ `):e.role===`tool`?[e.toolName??``,e.toolResult??``,JSON.stringify(e.toolInput??``)].join(`
128
+ `):e.content}function $u(){let e=J(e=>e.searchOpen),t=J(e=>e.setSearchOpen),n=J(e=>e.searchQuery),r=J(e=>e.setSearchQuery),i=G(e=>e.messages),a=J(e=>e.requestScrollToMessage),o=J(e=>e.setSearchActiveMessageId),s=(0,U.useRef)(null),[c,l]=(0,U.useState)(0),[u,d]=(0,U.useState)(0);(0,U.useEffect)(()=>{e&&requestAnimationFrame(()=>s.current?.focus())},[e]),(0,U.useEffect)(()=>{let e=document.createElement(`style`);return e.textContent=Zu,document.head.appendChild(e),()=>{document.head.removeChild(e)}},[]);let f=(0,U.useMemo)(()=>{let e=n.trim().toLowerCase();return e?i.filter(t=>Qu(t).toLowerCase().includes(e)).map(e=>e.id):[]},[i,n]);if((0,U.useEffect)(()=>{c>=f.length&&l(0)},[f,c]),(0,U.useEffect)(()=>{o(e&&n.trim()?f[c]??null:null)},[e,n,f,c,o]),(0,U.useEffect)(()=>{let t=window,r=t.CSS?.highlights,i=t.Highlight;if(!r||!i)return;let a=()=>{r.delete(`chat-search`),r.delete(`chat-search-active`)},o=n.trim();if(!o||!e){a();return}let s=o.toLowerCase(),l=[],u=[],d=f[c];for(let e of document.querySelectorAll(`[data-message-id]`)){let t=e.dataset.messageId===d,n=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),r=n.nextNode();for(;r;){let e=r.nodeValue??``;if(e.length>0){let n=e.toLowerCase(),i=0;for(;i<=n.length-s.length;){let e=n.indexOf(s,i);if(e===-1)break;let a=document.createRange();a.setStart(r,e),a.setEnd(r,e+s.length),l.push(a),t&&u.push(a),i=e+s.length}}r=n.nextNode()}}return l.length>0?r.set(`chat-search`,new i(...l)):r.delete(`chat-search`),u.length>0?r.set(`chat-search-active`,new i(...u)):r.delete(`chat-search-active`),a},[n,f,c,e,u]),(0,U.useEffect)(()=>{let e=f[c];if(!e)return;a(e);let t=0,n=requestAnimationFrame(function e(){d(e=>e+1),++t<3&&(n=requestAnimationFrame(e))});return()=>cancelAnimationFrame(n)},[f,c,a]),!e)return null;let p=e=>{f.length!==0&&l(t=>(t+e+f.length)%f.length)};return(0,Y.jsx)(`div`,{className:`absolute top-2 right-4 z-30 w-[28rem] max-w-[calc(100%-2rem)] rounded-lg border bg-popover shadow-xl`,children:(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[(0,Y.jsx)(Me,{className:`h-4 w-4 text-muted-foreground shrink-0`}),(0,Y.jsx)(`input`,{ref:s,value:n,onChange:e=>r(e.target.value),onKeyDown:e=>{e.key===`Escape`?(e.preventDefault(),t(!1)):e.key===`Enter`?(e.preventDefault(),p(e.shiftKey?-1:1)):e.key===`ArrowDown`?(e.preventDefault(),p(1)):e.key===`ArrowUp`&&(e.preventDefault(),p(-1))},placeholder:`Search in chat…`,className:`flex-1 bg-transparent outline-none text-sm placeholder:text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground tabular-nums shrink-0`,children:f.length===0?n?`0`:``:`${c+1} / ${f.length}`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>p(-1),disabled:f.length===0,className:Z(`p-1 rounded hover:bg-muted disabled:opacity-30 disabled:cursor-not-allowed`),title:`Previous hit`,children:(0,Y.jsx)(ur,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>p(1),disabled:f.length===0,className:Z(`p-1 rounded hover:bg-muted disabled:opacity-30 disabled:cursor-not-allowed`),title:`Next hit`,children:(0,Y.jsx)(Zt,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>t(!1),className:`p-1 rounded hover:bg-muted text-muted-foreground`,title:`Close (Esc)`,children:(0,Y.jsx)(H,{className:`h-3.5 w-3.5`})})]})})}function ed(e){return e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(e<1e4?2:1)}s`:`${Math.floor(e/6e4)}m${Math.floor(e%6e4/1e3)}s`}var td=(0,U.memo)(function({tools:e,defaultOpen:t=!1,isContinuation:n=!1}){let[r,a]=(0,U.useState)(t);if(e.length===1)return(0,Y.jsx)(Ju,{message:Rr(e[0]),isFirst:!0,isContinuation:n});let o=e.filter(e=>e.toolResult===void 0).length,s=e.filter(e=>e.isError).length,c=e.reduce((e,t)=>e+(t.toolDurationMs??0),0),l=Array.from(new Set(e.map(e=>e.toolName).filter(Boolean))),u=l.slice(0,3).join(`, `),d=l.length>3?` +${l.length-3}`:``;return(0,Y.jsxs)(`div`,{className:`flex gap-3 animate-message`,children:[n?(0,Y.jsx)(`div`,{className:`flex-shrink-0 w-8 h-8`,"aria-hidden":!0}):(0,Y.jsx)(`div`,{className:`flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center bg-secondary text-secondary-foreground ring-2 ring-offset-2 ring-offset-background ring-secondary/20`,children:(0,Y.jsx)(hn,{className:`h-4 w-4`})}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5 max-w-[85%] flex-1 min-w-0`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>a(e=>!e),className:Z(`flex items-center gap-2 text-sm font-medium cursor-pointer select-none`,`hover:bg-muted/50 rounded-lg px-2 py-1.5 -mx-2 transition-colors`,`border border-border/40 bg-muted/30`),children:[r?(0,Y.jsx)(ar,{className:`h-3.5 w-3.5 text-muted-foreground`}):(0,Y.jsx)(i,{className:`h-3.5 w-3.5 text-muted-foreground`}),(0,Y.jsx)(hn,{className:`h-3.5 w-3.5 text-muted-foreground`}),(0,Y.jsxs)(`span`,{className:`font-mono text-xs`,children:[e.length,` tool call`,e.length===1?``:`s`]}),o>0?(0,Y.jsx)(O,{className:`h-3 w-3 animate-spin text-amber-500`}):s>0?(0,Y.jsx)(N,{className:`h-3 w-3 text-destructive`}):(0,Y.jsx)(V,{className:`h-3 w-3 text-green-500`}),c>0&&(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground tabular-nums font-normal`,children:ed(c)}),u&&(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground/80 font-mono truncate`,children:[`· `,u,d]})]}),r&&(0,Y.jsx)(`div`,{className:`space-y-2 pl-3 border-l-2 border-border/40 ml-2 tool-details`,children:e.map(e=>(0,Y.jsx)(Ju,{message:e,isFirst:!1},e.id))})]})]})}),nd=[{icon:Me,title:`Understand`,hint:`Explore and analyze the codebase`,tone:`text-blue-600 dark:text-blue-400 bg-blue-500/10 border-blue-500/20`,prompts:[`Map out the structure of this codebase: what are the main modules or components, how do they depend on each other, and what are the key patterns used throughout?`,`Find and document the public API surface — all exported interfaces, functions, and types that other parts of the system depend on.`,`Trace the flow of data through the system for a typical operation. Where does input validation happen? Where are side effects triggered?`]},{icon:d,title:`Create`,hint:`Build new features and functionality`,tone:`text-emerald-600 dark:text-emerald-400 bg-emerald-500/10 border-emerald-500/20`,prompts:[`Add a new feature that covers the full stack: data model, business logic, and any UI or API layers. Follow existing patterns in this codebase.`,`Write comprehensive tests for a module with low coverage. Include happy paths, edge cases, and error scenarios.`,`Add observability to a critical path — structured logging, error tracking, or metrics that help diagnose issues in production.`]},{icon:De,title:`Investigate`,hint:`Debug issues and find root causes`,tone:`text-amber-600 dark:text-amber-400 bg-amber-500/10 border-amber-500/20`,prompts:[`Something isn't working as expected — help me trace from the symptom to the root cause. Follow the code path and identify where behavior diverges from intent.`,`There's a difference between how this works locally versus in production or CI. Check for environment differences, configuration issues, or hidden assumptions.`,`Performance is degrading. Identify the bottlenecks — whether N+1 queries, blocking I/O, unnecessary allocations, or something else — and propose targeted fixes.`]},{icon:$e,title:`Improve`,hint:`Refactor and optimize existing code`,tone:`text-violet-600 dark:text-violet-400 bg-violet-500/10 border-violet-500/20`,prompts:[`Find duplicated or similar logic that could be consolidated into shared utilities. Extract the common parts and update the call sites.`,`Identify modules that have grown too large or handle too many responsibilities. Propose a cleaner separation that can be done incrementally.`,`Review error handling across the codebase: are errors consistent, well-contextualized, and properly propagated? Suggest improvements to the worst cases.`]}],rd=[{name:`/help`,hint:`list every slash command`},{name:`/diag`,hint:`runtime diagnostics`},{name:`/stats`,hint:`tokens · cache · cost · elapsed`},{name:`/tools`,hint:`show registered tools`},{name:`/memory`,hint:`show remembered notes`},{name:`/compact`,hint:`shrink context`},{name:`/clear`,hint:`wipe current context`},{name:`/new`,hint:`fresh session`}];function id(e){let t=document.querySelector(`textarea`);t&&((Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype,`value`)?.set)?.call(t,e),t.dispatchEvent(new Event(`input`,{bubbles:!0})),t.focus())}function ad(){let{projectName:e,cwd:t}=q(),{provider:n,model:r}=K(),i=K(e=>e.wsConnected),a=K(e=>e.wsUrl),o=J(e=>e.setCurrentView),[s,c]=(0,U.useState)(void 0);(0,U.useEffect)(()=>{if(!i)return;let e=W(a),t=e.on(`providers.saved`,e=>{let t=e.payload;c(t.providers?.length??0)});return e.listSavedProviders(),()=>{t()}},[i,a]);let l=J(e=>e.promptHistory).slice(0,6),{listSessions:u,resumeSession:d}=Vs(),f=Ei(e=>e.entries);(0,U.useEffect)(()=>{i&&f.length===0&&u(10)},[i]);let p=J(e=>e.sessionNicknames),m=f.filter(e=>!e.isCurrent).slice(0,4);return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-8 py-8 px-2 max-w-5xl mx-auto w-full`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col items-center text-center gap-3`,children:[(0,Y.jsxs)(`div`,{className:`relative`,children:[(0,Y.jsx)(`div`,{className:`w-14 h-14 rounded-2xl bg-gradient-to-br from-primary via-primary to-primary/60 flex items-center justify-center shadow-lg shadow-primary/20`,children:(0,Y.jsx)(Yt,{className:`h-7 w-7 text-primary-foreground`})}),(0,Y.jsx)(`div`,{className:`absolute -inset-3 bg-gradient-to-r from-transparent via-primary/10 to-transparent animate-pulse rounded-full -z-10`})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`h2`,{className:`text-2xl font-semibold tracking-tight`,children:[`Where do you want to start`,e?(0,Y.jsxs)(Y.Fragment,{children:[` in `,(0,Y.jsx)(`span`,{className:`text-primary`,children:e})]}):``,`?`]}),(0,Y.jsxs)(`p`,{className:`text-sm text-muted-foreground mt-2 max-w-2xl mx-auto leading-relaxed`,children:[`The agent is connected to your project and ready to read, edit, run commands, search the codebase, track todos, and remember context across sessions. Pick a starting prompt below, write your own, or type`,` `,(0,Y.jsx)(`span`,{className:`font-mono text-foreground/80`,children:`/`}),` for the full command palette.`]}),n&&r&&(0,Y.jsxs)(`p`,{className:`text-xs text-muted-foreground/70 mt-2 font-mono`,children:[n,` / `,r]}),t&&(0,Y.jsxs)(`p`,{className:`text-[11px] text-muted-foreground/50 mt-1 font-mono`,title:t,children:[`Working directory: `,t]})]})]}),i&&s===0&&(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>o(`settings`),className:Z(`group rounded-xl border bg-gradient-to-br from-amber-500/10 via-amber-500/5 to-transparent`,`border-amber-500/30 hover:border-amber-500/50 transition-colors`,`p-4 flex items-center gap-4 text-left`),children:[(0,Y.jsx)(`span`,{className:`flex items-center justify-center w-12 h-12 rounded-lg bg-amber-500/15 text-amber-600 dark:text-amber-400 shrink-0`,children:(0,Y.jsx)(oe,{className:`h-6 w-6`})}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`h3`,{className:`text-base font-semibold mb-1`,children:`No API key configured yet`}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground leading-relaxed`,children:`Register a provider in Settings before sending a message — otherwise the agent has nothing to talk to. Anthropic, OpenAI, Google, and any OpenAI-compatible endpoint all work.`})]}),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 text-xs text-amber-600 dark:text-amber-400 font-medium shrink-0 group-hover:translate-x-0.5 transition-transform`,children:[`Open Settings `,(0,Y.jsx)(Vn,{className:`h-3.5 w-3.5`})]})]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 lg:grid-cols-2 gap-4 max-h-[calc(100vh-16rem)] lg:max-h-none overflow-y-auto`,children:nd.map((e,t)=>{let n=e.icon;return(0,Y.jsxs)(`div`,{className:`rounded-xl border bg-card/40 backdrop-blur-sm p-4 flex flex-col gap-3 animate-message hover:border-primary/20 hover:shadow-sm transition-all`,style:{animationDelay:`${t*80}ms`},children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:Z(`flex items-center justify-center w-8 h-8 rounded-lg border`,e.tone),children:(0,Y.jsx)(n,{className:`h-4 w-4`})}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h3`,{className:`text-sm font-semibold`,children:e.title}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e.hint})]})]}),(0,Y.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:e.prompts.map((e,t)=>(0,Y.jsx)(`button`,{type:`button`,onClick:()=>id(e),className:`text-left text-xs leading-relaxed text-foreground/80 hover:text-foreground border border-transparent hover:border-border/60 rounded-lg px-3 py-2 hover:bg-muted/40 transition-colors line-clamp-3`,title:e,children:e},t))})]},e.title)})}),m.length>0&&(0,Y.jsxs)(`div`,{className:`rounded-xl border bg-muted/20 p-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,Y.jsx)(Ar,{className:`h-4 w-4 text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`text-xs uppercase tracking-wider text-muted-foreground font-medium`,children:`Pick back up`})]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-2`,children:m.map(e=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>d(e.id),className:`text-left rounded-lg border border-border/40 bg-background/60 hover:border-primary/40 hover:bg-accent/30 px-3 py-2 transition-colors group/sess`,title:e.title,children:[(0,Y.jsx)(`div`,{className:`text-sm font-medium truncate text-foreground group-hover/sess:text-primary`,children:p[e.id]||e.title||`(empty)`}),(0,Y.jsxs)(`div`,{className:`text-[10px] text-muted-foreground font-mono truncate mt-0.5`,children:[e.provider,`/`,e.model,e.tokenTotal>0&&(0,Y.jsxs)(`span`,{className:`ml-2`,children:[`· `,e.tokenTotal.toLocaleString(),` tok`]})]})]},e.id))})]}),l.length>0&&(0,Y.jsxs)(`div`,{className:`rounded-xl border bg-muted/20 p-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,Y.jsx)(L,{className:`h-4 w-4 text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`text-xs uppercase tracking-wider text-muted-foreground font-medium`,children:`Recent prompts`})]}),(0,Y.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:l.filter(e=>!e.startsWith(`/`)).slice(0,5).map((e,t)=>(0,Y.jsx)(`button`,{type:`button`,onClick:()=>id(e),className:`text-left text-xs leading-relaxed text-muted-foreground hover:text-foreground border border-transparent hover:border-border/60 rounded-lg px-3 py-2 hover:bg-background/60 transition-colors line-clamp-2`,title:e,children:e},t))})]}),(0,Y.jsxs)(`div`,{className:`rounded-xl border bg-muted/20 p-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,Y.jsx)(tt,{className:`h-4 w-4 text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`text-xs uppercase tracking-wider text-muted-foreground font-medium`,children:`Quick commands`})]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-2`,children:rd.map(e=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>id(e.name),className:`text-left flex flex-col gap-0.5 rounded-md border border-border/40 bg-background/60 px-3 py-2 hover:border-primary/40 hover:bg-accent/40 transition-colors`,children:[(0,Y.jsx)(`span`,{className:`font-mono text-xs text-foreground`,children:e.name}),(0,Y.jsx)(`span`,{className:`text-[11px] text-muted-foreground truncate`,children:e.hint})]},e.name))})]})]})}function od(){let e=G(e=>e.thinkingBuffer);if(!e)return null;let t=e.split(`
129
+ `).slice(-6).join(`
130
+ `).trim();return(0,Y.jsxs)(`div`,{className:`flex gap-3 animate-message`,children:[(0,Y.jsx)(`div`,{className:`flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center bg-violet-500/10 text-violet-600 dark:text-violet-400 ring-2 ring-offset-2 ring-offset-background ring-violet-500/20`,children:(0,Y.jsx)(St,{className:`h-4 w-4 animate-pulse`})}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1 max-w-[85%] min-w-0`,children:[(0,Y.jsx)(`span`,{className:`text-xs font-medium text-violet-600 dark:text-violet-400 px-1`,children:`Thinking…`}),(0,Y.jsx)(`div`,{className:`rounded-2xl rounded-bl-md px-3 py-2 bg-violet-500/[0.04] border border-violet-500/20 text-foreground/80`,children:(0,Y.jsx)(`pre`,{className:`whitespace-pre-wrap break-words font-sans text-xs leading-relaxed italic max-h-32 overflow-hidden`,children:t||`…`})})]})]})}var sd=(0,U.memo)(function({row:e,isLoading:t,compactMode:n,isFirstRow:r}){let i=Z(`mx-auto max-w-5xl w-full px-4`,r&&`pt-4`,n?`pb-3`:`pb-6`);return e.kind===`day`?(0,Y.jsx)(`div`,{className:i,children:(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 py-1 text-[11px] text-muted-foreground/70 uppercase tracking-wider font-medium`,children:[(0,Y.jsx)(`div`,{className:`flex-1 h-px bg-border/50`}),(0,Y.jsx)(`span`,{children:e.label}),(0,Y.jsx)(`div`,{className:`flex-1 h-px bg-border/50`})]})}):e.kind===`user`?(0,Y.jsx)(`div`,{className:i,children:(0,Y.jsx)(Ju,{message:e.message,isFirst:!0})}):(0,Y.jsx)(`div`,{className:i,children:(0,Y.jsx)(`div`,{className:Z(`chat-turn`,n?`space-y-1`:`space-y-1.5`),children:e.items.map(n=>{if(n.kind===`msg`)return(0,Y.jsx)(Ju,{message:n.message,isFirst:n.isFirst,isContinuation:n.isContinuation},n.key);let r=e.isLastTurn&&n.isLastGroup&&t&&n.hasRunningTool;return(0,Y.jsx)(td,{tools:n.tools,defaultOpen:r,isContinuation:n.isContinuation},n.key)})})})});function cd(){let e=G(e=>e.messages),t=G(e=>e.isLoading),n=J(e=>e.sidebarOpen),r=J(e=>e.toggleSidebar),i=J(e=>e.compactMode),{totalTokens:a,startTime:o,lastInputTokens:s,maxContext:c,iteration:l}=q(),u=q(e=>e.session),d=u?.id,f=J(e=>d?e.sessionNicknames[d]:void 0),p=J(e=>e.setSessionNickname),m=u?.title,[h,g]=(0,U.useState)(!1),[_,v]=(0,U.useState)(``),y=Ei(e=>e.entries),[b,x]=(0,U.useState)(!1),S=(0,U.useRef)(null);(0,U.useEffect)(()=>{if(!b)return;let e=e=>{S.current?.contains(e.target)||x(!1)},t=e=>{e.key===`Escape`&&x(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[b]);let{provider:C,model:w}=K(),T=(0,U.useRef)(null),E=(0,U.useMemo)(()=>mc(e),[e]),D=(0,U.useRef)(0);D.current=E.length+1;let O=(0,U.useMemo)(()=>{let e=new Map;return E.forEach((t,n)=>{if(t.kind===`user`)e.set(t.message.id,n);else if(t.kind===`agent`)for(let r of t.items)if(r.kind===`msg`)e.set(r.message.id,n);else for(let t of r.tools)e.set(t.id,n)}),e},[E]),A=J(e=>e.scrollTarget),j=$i(e=>e.autonomy),M=(0,U.useCallback)(e=>{$i.getState().set({autonomy:e}),W()?.send?.({type:`autonomy.switch`,payload:{mode:e}})},[]),[N,P]=(0,U.useState)(!1),[F,I]=(0,U.useState)(!1),[L,R]=(0,U.useState)(!1);(0,U.useEffect)(()=>{let e=()=>R(!0);return document.addEventListener(`open:context-breakdown`,e),()=>document.removeEventListener(`open:context-breakdown`,e)},[]);let z=c>0&&s>0?Math.min(100,Math.round(s/c*100)):0,[ee,te]=(0,U.useState)(!0),[ne,re]=(0,U.useState)(0),[B,V]=(0,U.useState)(!1),ie=(0,U.useRef)(e.length),ae=(0,U.useCallback)(()=>{let e=T.current;if(!e)return;let t=e.scrollSize-e.scrollOffset-e.viewportSize<120;te(t),t&&(re(0),ie.current=G.getState().messages.length),V(e.scrollOffset>e.viewportSize&&e.scrollSize>e.viewportSize*2.5)},[]),oe=(0,U.useCallback)(e=>{W()?.resumeSession?.(e),x(!1)},[]);(0,U.useEffect)(()=>{let t=T.current;if(t)if(ee)t.scrollToIndex(D.current-1,{align:`end`}),ie.current=e.length;else{let t=e.length-ie.current;t>0&&re(t)}},[e,ee]),(0,U.useEffect)(()=>{te(!0),re(0),ie.current=G.getState().messages.length,requestAnimationFrame(()=>{T.current?.scrollToIndex(D.current-1,{align:`end`})})},[d]),(0,U.useEffect)(()=>{if(!A)return;let e=O.get(A.id);e!==void 0&&T.current?.scrollToIndex(e,{align:`center`,smooth:!0})},[A,O]);let se=(0,U.useCallback)(()=>{T.current?.scrollToIndex(D.current-1,{align:`end`,smooth:!0}),te(!0),re(0),ie.current=G.getState().messages.length},[]),ce=(0,U.useCallback)(()=>{T.current?.scrollToIndex(0,{align:`start`,smooth:!0})},[]),[le,ue]=(0,U.useState)(null),[de,fe]=(0,U.useState)(()=>Date.now()),me=(0,U.useRef)(null),he=(0,U.useMemo)(()=>{let t=e[e.length-1],n=e.filter(e=>e.role===`tool`&&e.toolResult===void 0),r=`Thinking…`;if(n.length>0){let e=Array.from(new Set(n.map(e=>e.toolName).filter(Boolean))),t=e.slice(0,2).join(`, `),i=e.length>2?` +${e.length-2}`:``;r=n.length===1?`Running ${t||`tool`}…`:`Running ${n.length} tools (${t}${i})…`}else t?.role===`assistant`&&t.content?r=`Writing reply…`:t?.role===`tool`&&t.toolResult!==void 0&&(r=`Thinking about the next step…`);let i=le?Math.max(0,Math.floor((de-le)/1e3)):0,a=i<60?`${i}s`:`${Math.floor(i/60)}m ${i%60}s`,o=``,s=t?.role===`assistant`&&t.streaming&&t.content?t:null;if(s){let e=me.current;if(!e||e.id!==s.id)me.current={id:s.id,at:Date.now(),len:s.content.length};else{let t=Math.max(1,de-e.at),n=Math.max(0,s.content.length-e.len);if(t>500&&n>0){let e=n*1e3/t;o=e>=1e3?`${(e/1e3).toFixed(1)}k ch/s`:`${Math.round(e)} ch/s`}}}else me.current&&=null;return{label:r,elapsed:a,speedLabel:o}},[e,de,le]);(0,U.useEffect)(()=>{t&&le===null&&ue(Date.now()),!t&&le!==null&&ue(null)},[t,le]),(0,U.useEffect)(()=>{if(!t)return;let e=setInterval(()=>fe(Date.now()),500);return()=>clearInterval(e)},[t]);let ge=e=>{if(!e)return`--`;let t=Math.floor((Date.now()-e)/1e3);return t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`},_e=(()=>{if(!t)return`idle`;let n=e[e.length-1];return n?.role===`assistant`&&n.content&&n.streaming?`streaming`:`thinking`})(),ve=_e===`idle`?`bg-muted text-muted-foreground`:_e===`streaming`?`bg-blue-500/10 text-blue-600 dark:text-blue-400`:`bg-amber-500/10 text-amber-600 dark:text-amber-400`,ye=c>0&&s>0||a.input>0||!!o;return(0,Y.jsxs)(`div`,{className:`flex flex-col flex-1 min-h-0`,children:[(0,Y.jsxs)(`header`,{className:`flex flex-col border-b bg-card/95 backdrop-blur-sm supports-[backdrop-filter]:bg-card/80 shrink-0 sticky top-0 z-20`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2 px-3 py-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0 flex-1 overflow-hidden`,children:[!n&&(0,Y.jsx)($,{variant:`ghost`,size:`icon`,className:`h-7 w-7 shrink-0`,onClick:r,title:`Open sidebar (Ctrl+\\\\)`,children:(0,Y.jsx)(vt,{className:`h-4 w-4`})}),!n&&(0,Y.jsx)(`div`,{className:`flex items-center gap-1.5 shrink-0 mr-1`,children:(0,Y.jsx)(`div`,{className:`w-5 h-5 rounded bg-primary flex items-center justify-center`,children:(0,Y.jsx)(Yt,{className:`h-3 w-3 text-primary-foreground`})})}),(0,Y.jsxs)(`span`,{className:Z(`flex items-center gap-1 px-1.5 py-0.5 rounded-full text-[11px] font-medium shrink-0 tabular-nums`,ve),title:`Agent state: ${_e}`,children:[_e!==`idle`&&(0,Y.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-current animate-pulse`}),(0,Y.jsx)(`span`,{children:_e})]}),d&&(h?(0,Y.jsx)(`input`,{value:_,onChange:e=>v(e.target.value),onBlur:()=>{_.trim()&&p(d,_),g(!1)},onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),_.trim()&&p(d,_),g(!1)):e.key===`Escape`&&(e.preventDefault(),g(!1))},placeholder:`Session name…`,className:`h-5 px-1.5 text-[11px] bg-background border border-primary/40 rounded focus:outline-none focus:ring-1 focus:ring-ring shrink-0 w-32`,autoFocus:!0}):(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{v(f||m||``),g(!0)},className:`flex items-center gap-1 text-[11px] font-medium text-foreground/80 hover:text-foreground truncate max-w-[12rem] shrink-0 px-1 -mx-1 rounded hover:bg-muted/50 transition-colors`,title:`Click to rename session`,children:[(0,Y.jsx)(Hn,{className:`h-2.5 w-2.5 text-muted-foreground shrink-0`}),(0,Y.jsx)(`span`,{className:`truncate`,children:f||m||`Untitled`})]}))]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[y.length>1&&(0,Y.jsxs)(`div`,{ref:S,className:`relative shrink-0`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>x(e=>!e),className:`flex items-center gap-0.5 px-1 py-0.5 rounded text-[10px] text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors`,title:`Switch session`,children:[(0,Y.jsx)(lt,{className:`h-3 w-3`}),(0,Y.jsx)(ar,{className:`h-2.5 w-2.5`})]}),b&&(0,Y.jsx)(`div`,{className:`absolute left-0 top-full mt-1 z-40 w-64 rounded-md border bg-popover shadow-lg p-1 max-h-60 overflow-y-auto`,children:y.slice(0,15).map(e=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>oe(e.id),className:Z(`w-full text-left px-2 py-1.5 rounded text-xs hover:bg-accent transition-colors`,e.isCurrent&&`bg-primary/10`),children:[(0,Y.jsx)(`div`,{className:`font-medium truncate`,children:e.title||`(empty)`}),(0,Y.jsxs)(`div`,{className:`text-[10px] text-muted-foreground font-mono truncate`,children:[e.provider,`/`,e.model,` · `,e.tokenTotal.toLocaleString(),` tok`]})]},e.id))})]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>J.getState().setModelSwitcherOpen(!0),className:`group hidden sm:flex items-center gap-1 px-2 py-0.5 rounded-md border bg-background/50 hover:bg-accent hover:border-primary/40 transition-colors text-[11px] min-w-0 shrink-0`,title:`Change provider / model (Ctrl+M)`,children:[(0,Y.jsx)(k,{className:`h-3 w-3 text-muted-foreground group-hover:text-foreground shrink-0`}),(0,Y.jsxs)(`span`,{className:`font-mono truncate max-w-[9rem] xl:max-w-[16rem]`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:C||`no-provider`}),(0,Y.jsx)(`span`,{className:`text-muted-foreground/40 mx-0.5`,children:`/`}),(0,Y.jsx)(`span`,{className:`font-medium`,children:w||`no-model`})]})]}),(0,Y.jsxs)(`div`,{className:`hidden md:flex items-center gap-1.5 shrink-0`,children:[(0,Y.jsx)(Yu,{}),(0,Y.jsx)(hu,{})]}),l&&(0,Y.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 px-1.5 py-0.5 rounded-full text-[11px] font-medium bg-primary/10 text-primary shrink-0 hover:bg-primary/20 transition-colors cursor-pointer`,title:`Agent iteration — click to jump to live activity`,onClick:()=>document.getElementById(`chat-activity`)?.scrollIntoView({behavior:`smooth`,block:`center`}),children:[(0,Y.jsx)(Dt,{className:`h-3 w-3 animate-pulse`}),`iter `,l.index,l.max>0?`/${l.max}`:``]}),(0,Y.jsx)(jl,{value:j,onChange:M,compact:!0})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-0.5 shrink-0`,children:[(0,Y.jsxs)($,{variant:N?`secondary`:`ghost`,size:`icon`,className:Z(`h-7 w-7 relative`,N&&`bg-amber-500/10 text-amber-600 dark:text-amber-400`),onClick:()=>P(e=>!e),title:`Running processes`,children:[(0,Y.jsx)(hn,{className:`h-4 w-4`}),N&&(0,Y.jsx)(`span`,{className:`absolute -bottom-0.5 left-1/2 -translate-x-1/2 w-1 h-1 rounded-full bg-amber-500`})]}),(0,Y.jsxs)($,{variant:F?`secondary`:`ghost`,size:`icon`,className:Z(`h-7 w-7 relative`,F&&`bg-violet-500/10 text-violet-600 dark:text-violet-400`),onClick:()=>I(e=>!e),title:`Session checkpoints — rewind`,children:[(0,Y.jsx)(lt,{className:`h-4 w-4`}),F&&(0,Y.jsx)(`span`,{className:`absolute -bottom-0.5 left-1/2 -translate-x-1/2 w-1 h-1 rounded-full bg-violet-500`})]})]})]}),ye&&(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-3 py-1 border-t bg-muted/20 text-[11px] text-muted-foreground`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0 flex-1 tabular-nums`,children:[s>0&&(0,Y.jsx)(bc,{pct:z,tokens:s,maxTokens:c>0?c:void 0,onClick:()=>R(!0)}),a.input>0&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:`font-medium text-foreground`,children:dc(a.input)}),(0,Y.jsx)(`span`,{children:`in`})]}),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:`font-medium text-foreground`,children:dc(a.output)}),(0,Y.jsx)(`span`,{children:`out`})]}),a.cacheRead&&a.cacheRead>0&&(()=>{let e=(a.cacheRead??0)+a.input,t=e>0?Math.round((a.cacheRead??0)/e*100):0;return(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,title:`Cache hit ratio: ${t}%`,children:[(0,Y.jsx)(`span`,{className:`font-medium text-foreground`,children:dc(a.cacheRead)}),(0,Y.jsxs)(`span`,{children:[`cache (`,t,`%)`]})]})})(),(0,Y.jsx)(_u,{})]})]}),o&&(0,Y.jsx)(`span`,{className:`text-muted-foreground/70 tabular-nums shrink-0`,children:ge(o)})]})]}),(0,Y.jsxs)(`div`,{className:`flex-1 relative overflow-hidden`,children:[(0,Y.jsx)($u,{}),!ee&&(0,Y.jsxs)(`button`,{type:`button`,onClick:se,className:Z(`absolute bottom-4 left-1/2 -translate-x-1/2 z-10 jump-bottom`,`flex items-center gap-2 px-4 py-2 rounded-full shadow-lg`,`bg-primary text-primary-foreground text-xs font-medium`,`hover:bg-primary/90 transition-colors animate-message`),children:[(0,Y.jsx)(Zt,{className:`h-3.5 w-3.5`}),ne>0?`${ne} new message${ne===1?``:`s`}`:`Jump to latest`]}),B&&(0,Y.jsxs)(`button`,{type:`button`,onClick:ce,title:`Scroll to top (oldest)`,className:Z(`absolute top-3 right-3 z-10`,`flex items-center gap-1 px-2.5 py-1 rounded-full shadow-md border`,`bg-background/90 backdrop-blur-sm text-[11px] text-muted-foreground`,`hover:text-foreground hover:bg-background transition-colors animate-message`),children:[(0,Y.jsx)(ur,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{children:`Top`})]}),E.length===0&&!t?(0,Y.jsx)(`div`,{className:`h-full overflow-y-auto overscroll-contain`,children:(0,Y.jsx)(`div`,{className:`mx-auto max-w-5xl w-full px-4 pt-4 pb-8`,children:(0,Y.jsx)(ad,{})})}):(0,Y.jsxs)(pe,{ref:T,className:`h-full`,onScroll:ae,children:[E.map((e,n)=>(0,Y.jsx)(sd,{row:e,isLoading:t,compactMode:i,isFirstRow:n===0},e.key)),(0,Y.jsxs)(`div`,{id:`chat-activity`,className:Z(`mx-auto max-w-5xl w-full px-4`,i?`pb-3`:`pb-8`),children:[(0,Y.jsx)(od,{}),t&&(0,Y.jsxs)(`div`,{className:`flex gap-3 animate-message`,children:[(0,Y.jsx)(`div`,{className:`flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center bg-accent text-accent-foreground ring-2 ring-offset-2 ring-offset-background ring-accent/20`,children:(0,Y.jsx)(In,{className:`h-4 w-4`})}),(0,Y.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:(0,Y.jsx)(`div`,{className:`rounded-2xl px-4 py-3 bg-card border text-foreground`,children:(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 text-sm`,children:[(0,Y.jsxs)(`span`,{className:`flex gap-1`,children:[(0,Y.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-primary/70 animate-bounce [animation-delay:-0.3s]`}),(0,Y.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-primary/70 animate-bounce [animation-delay:-0.15s]`}),(0,Y.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-primary/70 animate-bounce`})]}),(0,Y.jsx)(`span`,{className:`text-foreground/90`,children:he.label}),(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground tabular-nums`,children:he.elapsed}),l&&(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground tabular-nums`,children:[`· iter `,l.index,l.max>0?`/${l.max}`:``]}),he.speedLabel&&(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground/80 tabular-nums`,children:[`· `,he.speedLabel]})]})})})]})]},`__live`)]})]}),(0,Y.jsxs)(`div`,{className:`border-t bg-card/50 backdrop-blur supports-[backdrop-filter]:bg-card/50 shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`max-w-5xl mx-auto px-4 pt-1.5 flex items-center gap-3 text-[10px] text-muted-foreground/50 select-none overflow-x-auto`,children:[(0,Y.jsxs)(`span`,{title:`Enter`,className:`inline-flex items-center gap-1`,children:[(0,Y.jsx)(`kbd`,{children:`Enter`}),` send`]}),(0,Y.jsx)(`span`,{className:`opacity-50`,children:`·`}),(0,Y.jsxs)(`span`,{title:`Shift+Enter`,className:`inline-flex items-center gap-1`,children:[(0,Y.jsx)(`kbd`,{children:`Shift`}),`+`,(0,Y.jsx)(`kbd`,{children:`↵`}),` newline`]}),(0,Y.jsx)(`span`,{className:`opacity-50`,children:`·`}),(0,Y.jsxs)(`span`,{title:`Ctrl+\\\\`,className:`inline-flex items-center gap-1`,children:[(0,Y.jsx)(`kbd`,{children:`Ctrl+\\`}),` sidebar`]}),(0,Y.jsx)(`span`,{className:`opacity-50`,children:`·`}),(0,Y.jsxs)(`span`,{title:`Ctrl+F`,className:`inline-flex items-center gap-1`,children:[(0,Y.jsx)(`kbd`,{children:`Ctrl+F`}),` search`]}),(0,Y.jsx)(`span`,{className:`opacity-50`,children:`·`}),(0,Y.jsxs)(`span`,{title:`Ctrl+K`,className:`inline-flex items-center gap-1`,children:[(0,Y.jsx)(`kbd`,{children:`Ctrl+K`}),` palette`]}),(0,Y.jsx)(`span`,{className:`opacity-50`,children:`·`}),(0,Y.jsxs)(`span`,{title:`Ctrl+L / Ctrl+N`,className:`inline-flex items-center gap-1`,children:[(0,Y.jsx)(`kbd`,{children:`Ctrl+L`}),` clear`]}),(0,Y.jsx)(`span`,{className:`opacity-50`,children:`·`}),(0,Y.jsxs)(`span`,{title:`j/k to navigate`,className:`inline-flex items-center gap-1`,children:[(0,Y.jsx)(`kbd`,{children:`j`}),(0,Y.jsx)(`kbd`,{children:`k`}),` navigate`]}),(0,Y.jsx)(`span`,{className:`opacity-50`,children:`·`}),(0,Y.jsxs)(`span`,{title:`Ctrl+M`,className:`inline-flex items-center gap-1`,children:[(0,Y.jsx)(`kbd`,{children:`Ctrl+M`}),` model`]}),(0,Y.jsx)(`span`,{className:`opacity-50`,children:`·`}),(0,Y.jsxs)(`span`,{title:`Ctrl+Shift+D`,className:`inline-flex items-center gap-1`,children:[(0,Y.jsx)(`kbd`,{children:`Ctrl+⇧D`}),` density`]})]}),(0,Y.jsx)(`div`,{className:`p-4`,children:(0,Y.jsx)(`div`,{className:`max-w-5xl mx-auto`,children:(0,Y.jsx)(fu,{onOpenBreakdown:()=>R(!0)})})})]}),(0,Y.jsx)(Xu,{open:N,onClose:()=>P(!1)}),(0,Y.jsx)(pu,{open:F,onClose:()=>I(!1)}),(0,Y.jsx)(gu,{open:L,onClose:()=>R(!1)})]})}var ld={ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,json:`json`,css:`css`,html:`html`,svg:`xml`,md:`markdown`,yml:`yaml`,yaml:`yaml`,toml:`toml`,sh:`shell`,bash:`shell`,ps1:`powershell`,py:`python`,rs:`rust`,go:`go`,rb:`ruby`,java:`java`,c:`c`,cpp:`cpp`,h:`c`,hpp:`cpp`,sql:`sql`,xml:`xml`},ud=Array.from(new Set(Object.values(ld))).filter(e=>e!==`plaintext`),dd=12e3,fd=4e3,pd=5e3,md=1e4;function hd(e){return ld[e.split(`.`).pop()?.toLowerCase()??``]??`plaintext`}function gd(e){return e.match(/([A-Za-z_$][\w$]*)$/)?.[1]??``}function _d(e,t){return e.triggerCharacter?!0:t.length>=3}function vd(e,t){return e.triggerCharacter===`.`?!0:e.triggerCharacter?!1:/^(findBy|findAllBy|create|update|delete|remove|get[A-Z_]|set[A-Z_]|use[A-Z_])/.test(t)}function yd(e){return[e.filePath,e.language,e.lineNumber,e.column,e.versionId??``,e.triggerCharacter??``,e.linePrefix.slice(-160),e.suffix.slice(0,160)].join(`\0`)}Pr.config({monaco:_e});function bd(e){switch(e){case`method`:return z.CompletionItemKind.Method;case`function`:return z.CompletionItemKind.Function;case`constructor`:return z.CompletionItemKind.Constructor;case`field`:return z.CompletionItemKind.Field;case`variable`:return z.CompletionItemKind.Variable;case`class`:return z.CompletionItemKind.Class;case`interface`:return z.CompletionItemKind.Interface;case`module`:return z.CompletionItemKind.Module;case`property`:return z.CompletionItemKind.Property;case`unit`:return z.CompletionItemKind.Unit;case`value`:return z.CompletionItemKind.Value;case`enum`:return z.CompletionItemKind.Enum;case`keyword`:return z.CompletionItemKind.Keyword;case`snippet`:return z.CompletionItemKind.Snippet;case`file`:return z.CompletionItemKind.File;case`reference`:return z.CompletionItemKind.Reference;default:return z.CompletionItemKind.Text}}function xd(){let e=ea(e=>e.openFiles),t=ea(e=>e.activeFilePath),n=ea(e=>e.setActiveFile),r=ea(e=>e.closeFile);return e.length===0?null:(0,Y.jsx)(`div`,{className:`flex items-center border-b bg-muted/40 overflow-x-auto shrink-0`,children:e.map(e=>{let i=e.path===t,a=e.path.split(`/`).pop()??e.path;return(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>n(e.path),onMouseDown:t=>{t.button===1&&(t.preventDefault(),r(e.path))},className:Z(`group flex items-center gap-1.5 px-3 py-1.5 text-[11px] border-r whitespace-nowrap min-w-0 max-w-[180px] transition-colors`,i?`bg-background border-t-2 border-t-primary text-foreground -mb-px`:`text-muted-foreground hover:bg-muted/60 hover:text-foreground`),title:e.path,children:[e.dirty&&(0,Y.jsx)(nt,{className:`h-2 w-2 fill-current text-primary shrink-0`}),(0,Y.jsx)(`span`,{className:`truncate`,children:a}),(0,Y.jsx)(H,{className:Z(`h-3 w-3 shrink-0 rounded-sm hover:bg-muted-foreground/20 opacity-0 group-hover:opacity-100 transition-opacity`,i&&`opacity-100`),onClick:t=>{t.stopPropagation(),r(e.path)}})]},e.path)})})}function Sd(){let e=ea(e=>e.openFiles),t=ea(e=>e.activeFilePath),n=ea(e=>e.updateContent),{theme:r}=Ws(),i=(0,U.useRef)(null),a=(0,U.useRef)(t),o=(0,U.useRef)(new Map),s=(0,U.useMemo)(()=>e.find(e=>e.path===t)??null,[e,t]),c=t?hd(t):`plaintext`,l=Tl();(0,U.useEffect)(()=>{a.current=t},[t]),(0,U.useEffect)(()=>{let e=Tl();D.setTheme(e)},[r]),(0,U.useEffect)(()=>{let e=ud.map(e=>z.registerCompletionItemProvider(e,{triggerCharacters:[`.`,`_`],provideCompletionItems:async(e,t,n,r)=>{let i=a.current;if(!i)return{suggestions:[]};let s=e.getOffsetAt(t),c=e.getValue(),l=c.slice(Math.max(0,s-dd),s),u=c.slice(s,s+fd),d=e.getLineContent(t.lineNumber).slice(0,Math.max(0,t.column-1)),f=gd(d),p={triggerCharacter:n.triggerCharacter,triggerKind:n.triggerKind};if(!_d(p,f))return{suggestions:[]};let m=`cmp_${Date.now()}_${Math.random().toString(36).slice(2)}`,h=e.getWordUntilPosition(t),g={startLineNumber:t.lineNumber,endLineNumber:t.lineNumber,startColumn:h.startColumn,endColumn:t.column},_=W(K.getState().wsUrl),v=e=>e.map((e,t)=>({label:e.label,kind:bd(e.kind),insertText:e.insertText,detail:e.detail??(e.source?`WrongStack ${e.source}`:void 0),documentation:e.documentation,sortText:e.sortText??`${String(t).padStart(3,`0`)}-${e.label}`,range:g,insertTextRules:e.kind===`snippet`?z.CompletionItemInsertTextRule.InsertAsSnippet:void 0})),y=yd({filePath:i,language:e.getLanguageId(),lineNumber:t.lineNumber,column:t.column,versionId:e.getVersionId(),triggerCharacter:n.triggerCharacter,linePrefix:d,suffix:u}),b=o.current.get(y);return b&&b.expiresAt>Date.now()?{suggestions:v(b.items)}:await new Promise(a=>{let s=!1,d=()=>{},h=null,g,b=e=>{s||(s=!0,d(),g!==void 0&&window.clearTimeout(g),h?.dispose(),a({suggestions:e}))};d=_.on(`completion.result`,e=>{let t=e;t.payload.requestId===m&&(o.current.set(y,{expiresAt:Date.now()+md,items:t.payload.items}),b(v(t.payload.items)))}),g=window.setTimeout(()=>b([]),pd),h=r.onCancellationRequested(()=>b([])),_.requestCompletion({requestId:m,filePath:i,language:e.getLanguageId(),lineNumber:t.lineNumber,column:t.column,content:c.length<=5e5?c:void 0,prefix:l,suffix:u,triggerCharacter:n.triggerCharacter,triggerKind:n.triggerKind,allowLlm:vd(p,f)})})}}));return()=>{e.forEach(e=>{e.dispose()})}},[]);let u=(0,U.useCallback)(e=>{i.current=e,D.setTheme(Tl())},[]),d=(0,U.useCallback)(e=>{t&&e!==void 0&&n(t,e)},[t,n]);return(0,U.useEffect)(()=>{let e=e=>{let n=e.ctrlKey||e.metaKey,r=e.target?.tagName?.toLowerCase()===`textarea`||e.target?.closest(`.monaco-editor`)!==null;!n||!r||(e.key.toLowerCase()===`s`&&(e.preventDefault(),window.dispatchEvent(new CustomEvent(`wrongstack:save-file`,{detail:{filePath:t}}))),e.key.toLowerCase()===`w`&&(e.preventDefault(),t&&ea.getState().closeFile(t)))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]),e.length===0?(0,Y.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:(0,Y.jsxs)(`div`,{className:`text-center space-y-2`,children:[(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No files open`}),(0,Y.jsx)(`p`,{className:`text-[11px] text-muted-foreground/60`,children:`Select a file from the explorer to start editing`})]})}):(0,Y.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[(0,Y.jsx)(xd,{}),(0,Y.jsx)(`div`,{className:`flex-1 relative`,children:s?(0,Y.jsx)(le,{language:c,value:s.content,onChange:d,theme:l,onMount:u,loading:(0,Y.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,Y.jsx)(`span`,{className:`text-[11px] text-muted-foreground animate-pulse`,children:`Loading editor…`})}),options:{minimap:{enabled:!1},fontSize:13,fontFamily:`'IBM Plex Mono', 'Cascadia Code', 'Fira Code', 'JetBrains Mono', monospace`,lineNumbers:`on`,renderWhitespace:`selection`,scrollBeyondLastLine:!1,wordWrap:`off`,tabSize:2,smoothScrolling:!0,cursorBlinking:`smooth`,cursorSmoothCaretAnimation:`on`,bracketPairColorization:{enabled:!0},"semanticHighlighting.enabled":!0,automaticLayout:!0,padding:{top:8}}},s.path):(0,Y.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,Y.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Select a tab to view its content`})})})]})}function Cd(e){return/edit|write|create|patch/i.test(e)?$t:/bash|shell|exec|run|command/i.test(e)?hn:/fetch|http|web|curl|request/i.test(e)?Ae:kn}function wd({toolName:e,input:t}){let n=wl(e,t);if(n)return(0,Y.jsx)(`div`,{className:`rounded-lg overflow-hidden border`,children:(0,Y.jsx)(xl,{oldText:n.oldText,newText:n.newText,caption:n.caption})});if(typeof t==`object`&&t){let e=t,n=e.command??e.cmd??e.script;if(typeof n==`string`&&n.trim().length>0)return(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-background/40 overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted-foreground border-b bg-muted/40 flex items-center gap-1.5`,children:[(0,Y.jsx)(hn,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{children:`Command`})]}),(0,Y.jsxs)(`pre`,{className:`px-3 py-2 text-xs font-mono whitespace-pre-wrap break-all max-h-40 overflow-auto`,children:[`$`,n]})]});let r=e.url;if(typeof r==`string`)return(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-background/40 px-3 py-2 text-xs font-mono`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:(e.method??`GET`).toUpperCase()}),` `,(0,Y.jsx)(`span`,{className:`break-all`,children:r})]})}return(0,Y.jsxs)(`div`,{className:`p-3 rounded-lg bg-muted/50 border text-xs font-mono`,children:[(0,Y.jsx)(`div`,{className:`text-muted-foreground mb-2`,children:`Input:`}),(0,Y.jsx)(`pre`,{className:`whitespace-pre-wrap break-all max-h-60 overflow-auto`,children:JSON.stringify(t,null,2)})]})}function Td(){let{showConfirmDialog:e,confirmInfo:t,hideConfirm:n}=J(),{sendConfirm:r}=Vs(),i=(0,U.useRef)(null),a=e=>{t&&r(t.id,e),n()};if((0,U.useEffect)(()=>{if(!e)return;let t=e=>{let t=e.target?.tagName?.toLowerCase();t===`input`||t===`textarea`||(e.key===`y`||e.key===`Y`?(e.preventDefault(),a(`yes`)):e.key===`n`||e.key===`N`||e.key===`Escape`?(e.preventDefault(),a(`no`)):e.key===`a`||e.key===`A`?(e.preventDefault(),a(`always`)):(e.key===`d`||e.key===`D`)&&(e.preventDefault(),a(`deny`)))};return window.addEventListener(`keydown`,t),i.current?.focus(),()=>window.removeEventListener(`keydown`,t)},[e,t?.id]),!t)return(0,Y.jsx)(Uc,{open:e,onOpenChange:()=>n(),children:(0,Y.jsx)(qc,{})});let o=Cd(t.toolName),s=/edit|write/i.test(t.toolName);return(0,Y.jsx)(Uc,{open:e,onOpenChange:()=>n(),children:(0,Y.jsxs)(qc,{className:`sm:max-w-2xl border-yellow-500/50`,ref:i,tabIndex:-1,children:[(0,Y.jsxs)(Jc,{children:[(0,Y.jsxs)(Xc,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(ce,{className:`h-5 w-5 text-yellow-500 animate-pulse`}),`Approval required: `,t.toolName]}),(0,Y.jsxs)(Zc,{children:[`The agent wants to `,s?`modify a file`:`run this tool`,`. Review the request below and decide whether to proceed.`]})]}),(0,Y.jsxs)(`div`,{className:`py-2 space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 p-3 rounded-lg bg-muted`,children:[(0,Y.jsx)(o,{className:`h-5 w-5 text-muted-foreground`}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`font-medium font-mono truncate`,children:t.toolName}),(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[s?`File modification`:`Tool execution`,` — preview below`]})]})]}),t.input!==void 0&&(0,Y.jsx)(wd,{toolName:t.toolName,input:t.input}),t.suggestedPattern&&(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 p-3 rounded-lg bg-yellow-500/10 border border-yellow-500/20`,children:[(0,Y.jsx)(E,{className:`h-4 w-4 text-yellow-600 mt-0.5 shrink-0`}),(0,Y.jsxs)(`div`,{className:`text-sm min-w-0`,children:[(0,Y.jsx)(`div`,{className:`font-medium text-yellow-800 dark:text-yellow-200`,children:`Trust pattern suggestion`}),(0,Y.jsx)(`div`,{className:`font-mono text-xs mt-1 break-all`,children:t.suggestedPattern}),(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:[`Picking `,(0,Y.jsx)(`span`,{className:`font-medium`,children:`Always`}),` will whitelist matching calls for this project.`]})]})]})]}),(0,Y.jsxs)(Yc,{className:`gap-2 sm:gap-2 flex-wrap`,children:[(0,Y.jsxs)($,{variant:`outline`,size:`sm`,onClick:()=>a(`deny`),title:`Reject this and all future calls matching the pattern (d)`,children:[`Deny always `,(0,Y.jsx)(`kbd`,{className:`ml-1 text-[10px] border rounded px-1 bg-background`,children:`d`})]}),(0,Y.jsxs)($,{variant:`outline`,size:`sm`,onClick:()=>a(`no`),title:`Reject this single call (Esc / n)`,children:[`No `,(0,Y.jsx)(`kbd`,{className:`ml-1 text-[10px] border rounded px-1 bg-background`,children:`n`})]}),(0,Y.jsxs)($,{variant:`outline`,size:`sm`,onClick:()=>a(`always`),title:`Approve and remember the pattern for the project (a)`,children:[`Always `,(0,Y.jsx)(`kbd`,{className:`ml-1 text-[10px] border rounded px-1 bg-background`,children:`a`})]}),(0,Y.jsxs)($,{size:`sm`,onClick:()=>a(`yes`),title:`Approve this single call (y)`,children:[`Yes `,(0,Y.jsx)(`kbd`,{className:`ml-1 text-[10px] border rounded px-1 bg-background/80`,children:`y`})]})]})]})})}function Ed(){let e=K(e=>e.wsStatus),t=K(e=>e.wsUrl),[n,r]=(0,U.useState)(!1),[i,a]=(0,U.useState)(Date.now());if((0,U.useEffect)(()=>{if(e.state!==`reconnecting`)return;let t=setInterval(()=>a(Date.now()),500);return()=>clearInterval(t)},[e.state]),(0,U.useEffect)(()=>{e.state===`open`&&r(!1)},[e.state]),e.state===`open`||e.state===`connecting`||n)return null;let o=()=>W(t).retryNow(),s=e.state===`reconnecting`,c=e.state===`closed`?e.error:e.state===`reconnecting`?e.lastError:void 0,l=s?Math.max(0,Math.ceil((e.nextRetryAt-i)/1e3)):0;return(0,Y.jsxs)(`div`,{className:Z(`flex items-center gap-3 px-4 py-2 border-b text-sm`,s?`bg-orange-500/10 text-orange-700 dark:text-orange-300 border-orange-500/30`:`bg-red-500/10 text-red-700 dark:text-red-300 border-red-500/30`),children:[s?(0,Y.jsx)(O,{className:`h-4 w-4 animate-spin shrink-0`}):(0,Y.jsx)(en,{className:`h-4 w-4 shrink-0`}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`div`,{className:`font-medium`,children:s?`Reconnecting to backend (attempt ${e.attempt}) — retrying in ${l}s`:`Disconnected from backend`}),c&&(0,Y.jsx)(`div`,{className:`text-xs opacity-80 truncate`,children:c})]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:o,className:Z(`inline-flex items-center gap-1 px-2.5 py-1 rounded-md border text-xs font-medium`,`hover:bg-background/30 transition-colors shrink-0`,s?`border-orange-500/40`:`border-red-500/40`),title:`Retry connection now`,children:[(0,Y.jsx)(Xn,{className:`h-3 w-3`}),`Retry now`]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>r(!0),className:`text-current/60 hover:text-current shrink-0`,title:`Dismiss (chip in topbar still shows status)`,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]})}function Dd({title:e,value:t,subtitle:n,icon:r,color:i=`text-blue-500`,trend:a}){return(0,Y.jsxs)(`div`,{className:`bg-card rounded-lg border p-4 shadow-sm`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground font-medium`,children:e}),(0,Y.jsx)(`p`,{className:`text-2xl font-bold mt-1 ${i}`,children:t}),n&&(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:n})]}),(0,Y.jsx)(`div`,{className:`p-2 rounded-lg bg-muted ${i}`,children:(0,Y.jsx)(r,{className:`w-5 h-5`})})]}),a&&(0,Y.jsxs)(`div`,{className:`mt-2 flex items-center gap-1`,children:[a===`up`&&(0,Y.jsx)(S,{className:`w-3 h-3 text-green-500`}),a===`down`&&(0,Y.jsx)(S,{className:`w-3 h-3 text-red-500 rotate-180`}),(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:a===`up`?`Increasing`:a===`down`?`Decreasing`:`Stable`})]})]})}function Od(){let[e,t]=(0,U.useState)({fileWatcher:null,system:null,lastUpdated:null,error:null}),[n,r]=(0,U.useState)(!0),[i,a]=(0,U.useState)(2e3),o=(0,U.useCallback)(async()=>{try{let e=await fetch(`/debug/watcher-metrics`),n=null;e.ok&&(n=await e.json());let r={memoryUsage:{heapUsed:performance.memory?.usedJSHeapSize??0,heapTotal:performance.memory?.totalJSHeapSize??0,external:0,rss:0,arrayBuffers:0},uptime:performance.timeOrigin?performance.now()/1e3:0,cpuUsage:{user:0,system:0}};t({fileWatcher:n,system:r,lastUpdated:new Date,error:null})}catch(e){t(t=>({...t,error:e instanceof Error?e.message:`Failed to fetch metrics`}))}finally{r(!1)}},[]);return(0,U.useEffect)(()=>{o();let e=setInterval(o,i);return()=>clearInterval(e)},[o,i]),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto bg-background p-6`,children:(0,Y.jsxs)(`div`,{className:`max-w-6xl mx-auto space-y-6`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`h1`,{className:`text-2xl font-bold flex items-center gap-2`,children:[(0,Y.jsx)(Yn,{className:`w-7 h-7`}),`Debug Dashboard`]}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:`Real-time monitoring for WrongStack WebUI`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,Y.jsx)(tr,{className:`w-4 h-4 text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`Refresh:`}),(0,Y.jsxs)(`select`,{value:i,onChange:e=>a(Number(e.target.value)),className:`bg-background border rounded px-2 py-1 text-sm`,children:[(0,Y.jsx)(`option`,{value:1e3,children:`1s`}),(0,Y.jsx)(`option`,{value:2e3,children:`2s`}),(0,Y.jsx)(`option`,{value:5e3,children:`5s`}),(0,Y.jsx)(`option`,{value:1e4,children:`10s`})]})]}),(0,Y.jsxs)(`button`,{onClick:()=>{r(!0),o()},disabled:n,className:`flex items-center gap-2 px-3 py-1.5 bg-primary text-primary-foreground rounded-lg text-sm font-medium hover:opacity-90 disabled:opacity-50`,children:[(0,Y.jsx)(tr,{className:`w-4 h-4 ${n?`animate-spin`:``}`}),`Refresh`]})]})]}),e.lastUpdated&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,Y.jsx)(L,{className:`w-4 h-4`}),`Last updated: `,e.lastUpdated.toLocaleTimeString()]}),e.error&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 p-4 bg-destructive/10 border border-destructive/30 rounded-lg text-destructive`,children:[(0,Y.jsx)(ut,{className:`w-5 h-5 flex-shrink-0`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`font-medium`,children:`Failed to fetch metrics`}),(0,Y.jsx)(`p`,{className:`text-sm opacity-80`,children:e.error})]})]}),(0,Y.jsxs)(`section`,{children:[(0,Y.jsxs)(`h2`,{className:`text-lg font-semibold flex items-center gap-2 mb-4`,children:[(0,Y.jsx)(We,{className:`w-5 h-5`}),`File Watcher`]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4`,children:[(0,Y.jsx)(Dd,{title:`Watcher Status`,value:e.fileWatcher?.watcherActive?`Running`:`Stopped`,icon:st,color:e.fileWatcher?.watcherActive?`text-green-500`:`text-red-500`}),(0,Y.jsx)(Dd,{title:`Active Projects`,value:e.fileWatcher?.activeProjects??0,subtitle:`Projects being watched`,icon:Mr,color:`text-purple-500`}),(0,Y.jsx)(Dd,{title:`File Changes`,value:e.fileWatcher?.fileChangesDetected??0,subtitle:`Total detected`,icon:Dt,color:`text-blue-500`,trend:`neutral`}),(0,Y.jsx)(Dd,{title:`Files Processed`,value:e.fileWatcher?.filesProcessed??0,subtitle:`After hash filter`,icon:Zn,color:`text-cyan-500`})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mt-4`,children:[(0,Y.jsx)(Dd,{title:`Broadcasts Sent`,value:e.fileWatcher?.broadcastsSent??0,subtitle:`To WebUI clients`,icon:S,color:`text-green-500`}),(0,Y.jsx)(Dd,{title:`Debounce Resets`,value:e.fileWatcher?.debounceResets??0,subtitle:`Rapid successive writes`,icon:tr,color:`text-orange-500`}),(0,Y.jsx)(Dd,{title:`Avg Debounce Delay`,value:`${(e.fileWatcher?.averageDebounceDelayMs??0).toFixed(1)}ms`,subtitle:`Actual delay applied`,icon:L,color:`text-yellow-500`}),(0,Y.jsx)(Dd,{title:`Total Delay`,value:`${(e.fileWatcher?.totalDebounceDelayMs??0).toFixed(0)}ms`,subtitle:`Sum of all delays`,icon:Yn,color:`text-indigo-500`})]})]}),(0,Y.jsxs)(`section`,{children:[(0,Y.jsxs)(`h2`,{className:`text-lg font-semibold flex items-center gap-2 mb-4`,children:[(0,Y.jsx)(Zn,{className:`w-5 h-5`}),`Browser Performance`]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-3 gap-4`,children:[(0,Y.jsx)(Dd,{title:`Heap Used`,value:kd(e.system?.memoryUsage?.heapUsed??0),subtitle:`JavaScript heap`,icon:Yn,color:`text-blue-500`}),(0,Y.jsx)(Dd,{title:`Heap Total`,value:kd(e.system?.memoryUsage?.heapTotal??0),subtitle:`Total heap size`,icon:Yn,color:`text-green-500`}),(0,Y.jsx)(Dd,{title:`Page Uptime`,value:Ad(e.system?.uptime??0),subtitle:`Since page load`,icon:L,color:`text-purple-500`})]})]}),(0,Y.jsxs)(`section`,{children:[(0,Y.jsxs)(`h2`,{className:`text-lg font-semibold flex items-center gap-2 mb-4`,children:[(0,Y.jsx)(Dt,{className:`w-5 h-5`}),`Raw Data`]}),(0,Y.jsx)(`div`,{className:`bg-card rounded-lg border p-4 shadow-sm`,children:(0,Y.jsx)(`pre`,{className:`text-xs font-mono overflow-x-auto`,children:JSON.stringify({fileWatcher:e.fileWatcher,browserMemory:e.system?.memoryUsage,pageUptime:e.system?.uptime},null,2)})})]})]})})}function kd(e){if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return`${(e/t**r).toFixed(1)} ${n[r]}`}function Ad(e){return e<60?`${e.toFixed(0)}s`:e<3600?`${(e/60).toFixed(1)}m`:`${(e/3600).toFixed(1)}h`}function jd(e,t,n){return e<t?t:e>n?n:e}function Md(e){let t=/^oklch\(\s*([^)]+)\)$/i.exec(e.trim());if(!t?.[1])return null;let n=(t[1].split(`/`)[0]??``).trim().split(/\s+/);if(n.length<3||!n[0]||!n[1]||!n[2])return null;let r=n[0].endsWith(`%`)?Number.parseFloat(n[0])/100:Number.parseFloat(n[0]),i=n[1].endsWith(`%`)?Number.parseFloat(n[1])/100*.4:Number.parseFloat(n[1]),a=Number.parseFloat(n[2].replace(/deg$/i,``));return[r,i,a].every(Number.isFinite)?[jd(r,0,1),Math.max(0,i),a]:null}function Nd(e){return jd(e<=.0031308?12.92*e:1.055*e**(1/2.4)-.055,0,1)}function Pd(e){return Math.round(e*255).toString(16).padStart(2,`0`)}function Fd(e){let t=Md(e);if(!t)return null;let[n,r,i]=t,a=i*Math.PI/180,o=r*Math.cos(a),s=r*Math.sin(a),c=n+.3963377774*o+.2158037573*s,l=n-.1055613458*o-.0638541728*s,u=n-.0894841775*o-1.291485548*s,d=c**3,f=l**3,p=u**3,m=4.0767416621*d-3.3077115913*f+.2309699292*p,h=-1.2684380046*d+2.6097574011*f-.3413193965*p,g=-.0041960863*d-.7034186147*f+1.707614701*p;return`#${Pd(Nd(m))}${Pd(Nd(h))}${Pd(Nd(g))}`}function Id(e){let t=e.trim(),n=Fd(t);if(n)return n.toLowerCase();let r=/^#([0-9a-f]{6})([0-9a-f]{2})?$/i.exec(t);if(r?.[1])return`#${r[1].toLowerCase()}`;let i=/^#([0-9a-f]{3})$/i.exec(t);return i?.[1]?`#${i[1].split(``).map(e=>e+e).join(``).toLowerCase()}`:null}var Ld=[`web`,`react-native`,`flutter`,`swiftui`,`compose`],Rd=[`primary`,`accent`,`bg`,`surface`,`fg`,`border`];function zd(e,t,n){let r={...e};for(let[e,i]of Object.entries(t))e.startsWith(`light.`)?n===`light`&&(r[e.slice(6)]=i):e.startsWith(`dark.`)?n===`dark`&&(r[e.slice(5)]=i):r[e]=i;return r}function Bd({t:e,label:t}){let n=e.bg??`#fff`,r=e.surface??n,i=e.fg??`#111`,a=e.muted??i,o=e.primary??`#3b82f6`,s=e.accent??o,c=e.border??a,l=e.radius??`0.5rem`,u=e.fontSans??`system-ui, sans-serif`,d=e.fontDisplay??u,f=e.shadow&&e.shadow!==`none`?e.shadow:void 0;return(0,Y.jsxs)(`div`,{style:{background:n,color:i,fontFamily:u},className:`p-3 flex flex-col gap-2 overflow-hidden`,children:[(0,Y.jsx)(`div`,{className:`text-[9px] uppercase tracking-wide`,style:{color:a},children:t}),(0,Y.jsxs)(`div`,{style:{background:r,border:`1px solid ${c}`,borderRadius:l,boxShadow:f},className:`p-3 flex flex-col gap-2`,children:[(0,Y.jsx)(`div`,{style:{fontFamily:d},className:`text-base font-bold leading-tight`,children:`Aa Heading`}),(0,Y.jsx)(`div`,{className:`text-[11px] leading-snug`,style:{color:a},children:`The quick brown fox jumps over the lazy dog.`}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 mt-1`,children:[(0,Y.jsx)(`span`,{style:{background:o,color:n,borderRadius:l},className:`text-[10px] font-semibold px-2.5 py-1`,children:`Primary`}),(0,Y.jsx)(`span`,{style:{border:`1px solid ${c}`,color:i,borderRadius:l},className:`text-[10px] px-2 py-1`,children:`Ghost`}),(0,Y.jsx)(`span`,{style:{background:s,color:n,borderRadius:`999px`},className:`text-[9px] font-semibold px-2 py-0.5 ml-auto`,children:`Badge`})]}),(0,Y.jsx)(`div`,{style:{border:`1px solid ${c}`,borderRadius:l,color:a},className:`text-[10px] px-2 py-1.5 mt-1`,children:`Input field…`})]})]})}function Vd({kit:e,overrides:t,onSet:n}){let[r,i]=(0,U.useState)(`light`),a=zd(r===`light`?e.light:e.dark,t,r);return(0,Y.jsxs)(`div`,{className:`mt-1 rounded-lg border border-border/60 p-2 bg-muted/30`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mb-1.5`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] font-semibold uppercase text-muted-foreground`,children:`Colors`}),(0,Y.jsx)(`div`,{className:`ml-auto inline-flex rounded border border-border/60 overflow-hidden`,children:[`light`,`dark`].map(e=>(0,Y.jsx)(`button`,{type:`button`,onClick:()=>i(e),className:Z(`text-[10px] px-1.5 py-0.5`,r===e?`bg-primary text-primary-foreground`:`text-muted-foreground`),children:e},e))})]}),(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:Rd.filter(e=>a[e]).map(e=>{let t=Id(a[e]??``)??`#000000`;return(0,Y.jsxs)(`label`,{className:`flex flex-col items-center gap-0.5`,title:`${e}: ${a[e]}`,children:[(0,Y.jsx)(`input`,{type:`color`,value:t,onChange:t=>n(`${r}.${e}`,t.target.value),className:`w-6 h-6 rounded cursor-pointer bg-transparent border border-border/60 p-0`}),(0,Y.jsx)(`span`,{className:`text-[8px] text-muted-foreground`,children:e})]},e)})})]})}function Hd({className:e}){let{client:t}=Vs(),n=J(e=>e.setCurrentView),[r,i]=(0,U.useState)([]),[a,o]=(0,U.useState)(null),[s,l]=(0,U.useState)({}),[u,d]=(0,U.useState)(`web`),[f,p]=(0,U.useState)(``),[m,h]=(0,U.useState)(null);(0,U.useEffect)(()=>{if(!t)return;let e=e=>{let t=e.payload;i(t?.kits??[]),o(t?.activeKit??null),l(t?.overrides??{})},n=e=>{let t=e.payload;t?.ok&&t.kit&&(o(t.kit),l(t.overrides??{}))},r=e=>{let t=e.payload;t?.ok&&t.overrides&&l(t.overrides)},a=e=>{let t=e.payload;h(t?.ok?`Wrote ${t.path}`:`Materialize failed: ${t?.error??`error`}`)},s=e=>{let t=e.payload;if(!t?.ok){h(`Verify: ${t?.error??`error`}`);return}let n=Math.round((t.score??1)*100);h(t.violationCount?`Verify: ${n}% on-palette — ${t.violationCount} off-palette in ${t.filesScanned} file(s)`:`Verify: clean ✓ (${t.filesScanned} file(s) on-palette)`)};return t.on(`design.list`,e),t.on(`design.use`,n),t.on(`design.set`,r),t.on(`design.materialize`,a),t.on(`design.verify`,s),t.send({type:`design.list`}),()=>{t.off(`design.list`,e),t.off(`design.use`,n),t.off(`design.set`,r),t.off(`design.materialize`,a),t.off(`design.verify`,s)}},[t]);let g=(0,U.useCallback)(e=>t?.send({type:`design.use`,payload:{kit:e,stack:u}}),[t,u]),_=(0,U.useCallback)((e,n)=>{l(t=>({...t,[e]:n})),t?.send({type:`design.set`,payload:{overrides:{[e]:n}}})},[t]),v=(0,U.useCallback)(()=>{h(`Writing theme file…`),t?.send({type:`design.materialize`,payload:{stack:u}})},[t,u]),y=(0,U.useCallback)(()=>{h(`Scanning UI files…`),t?.send({type:`design.verify`})},[t]),b=(0,U.useMemo)(()=>{let e=f.trim().toLowerCase();return[...e?r.filter(t=>t.id.includes(e)||t.name.toLowerCase().includes(e)||t.aesthetic.toLowerCase().includes(e)||t.tags.some(t=>t.includes(e))):r].sort((e,t)=>e.name.localeCompare(t.name))},[r,f]);return(0,Y.jsxs)(`div`,{className:Z(`flex flex-col h-full`,e),children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 px-4 py-3 border-b border-border/60`,children:[(0,Y.jsx)(jr,{className:`w-5 h-5 text-muted-foreground`}),(0,Y.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Design Studio — Gallery`}),(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[b.length,` kits`]}),(0,Y.jsx)(`input`,{value:f,onChange:e=>p(e.target.value),placeholder:`Search kits…`,className:`ml-2 text-xs bg-transparent border border-border/60 rounded px-2 py-1 w-44`}),(0,Y.jsx)(`select`,{value:u,onChange:e=>d(e.target.value),className:`text-xs bg-transparent border border-border/60 rounded px-1.5 py-1`,title:`Stack for Use + Materialize`,children:Ld.map(e=>(0,Y.jsx)(`option`,{value:e,children:e},e))}),m&&(0,Y.jsx)(`span`,{className:`text-[11px] text-muted-foreground max-w-48 truncate`,children:m}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>n(`chat`),className:`ml-auto p-1 rounded hover:bg-muted text-muted-foreground`,title:`Close`,children:(0,Y.jsx)(H,{className:`w-4 h-4`})})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:(0,Y.jsx)(`div`,{className:`grid gap-4 [grid-template-columns:repeat(auto-fill,minmax(300px,1fr))]`,children:b.map(e=>{let t=a===e.id,n=t?s:{};return(0,Y.jsxs)(`div`,{className:Z(`rounded-xl border overflow-hidden flex flex-col`,t?`border-primary/60 ring-1 ring-primary/40`:`border-border/60`),children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-2`,children:[(0,Y.jsx)(Bd,{t:zd(e.light,n,`light`),label:`Light`}),(0,Y.jsx)(Bd,{t:zd(e.dark,n,`dark`),label:`Dark`})]}),(0,Y.jsxs)(`div`,{className:`p-3 border-t border-border/60 flex flex-col gap-1.5 bg-card`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(`h3`,{className:`text-sm font-semibold truncate`,children:e.name}),(0,Y.jsx)(`code`,{className:`text-[10px] text-muted-foreground`,children:e.id}),t&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 text-[9px] font-semibold uppercase text-primary ml-auto`,children:[(0,Y.jsx)(jn,{className:`w-3 h-3`}),` Active`]})]}),(0,Y.jsx)(`p`,{className:`text-[11px] text-muted-foreground leading-snug`,children:e.aesthetic}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mt-1`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>g(e.id),className:Z(`text-[11px] px-2.5 py-1 rounded font-medium`,t?`bg-primary/10 text-primary`:`bg-primary text-primary-foreground hover:opacity-90`),children:t?`Reapply`:`Use`}),t&&(0,Y.jsxs)(`button`,{type:`button`,onClick:v,className:`inline-flex items-center gap-1 text-[11px] px-2 py-1 rounded font-medium border border-border/60 hover:bg-muted`,title:`Write tokens to a ${u} theme file`,children:[(0,Y.jsx)(c,{className:`w-3 h-3`}),` Materialize`]}),t&&(0,Y.jsxs)(`button`,{type:`button`,onClick:y,className:`inline-flex items-center gap-1 text-[11px] px-2 py-1 rounded font-medium border border-border/60 hover:bg-muted`,title:`Scan UI files for off-palette colors`,children:[(0,Y.jsx)(P,{className:`w-3 h-3`}),` Verify`]}),(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground truncate`,children:e.bestFor})]}),t&&(0,Y.jsx)(Vd,{kit:e,overrides:n,onSet:_})]})]},e.id)})})})]})}var Ud=class extends U.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error(`[ErrorBoundary]`,e,t.componentStack),this.props.onError?.(e,t)}handleReset=()=>{this.setState({error:null})};render(){return this.state.error?(0,Y.jsx)(`div`,{className:`flex items-center justify-center h-screen bg-background`,children:(0,Y.jsxs)(`div`,{className:`flex flex-col items-center gap-4 p-8 max-w-md text-center`,children:[(0,Y.jsx)(E,{className:`h-12 w-12 text-destructive`}),(0,Y.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Something went wrong`}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`A rendering error occurred. Your session is still active on the server — reloading will pick up where you left off.`}),(0,Y.jsx)(`pre`,{className:`text-xs font-mono text-muted-foreground bg-muted/50 rounded p-3 max-h-32 overflow-auto w-full text-left`,children:this.state.error.message}),(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Y.jsxs)($,{size:`sm`,variant:`outline`,onClick:()=>window.location.reload(),children:[(0,Y.jsx)(tr,{className:`h-4 w-4 mr-1`}),`Reload page`]}),(0,Y.jsx)($,{size:`sm`,onClick:this.handleReset,children:`Try again`})]})]})}):this.props.children}},Wd=U.forwardRef(({className:e,children:t,...n},r)=>(0,Y.jsxs)(He,{ref:r,className:Z(`relative overflow-hidden`,e),...n,children:[(0,Y.jsx)(xe,{className:`h-full w-full rounded-[inherit]`,children:t}),(0,Y.jsx)(Gd,{}),(0,Y.jsx)(yr,{})]}));Wd.displayName=He.displayName;var Gd=U.forwardRef(({className:e,orientation:t=`vertical`,...n},r)=>(0,Y.jsx)(C,{ref:r,orientation:t,className:Z(`flex touch-none select-none transition-colors`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent p-[1px]`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent p-[1px]`,e),...n,children:(0,Y.jsx)(y,{className:`relative flex-1 rounded-full bg-border`})}));Gd.displayName=C.displayName;var Kd=Le,qd=U.forwardRef(({className:e,...t},n)=>(0,Y.jsx)(wr,{ref:n,className:Z(`inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground`,e),...t}));qd.displayName=wr.displayName;var Jd=U.forwardRef(({className:e,...t},n)=>(0,Y.jsx)(m,{ref:n,className:Z(`inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm`,e),...t}));Jd.displayName=m.displayName;var Yd=U.forwardRef(({className:e,...t},n)=>(0,Y.jsx)(Et,{ref:n,className:Z(`mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,e),...t}));Yd.displayName=Et.displayName;function Xd({current:e,max:t,className:n,showLabel:r=!0}){let i=Math.min(e,t),a=Math.max(0,t-i),o=t>0?i/t*100:0,s=o>=90?`text-destructive`:o>=70?`text-[hsl(var(--warning))]`:`text-[hsl(var(--success))]`;return(0,Y.jsxs)(`span`,{className:n,title:`Fleet concurrency: ${e}/${t}`,children:[(0,Y.jsxs)(`span`,{"aria-hidden":`true`,className:`font-mono text-[10px] tracking-tight`,children:[`[`,(0,Y.jsx)(`span`,{className:s,children:`█`.repeat(i)}),(0,Y.jsx)(`span`,{className:`text-[hsl(var(--muted))]`,children:`░`.repeat(a)}),`]`]}),r&&(0,Y.jsxs)(`span`,{className:`ml-1.5 tabular-nums text-[10px] text-muted-foreground font-mono`,children:[e,`/`,t]})]})}function Zd(e){let t=Date.now()-e;return t<5e3?`just now`:t<6e4?`${Math.floor(t/1e3)}s ago`:t<36e5?`${Math.floor(t/6e4)}m ago`:`${Math.floor(t/36e5)}h ago`}var Qd={spawned:`🚀`,task_started:`▶`,tool_executed:`⚡`,iteration_summary:`🔄`,budget_warning:`!`,budget_extended:`⚡`,task_completed:`✅`,ctx_pct:`💬`,leader_updated:`👑`};function $d({events:e,max:t=20,className:n}){let r=e.slice(0,t);return r.length===0?(0,Y.jsx)(`div`,{className:`py-4 text-center text-xs text-muted-foreground ${n??``}`,children:`No events yet.`}):(0,Y.jsx)(`div`,{className:`space-y-0.5 overflow-y-auto max-h-48 ${n??``}`,children:r.map(e=>(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 text-[10px] leading-tight py-0.5 px-1 rounded hover:bg-accent/50 transition-colors`,children:[(0,Y.jsx)(`span`,{className:`shrink-0 w-5 text-center`,"aria-hidden":`true`,children:Qd[e.kind]??`·`}),(0,Y.jsx)(`span`,{className:`shrink-0 w-12 text-right text-muted-foreground font-mono tabular-nums`,children:Zd(e.timestamp)}),(0,Y.jsx)(`span`,{className:`truncate text-foreground/90`,children:e.message}),e.value!==void 0&&e.kind===`tool_executed`&&(0,Y.jsx)(`span`,{className:`ml-auto shrink-0 tabular-nums text-muted-foreground font-mono`,children:e.value>=1e3?`${(e.value/1e3).toFixed(1)}s`:`${e.value}ms`}),e.value!==void 0&&e.kind===`ctx_pct`&&(0,Y.jsxs)(`span`,{className:`ml-auto shrink-0 tabular-nums text-muted-foreground font-mono`,children:[e.value,`%`]})]},e.id))})}function ef(e){return e===`running`}function tf(e,t){let n=+!ef(e.status),r=+!ef(t.status);return n===r?e.startedAt-t.startedAt:n-r}function nf(e){let t=0,n=0,r=0;for(let i of e)i.status===`running`?t++:i.status===`completed`?n++:(i.status===`failed`||i.status===`timeout`)&&r++;return{running:t,completed:n,failed:r,total:e.length}}function rf(e){return e==null||!Number.isFinite(e)||e<0?`$0.0000`:e<.01?`$${e.toFixed(4)}`:e<1?`$${e.toFixed(3)}`:`$${e.toFixed(2)}`}function af(e){return e==null||!Number.isFinite(e)?`0`:e<1e3?String(Math.round(e)):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function of(e){if(e==null||!Number.isFinite(e)||e<0)return`—`;let t=Math.round(e/1e3);return t<60?`${t}s`:t<3600?`${Math.floor(t/60)}m`:`${Math.floor(t/3600)}h`}var sf={running:{led:`bg-emerald-500`,label:`running`,pulse:!0,color:`text-emerald-500`},completed:{led:`bg-emerald-500`,label:`done`,pulse:!1,color:`text-emerald-500`},failed:{led:`bg-destructive`,label:`failed`,pulse:!1,color:`text-destructive`},timeout:{led:`bg-amber-500`,label:`timeout`,pulse:!1,color:`text-amber-500`},stopped:{led:`bg-muted-foreground`,label:`stopped`,pulse:!1,color:`text-muted-foreground`}};function cf({agent:e,now:t}){let[n,r]=(0,U.useState)(!1),[a,o]=(0,U.useState)(!1),s=sf[e.status],c=e.status===`running`,u=Math.min(100,Math.max(0,e.ctxPct)),d=(0,U.useCallback)(async e=>{try{await navigator.clipboard.writeText(e),r(!0),setTimeout(()=>r(!1),2e3)}catch{}},[]),f=e.toolLog.reduce((e,t)=>e+t.durationMs,0),p=e.toolLog.length>0?Math.round(f/e.toolLog.length):0,m=(0,U.useMemo)(()=>{let t=new Set;for(let n of e.toolLog)t.add(n.name);return t.size},[e.toolLog]),h=e.partialText||e.finalText||void 0,g=!e.finalText&&!!e.partialText;return(0,Y.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,Y.jsxs)(`div`,{className:`shrink-0 border-b bg-card p-4 space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(`div`,{className:`flex items-center justify-center w-10 h-10 rounded-lg bg-primary/10`,children:(0,Y.jsx)(In,{className:`h-5 w-5 text-primary`})}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-base font-semibold`,children:e.name}),(0,Y.jsx)(`span`,{className:Z(`px-2 py-0.5 rounded text-[10px] font-medium uppercase tracking-wider`,e.status===`running`?`bg-emerald-500/15 text-emerald-600 dark:text-emerald-400`:e.status===`failed`||e.status===`timeout`?`bg-destructive/15 text-destructive`:`bg-muted text-muted-foreground`),children:s.label})]}),(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground font-mono`,children:[`session: `,e.sessionId?.slice(0,12),`…`]})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] text-muted-foreground`,children:[c&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(l,{className:`h-3.5 w-3.5`}),(0,Y.jsx)(`span`,{className:`tabular-nums font-mono`,children:of(Math.max(0,t-e.startedAt))})]}),(0,Y.jsx)(`span`,{className:Z(`led`,s.led,c&&`led-pulse`)})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 px-3 py-2 rounded-lg bg-muted/30`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground uppercase tracking-wider`,children:`Activity`}),(0,Y.jsx)(wc,{bins:e.sparklineBins,className:`font-mono text-[9px]`}),e.budgetWarning&&(0,Y.jsxs)(`span`,{className:`ml-auto flex items-center gap-1 text-[10px] text-amber-500`,children:[(0,Y.jsx)(Yt,{className:`h-3 w-3`}),`budget warning`]})]}),e.description&&(0,Y.jsxs)(`div`,{className:`px-3 py-2 rounded-lg bg-muted/20 border border-border/50`,children:[(0,Y.jsx)(`span`,{className:`text-[9px] text-muted-foreground uppercase tracking-wider`,children:`Current Task`}),(0,Y.jsx)(`p`,{className:`text-xs mt-1 text-foreground/80`,children:e.description})]})]}),(0,Y.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 space-y-4`,children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-card p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-[9px] text-muted-foreground uppercase tracking-wider mb-2`,children:[(0,Y.jsx)(k,{className:`h-3 w-3`}),` Provider / Model`]}),(0,Y.jsxs)(`div`,{className:`text-sm font-mono font-medium`,children:[e.provider??`?`,`/`,e.model??`?`]})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-card p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-[9px] text-muted-foreground uppercase tracking-wider mb-2`,children:[(0,Y.jsx)(Dt,{className:`h-3 w-3`}),` Performance`]}),(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between text-[11px]`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`Iterations`}),(0,Y.jsx)(`span`,{className:`font-mono font-medium`,children:e.iteration})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between text-[11px]`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`Tool Calls`}),(0,Y.jsx)(`span`,{className:`font-mono font-medium`,children:e.toolCalls})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between text-[11px]`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`Unique Tools`}),(0,Y.jsx)(`span`,{className:`font-mono font-medium`,children:m})]})]})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-card p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-[9px] text-muted-foreground uppercase tracking-wider mb-2`,children:[(0,Y.jsx)(mn,{className:`h-3 w-3`}),` Cost`]}),(0,Y.jsx)(`div`,{className:`text-lg font-mono font-bold text-emerald-500`,children:rf(e.costUsd)}),(0,Y.jsxs)(`div`,{className:`text-[10px] text-muted-foreground mt-1`,children:[`avg `,p,`ms per tool`]})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-card p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-[9px] text-muted-foreground uppercase tracking-wider mb-2`,children:[(0,Y.jsx)(he,{className:`h-3 w-3`}),` Context`]}),(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between text-[11px]`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`Tokens`}),(0,Y.jsx)(`span`,{className:`font-mono font-medium`,children:af(e.ctxTokens)})]}),(0,Y.jsx)(`div`,{className:`h-2 w-full rounded-full bg-muted overflow-hidden`,children:(0,Y.jsx)(`div`,{className:Z(`h-full rounded-full transition-all`,u>=85?`bg-destructive`:u>=70?`bg-amber-500`:`bg-emerald-500`),style:{width:`${u}%`}})}),(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums font-mono`,children:[u,`% used`]})]})]})]}),e.currentTool&&(0,Y.jsxs)(`div`,{className:Z(`rounded-lg border px-4 py-3 flex items-center gap-3`,c?`border-primary/30 bg-primary/[0.04]`:`border-border bg-muted/30`),children:[(0,Y.jsx)(kn,{className:Z(`h-4 w-4`,c?`text-primary animate-pulse`:`text-muted-foreground`)}),(0,Y.jsx)(`span`,{className:`text-sm font-mono font-medium`,children:e.currentTool}),c?(0,Y.jsxs)(`span`,{className:`ml-auto flex items-center gap-1.5 text-[10px] text-primary`,children:[(0,Y.jsx)(O,{className:`h-3 w-3 animate-spin`}),` running…`]}):(0,Y.jsx)(`span`,{className:`ml-auto text-[10px] text-muted-foreground`,children:`completed`})]}),h?(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-card`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b bg-muted/30`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wider flex items-center gap-2`,children:g?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-blue-500 animate-pulse`}),`Live Output`]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Pt,{className:`h-3 w-3`}),`Final Output`]})}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>d(h),className:`flex items-center gap-1 px-2 py-1 rounded text-[10px] text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,children:n?`✓ Copied`:`Copy`})]}),(0,Y.jsx)(`pre`,{className:`p-4 text-xs whitespace-pre-wrap font-mono text-foreground/80 leading-relaxed max-h-64 overflow-y-auto`,children:h})]}):c?(0,Y.jsxs)(`div`,{className:`rounded-lg border border-dashed border-border p-6 text-center`,children:[(0,Y.jsx)(O,{className:`h-6 w-6 mx-auto mb-2 text-muted-foreground/50 animate-spin`}),(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Waiting for output…`})]}):null,e.budgetWarning&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-3 rounded-lg bg-amber-500/10 border border-amber-500/20`,children:[(0,Y.jsx)(Yt,{className:`h-5 w-5 text-amber-500 shrink-0`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium text-amber-600 dark:text-amber-400`,children:`⚡ Budget Warning`}),(0,Y.jsxs)(`p`,{className:`text-[11px] text-amber-600/80 dark:text-amber-400/80 mt-0.5`,children:[`Hitting `,e.budgetWarning.kind,` limit (`,e.budgetWarning.used,`/`,e.budgetWarning.limit,`)`]})]})]}),e.extensions>0&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-3 rounded-lg bg-amber-500/10 border border-amber-500/20`,children:[(0,Y.jsx)(Yt,{className:`h-5 w-5 text-amber-500 shrink-0`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`span`,{className:`text-sm font-medium`,children:[e.extensions,` Budget Extension`,e.extensions===1?``:`s`]}),(0,Y.jsxs)(`p`,{className:`text-[11px] text-muted-foreground mt-0.5`,children:[`Agent extended its budget `,e.extensions,` time`,e.extensions===1?``:`s`,` due to long-running tasks`]})]})]}),e.error&&(0,Y.jsxs)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/5 p-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,Y.jsx)(N,{className:`h-4 w-4 text-destructive`}),(0,Y.jsx)(`span`,{className:`text-[10px] font-semibold text-destructive uppercase tracking-wider`,children:`Error`})]}),(0,Y.jsx)(`p`,{className:`text-sm text-destructive/90`,children:e.error.message})]}),e.failureReason&&(0,Y.jsxs)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/5 p-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,Y.jsx)(N,{className:`h-4 w-4 text-destructive`}),(0,Y.jsx)(`span`,{className:`text-[10px] font-semibold text-destructive uppercase tracking-wider`,children:`Failure Reason`})]}),(0,Y.jsx)(`p`,{className:`text-sm text-destructive/90`,children:e.failureReason})]}),e.toolLog.length>0&&(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-card`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>o(!a),className:`w-full flex items-center justify-between px-4 py-2 border-b bg-muted/30 hover:bg-muted/50 transition-colors`,children:[(0,Y.jsxs)(`span`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wider flex items-center gap-2`,children:[(0,Y.jsx)(kn,{className:`h-3 w-3`}),`Tool Log (`,e.toolLog.length,` calls)`]}),(0,Y.jsx)(i,{className:Z(`h-4 w-4 text-muted-foreground transition-transform`,a&&`rotate-90`)})]}),(0,Y.jsx)(`div`,{className:Z(`overflow-hidden transition-all`,a?`max-h-[500px]`:`max-h-48`),children:(0,Y.jsx)(`div`,{className:`p-2 space-y-0.5`,children:e.toolLog.map((e,t)=>(0,Y.jsxs)(`div`,{className:Z(`flex items-center gap-3 rounded px-3 py-2 text-[11px]`,e.ok?`bg-muted/30 hover:bg-muted/50`:`bg-destructive/5 border border-destructive/20`),children:[(0,Y.jsx)(`span`,{className:Z(`led shrink-0`,e.ok?`bg-emerald-500`:`bg-destructive`)}),(0,Y.jsx)(`span`,{className:Z(`font-mono font-medium w-20 shrink-0`,e.ok?`text-foreground`:`text-destructive`),children:e.name}),(0,Y.jsx)(`span`,{className:`text-muted-foreground tabular-nums text-[10px]`,children:e.durationMs>=1e3?`${(e.durationMs/1e3).toFixed(2)}s`:`${e.durationMs}ms`}),!e.ok&&(0,Y.jsx)(`span`,{className:`ml-auto text-[10px] text-destructive font-medium`,children:`Failed`}),(0,Y.jsx)(`span`,{className:`ml-auto text-[9px] text-muted-foreground tabular-nums`,children:new Date(e.at).toLocaleTimeString()})]},`${e.name}-${e.at}-${t}`))})})]})]})]})}function lf({agent:e,isSelected:t,isLeader:n,onClick:r}){let i=sf[e.status],a=e.status===`running`,o=Math.min(100,Math.max(0,e.ctxPct));return(0,Y.jsxs)(`button`,{type:`button`,onClick:r,className:Z(`w-full text-left grid grid-cols-[140px_60px_1fr_60px_60px_60px_60px_50px_50px] items-center gap-x-2 px-3 py-1.5 rounded-md text-xs transition-colors`,t?`bg-primary/15 ring-1 ring-primary/40`:`hover:bg-accent/50`,a&&!t&&`bg-muted/30`),children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 min-w-0`,children:[(0,Y.jsx)(`span`,{className:Z(`led shrink-0`,i.led,i.pulse&&`led-pulse`)}),(0,Y.jsx)(`span`,{className:`truncate font-medium`,children:e.name}),n&&(0,Y.jsx)(ye,{className:`h-3 w-3 shrink-0 text-amber-500`,"aria-label":`leader`})]}),(0,Y.jsx)(`span`,{className:Z(`text-[10px] tabular-nums`,a?`text-emerald-500`:`text-muted-foreground`),children:i.label}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 min-w-0`,children:[(0,Y.jsx)(wc,{bins:e.sparklineBins,className:`font-mono text-[9px]`}),e.budgetWarning&&(0,Y.jsx)(`span`,{title:`⚡ hitting ${e.budgetWarning.kind} limit (${e.budgetWarning.used}/${e.budgetWarning.limit})`,children:(0,Y.jsx)(Yt,{className:`h-3 w-3 shrink-0 text-amber-500`,"aria-label":`budget warning`})})]}),(0,Y.jsxs)(`span`,{className:`tabular-nums text-muted-foreground text-[10px]`,children:[e.iteration,`it`]}),(0,Y.jsxs)(`span`,{className:`tabular-nums text-muted-foreground text-[10px]`,children:[e.toolCalls,`tc`]}),(0,Y.jsx)(`span`,{className:`tabular-nums font-mono text-[10px]`,children:rf(e.costUsd)}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-0.5 min-w-0`,children:[(0,Y.jsx)(`div`,{className:`h-1.5 w-full rounded-full bg-muted overflow-hidden`,children:(0,Y.jsx)(`div`,{className:Z(`h-full rounded-full transition-all`,o>=85?`bg-destructive`:o>=70?`bg-amber-500`:`bg-emerald-500`),style:{width:`${o}%`}})}),(0,Y.jsx)(`span`,{className:`text-[9px] tabular-nums text-muted-foreground font-mono leading-none`,children:e.maxContext>0?`${o}%`:`—`})]}),(0,Y.jsx)(`span`,{className:`tabular-nums text-[10px] text-muted-foreground`,children:e.extensions>0?`⚡×${e.extensions}`:`—`}),(0,Y.jsx)(`span`,{className:`text-[9px] text-destructive truncate`,title:e.failureReason,children:e.failureReason??``})]})}function uf({onClose:e,onSelectAgent:t}){let n=X(e=>e.agents),r=X(e=>e.leaderId),i=X(e=>e.fleetTokensIn),a=X(e=>e.fleetTokensOut),o=X(e=>e.fleetConcurrency),s=X(e=>e.fleetConcurrencyMax),c=X(e=>e.eventTimeline),l=X(e=>e.agentTimeline),[u,d]=(0,U.useState)(null),[f,p]=(0,U.useState)(Date.now());(0,U.useEffect)(()=>{let e=setInterval(()=>p(Date.now()),1e3);return()=>clearInterval(e)},[]);let m=(0,U.useMemo)(()=>{let e=Array.from(n.values());return e.sort((e,t)=>e.id===r?-1:t.id===r?1:tf(e,t)),e},[n,r]),h=(0,U.useMemo)(()=>Array.from(n.values()).reduce((e,t)=>e+t.costUsd,0),[n]),g=nf(m).running,_=u===null?null:m[u],v=(0,U.useCallback)(e=>d(t=>t===e?null:e),[]),y=(0,U.useCallback)(n=>{if(n.key===`Escape`){u===null?e&&e():d(null);return}if(n.key===`ArrowDown`){n.preventDefault(),d(e=>Math.min((e??-1)+1,m.length-1));return}if(n.key===`ArrowUp`){n.preventDefault(),d(e=>Math.max((e??0)-1,0));return}n.key===`Enter`&&m[u??0]&&t?.(m[u??0])},[m,u,e,t]);return(0,U.useEffect)(()=>{let t=t=>{t.key===`Escape`&&e()};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e]),(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`fixed inset-0 z-40 bg-black/10 backdrop-blur-[1px]`,onClick:e,"aria-hidden":`true`}),(0,Y.jsxs)(`div`,{className:`fixed right-0 top-0 h-full z-50 w-[720px] max-w-[95vw] flex flex-col bg-background border-l shadow-2xl animate-slide-in-right`,onKeyDown:y,tabIndex:-1,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b bg-card/80 backdrop-blur shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(In,{className:`h-5 w-5 text-primary`}),(0,Y.jsxs)(`h2`,{className:`text-sm font-semibold flex items-center gap-2`,children:[`FLEET MONITOR`,g>0&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 text-[11px] text-emerald-500 font-normal`,children:[(0,Y.jsx)(`span`,{className:`led led-pulse bg-emerald-500`}),g,` running`]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,Y.jsxs)(`span`,{children:[m.length,` total agents`]}),(0,Y.jsx)(Xd,{current:o,max:s,showLabel:!0})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground tabular-nums font-mono`,children:[`↓`,af(i),` ↑`,af(a),` · `,rf(h)]}),(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground tabular-nums font-mono`,children:r?`👑 ${n.get(r)?.name??r}`:`no leader`}),(0,Y.jsx)(`button`,{type:`button`,onClick:e,className:`p-1.5 rounded-md hover:bg-muted transition-colors`,"aria-label":`Close fleet monitor`,children:(0,Y.jsx)(N,{className:`h-4 w-4`})})]})]}),(0,Y.jsxs)(`div`,{className:`flex-1 flex overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:Z(`flex flex-col border-r transition-all duration-200`,_?`w-[500px] shrink-0`:`w-full`),children:[(0,Y.jsx)(`div`,{className:`border-b bg-card/80 px-3 py-2`,children:(0,Y.jsxs)(`div`,{className:`grid grid-cols-[140px_60px_1fr_60px_60px_60px_60px_50px_50px] gap-x-2 text-[9px] uppercase tracking-wider text-muted-foreground font-medium`,children:[(0,Y.jsx)(`span`,{children:`Name`}),(0,Y.jsx)(`span`,{children:`Status`}),(0,Y.jsx)(`span`,{children:`Activity`}),(0,Y.jsx)(`span`,{children:`Iters`}),(0,Y.jsx)(`span`,{children:`Tools`}),(0,Y.jsx)(`span`,{children:`Cost`}),(0,Y.jsx)(`span`,{children:`CTX`}),(0,Y.jsx)(`span`,{children:`Ext`}),(0,Y.jsx)(`span`,{children:`Reason`})]})}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:m.length===0?(0,Y.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full text-muted-foreground`,children:[(0,Y.jsx)(At,{className:`h-12 w-12 mb-3 opacity-20`}),(0,Y.jsx)(`p`,{className:`text-sm font-medium`,children:`No agents active`}),(0,Y.jsx)(`p`,{className:`text-xs mt-1`,children:`Agents appear here when the fleet is active.`})]}):(0,Y.jsx)(`div`,{className:`p-2 space-y-0.5`,children:m.map((e,t)=>(0,Y.jsx)(lf,{agent:e,isSelected:t===u,isLeader:e.id===r,onClick:()=>v(t)},e.id))})}),(0,Y.jsxs)(`div`,{className:`border-t bg-card/80 shrink-0`,children:[(0,Y.jsx)(`div`,{className:`px-4 py-2 border-b`,children:(0,Y.jsxs)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground font-medium flex items-center gap-2`,children:[(0,Y.jsx)(L,{className:`h-3 w-3`}),`Agent Timeline`]})}),(0,Y.jsx)(`div`,{className:`px-4 py-2 max-h-32 overflow-y-auto`,children:(0,Y.jsx)($d,{events:c,max:10})}),(0,Y.jsx)(`div`,{className:`border-t border-dashed`}),(0,Y.jsx)(`div`,{className:`px-4 py-2 max-h-40 overflow-y-auto`,children:l.length===0?(0,Y.jsx)(`p`,{className:`text-[10px] text-muted-foreground italic`,children:`No agent conversation events yet.`}):(0,Y.jsx)(`div`,{className:`space-y-1`,children:l.slice(0,15).map(e=>{let t={text:`💬`,tool_use:`🔧`,error:`❌`,status:`💬`}[e.kind]??`●`,n=e.status===`running`||e.status===`spawned`?`text-emerald-500`:e.status===`failed`||e.status===`timeout`?`text-destructive`:`text-muted-foreground`;return(0,Y.jsxs)(`div`,{className:`flex items-start gap-1.5 text-[10px] leading-tight`,children:[(0,Y.jsx)(`span`,{className:`shrink-0`,children:t}),(0,Y.jsx)(`span`,{className:`font-medium text-primary shrink-0`,children:e.agentName}),e.status&&(0,Y.jsx)(`span`,{className:`${n} shrink-0`,children:e.status}),e.toolName&&(0,Y.jsxs)(`span`,{className:`text-muted-foreground shrink-0`,children:[`[`,e.toolName,`]`]}),(0,Y.jsx)(`span`,{className:`text-muted-foreground truncate`,children:e.content})]},e.id)})})}),(0,Y.jsxs)(`div`,{className:`px-4 py-1.5 border-t text-[10px] text-muted-foreground flex items-center gap-4`,children:[(0,Y.jsx)(`span`,{children:`↑↓ navigate`}),(0,Y.jsx)(`span`,{children:`↵ select detail`}),(0,Y.jsx)(`span`,{children:`Esc deselect / close`})]})]})]}),_&&(0,Y.jsx)(`div`,{className:`flex-1 overflow-hidden bg-card/50`,children:(0,Y.jsxs)(`div`,{className:`h-full flex flex-col`,children:[(0,Y.jsxs)(`div`,{className:`shrink-0 px-4 py-2 border-b bg-card/80 flex items-center gap-2`,children:[(0,Y.jsx)(Vn,{className:`h-4 w-4 text-primary`}),(0,Y.jsx)(`span`,{className:`text-xs font-semibold text-primary`,children:_.name}),(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`detailed view`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>d(null),className:`ml-auto text-[10px] text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1`,children:`✕ close`})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-hidden`,children:(0,Y.jsx)(cf,{agent:_,now:f})})]})}),!_&&m.length>0&&(0,Y.jsx)(`div`,{className:`flex-1 flex items-center justify-center bg-muted/20`,children:(0,Y.jsxs)(`div`,{className:`text-center space-y-3 max-w-sm`,children:[(0,Y.jsx)(At,{className:`h-12 w-12 text-muted-foreground/30 mx-auto`}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Select an agent to view detailed information`}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground/60`,children:`Click on any agent in the list to see detailed metrics, tool logs, streaming output, and more — similar to the chat history detailed view.`}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-center gap-4 pt-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-muted-foreground`,children:[(0,Y.jsx)(`kbd`,{className:`px-1.5 py-0.5 rounded bg-muted border text-[9px]`,children:`↑`}),(0,Y.jsx)(`kbd`,{className:`px-1.5 py-0.5 rounded bg-muted border text-[9px]`,children:`↓`}),(0,Y.jsx)(`span`,{children:`navigate`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-muted-foreground`,children:[(0,Y.jsx)(`kbd`,{className:`px-1.5 py-0.5 rounded bg-muted border text-[9px]`,children:`Enter`}),(0,Y.jsx)(`span`,{children:`select`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-muted-foreground`,children:[(0,Y.jsx)(`kbd`,{className:`px-1.5 py-0.5 rounded bg-muted border text-[9px]`,children:`Esc`}),(0,Y.jsx)(`span`,{children:`deselect`})]})]})]})})]})]})]})}var df={shell:hn,package:Ot,network:Ae,"fs.write":Dt,config:Dt},ff={shell:`text-orange-400`,package:`text-blue-400`,network:`text-green-400`,"fs.write":`text-purple-400`,config:`text-yellow-400`},pf=[`all`,`shell`,`package`,`network`,`fs.write`,`config`];function mf(e){try{return new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}catch{return e.slice(11,19)}}function hf(e){if(e.input.command)return String(e.input.command).slice(0,80);if(e.input.url)return String(e.input.url).slice(0,80);if(e.input.packages){let t=e.input.packages;return Array.isArray(t)?t.join(`, `).slice(0,80):String(t).slice(0,80)}return JSON.stringify(e.input).slice(0,80)}function gf(e){return/[",\n]/.test(e)?`"${e.replace(/"/g,`""`)}"`:e}function _f(e){let t=[`timestamp,tool,risk,detail,outcome`,...e.map(e=>{let t=e.input.command??e.input.url??e.input.packages??JSON.stringify(e.input);return[gf(e.ts),gf(e.toolName),gf(e.risk),gf(String(t)),gf(e.outcome??``)].join(`,`)})].join(`
131
+ `),n=new Blob([t],{type:`text/csv;charset=utf-8`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`side-effects-${new Date().toISOString().slice(0,19).replace(/[:.]/g,`-`)}.csv`,i.click(),URL.revokeObjectURL(r)}function vf(){let e=wi(e=>e.sideEffects),t=wi(e=>e.loading),[n,r]=(0,U.useState)(`all`),[i,a]=(0,U.useState)(`time`),[o,s]=(0,U.useState)(`desc`);(0,U.useEffect)(()=>{wi.getState().setLoading(!0),Te(async()=>{let{getWSClient:e}=await Promise.resolve().then(()=>ui);return{getWSClient:e}},void 0).then(({getWSClient:e})=>{e().send({type:`side_effects.list`})})},[]);let l=()=>{wi.getState().setLoading(!0),Te(async()=>{let{getWSClient:e}=await Promise.resolve().then(()=>ui);return{getWSClient:e}},void 0).then(({getWSClient:e})=>{e().send({type:`side_effects.list`})})},u=e=>{i===e?s(o===`asc`?`desc`:`asc`):(a(e),s(e===`time`?`desc`:`asc`))},d=(0,U.useMemo)(()=>{let t=n===`all`?[...e]:e.filter(e=>e.risk===n);return t.sort((e,t)=>{let n=0;return i===`time`?n=e.ts.localeCompare(t.ts):i===`tool`?n=e.toolName.localeCompare(t.toolName):i===`risk`&&(n=e.risk.localeCompare(t.risk)),o===`asc`?n:-n}),t},[e,n,i,o]);if(e.length===0&&!t)return(0,Y.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-2 py-8 text-zinc-500`,children:[(0,Y.jsx)(Dt,{className:`h-8 w-8 opacity-40`}),(0,Y.jsx)(`p`,{className:`text-sm`,children:`No side effects recorded yet.`}),(0,Y.jsx)(`p`,{className:`text-xs text-zinc-600`,children:`Bash commands, package installs, and network requests will appear here.`})]});let f=({column:e})=>i===e?o===`asc`?(0,Y.jsx)(je,{className:`inline h-3 w-3`}):(0,Y.jsx)(ar,{className:`inline h-3 w-3`}):(0,Y.jsx)(`span`,{className:`opacity-30`,children:`↕`});return(0,Y.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between border-b border-zinc-800 px-3 py-2`,children:[(0,Y.jsxs)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-zinc-400`,children:[`Side Effects (`,d.length,n===`all`?``:`/${e.length}`,`)`]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Y.jsxs)(`button`,{onClick:()=>_f(d),disabled:d.length===0,className:`flex items-center gap-1 rounded px-2 py-1 text-xs text-zinc-500 hover:bg-zinc-800 hover:text-zinc-300 disabled:opacity-30 disabled:cursor-not-allowed`,title:`Export filtered side effects as CSV`,children:[(0,Y.jsx)(c,{className:`h-3 w-3`}),`CSV`]}),(0,Y.jsxs)(`button`,{onClick:l,className:`flex items-center gap-1 rounded px-2 py-1 text-xs text-zinc-500 hover:bg-zinc-800 hover:text-zinc-300`,children:[(0,Y.jsx)(tr,{className:Z(`h-3 w-3`,t&&`animate-spin`)}),`Refresh`]})]})]}),(0,Y.jsx)(`div`,{className:`flex items-center gap-1 border-b border-zinc-800/50 px-2 py-1`,children:pf.map(e=>(0,Y.jsx)(`button`,{onClick:()=>r(e),className:Z(`rounded px-2 py-0.5 text-[10px] font-medium uppercase transition-colors`,n===e?`bg-zinc-700 text-zinc-200`:`text-zinc-500 hover:bg-zinc-800 hover:text-zinc-400`),children:e===`all`?`All`:e},e))}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:(0,Y.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,Y.jsx)(`thead`,{className:`sticky top-0 bg-zinc-900 text-zinc-500`,children:(0,Y.jsxs)(`tr`,{children:[(0,Y.jsxs)(`th`,{className:`cursor-pointer select-none px-2 py-1 text-left font-medium hover:text-zinc-300`,onClick:()=>u(`time`),children:[`Time `,(0,Y.jsx)(f,{column:`time`})]}),(0,Y.jsxs)(`th`,{className:`cursor-pointer select-none px-2 py-1 text-left font-medium hover:text-zinc-300`,onClick:()=>u(`tool`),children:[`Tool `,(0,Y.jsx)(f,{column:`tool`})]}),(0,Y.jsxs)(`th`,{className:`cursor-pointer select-none px-2 py-1 text-left font-medium hover:text-zinc-300`,onClick:()=>u(`risk`),children:[`Risk `,(0,Y.jsx)(f,{column:`risk`})]}),(0,Y.jsx)(`th`,{className:`px-2 py-1 text-left font-medium`,children:`Detail`}),(0,Y.jsx)(`th`,{className:`px-2 py-1 text-left font-medium`,children:`Outcome`})]})}),(0,Y.jsx)(`tbody`,{children:d.map((e,t)=>{let n=df[e.risk]??Dt,r=ff[e.risk]??`text-zinc-400`;return(0,Y.jsxs)(`tr`,{className:`border-b border-zinc-900 hover:bg-zinc-800/50`,children:[(0,Y.jsx)(`td`,{className:`whitespace-nowrap px-2 py-1.5 text-zinc-500`,children:mf(e.ts)}),(0,Y.jsx)(`td`,{className:`whitespace-nowrap px-2 py-1.5 font-medium text-zinc-300`,children:e.toolName}),(0,Y.jsx)(`td`,{className:`whitespace-nowrap px-2 py-1.5`,children:(0,Y.jsxs)(`span`,{className:Z(`flex items-center gap-1`,r),children:[(0,Y.jsx)(n,{className:`h-3 w-3`}),e.risk]})}),(0,Y.jsx)(`td`,{className:`max-w-xs truncate px-2 py-1.5 font-mono text-zinc-400`,children:hf(e)}),(0,Y.jsx)(`td`,{className:`whitespace-nowrap px-2 py-1.5 text-zinc-500`,children:e.outcome??``})]},`${e.toolUseId}-${t}`)})})]})})]})}var yf=320;function bf(e){return e<=0?`$0`:e>=.01?`$${e.toFixed(3)}`:`$${e.toFixed(5)}`.replace(/0+$/,``).replace(/\.$/,``)}function xf(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function Sf(e,t){let n=Array.from(e.values());return n.sort((e,n)=>{if(e.id===t)return-1;if(n.id===t)return 1;let r=e.status===`running`?0:1,i=n.status===`running`?0:1;return r===i?e.startedAt-n.startedAt:r-i}),n}function Cf(){let e=J(e=>e.inspectorOpen),t=J(e=>e.inspectorTab),n=J(e=>e.toggleInspector),r=J(e=>e.setInspectorOpen),i=J(e=>e.setInspectorTab),a=X(e=>e.agents),o=X(e=>e.leaderId),s=X(e=>e.fleetTokensIn),c=X(e=>e.fleetTokensOut),l=X(e=>e.fleetConcurrency),u=X(e=>e.fleetConcurrencyMax),d=X(e=>e.eventTimeline),f=(0,U.useMemo)(()=>Sf(a,o),[a,o]),p=f.filter(e=>e.status===`running`).length,m=f.reduce((e,t)=>e+t.costUsd,0),h=f.length,[g,_]=(0,U.useState)(null),v=(0,U.useMemo)(()=>g?a.get(g)??f[0]??null:f[0]??null,[g,f,a]),y=()=>i(`fleet`),b=()=>i(`agents`),x=()=>i(`sideEffects`),S=wi(e=>e.sideEffects.length);return(0,Y.jsxs)(`div`,{className:`shrink-0 border-t bg-card flex flex-col`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:n,className:Z(`group w-full flex items-center justify-between gap-2 px-3 h-7 text-[11px]`,`text-muted-foreground hover:text-foreground hover:bg-accent/40 transition-colors`),title:e?`Hide inspector panel`:`Show inspector panel (Fleet / Agents / Audit)`,children:[(0,Y.jsxs)(`span`,{className:`flex items-center gap-2 min-w-0`,children:[e?(0,Y.jsx)(ar,{className:`h-3.5 w-3.5 shrink-0`}):(0,Y.jsx)(je,{className:`h-3.5 w-3.5 shrink-0`}),(0,Y.jsx)(`span`,{className:`font-medium uppercase tracking-wider`,children:`Inspector`}),h>0&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`opacity-40`,children:`·`}),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:Z(`h-1.5 w-1.5 rounded-full`,p>0?`bg-emerald-500 animate-pulse`:`bg-muted-foreground/50`)}),(0,Y.jsxs)(`span`,{className:`tabular-nums`,children:[p,`/`,h]})]}),(0,Y.jsx)(`span`,{className:`opacity-40 hidden sm:inline`,children:`·`}),(0,Y.jsxs)(`span`,{className:`tabular-nums font-mono hidden sm:inline`,children:[`↓`,xf(s),` ↑`,xf(c),` · `,bf(m)]})]}),S>0&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`opacity-40`,children:`·`}),(0,Y.jsxs)(`button`,{onClick:e=>{e.stopPropagation(),r(!0),i(`sideEffects`)},className:`flex items-center gap-1 text-yellow-500 hover:text-yellow-400 transition-colors`,title:`Open Audit tab`,children:[(0,Y.jsx)(Dt,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{className:`tabular-nums`,children:S})]})]})]}),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 shrink-0 opacity-70 group-hover:opacity-100`,children:[(0,Y.jsx)(In,{className:`h-3 w-3`}),(0,Y.jsx)(At,{className:`h-3 w-3`}),(0,Y.jsx)(Dt,{className:`h-3 w-3`})]})]}),(0,Y.jsx)(`div`,{className:`overflow-hidden transition-[height] duration-300 ease-[cubic-bezier(0.16,1,0.3,1)]`,style:{height:e?yf:0},children:(0,Y.jsxs)(`div`,{className:`flex flex-col`,style:{height:yf},children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 px-2 h-8 border-b bg-muted/30 shrink-0`,children:[(0,Y.jsx)(wf,{active:t===`fleet`,onClick:y,icon:(0,Y.jsx)(In,{className:`h-3.5 w-3.5`}),label:`Fleet`,count:h,running:p}),(0,Y.jsx)(wf,{active:t===`agents`,onClick:b,icon:(0,Y.jsx)(At,{className:`h-3.5 w-3.5`}),label:`Agents`,count:h}),(0,Y.jsx)(wf,{active:t===`sideEffects`,onClick:x,icon:(0,Y.jsx)(Dt,{className:`h-3.5 w-3.5`}),label:`Audit`,count:S}),(0,Y.jsx)(`div`,{className:`flex-1`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>r(!1),className:`p-1 rounded hover:bg-muted transition-colors text-muted-foreground hover:text-foreground`,"aria-label":`Collapse inspector panel`,title:`Collapse (Esc)`,children:(0,Y.jsx)(ar,{className:`h-4 w-4`})})]}),(0,Y.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto`,children:t===`fleet`?(0,Y.jsx)(Tf,{fleetList:f,leaderId:o,selectedAgentId:g,runningCount:p,fleetConcurrency:l,fleetConcurrencyMax:u,fleetTokensIn:s,fleetTokensOut:c,totalCost:m,eventTimeline:d,onSelectAgent:e=>{_(e.id),b()}}):t===`agents`?(0,Y.jsx)(Ef,{fleetList:f,selectedAgent:v,leaderId:o,selectedAgentId:v?.id??null,onSelectAgent:_}):(0,Y.jsx)(vf,{})})]})})]})}function wf({active:e,onClick:t,icon:n,label:r,count:i,running:a}){return(0,Y.jsxs)(`button`,{type:`button`,onClick:t,className:Z(`flex items-center gap-1.5 px-2.5 h-6 rounded-md text-[11px] font-medium transition-colors`,e?`bg-background text-foreground shadow-sm ring-1 ring-border`:`text-muted-foreground hover:text-foreground hover:bg-background/60`),children:[n,r,i>0&&(0,Y.jsx)(`span`,{className:Z(`tabular-nums text-[10px] px-1 rounded-full`,a&&a>0?`bg-emerald-500/15 text-emerald-600 dark:text-emerald-400`:`bg-muted text-muted-foreground`),children:a===void 0?i:`${a}/${i}`})]})}function Tf({fleetList:e,leaderId:t,selectedAgentId:n,runningCount:r,fleetConcurrency:i,fleetConcurrencyMax:a,fleetTokensIn:o,fleetTokensOut:s,totalCost:c,eventTimeline:l,onSelectAgent:u}){return(0,Y.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 px-3 py-1.5 border-b text-[11px] text-muted-foreground shrink-0`,children:[(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[r>0&&(0,Y.jsx)(`span`,{className:`h-1.5 w-1.5 rounded-full bg-emerald-500 animate-pulse`}),(0,Y.jsxs)(`span`,{className:`tabular-nums`,children:[r,` running · `,e.length,` total`]})]}),(0,Y.jsx)(Xd,{current:i,max:a,showLabel:!0}),(0,Y.jsx)(`div`,{className:`flex-1`}),(0,Y.jsxs)(`span`,{className:`tabular-nums font-mono`,children:[`↓`,xf(o),` ↑`,xf(s),` · `,bf(c)]})]}),e.length===0?(0,Y.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-8 text-muted-foreground`,children:[(0,Y.jsx)(At,{className:`h-8 w-8 mb-2 opacity-20`}),(0,Y.jsx)(`p`,{className:`text-xs font-medium`,children:`No agents active`}),(0,Y.jsx)(`p`,{className:`text-[11px] mt-0.5`,children:`Agents appear here when the fleet is active.`})]}):(0,Y.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto p-1.5`,children:e.map(e=>(0,Y.jsx)(lf,{agent:e,isSelected:n===e.id,isLeader:e.id===t,onClick:()=>u(e)},e.id))}),l.length>0&&(0,Y.jsx)(`div`,{className:`border-t px-3 py-1.5 shrink-0`,children:(0,Y.jsx)($d,{events:l,max:4})})]})}function Ef({fleetList:e,selectedAgent:t,leaderId:n,selectedAgentId:r,onSelectAgent:i}){if(e.length===0)return(0,Y.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-8 text-muted-foreground`,children:[(0,Y.jsx)(In,{className:`h-8 w-8 mb-2 opacity-20`}),(0,Y.jsx)(`p`,{className:`text-xs font-medium`,children:`No agents active`})]});if(!t)return null;let a=Math.max(0,e.findIndex(e=>e.id===r));return(0,Y.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,Y.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto p-3`,children:(0,Y.jsx)(`div`,{className:`max-w-2xl mx-auto`,children:(0,Y.jsx)(Oc,{agent:t,isLeader:t.id===n})})}),(0,Y.jsx)(`div`,{className:`border-t px-2 py-1.5 shrink-0`,children:(0,Y.jsx)(`div`,{className:`flex items-center gap-1 overflow-x-auto pb-0.5`,children:e.map((e,n)=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>i(e.id),className:Z(`shrink-0 flex items-center gap-1.5 px-2 py-1 rounded-md text-[10px] transition-colors`,e.id===t?.id?`bg-primary/15 text-primary ring-1 ring-primary/40`:`hover:bg-accent text-muted-foreground`),title:`${e.name}${n===a?` (selected)`:``}`,children:[(0,Y.jsx)(`span`,{className:Z(`h-1.5 w-1.5 rounded-full shrink-0`,e.status===`running`?`bg-emerald-500 animate-pulse`:e.status===`failed`?`bg-destructive`:`bg-muted-foreground/50`)}),(0,Y.jsx)(`span`,{className:`truncate max-w-[8rem]`,children:e.name})]},e.id))})})]})}var Df={note:On,ask:se,assign:ht,steer:Mn,btw:Mt,broadcast:ht,status:nt,result:V},Of={note:`Note`,ask:`Question`,assign:`Assignment`,steer:`Steer`,btw:`By the way`,broadcast:`Broadcast`,status:`Status`,result:`Result`},kf={high:`text-red-600 bg-red-50 dark:bg-red-950/30`,normal:`text-muted-foreground bg-muted`,low:`text-slate-500 bg-slate-50 dark:bg-slate-950/20`};function Af(e){return new Date(e).toLocaleString()}function jf(e){let t=new Date(e),n=Date.now()-t.getTime();return n<6e4?`just now`:n<36e5?`${Math.round(n/6e4)}m ago`:n<864e5?`${Math.round(n/36e5)}h ago`:n<6048e5?`${Math.round(n/864e5)}d ago`:t.toLocaleDateString()}function Mf(){return(0,Y.jsxs)(`div`,{className:`flex-1 flex flex-col items-center justify-center text-muted-foreground gap-3`,children:[(0,Y.jsx)(s,{className:`h-12 w-12 opacity-20`}),(0,Y.jsx)(`div`,{className:`text-sm font-medium`,children:`No message selected`}),(0,Y.jsx)(`div`,{className:`text-xs max-w-[260px] text-center opacity-60`,children:`Click a message in the Mailbox panel to view it here.`})]})}function Nf({readBy:e}){let t=Object.entries(e);return t.length===0?null:(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(`div`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wide`,children:`Read by`}),(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:t.map(([e,t])=>(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] bg-green-50 text-green-700 dark:bg-green-950/30 dark:text-green-400`,title:Af(t),children:[(0,Y.jsx)(V,{className:`h-2.5 w-2.5`}),e]},e))})]})}function Pf({className:e}){let t=J(e=>e.selectedMailMessage),n=J(e=>e.setSelectedMailMessage),r=J(e=>e.setCurrentView);(0,U.useEffect)(()=>()=>{n(null)},[n]);function i(){n(null),r(`chat`)}if(!t)return(0,Y.jsx)(Mf,{});let a=Df[t.type]??b,o=Of[t.type]??t.type,s=kf[t.priority]??kf.normal;return(0,Y.jsxs)(`div`,{className:Z(`flex-1 flex flex-col overflow-hidden`,e),children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-2.5 border-b border-border bg-card/40 shrink-0`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:i,className:`flex items-center justify-center w-7 h-7 rounded-md hover:bg-accent text-muted-foreground hover:text-foreground transition-colors shrink-0`,title:`Back to chat`,children:(0,Y.jsx)(nn,{className:`h-4 w-4`})}),(0,Y.jsx)(`div`,{className:Z(`p-1.5 rounded-md shrink-0`,t.completed?`bg-green-100 dark:bg-green-950/40`:`bg-amber-100 dark:bg-amber-950/40`),children:(0,Y.jsx)(a,{className:Z(`h-4 w-4`,t.completed?`text-green-600 dark:text-green-400`:`text-amber-600 dark:text-amber-400`)})}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`h2`,{className:`text-sm font-semibold text-foreground truncate`,children:t.subject}),t.completed&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[10px] font-medium text-green-600 dark:text-green-400 shrink-0`,children:[(0,Y.jsx)(V,{className:`h-3 w-3`}),`Completed`]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] text-muted-foreground mt-0.5`,children:[(0,Y.jsx)(`span`,{className:`font-medium text-foreground/80`,children:t.from}),(0,Y.jsx)(`span`,{children:`→`}),(0,Y.jsx)(`span`,{children:t.to===`*`||t.to===`all`?`everyone`:t.to}),(0,Y.jsx)(`span`,{className:`opacity-40`,children:`•`}),(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,Y.jsx)(L,{className:`h-3 w-3`}),jf(t.timestamp)]})]})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:i,className:`flex items-center justify-center w-7 h-7 rounded-md hover:bg-accent text-muted-foreground hover:text-foreground transition-colors shrink-0`,title:`Close (Esc)`,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:(0,Y.jsx)(`div`,{className:`px-4 py-4`,children:(0,Y.jsx)(`div`,{className:`markdown-content prose prose-sm dark:prose-invert max-w-none text-sm leading-relaxed`,children:(0,Y.jsx)(fn,{components:Uu,children:t.body})})})}),(0,Y.jsxs)(`div`,{className:`border-t border-border bg-card/30 px-4 py-3 shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 sm:grid-cols-4 gap-x-6 gap-y-2 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,Y.jsx)(be,{className:`h-3 w-3 shrink-0`}),(0,Y.jsx)(`span`,{children:o})]}),(0,Y.jsx)(`div`,{className:`flex items-center gap-1.5`,children:(0,Y.jsx)(`span`,{className:Z(`px-1.5 py-0.5 rounded text-[10px] font-semibold uppercase`,s),children:t.priority||`normal`})}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,Y.jsx)(Or,{className:`h-3 w-3 shrink-0`}),(0,Y.jsx)(`span`,{className:`truncate`,title:t.from,children:t.from})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,Y.jsx)(L,{className:`h-3 w-3 shrink-0`}),(0,Y.jsx)(`span`,{children:Af(t.timestamp)})]}),t.replyTo&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground col-span-2`,children:[(0,Y.jsx)(Ln,{className:`h-3 w-3 shrink-0`}),(0,Y.jsxs)(`span`,{className:`truncate`,children:[`In reply to: `,t.replyTo]})]}),t.completed&&t.completedBy&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground col-span-2`,children:[(0,Y.jsx)(V,{className:`h-3 w-3 shrink-0 text-green-500`}),(0,Y.jsxs)(`span`,{children:[`Completed by `,t.completedBy,t.completedAt?` at ${Af(t.completedAt)}`:``]})]}),t.outcome&&(0,Y.jsxs)(`div`,{className:`flex items-start gap-1.5 text-muted-foreground col-span-2 sm:col-span-4`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide shrink-0 mt-0.5`,children:`Outcome:`}),(0,Y.jsx)(`span`,{children:t.outcome})]}),t.taskContext&&(0,Y.jsxs)(`div`,{className:`flex items-start gap-1.5 text-muted-foreground col-span-2 sm:col-span-4`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide shrink-0 mt-0.5`,children:`Task:`}),(0,Y.jsx)(`span`,{children:t.taskContext})]})]}),Object.keys(t.readBy??{}).length>0&&(0,Y.jsx)(`div`,{className:`mt-3 pt-3 border-t border-border/50`,children:(0,Y.jsx)(Nf,{readBy:t.readBy})})]})]})}function Ff(e){if(e<1e3)return`${e}ms`;let t=Math.round(e/100);return t<600?`${(t/10).toFixed(1)}s`:`${Math.floor(t/600)}m ${Math.round(t%600/10)}s`}var If={user:{Icon:Or,label:`You`,avatarBg:`bg-primary`,avatarColor:`text-primary-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-primary/20`,bubbleBg:`bg-primary`,bubbleBorder:`border-transparent`,textColor:`text-primary-foreground`},assistant:{Icon:In,label:`Assistant`,avatarBg:`bg-accent`,avatarColor:`text-accent-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-accent/20`,bubbleBg:`bg-card`,bubbleBorder:`border-border`,textColor:`text-foreground`},tool:{Icon:hn,label:`Tool`,avatarBg:`bg-secondary`,avatarColor:`text-secondary-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-secondary/20`,bubbleBg:`bg-muted/80`,bubbleBorder:`border-border`,textColor:`text-foreground`},system:{Icon:In,label:`System`,avatarBg:`bg-muted`,avatarColor:`text-muted-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-muted/20`,bubbleBg:`bg-muted/50`,bubbleBorder:`border-border`,textColor:`text-muted-foreground`},error:{Icon:ut,label:`Error`,avatarBg:`bg-destructive`,avatarColor:`text-destructive-foreground`,avatarRing:`ring-2 ring-offset-2 ring-offset-background ring-destructive/20`,bubbleBg:`bg-destructive/5`,bubbleBorder:`border-destructive/20`,textColor:`text-destructive`}};function Lf({entry:e}){return e.role===`error`?(0,Y.jsx)(Ku,{text:e.text}):e.role===`tool`?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5 tool-details`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-sm font-medium text-foreground`,children:[(0,Y.jsx)(hn,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{className:`font-mono`,children:e.tool??`tool`}),e.durationMs!==void 0&&(0,Y.jsxs)(`span`,{className:`ml-auto text-[10px] text-muted-foreground font-normal tabular-nums`,children:[(0,Y.jsx)(L,{className:`h-3 w-3 inline mr-0.5 align-text-bottom`}),Ff(e.durationMs)]})]}),e.input!==void 0&&e.input!==null&&(0,Y.jsx)(`div`,{className:`p-3 bg-muted/50 rounded-lg overflow-x-auto`,children:(0,Y.jsx)(qu,{input:e.input})}),e.output!==void 0&&e.output!==null?(0,Y.jsx)(`div`,{className:`text-sm leading-relaxed markdown-content`,children:typeof e.output==`string`?(0,Y.jsx)(fn,{remarkPlugins:[o],rehypePlugins:Vu,components:Uu,children:e.output}):(0,Y.jsx)(`pre`,{className:`whitespace-pre-wrap font-mono text-xs bg-card rounded-lg p-2 border border-border overflow-x-auto`,children:JSON.stringify(e.output,null,2)})}):e.text?(0,Y.jsx)(`div`,{className:`text-sm leading-relaxed markdown-content`,children:(0,Y.jsx)(fn,{remarkPlugins:[o],rehypePlugins:Vu,components:Uu,children:e.text})}):null,e.isError&&(0,Y.jsxs)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2`,children:[(0,Y.jsx)(`span`,{className:`text-xs font-medium text-destructive`,children:`Tool failed`}),e.text&&(0,Y.jsx)(`pre`,{className:`mt-1 text-xs whitespace-pre-wrap text-destructive/80`,children:e.text})]})]}):(0,Y.jsx)(`div`,{className:`text-sm leading-relaxed markdown-content`,children:(0,Y.jsx)(fn,{remarkPlugins:[o],rehypePlugins:Vu,components:Uu,children:e.text})})}function Rf({entry:e,isContinuation:t=!1}){let n=If[e.role],r=n.Icon;return(0,Y.jsxs)(`div`,{className:`group flex gap-3 animate-message msg-bubble rounded-lg transition-shadow`,children:[t?(0,Y.jsx)(`div`,{className:`flex-shrink-0 w-8`}):(0,Y.jsx)(`div`,{className:Z(`flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center`,n.avatarBg,n.avatarColor,n.avatarRing),children:(0,Y.jsx)(r,{className:`h-4 w-4`})}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5 min-w-0 flex-1`,children:[!t&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:Z(`text-xs font-medium`,n.textColor),children:e.role===`tool`&&e.tool?e.tool:n.label}),(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:new Date(e.ts).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}),e.role===`tool`&&e.durationMs!==void 0&&(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:[`· `,Ff(e.durationMs)]})]}),(0,Y.jsx)(`div`,{className:Z(`rounded-2xl px-4 py-3 border`,e.role===`user`&&`rounded-br-md`,e.role===`assistant`&&`rounded-bl-md`,e.role===`tool`&&`rounded-bl-sm`,e.role===`system`&&`rounded-bl-sm opacity-70`,e.role===`error`&&`rounded-bl-sm`,n.bubbleBg,n.bubbleBorder),children:(0,Y.jsx)(`div`,{className:Z(`text-sm leading-relaxed markdown-content`,n.textColor),children:(0,Y.jsx)(Lf,{entry:e})})}),e.text&&e.role!==`error`&&(0,Y.jsx)(`div`,{className:`opacity-0 group-hover:opacity-100 transition-opacity`,children:(0,Y.jsx)(Wu,{text:e.text,label:`Copy`})})]})]})}var zf=[{value:`steer`,label:`🔄 Steer`,hint:`Adjust behavior mid-task`},{value:`ask`,label:`❓ Ask`,hint:`Question — expects a reply`},{value:`assign`,label:`📋 Assign`,hint:`A task to act on`},{value:`note`,label:`💬 Note`,hint:`FYI, non-urgent`}],Bf=2500;function Vf({sessionId:e,limit:t=200}){let[n,r]=(0,U.useState)(null),[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(``),[c,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(null),[f,p]=(0,U.useState)(`steer`),[m,h]=(0,U.useState)(`high`),[g,_]=(0,U.useState)([]),[v,y]=(0,U.useState)(!1),b=(0,U.useRef)(null),x=(0,U.useRef)(!0),S=(0,U.useRef)(!0),C=ga(e=>e.liveSessions),w=(0,U.useMemo)(()=>C.find(t=>t.sessionId===e),[C,e]),T=(0,U.useMemo)(()=>{let e=w;return e?`${e.status}|${e.agents.map(e=>`${e.id}:${e.status}:${e.toolCalls??0}:${e.iterations??0}`).join(`,`)}`:``},[w]),E=w?.status===`active`||(w?.agents.some(e=>e.status===`running`||e.status===`streaming`)??!1),D=(0,U.useMemo)(()=>{if(!w)return null;let e=w.agents.find(e=>e.status===`running`||e.status===`streaming`);return e?.currentTool?`🔧 ${e.currentTool}`:e?`${e.name??e.id} · working`:null},[w]),O=(0,U.useMemo)(()=>{if(!w)return null;let e=w.agents.find(e=>e.partialText&&(e.status===`streaming`||e.status===`running`))??w.agents.find(e=>e.partialText);return e?.partialText?{label:e.id===`leader`?`Claude`:e.name||e.id,text:e.partialText}:null},[w]),k=(0,U.useCallback)(async()=>{try{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}/events?limit=${t}`);if(!n.ok)throw Error(`HTTP ${n.status}`);let i=await n.json();S.current&&(r(i),a(null))}catch(e){S.current&&a(e instanceof Error?e.message:String(e))}},[e,t]),A=(0,U.useCallback)(async()=>{try{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/mailbox`);if(!t.ok)return;let n=await t.json();S.current&&Array.isArray(n.thread)&&_(n.thread)}catch{}},[e]);(0,U.useEffect)(()=>{S.current=!0,r(null),a(null),_([]),k(),A();let e=setInterval(()=>void k(),Bf),t=setInterval(()=>void A(),Bf);return()=>{S.current=!1,clearInterval(e),clearInterval(t)}},[k,A]),(0,U.useEffect)(()=>{T&&k()},[T,k]),(0,U.useEffect)(()=>{x.current&&b.current&&(b.current.scrollTop=b.current.scrollHeight)},[n,O]);let j=()=>{let e=b.current;e&&(x.current=e.scrollHeight-e.scrollTop-e.clientHeight<40)},M=async()=>{let t=o.trim();if(!(!t||c)){l(!0),d(null);try{let n=await fetch(`/api/sessions/${encodeURIComponent(e)}/message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:t,type:f,priority:m})});if(!n.ok)throw Error(`HTTP ${n.status}`);s(``),d(E?`Delivered — the running agent sees it on its next step`:`Delivered — target is idle; appears in its mailbox, read when it next runs`),A()}catch(e){d(`Failed: ${e instanceof Error?e.message:String(e)}`)}finally{l(!1)}}},N=async()=>{if(!v){y(!0),d(null);try{let t=await fetch(`/api/sessions/${encodeURIComponent(e)}/interrupt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({reason:`Operator requested stop from Fleet HQ`})});if(!t.ok)throw Error(`HTTP ${t.status}`);d(`Interrupt sent — agent stops at its next step (not a kill)`),A()}catch(e){d(`Interrupt failed: ${e instanceof Error?e.message:String(e)}`)}finally{y(!1)}}},P=n?.entries??[];return(0,Y.jsxs)(`div`,{className:`flex flex-col h-full min-h-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between mb-1.5 shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] uppercase tracking-wide text-muted-foreground`,children:[(0,Y.jsx)(`span`,{className:Z(`h-1.5 w-1.5 rounded-full`,E?`bg-green-500 animate-pulse`:`bg-muted-foreground`)}),`Live stream`]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n&&(0,Y.jsxs)(`div`,{className:`text-[10px] text-muted-foreground`,children:[n.total,` event`,n.total===1?``:`s`,` · `,n.status]}),E&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>void N(),disabled:v,title:`Cooperatively stop this agent at its next step (not a process kill)`,className:`rounded border border-destructive/40 bg-destructive/15 px-1.5 py-0.5 text-[10px] text-destructive hover:bg-destructive/25 disabled:opacity-40 transition-colors`,children:v?`…`:`⏸ Interrupt`})]})]}),D&&(0,Y.jsxs)(`div`,{className:`mb-1.5 shrink-0 text-[10px] text-foreground truncate`,children:[`▶ `,D]}),i&&(0,Y.jsxs)(`div`,{className:`text-[11px] text-destructive mb-1 shrink-0`,children:[`· `,i]}),(0,Y.jsxs)(`div`,{ref:b,onScroll:j,className:`flex-1 overflow-y-auto space-y-1.5 pr-1 min-h-0`,children:[P.length===0&&!i&&(0,Y.jsx)(`div`,{className:`text-[11px] text-muted-foreground italic`,children:`Loading session…`}),P.map((e,t)=>(0,Y.jsx)(Rf,{entry:e,isContinuation:t>0&&P[t-1].role===e.role},`${e.ts}-${t}`)),O&&(0,Y.jsxs)(`div`,{className:`flex gap-3 animate-message`,children:[(0,Y.jsx)(`div`,{className:`flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center bg-accent text-accent-foreground ring-2 ring-offset-2 ring-offset-background ring-accent/20`,children:(0,Y.jsx)(In,{className:`h-4 w-4 animate-pulse`})}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5 max-w-[85%] min-w-0`,children:[(0,Y.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground px-1`,children:O.label}),(0,Y.jsx)(`div`,{className:`rounded-2xl rounded-bl-md px-4 py-3 bg-card border border-border`,children:(0,Y.jsxs)(`span`,{className:`text-sm leading-relaxed text-foreground whitespace-pre-wrap break-words`,children:[O.text,(0,Y.jsx)(`span`,{className:`animate-pulse text-primary`,children:`▋`})]})})]})]})]}),g.length>0&&(0,Y.jsxs)(`div`,{className:`mt-2 pt-2 border-t border-border shrink-0 max-h-28 overflow-y-auto space-y-1`,children:[(0,Y.jsx)(`div`,{className:`text-[9px] uppercase tracking-wide text-muted-foreground`,children:`Messages`}),g.slice(-6).map(e=>{let t=e.completed?`✓✓ done`:e.readByLeader?`✓ read`:`⏳ delivered`;return(0,Y.jsxs)(`div`,{className:`text-[10px] leading-snug`,children:[(0,Y.jsx)(`span`,{className:Z(`font-semibold mr-1.5`,e.fromLeader?`text-accent`:`text-primary`),children:e.fromLeader?`Agent`:`You`}),(0,Y.jsx)(`span`,{className:`text-foreground whitespace-pre-wrap break-words`,children:e.body}),!e.fromLeader&&(0,Y.jsx)(`span`,{className:Z(`ml-1.5 text-[9px]`,e.completed?`text-green-500`:e.readByLeader?`text-cyan-500`:`text-muted-foreground`),children:t})]},e.id)})]}),(0,Y.jsxs)(`div`,{className:`mt-2 pt-2 border-t border-border shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5`,children:[(0,Y.jsx)(`select`,{value:f,onChange:e=>p(e.target.value),title:zf.find(e=>e.value===f)?.hint,className:`rounded bg-muted border border-border px-1.5 py-0.5 text-[10px] text-foreground focus:outline-none focus:ring-1 focus:ring-ring`,children:zf.map(e=>(0,Y.jsx)(`option`,{value:e.value,children:e.label},e.value))}),(0,Y.jsxs)(`select`,{value:m,onChange:e=>h(e.target.value),title:`Priority`,className:`rounded bg-muted border border-border px-1.5 py-0.5 text-[10px] text-foreground focus:outline-none focus:ring-1 focus:ring-ring`,children:[(0,Y.jsx)(`option`,{value:`high`,children:`high`}),(0,Y.jsx)(`option`,{value:`normal`,children:`normal`}),(0,Y.jsx)(`option`,{value:`low`,children:`low`})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-end gap-1.5`,children:[(0,Y.jsx)(`textarea`,{value:o,onChange:e=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),M())},rows:2,placeholder:`${zf.find(e=>e.value===f)?.label??`Send`} → this session…`,className:`flex-1 resize-none rounded-md bg-muted border border-border px-2 py-1 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>void M(),disabled:c||!o.trim(),className:`shrink-0 rounded-md bg-primary text-primary-foreground px-2.5 py-1.5 text-xs hover:bg-primary/90 disabled:opacity-40 disabled:cursor-not-allowed transition-colors`,children:c?`…`:`Send`})]}),u&&(0,Y.jsx)(`div`,{className:`mt-1 text-[10px] text-muted-foreground`,children:u}),(0,Y.jsx)(`div`,{className:`mt-0.5 text-[9px] text-muted-foreground`,children:`⌘/Ctrl+Enter to send · seen on the agent's next iteration`})]})]})}function Hf(e){return e==null||!Number.isFinite(e)?`0`:e<1e3?String(Math.round(e)):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function Uf(e,t){if(!e)return`never`;let n=Date.parse(e);if(!Number.isFinite(n))return`never`;let r=Math.max(0,Math.round((t-n)/1e3));return r<60?`${r}s ago`:r<3600?`${Math.round(r/60)}m ago`:r<86400?`${Math.round(r/3600)}h ago`:`${Math.round(r/86400)}d ago`}function Wf(e,t){if(!e)return``;let n=Date.parse(e);if(!Number.isFinite(n))return``;let r=Math.max(0,Math.round((t-n)/1e3));return r<60?`${r}s`:r<3600?`${Math.round(r/60)}m`:`${Math.round(r/3600)}h`}function Gf(e){if(!e)return;let t=e.split(`/`);return t[t.length-1]?.slice(0,18)}function Kf(e,t=380){let n=new Map,r=Math.max(1,e.length);return e.forEach((e,i)=>{let a=(i-(r-1)/2)*t;n.set(e,600+a)}),n}function qf(e,t,n){let r=Math.min(3,n),i=Math.floor(t/r),a=t%r;return{x:e-(Math.min(r,n-i*r)-1)*190/2+a*190,y:640+i*150}}function Jf(e){return e===`tui`?`tui`:e===`repl`||e===`cli`?`repl`:`webui`}function Yf(e){return e===`tui`?`TUI`:e===`repl`?`REPL`:`WebUI`}function Xf(e){switch(e){case`running`:case`active`:return`active`;case`idle`:return`idle`;case`completed`:return`completed`;case`failed`:case`error`:return`error`;case`stopped`:return`offline`;default:return`idle`}}function Zf(e,t){let n=new Set,r=[];for(let i of e){let e=Jf(i.clientType),a=`client-${i.pid??i.sessionId}`,o=[],s=!1;for(let e of i.agents){n.add(e.id);let r=t.get(e.id),i=Xf(r?.status??e.status);(i===`active`||i===`streaming`)&&(s=!0),o.push({officeId:`${a}__agent-${e.id}`,serverId:e.id,name:r?.name??e.name??e.id,status:i,iteration:r?.iteration??e.iterations??0,toolCalls:r?.toolCalls??e.toolCalls??0,costUsd:r?.costUsd??e.costUsd??0,tokensIn:r?.tokensIn??e.tokensIn??0,tokensOut:r?.tokensOut??e.tokensOut??0,ctxPct:r?.ctxPct??e.ctxPct,model:r?.model??e.model,lastActivityAt:e.lastActivityAt,currentTask:r?.currentTool??r?.lastTool??e.currentTool})}let c=i.status===`closing`||i.status===`stale`?`offline`:s?`active`:`idle`;r.push({id:a,type:e,label:i.projectName||Yf(e),sublabel:[Yf(e),i.gitBranch?`⎇ ${i.gitBranch}`:``,i.pid?`pid ${i.pid}`:``].filter(Boolean).join(` · `),status:c,sessionId:i.sessionId,pid:i.pid,branch:i.gitBranch,workingDir:i.workingDir,startedAt:i.startedAt,agents:o})}let i=[...t.values()].filter(e=>!n.has(e.id));if(i.length>0){let e=r.find(e=>e.type===`webui`);e||(e={id:`client-self`,type:`webui`,label:`This WebUI`,sublabel:`Web UI`,status:`idle`,agents:[]},r.push(e));for(let t of i){let n=Xf(t.status);(n===`active`||n===`streaming`)&&(e.status=`active`),e.agents.push({officeId:`${e.id}__agent-${t.id}`,serverId:t.id,name:t.name,status:n,iteration:t.iteration??0,toolCalls:t.toolCalls??0,costUsd:t.costUsd??0,tokensIn:t.tokensIn??0,tokensOut:t.tokensOut??0,ctxPct:t.ctxPct,model:t.model,currentTask:t.currentTool??t.lastTool})}}return r.length===0&&r.push({id:`client-self`,type:`webui`,label:`This WebUI`,sublabel:`Web UI · connecting…`,status:`idle`,agents:[]}),r}function Qf(e){return e.startsWith(`tool`)?`#eab308`:e.startsWith(`mailbox`)?`#06b6d4`:e.startsWith(`provider`)?`#a855f7`:e.startsWith(`agent`)||e.startsWith(`subagent`)?`#22c55e`:e.includes(`error`)?`#ef4444`:`#6366f1`}function $f(e){return Math.min(100,Math.max(0,e??0))}function ep({status:e,small:t,activity:n=0}){let r=t?`w-2 h-2`:`w-3 h-3`,i=t?4+n*4:6+n*6;return(0,Y.jsx)(`span`,{className:Z(`rounded-full`,r,n>0&&`animate-pulse`,{idle:`bg-gray-500`,active:`bg-emerald-500`,streaming:`bg-blue-500`,completed:`bg-blue-500`,error:`bg-red-500`,offline:`bg-gray-600`}[e]),style:{boxShadow:n>0?`0 0 ${i}px ${{idle:`#9ca3af`,active:`#22c55e`,streaming:`#3b82f6`,completed:`#3b82f6`,error:`#ef4444`,offline:`#6b7280`}[e]}`:void 0}})}function tp(){let{clientCounts:e,currentSession:t,totalAgents:n,activeAgents:r,aggregate:i}=ga(),a=e.tui+e.webui+e.repl,o=e=>e?.toLocaleString()??`0`;return(0,Y.jsxs)(`div`,{className:`absolute top-20 left-4 z-10 bg-slate-800/95 backdrop-blur border border-slate-700 rounded-lg p-3 shadow-xl`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,Y.jsx)(Dt,{className:`h-3.5 w-3.5 text-emerald-400`}),(0,Y.jsx)(`span`,{className:`text-[10px] font-bold text-gray-300 uppercase tracking-wide`,children:`Session Stats`})]}),(0,Y.jsxs)(`div`,{className:`space-y-1.5 text-[10px]`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(At,{className:`h-3 w-3 text-gray-500`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Clients`})]}),(0,Y.jsxs)(`span`,{className:`text-gray-200 font-mono`,children:[r,` `,(0,Y.jsx)(`span`,{className:`text-gray-500`,children:`/`}),` `,(0,Y.jsx)(`span`,{className:`text-emerald-400`,children:a})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 pl-4 text-[9px]`,children:[e.tui>0&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(hn,{className:`h-2.5 w-2.5 text-emerald-500`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`TUI`}),(0,Y.jsx)(`span`,{className:`text-emerald-400 font-mono`,children:e.tui})]}),e.webui>0&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(xr,{className:`h-2.5 w-2.5 text-blue-500`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`WebUI`}),(0,Y.jsx)(`span`,{className:`text-blue-400 font-mono`,children:e.webui})]}),e.repl>0&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(hn,{className:`h-2.5 w-2.5 text-amber-500`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`REPL`}),(0,Y.jsx)(`span`,{className:`text-amber-400 font-mono`,children:e.repl})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(In,{className:`h-3 w-3 text-gray-500`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Agents`})]}),(0,Y.jsxs)(`span`,{className:`text-gray-200 font-mono`,children:[r,` `,(0,Y.jsx)(`span`,{className:`text-gray-500`,children:`/`}),` `,(0,Y.jsx)(`span`,{className:`text-cyan-400`,children:n})]})]}),t.model&&(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(k,{className:`h-3 w-3 text-gray-500`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Model`})]}),(0,Y.jsx)(`span`,{className:`text-cyan-400 font-mono truncate max-w-[120px]`,title:t.model,children:t.model.split(`/`).pop()?.slice(0,16)})]}),t.mode&&(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(Yt,{className:`h-3 w-3 text-gray-500`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Mode`})]}),(0,Y.jsx)(`span`,{className:Z(`font-mono uppercase text-[9px] px-1.5 py-0.5 rounded`,t.mode===`auto`&&`bg-purple-500/20 text-purple-400`,t.mode===`suggest`&&`bg-blue-500/20 text-blue-400`,t.mode===`off`&&`bg-gray-500/20 text-gray-400`,![`auto`,`suggest`,`off`].includes(t.mode||``)&&`bg-gray-500/20 text-gray-400`),children:t.mode})]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(at,{className:`h-3 w-3 text-gray-500`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Tool Calls`})]}),(0,Y.jsx)(`span`,{className:`text-yellow-400 font-mono`,children:o(i.toolCalls)})]}),(0,Y.jsxs)(`div`,{className:`border-t border-slate-700 pt-1.5 mt-1.5 space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(`span`,{className:`text-gray-500 text-[8px]`,children:`IN`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Input`})]}),(0,Y.jsx)(`span`,{className:`text-gray-300 font-mono text-[9px]`,children:o(i.tokensIn)})]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(`span`,{className:`text-gray-500 text-[8px]`,children:`OUT`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Output`})]}),(0,Y.jsx)(`span`,{className:`text-gray-300 font-mono text-[9px]`,children:o(i.tokensOut)})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-4 border-t border-slate-700 pt-1.5 mt-1.5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(mn,{className:`h-3 w-3 text-gray-500`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Cost`})]}),(0,Y.jsx)(`span`,{className:`text-emerald-400 font-mono font-medium`,children:(e=>e==null?`$0.0000`:`$${e.toFixed(4)}`)(i.costUsd)})]})]})]})}function np(){let e={opacity:0,width:1,height:1,minWidth:0,border:`none`,background:`transparent`};return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(bn,{type:`target`,position:mr.Top,style:e,isConnectable:!1}),(0,Y.jsx)(bn,{type:`source`,position:mr.Bottom,style:e,isConnectable:!1})]})}function rp({data:e}){return(0,Y.jsxs)(`div`,{className:`mt-2 flex items-center justify-between border-t border-white/5 pt-1.5 text-[8px] text-gray-500`,children:[(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`span`,{className:`font-mono text-gray-300`,children:e.agentCount??0}),` agents`]}),e.startedAt&&(0,Y.jsxs)(`span`,{children:[`up `,Wf(e.startedAt,Date.now())]})]})}function ip({data:e}){let t=e.status===`active`||e.status===`streaming`,n=e.status===`error`,r=e.status===`offline`,i=e.color||`#3b82f6`;return(0,Y.jsxs)(`div`,{className:Z(`rounded-xl border-2 p-4 min-w-[180px] transition-all backdrop-blur-sm`,t&&`shadow-lg shadow-blue-500/20`,n&&`border-red-500/50 bg-red-500/10`,r&&`border-gray-500/30 bg-gray-500/5 opacity-60`,!t&&!n&&!r&&`border-blue-500/30 bg-blue-500/10`),children:[(0,Y.jsx)(np,{}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,Y.jsx)(`div`,{className:Z(`flex items-center justify-center w-10 h-10 rounded-lg`,t?`bg-blue-500/20`:`bg-blue-500/10`),children:(0,Y.jsx)(xr,{className:`h-5 w-5`,style:{color:i}})}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-xs font-bold truncate`,style:{color:i},children:e.label}),(0,Y.jsx)(`div`,{className:`text-[10px] text-gray-500`,children:`WebUI Client`})]}),(0,Y.jsx)(ep,{status:e.status,activity:e.vizActivity??0})]}),e.sublabel&&(0,Y.jsx)(`div`,{className:`text-[10px] text-gray-400 mb-2 truncate`,children:e.sublabel}),(0,Y.jsx)(`div`,{className:`flex items-center gap-2 text-[10px] text-gray-500`,children:r?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(en,{className:`h-3 w-3 text-gray-500`}),(0,Y.jsx)(`span`,{children:`Disconnected`})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(on,{className:`h-3 w-3 text-emerald-500`}),(0,Y.jsx)(`span`,{children:`Connected`})]})}),t&&(0,Y.jsx)(`div`,{className:`mt-2 h-1 rounded-full bg-blue-500/30 overflow-hidden`,children:(0,Y.jsx)(`div`,{className:`h-full bg-blue-500 animate-pulse`,style:{width:`60%`}})}),(0,Y.jsx)(rp,{data:e})]})}function ap({data:e}){let t=e.status===`active`||e.status===`streaming`,n=e.status===`error`,r=e.color||`#22c55e`;return(0,Y.jsxs)(`div`,{className:Z(`rounded-xl border-2 p-4 min-w-[180px] transition-all backdrop-blur-sm`,t&&`shadow-lg shadow-emerald-500/20`,n&&`border-red-500/50 bg-red-500/10`,!t&&!n&&`border-emerald-500/30 bg-emerald-500/10`),children:[(0,Y.jsx)(np,{}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,Y.jsx)(`div`,{className:Z(`flex items-center justify-center w-10 h-10 rounded-lg`,t?`bg-emerald-500/20`:`bg-emerald-500/10`),children:(0,Y.jsx)(hn,{className:`h-5 w-5`,style:{color:r}})}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-xs font-bold truncate`,style:{color:r},children:e.label}),(0,Y.jsx)(`div`,{className:`text-[10px] text-gray-500`,children:`TUI Client`})]}),(0,Y.jsx)(ep,{status:e.status,activity:e.vizActivity??0})]}),e.sublabel&&(0,Y.jsx)(`div`,{className:`text-[10px] text-gray-400 mb-2 truncate`,children:e.sublabel}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] text-gray-500`,children:[(0,Y.jsx)(hn,{className:`h-3 w-3 text-emerald-500`}),(0,Y.jsx)(`span`,{children:`Terminal`})]}),(0,Y.jsx)(rp,{data:e})]})}function op({data:e}){let t=e.status===`active`||e.status===`streaming`,n=e.color||`#f59e0b`;return(0,Y.jsxs)(`div`,{className:Z(`rounded-xl border-2 p-4 min-w-[160px] transition-all backdrop-blur-sm`,t&&`shadow-lg shadow-amber-500/20`,!t&&`border-amber-500/30 bg-amber-500/10`),children:[(0,Y.jsx)(np,{}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,Y.jsx)(`div`,{className:Z(`flex items-center justify-center w-10 h-10 rounded-lg`,t?`bg-amber-500/20`:`bg-amber-500/10`),children:(0,Y.jsx)(hn,{className:`h-5 w-5`,style:{color:n}})}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-xs font-bold truncate`,style:{color:n},children:e.label}),(0,Y.jsx)(`div`,{className:`text-[10px] text-gray-500`,children:`REPL`})]}),(0,Y.jsx)(ep,{status:e.status,activity:e.vizActivity??0})]}),e.sublabel&&(0,Y.jsx)(`div`,{className:`text-[10px] text-gray-400 mb-1 truncate`,children:e.sublabel}),(0,Y.jsx)(rp,{data:e})]})}function sp({data:e}){let t=e.status===`active`||e.status===`streaming`,n=e.color||`#a855f7`;return(0,Y.jsxs)(`div`,{className:`rounded-xl border-2 p-4 min-w-[200px] transition-all backdrop-blur-sm relative bg-slate-900/90`,children:[(0,Y.jsx)(np,{}),(0,Y.jsx)(`div`,{className:`absolute -top-3 left-1/2 -translate-x-1/2 px-2 py-0.5 bg-purple-600 text-white text-[9px] rounded-full font-bold`,children:`COORDINATOR`}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 mb-3 mt-2`,children:[(0,Y.jsx)(`div`,{className:Z(`flex items-center justify-center w-12 h-12 rounded-xl`,t?`bg-purple-500/20`:`bg-purple-500/10`),children:(0,Y.jsx)(k,{className:`h-6 w-6`,style:{color:n}})}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-sm font-bold truncate`,style:{color:n},children:e.label}),(0,Y.jsx)(`div`,{className:`text-[10px] text-gray-500`,children:e.sublabel||`Fleet summary`})]}),(0,Y.jsx)(ep,{status:e.status,activity:e.vizActivity??0})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-[10px] mb-2`,children:[(0,Y.jsxs)(`div`,{className:`bg-black/20 rounded p-1.5 text-center`,children:[(0,Y.jsxs)(`div`,{className:`font-mono`,children:[(0,Y.jsx)(`span`,{className:`text-emerald-400`,children:e.agentsActive||0}),(0,Y.jsx)(`span`,{className:`text-gray-500`,children:` / `}),(0,Y.jsx)(`span`,{className:`text-purple-400`,children:e.agentsTotal||0})]}),(0,Y.jsx)(`div`,{className:`text-gray-500`,children:`Agents`})]}),(0,Y.jsxs)(`div`,{className:`bg-black/20 rounded p-1.5 text-center`,children:[(0,Y.jsx)(`div`,{className:`font-mono text-yellow-400`,children:(e.toolCalls||0).toLocaleString()}),(0,Y.jsx)(`div`,{className:`text-gray-500`,children:`Tool calls`})]}),(0,Y.jsxs)(`div`,{className:`bg-black/20 rounded p-1.5 text-center`,children:[(0,Y.jsx)(`div`,{className:`font-mono text-gray-300`,children:Hf(e.tokensIn)}),(0,Y.jsx)(`div`,{className:`text-gray-500`,children:`Tokens`})]}),(0,Y.jsxs)(`div`,{className:`bg-black/20 rounded p-1.5 text-center`,children:[(0,Y.jsxs)(`div`,{className:`font-mono text-emerald-400`,children:[`$`,(e.costUsd||0).toFixed(3)]}),(0,Y.jsx)(`div`,{className:`text-gray-500`,children:`Cost`})]})]}),t&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] text-purple-400`,children:[(0,Y.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-purple-400 animate-pulse`}),`Coordinating fleet`]})]})}function cp({data:e}){let t=e.status===`active`||e.status===`streaming`,n=e.status===`error`,r=e.status===`completed`,i=e.color||`#06b6d4`,a=$f(e.ctxPct);return(0,Y.jsxs)(`div`,{className:Z(`rounded-lg border p-3 min-w-[150px] transition-all backdrop-blur-sm`,t&&`border-cyan-500/50 bg-cyan-500/10 shadow-lg shadow-cyan-500/10`,n&&`border-red-500/50 bg-red-500/10`,r&&`border-gray-500/30 bg-gray-500/5`,!t&&!n&&!r&&`border-cyan-500/30 bg-cyan-500/10`),children:[(0,Y.jsx)(np,{}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mb-1.5`,children:[(0,Y.jsx)(In,{className:`h-4 w-4 shrink-0`,style:{color:i}}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-[11px] font-bold truncate`,style:{color:i},children:e.label}),e.model&&(0,Y.jsx)(`div`,{className:`text-[8px] text-gray-500 truncate`,children:Gf(e.model)})]}),(0,Y.jsx)(ep,{status:e.status,small:!0,activity:e.vizActivity??0})]}),e.currentTask&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 text-[9px] text-cyan-300/90 truncate mb-1.5`,children:[(0,Y.jsx)(`span`,{className:Z(`w-1.5 h-1.5 rounded-full bg-cyan-400 shrink-0`,t&&`animate-pulse`)}),(0,Y.jsx)(`span`,{className:`truncate font-mono`,children:e.currentTask})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-2 gap-y-0.5 text-[9px] mb-1.5`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-gray-500`,children:`iter`}),(0,Y.jsx)(`span`,{className:`text-gray-300 font-mono`,children:e.iteration||0})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-gray-500`,children:`tools`}),(0,Y.jsx)(`span`,{className:`text-yellow-400/90 font-mono`,children:e.toolCalls||0})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-gray-500`,children:`tok`}),(0,Y.jsx)(`span`,{className:`text-gray-300 font-mono`,children:Hf((e.tokensIn||0)+(e.tokensOut||0))})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-gray-500`,children:`cost`}),(0,Y.jsxs)(`span`,{className:`text-emerald-400/90 font-mono`,children:[`$`,(e.costUsd||0).toFixed(3)]})]})]}),a>0&&(0,Y.jsxs)(`div`,{className:`mb-1`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between text-[8px] text-gray-500 mb-0.5`,children:[(0,Y.jsx)(`span`,{children:`ctx`}),(0,Y.jsxs)(`span`,{className:Z(`font-mono`,a>=90?`text-red-400`:a>=70?`text-amber-400`:`text-gray-400`),children:[a,`%`]})]}),(0,Y.jsx)(`div`,{className:`h-1 rounded-full bg-slate-700/60 overflow-hidden`,children:(0,Y.jsx)(`div`,{className:Z(`h-full`,a>=90?`bg-red-500`:a>=70?`bg-amber-500`:`bg-cyan-500`),style:{width:`${a}%`}})})]}),e.lastActivityAt&&(0,Y.jsxs)(`div`,{className:Z(`flex items-center gap-1 text-[8px]`,t?`text-gray-600`:`text-gray-500`),children:[r&&(0,Y.jsx)(`span`,{className:`text-emerald-500/70`,children:`✓ done ·`}),n&&(0,Y.jsx)(`span`,{className:`text-red-400/80`,children:`✕ failed ·`}),(0,Y.jsxs)(`span`,{children:[`seen `,Uf(e.lastActivityAt,Date.now())]})]})]})}function lp({data:e}){return(0,Y.jsxs)(`div`,{className:Z(`rounded-lg border border-dashed p-3 min-w-[120px] transition-all opacity-40`,`border-gray-600 bg-gray-800/30`),children:[(0,Y.jsx)(np,{}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,Y.jsx)(hr,{className:`h-4 w-4 text-gray-600`}),(0,Y.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,Y.jsx)(`div`,{className:`text-[10px] text-gray-500 truncate`,children:e.label})}),(0,Y.jsx)(ep,{status:e.status,small:!0,activity:e.vizActivity??0})]}),(0,Y.jsx)(`div`,{className:`text-[9px] text-gray-600`,children:`Available desk`})]})}function up({data:e}){let t=e.color||`#eab308`,n=(e.unreadCount||0)>0;return(0,Y.jsxs)(`div`,{className:Z(`rounded-xl border-2 p-4 min-w-[160px] transition-all backdrop-blur-sm`,n&&`border-yellow-500/50 bg-yellow-500/10 shadow-lg shadow-yellow-500/10`,!n&&`border-yellow-500/30 bg-yellow-500/5`),children:[(0,Y.jsx)(np,{}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 mb-3`,children:[(0,Y.jsx)(`div`,{className:Z(`flex items-center justify-center w-10 h-10 rounded-lg`,n?`bg-yellow-500/20`:`bg-yellow-500/10`),children:(0,Y.jsx)(s,{className:`h-5 w-5`,style:{color:t}})}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-xs font-bold`,style:{color:t},children:`Mailbox Hub`}),(0,Y.jsx)(`div`,{className:`text-[10px] text-gray-500`,children:n?`${e.unreadCount} unread`:`All clear`})]}),n&&(0,Y.jsx)(`div`,{className:`w-5 h-5 rounded-full bg-yellow-500 text-black text-[10px] font-bold flex items-center justify-center`,children:e.unreadCount})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-[10px]`,children:[(0,Y.jsxs)(`div`,{className:`bg-black/20 rounded p-1.5 text-center`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-center gap-1 text-yellow-400`,children:[(0,Y.jsx)(ht,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{children:e.messageCount||0})]}),(0,Y.jsx)(`div`,{className:`text-gray-500`,children:`Total`})]}),(0,Y.jsxs)(`div`,{className:`bg-black/20 rounded p-1.5 text-center`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-center gap-1 text-emerald-400`,children:[(0,Y.jsx)(B,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{children:e.unreadCount||0})]}),(0,Y.jsx)(`div`,{className:`text-gray-500`,children:`Unread`})]})]}),e.sublabel&&(0,Y.jsxs)(`div`,{className:`mt-2 truncate border-t border-white/5 pt-1.5 text-[9px] text-gray-400`,children:[`✉ `,e.sublabel]})]})}var dp={webui:ip,tui:ap,repl:op,coordinator:sp,agent:cp,mailbox:up,desk:lp},fp={wire:({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:i,targetPosition:a,data:o,selected:s})=>{let c=o?.color||`#6366f1`,l=Ea(e=>e.animateEdges),u=o?.animated&&l?Math.max(.15,o?.intensity??.6):0,[d,f,p]=kr({sourceX:e,sourceY:t,sourcePosition:i??mr.Bottom,targetX:n,targetY:r,targetPosition:a??mr.Top,curvature:.28}),m=5+u*7,h=5+u*4,g=m+h,_=`${Math.max(.5,1.6-u).toFixed(2)}s`;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`path`,{d,fill:`none`,stroke:c,strokeWidth:s?2.5:1.4,strokeOpacity:s?.9:.28,className:`react-flow__edge-path`}),u>.05&&(0,Y.jsx)(`path`,{d,fill:`none`,stroke:c,strokeWidth:2.2,strokeOpacity:.45+u*.5,strokeDasharray:`${m} ${h}`,strokeLinecap:`round`,style:{filter:`drop-shadow(0 0 ${2+u*4}px ${c})`},children:(0,Y.jsx)(`animate`,{attributeName:`stroke-dashoffset`,from:g,to:`0`,dur:_,repeatCount:`indefinite`})}),o?.label&&u>.1&&(0,Y.jsx)(jt,{children:(0,Y.jsx)(`div`,{style:{position:`absolute`,transform:`translate(-50%, -50%) translate(${f}px, ${p}px)`},className:`pointer-events-none rounded-full border border-white/15 bg-slate-800/90 px-1.5 py-0.5 text-[8px] font-medium text-white/85 backdrop-blur-sm`,children:o.label})})]})}};function pp({events:e,now:t}){let n=e.slice(0,14);return(0,Y.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 z-10 pointer-events-none px-3 pb-3`,children:(0,Y.jsxs)(`div`,{className:`pointer-events-auto rounded-lg bg-slate-900/85 border border-slate-700/70 backdrop-blur px-3 py-2 max-w-3xl mx-auto`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 mb-1.5 text-[10px] uppercase tracking-wide text-cyan-400/80`,children:[(0,Y.jsx)(Dt,{className:`h-3 w-3`}),`Live activity`]}),n.length===0?(0,Y.jsx)(`div`,{className:`text-[11px] text-gray-500 italic`,children:`Waiting for activity…`}):(0,Y.jsx)(`div`,{className:`flex flex-col gap-0.5 max-h-32 overflow-hidden`,children:n.map(e=>{let n=Math.max(0,Math.round((t-e.timestamp)/1e3));return(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] leading-tight`,children:[(0,Y.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full shrink-0`,style:{backgroundColor:Qf(e.kind)}}),(0,Y.jsx)(`span`,{className:`text-gray-300 truncate flex-1`,children:e.label}),(0,Y.jsx)(`span`,{className:`text-gray-600 shrink-0 tabular-nums`,children:n<1?`now`:`${n}s`})]},e.id)})})]})})}function mp(){let{fitView:e}=gt(),t=la(e=>e.events),n=X(e=>e.agents),r=X(e=>e.leaderId),i=ga(e=>e.liveSessions),o=xi(e=>e.messages),c=q(e=>e.session),l=(0,U.useMemo)(()=>Zf(i,n),[i,n]),u=Ea(e=>e.showHud),d=Ea(e=>e.showLegend),f=Ea(e=>e.showMinimap),p=Ea(e=>e.showControls),m=Ea(e=>e.showFeed),h=Ea(e=>e.setShowFeed),g=Ea(e=>e.background),[_,v,y]=Xt([]),[b,x,S]=tn([]),[C,w]=(0,U.useState)(null),[T,E]=(0,U.useState)(null),[D,O]=(0,U.useState)(!1),[A,j]=(0,U.useState)(``),[M,N]=(0,U.useState)(!1),[P,F]=(0,U.useState)(null),I=(0,U.useCallback)(async()=>{let e=A.trim();if(!(!e||M)){N(!0),F(null);try{let t=await fetch(`/api/fleet/broadcast`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:e})});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();j(``),F(`Delivered to ${n.delivered??0}/${n.targets??0} session(s)`)}catch(e){F(`Failed: ${e instanceof Error?e.message:String(e)}`)}finally{N(!1)}}},[A,M]),L=(0,U.useRef)(new Map),R=4e3,z=(0,U.useRef)(new Map),ee=(0,U.useRef)(new Map),te=(0,U.useRef)(new Map),ne=(0,U.useRef)(new Map),re=(0,U.useRef)(``);(0,U.useEffect)(()=>{let t=[],i=[],a=Date.now(),s=Math.max(1,...l.map(e=>e.agents.length||1)),c=Math.max(380,Math.min(3,s)*190+80),u=Kf(l.map(e=>e.id),c),d=o.filter(e=>!e.completed&&(e.readByCount??0)===0).length,f=o.length?[...o].sort((e,t)=>Date.parse(t.timestamp)-Date.parse(e.timestamp))[0]:void 0;t.push({id:`mailbox`,type:`mailbox`,position:{x:830,y:50},data:{label:`Mailbox Hub`,kind:`mailbox`,status:d>0?`active`:`idle`,unreadCount:d,messageCount:o.length,sublabel:f?`${f.from} → ${f.to}: ${f.subject}`:void 0,color:`#eab308`}});let p=0,m=0,h=0,g=0,_=0;for(let e of l)for(let t of e.agents)m+=1,(t.status===`active`||t.status===`streaming`)&&(p+=1),h+=t.toolCalls,g+=t.costUsd,_+=t.tokensIn+t.tokensOut;let y=r?n.get(r):null,b=p>0;t.push({id:`coordinator`,type:`coordinator`,position:{x:370,y:50},data:{label:`Fleet HQ`,sublabel:`${l.length} client${l.length===1?``:`s`}`,kind:`coordinator`,status:y?.status===`failed`?`error`:b?`active`:`idle`,connections:l.length,agentsActive:p,agentsTotal:m,toolCalls:h,costUsd:g,tokensIn:_,color:`#a855f7`}});let S={tui:`#22c55e`,webui:`#3b82f6`,repl:`#f59e0b`};for(let e of l){let n=u.get(e.id)??600,r=S[e.type],o=e.status===`active`;if(t.push({id:e.id,type:e.type,position:{x:n,y:370},data:{label:e.label,sublabel:e.sublabel,kind:e.type,status:e.status,sessionId:e.sessionId,pid:e.pid,branch:e.branch,workingDir:e.workingDir,startedAt:e.startedAt,agentCount:e.agents.length,color:r}}),i.push({id:`${e.id}->coordinator`,source:e.id,target:`coordinator`,type:`wire`,animated:o,data:{color:r,animated:o,label:`control`,flowType:`task`}}),i.push({id:`mailbox->${e.id}`,source:`mailbox`,target:e.id,type:`wire`,animated:d>0,data:{color:`#eab308`,animated:d>0,label:d>0?`${d}`:void 0,flowType:`mail`}}),e.agents.length===0){t.push({id:`desk-${e.id}`,type:`desk`,position:{x:n,y:640},data:{label:`Idle desk`,kind:`agent`,status:`idle`,color:`#374151`}});continue}e.agents.forEach((r,o)=>{let s=r.status===`active`||r.status===`streaming`,c=ne.current.get(r.serverId);if(c&&(r.toolCalls>c.toolCalls||r.iteration>c.iteration)||s){L.current.set(r.officeId,a+R);let t=ee.current.get(r.officeId)??0;ee.current.set(r.officeId,Math.min(1,t+(1-t)*.5));for(let t of[`${e.id}->${r.officeId}`,`${e.id}->coordinator`]){let e=z.current.get(t)??0;z.current.set(t,Math.min(1,e+.5))}}ne.current.set(r.serverId,{toolCalls:r.toolCalls,iteration:r.iteration}),t.push({id:r.officeId,type:`agent`,position:qf(n,o,e.agents.length),data:{label:r.name,kind:`agent`,status:r.status,sessionId:e.sessionId,currentTask:r.currentTask,iteration:r.iteration,toolCalls:r.toolCalls,costUsd:r.costUsd,tokensIn:r.tokensIn,tokensOut:r.tokensOut,ctxPct:r.ctxPct,model:r.model,lastActivityAt:r.lastActivityAt,color:`#06b6d4`}}),i.push({id:`${e.id}->${r.officeId}`,source:e.id,target:r.officeId,type:`wire`,animated:s,data:{color:`#06b6d4`,animated:s,label:s?r.currentTask??`task`:void 0,flowType:`task`}})})}let C=new Set(l.flatMap(e=>e.agents.map(e=>e.serverId)));for(let e of[...ne.current.keys()])C.has(e)||ne.current.delete(e);let w=t.map(e=>{let t=L.current.get(e.id),n=ee.current.get(e.id)??0;return t&&t>a&&e.data.status!==`error`&&e.data.status!==`offline`?{...e,data:{...e.data,status:`active`,vizActivity:n}}:{...e,data:{...e.data,vizActivity:n}}}),T=i.map(e=>{let t=z.current.get(e.id)??0;return t>.05?{...e,animated:!0,data:{...e.data,animated:!0,intensity:t}}:e}),E=new Map;for(let e of w)E.set(e.id,{...e.position});te.current=E,v(w),x(T);let D=w.map(e=>e.id).sort().join(`|`);if(D!==re.current){re.current=D;let t=setTimeout(()=>e({padding:.2,duration:300}),50);return()=>clearTimeout(t)}},[l,r,n,o,c,R,v,x,e]);let B=l.flatMap(e=>e.agents.map(t=>({clientId:e.id,clientType:e.type,officeId:t.officeId,serverId:t.serverId}))),V=l.map(e=>e.id),ie=new Map;for(let e of B)(!ie.has(e.serverId)||e.clientType===`webui`)&&ie.set(e.serverId,e.officeId);function ae(e){return ie.get(e)??`agent-${e}`}function oe(e){let t=e.split(`__agent-`)[0];return t&&t!==e?`${t}->${e}`:`coordinator->${e}`}function se(e){switch(e.kind){case`mailbox:send`:case`mailbox:deliver`:return{nodes:[`mailbox`],edges:e.kind===`mailbox:send`?V.map(e=>`mailbox->${e}`):[],status:`active`};case`agent:spawned`:{let t=ae(e.source);return{nodes:[`coordinator`,t],edges:[oe(t)],status:`active`}}case`agent:tool`:case`tool:started`:case`tool:progress`:{let t=ae(e.source);return{nodes:[`coordinator`,t],edges:[oe(t)],status:e.kind===`tool:progress`||e.kind===`tool:started`?`streaming`:`active`}}case`tool:executed`:{let t=ae(e.target??e.source);return{nodes:[t],edges:[oe(t)],status:`active`}}case`provider:call`:case`provider:delta`:case`provider:response`:return{nodes:[`coordinator`],edges:[],status:e.kind===`provider:delta`?`streaming`:`active`};case`iteration:start`:case`iteration:end`:return{nodes:[`coordinator`],edges:B.map(e=>oe(e.officeId)),status:e.kind===`iteration:start`?`streaming`:`active`};case`agent:text`:{let t=ae(e.source);return{nodes:[t],edges:[oe(t)],status:`streaming`}}case`agent:status`:{let t=ae(e.source);return{nodes:[`coordinator`,t],edges:[oe(t)],status:e.data&&typeof e.data==`object`&&`status`in e.data&&String(e.data.status)===`failed`?`error`:`completed`}}case`agent:ctx`:return{nodes:[ae(e.source)],edges:[],status:`active`};case`budget:extended`:return{nodes:[`coordinator`,ae(e.source)],edges:[],status:`active`};case`context:compacted`:case`context:repaired`:return{nodes:[`coordinator`],edges:[],status:`active`};case`error`:return{nodes:e.source?[ae(e.source)]:[],edges:[],status:`error`};case`cost:update`:return{nodes:[`coordinator`],edges:[],status:`active`};case`fleet:snapshot`:{let t=e.data?.sessions??[],n=[`coordinator`];for(let e of t)if(e.agents)for(let t of e.agents){let e=ae(t.id);n.includes(e)||n.push(e)}return{nodes:n,edges:[],status:`active`}}default:return{nodes:[],edges:[],status:`idle`}}}(0,U.useEffect)(()=>{if(t.length===0)return;let e=t[0];if(!e)return;let{nodes:n,edges:r,status:i}=se(e),a=Date.now();n.length>0&&(n.forEach(e=>{L.current.set(e,a+R);let t=ee.current.get(e)??0;ee.current.set(e,Math.min(1,t+(1-t)*.5))}),v(e=>e.map(e=>n.includes(e.id)?{...e,data:{...e.data,status:i,vizActivity:ee.current.get(e.id)??0}}:e))),r.length>0&&(r.forEach(e=>{let t=z.current.get(e)??0;z.current.set(e,Math.min(1,t+.5))}),x(e=>e.map(e=>r.includes(e.id)?{...e,animated:!0,data:{...e.data,animated:!0,intensity:z.current.get(e.id)??1}}:e)))},[t,v,x,R,n]),(0,U.useEffect)(()=>{let e=setInterval(()=>{for(let[e,t]of z.current){let n=t*.85;n<.05?(z.current.delete(e),x(t=>t.map(t=>t.id===e?{...t,animated:!1,data:{...t.data,animated:!1}}:t))):(z.current.set(e,n),x(t=>t.map(t=>t.id===e?{...t,data:{...t.data,intensity:n}}:t)))}for(let[e,t]of ee.current){let n=t*.9;n<.03?(ee.current.delete(e),v(t=>t.map(t=>t.id===e?{...t,data:{...t.data,vizActivity:0}}:t))):(ee.current.set(e,n),v(t=>t.map(t=>t.id===e?{...t,data:{...t.data,vizActivity:n}}:t)))}},1e3);return()=>clearInterval(e)},[x,v]);let ce=(0,U.useCallback)(e=>x(t=>Bn({...e,type:`wire`},t)),[x]),le=(0,U.useCallback)((e,t)=>{w(t)},[]),ue=(0,U.useCallback)(()=>{w(null)},[]);(0,U.useEffect)(()=>{if(!T)return;let e=e=>{e.key===`Escape`&&E(null)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[T]);let de=(0,U.useCallback)(()=>{v(e=>e.map(e=>{let t=te.current.get(e.id);return t?{...e,position:{...t}}:e})),setTimeout(()=>e({padding:.2,duration:300}),50)},[v,e]),[,fe]=(0,U.useState)(0);return(0,U.useEffect)(()=>{let e=setInterval(()=>fe(e=>e+1),2e3);return()=>clearInterval(e)},[]),(0,Y.jsxs)(`div`,{className:`w-full h-full bg-gradient-to-br from-slate-900 via-slate-800 to-slate-900 relative overflow-hidden`,children:[(0,Y.jsx)(`div`,{className:`absolute inset-0 opacity-[0.03]`,style:{backgroundImage:`
132
+ linear-gradient(rgba(255,255,255,0.1) 1px, transparent 1px),
133
+ linear-gradient(90deg, rgba(255,255,255,0.1) 1px, transparent 1px)
134
+ `,backgroundSize:`40px 40px`}}),u&&(0,Y.jsx)(tp,{}),(0,Y.jsx)(`div`,{className:`absolute top-3 left-1/2 -translate-x-1/2 z-10`,children:(0,Y.jsx)(`div`,{className:`bg-slate-800/90 backdrop-blur px-4 py-2 rounded-lg border border-slate-700 shadow-xl`,children:(0,Y.jsxs)(`div`,{className:`text-xs font-bold text-slate-300 flex items-center gap-2`,children:[(0,Y.jsx)(cn,{className:`h-4 w-4 text-purple-400`}),`WrongStack Fleet HQ`,(0,Y.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-emerald-500 animate-pulse ml-2`}),(0,Y.jsx)(`span`,{className:`text-[10px] text-gray-400 font-normal`,children:`LIVE`})]})})}),d&&(0,Y.jsxs)(`div`,{className:`absolute bottom-4 left-4 z-10 bg-slate-800/90 backdrop-blur rounded-lg border border-slate-700 p-3 text-[10px]`,children:[(0,Y.jsx)(`div`,{className:`font-bold text-gray-300 mb-2`,children:`Status`}),(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-emerald-500 animate-pulse`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Active`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-gray-500`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Idle`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`w-2 h-2 rounded-full bg-red-500 animate-pulse`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Error`})]})]})]}),d&&(0,Y.jsxs)(`div`,{className:`absolute bottom-4 right-4 z-10 bg-slate-800/90 backdrop-blur rounded-lg border border-slate-700 p-3 text-[10px]`,children:[(0,Y.jsx)(`div`,{className:`font-bold text-gray-300 mb-2`,children:`Connections`}),(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-yellow-400`,children:`✉`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Mail`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-purple-400`,children:`→`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Task`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-emerald-400`,children:`●`}),(0,Y.jsx)(`span`,{className:`text-gray-400`,children:`Status`})]})]})]}),(0,Y.jsxs)(Tn,{nodes:_,edges:b,onNodesChange:y,onEdgesChange:S,onConnect:ce,onNodeClick:le,onPaneClick:ue,nodeTypes:dp,edgeTypes:fp,fitView:!0,fitViewOptions:{padding:.2},minZoom:.3,maxZoom:1.5,defaultEdgeOptions:{type:`wire`},proOptions:{hideAttribution:!0},children:[(0,Y.jsxs)(It,{position:`top-right`,className:`flex items-center gap-2`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:de,title:`Snap nodes back to the floor plan`,className:`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md bg-slate-800/90 border border-slate-700 text-xs text-slate-200 hover:bg-slate-700 transition-colors`,children:[(0,Y.jsx)(Ze,{className:`h-3.5 w-3.5`}),`Arrange`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>h(!m),title:`Toggle the live activity feed`,className:Z(`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md border text-xs transition-colors`,m?`bg-cyan-500/20 border-cyan-500/40 text-cyan-300`:`bg-slate-800/90 border-slate-700 text-slate-300 hover:bg-slate-700`),children:[(0,Y.jsx)(a,{className:`h-3.5 w-3.5`}),`Feed`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>O(e=>!e),title:`Broadcast a message to every live session in this project`,className:Z(`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md border text-xs transition-colors`,D?`bg-amber-500/20 border-amber-500/40 text-amber-300`:`bg-slate-800/90 border-slate-700 text-slate-300 hover:bg-slate-700`),children:[(0,Y.jsx)(ht,{className:`h-3.5 w-3.5`}),`Broadcast`]})]}),g!==`none`&&(0,Y.jsx)(xt,{variant:g===`lines`?Fn.Lines:g===`cross`?Fn.Cross:Fn.Dots,gap:20,size:1,color:`rgba(255,255,255,0.05)`}),p&&(0,Y.jsx)($n,{className:`bg-slate-800 border border-slate-700 rounded-lg [&>button]:bg-slate-700 [&>button]:text-slate-200`}),f&&(0,Y.jsx)(lr,{className:`bg-slate-800/90 border border-slate-700 rounded-lg`,nodeColor:e=>{switch(e.data.kind){case`coordinator`:return`#a855f7`;case`webui`:return`#3b82f6`;case`tui`:return`#22c55e`;case`repl`:return`#f59e0b`;case`mailbox`:return`#eab308`;case`agent`:return`#06b6d4`;default:return`#6366f1`}},maskColor:`rgba(0,0,0,0.8)`})]}),m&&(0,Y.jsx)(pp,{events:t,now:Date.now()}),D&&(0,Y.jsxs)(`div`,{className:`absolute top-16 right-4 z-30 w-80 rounded-lg border border-amber-500/40 bg-slate-900/97 p-3 shadow-2xl backdrop-blur`,children:[(0,Y.jsxs)(`div`,{className:`mb-1.5 flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[11px] font-semibold text-amber-300`,children:[(0,Y.jsx)(ht,{className:`h-3.5 w-3.5`}),` Broadcast to all sessions`]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>O(!1),className:`text-gray-400 hover:text-white text-base leading-none`,children:`×`})]}),(0,Y.jsx)(`textarea`,{value:A,onChange:e=>j(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),I())},rows:3,placeholder:`Message every live agent in this project…`,className:`w-full resize-none rounded-md border border-slate-700 bg-slate-900/70 px-2 py-1 text-[11px] text-gray-200 placeholder:text-gray-600 focus:border-amber-500/50 focus:outline-none`}),(0,Y.jsxs)(`div`,{className:`mt-1.5 flex items-center justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-[9px] text-gray-600`,children:`⌘/Ctrl+Enter to send`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>void I(),disabled:M||!A.trim(),className:`rounded-md border border-amber-500/40 bg-amber-500/20 px-2.5 py-1 text-[11px] text-amber-200 transition-colors hover:bg-amber-500/30 disabled:cursor-not-allowed disabled:opacity-40`,children:M?`…`:`Broadcast`})]}),P&&(0,Y.jsx)(`div`,{className:`mt-1 text-[10px] text-gray-400`,children:P})]}),C&&(0,Y.jsxs)(`div`,{className:Z(`absolute top-20 right-4 bg-background border border-border rounded-lg p-4 shadow-xl z-20`,C.data.sessionId?`w-80`:`w-64`),children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[C.data.kind===`webui`&&(0,Y.jsx)(xr,{className:`h-4 w-4 text-blue-500`}),C.data.kind===`tui`&&(0,Y.jsx)(hn,{className:`h-4 w-4 text-emerald-500`}),C.data.kind===`coordinator`&&(0,Y.jsx)(k,{className:`h-4 w-4 text-purple-500`}),C.data.kind===`agent`&&(0,Y.jsx)(In,{className:`h-4 w-4 text-cyan-500`}),C.data.kind===`mailbox`&&(0,Y.jsx)(s,{className:`h-4 w-4 text-yellow-500`}),(0,Y.jsx)(`span`,{className:`text-sm font-bold text-foreground`,children:C.data.label})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[C.data.sessionId&&(0,Y.jsx)(`button`,{type:`button`,title:`Open full operation view`,onClick:()=>E({sessionId:C.data.sessionId,label:C.data.label}),className:`text-muted-foreground hover:text-primary`,children:(0,Y.jsx)(_n,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(`button`,{onClick:ue,className:`text-muted-foreground hover:text-foreground text-lg leading-none`,children:`×`})]})]}),(()=>{let e=C.data,t=Date.now(),n=({k:e,v:t,accent:n})=>(0,Y.jsxs)(`div`,{className:`flex justify-between gap-3`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground shrink-0`,children:e}),(0,Y.jsx)(`span`,{className:Z(`font-mono truncate text-right`,n??`text-foreground/80`),children:t})]}),r=e.kind===`agent`,i=e.kind===`webui`||e.kind===`tui`||e.kind===`repl`,a=(e.tokensIn||0)+(e.tokensOut||0),s=$f(e.ctxPct);return(0,Y.jsxs)(`div`,{className:`space-y-1.5 text-xs`,children:[(0,Y.jsx)(n,{k:`Status`,v:String(e.status).toUpperCase(),accent:Z(e.status===`active`&&`text-emerald-600 dark:text-emerald-400`,e.status===`streaming`&&`text-blue-600 dark:text-blue-400`,e.status===`error`&&`text-destructive`,e.status===`idle`&&`text-muted-foreground`,e.status===`offline`&&`text-muted-foreground/50`)}),r&&(0,Y.jsxs)(Y.Fragment,{children:[e.model&&(0,Y.jsx)(n,{k:`Model`,v:Gf(e.model),accent:`text-cyan-600 dark:text-cyan-400`}),e.currentTask&&(0,Y.jsx)(n,{k:`Tool`,v:e.currentTask,accent:`text-cyan-600 dark:text-cyan-400`}),(0,Y.jsx)(n,{k:`Iterations`,v:e.iteration||0,accent:`text-cyan-600 dark:text-cyan-400`}),(0,Y.jsx)(n,{k:`Tool calls`,v:e.toolCalls||0,accent:`text-amber-600 dark:text-amber-400`}),(0,Y.jsx)(n,{k:`Tokens in`,v:Hf(e.tokensIn)}),(0,Y.jsx)(n,{k:`Tokens out`,v:Hf(e.tokensOut)}),(0,Y.jsx)(n,{k:`Tokens total`,v:Hf(a)}),s>0&&(0,Y.jsx)(n,{k:`Context`,v:`${s}%`,accent:s>=90?`text-destructive`:s>=70?`text-amber-600 dark:text-amber-400`:`text-foreground/70`}),(0,Y.jsx)(n,{k:`Cost`,v:`$${(e.costUsd||0).toFixed(4)}`,accent:`text-emerald-600 dark:text-emerald-400`}),e.lastActivityAt&&(0,Y.jsx)(n,{k:`Last seen`,v:Uf(e.lastActivityAt,t),accent:`text-muted-foreground`})]}),i&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(n,{k:`Surface`,v:Yf(e.kind),accent:`text-foreground/80`}),e.branch&&(0,Y.jsx)(n,{k:`Branch`,v:`⎇ ${e.branch}`,accent:`text-foreground/70`}),e.pid!=null&&(0,Y.jsx)(n,{k:`PID`,v:e.pid}),e.workingDir&&(0,Y.jsx)(n,{k:`Dir`,v:e.workingDir,accent:`text-muted-foreground`}),(0,Y.jsx)(n,{k:`Agents`,v:e.agentCount??0,accent:`text-cyan-600 dark:text-cyan-400`}),e.startedAt&&(0,Y.jsx)(n,{k:`Uptime`,v:Wf(e.startedAt,t),accent:`text-foreground/70`})]}),e.kind===`mailbox`&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(n,{k:`Total messages`,v:e.messageCount||0,accent:`text-amber-600 dark:text-amber-400`}),(0,Y.jsx)(n,{k:`Unread`,v:e.unreadCount||0,accent:`text-amber-600 dark:text-amber-400`}),o.length>0&&(0,Y.jsxs)(`div`,{className:`mt-1 space-y-1 border-t border-border pt-2`,children:[(0,Y.jsx)(`div`,{className:`text-[10px] uppercase tracking-wide text-muted-foreground`,children:`Recent`}),[...o].sort((e,t)=>Date.parse(t.timestamp)-Date.parse(e.timestamp)).slice(0,6).map(e=>(0,Y.jsxs)(`div`,{className:`flex items-start gap-1.5 text-[10px]`,children:[(0,Y.jsx)(`span`,{className:Z(`mt-1 h-1.5 w-1.5 shrink-0 rounded-full`,!e.completed&&(e.readByCount??0)===0?`bg-amber-500`:e.completed?`bg-emerald-500`:`bg-muted`)}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`truncate text-foreground/80`,children:e.subject||`(no subject)`}),(0,Y.jsxs)(`div`,{className:`truncate font-mono text-[9px] text-muted-foreground`,children:[e.from,` → `,e.to,` · `,Uf(e.timestamp,t)]})]})]},e.id))]})]}),e.kind===`coordinator`&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(n,{k:`Connections`,v:e.connections||0,accent:`text-purple-600 dark:text-purple-400`}),(0,Y.jsx)(n,{k:`Iterations`,v:e.iteration||0,accent:`text-purple-600 dark:text-purple-400`})]}),(r||i)&&e.sessionId&&(0,Y.jsx)(`div`,{className:`mt-2 border-t border-border pt-2 h-72`,children:(0,Y.jsx)(Vf,{sessionId:e.sessionId})})]})})()]}),T&&(0,Y.jsxs)(`div`,{className:`absolute inset-y-0 right-0 z-30 flex w-[min(680px,92%)] flex-col border-l border-border bg-background shadow-2xl`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border px-4 py-2.5 shrink-0 bg-card`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,Y.jsx)(In,{className:`h-4 w-4 text-primary shrink-0`}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`truncate text-sm font-bold text-foreground`,children:T.label}),(0,Y.jsx)(`div`,{className:`text-[10px] uppercase tracking-wide text-muted-foreground`,children:`Full operation stream`})]})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>E(null),title:`Close (Esc)`,className:`text-muted-foreground hover:text-foreground text-xl leading-none shrink-0`,children:`×`})]}),(0,Y.jsx)(`div`,{className:`flex-1 min-h-0 p-4`,children:(0,Y.jsx)(Vf,{sessionId:T.sessionId,limit:500})})]})]})}function hp(){return(0,Y.jsx)(Gt,{children:(0,Y.jsx)(mp,{})})}var gp={btw:{label:`btw`,title:`By-the-way — sent as follow-up without interrupting the running agent`,tone:`bg-sky-500/10 text-sky-700 dark:text-sky-300 border-sky-500/30`},steer:{label:`steer`,title:`Steer — interrupts the running agent and redirects it with this message`,tone:`bg-amber-500/10 text-amber-700 dark:text-amber-300 border-amber-500/30`},queue:{label:`queue`,title:`Queued — held until the current agent run completes, then sent in order`,tone:`bg-indigo-500/10 text-indigo-700 dark:text-indigo-300 border-indigo-500/30`}};function _p({open:e,onClose:t,className:n}){let r=G(e=>e.queue),i=G(e=>e.removeQueued),a=G(e=>e.clearQueue),[o,s]=(0,U.useState)(`oldest`),c=(0,U.useCallback)(e=>{i(e)},[i]),l=(0,U.useMemo)(()=>{let e=r.map((e,t)=>({item:e,sourceIdx:t}));return e.sort((e,t)=>o===`newest`?t.item.addedAt-e.item.addedAt:e.item.addedAt-t.item.addedAt),e},[r,o]);return e?(0,Y.jsx)(`div`,{className:Z(`fixed inset-0 z-50 flex items-start justify-center pt-[10vh] bg-black/40 backdrop-blur-sm`,n),onClick:e=>{e.target===e.currentTarget&&t()},children:(0,Y.jsxs)(`div`,{className:`w-full max-w-lg rounded-xl border bg-card shadow-2xl max-h-[70vh] flex flex-col animate-in fade-in zoom-in-95`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-b shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,Y.jsx)(`span`,{className:`flex items-center justify-center w-8 h-8 rounded-lg bg-indigo-500/10 text-indigo-600 dark:text-indigo-400`,children:(0,Y.jsx)(Pe,{className:`h-4 w-4`})}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Message Queue`}),(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums`,children:[r.length,` queued · messages sent before the agent finishes`]})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>s(e=>e===`newest`?`oldest`:`newest`),className:Z(`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs transition-colors font-medium`,`text-muted-foreground hover:bg-muted hover:text-foreground`),title:o===`newest`?`Sorted newest first — click to sort oldest first`:`Sorted oldest first — click to sort newest first`,"data-testid":`queue-sort-toggle`,children:[o===`newest`?(0,Y.jsx)(_t,{className:`h-3 w-3`}):(0,Y.jsx)(Kt,{className:`h-3 w-3`}),o===`newest`?`Newest`:`Oldest`]}),r.length>0&&(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>a(),className:`flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs text-destructive hover:bg-destructive/10 transition-colors font-medium`,title:`Clear all queued messages`,"data-testid":`queue-clear-all`,children:[(0,Y.jsx)(yn,{className:`h-3 w-3`}),`Clear`]}),(0,Y.jsx)(`button`,{type:`button`,onClick:t,className:`p-1.5 rounded-md hover:bg-muted transition-colors`,title:`Close`,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:r.length===0?(0,Y.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16 gap-3 text-muted-foreground`,children:[(0,Y.jsx)(Pe,{className:`h-10 w-10 opacity-15`}),(0,Y.jsx)(`p`,{className:`text-sm font-medium`,children:`Queue is empty`}),(0,Y.jsxs)(`p`,{className:`text-xs text-center max-w-xs`,children:[`Use the `,(0,Y.jsx)(`span`,{className:`font-mono`,children:`btw`}),` /`,` `,(0,Y.jsx)(`span`,{className:`font-mono`,children:`steer`}),` /`,` `,(0,Y.jsx)(`span`,{className:`font-mono`,children:`add queue`}),` buttons beside the input to add messages. Queued items are sent in order when the current agent run completes.`]})]}):(0,Y.jsx)(`ul`,{className:`divide-y`,"data-testid":`queue-list`,children:l.map(({item:e,sourceIdx:t},n)=>{let r=gp[e.mode];return(0,Y.jsxs)(`li`,{className:`flex items-start justify-between px-4 py-3 text-xs hover:bg-muted/30 transition-colors gap-3`,"data-testid":`queue-item`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start gap-3 min-w-0 flex-1`,children:[(0,Y.jsxs)(`span`,{className:`mt-1 text-[10px] font-mono text-muted-foreground shrink-0 w-5 text-right tabular-nums`,children:[n+1,`.`]}),(0,Y.jsx)(`span`,{className:Z(`shrink-0 inline-flex items-center justify-center text-[10px] font-semibold uppercase tracking-wider px-1.5 py-0.5 rounded border`,r.tone),title:r.title,"data-testid":`queue-mode-${e.mode}`,children:r.label}),(0,Y.jsx)(`p`,{className:`text-sm text-foreground leading-relaxed min-w-0 break-words`,children:e.text.length>120?`${e.text.slice(0,117)}…`:e.text})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>c(t),className:`ml-1 p-1.5 rounded-md shrink-0 hover:bg-destructive/10 hover:text-destructive transition-colors`,title:`Remove from queue`,"data-testid":`queue-remove-${t}`,children:(0,Y.jsx)(H,{className:`h-3.5 w-3.5`})})]},`${e.addedAt}-${t}`)})})}),r.length>0&&(0,Y.jsx)(`div`,{className:`px-4 py-2.5 border-t shrink-0`,children:(0,Y.jsx)(`p`,{className:`text-[10px] text-muted-foreground text-center`,children:`Messages are sent in arrival order when the current agent run completes. Use the sort toggle to view newest-first.`})})]})}):null}function vp(e,t,n,r,i){let a=[];for(let n of e){let e=t[n.id]??[];for(let t of e)a.push({provider:n.id,model:t.id,modelName:t.name||t.id,contextWindow:t.contextWindow,isCurrent:n.id===r&&t.id===i})}let o=n.toLowerCase().trim();return(o?a.filter(e=>e.provider.toLowerCase().includes(o)||e.model.toLowerCase().includes(o)||e.modelName.toLowerCase().includes(o)):a).sort((e,t)=>e.isCurrent===t.isCurrent?e.provider.localeCompare(t.provider)||e.model.localeCompare(t.model):e.isCurrent?-1:1)}function yp(){let e=J(e=>e.modelSwitcherOpen),t=J(e=>e.setModelSwitcherOpen),[n,r]=(0,U.useState)(``),[i,a]=(0,U.useState)(0),[o,s]=(0,U.useState)([]),[c,l]=(0,U.useState)({}),u=(0,U.useRef)(null),d=K(e=>e.wsUrl),f=K(e=>e.provider),p=K(e=>e.model),m=J(e=>e.paletteOpen),{listSavedProviders:h,listProviderModels:g,switchModel:_}=Vs();(0,U.useEffect)(()=>{let n=n=>{if((n.ctrlKey||n.metaKey)&&n.key.toLowerCase()===`m`&&!n.shiftKey&&!n.altKey){if(m)return;n.preventDefault(),t(!e);return}n.key===`Escape`&&e&&(n.preventDefault(),t(!1))};return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e,m]),(0,U.useEffect)(()=>{let e=W(d),t=e.on(`providers.saved`,e=>{let t=e.payload;s(t.providers??[])}),n=e.on(`provider.models`,e=>{let t=e.payload;l(e=>({...e,[t.provider]:t.models}))});return()=>{t(),n()}},[d]),(0,U.useEffect)(()=>{e&&(r(``),a(0),h(),requestAnimationFrame(()=>u.current?.focus()))},[e,h]),(0,U.useEffect)(()=>{if(e)for(let e of o)c[e.id]||g(e.id)},[e,o,c,g]);let v=(0,U.useMemo)(()=>vp(o,c,n,f,p),[o,c,n,f,p]);(0,U.useEffect)(()=>{i>=v.length&&a(0)},[v.length,i]);let y=e=>{let n=v[e];n&&(_(n.provider,n.model),t(!1))};return e?(0,Y.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-start justify-center bg-background/60 backdrop-blur-sm pt-[15vh]`,onClick:e=>{e.target===e.currentTarget&&t(!1)},onKeyDown:e=>{e.key===`Escape`&&t(!1)},children:(0,Y.jsxs)(`div`,{className:`w-full max-w-xl rounded-xl border bg-popover shadow-2xl overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 border-b px-3 py-2`,children:[(0,Y.jsx)(Me,{className:`h-4 w-4 text-muted-foreground`}),(0,Y.jsx)(`input`,{ref:u,value:n,onChange:e=>{r(e.target.value),a(0)},onKeyDown:e=>{e.key===`ArrowDown`?(e.preventDefault(),a(e=>Math.min(v.length-1,e+1))):e.key===`ArrowUp`?(e.preventDefault(),a(e=>Math.max(0,e-1))):e.key===`Enter`?(e.preventDefault(),y(i)):e.key===`Escape`&&(e.preventDefault(),t(!1))},placeholder:`Filter providers and models…`,className:`flex-1 bg-transparent outline-none text-sm placeholder:text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground font-mono`,children:`↑↓ · Enter · Esc`})]}),(0,Y.jsx)(`div`,{className:`max-h-[50vh] overflow-y-auto py-1`,children:v.length===0?(0,Y.jsx)(`div`,{className:`px-4 py-8 text-center text-sm text-muted-foreground`,children:o.length===0?`No saved providers — register a key in Settings first.`:`Loading models…`}):v.map((e,t)=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>y(t),onMouseEnter:()=>a(t),className:Z(`w-full flex items-center gap-3 px-3 py-2 text-left text-sm transition-colors`,t===i?`bg-accent text-accent-foreground`:`hover:bg-accent/40`,e.isCurrent&&`font-medium`),children:[(0,Y.jsx)(k,{className:Z(`h-4 w-4 shrink-0`,e.isCurrent?`text-primary`:`text-muted-foreground`)}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`truncate`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:e.provider}),(0,Y.jsx)(`span`,{className:`mx-1 text-muted-foreground/40`,children:`·`}),(0,Y.jsx)(`span`,{children:e.modelName})]}),e.contextWindow&&(0,Y.jsxs)(`div`,{className:`text-[10px] text-muted-foreground font-mono`,children:[e.model,` · ctx `,e.contextWindow.toLocaleString()]})]}),e.isCurrent?(0,Y.jsx)(`span`,{className:`text-[10px] uppercase tracking-wide text-primary font-semibold`,children:`active`}):(0,Y.jsx)(Vn,{className:`h-3.5 w-3.5 text-muted-foreground opacity-0 group-hover:opacity-100`})]},`${e.provider}:${e.model}`))})]})}):null}function bp(){let e=q(e=>e.session),t=q.getState().session?.id,n=q(e=>e.projectName),r=q(e=>e.cwd),i=q(e=>e.mode),a=q(e=>e.contextMode),o=q(e=>e.lastVisitedAt),s=G(e=>e.messages),c=G(e=>e.queue.length),l=G(e=>e.boundSessionId),u=J(e=>e.currentView),d=J(e=>e.dockSection),[f,p]=(0,U.useState)([]),m=(0,U.useMemo)(()=>{if(typeof window>`u`)return 0;let e=0;for(let t of[`wrongstack-session`,`wrongstack-chat`,`wrongstack-ui`,`wrongstack-config`]){let n=window.localStorage.getItem(t);typeof n==`string`&&(e+=n.length)}return e},[s.length]),h=typeof window<`u`&&!!window.__wrongstackSessionRehydrated,g=typeof window<`u`&&!!window.__wrongstackChatRehydrated;function _(e,t){p(n=>[{ts:Date.now(),note:e,ok:t},...n].slice(0,20))}function v(){_(`simulated F5: re-running persist rehydrate`,!0)}let y=l!==null&&t!==void 0?l!==t:!1;return(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto bg-background p-6`,children:(0,Y.jsxs)(`div`,{className:`max-w-5xl mx-auto space-y-6`,children:[(0,Y.jsxs)(`header`,{className:`flex items-start justify-between`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`h1`,{className:`text-2xl font-bold flex items-center gap-2`,children:[(0,Y.jsx)(Mn,{className:`w-7 h-7 text-primary`}),`F5 Resilience Verifier`]}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1`,children:`Confirms the latest active session, transcript, and UI state survive a page refresh. Open this view, then press F5 — every green row should remain green.`})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:v,className:`px-3 py-1.5 bg-primary text-primary-foreground rounded-lg text-sm font-medium hover:opacity-90`,children:`Record probe`})]}),(0,Y.jsxs)(`section`,{className:`space-y-3`,children:[(0,Y.jsxs)(`h2`,{className:`text-lg font-semibold flex items-center gap-2`,children:[(0,Y.jsx)(Dt,{className:`w-5 h-5`}),`Latest active session`]}),(0,Y.jsx)(xp,{label:`Restored from localStorage`,ok:h,extra:t?`session id: ${t}`:`no session has been started yet`}),(0,Y.jsx)(xp,{label:`Active session pointer`,ok:!!e?.id,extra:e?Cp(e):`null`}),(0,Y.jsx)(xp,{label:`lastVisitedAt timestamp`,ok:o>0,extra:o>0?new Date(o).toISOString():`never`})]}),(0,Y.jsxs)(`section`,{className:`space-y-3`,children:[(0,Y.jsxs)(`h2`,{className:`text-lg font-semibold flex items-center gap-2`,children:[(0,Y.jsx)(he,{className:`w-5 h-5`}),`Persisted environment`]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,Y.jsx)(Sp,{label:`projectName`,value:n||`∅`}),(0,Y.jsx)(Sp,{label:`cwd`,value:r||`∅`,mono:!0}),(0,Y.jsx)(Sp,{label:`mode`,value:i,mono:!0}),(0,Y.jsx)(Sp,{label:`contextMode`,value:a,mono:!0})]})]}),(0,Y.jsxs)(`section`,{className:`space-y-3`,children:[(0,Y.jsxs)(`h2`,{className:`text-lg font-semibold flex items-center gap-2`,children:[(0,Y.jsx)(lt,{className:`w-5 h-5`}),`Chat transcript rehydration`]}),(0,Y.jsx)(xp,{label:`Local transcript recovered`,ok:g&&(s.length>0||l===null),extra:s.length===0?`0 messages`:`${s.length} messages, ${c} queued`}),(0,Y.jsx)(xp,{label:`No cross-session bleed`,ok:!y,extra:y?`bound=${l??`∅`} vs active=${t??`∅`}`:`transcript binds to the active session`,warn:y}),s.length>0&&(0,Y.jsxs)(`div`,{className:`border rounded-lg p-3 bg-muted/40 text-xs font-mono space-y-1`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`first:`}),` `,wp(s[0])]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`last:`}),` `,wp(s[s.length-1]??s[0])]})]})]}),(0,Y.jsxs)(`section`,{className:`space-y-3`,children:[(0,Y.jsxs)(`h2`,{className:`text-lg font-semibold flex items-center gap-2`,children:[(0,Y.jsx)(st,{className:`w-5 h-5`}),`UI workspace`]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:[(0,Y.jsx)(Sp,{label:`currentView`,value:u,mono:!0}),(0,Y.jsx)(Sp,{label:`dockSection`,value:d??`(none)`,mono:!0})]}),(0,Y.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`localStorage payload (4 keys): `,m,` chars`]})]}),(0,Y.jsxs)(`section`,{className:`space-y-2`,children:[(0,Y.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Probe log`}),f.length===0?(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No probes yet — press the "Record probe" button at the top, or press F5 in this view, to record a rehydration check.`}):(0,Y.jsx)(`ul`,{className:`space-y-1 text-xs font-mono`,children:f.map((e,t)=>(0,Y.jsxs)(`li`,{className:`flex items-center gap-2`,children:[e.ok?(0,Y.jsx)(V,{className:`w-4 h-4 text-green-500 shrink-0`}):(0,Y.jsx)(E,{className:`w-4 h-4 text-amber-500 shrink-0`}),(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:new Date(e.ts).toLocaleTimeString()}),(0,Y.jsx)(`span`,{children:e.note})]},`${e.ts}-${t}`))})]})]})})}function xp({label:e,extra:t,ok:n,warn:r}){return(0,Y.jsxs)(`div`,{className:`border rounded-lg px-3 py-2 ${r?`border-amber-500/40 bg-amber-500/10 text-amber-700 dark:text-amber-300`:n?`border-green-500/40 bg-green-500/10 text-green-700 dark:text-green-300`:`border-border bg-muted/40 text-muted-foreground`}`,children:[(0,Y.jsxs)(`div`,{className:`text-xs font-medium flex items-center gap-2`,children:[n&&!r?(0,Y.jsx)(V,{className:`w-4 h-4`}):(0,Y.jsx)(E,{className:`w-4 h-4`}),e]}),(0,Y.jsx)(`div`,{className:`text-xs font-mono mt-1 break-all`,children:t})]})}function Sp({label:e,value:t,mono:n}){return(0,Y.jsxs)(`div`,{className:`border rounded-lg p-3 bg-card`,children:[(0,Y.jsx)(`p`,{className:`text-xs uppercase tracking-wide text-muted-foreground`,children:e}),(0,Y.jsx)(`p`,{className:`mt-1 text-sm break-all `+(n?`font-mono`:`font-medium`),children:t})]})}function Cp(e){let t=e.title?.trim();return t?`${e.id} — "${t}" (${e.provider}/${e.model})`:`${e.id} (${e.provider}/${e.model})`}function wp(e){let t=(e.content??``).trim().replace(/\s+/g,` `);return`[${e.role}] ${t.length>100?`${t.slice(0,99)}…`:t}`}function Tp(e){let t=K(e=>e.wsUrl),{listSavedProviders:n,listProviderModels:r}=Vs(),[i,a]=(0,U.useState)([]),[o,s]=(0,U.useState)({});return(0,U.useEffect)(()=>{let e=W(t),n=e.on(`providers.saved`,e=>{let t=e.payload;a((t.providers??[]).map(e=>e.id))}),r=e.on(`provider.models`,e=>{let t=e.payload;s(e=>({...e,[t.provider]:t.models??[]}))});return()=>{n(),r()}},[t]),(0,U.useEffect)(()=>{e&&n()},[e,n]),(0,U.useEffect)(()=>{if(e)for(let e of i)o[e]||r(e)},[e,i,o,r]),(0,U.useMemo)(()=>{let e=[];for(let t of i)for(let n of o[t]??[])e.push({provider:t,model:n.id,label:n.name??n.id,description:n.description,contextWindow:n.contextWindow});return e},[i,o])}var Ep={pending:{label:`Pending`,icon:Kn,text:`text-slate-500 dark:text-slate-400`,ring:`border-slate-400/50 bg-slate-400/10 dark:border-slate-600/50 dark:bg-slate-700/20`,dot:`bg-slate-500`,hex:`#64748b`},queued:{label:`Ready`,icon:Kn,text:`text-cyan-600 dark:text-cyan-300`,ring:`border-cyan-500/50 bg-cyan-500/10`,dot:`bg-cyan-400`,hex:`#22d3ee`},in_progress:{label:`Running`,icon:O,spin:!0,text:`text-amber-600 dark:text-amber-300`,ring:`border-amber-400/60 bg-amber-500/10`,dot:`bg-amber-400`,hex:`#fbbf24`},blocked:{label:`Blocked`,icon:Kn,text:`text-fuchsia-600 dark:text-fuchsia-300`,ring:`border-fuchsia-500/50 bg-fuchsia-500/10`,dot:`bg-fuchsia-400`,hex:`#e879f9`},review:{label:`Review`,icon:Kn,text:`text-sky-600 dark:text-sky-300`,ring:`border-sky-500/50 bg-sky-500/10`,dot:`bg-sky-400`,hex:`#38bdf8`},failed:{label:`Failed`,icon:H,text:`text-red-600 dark:text-red-300`,ring:`border-red-500/60 bg-red-500/10`,dot:`bg-red-400`,hex:`#f87171`},completed:{label:`Done`,icon:jn,text:`text-emerald-600 dark:text-emerald-300`,ring:`border-emerald-500/55 bg-emerald-500/10`,dot:`bg-emerald-400`,hex:`#34d399`},cancelled:{label:`Cancelled`,icon:xn,text:`text-slate-500 dark:text-slate-400`,ring:`border-slate-400/50 bg-slate-400/10 dark:border-slate-500/50 dark:bg-slate-600/20`,dot:`bg-slate-500`,hex:`#94a3b8`}};function Dp(e){return Ep[e]??Ep.pending}var Op={critical:{text:`text-red-600 dark:text-red-400`,chip:`bg-red-500/20 text-red-600 dark:text-red-300`},high:{text:`text-amber-600 dark:text-amber-400`,chip:`bg-amber-500/20 text-amber-600 dark:text-amber-300`},medium:{text:`text-cyan-600 dark:text-cyan-400`,chip:`bg-cyan-500/15 text-cyan-600 dark:text-cyan-300`},low:{text:`text-slate-500 dark:text-slate-400`,chip:`bg-slate-400/20 text-slate-600 dark:bg-slate-600/30 dark:text-slate-400`}};function kp(e){return Op[e]??Op.medium}var Ap={running:`border-sky-500/40 bg-sky-500/10 text-sky-600 dark:text-sky-300`,paused:`border-amber-500/40 bg-amber-500/10 text-amber-600 dark:text-amber-300`,stopped:`border-zinc-500/40 bg-zinc-500/10 text-zinc-600 dark:text-zinc-300`,completed:`border-emerald-500/40 bg-emerald-500/10 text-emerald-600 dark:text-emerald-300`,failed:`border-red-500/40 bg-red-500/10 text-red-600 dark:text-red-300`,deadlocked:`border-rose-500/40 bg-rose-500/10 text-rose-600 dark:text-rose-300`,idle:`border-border bg-muted text-muted-foreground`},jp=[`bg-amber-500`,`bg-sky-500`,`bg-violet-500`,`bg-emerald-500`,`bg-rose-500`,`bg-cyan-500`,`bg-fuchsia-500`],Mp={started:{icon:dr,color:`text-amber-400`},completed:{icon:jn,color:`text-emerald-400`},failed:{icon:H,color:`text-red-400`},retrying:{icon:Xn,color:`text-orange-400`},wave:{icon:qe,color:`text-violet-400`},deadlock:{icon:E,color:`text-rose-400`},verification_failed:{icon:ce,color:`text-red-400`},conflict:{icon:r,color:`text-amber-400`},split:{icon:p,color:`text-sky-400`},supervisor:{icon:St,color:`text-fuchsia-400`}};function Np(e){let t=e.trim().split(/\s+/);return((t[0]?.[0]??``)+(t[1]?.[0]??``)).toUpperCase()||`·`}function Pp(e){let t=Math.max(0,Math.floor(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?t%60?`${n}m ${t%60}s`:`${n}m`:`${Math.floor(n/60)}h ${n%60}m`}function Fp(e,t){let n=Math.max(0,Math.floor((t-e)/1e3));if(n<60)return`${n}s`;let r=Math.floor(n/60);return r<60?`${r}m`:`${Math.floor(r/60)}h`}function Ip({feed:e,now:t}){return(0,Y.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-border px-3 py-2 text-xs font-semibold text-foreground`,children:[(0,Y.jsx)(Dt,{className:`h-3.5 w-3.5 text-orange-500 dark:text-orange-400`}),`Activity`]}),(0,Y.jsx)(`div`,{className:`flex-1 space-y-1 overflow-auto p-2`,children:e.length===0?(0,Y.jsx)(`p`,{className:`px-1 pt-4 text-center text-[11px] text-muted-foreground`,children:`Nothing yet — events appear here as agents pick up and finish tasks.`}):e.map((e,n)=>{let r=Mp[e.kind]??Mp.started,i=r.icon;return(0,Y.jsxs)(`div`,{className:Z(`sdd-rise flex items-start gap-2 rounded-md px-2 py-1.5 text-[11px]`,n===0?`bg-muted`:`hover:bg-muted`),children:[(0,Y.jsx)(i,{className:Z(`mt-0.5 h-3.5 w-3.5 shrink-0`,r.color)}),(0,Y.jsx)(`span`,{className:`flex-1 leading-snug text-foreground`,children:e.text}),(0,Y.jsx)(`span`,{className:`shrink-0 tabular-nums text-[10px] text-muted-foreground`,children:Fp(e.ts,t)})]},`${e.ts}-${n}`)})})]})}function Lp({open:e,onOpenChange:t,snapshot:n,busy:r,onConfirm:i}){let a=n?.mergedCommits?.length??0,o=n?.baseBranch,[s,c]=(0,U.useState)(!1);(0,U.useEffect)(()=>{e&&c(!1)},[e]);let l=n?.status===`running`||n?.status===`paused`,u=(0,U.useMemo)(()=>{let e=new Set;for(let t of n?.tasks??[])t.worktreeBranch&&e.add(t.worktreeBranch);return e.size},[n?.tasks]),d=(0,U.useMemo)(()=>{let e=new Set;for(let t of n?.tasks??[])t.displayStatus===`in_progress`&&t.agentName&&e.add(t.agentName);return e.size},[n?.tasks]);return(0,Y.jsx)(Uc,{open:e,onOpenChange:e=>!r&&t(e),children:(0,Y.jsxs)(qc,{className:`sm:max-w-lg border-red-500/50`,children:[(0,Y.jsxs)(Jc,{children:[(0,Y.jsxs)(Xc,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(yn,{className:`h-5 w-5 text-red-500`}),`Destroy SDD project?`]}),(0,Y.jsx)(Zc,{children:`This wipes the run and its work. It cannot be undone (the optional commit revert is history-preserving).`})]}),(0,Y.jsxs)(`ul`,{className:`space-y-1.5 py-1 text-sm`,children:[l&&(0,Y.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,Y.jsx)(`span`,{className:`mt-0.5 text-red-500`,children:`■`}),(0,Y.jsxs)(`span`,{children:[`Stop the run`,d>0?` (${d} agent${d===1?``:`s`} working)`:``]})]}),(0,Y.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,Y.jsx)(`span`,{className:`mt-0.5 text-red-500`,children:`■`}),(0,Y.jsxs)(`span`,{children:[`Remove `,u>0?`${u} `:`all `,`git worktree`,u===1?``:`s`,` + `,(0,Y.jsx)(`code`,{className:`text-xs`,children:`wstack/ap/*`}),` branches —`,` `,(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`including un-merged work`})]})]}),(0,Y.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,Y.jsx)(`span`,{className:`mt-0.5 text-red-500`,children:`■`}),(0,Y.jsx)(`span`,{children:`Delete all SDD artifacts (specs, task graph, board, session)`})]})]}),a>0&&(0,Y.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 rounded-md border border-amber-500/30 bg-amber-500/5 p-2.5 text-sm`,children:[(0,Y.jsx)(`input`,{type:`checkbox`,checked:s,onChange:e=>c(e.target.checked),className:`mt-0.5 h-4 w-4 accent-amber-500`}),(0,Y.jsxs)(`span`,{children:[`Also `,(0,Y.jsxs)(`span`,{className:`font-medium`,children:[`revert `,a,` merged commit`,a===1?``:`s`]}),` `,`on `,(0,Y.jsx)(`code`,{className:`text-xs`,children:o??`the base branch`}),(0,Y.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:`Adds revert commits (history preserved). Refused if the working tree is dirty.`})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md bg-muted/50 p-2 text-xs text-muted-foreground`,children:[(0,Y.jsx)(E,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-amber-500`}),a>0&&!s?`Merged commits will be left on the base branch. Tick the box above to undo them too.`:`Make sure you really want to abandon this run.`]}),(0,Y.jsxs)(Yc,{className:`gap-2 sm:gap-2`,children:[(0,Y.jsx)($,{variant:`outline`,size:`sm`,disabled:r,onClick:()=>t(!1),children:`Cancel`}),(0,Y.jsx)($,{size:`sm`,disabled:r,onClick:()=>i(s),className:`bg-red-600 text-white hover:bg-red-700`,children:r?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(O,{className:`mr-1 h-3.5 w-3.5 animate-spin`}),` Destroying…`]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(yn,{className:`mr-1 h-3.5 w-3.5`}),` Destroy everything`]})})]})]})})}var Rp=300,zp=128,Bp=240,Vp={pending:{ring:`border-slate-600/50`,chip:`bg-slate-700/40 text-slate-400`,dot:`bg-slate-500`,label:`pending`},queued:{ring:`border-cyan-500/50`,chip:`bg-cyan-500/15 text-cyan-300`,dot:`bg-cyan-400`,label:`queued`},in_progress:{ring:`border-amber-400/70`,chip:`bg-amber-500/20 text-amber-300`,dot:`bg-amber-400`,label:`running`},blocked:{ring:`border-fuchsia-500/50`,chip:`bg-fuchsia-500/15 text-fuchsia-300`,dot:`bg-fuchsia-400`,label:`blocked`},review:{ring:`border-sky-500/50`,chip:`bg-sky-500/15 text-sky-300`,dot:`bg-sky-400`,label:`review`},failed:{ring:`border-red-500/60`,chip:`bg-red-500/15 text-red-300`,dot:`bg-red-400`,label:`failed`},completed:{ring:`border-emerald-500/55`,chip:`bg-emerald-500/15 text-emerald-300`,dot:`bg-emerald-400`,label:`done`},cancelled:{ring:`border-slate-500/50`,chip:`bg-slate-600/25 text-slate-400`,dot:`bg-slate-500`,label:`cancelled`}};function Hp({data:e}){let t=e.task,n=Vp[t.displayStatus],r=t.displayStatus===`in_progress`,i=t.displayStatus===`completed`?jn:t.displayStatus===`failed`?H:r?O:Kn;return(0,Y.jsxs)(`div`,{className:Z(`sdd-node-enter group relative rounded-lg border bg-[#0e1117]/95 px-2.5 py-2 text-left shadow-lg backdrop-blur`,n.ring,r&&`sdd-node-running`,t.displayStatus===`completed`&&`sdd-node-complete`,t.displayStatus===`failed`&&`sdd-node-failed`,e.onTaskClick&&`cursor-pointer hover:brightness-125`),style:{width:Bp,animationDelay:`${Math.min(e.index*45,600)}ms`},onClick:()=>e.onTaskClick?.(t.id),children:[(0,Y.jsx)(bn,{type:`target`,position:mr.Left,isConnectable:!1,className:`!h-1.5 !w-1.5 !border-0 !bg-slate-500`}),(0,Y.jsx)(bn,{type:`source`,position:mr.Right,isConnectable:!1,className:`!h-1.5 !w-1.5 !border-0 !bg-slate-500`}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(i,{className:Z(`h-3.5 w-3.5`,r&&`animate-spin`,n.chip.split(` `).find(e=>e.startsWith(`text`)))}),(0,Y.jsx)(`span`,{className:`font-mono text-[10px] text-slate-500`,children:t.shortId}),(0,Y.jsx)(`span`,{className:Z(`font-mono text-[10px] font-bold uppercase`,kp(t.priority).text),children:t.priority[0]}),(0,Y.jsx)(`span`,{className:Z(`ml-auto rounded px-1.5 py-px text-[9px] font-medium`,n.chip),children:n.label})]}),(0,Y.jsx)(`p`,{className:`mt-1 line-clamp-2 text-[11px] leading-snug text-slate-200`,children:t.title}),(t.agentName||t.worktreeBranch)&&(0,Y.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-1.5`,children:[t.agentName&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:Z(`flex h-4 w-4 items-center justify-center rounded-full text-[8px] font-bold text-white`,r?`bg-amber-500 sdd-agent-live`:`bg-slate-600`),children:Np(t.agentName)}),(0,Y.jsx)(`span`,{className:`max-w-[88px] truncate text-[10px] text-slate-300`,children:t.agentName})]}),t.retries?(0,Y.jsxs)(`span`,{className:`flex items-center gap-0.5 text-[9px] text-red-400`,children:[(0,Y.jsx)(Xn,{className:`h-2.5 w-2.5`}),t.retries]}):null,t.worktreeBranch&&(0,Y.jsxs)(`span`,{className:`ml-auto flex items-center gap-0.5 text-[9px] text-slate-500`,title:t.worktreeBranch,children:[(0,Y.jsx)(sr,{className:`h-2.5 w-2.5`}),(0,Y.jsx)(`span`,{className:`max-w-[70px] truncate`,children:t.worktreeBranch.replace(/^.*\//,``)})]})]})]})}function Up({data:e}){return(0,Y.jsx)(`div`,{className:`whitespace-nowrap text-[11px] font-bold uppercase tracking-wider text-slate-500`,children:e.label})}var Wp={task:Hp,colLabel:Up};function Gp(e,t,n){let r=new Map(e.map(e=>[e.shortId,e])),i=[],a=0;t.forEach((e,t)=>{i.push({id:`__col_${t}`,position:{x:t*Rp,y:-52},data:{label:e.label},draggable:!1,selectable:!1,type:`colLabel`,style:{pointerEvents:`none`}}),e.taskIds.forEach((e,o)=>{let s=r.get(e);s&&i.push({id:s.id,position:{x:t*Rp,y:o*zp},data:{task:s,index:a++,onTaskClick:n},type:`task`,draggable:!0})})});let o=[];for(let t of e)for(let e of t.deps){let n=r.get(e);if(!n)continue;let i=n.displayStatus===`completed`&&(t.displayStatus===`in_progress`||t.displayStatus===`queued`);o.push({id:`${n.id}->${t.id}`,source:n.id,target:t.id,animated:i,className:i?`sdd-edge-flow`:void 0,style:{stroke:Dp(t.displayStatus).hex,strokeWidth:i?2.2:1.4,opacity:t.displayStatus===`pending`?.4:.85}})}return{nodes:i,edges:o}}function Kp({tasks:e,columns:t,onTaskClick:n}){let{fitView:r}=gt(),{nodes:i,edges:a}=(0,U.useMemo)(()=>Gp(e,t,n),[e,t,n]),o=e.length;return(0,U.useEffect)(()=>{let e=setTimeout(()=>r({padding:.18,duration:400}),60);return()=>clearTimeout(e)},[o,r]),(0,Y.jsxs)(Tn,{nodes:i,edges:a,nodeTypes:Wp,fitView:!0,fitViewOptions:{padding:.18},minZoom:.2,maxZoom:1.6,proOptions:{hideAttribution:!0},nodesConnectable:!1,elementsSelectable:!!n,children:[(0,Y.jsx)(xt,{variant:Fn.Dots,gap:22,size:1,color:`#1e293b`}),(0,Y.jsx)($n,{showInteractive:!1,className:`!bottom-2 !left-2`}),(0,Y.jsx)(lr,{pannable:!0,zoomable:!0,nodeStrokeWidth:2,maskColor:`rgba(2,6,23,0.65)`,nodeColor:e=>{let t=e.data?.task?.displayStatus;return t?Dp(t).hex:`#334155`},className:`!bottom-2 !right-2 !h-24 !w-40 overflow-hidden rounded-md border border-white/10`})]})}function qp({tasks:e,columns:t,onTaskClick:n}){return(0,Y.jsx)(Gt,{children:(0,Y.jsx)(Kp,{tasks:e,columns:t,onTaskClick:n})})}var Jp=[{key:`pending`,label:`Backlog`,accent:`border-slate-600/40`,head:`text-muted-foreground`},{key:`queued`,label:`Ready`,accent:`border-cyan-500/40`,head:`text-cyan-600 dark:text-cyan-300`},{key:`in_progress`,label:`Running`,accent:`border-amber-400/50`,head:`text-amber-600 dark:text-amber-300`},{key:`review`,label:`Review`,accent:`border-sky-500/40`,head:`text-sky-600 dark:text-sky-300`},{key:`failed`,label:`Failed`,accent:`border-red-500/40`,head:`text-red-600 dark:text-red-300`},{key:`completed`,label:`Done`,accent:`border-emerald-500/40`,head:`text-emerald-600 dark:text-emerald-300`}];function Yp({tasks:e,selectedId:t,onTaskClick:n}){let r=(0,U.useMemo)(()=>{let t=new Map;for(let e of Jp)t.set(e.key,[]);for(let n of e){let e=n.displayStatus===`blocked`?`pending`:n.displayStatus===`cancelled`?`failed`:n.displayStatus;(t.get(e)??t.get(`pending`))?.push(n)}return t},[e]);return(0,Y.jsx)(`div`,{className:`flex h-full gap-3 overflow-x-auto p-4`,children:Jp.map(e=>{let i=r.get(e.key)??[];return(0,Y.jsxs)(`div`,{className:`flex w-64 shrink-0 flex-col`,children:[(0,Y.jsxs)(`div`,{className:Z(`mb-2 flex items-center gap-2 border-b-2 pb-1.5`,e.accent),children:[(0,Y.jsx)(`span`,{className:Z(`text-xs font-bold uppercase tracking-wide`,e.head),children:e.label}),(0,Y.jsx)(`span`,{className:`rounded-full bg-muted px-1.5 text-[10px] text-muted-foreground`,children:i.length})]}),(0,Y.jsxs)(`div`,{className:`flex-1 space-y-2 overflow-y-auto pr-1`,children:[i.map(e=>(0,Y.jsx)(Xp,{task:e,selected:e.id===t,onClick:()=>n(e.id)},e.id)),i.length===0&&(0,Y.jsx)(`div`,{className:`rounded-md border border-dashed border-border py-6 text-center text-[10px] text-muted-foreground`,children:`empty`})]})]},e.key)})})}function Xp({task:e,selected:t,onClick:n}){let r=e.displayStatus===`in_progress`;return(0,Y.jsxs)(`button`,{type:`button`,onClick:n,className:Z(`sdd-node-enter w-full rounded-lg border bg-card p-2 text-left transition hover:brightness-125`,t?`border-violet-400/70 ring-1 ring-violet-400/40`:`border-border`,r&&`sdd-node-running`,e.displayStatus===`completed`&&`sdd-node-complete`,e.displayStatus===`failed`&&`sdd-node-failed`),children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[r&&(0,Y.jsx)(O,{className:`h-3 w-3 animate-spin text-amber-400`}),e.displayStatus===`completed`&&(0,Y.jsx)(jn,{className:`h-3 w-3 text-emerald-400`}),e.displayStatus===`failed`&&(0,Y.jsx)(H,{className:`h-3 w-3 text-red-400`}),(0,Y.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:e.shortId}),(0,Y.jsx)(`span`,{className:Z(`ml-auto rounded px-1.5 text-[9px] font-bold uppercase`,kp(e.priority).chip),children:e.priority})]}),(0,Y.jsx)(`p`,{className:`mt-1 line-clamp-2 text-[11px] leading-snug text-foreground`,children:e.title}),(e.agentName||e.worktreeBranch||e.retries)&&(0,Y.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-1.5`,children:[e.agentName&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:Z(`flex h-4 w-4 items-center justify-center rounded-full text-[8px] font-bold text-white`,r?`bg-amber-500 sdd-agent-live`:`bg-slate-600`),children:Np(e.agentName)}),(0,Y.jsx)(`span`,{className:`max-w-[80px] truncate text-[10px] text-muted-foreground`,children:e.agentName})]}),e.retries?(0,Y.jsxs)(`span`,{className:`flex items-center gap-0.5 text-[9px] text-red-400`,children:[(0,Y.jsx)(Xn,{className:`h-2.5 w-2.5`}),e.retries]}):null,e.worktreeBranch&&(0,Y.jsx)(sr,{className:`ml-auto h-2.5 w-2.5 text-muted-foreground`})]})]})}function Zp({value:e,provider:t,candidates:n,placeholder:r=`Run default`,resetLabel:i=`Use run default`,onPick:a,onReset:o,className:s}){let[c,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(``),f=(0,U.useRef)(null);(0,U.useEffect)(()=>{if(!c)return;let e=e=>{f.current&&!f.current.contains(e.target)&&l(!1)};return window.addEventListener(`mousedown`,e),()=>window.removeEventListener(`mousedown`,e)},[c]);let p=(0,U.useMemo)(()=>{let e=u.trim().toLowerCase();return(e?n.filter(t=>`${t.provider}/${t.model} ${t.label}`.toLowerCase().includes(e)):n).slice(0,60)},[n,u]);return(0,Y.jsxs)(`div`,{ref:f,className:Z(`relative`,s),children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>l(e=>!e),className:`flex w-full items-center gap-1.5 rounded-md border border-border bg-muted px-2 py-1.5 text-left text-xs hover:border-violet-500/50`,children:[(0,Y.jsx)(k,{className:`h-3.5 w-3.5 shrink-0 text-violet-400`}),(0,Y.jsx)(`span`,{className:Z(`min-w-0 flex-1 truncate`,e?`text-foreground`:`text-muted-foreground`),children:e?t?`${t}/${e}`:e:r}),(0,Y.jsx)(ar,{className:`h-3.5 w-3.5 shrink-0 text-muted-foreground`})]}),c&&(0,Y.jsxs)(`div`,{className:`sdd-rise absolute z-50 mt-1 max-h-72 w-full min-w-[240px] overflow-hidden rounded-md border border-border bg-popover shadow-xl`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-border px-2 py-1.5`,children:[(0,Y.jsx)(`input`,{autoFocus:!0,value:u,onChange:e=>d(e.target.value),placeholder:`Filter models…`,className:`min-w-0 flex-1 bg-transparent text-xs outline-none placeholder:text-muted-foreground`}),u&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>d(``),className:`text-muted-foreground hover:text-foreground`,children:(0,Y.jsx)(H,{className:`h-3 w-3`})})]}),(0,Y.jsxs)(`div`,{className:`max-h-60 overflow-y-auto py-1`,children:[o&&(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{o(),l(!1)},className:`flex w-full items-center gap-1.5 px-2 py-1.5 text-left text-xs text-muted-foreground hover:bg-muted`,children:[(0,Y.jsx)(Xn,{className:`h-3 w-3`}),` `,i]}),p.map(n=>{let r=n.model===e&&(!t||n.provider===t);return(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{a(n.model,n.provider),l(!1)},className:Z(`flex w-full items-start gap-1.5 px-2 py-1.5 text-left text-xs hover:bg-muted`,r?`text-violet-700 dark:text-violet-200`:`text-foreground`),children:[r?(0,Y.jsx)(jn,{className:`mt-0.5 h-3 w-3 shrink-0 text-violet-400`}):(0,Y.jsx)(`span`,{className:`w-3 shrink-0`}),(0,Y.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`span`,{className:`block truncate`,children:n.label}),n.description&&(0,Y.jsx)(`span`,{className:`mt-0.5 block truncate text-[10px] text-muted-foreground`,children:n.description})]}),(0,Y.jsx)(`span`,{className:`mt-0.5 shrink-0 font-mono text-[9px] text-muted-foreground`,children:n.provider})]},`${n.provider}/${n.model}`)}),p.length===0&&(0,Y.jsx)(`div`,{className:`px-2 py-3 text-center text-[11px] text-muted-foreground`,children:n.length===0?`Loading models…`:`No match`})]})]})]})}function Qp({task:e,allTasks:t,feed:n,now:r,modelCandidates:i,defaultModel:a,onClose:o,onRetry:s,onReassign:c,onSetModel:l,onSetVerification:u,onCancel:d,onDelete:f,onSplit:m,onSelectTask:h}){let g=Dp(e.displayStatus),_=g.icon,y=e.displayStatus===`in_progress`,b=e.displayStatus===`pending`||e.displayStatus===`blocked`||e.displayStatus===`queued`,[x,S]=(0,U.useState)(!1),[C,w]=(0,U.useState)(``),[T,E]=(0,U.useState)(null),[D,O]=(0,U.useState)(!1),[k,A]=(0,U.useState)(``),[j,M]=(0,U.useState)(!1),[N,P]=(0,U.useState)(e.verificationCommand??``),F=()=>{C.trim()&&(c(e.id,C.trim()),S(!1),w(``))},I=()=>{let t=k.split(`
135
+ `).map(e=>e.trim()).filter(Boolean).map(e=>{let[t,...n]=e.split(`::`),r=(t??``).trim();return{title:r,description:n.join(`::`).trim()||r}}).filter(e=>e.title);t.length&&(m(e.id,t),O(!1),A(``))},R=(0,U.useMemo)(()=>new Map(t.map(e=>[e.shortId,e])),[t]),z=(0,U.useMemo)(()=>t.filter(t=>t.deps.includes(e.shortId)),[t,e.shortId]),ee=(0,U.useMemo)(()=>n.filter(t=>t.taskShortId===e.shortId),[n,e.shortId]),te=e.startedAt&&!e.completedAt?Pp(r-e.startedAt):e.startedAt&&e.completedAt?Pp(e.completedAt-e.startedAt):null;return(0,Y.jsxs)(`div`,{className:`sdd-rise flex h-full flex-col`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:o,className:`text-muted-foreground hover:text-foreground`,title:`Back to activity`,children:(0,Y.jsx)(nn,{className:`h-4 w-4`})}),(0,Y.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.shortId}),(0,Y.jsxs)(`span`,{className:Z(`ml-auto flex items-center gap-1 rounded-full border px-2 py-0.5 text-[11px]`,g.ring,g.text),children:[(0,Y.jsx)(_,{className:Z(`h-3 w-3`,y&&`animate-spin`)}),g.label]})]}),(0,Y.jsxs)(`div`,{className:`flex-1 space-y-3 overflow-auto p-3`,children:[(0,Y.jsx)(`h3`,{className:`text-sm font-semibold leading-snug text-foreground`,children:e.title}),e.agentName&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border border-border bg-muted p-2`,children:[(0,Y.jsx)(`span`,{className:Z(`flex h-7 w-7 items-center justify-center rounded-full text-[10px] font-bold text-white`,y?`bg-amber-500 sdd-agent-live`:`bg-slate-600`),children:Np(e.agentName)}),(0,Y.jsxs)(`div`,{className:`leading-tight`,children:[(0,Y.jsx)(`div`,{className:`text-xs font-medium text-foreground`,children:e.agentName}),(0,Y.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:y?`working on this task`:`assigned`})]})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-1.5 text-[11px]`,children:[(0,Y.jsx)($p,{label:`Priority`,children:(0,Y.jsx)(`span`,{className:Z(`font-medium uppercase`,kp(e.priority).text),children:e.priority})}),(0,Y.jsx)($p,{label:`Type`,children:e.type}),te&&(0,Y.jsx)($p,{label:e.completedAt?`Duration`:`Elapsed`,children:(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(L,{className:`h-3 w-3 text-muted-foreground`}),te]})}),e.retries?(0,Y.jsx)($p,{label:`Retries`,children:(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 text-red-400`,children:[(0,Y.jsx)(Xn,{className:`h-3 w-3`}),e.retries]})}):null,e.worktreeBranch&&(0,Y.jsx)($p,{label:`Worktree`,full:!0,children:(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 font-mono text-foreground`,title:e.worktreeBranch,children:[(0,Y.jsx)(sr,{className:`h-3 w-3 text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`truncate`,children:e.worktreeBranch})]})})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[`Worker model`,!e.model&&a&&(0,Y.jsxs)(`span`,{className:`font-normal normal-case text-muted-foreground`,children:[`· run default: `,a]})]}),(0,Y.jsx)(Zp,{value:e.model,provider:e.provider,candidates:i,placeholder:a?`Run default (${a})`:`Run default`,onPick:(t,n)=>l(e.id,t,n),onReset:e.model?()=>l(e.id,void 0,void 0):void 0}),e.fallbackModels&&e.fallbackModels.length>0&&(0,Y.jsx)(`div`,{className:`mt-1 flex flex-wrap gap-1`,children:e.fallbackModels.map((e,t)=>(0,Y.jsxs)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 font-mono text-[9px] text-muted-foreground`,children:[`↳ `,e]},t))})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[`Verification command`,(0,Y.jsx)(`span`,{className:`font-normal normal-case text-muted-foreground`,children:`· gates completion (exit 0)`})]}),j?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Y.jsx)(`input`,{autoFocus:!0,value:N,onChange:e=>P(e.target.value),onKeyDown:t=>{t.key===`Enter`?(u(e.id,N.trim()||void 0),M(!1)):t.key===`Escape`&&(P(e.verificationCommand??``),M(!1))},placeholder:`e.g. pnpm vitest run path/to/file`,className:`w-full rounded border border-border bg-background px-2 py-1 font-mono text-[11px] text-foreground`}),(0,Y.jsxs)(`div`,{className:`flex gap-1`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{u(e.id,N.trim()||void 0),M(!1)},className:`rounded bg-primary px-2 py-0.5 text-[10px] text-primary-foreground hover:opacity-90`,children:`Save`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{P(e.verificationCommand??``),M(!1)},className:`rounded bg-muted px-2 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/80`,children:`Cancel`})]})]}):e.verificationCommand?(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`code`,{className:`flex-1 truncate rounded bg-muted px-1.5 py-0.5 font-mono text-[10px] text-foreground`,children:e.verificationCommand}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>M(!0),className:`rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/80`,children:`Edit`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>u(e.id,void 0),className:`rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/80`,children:`Clear`})]}):(0,Y.jsx)(`button`,{type:`button`,onClick:()=>M(!0),className:`rounded border border-dashed border-border px-2 py-1 text-[10px] text-muted-foreground hover:bg-muted`,children:`+ Add verification command`})]}),e.description&&(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:`Description`}),(0,Y.jsx)(`p`,{className:`whitespace-pre-wrap rounded-md bg-muted p-2 text-[11px] leading-relaxed text-foreground`,children:e.description})]}),ee.length>0&&(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:`Timeline`}),(0,Y.jsx)(`div`,{className:`space-y-1 border-l border-border pl-2.5`,children:ee.map((e,t)=>(0,Y.jsxs)(`div`,{className:`relative text-[11px] leading-snug text-foreground`,children:[(0,Y.jsx)(`span`,{className:Z(`absolute -left-[14px] top-1 h-1.5 w-1.5 rounded-full`,e.kind===`completed`?`bg-emerald-400`:e.kind===`failed`?`bg-red-400`:e.kind===`retrying`?`bg-orange-400`:`bg-amber-400`)}),e.text]},`${e.ts}-${t}`))})]}),e.deps.length>0&&(0,Y.jsx)(em,{title:`Depends on`,shortIds:e.deps,byShort:R,onSelectTask:h}),z.length>0&&(0,Y.jsx)(em,{title:`Blocks`,shortIds:z.map(e=>e.shortId),byShort:R,onSelectTask:h})]}),(0,Y.jsxs)(`div`,{className:`border-t border-border p-2`,children:[x?(0,Y.jsxs)(`div`,{className:`sdd-rise flex items-center gap-1.5`,children:[(0,Y.jsx)(`input`,{autoFocus:!0,value:C,onChange:e=>w(e.target.value),onKeyDown:e=>{e.key===`Enter`&&F(),e.key===`Escape`&&S(!1)},placeholder:`New worker name…`,className:`min-w-0 flex-1 rounded-md border border-border bg-background px-2 py-1.5 text-xs outline-none focus:border-violet-500`}),(0,Y.jsx)(`button`,{type:`button`,onClick:F,disabled:!C.trim(),className:`rounded-md bg-violet-500/20 px-2 py-1.5 text-xs font-medium text-violet-700 dark:text-violet-200 hover:bg-violet-500/30 disabled:opacity-40`,children:(0,Y.jsx)(jn,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>S(!1),className:`rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted`,children:(0,Y.jsx)(H,{className:`h-3.5 w-3.5`})})]}):T?(0,Y.jsxs)(`div`,{className:`sdd-rise flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`flex-1 text-xs text-foreground`,children:T===`stop`?`Stop this running task?`:`Delete this task from the run?`}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{T===`stop`?d(e.id):f(e.id),E(null)},className:`inline-flex items-center gap-1 rounded-md bg-red-500/20 px-2.5 py-1.5 text-xs font-medium text-red-700 dark:text-red-200 hover:bg-red-500/30`,children:[(0,Y.jsx)(jn,{className:`h-3.5 w-3.5`}),` `,T===`stop`?`Stop`:`Delete`]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>E(null),className:`rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted`,children:(0,Y.jsx)(H,{className:`h-3.5 w-3.5`})})]}):(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>s(e.id),title:`Requeue this task to pending`,className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-orange-500/15 py-1.5 text-xs font-medium text-orange-600 dark:text-orange-300 hover:bg-orange-500/25`,children:[(0,Y.jsx)(Xn,{className:`h-3.5 w-3.5`}),` Retry`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>S(!0),className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-violet-500/15 py-1.5 text-xs font-medium text-violet-600 dark:text-violet-300 hover:bg-violet-500/25`,children:[(0,Y.jsx)(v,{className:`h-3.5 w-3.5`}),` Reassign`]}),y&&(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>E(`stop`),title:`Abort the worker on this task`,className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-red-500/15 py-1.5 text-xs font-medium text-red-600 dark:text-red-300 hover:bg-red-500/25`,children:[(0,Y.jsx)(Ie,{className:`h-3.5 w-3.5`}),` Stop`]}),!y&&(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>O(!0),title:`Split this task into sub-tasks delegated to separate workers`,className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-sky-500/15 py-1.5 text-xs font-medium text-sky-600 dark:text-sky-300 hover:bg-sky-500/25`,children:[(0,Y.jsx)(p,{className:`h-3.5 w-3.5`}),` Split`]}),b&&(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>E(`delete`),title:`Remove this not-started task from the run`,className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-red-500/10 py-1.5 text-xs font-medium text-red-600 dark:text-red-300/90 hover:bg-red-500/20`,children:[(0,Y.jsx)(yn,{className:`h-3.5 w-3.5`}),` Delete`]})]}),D&&(0,Y.jsxs)(`div`,{className:`mt-2 flex flex-col gap-2`,children:[(0,Y.jsxs)(`label`,{className:`text-[11px] text-muted-foreground`,htmlFor:`sdd-split-input`,children:[`One sub-task per line — `,(0,Y.jsx)(`code`,{children:`Title :: description`}),` (description optional)`]}),(0,Y.jsx)(`textarea`,{id:`sdd-split-input`,autoFocus:!0,rows:3,value:k,onChange:e=>A(e.target.value),placeholder:`Write the data layer :: add the repository
136
+ Wire the UI`,className:`w-full resize-y rounded-md border border-border bg-background px-2 py-1.5 text-xs text-foreground focus:outline-none focus:ring-1 focus:ring-sky-500`}),(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:I,className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-sky-500/20 py-1.5 text-xs font-medium text-sky-700 dark:text-sky-200 hover:bg-sky-500/30`,children:[(0,Y.jsx)(p,{className:`h-3.5 w-3.5`}),` Split into sub-tasks`]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{O(!1),A(``)},className:`rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted`,children:(0,Y.jsx)(H,{className:`h-3.5 w-3.5`})})]})]})]})]})}function $p({label:e,children:t,full:n}){return(0,Y.jsxs)(`div`,{className:Z(`rounded-md border border-border bg-muted/50 px-2 py-1`,n&&`col-span-2`),children:[(0,Y.jsx)(`div`,{className:`text-[9px] uppercase tracking-wide text-muted-foreground`,children:e}),(0,Y.jsx)(`div`,{className:`text-foreground`,children:t})]})}function em({title:e,shortIds:t,byShort:n,onSelectTask:r}){return(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:e}),(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:t.map(e=>{let t=n.get(e);return(0,Y.jsxs)(`button`,{type:`button`,disabled:!t,onClick:()=>t&&r(t.id),className:`flex items-center gap-1 rounded-full border border-border bg-muted px-2 py-0.5 text-[10px] text-foreground hover:bg-muted disabled:opacity-50`,title:t?.title,children:[(0,Y.jsx)(`span`,{className:Z(`h-1.5 w-1.5 rounded-full`,Dp(t?.displayStatus??`pending`).dot)}),(0,Y.jsx)(`span`,{className:`font-mono`,children:e})]},e)})})]})}function tm({pct:e}){let t=2*Math.PI*26,n=t-Math.max(0,Math.min(100,e))/100*t;return(0,Y.jsxs)(`div`,{className:`relative h-16 w-16 shrink-0`,children:[(0,Y.jsxs)(`svg`,{viewBox:`0 0 64 64`,className:`h-16 w-16 -rotate-90`,children:[(0,Y.jsx)(`circle`,{cx:`32`,cy:`32`,r:26,fill:`none`,stroke:`hsl(215 28% 22%)`,strokeWidth:`6`}),(0,Y.jsx)(`circle`,{cx:`32`,cy:`32`,r:26,fill:`none`,stroke:`url(#sddgrad)`,strokeWidth:`6`,strokeLinecap:`round`,strokeDasharray:t,strokeDashoffset:n,style:{transition:`stroke-dashoffset 0.6s cubic-bezier(0.16,1,0.3,1)`}}),(0,Y.jsx)(`defs`,{children:(0,Y.jsxs)(`linearGradient`,{id:`sddgrad`,x1:`0`,y1:`0`,x2:`1`,y2:`1`,children:[(0,Y.jsx)(`stop`,{offset:`0%`,stopColor:`#a78bfa`}),(0,Y.jsx)(`stop`,{offset:`100%`,stopColor:`#22d3ee`})]})})]}),(0,Y.jsxs)(`div`,{className:`absolute inset-0 flex items-center justify-center text-sm font-bold text-foreground`,children:[Math.round(e),`%`]})]})}function nm({onClose:e}){let{client:t}=Vs(),n=Xi(e=>e.snapshot),r=Xi(e=>e.lifecycleResult),i=Xi(e=>e.destroying),a=Xi(e=>e.setDestroying),o=Xi(e=>e.setLifecycleResult),[s,c]=(0,U.useState)(()=>Date.now()),[l,u]=(0,U.useState)(null),[d,f]=(0,U.useState)(`graph`),[p,m]=(0,U.useState)(!1);(0,U.useEffect)(()=>{t?.send?.({type:`sdd.board.get`})},[t]);let h=n&&(n.status===`running`||n.status===`paused`);(0,U.useEffect)(()=>{if(!h)return;let e=setInterval(()=>c(Date.now()),1e3);return c(Date.now()),()=>clearInterval(e)},[h]);let g=(0,U.useCallback)(e=>t?.send?.(e),[t]),_=(0,U.useRef)(null),v=(0,U.useCallback)(e=>{_.current=null,g({type:`sdd.board.destroy`,payload:{revertMerged:e}})},[g]),y=(0,U.useCallback)(e=>{m(!1),o(null),a(!0),h?(g({type:`sdd.board.stop`,payload:{}}),_.current={revertMerged:e,deadline:Date.now()+2e4}):v(e)},[h,g,v,a,o]);(0,U.useEffect)(()=>{let e=_.current;e&&(!h||Date.now()>=e.deadline)&&v(e.revertMerged)},[h,n,v]);let b=(0,U.useCallback)(()=>{o(null),g({type:`sdd.board.cleanup_worktrees`,payload:{}})},[g,o]),x=(0,U.useCallback)(()=>{o(null),g({type:`sdd.board.rollback`,payload:{}})},[g,o]),S=(0,U.useMemo)(()=>(n?.tasks??[]).map(e=>({id:e.id,shortId:e.shortId,title:e.title,displayStatus:e.displayStatus,priority:e.priority,deps:e.deps,agentName:e.agentName,worktreeBranch:e.worktreeBranch})),[n?.tasks]),C=(0,U.useMemo)(()=>{let e=new Map;for(let t of n?.tasks??[])t.displayStatus===`in_progress`&&t.agentName&&e.set(t.agentName,{name:t.agentName,task:t.title});return[...e.values()]},[n?.tasks]),w=(0,U.useCallback)(e=>u(e),[]),T=(0,U.useCallback)(e=>g({type:`sdd.board.retry`,payload:{taskId:e}}),[g]),D=(0,U.useCallback)(()=>g({type:`sdd.board.retry_all_failed`,payload:{}}),[g]),O=(0,U.useCallback)((e,t)=>{let n=t.trim();n&&g({type:`sdd.board.reassign`,payload:{taskId:e,agentName:n}})},[g]),A=(0,U.useCallback)((e,t,n)=>g({type:`sdd.board.set_task_model`,payload:{taskId:e,model:t,provider:n}}),[g]),j=(0,U.useCallback)((e,t)=>g({type:`sdd.board.set_task_verification`,payload:{taskId:e,verificationCommand:t}}),[g]),M=(0,U.useCallback)(e=>g({type:`sdd.board.cancel_task`,payload:{taskId:e}}),[g]),N=(0,U.useCallback)(e=>{g({type:`sdd.board.delete_task`,payload:{taskId:e}}),u(null)},[g]),P=(0,U.useCallback)((e,t)=>{g({type:`sdd.board.split_task`,payload:{taskId:e,subtasks:t}}),u(null)},[g]),F=Tp(l!==null),I=(0,U.useMemo)(()=>n?.tasks.find(e=>e.id===l)??null,[n?.tasks,l]),L=n?.progress,R=n?.diagnostics?.deadlockChains??[];return(0,Y.jsxs)(`div`,{className:`flex h-full flex-col bg-background`,children:[(0,Y.jsxs)(`header`,{className:`sdd-sheen shrink-0 border-b border-border px-4 pb-3 pt-2.5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(Dt,{className:`h-5 w-5 text-orange-400`}),(0,Y.jsx)(`h1`,{className:`text-lg font-semibold text-foreground`,children:n?.title??`Live SDD Board`}),n&&(0,Y.jsx)(`span`,{className:Z(`rounded-full border px-2 py-0.5 text-[11px] font-medium capitalize`,Ap[n.status]??Ap.idle),children:n.status}),n?.defaultModel&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 rounded-full border border-border bg-muted px-2 py-0.5 text-[10px] text-muted-foreground`,title:`Run-level default worker model (per-task overrides take precedence)`,children:[(0,Y.jsx)(k,{className:`h-3 w-3 text-violet-400`}),n.defaultModel]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n&&(0,Y.jsx)(`div`,{className:`flex items-center rounded-md border border-border bg-muted p-0.5 text-[11px]`,children:[`graph`,`kanban`].map(e=>(0,Y.jsx)(`button`,{type:`button`,onClick:()=>f(e),className:Z(`rounded px-2 py-0.5 capitalize transition`,d===e?`bg-violet-500/25 text-violet-700 dark:text-violet-200`:`text-muted-foreground hover:text-foreground`),children:e===`graph`?`Graph`:`Kanban`},e))}),h&&(L?.failed??0)>0&&(0,Y.jsxs)(`button`,{type:`button`,onClick:D,title:`Requeue every failed task to pending`,className:`inline-flex items-center gap-1 rounded-md bg-orange-500/15 px-2.5 py-1 text-xs font-medium text-orange-600 dark:text-orange-300 hover:bg-orange-500/25`,children:[(0,Y.jsx)(Xn,{className:`h-3.5 w-3.5`}),` Retry failed (`,L?.failed,`)`]}),h&&(0,Y.jsxs)(Y.Fragment,{children:[n?.status===`paused`?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>g({type:`sdd.board.resume`,payload:{}}),className:`inline-flex items-center gap-1 rounded-md bg-sky-500/15 px-2.5 py-1 text-xs font-medium text-sky-600 dark:text-sky-300 hover:bg-sky-500/25`,children:[(0,Y.jsx)(dr,{className:`h-3.5 w-3.5`}),` Resume`]}):(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>g({type:`sdd.board.pause`,payload:{}}),className:`inline-flex items-center gap-1 rounded-md bg-amber-500/15 px-2.5 py-1 text-xs font-medium text-amber-600 dark:text-amber-300 hover:bg-amber-500/25`,children:[(0,Y.jsx)(rn,{className:`h-3.5 w-3.5`}),` Pause`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>g({type:`sdd.board.stop`,payload:{}}),className:`inline-flex items-center gap-1 rounded-md bg-red-500/15 px-2.5 py-1 text-xs font-medium text-red-600 dark:text-red-300 hover:bg-red-500/25`,children:[(0,Y.jsx)(Ie,{className:`h-3.5 w-3.5`}),` Stop`]})]}),n&&!h&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:b,title:`Remove the run's git worktrees + wstack/ap branches`,className:`inline-flex items-center gap-1 rounded-md bg-slate-500/15 px-2.5 py-1 text-xs font-medium text-slate-600 dark:text-slate-300 hover:bg-slate-500/25`,children:[(0,Y.jsx)(Ce,{className:`h-3.5 w-3.5`}),` Clean worktrees`]}),(n.mergedCommits?.length??0)>0&&(0,Y.jsxs)(`button`,{type:`button`,onClick:x,title:`Revert ${n.mergedCommits?.length} merged commit(s) on ${n.baseBranch??`the base branch`}`,className:`inline-flex items-center gap-1 rounded-md bg-amber-500/15 px-2.5 py-1 text-xs font-medium text-amber-600 dark:text-amber-300 hover:bg-amber-500/25`,children:[(0,Y.jsx)(Ge,{className:`h-3.5 w-3.5`}),` Rollback (`,n.mergedCommits?.length,`)`]})]}),n&&(i?(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-md bg-red-500/15 px-2.5 py-1 text-xs font-medium text-red-600 dark:text-red-300`,children:[(0,Y.jsx)(Xn,{className:`h-3.5 w-3.5 animate-spin`}),` `,h?`Stopping…`:`Destroying…`]}):(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>m(!0),title:`Stop, remove all worktrees, optionally revert merged commits, and delete the SDD project`,className:`inline-flex items-center gap-1 rounded-md bg-red-600/90 px-2.5 py-1 text-xs font-medium text-white hover:bg-red-700`,children:[(0,Y.jsx)(yn,{className:`h-3.5 w-3.5`}),` Destroy`]})),(0,Y.jsx)($,{variant:`ghost`,size:`icon`,onClick:e,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]})]}),n&&L&&(0,Y.jsxs)(`div`,{className:`mt-2.5 flex items-center gap-5`,children:[(0,Y.jsx)(tm,{pct:L.percentComplete}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 text-xs`,children:[(0,Y.jsx)(am,{label:`done`,value:`${L.completed}/${L.total}`,color:`text-emerald-600 dark:text-emerald-300`}),L.inProgress>0&&(0,Y.jsx)(am,{label:`running`,value:L.inProgress,color:`text-amber-600 dark:text-amber-300`}),L.failed>0&&(0,Y.jsx)(am,{label:`failed`,value:L.failed,color:`text-red-600 dark:text-red-300`}),(0,Y.jsx)(am,{label:`wave`,value:n.wave+1,color:`text-violet-600 dark:text-violet-300`}),h&&n.startedAt>0&&(0,Y.jsx)(am,{label:`elapsed`,value:Pp(s-n.startedAt),color:`text-foreground`})]}),(0,Y.jsx)(`div`,{className:`flex min-h-[24px] items-center gap-1.5`,children:C.length===0?(0,Y.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:`no active workers`}):C.map((e,t)=>(0,Y.jsxs)(`span`,{title:`${e.name} → ${e.task}`,className:`flex items-center gap-1 rounded-full bg-muted py-0.5 pl-0.5 pr-2`,children:[(0,Y.jsx)(`span`,{className:Z(`sdd-agent-live flex h-5 w-5 items-center justify-center rounded-full text-[9px] font-bold text-white`,jp[t%jp.length]),children:Np(e.name)}),(0,Y.jsx)(`span`,{className:`max-w-[90px] truncate text-[11px] text-foreground`,children:e.name})]},e.name))})]})]})]}),r&&(0,Y.jsx)(im,{result:r,onDismiss:()=>o(null)}),R.length>0&&(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 border-b border-rose-500/30 bg-rose-500/5 px-4 py-2 text-xs text-rose-600 dark:text-rose-300`,children:[(0,Y.jsx)(E,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`font-semibold`,children:`Deadlock — tasks blocked by failed work:`}),R.map(e=>(0,Y.jsxs)(`div`,{className:`font-mono`,children:[e.blocked,` ← `,e.blockedBy.join(`, `)]},e.blocked))]})]}),(0,Y.jsxs)(`div`,{className:`flex min-h-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`relative min-w-0 flex-1`,children:n?d===`graph`?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(qp,{tasks:S,columns:n.columns,onTaskClick:w}),(0,Y.jsx)(`div`,{className:`pointer-events-none absolute bottom-2 left-1/2 -translate-x-1/2 rounded-full bg-black/40 px-2 py-0.5 text-[10px] text-muted-foreground backdrop-blur`,children:`click a task for details`})]}):(0,Y.jsx)(Yp,{tasks:n.tasks,selectedId:l,onTaskClick:w}):(0,Y.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3 text-sm text-muted-foreground`,children:[(0,Y.jsx)(Yt,{className:`h-10 w-10 text-violet-500/40`}),(0,Y.jsx)(`p`,{className:`text-foreground`,children:`No active SDD run.`}),(0,Y.jsxs)(`p`,{className:`max-w-sm text-center text-xs text-muted-foreground`,children:[`Start one from the `,(0,Y.jsx)(`span`,{className:`text-violet-400`,children:`New SDD Project`}),` wizard, or via `,(0,Y.jsx)(`code`,{className:`rounded bg-muted px-1`,children:`/sdd execute`}),` in the CLI — agents appear here live, each working an isolated worktree.`]})]})}),n&&(0,Y.jsx)(`aside`,{className:`w-80 shrink-0 border-l border-border bg-card`,children:I?(0,Y.jsx)(Qp,{task:I,allTasks:n.tasks,feed:n.feed??[],now:s,modelCandidates:F,defaultModel:n.defaultModel,onClose:()=>u(null),onRetry:T,onReassign:O,onSetModel:A,onSetVerification:j,onCancel:M,onDelete:N,onSplit:P,onSelectTask:u},I.id):(0,Y.jsx)(Ip,{feed:n.feed??[],now:s})})]}),(0,Y.jsx)(Lp,{open:p,onOpenChange:m,snapshot:n,busy:i,onConfirm:y})]})}function rm(e){let t=e.op===`cleanup_worktrees`?`Clean`:e.op===`rollback`?`Rollback`:`Destroy`;if(!e.ok)return`${t} failed: ${e.reason??`unknown error`}`;let n=[];typeof e.removed==`number`&&n.push(`${e.removed} worktree${e.removed===1?``:`s`} removed`),typeof e.reverted==`number`&&e.reverted>0&&n.push(`${e.reverted} commit${e.reverted===1?``:`s`} reverted`),e.deleted?.length&&n.push(`deleted ${e.deleted.join(`, `)}`);let r=n.length?n.join(` · `):`nothing to do`;return e.reason?`${t}: ${r} — note: ${e.reason}`:`${t}: ${r}`}function im({result:e,onDismiss:t}){let n=!e.ok||!!e.reason;return(0,Y.jsxs)(`div`,{className:Z(`flex items-start gap-2 border-b px-4 py-2 text-xs`,n?`border-amber-500/30 bg-amber-500/5 text-amber-700 dark:text-amber-300`:`border-emerald-500/30 bg-emerald-500/5 text-emerald-700 dark:text-emerald-300`),children:[n?(0,Y.jsx)(N,{className:`mt-0.5 h-4 w-4 shrink-0`}):(0,Y.jsx)(V,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,Y.jsx)(`span`,{className:`flex-1`,children:rm(e)}),(0,Y.jsx)(`button`,{type:`button`,onClick:t,className:`shrink-0 opacity-60 hover:opacity-100`,children:(0,Y.jsx)(H,{className:`h-3.5 w-3.5`})})]})}function am({label:e,value:t,color:n}){return(0,Y.jsxs)(`span`,{className:`flex items-baseline gap-1`,children:[(0,Y.jsx)(`span`,{className:Z(`font-semibold tabular-nums`,n),children:t}),(0,Y.jsx)(`span`,{className:`text-[10px] uppercase tracking-wide text-muted-foreground`,children:e})]})}function om({value:e,candidates:t,onChange:n,placeholder:r=`Add a fallback model…`,emptyHint:i=`Tried in order when the primary model rate-limits or stalls.`}){let[a,o]=(0,U.useState)(``),s=(t,r)=>{let i=t+r;if(i<0||i>=e.length)return;let a=[...e];[a[t],a[i]]=[a[i],a[t]],n(a)},c=t=>n(e.filter((e,n)=>n!==t)),l=(t,r)=>{let i=`${r}/${t}`;e.includes(i)||n([...e,i])},u=()=>{let t=a.trim().replace(/\s*\/\s*/g,`/`).replace(/\s+/g,` `);t&&(e.includes(t)||n([...e,t]),o(``))};return(0,Y.jsxs)(`div`,{className:`space-y-1.5`,children:[e.length>0&&(0,Y.jsx)(`ol`,{className:`space-y-1`,children:e.map((t,n)=>(0,Y.jsxs)(`li`,{className:`flex items-center gap-1.5 rounded-md border border-border bg-muted px-2 py-1 text-xs`,children:[(0,Y.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:n+1}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-foreground`,children:t}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>s(n,-1),disabled:n===0,className:`text-muted-foreground hover:text-foreground disabled:opacity-30`,title:`Move up`,children:(0,Y.jsx)(ur,{className:`h-3 w-3`})}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>s(n,1),disabled:n===e.length-1,className:`text-muted-foreground hover:text-foreground disabled:opacity-30`,title:`Move down`,children:(0,Y.jsx)(Zt,{className:`h-3 w-3`})}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>c(n),className:`text-muted-foreground hover:text-red-400`,title:`Remove`,children:(0,Y.jsx)(H,{className:`h-3 w-3`})})]},`${t}-${n}`))}),(0,Y.jsx)(Zp,{candidates:t,placeholder:r,onPick:l}),(0,Y.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,Y.jsx)(`input`,{value:a,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Enter`&&u()},placeholder:`provider/model`,className:`min-w-0 flex-1 rounded-md border border-border bg-background px-2 py-1.5 font-mono text-xs outline-none placeholder:text-muted-foreground`}),(0,Y.jsx)(`button`,{type:`button`,onClick:u,className:`rounded-md border border-border px-2 py-1.5 text-xs hover:bg-muted`,title:`Add model reference`,children:(0,Y.jsx)(Sn,{className:`h-3.5 w-3.5`})})]}),e.length===0&&(0,Y.jsxs)(`p`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground`,children:[(0,Y.jsx)(Sn,{className:`h-2.5 w-2.5`}),` `,i]})]})}var sm={idle:`Start`,questioning:`Interview`,spec_review:`Spec Review`,implementation:`Planning`,task_review:`Task Review`,executing:`Running`,done:`Done`},cm=[`questioning`,`spec_review`,`implementation`,`task_review`,`executing`];function lm({onClose:e}){let{client:t}=Vs(),n=Zi(e=>e.snapshot),r=Zi(e=>e.agentText),a=Zi(e=>e.error),o=Zi(e=>e.startedRunId),s=Zi(e=>e.setStartedRunId),c=J(e=>e.setCurrentView),[l,u]=(0,U.useState)(``),[d,f]=(0,U.useState)(``),[p,m]=(0,U.useState)(!1),[h,g]=(0,U.useState)(!0),[_,v]=(0,U.useState)(!0),[y,b]=(0,U.useState)(!1),[x,S]=(0,U.useState)(void 0),[C,w]=(0,U.useState)(void 0),[T,E]=(0,U.useState)([]),[D,k]=(0,U.useState)(4),[A,j]=(0,U.useState)(!0),M=Tp(y),N=(0,U.useCallback)(e=>t?.send?.(e),[t]),P=(0,U.useRef)(null);(0,U.useEffect)(()=>{N({type:`sdd.spec.get`})},[N]),(0,U.useEffect)(()=>{P.current?.scrollIntoView({behavior:`smooth`,block:`end`})},[n?.answers.length??0,r]),(0,U.useEffect)(()=>{o&&(c(`sddboard`),s(null))},[o,c,s]);let F=n?.busy??!1,I=n?.phase??`idle`,L=!!n;(0,U.useEffect)(()=>{L&&m(!1)},[L]);let z=n?.answers[n.answers.length-1]?.question??``,ee=!!n&&(n.taskCount>0||!!n.graphId||I===`task_review`||I===`executing`),te=()=>{let e=l.trim();!e||F||p||(m(!0),N({type:`sdd.spec.start`,payload:{goal:e}}))},ne=()=>{let e=d.trim();!e||F||(N({type:`sdd.spec.message`,payload:{text:e}}),f(``))},re=()=>!F&&N({type:`sdd.spec.approve`,payload:{}}),B=()=>{N({type:`sdd.run.start`,payload:{parallelSlots:D,worktrees:A,...x?{model:x,provider:C}:{},...T.length?{fallbackModels:T}:{}}}),b(!1)},V=(0,U.useMemo)(()=>(n?.board?.tasks??[]).map(e=>({id:e.id,shortId:e.shortId,title:e.title,displayStatus:e.displayStatus,priority:e.priority,deps:e.deps,agentName:e.agentName,worktreeBranch:e.worktreeBranch,retries:e.retries})),[n?.board]),ie=V.length>0;return(0,Y.jsxs)(`div`,{className:`flex h-full flex-col bg-background`,children:[(0,Y.jsxs)(`header`,{className:`sdd-sheen flex shrink-0 items-center justify-between border-b border-border px-4 py-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)($e,{className:`h-5 w-5 text-violet-400`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h1`,{className:`text-lg font-semibold`,children:n?.title||`New SDD Project`}),L&&(0,Y.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[sm[I]??I,I===`questioning`&&` · ${n?.questionCount}/${n?.maxQuestions} questions`,n&&n.taskCount>0?` · ${n.taskCount} tasks`:``]})]}),F&&(0,Y.jsx)(O,{className:`h-4 w-4 animate-spin text-muted-foreground`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[ee&&(0,Y.jsxs)(`div`,{className:`relative flex items-center gap-1.5`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>b(e=>!e),title:`Run config — default model + fallback chain`,className:Z(`inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs font-medium`,x||T.length?`border-violet-500/40 bg-violet-500/10 text-violet-600 dark:text-violet-300`:`border-border bg-muted text-muted-foreground hover:text-foreground`),children:[(0,Y.jsx)(R,{className:`h-3.5 w-3.5`}),x||`Models`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:B,className:`inline-flex items-center gap-1 rounded-md bg-emerald-500/15 px-2.5 py-1 text-xs font-medium text-emerald-700 hover:bg-emerald-500/25 dark:text-emerald-400`,children:[(0,Y.jsx)(ln,{className:`h-3.5 w-3.5`}),` Start Run`]}),y&&(0,Y.jsxs)(`div`,{className:`sdd-rise absolute right-0 top-9 z-50 w-72 rounded-lg border border-border bg-popover p-3 shadow-xl`,children:[(0,Y.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:`Default worker model`}),(0,Y.jsx)(Zp,{value:x,provider:C,candidates:M,placeholder:`Leader / session default`,resetLabel:`Use session default`,onPick:(e,t)=>{S(e),w(t)},onReset:x?()=>{S(void 0),w(void 0)}:void 0}),(0,Y.jsx)(`div`,{className:`mb-1 mt-3 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:`Fallback chain`}),(0,Y.jsx)(om,{value:T,candidates:M,onChange:E}),(0,Y.jsx)(`p`,{className:`mt-2 text-[10px] text-muted-foreground`,children:`Applies to every task. Override per-task from the live board after the run starts.`}),(0,Y.jsxs)(`div`,{className:`mt-3 flex items-center justify-between gap-2`,children:[(0,Y.jsx)(`label`,{htmlFor:`sdd-slots`,className:`text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:`Parallel agents`}),(0,Y.jsx)(`input`,{id:`sdd-slots`,type:`number`,min:1,max:16,value:D,onChange:e=>{let t=Number.parseInt(e.target.value,10);k(Number.isFinite(t)?Math.min(16,Math.max(1,t)):1)},className:`w-16 rounded-md border border-border bg-background px-2 py-1 text-right text-xs outline-none focus:border-violet-500`})]}),(0,Y.jsxs)(`label`,{className:`mt-2 flex cursor-pointer items-center justify-between gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:`Isolate in git worktrees`}),(0,Y.jsx)(`input`,{type:`checkbox`,checked:A,onChange:e=>j(e.target.checked),className:`h-3.5 w-3.5 accent-violet-500`})]}),(0,Y.jsx)(`p`,{className:`mt-1 text-[10px] text-muted-foreground`,children:A?`Each task runs in its own worktree, squash-merged back on completion.`:`Tasks run directly on the current branch (no isolation).`})]})]}),(0,Y.jsx)($,{variant:`ghost`,size:`icon`,onClick:e,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]})]}),L&&(0,Y.jsx)(`div`,{className:`flex shrink-0 items-center gap-1 border-b bg-card/50 px-4 py-1.5 text-[11px]`,children:cm.map((e,t)=>{let n=e===I,r=cm.indexOf(I)>t;return(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsxs)(`span`,{className:Z(`rounded-full px-2 py-0.5`,n?`bg-violet-500/20 text-violet-600 dark:text-violet-300`:r?`text-emerald-600 dark:text-emerald-400`:`text-muted-foreground`),children:[r&&(0,Y.jsx)(jn,{className:`mr-0.5 inline h-3 w-3`}),sm[e]]}),t<cm.length-1&&(0,Y.jsx)(`span`,{className:`text-muted-foreground/40`,children:`→`})]},e)})}),(0,Y.jsxs)(`div`,{className:`flex-1 overflow-auto p-4`,children:[a&&(0,Y.jsx)(`div`,{className:`mb-3 rounded-md border border-red-500/40 bg-red-500/5 p-2 text-xs text-red-300`,children:a}),L?(0,Y.jsxs)(`div`,{className:`space-y-4`,children:[ie&&(0,Y.jsxs)(`div`,{className:`sdd-rise overflow-hidden rounded-lg border border-violet-500/20 bg-[#0a0d14]`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>g(e=>!e),className:`flex w-full items-center gap-1.5 border-b border-white/5 px-3 py-1.5 text-[11px] font-medium text-violet-300 hover:bg-white/5`,children:[h?(0,Y.jsx)(ar,{className:`h-3.5 w-3.5`}):(0,Y.jsx)(i,{className:`h-3.5 w-3.5`}),(0,Y.jsx)(Er,{className:`h-3.5 w-3.5`}),`Task graph · `,n?.taskCount,` tasks, dependency-ordered`,(0,Y.jsx)(`span`,{className:`ml-auto text-slate-500`,children:h?`drag to explore`:`show`})]}),h&&(0,Y.jsx)(`div`,{className:`h-[32vh] min-h-[200px]`,children:(0,Y.jsx)(qp,{tasks:V,columns:n?.board?.columns??[]})})]}),(0,Y.jsxs)(`div`,{className:`mx-auto max-w-2xl space-y-3`,children:[n?.goal&&(0,Y.jsxs)(`div`,{className:`rounded-md border border-border bg-muted/30 px-3 py-2`,children:[(0,Y.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[(0,Y.jsx)(ge,{className:`h-3 w-3`}),` Goal`]}),(0,Y.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:n.goal})]}),n?.answers.length||r&&I===`questioning`||F?(0,Y.jsxs)(`div`,{className:`space-y-2.5`,children:[n?.answers.map((e,t)=>(0,Y.jsxs)(`div`,{className:`space-y-2.5`,children:[(0,Y.jsx)(dm,{role:`assistant`,text:e.question}),(0,Y.jsx)(dm,{role:`user`,text:e.answer})]},t)),r&&I===`questioning`&&r!==z&&(0,Y.jsx)(dm,{role:`assistant`,text:r}),F&&(0,Y.jsx)(dm,{role:`assistant`,text:``,thinking:!0})]}):null,n?.spec&&(0,Y.jsxs)(`div`,{className:`sdd-rise rounded-md border border-border bg-card p-3`,children:[(0,Y.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-sm font-semibold`,children:[(0,Y.jsx)($e,{className:`h-3.5 w-3.5 text-violet-400`}),n.spec.title]}),(0,Y.jsx)(`p`,{className:`mb-2 text-xs text-muted-foreground`,children:n.spec.overview}),(0,Y.jsx)(`ul`,{className:`space-y-0.5 text-xs`,children:n.spec.requirements.map((e,t)=>(0,Y.jsxs)(`li`,{className:`flex gap-1.5`,children:[(0,Y.jsx)(`span`,{className:Z(`shrink-0 font-mono uppercase`,kp(e.priority).text),children:e.priority[0]}),(0,Y.jsx)(`span`,{children:e.description})]},t))})]}),r&&(I===`implementation`||I===`task_review`)&&(0,Y.jsxs)(`div`,{className:`sdd-rise rounded-md border border-border bg-card`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>v(e=>!e),className:`flex w-full items-center gap-1.5 border-b border-border/60 px-3 py-2 text-sm font-semibold hover:bg-muted/40`,children:[_?(0,Y.jsx)(ar,{className:`h-3.5 w-3.5`}):(0,Y.jsx)(i,{className:`h-3.5 w-3.5`}),(0,Y.jsx)($e,{className:`h-3.5 w-3.5 text-violet-400`}),` Implementation plan`]}),_&&(0,Y.jsx)(`div`,{className:`max-h-[40vh] overflow-auto px-3 py-2`,children:(0,Y.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:um(r)})})]}),r&&I!==`questioning`&&I!==`implementation`&&I!==`task_review`&&!n?.spec&&(0,Y.jsx)(dm,{role:`assistant`,text:r}),(I===`spec_review`||I===`implementation`||I===`task_review`)&&(0,Y.jsxs)($,{variant:`secondary`,onClick:re,disabled:F,children:[(0,Y.jsx)(jn,{className:`mr-1.5 h-4 w-4`}),I===`spec_review`?`Approve spec → plan implementation`:I===`task_review`?`Approve tasks`:`Approve plan`]}),(0,Y.jsx)(`div`,{ref:P})]})]}):(0,Y.jsxs)(`div`,{className:`mx-auto mt-8 max-w-xl`,children:[(0,Y.jsx)(`label`,{className:`mb-2 block text-sm font-medium`,htmlFor:`sdd-goal`,children:`What do you want to build?`}),(0,Y.jsx)(`textarea`,{id:`sdd-goal`,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&te()},rows:4,placeholder:`e.g. Add OAuth login (Google + GitHub) with session management`,className:`w-full resize-none rounded-md border border-border bg-card px-3 py-2 text-sm outline-none focus:border-violet-500`}),(0,Y.jsx)($,{className:`mt-3`,onClick:te,disabled:!l.trim()||p,children:p?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(O,{className:`mr-1.5 h-4 w-4 animate-spin`}),` Starting interview…`]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)($e,{className:`mr-1.5 h-4 w-4`}),` Start Interview`]})}),(0,Y.jsx)(`p`,{className:`mt-3 text-xs text-muted-foreground`,children:`An isolated agent interviews you to build a spec, decomposes it into a dependency-ordered task graph, then a real multi-agent fleet executes it — watch live on the board.`})]})]}),L&&I!==`executing`&&I!==`done`&&(0,Y.jsxs)(`div`,{className:`flex shrink-0 items-end gap-2 border-t bg-card px-4 py-2`,children:[(0,Y.jsx)(`textarea`,{value:d,onChange:e=>f(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),ne())},rows:1,placeholder:I===`questioning`?`Answer the question…`:`Request a change…`,disabled:F,className:`max-h-32 flex-1 resize-none rounded-md border border-border bg-background px-3 py-2 text-sm outline-none focus:border-violet-500 disabled:opacity-50`}),(0,Y.jsx)($,{size:`icon`,onClick:ne,disabled:F||!d.trim(),children:(0,Y.jsx)(ht,{className:`h-4 w-4`})})]})]})}function um(e){let t=e.replace(/```json[\s\S]*?```/gi,``).trim();return t.length>0?t:e.trim()}function dm({role:e,text:t,live:n,thinking:r}){let i=e===`user`;return(0,Y.jsxs)(`div`,{className:Z(`sdd-rise flex items-start gap-2`,i&&`flex-row-reverse`),children:[(0,Y.jsx)(`span`,{className:Z(`mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full`,i?`bg-sky-500/20 text-sky-600 dark:text-sky-300`:`bg-violet-500/20 text-violet-600 dark:text-violet-300`,(n||r)&&`sdd-agent-live`),children:i?(0,Y.jsx)(Or,{className:`h-3.5 w-3.5`}):(0,Y.jsx)(In,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(`div`,{className:Z(`max-w-[80%] whitespace-pre-wrap rounded-2xl px-3 py-2 text-sm leading-relaxed text-foreground`,i?`rounded-tr-sm bg-sky-500/15`:`rounded-tl-sm bg-muted`),children:r?(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 py-0.5`,children:[(0,Y.jsx)(`span`,{className:`h-1.5 w-1.5 animate-bounce rounded-full bg-muted-foreground [animation-delay:-200ms]`}),(0,Y.jsx)(`span`,{className:`h-1.5 w-1.5 animate-bounce rounded-full bg-muted-foreground [animation-delay:-100ms]`}),(0,Y.jsx)(`span`,{className:`h-1.5 w-1.5 animate-bounce rounded-full bg-muted-foreground`})]}):t})]})}function fm(e){switch(e){case`running`:return`▶`;case`streaming`:return`↻`;case`waiting_user`:return`⏳`;case`error`:return`✗`;case`idle`:return`■`;default:return`?`}}function pm(e){switch(e){case`running`:return`text-emerald-400`;case`streaming`:return`text-cyan-400`;case`waiting_user`:return`text-amber-400`;case`error`:return`text-red-400`;default:return`text-slate-500`}}function mm(e){switch(e){case`active`:return`text-emerald-400`;case`idle`:return`text-cyan-400`;case`closing`:return`text-amber-400`;default:return`text-slate-500`}}function hm(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/6e4);if(n<1)return`<1m`;if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d`}function gm(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/1e3);if(n<10)return`just now`;if(n<60)return`${n}s ago`;let r=Math.floor(n/60);return r<60?`${r}m ago`:`${Math.floor(r/60)}h ago`}function _m(){let[e,t]=(0,U.useState)([]),[n,r]=(0,U.useState)(!0),[i,a]=(0,U.useState)(null),o=(0,U.useCallback)(async()=>{try{let e=await fetch(`/api/sessions`);if(!e.ok){if(e.status===404){a(null),t([]);return}throw Error(`HTTP ${e.status}`)}t(await e.json()),a(null)}catch(e){a(e instanceof Error?e.message:String(e))}finally{r(!1)}},[]);return(0,U.useEffect)(()=>{o();let e=setInterval(o,5e3);return()=>clearInterval(e)},[o]),n?(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 p-4 text-slate-400`,children:[(0,Y.jsx)(O,{className:`h-4 w-4 animate-spin`}),`Loading sessions...`]}):i?(0,Y.jsxs)(`div`,{className:`p-4 text-slate-500 text-sm`,children:[`Session API unavailable — run `,(0,Y.jsx)(`code`,{className:`text-cyan-400`,children:`wstack --webui`}),` with session tracking enabled.`]}):e.length===0?(0,Y.jsx)(`div`,{className:`p-4 text-slate-500 text-sm`,children:`No live sessions. Open another wstack instance to see it here.`}):(0,Y.jsxs)(`div`,{className:`p-4 space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mb-4`,children:[(0,Y.jsxs)(`h2`,{className:`text-sm font-semibold text-slate-200 uppercase tracking-wider`,children:[`Live Sessions (`,e.length,`)`]}),(0,Y.jsx)(`span`,{className:`text-xs text-slate-500`,children:`auto-refresh every 5s`})]}),e.map(e=>(0,Y.jsxs)(`div`,{className:`rounded-lg border border-slate-700 bg-slate-800/50 p-3 space-y-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Y.jsx)(`span`,{className:mm(e.status),children:e.status===`active`?(0,Y.jsx)(on,{className:`h-3.5 w-3.5 inline`}):e.status===`idle`?(0,Y.jsx)(en,{className:`h-3.5 w-3.5 inline`}):null}),(0,Y.jsx)(`span`,{className:`font-medium text-slate-200 text-sm`,children:e.projectName}),(0,Y.jsxs)(`span`,{className:`text-slate-500 text-xs`,children:[`[`,e.projectSlug,`]`]}),e.gitBranch?(0,Y.jsxs)(`span`,{className:`text-purple-400 text-xs flex items-center gap-1`,children:[(0,Y.jsx)(fr,{className:`h-3 w-3`}),e.gitBranch]}):null,(0,Y.jsxs)(`span`,{className:`text-slate-500 text-xs ml-auto flex items-center gap-1`,children:[(0,Y.jsx)(L,{className:`h-3 w-3`}),hm(e.startedAt)]}),(0,Y.jsxs)(`span`,{className:`text-slate-600 text-xs`,children:[`PID `,e.pid]})]}),(0,Y.jsxs)(`div`,{className:`text-slate-500 text-xs flex items-center gap-1`,children:[(0,Y.jsx)(k,{className:`h-3 w-3`}),e.workingDir]}),(0,Y.jsxs)(`div`,{className:`space-y-1 mt-2`,children:[e.agents.slice(0,5).map(e=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs pl-2 border-l-2 border-slate-700`,children:[(0,Y.jsx)(`span`,{className:pm(e.status),children:fm(e.status)}),(0,Y.jsx)(`span`,{className:`text-slate-300 font-medium`,children:e.name}),e.currentTool?(0,Y.jsxs)(`span`,{className:`text-slate-500`,children:[`[`,e.currentTool,`]`]}):null,(0,Y.jsxs)(`span`,{className:`text-slate-600 ml-auto`,children:[e.iterations,` iter · `,e.toolCalls,` tools · `,gm(e.lastActivityAt)]})]},e.id)),e.agents.length>5?(0,Y.jsxs)(`div`,{className:`text-slate-600 text-xs pl-4`,children:[`... and `,e.agents.length-5,` more`]}):null,e.agents.length===0?(0,Y.jsx)(`div`,{className:`text-slate-600 text-xs pl-4`,children:`No agents`}):null]})]},e.sessionId))]})}var vm=re(`inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground hover:bg-primary/80`,secondary:`border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80`,destructive:`border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80`,outline:`text-foreground`}},defaultVariants:{variant:`default`}});function ym({className:e,variant:t,...n}){return(0,Y.jsx)(`div`,{className:Z(vm({variant:t}),e),...n})}var bm=[{name:`filesystem`,description:`Read, write, and navigate the local filesystem. Good for exploring projects.`,transport:`stdio`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-filesystem`,`.`]},{name:`github`,description:`GitHub API — issues, PRs, repos, search, and file operations.`,transport:`stdio`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-github`],requiresEnvVars:[`GITHUB_PERSONAL_ACCESS_TOKEN`],badge:`Popular`},{name:`context7`,description:`Codebase-aware documentation and Q&A grounded in your actual library versions.`,transport:`streamable-http`,url:`https://mcp.context7.com/mcp`,badge:`New`},{name:`brave-search`,description:`Web search via Brave Browser. Free tier: 2,000 queries/month.`,transport:`stdio`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-brave-search`],requiresEnvVars:[`BRAVE_SEARCH_API_KEY`]},{name:`google-maps`,description:`Directions, geocoding, places, and distance matrix via Google Maps.`,transport:`stdio`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-google-maps`],requiresEnvVars:[`GOOGLE_MAPS_API_KEY`]},{name:`aws`,description:`AWS — EC2, S3, Lambda, IAM, CloudFormation, and cost management.`,transport:`stdio`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-aws`],requiresEnvVars:[`AWS_ACCESS_KEY_ID`,`AWS_SECRET_ACCESS_KEY`]},{name:`slack`,description:`Slack — messaging, channels, and search.`,transport:`stdio`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-slack`],requiresEnvVars:[`SLACK_BOT_TOKEN`]},{name:`everart`,description:`AI image generation via multiple providers.`,transport:`stdio`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-everart`],requiresEnvVars:[`EVERART_API_KEY`]},{name:`sentinel`,description:`Security vulnerability scanning via Sentinel.`,transport:`streamable-http`,url:`https://mcp.sentinel.ai`,badge:`Security`},{name:`playwright`,description:`Browser automation — navigate, click, type, screenshot, evaluate JS (headless Chromium).`,transport:`stdio`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-playwright`],badge:`Browser`},{name:`zai-vision`,description:`Image analysis, screenshot understanding, and diagram interpretation.`,transport:`stdio`,command:`npx`,args:[`-y`,`@z_ai/mcp-server@latest`],env:{Z_AI_MODE:`ZAI`},requiresEnvVars:[`Z_AI_API_KEY`],allowedTools:[`image_analysis`,`extract_text_from_screenshot`,`diagnose_error_screenshot`,`understand_technical_diagram`,`analyze_data_visualization`,`ui_diff_check`],badge:`Vision`},{name:`minimax-vision`,description:`MiniMax image understanding via understand_image (read-only, safe for auto-run).`,transport:`stdio`,command:`uvx`,args:[`minimax-coding-plan-mcp`,`-y`],env:{MINIMAX_MCP_BASE_PATH:`./.wrongstack/minimax-output`,MINIMAX_API_HOST:`https://api.minimax.io`,MINIMAX_API_RESOURCE_MODE:`url`},requiresEnvVars:[`MINIMAX_API_KEY`],allowedTools:[`understand_image`],badge:`Vision`},{name:`block`,description:`Postgres database access via SQL (Block MCP server).`,transport:`stdio`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-block`],requiresEnvVars:[`DATABASE_URL`]}];function xm(e,t=!1){return{name:e.name,description:e.description,transport:e.transport,command:e.command,args:e.args,url:e.url,env:e.env,allowedTools:e.allowedTools,enabled:t}}function Sm(e){switch(e){case`connected`:return{label:`Connected`,color:`bg-green-500`};case`connecting`:return{label:`Connecting`,color:`bg-yellow-500`};case`sleeping`:return{label:`Sleeping`,color:`bg-blue-500`};case`discovering`:return{label:`Discovering`,color:`bg-purple-500`};case`error`:return{label:`Error`,color:`bg-red-500`};case`stopped`:return{label:`Stopped`,color:`bg-gray-500`};default:return{label:`Unknown`,color:`bg-gray-400`}}}function Cm({status:e}){let{color:t}=Sm(e);return(0,Y.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full ${t}`})}function wm({server:e,onWake:t,onSleep:n,onDiscover:r,onEdit:a,onRemove:o}){let[s,c]=(0,U.useState)(!1),{color:l}=Sm(e.status);return(0,Y.jsxs)(`div`,{className:`border rounded-lg p-3 bg-card`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`button`,{className:`flex items-center gap-2 flex-1 text-left`,onClick:()=>c(!s),children:[s?(0,Y.jsx)(ar,{className:`w-4 h-4`}):(0,Y.jsx)(i,{className:`w-4 h-4`}),(0,Y.jsx)(Cm,{status:e.status}),(0,Y.jsx)(`span`,{className:`font-medium`,children:e.name}),(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.transport}),!e.enabled&&(0,Y.jsx)(ym,{variant:`outline`,className:`text-xs`,children:`Disabled`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,onClick:e=>e.stopPropagation(),children:[e.status===`sleeping`&&(0,Y.jsx)($,{variant:`ghost`,size:`sm`,onClick:t,title:`Wake server`,children:(0,Y.jsx)(A,{className:`w-4 h-4`})}),(e.status===`connected`||e.status===`connecting`)&&(0,Y.jsx)($,{variant:`ghost`,size:`sm`,onClick:n,title:`Sleep server`,children:(0,Y.jsx)(g,{className:`w-4 h-4`})}),(e.status===`stopped`||e.status===`sleeping`)&&(0,Y.jsx)($,{variant:`ghost`,size:`sm`,onClick:r,title:`Discover tools`,children:(0,Y.jsx)(Me,{className:`w-4 h-4`})}),(0,Y.jsx)($,{variant:`ghost`,size:`sm`,onClick:a,title:`Edit`,children:(0,Y.jsx)(Dn,{className:`w-4 h-4`})}),(0,Y.jsx)($,{variant:`ghost`,size:`sm`,onClick:o,title:`Remove`,className:`text-destructive hover:text-destructive`,children:(0,Y.jsx)(yn,{className:`w-4 h-4`})})]})]}),s&&(0,Y.jsxs)(`div`,{className:`mt-3 pl-6 text-sm space-y-2`,children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-1`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`Status:`}),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:`inline-block w-2 h-2 rounded-full ${l}`}),Sm(e.status).label]}),(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`Enabled:`}),(0,Y.jsx)(`span`,{children:e.enabled?`Yes`:`No`}),e.description&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`Description:`}),(0,Y.jsx)(`span`,{children:e.description})]}),e.pid&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`PID:`}),(0,Y.jsx)(`span`,{children:e.pid})]}),e.error&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`Error:`}),(0,Y.jsx)(`span`,{className:`text-destructive`,children:e.error})]})]}),e.tools&&e.tools.length>0&&(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Tools (`,e.tools.length,`):`]}),(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-1`,children:e.tools.map(e=>(0,Y.jsx)(ym,{variant:`secondary`,className:`text-xs`,children:e},e))})]}),(!e.tools||e.tools.length===0)&&e.status===`connected`&&(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`No tools discovered yet`})]})]})}function Tm({open:e,onOpenChange:t,server:n,onSave:r,prefillConfig:i}){let[a,o]=(0,U.useState)(n?.name??i?.name??``),[s,c]=(0,U.useState)(n?.transport??i?.transport??`stdio`),[l,u]=(0,U.useState)(n?.description??i?.description??``),[d,f]=(0,U.useState)(i?.command??``),[p,m]=(0,U.useState)(i?.args?.join(` `)??``),[h,g]=(0,U.useState)(``),[_,v]=(0,U.useState)(i?.url??``),[y,b]=(0,U.useState)(n?.enabled??!0),[x,S]=(0,U.useState)(n?.lazy??i?.lazy??!1);(0,U.useEffect)(()=>{e&&(n?(o(n.name),c(n.transport),u(n.description??``),b(n.enabled),S(n.lazy??!1),f(``),m(``),g(``),v(``)):i?(o(i.name),c(i.transport),u(i.description??``),b(!0),S(i.lazy??!1),f(i.command??``),m(i.args?.join(` `)??``),g(i.env?Object.entries(i.env).map(([e,t])=>`${e}=${t}`).join(`
137
+ `):``),v(i.url??``)):(o(``),c(`stdio`),u(``),b(!0),S(!1),f(``),m(``),g(``),v(``)))},[n,i,e]);let C=()=>{if(!a.trim()){Q.error(`Server name is required`);return}let e={};if(h.trim())for(let t of h.trim().split(`
138
+ `)){let n=t.indexOf(`=`);n>0&&(e[t.slice(0,n).trim()]=t.slice(n+1).trim())}r({name:a.trim(),transport:s,description:l.trim()||void 0,enabled:y,command:d.trim()||void 0,args:p.trim()?p.trim().split(/\s+/):void 0,env:Object.keys(e).length>0?e:void 0,url:_.trim()||void 0,lazy:x}),t(!1)},w=!!n,T=!!i;return(0,Y.jsx)(Uc,{open:e,onOpenChange:t,children:(0,Y.jsxs)(qc,{children:[(0,Y.jsx)(Jc,{children:(0,Y.jsx)(Xc,{children:w?`Edit MCP Server`:T?`Add MCP Server`:`Add Custom MCP Server`})}),(0,Y.jsxs)(`div`,{className:`space-y-4 py-4`,children:[(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(`label`,{className:`text-sm font-medium`,children:`Name`}),(0,Y.jsx)(Qc,{value:a,onChange:e=>o(e.target.value),placeholder:`e.g., github, filesystem`,disabled:w||T})]}),(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(`label`,{className:`text-sm font-medium`,children:`Transport`}),(0,Y.jsxs)(`select`,{className:`w-full h-10 px-3 rounded-md border border-input bg-background text-sm`,value:s,onChange:e=>c(e.target.value),disabled:T,children:[(0,Y.jsx)(`option`,{value:`stdio`,children:`stdio`}),(0,Y.jsx)(`option`,{value:`sse`,children:`sse`}),(0,Y.jsx)(`option`,{value:`streamable-http`,children:`streamable-http`}),(0,Y.jsx)(`option`,{value:`http`,children:`http`})]})]}),(s===`streamable-http`||s===`sse`||s===`http`)&&(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(`label`,{className:`text-sm font-medium`,children:`URL`}),(0,Y.jsx)(Qc,{value:_,onChange:e=>v(e.target.value),placeholder:`https://mcp.example.com/mcp`,disabled:T})]}),s===`stdio`&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(`label`,{className:`text-sm font-medium`,children:`Command`}),(0,Y.jsx)(Qc,{value:d,onChange:e=>f(e.target.value),placeholder:`e.g., npx`,disabled:T})]}),(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsxs)(`label`,{className:`text-sm font-medium`,children:[`Args `,(0,Y.jsx)(`span`,{className:`text-muted-foreground font-normal`,children:`(space-separated)`})]}),(0,Y.jsx)(Qc,{value:p,onChange:e=>m(e.target.value),placeholder:`e.g., -y @modelcontextprotocol/server-github`,disabled:T})]})]}),(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsxs)(`label`,{className:`text-sm font-medium`,children:[`Env vars`,` `,(0,Y.jsx)(`span`,{className:`text-muted-foreground font-normal`,children:`(KEY=value, one per line)`})]}),(0,Y.jsx)(`textarea`,{className:`w-full h-20 px-3 py-2 rounded-md border border-input bg-background text-sm font-mono resize-none`,value:h,onChange:e=>g(e.target.value),placeholder:`GITHUB_TOKEN=ghp_...
139
+ AWS_REGION=us-east-1`})]}),(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(`label`,{className:`text-sm font-medium`,children:`Description`}),(0,Y.jsx)(Qc,{value:l,onChange:e=>u(e.target.value),placeholder:`GitHub MCP server for repository access`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`input`,{type:`checkbox`,id:`server-enabled`,checked:y,onChange:e=>b(e.target.checked),className:`rounded`}),(0,Y.jsx)(`label`,{htmlFor:`server-enabled`,className:`text-sm`,children:`Enable server`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`input`,{type:`checkbox`,id:`server-lazy`,checked:x,onChange:e=>S(e.target.checked),className:`rounded`}),(0,Y.jsxs)(`label`,{htmlFor:`server-lazy`,className:`text-sm`,children:[`Lazy connect`,` `,(0,Y.jsx)(`span`,{className:`text-muted-foreground font-normal`,children:`(don't start until first tool call; auto-sleeps when idle)`})]})]})]}),(0,Y.jsxs)(Yc,{children:[(0,Y.jsx)($,{variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,Y.jsx)($,{onClick:C,children:w?`Save Changes`:`Add Server`})]})]})})}function Em({server:e,isAdded:t,onAdd:n}){return(0,Y.jsxs)(`div`,{className:`border rounded-lg p-3 bg-card flex items-start justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Y.jsx)(`span`,{className:`font-medium text-sm`,children:e.name}),e.badge&&(0,Y.jsx)(ym,{variant:`secondary`,className:`text-xs shrink-0`,children:e.badge}),(0,Y.jsx)(ym,{variant:`outline`,className:`text-xs shrink-0`,children:e.transport})]}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1`,children:e.description}),e.requiresEnvVars&&e.requiresEnvVars.length>0&&(0,Y.jsxs)(`p`,{className:`text-xs text-amber-600 dark:text-amber-400 mt-1`,children:[`Requires: `,e.requiresEnvVars.join(`, `)]})]}),(0,Y.jsx)(`div`,{className:`shrink-0`,children:t?(0,Y.jsxs)($,{variant:`ghost`,size:`sm`,disabled:!0,children:[(0,Y.jsx)(jn,{className:`w-4 h-4 mr-1`}),`Added`]}):(0,Y.jsxs)($,{size:`sm`,variant:`outline`,onClick:n,children:[(0,Y.jsx)(Sn,{className:`w-4 h-4 mr-1`}),`Add`]})})]})}function Dm(){let e=Vs(),[t,n]=(0,U.useState)([]),[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(`list`),[s,c]=(0,U.useState)(),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(!1),[p,m]=(0,U.useState)(),[h,g]=(0,U.useState)(null);(0,U.useEffect)(()=>{if(!e.client)return;let t=e=>{if(e.type===`mcp.list`){let t=e.payload;n(t.servers??[]),i(!1)}},r=e=>{if(e.type===`mcp.server.added`){let t=e.payload;n(e=>[...e.filter(e=>e.name!==t.server.name),t.server]),Q.success(`Server "${t.server.name}" added`)}},a=e=>{if(e.type===`mcp.server.removed`){let t=e.payload;n(e=>e.filter(e=>e.name!==t.name)),Q.success(`Server "${t.name}" removed`)}},o=e=>{if(e.type===`mcp.server.updated`){let t=e.payload;n(e=>e.map(e=>e.name===t.server.name?t.server:e))}},s=e=>{if(e.type===`mcp.server.discovered`){let t=e.payload;n(e=>e.map(e=>e.name===t.name?{...e,status:`sleeping`,tools:t.tools}:e)),g(null),Q.success(`Discovered ${t.tools.length} tools from "${t.name}"`)}},c=e=>{if(e.type===`mcp.server.sleeping`){let t=e.payload;n(e=>e.map(e=>e.name===t.name?{...e,status:`sleeping`}:e)),g(null),Q.info(`Server "${t.name}" is now sleeping`)}},l=e=>{if(e.type===`mcp.server.waking`){let t=e.payload;n(e=>e.map(e=>e.name===t.name?{...e,status:`connecting`}:e))}},u=e=>{if(e.type===`mcp.server.connected`){let t=e.payload;n(e=>e.map(e=>e.name===t.name?{...e,status:`connected`,pid:t.pid,error:void 0,lastError:void 0}:e)),g(null),Q.success(`Server "${t.name}" connected`)}},d=e=>{if(e.type===`mcp.server.reconnected`){let t=e.payload;n(e=>e.map(e=>e.name===t.name?{...e,status:`connected`,error:void 0,lastError:void 0}:e)),g(null),Q.success(`Server "${t.name}" reconnected`)}},f=e=>{if(e.type===`mcp.server.disconnected`){let t=e.payload;n(e=>e.map(e=>e.name===t.name?{...e,status:`error`,error:t.reason,lastError:t.reason,pid:void 0}:e)),g(null),Q.warn(`Server "${t.name}" disconnected: ${t.reason}`)}},p=e=>{if(e.type===`mcp.server.error`){let t=e.payload;n(e=>e.map(e=>e.name===t.name?{...e,status:`error`,error:t.error}:e)),g(null),Q.error(`Server "${t.name}" error: ${t.error}`)}},m=e=>{if(e.type===`mcp.operation_result`){let t=e.payload;t.success||Q.error(t.message),g(null)}},h=e.client.on(`mcp.list`,t),_=e.client.on(`mcp.server.added`,r),v=e.client.on(`mcp.server.removed`,a),y=e.client.on(`mcp.server.updated`,o),b=e.client.on(`mcp.server.discovered`,s),x=e.client.on(`mcp.server.sleeping`,c),S=e.client.on(`mcp.server.waking`,l),C=e.client.on(`mcp.server.connected`,u),w=e.client.on(`mcp.server.error`,p),T=e.client.on(`mcp.operation_result`,m),E=e.client.on(`mcp.server.reconnected`,d),D=e.client.on(`mcp.server.disconnected`,f);return i(!0),e.client?.listMcpServers(),()=>{h?.(),_?.(),v?.(),y?.(),b?.(),x?.(),S?.(),C?.(),w?.(),T?.(),E?.(),D?.()}},[e.client]);let _=(0,U.useCallback)(t=>{e.client?.addMcpServer(t)},[e]),v=(0,U.useCallback)(e=>{m(xm(e,!1)),f(!0)},[]),y=(0,U.useCallback)(t=>{el({title:`Remove server "${t}"?`,message:`This removes the MCP server from your configuration.`,confirmLabel:`Remove`,danger:!0}).then(n=>{n&&e.client?.removeMcpServer(t)})},[e]),b=(0,U.useCallback)(e=>{c(e),m(void 0),u(!0)},[]),x=(0,U.useCallback)(t=>{e.client?.updateMcpServer(t)},[e]),S=(0,U.useCallback)(t=>{g(t),e.client?.wakeMcpServer(t)},[e]),C=(0,U.useCallback)(t=>{g(t),e.client?.sleepMcpServer(t)},[e]),w=(0,U.useCallback)(t=>{g(t),e.client?.discoverMcpServer(t)},[e]),T=(0,U.useCallback)(()=>{i(!0),e.client?.listMcpServers()},[e]),E=t.filter(e=>e.status===`connected`).length,D=t.filter(e=>e.status===`sleeping`).length,k=new Set(t.map(e=>e.name));return(0,Y.jsxs)(`div`,{className:`space-y-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(st,{className:`w-5 h-5`}),(0,Y.jsx)(`h2`,{className:`text-lg font-semibold`,children:`MCP Servers`}),t.length>0&&(0,Y.jsxs)(`span`,{className:`text-sm text-muted-foreground`,children:[E,` connected · `,D,` sleeping · `,t.length,` total`]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)($,{variant:`outline`,size:`sm`,onClick:T,disabled:r,children:[r?(0,Y.jsx)(O,{className:`w-4 h-4 animate-spin`}):null,`Refresh`]}),(0,Y.jsxs)($,{size:`sm`,onClick:()=>{m(void 0),f(!0)},children:[(0,Y.jsx)(Sn,{className:`w-4 h-4 mr-1`}),`Add Custom`]})]})]}),(0,Y.jsxs)(Kd,{value:a,onValueChange:e=>o(e),children:[(0,Y.jsxs)(qd,{children:[(0,Y.jsxs)(Jd,{value:`recommended`,children:[(0,Y.jsx)(fe,{className:`w-3.5 h-3.5 mr-1`}),`Recommended`]}),(0,Y.jsx)(Jd,{value:`list`,children:`Servers`}),(0,Y.jsx)(Jd,{value:`add`,children:`Add Custom`})]}),(0,Y.jsxs)(Yd,{value:`recommended`,className:`space-y-3`,children:[(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`One-click add for popular MCP servers. Click Add to pre-fill the configuration, then confirm. Servers requiring credentials will need their env vars set before use.`}),(0,Y.jsx)(`div`,{className:`grid gap-2`,children:bm.map(e=>(0,Y.jsx)(Em,{server:e,isAdded:k.has(e.name),onAdd:()=>v(e)},e.name))})]}),(0,Y.jsx)(Yd,{value:`list`,className:`space-y-3`,children:r&&t.length===0?(0,Y.jsxs)(`div`,{className:`flex items-center justify-center py-8 text-muted-foreground`,children:[(0,Y.jsx)(O,{className:`w-5 h-5 animate-spin mr-2`}),`Loading servers...`]}):t.length===0?(0,Y.jsxs)(`div`,{className:`text-center py-8 text-muted-foreground`,children:[(0,Y.jsx)(st,{className:`w-10 h-10 mx-auto mb-2 opacity-50`}),(0,Y.jsx)(`p`,{children:`No MCP servers configured`}),(0,Y.jsx)(`p`,{className:`text-sm`,children:`Switch to the Recommended tab to add popular servers, or Add Custom for your own.`})]}):t.map(e=>(0,Y.jsx)(wm,{server:e,onWake:()=>S(e.name),onSleep:()=>C(e.name),onDiscover:()=>w(e.name),onEdit:()=>b(e),onRemove:()=>y(e.name)},e.name))}),(0,Y.jsx)(Yd,{value:`add`,children:(0,Y.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[(0,Y.jsx)(`p`,{children:`Configure a custom MCP server with stdio, SSE, or HTTP transport.`}),(0,Y.jsx)(`p`,{className:`mt-1`,children:`For popular servers, use the Recommended tab instead — everything is pre-configured for you.`})]})})]}),(0,Y.jsx)(Tm,{open:d,onOpenChange:e=>{e||(f(!1),m(void 0))},prefillConfig:p,onSave:_}),(0,Y.jsx)(Tm,{open:l,onOpenChange:u,server:s,onSave:x})]})}function Om({provider:e,catalogModels:t,currentCatalogProvider:n,isLoadingModels:r,setIsLoadingModels:i,onModelSelect:a,refreshModels:o}){let s=K(e=>e.model);return(0,Y.jsx)(`div`,{className:`space-y-4`,children:e?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`text-sm font-medium`,children:n?.name||e}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e})]}),(0,Y.jsx)($,{variant:`ghost`,size:`sm`,onClick:()=>{i(!0),o(e)},children:(0,Y.jsx)(tr,{className:Z(`h-4 w-4`,r&&`animate-spin`)})})]}),r&&!t[e]?(0,Y.jsxs)(`div`,{className:`flex items-center justify-center py-8`,children:[(0,Y.jsx)(O,{className:`h-6 w-6 animate-spin text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`ml-2 text-muted-foreground`,children:`Loading models...`})]}):(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(t[e]||[]).map(e=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>a(e.id),className:Z(`w-full flex items-center justify-between p-3 rounded-lg border text-left transition-all`,s===e.id?`border-primary bg-primary/5 ring-2 ring-primary/20`:`border-border hover:bg-muted`),children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`font-medium`,children:e.name||e.id}),(0,Y.jsx)(`div`,{className:`flex gap-2 mt-1`,children:e.capabilities.map(e=>(0,Y.jsx)(`span`,{className:`text-xs bg-muted px-1.5 py-0.5 rounded`,children:e},e))})]}),(0,Y.jsxs)(`div`,{className:`text-right text-xs text-muted-foreground`,children:[e.contextWindow&&(0,Y.jsxs)(`div`,{children:[e.contextWindow/1e3,`k context`]}),e.inputCost&&e.outputCost&&(0,Y.jsxs)(`div`,{children:[`$`,e.inputCost,`/$`,e.outputCost]}),s===e.id&&(0,Y.jsx)(V,{className:`h-4 w-4 text-primary mt-1`})]})]},e.id)),t[e]?.length===0&&(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground text-center py-4`,children:`No models found for this provider. The catalog might be empty or still loading.`})]})]}):(0,Y.jsxs)(`div`,{className:`text-center py-8 text-muted-foreground`,children:[(0,Y.jsx)(k,{className:`h-8 w-8 mx-auto mb-2 opacity-50`}),(0,Y.jsx)(`p`,{children:`Select a provider first`})]})})}function km({label:e,hint:t,value:n,min:r,max:i,step:a=1,onChange:o,unit:s}){return(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-3 py-2`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`text-sm font-medium`,children:e}),t&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:t})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,Y.jsx)(`input`,{type:`range`,min:r,max:i,step:a,value:n,onChange:e=>o(Number(e.target.value)),className:`w-24 h-1.5 accent-primary`}),(0,Y.jsxs)(`span`,{className:`text-xs tabular-nums w-10 text-right text-muted-foreground`,children:[n,s??``]})]})]})}function Am({label:e,hint:t,value:n,options:r,onChange:i}){return(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-3 py-2`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`text-sm font-medium`,children:e}),t&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:t})]}),(0,Y.jsx)(`select`,{value:n,onChange:e=>i(e.target.value),className:`shrink-0 h-8 rounded-md border bg-background px-2 text-xs`,children:r.map(e=>(0,Y.jsx)(`option`,{value:e.value,children:e.label},e.value))})]})}function jm({label:e,hint:t,selector:n,onChange:r,configKey:i,value:a}){let o=typeof a==`boolean`,s=J(e=>n?n(e):!1),c=K(e=>i?e[i]:!1),l=o?a:n?s:c;return(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-3 py-2`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`text-sm font-medium`,children:e}),t&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground mt-0.5`,children:t})]}),(0,Y.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":l,onClick:()=>{if(o)r?.();else if(n)r?.();else if(i===`soundOnComplete`){let e=!K.getState().soundOnComplete;K.getState().setSoundOnComplete(e),e&&Ia()}},className:Z(`shrink-0 relative inline-flex h-5 w-9 rounded-full border transition-colors`,l?`bg-primary border-primary`:`bg-muted border-input hover:bg-muted/80`),children:(0,Y.jsx)(`span`,{className:Z(`absolute top-0.5 left-0.5 h-3.5 w-3.5 rounded-full bg-background shadow transition-transform`,l&&`translate-x-4`)})})]})}var Mm=`openai-compatible`,Nm=[{id:`omniroute`,label:`OmniRoute`,defaultBaseUrl:`http://localhost:20128/v1`,noAuth:!0,hint:`WrongStack local gateway · port 20128 · no key · auto-discovers models`},{id:`ollama`,label:`Ollama`,defaultBaseUrl:`http://localhost:11434/v1`,noAuth:!0,hint:`ollama.com · port 11434 · no key`},{id:`vllm`,label:`vLLM`,defaultBaseUrl:`http://localhost:8000/v1`,noAuth:!1,hint:`docs.vllm.ai · port 8000 · optional key`},{id:`lmstudio`,label:`LM Studio`,defaultBaseUrl:`http://localhost:1234/v1`,noAuth:!1,hint:`lmstudio.ai · port 1234 · optional key`}],Pm=[{kind:`chatgpt`,label:`ChatGPT`,subtitle:`Plus / Pro / Team → openai-codex`,icon:(0,Y.jsx)($e,{className:`h-5 w-5`})},{kind:`claude`,label:`Claude`,subtitle:`Pro / Max → anthropic-oauth`,icon:(0,Y.jsx)(In,{className:`h-5 w-5`})},{kind:`copilot`,label:`GitHub Copilot`,subtitle:`Copilot → github-copilot`,icon:(0,Y.jsx)(Qe,{className:`h-5 w-5`})}],Fm=[`awaiting_browser`,`awaiting_code`,`exchanging`,`fetching_models`];function Im({ws:e}){let[t,n]=(0,U.useState)({chatgpt:{phase:`idle`},claude:{phase:`idle`},copilot:{phase:`idle`}}),[r,i]=(0,U.useState)(``),[a,o]=(0,U.useState)(null);(0,U.useEffect)(()=>{let t=e.on(`auth.oauth.status`,e=>{if(e.type!==`auth.oauth.status`)return;let t=e.payload;n(e=>({...e,[t.kind]:{...t}})),t.phase===`success`?(Q.success(t.message??`Signed in — ${t.providerId??t.kind}`),o(null),i(``)):t.phase===`error`&&Q.error(t.message??`Sign-in failed`)});return()=>t?.()},[e]);let s=(0,U.useCallback)(t=>{n(e=>({...e,[t]:{phase:t===`copilot`?`awaiting_code`:`awaiting_browser`}})),e.startOAuth(t)},[e]),c=(0,U.useCallback)(t=>{e.cancelOAuth(t),n(e=>({...e,[t]:{phase:`idle`}})),o(null)},[e]),l=(0,U.useCallback)(t=>{let i=r.trim();i&&(e.submitOAuthCode(t,i),n(e=>({...e,[t]:{...e[t],phase:`exchanging`}})))},[r,e]);return(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsx)(`div`,{className:`rounded-md border border-amber-500/30 bg-amber-500/5 p-3`,children:(0,Y.jsx)(`p`,{className:`text-xs text-amber-600 dark:text-amber-400`,children:`Sign in with a subscription instead of an API key. Using a subscription outside its official client may violate the provider's Terms — your account could be rate-limited or banned. An API key is the sanctioned path for programmatic use.`})}),Pm.map(e=>{let n=t[e.kind],u=Fm.includes(n.phase);return(0,Y.jsxs)(`div`,{className:`rounded-lg border border-border p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:e.icon}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`font-medium`,children:e.label}),(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:e.subtitle})]})]}),u?(0,Y.jsx)($,{size:`sm`,variant:`ghost`,onClick:()=>c(e.kind),children:`Cancel`}):(0,Y.jsx)($,{size:`sm`,onClick:()=>s(e.kind),children:`Sign in`})]}),n.phase===`awaiting_browser`&&(0,Y.jsxs)(`div`,{className:`mt-3 space-y-2 border-t pt-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,Y.jsx)(O,{className:`h-4 w-4 animate-spin text-muted-foreground`}),(0,Y.jsx)(`span`,{children:`Waiting for you to sign in…`})]}),n.authorizeUrl&&(0,Y.jsxs)($,{size:`sm`,variant:`outline`,onClick:()=>window.open(n.authorizeUrl,`_blank`,`noopener,noreferrer`),children:[(0,Y.jsx)(x,{className:`h-3.5 w-3.5 mr-1`}),`Open sign-in page`]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`button`,{type:`button`,className:`text-xs text-muted-foreground underline`,onClick:()=>o(a===e.kind?null:e.kind),children:n.bound===!1?`Loopback port busy — paste the redirect URL`:`Browser can’t reach this server? Paste the redirect URL`}),a===e.kind&&(0,Y.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[(0,Y.jsx)(Qc,{placeholder:`http://localhost:.../callback?code=…`,value:r,onChange:e=>i(e.target.value),className:`font-mono text-xs`,onKeyDown:t=>{t.key===`Enter`&&l(e.kind)}}),(0,Y.jsx)($,{size:`sm`,onClick:()=>l(e.kind),disabled:!r.trim(),children:`Submit`})]})]})]}),n.phase===`awaiting_code`&&(0,Y.jsxs)(`div`,{className:`mt-3 space-y-2 border-t pt-3`,children:[(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Enter this code at the verification page:`}),(0,Y.jsx)(`div`,{className:`font-mono text-2xl font-bold tracking-widest`,children:n.userCode??`…`}),n.verificationUri&&(0,Y.jsxs)($,{size:`sm`,variant:`outline`,onClick:()=>window.open(n.verificationUri,`_blank`,`noopener,noreferrer`),children:[(0,Y.jsx)(x,{className:`h-3.5 w-3.5 mr-1`}),`Open verification page`]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,Y.jsx)(O,{className:`h-3.5 w-3.5 animate-spin`}),(0,Y.jsx)(`span`,{children:`Waiting for authorization…`})]})]}),(n.phase===`exchanging`||n.phase===`fetching_models`)&&(0,Y.jsxs)(`div`,{className:`mt-3 flex items-center gap-2 border-t pt-3 text-sm`,children:[(0,Y.jsx)(O,{className:`h-4 w-4 animate-spin text-muted-foreground`}),(0,Y.jsx)(`span`,{children:n.phase===`exchanging`?`Exchanging tokens…`:`Fetching models…`})]}),n.phase===`success`&&(0,Y.jsxs)(`div`,{className:`mt-3 flex items-center gap-2 border-t pt-3 text-sm text-green-600`,children:[(0,Y.jsx)(V,{className:`h-4 w-4`}),(0,Y.jsx)(`span`,{children:n.message??`Signed in.`})]}),n.phase===`error`&&n.message&&(0,Y.jsxs)(`div`,{className:`mt-3 flex items-center gap-2 border-t pt-3 text-sm text-destructive`,children:[(0,Y.jsx)(N,{className:`h-4 w-4`}),(0,Y.jsx)(`span`,{children:n.message})]})]},e.kind)})]})}function Lm({open:e,providerId:t,modelCount:n,onConfirm:r,onCancel:i}){let a=(0,U.useRef)(null);return(0,U.useEffect)(()=>{if(!e)return;let t=e=>{e.key===`Enter`?(e.preventDefault(),r()):e.key===`Escape`&&(e.preventDefault(),i())};return window.addEventListener(`keydown`,t),a.current?.focus(),()=>window.removeEventListener(`keydown`,t)},[e,r,i]),(0,Y.jsx)(Uc,{open:e,onOpenChange:e=>{e||i()},children:(0,Y.jsxs)(qc,{className:`sm:max-w-md border-amber-500/50`,ref:a,tabIndex:-1,"data-clear-allowlist-dialog":!0,children:[(0,Y.jsxs)(Jc,{children:[(0,Y.jsxs)(Xc,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(E,{className:`h-5 w-5 text-amber-500`}),`Clear saved allowlist?`]}),(0,Y.jsxs)(Zc,{children:[`This will remove the `,n,` pinned model`,n===1?``:`s`,` for`,(0,Y.jsxs)(`span`,{className:`font-mono font-medium`,children:[` `,t]}),`. The model picker will fall back to the models.dev catalog.`]})]}),(0,Y.jsx)(`div`,{className:`rounded-md bg-muted/50 border border-border/60 px-3 py-2 text-xs text-muted-foreground`,children:`You can undo this for 8 seconds after confirming.`}),(0,Y.jsxs)(Yc,{className:`gap-2 sm:gap-2 flex-wrap`,children:[(0,Y.jsxs)($,{variant:`outline`,size:`sm`,onClick:i,title:`Keep the allowlist (Esc)`,"data-action":`cancel`,children:[`Cancel `,(0,Y.jsx)(`kbd`,{className:`ml-1 text-[10px] border rounded px-1 bg-background`,children:`Esc`})]}),(0,Y.jsxs)($,{variant:`destructive`,size:`sm`,onClick:r,title:`Clear the allowlist (Enter)`,"data-action":`confirm`,children:[`Clear allowlist `,(0,Y.jsx)(`kbd`,{className:`ml-1 text-[10px] border rounded px-1 bg-background/80`,children:`↵`})]})]})]})})}function Rm(){return{inFlight:!1,last:null,picked:null}}function zm(e){return{providerId:e.providerId,ok:e.ok,status:e.status,...e.httpStatus===void 0?{}:{httpStatus:e.httpStatus},...e.elapsedMs===void 0?{}:{elapsedMs:e.elapsedMs},...e.modelCount===void 0?{}:{modelCount:e.modelCount},...e.modelIds===void 0?{}:{modelIds:e.modelIds},...e.detail===void 0?{}:{detail:e.detail}}}function Bm(e,t,n){return e.picked?e.picked:e.last?.ok&&e.last.modelIds&&e.last.modelIds.length>0&&e.last.modelIds[0]?e.last.modelIds[0]:t||(n&&n.length>0&&n[0]?n[0]:``)}function Vm(e){if(e.inFlight)return{text:`Probing…`,tone:`muted`};let t=e.last;if(!t)return{text:`Click "Refresh from server" to re-probe /v1/models.`,tone:`muted`};let n=t.elapsedMs===void 0?``:` (${t.elapsedMs}ms)`;switch(t.status){case`ok`:{let e=t.modelCount??t.modelIds?.length??0;return{text:`ok — ${e} model${e===1?``:`s`}${n}`,tone:`success`}}case`unreachable`:return{text:`server unreachable${t.detail?` — ${t.detail}`:``}`,tone:`error`};case`timeout`:return{text:`timed out${t.detail?` — ${t.detail}`:``}`,tone:`error`};case`http_error`:return{text:`got${t.httpStatus===void 0?``:` HTTP ${t.httpStatus}`}${t.detail?` — ${t.detail}`:``}`,tone:`warning`};case`invalid_response`:return{text:t.detail?`unexpected response — ${t.detail}`:`unexpected response shape`,tone:`warning`};case`no_provider`:return{text:`no saved provider — the config may have been removed`,tone:`error`};case`no_base_url`:return{text:`no baseUrl configured`,tone:`warning`}}}function Hm(e,t){return e.last?.ok&&e.last.modelIds&&e.last.modelIds.length>0?e.last.modelIds:t??[]}function Um(e,t){if(!e.last?.ok)return!1;let n=e.last.modelIds;if(!n||n.length===0)return!1;let r=t??[];if(r.length!==n.length)return!0;for(let e=0;e<n.length;e++)if(r[e]!==n[e])return!0;return!1}function Wm(e){return(e?.length??0)>0}function Gm(e,t){return`Allowlist cleared for ${e} — ${t} model${t===1?``:`s`} removed`}function Km(e){return e.length>0}function qm(e){return e.previousModels.length===0?{kind:`skip`}:e.onUndoClear?{kind:`callback`,providerId:e.providerId,previousModels:e.previousModels}:{kind:`ws-default`,providerId:e.providerId,previousModels:e.previousModels}}var Jm=3e3;function Ym({providerId:e,savedPickedModelId:t,savedModels:n,ws:r,onPickModel:i,onClearModels:a,onUndoClear:o}){let[s,c]=(0,U.useState)(()=>Rm()),[l,u]=(0,U.useState)(!1);(0,U.useEffect)(()=>r.on(`provider.probe`,t=>{t.type===`provider.probe`&&t.payload.providerId===e&&c(e=>({...e,inFlight:!1,last:zm(t.payload)}))}),[r,e]);let d=(0,U.useCallback)(()=>{c(e=>({...e,inFlight:!0})),r.probeProvider(e,Jm)},[r,e]),f=(0,U.useCallback)(t=>{c(e=>({...e,picked:t})),i?.(e,t)},[i,e]),p=(0,U.useCallback)(()=>{u(!0)},[]),m=(0,U.useCallback)(()=>{u(!1)},[]),h=(0,U.useCallback)(()=>{u(!1);let t=n?[...n]:[];c(e=>({...e,picked:null,last:null})),a?a(e):r.clearProviderModels(e),Km(t)&&Q.undoable(Gm(e,t.length),()=>{let n=qm({providerId:e,previousModels:t,onUndoClear:o});switch(n.kind){case`skip`:return;case`callback`:o?.(n.providerId,n.previousModels);return;case`ws-default`:r.undoProviderClear(n.providerId,n.previousModels);return}})},[a,o,r,e,n]),g=(0,U.useMemo)(()=>Bm(s,t,n),[s,t,n]),_=(0,U.useMemo)(()=>Hm(s,n),[s,n]),v=(0,U.useMemo)(()=>Vm(s),[s]),y=(0,U.useMemo)(()=>Um(s,n),[s,n]),b=(0,U.useMemo)(()=>Wm(n),[n]);return(0,Y.jsxs)(`div`,{className:`rounded-md border border-border/60 bg-muted/30 px-3 py-2`,"data-provider-models-panel":e,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Using`}),g?(0,Y.jsx)(`span`,{className:`text-xs font-mono px-2 py-0.5 rounded bg-primary/10 text-primary`,children:g}):(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground italic`,children:`(no model picked)`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[b&&(0,Y.jsx)($,{variant:`ghost`,size:`sm`,onClick:p,"aria-label":`Clear saved allowlist for ${e}`,"data-action":`clear-models`,children:`Clear allowlist`}),(0,Y.jsx)($,{variant:`ghost`,size:`sm`,onClick:d,disabled:s.inFlight,"aria-label":`Refresh model list for ${e}`,children:s.inFlight?`Probing…`:`Refresh from server`})]})]}),(0,Y.jsx)(Xm,{formatted:v}),_.length>0&&(0,Y.jsx)(`ul`,{className:`mt-2 flex flex-wrap gap-1.5`,"data-provider-models-list":e,children:_.map(t=>(0,Y.jsxs)(`li`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:t===g?`text-xs font-mono px-2 py-0.5 rounded bg-primary/10 text-primary`:`text-xs font-mono px-2 py-0.5 rounded border border-border text-foreground/80`,children:t}),t!==g&&(0,Y.jsx)($,{variant:`link`,size:`sm`,onClick:()=>f(t),className:`text-xs h-5 px-1`,"aria-label":`Use model ${t} for ${e}`,children:`Use`})]},t))}),y&&(0,Y.jsxs)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:[`Probed list differs from the saved allowlist — re-run`,(0,Y.jsx)(`span`,{className:`font-mono`,children:` wstack auth local --model first`}),`to persist.`]}),(0,Y.jsx)(Lm,{open:l,providerId:e,modelCount:n?.length??0,onConfirm:h,onCancel:m})]})}function Xm({formatted:e}){return(0,Y.jsx)(`p`,{className:`mt-1 text-xs ${e.tone===`success`?`text-emerald-600 dark:text-emerald-400`:e.tone===`warning`?`text-amber-600 dark:text-amber-400`:e.tone===`error`?`text-rose-600 dark:text-rose-400`:`text-muted-foreground`}`,"data-probe-tone":e.tone,children:e.text})}var Zm=[`anthropic`,`openai`,`google`,`openai-compatible`];function Qm({activeProvider:e,catalogProviders:t,isLoadingCatalog:n,savedProviders:r,isLoadingSaved:i,providerTab:a,setProviderTab:o,onSelectProvider:s,onAddKey:c,onDeleteKey:l,onSetActiveKey:u,onAddProvider:d,onRemoveProvider:f,onPickProviderModel:p,ws:m,catalogQuery:h,setCatalogQuery:g}){let[_,v]=(0,U.useState)(null),[y,b]=(0,U.useState)(``),[x,S]=(0,U.useState)(``),[C,w]=(0,U.useState)(!1),[E,D]=(0,U.useState)(!1),[k,A]=(0,U.useState)(``),[j,P]=(0,U.useState)(`openai-compatible`),[F,I]=(0,U.useState)(``),[L,R]=(0,U.useState)(``),z=(0,U.useCallback)(e=>{!y.trim()||!x.trim()||(c(e,y.trim(),x.trim()),b(``),S(``),v(null))},[c,y,x]),ee=(0,U.useCallback)(()=>{k.trim()&&(d(k.trim(),j,F||void 0,L||void 0),A(``),P(`openai-compatible`),I(``),R(``),D(!1))},[d,k,j,F,L]),te=(0,U.useCallback)(e=>{A(e.id),P(Mm),I(e.defaultBaseUrl),e.noAuth&&R(``)},[]),[ne,re]=(0,U.useState)(null),[B,ie]=(0,U.useState)(``),[ae,oe]=(0,U.useState)(!1),[se,ce]=(0,U.useState)({}),le=(0,U.useMemo)(()=>new Set(r.map(e=>e.id)),[r]);(0,U.useEffect)(()=>{let e=m.on(`provider.probe`,e=>{if(e.type!==`provider.probe`)return;let t=e.payload;t.status===`no_base_url`||t.status===`no_provider`||ce(e=>({...e,[t.providerId]:{ok:t.ok,status:t.status,detail:t.detail}}))});return()=>e?.()},[m]);let ue=(0,U.useCallback)(e=>{let t=B.trim();t&&(le.has(e.id)?c(e.id,`default`,t):d(e.id,e.family,e.apiBase??void 0,t),ie(``),re(null),oe(!1),Q.success(`Saved key for ${e.name}`),e.apiBase&&setTimeout(()=>m.probeProvider(e.id,6e3),700))},[B,le,c,d,m]),de=h.trim()?t.filter(e=>{let t=h.trim().toLowerCase();return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)||e.family.toLowerCase().includes(t)}):t,fe=de.reduce((e,t)=>(e[t.family]||(e[t.family]=[]),e[t.family]?.push(t),e),{});return(0,Y.jsxs)(`div`,{className:`space-y-4`,children:[(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold flex items-center gap-2`,children:[(0,Y.jsx)(M,{className:`h-4 w-4 text-muted-foreground`}),`Subscription login`]}),(0,Y.jsx)(Im,{ws:m})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-1 flex items-center gap-2`,children:[(0,Y.jsx)(Ae,{className:`h-4 w-4 text-muted-foreground`}),`API key providers`]}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground mb-3`,children:`Pick a provider from the catalog and add an API key, or manage saved providers.`})]}),(0,Y.jsxs)(`div`,{className:`flex gap-2 mb-4`,children:[(0,Y.jsxs)($,{variant:a===`catalog`?`default`:`outline`,size:`sm`,onClick:()=>o(`catalog`),children:[(0,Y.jsx)(Ae,{className:`h-4 w-4 mr-1`}),`Catalog`]}),(0,Y.jsxs)($,{variant:a===`saved`?`default`:`outline`,size:`sm`,onClick:()=>o(`saved`),children:[(0,Y.jsx)(M,{className:`h-4 w-4 mr-1`}),`Saved (`,r.length,`)`]})]}),a===`catalog`&&(0,Y.jsxs)(`div`,{className:`space-y-4`,children:[(0,Y.jsx)(Qc,{placeholder:`Search ${t.length} providers (name / id / family)…`,value:h,onChange:e=>g(e.target.value),className:`text-sm`}),n&&t.length===0?(0,Y.jsxs)(`div`,{className:`flex items-center justify-center py-8`,children:[(0,Y.jsx)(O,{className:`h-6 w-6 animate-spin text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`ml-2 text-muted-foreground`,children:`Loading catalog...`})]}):de.length===0&&h?(0,Y.jsxs)(`div`,{className:`text-center py-8 text-muted-foreground text-sm`,children:[`No providers match "`,(0,Y.jsx)(`span`,{className:`font-mono`,children:h}),`".`]}):Zm.map(t=>{let n=fe[t];return n?.length?(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(`h3`,{className:`text-sm font-semibold text-muted-foreground uppercase tracking-wider`,children:t}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 gap-2`,children:n.map(t=>{let n=se[t.id],r=e===t.id;return(0,Y.jsxs)(`div`,{className:Z(`rounded-lg border transition-all`,r?`border-primary bg-primary/5 ring-2 ring-primary/20`:`border-border`),children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>s(t.id),className:Z(`flex w-full flex-col items-start p-3 text-left rounded-lg`,!r&&`hover:bg-muted`),children:[(0,Y.jsxs)(`div`,{className:`flex w-full justify-between items-start`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`font-medium`,children:t.name}),(0,Y.jsxs)(`span`,{className:`ml-2 text-xs text-muted-foreground`,children:[`(`,t.id,`)`]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[t.hasApiKey&&(0,Y.jsxs)(`span`,{className:`text-xs bg-green-500/10 text-green-600 px-2 py-0.5 rounded`,children:[(0,Y.jsx)(M,{className:`h-3 w-3 inline mr-1`}),`Configured`]}),n&&(0,Y.jsxs)(`span`,{className:Z(`text-xs px-2 py-0.5 rounded inline-flex items-center gap-1`,n.ok?`bg-green-500/10 text-green-600`:`bg-destructive/10 text-destructive`),title:n.detail??n.status,children:[n.ok?(0,Y.jsx)(V,{className:`h-3 w-3`}):(0,Y.jsx)(N,{className:`h-3 w-3`}),n.ok?`Reachable`:n.status]}),t.envVars[0]&&(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`ENV: `,t.envVars[0]]}),r&&(0,Y.jsx)(V,{className:`h-4 w-4 text-primary`})]})]}),(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground mt-1`,children:[t.modelCount,` models`,t.apiBase&&` · ${t.apiBase}`]})]}),r&&!t.hasApiKey&&(0,Y.jsx)(`div`,{className:`px-3 pb-3 -mt-1 space-y-2`,children:ne===t.id?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Y.jsx)(Qc,{autoFocus:!0,type:ae?`text`:`password`,placeholder:`${t.name} API key`,value:B,onChange:e=>ie(e.target.value),className:`text-sm`,onKeyDown:e=>{e.key===`Enter`&&ue(t)}}),(0,Y.jsx)($,{size:`icon`,variant:`ghost`,onClick:()=>oe(e=>!e),children:ae?(0,Y.jsx)(T,{className:`h-4 w-4`}):(0,Y.jsx)(We,{className:`h-4 w-4`})}),(0,Y.jsx)($,{size:`sm`,onClick:()=>ue(t),disabled:!B.trim(),children:`Save`})]}),t.envVars[0]&&(0,Y.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Or set`,` `,(0,Y.jsx)(`code`,{className:`bg-muted px-1 rounded`,children:t.envVars[0]}),` `,`in the environment instead.`]})]}):(0,Y.jsxs)($,{size:`sm`,variant:`outline`,onClick:()=>{re(t.id),ie(``)},children:[(0,Y.jsx)(M,{className:`h-3.5 w-3.5 mr-1`}),`Add API key`]})})]},t.id)})})]},t):null})]}),a===`saved`&&(0,Y.jsxs)(`div`,{className:`space-y-4`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Manage your API keys and provider configurations`}),(0,Y.jsxs)($,{size:`sm`,variant:`outline`,onClick:()=>D(!E),children:[(0,Y.jsx)(Sn,{className:`h-4 w-4 mr-1`}),`Add Provider`]})]}),E&&(0,Y.jsxs)(`div`,{className:`p-4 border rounded-lg space-y-3 bg-muted/50`,children:[(0,Y.jsx)(`h4`,{className:`font-medium`,children:`Add Custom Provider`}),(0,Y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Local servers — click to pre-fill:`}),(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Nm.map(e=>(0,Y.jsx)($,{type:`button`,size:`sm`,variant:k===e.id?`default`:`outline`,onClick:()=>te(e),title:e.hint,children:e.label},e.id))})]}),(0,Y.jsx)(Qc,{placeholder:`Provider ID (e.g. my-llm-server)`,value:k,onChange:e=>A(e.target.value)}),(0,Y.jsxs)(`select`,{className:`flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm`,value:j,onChange:e=>P(e.target.value),children:[(0,Y.jsx)(`option`,{value:`anthropic`,children:`Anthropic`}),(0,Y.jsx)(`option`,{value:`openai`,children:`OpenAI`}),(0,Y.jsx)(`option`,{value:`openai-compatible`,children:`OpenAI Compatible`}),(0,Y.jsx)(`option`,{value:`google`,children:`Google`})]}),(0,Y.jsx)(Qc,{placeholder:`Base URL (optional, e.g. http://localhost:11434/v1)`,value:F,onChange:e=>I(e.target.value)}),(0,Y.jsx)(Qc,{type:`password`,placeholder:`API Key (optional)`,value:L,onChange:e=>R(e.target.value)}),(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Y.jsx)($,{size:`sm`,onClick:ee,disabled:!k.trim(),children:`Add`}),(0,Y.jsx)($,{size:`sm`,variant:`ghost`,onClick:()=>D(!1),children:`Cancel`})]})]}),i?(0,Y.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Y.jsx)(O,{className:`h-6 w-6 animate-spin text-muted-foreground`})}):r.length===0?(0,Y.jsxs)(`div`,{className:`text-center py-8 text-muted-foreground`,children:[(0,Y.jsx)(M,{className:`h-8 w-8 mx-auto mb-2 opacity-50`}),(0,Y.jsx)(`p`,{children:`No saved providers yet`}),(0,Y.jsx)(`p`,{className:`text-sm`,children:`Add a provider to get started`})]}):r.map(e=>(0,Y.jsxs)(`div`,{className:`border rounded-lg p-4 space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between items-start`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h4`,{className:`font-medium`,children:e.id}),e.family&&(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.family})]}),(0,Y.jsx)(`div`,{className:`flex gap-2`,children:(0,Y.jsx)($,{size:`icon`,variant:`ghost`,onClick:()=>f(e.id),children:(0,Y.jsx)(yn,{className:`h-4 w-4 text-destructive`})})})]}),e.baseUrl&&(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[(0,Y.jsx)(Ae,{className:`h-3 w-3 inline mr-1`}),e.baseUrl]}),(0,Y.jsx)(Ym,{providerId:e.id,savedPickedModelId:e.pickedModelId,savedModels:e.models,ws:m,onPickModel:p}),(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between items-center`,children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium`,children:`API Keys`}),(0,Y.jsxs)($,{size:`sm`,variant:`ghost`,onClick:()=>v(_===e.id?null:e.id),children:[(0,Y.jsx)(Sn,{className:`h-3 w-3 mr-1`}),`Add Key`]})]}),e.apiKeys.length===0&&!_&&(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No keys configured`}),e.apiKeys.map(t=>(0,Y.jsxs)(`div`,{className:`flex items-center justify-between p-2 bg-muted/50 rounded`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium`,children:t.label}),t.isActive&&(0,Y.jsx)(`span`,{className:`ml-2 text-xs bg-green-500/10 text-green-600 px-1.5 py-0.5 rounded`,children:`Active`}),(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground font-mono`,children:t.maskedKey})]}),(0,Y.jsxs)(`div`,{className:`flex gap-1`,children:[!t.isActive&&(0,Y.jsx)($,{size:`sm`,variant:`ghost`,onClick:()=>u(e.id,t.label),children:`Set Active`}),(0,Y.jsx)($,{size:`icon`,variant:`ghost`,onClick:()=>l(e.id,t.label),children:(0,Y.jsx)(yn,{className:`h-3 w-3 text-destructive`})})]})]},t.label)),_===e.id&&(0,Y.jsxs)(`div`,{className:`p-3 border rounded space-y-2 bg-background`,children:[(0,Y.jsx)(Qc,{placeholder:`Key label (e.g. default, production)`,value:y,onChange:e=>b(e.target.value)}),(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Y.jsx)(Qc,{type:C?`text`:`password`,placeholder:`API key`,value:x,onChange:e=>S(e.target.value)}),(0,Y.jsx)($,{size:`icon`,variant:`ghost`,onClick:()=>w(!C),children:C?(0,Y.jsx)(T,{className:`h-4 w-4`}):(0,Y.jsx)(We,{className:`h-4 w-4`})})]}),(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Y.jsx)($,{size:`sm`,onClick:()=>z(e.id),disabled:!y.trim()||!x.trim(),children:`Save Key`}),(0,Y.jsx)($,{size:`sm`,variant:`ghost`,onClick:()=>{v(null),b(``),S(``)},children:`Cancel`})]})]})]})]},e.id))]})]})}function $m(){let{setCurrentView:e}=J(),{provider:t,model:n,setProvider:r,setModel:i,setConfig:a,wsConnected:o,wsUrl:s}=K(),{theme:c,setTheme:l}=Ws(),u=Vs(),d=u.client,{updatePrefs:f,switchAutonomy:p}=u,m=$i(),h=Tp(!0),_=(0,U.useCallback)((e,t)=>{m.set({[e]:t}),f({[e]:t})},[m,f]),[v,y]=(0,U.useState)([]),[b,x]=(0,U.useState)({}),[S,C]=(0,U.useState)([]),[w,T]=(0,U.useState)(!1),[E,D]=(0,U.useState)(!1),[O,j]=(0,U.useState)(!1),[M,N]=(0,U.useState)(`catalog`),[P,F]=(0,U.useState)(``),[I,L]=(0,U.useState)(``),[R,z]=(0,U.useState)(`*`),[ee,te]=(0,U.useState)(``),ne=v.find(e=>e.id===t);(0,U.useEffect)(()=>{let e=e=>{if(e.type===`provider.catalog`){let t=e.payload;y(t.providers.sort((e,t)=>e.id.localeCompare(t.id))),T(!1)}},t=e=>{if(e.type===`provider.models`){let t=e.payload;x(e=>({...e,[t.provider]:t.models})),D(!1)}},n=e=>{if(e.type===`providers.saved`){let t=e.payload.providers.sort((e,t)=>e.id.localeCompare(t.id));C(t),j(!1),t.length>0&&N(`saved`)}};if(!o||!d)return;let r=d.on(`provider.catalog`,e),i=d.on(`provider.models`,t),a=d.on(`providers.saved`,n);return T(!0),j(!0),d.listProviders(),d.listSavedProviders(),()=>{r?.(),i?.(),a?.()}},[o,d]);let re=(0,U.useCallback)(e=>{r(e),b[e]||(D(!0),u.listProviderModels?.(e))},[b,r,u]),B=(0,U.useCallback)(e=>{i(e);let t=K.getState().provider;u.switchModel?.(t,e),Q.success(`Switching to ${t} / ${e}…`)},[i,u]),V=(0,U.useCallback)((e,t,n)=>{u.addKey?.(e,t,n)},[u]),ie=(0,U.useCallback)((e,t)=>{u.deleteKey?.(e,t)},[u]),ae=(0,U.useCallback)((e,t)=>{u.setActiveKey?.(e,t)},[u]),oe=(0,U.useCallback)((e,t,n,r)=>{u.addProvider?.(e,t,n,r)},[u]),se=(0,U.useCallback)(e=>{u.removeProvider?.(e)},[u]),ce=(0,U.useCallback)((e,t)=>{u.client.updateProvider({id:e,models:[t]}),e===K.getState().provider&&i(t)},[i,u.client]),le=(0,U.useCallback)(e=>_(`fallbackProfiles`,e),[_]),de=(0,U.useCallback)(()=>{let e=I.trim();if(e){if(m.fallbackProfiles[e]){Q.error(`Fallback profile "${e}" already exists`);return}le({...m.fallbackProfiles,[e]:[]}),L(``)}},[m.fallbackProfiles,I,le]),fe=(0,U.useCallback)(()=>{let e=t&&n?`${t}/${n}`:``;if(!e){Q.error(`Select a provider and model first`);return}let r=[e,...m.fallbackModels].filter((e,t,n)=>e&&n.indexOf(e)===t);le({...m.fallbackProfiles,default:r}),Q.success(`Default fallback profile created`)},[n,m.fallbackModels,m.fallbackProfiles,t,le]);(0,U.useEffect)(()=>{if(Object.keys(m.fallbackProfiles).length>0)return;let e=t&&n?`${t}/${n}`:``;e&&le({default:[e,...m.fallbackModels].filter((e,t,n)=>e&&n.indexOf(e)===t)})},[n,m.fallbackModels,m.fallbackProfiles,t,le]);let pe=(0,U.useCallback)((e,t)=>{le({...m.fallbackProfiles,[e]:t})},[m.fallbackProfiles,le]),me=(0,U.useCallback)(e=>{let{[e]:t,...n}=m.fallbackProfiles;le(n)},[m.fallbackProfiles,le]),he=(0,U.useCallback)(e=>{_(`fallbackModels`,m.fallbackProfiles[e]??[])},[m.fallbackProfiles,_]),ge=(0,U.useCallback)(e=>{let n=m.fallbackProfiles[e]??[],a=n[0];if(!a){Q.error(`Fallback profile "${e}" is empty`);return}let o=a.indexOf(`/`),s=o>0?a.slice(0,o):t,c=o>0?a.slice(o+1):a;r(s),i(c),u.switchModel?.(s,c),_(`fallbackModels`,n.slice(1)),Q.success(`Leader set from ${e}`)},[m.fallbackProfiles,t,i,r,_,u]),_e=(0,U.useCallback)(e=>_(`modelMatrix`,e),[_]),ve=(0,U.useCallback)(()=>{let e=R.trim(),t=ee.trim();if(!e||!t)return;let n=m.fallbackProfiles[t]?{fallbackProfile:t}:t.includes(`/`)?{provider:t.slice(0,t.indexOf(`/`)),model:t.slice(t.indexOf(`/`)+1)}:{model:t};_e({...m.modelMatrix,[e]:n}),te(``)},[m.fallbackProfiles,m.modelMatrix,R,ee,_e]),ye=(0,U.useCallback)(e=>{let{[e]:t,...n}=m.modelMatrix;_e(n)},[m.modelMatrix,_e]),be=e=>e.fallbackProfile&&!e.model?`profile:${e.fallbackProfile}`:[e.provider&&e.model?`${e.provider}/${e.model}`:e.model,e.fallbackProfile?`profile:${e.fallbackProfile}`:``].filter(Boolean).join(` + `);return(0,Y.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,Y.jsxs)(`header`,{className:`flex items-center justify-between px-4 py-3 border-b bg-card shrink-0`,children:[(0,Y.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Settings`}),(0,Y.jsx)($,{variant:`ghost`,size:`icon`,onClick:()=>e(`chat`),children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]}),(0,Y.jsx)(Wd,{className:`flex-1`,children:(0,Y.jsx)(`div`,{className:`p-6 max-w-2xl mx-auto`,children:(0,Y.jsxs)(Kd,{defaultValue:`provider`,children:[(0,Y.jsxs)(qd,{className:`w-full justify-start mb-6 grid grid-cols-6`,children:[(0,Y.jsxs)(Jd,{value:`provider`,className:`gap-1 text-xs`,children:[(0,Y.jsx)(Er,{className:`h-3.5 w-3.5`}),`Provider`]}),(0,Y.jsxs)(Jd,{value:`connection`,className:`gap-1 text-xs`,children:[(0,Y.jsx)(Ae,{className:`h-3.5 w-3.5`}),`Connect`]}),(0,Y.jsxs)(Jd,{value:`appearance`,className:`gap-1 text-xs`,children:[(0,Y.jsx)(jr,{className:`h-3.5 w-3.5`}),`Look`]}),(0,Y.jsxs)(Jd,{value:`agent`,className:`gap-1 text-xs`,children:[(0,Y.jsx)(In,{className:`h-3.5 w-3.5`}),`Agent`]}),(0,Y.jsxs)(Jd,{value:`features`,className:`gap-1 text-xs`,children:[(0,Y.jsx)(Nt,{className:`h-3.5 w-3.5`}),`Feat.`]}),(0,Y.jsxs)(Jd,{value:`mcp`,className:`gap-1 text-xs`,children:[(0,Y.jsx)(st,{className:`h-3.5 w-3.5`}),`MCP`]})]}),(0,Y.jsxs)(Yd,{value:`provider`,className:`space-y-4`,children:[(0,Y.jsx)(Qm,{activeProvider:t,catalogProviders:v,isLoadingCatalog:w,savedProviders:S,isLoadingSaved:O,providerTab:M,setProviderTab:N,onSelectProvider:re,onAddKey:V,onDeleteKey:ie,onSetActiveKey:ae,onAddProvider:oe,onRemoveProvider:se,onPickProviderModel:ce,ws:u.client,catalogQuery:P,setCatalogQuery:F}),(0,Y.jsxs)(`div`,{className:`pt-4 border-t`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 flex items-center gap-2`,children:[(0,Y.jsx)(k,{className:`h-4 w-4 text-muted-foreground`}),`Model`]}),(0,Y.jsx)(Om,{provider:t,catalogModels:b,currentCatalogProvider:ne,isLoadingModels:E,setIsLoadingModels:D,onModelSelect:B,refreshModels:e=>u.listProviderModels?.(e)})]})]}),(0,Y.jsxs)(Yd,{value:`connection`,className:`space-y-4`,children:[(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`label`,{htmlFor:`websocket-url`,className:`text-sm font-medium flex items-center gap-2`,children:[(0,Y.jsx)(Ae,{className:`h-4 w-4 text-muted-foreground`}),`WebSocket Server URL`]}),(0,Y.jsx)(Qc,{id:`websocket-url`,value:s,onChange:e=>a({wsUrl:e.target.value}),placeholder:`ws://localhost:3457`,className:`font-mono text-sm`}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`URL of the agent WebSocket server. The server runs alongside the CLI.`})]}),(0,Y.jsxs)(`div`,{className:`p-4 rounded-lg border bg-muted/50`,children:[(0,Y.jsx)(`h4`,{className:`text-sm font-medium mb-2`,children:`Starting the WebSocket Server`}),(0,Y.jsxs)(`p`,{className:`text-xs text-muted-foreground mb-3`,children:[`Standalone: run `,(0,Y.jsx)(`code`,{className:`bg-muted px-1 py-0.5 rounded`,children:`./dev.ps1`}),` `,`from the repo root, or set WS_HOST/WS_PORT before launching`,` `,(0,Y.jsx)(`code`,{className:`bg-muted px-1 py-0.5 rounded`,children:`wstackui`}),`. Or alongside the CLI:`,` `,(0,Y.jsx)(`code`,{className:`bg-muted px-1 py-0.5 rounded`,children:`wstack --webui`}),`.`]})]})]}),(0,Y.jsxs)(Yd,{value:`appearance`,className:`space-y-4`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h3`,{className:`text-sm font-semibold mb-3`,children:`Theme`}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-3 gap-2 max-w-md`,children:[(0,Y.jsxs)($,{variant:c===`light`?`default`:`outline`,size:`sm`,onClick:()=>l(`light`),children:[(0,Y.jsx)(A,{className:`h-4 w-4 mr-1`}),`Light`]}),(0,Y.jsxs)($,{variant:c===`dark`?`default`:`outline`,size:`sm`,onClick:()=>l(`dark`),children:[(0,Y.jsx)(g,{className:`h-4 w-4 mr-1`}),`Dark`]}),(0,Y.jsxs)($,{variant:c===`system`?`default`:`outline`,size:`sm`,onClick:()=>l(`system`),children:[(0,Y.jsx)(xr,{className:`h-4 w-4 mr-1`}),`System`]})]}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground mt-2`,children:`System follows your OS-level light/dark preference.`})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t`,children:[(0,Y.jsx)(`h3`,{className:`text-sm font-semibold mb-3 mt-3`,children:`Preferences`}),(0,Y.jsx)(jm,{label:`Compact density`,hint:`Tighter spacing throughout the chat.`,selector:e=>e.compactMode,onChange:()=>J.getState().toggleCompactMode()}),(0,Y.jsx)(jm,{label:`Sound on completion`,hint:`Play a soft chime when a run finishes.`,selector:null,configKey:`soundOnComplete`}),(0,Y.jsx)(jm,{label:`Title animation`,hint:`Show animated terminal title in the CLI.`,value:m.titleAnimation,onChange:()=>_(`titleAnimation`,!m.titleAnimation)})]})]}),(0,Y.jsxs)(Yd,{value:`agent`,className:`space-y-4`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 flex items-center gap-2`,children:[(0,Y.jsx)(Dt,{className:`h-4 w-4 text-muted-foreground`}),`Autonomy & Behavior`]}),(0,Y.jsx)(Am,{label:`Autonomy mode`,hint:`How independently the agent proceeds between turns.`,value:m.autonomy,options:[{value:`off`,label:`Off — full manual control`},{value:`suggest`,label:`Suggest — suggests next steps`},{value:`auto`,label:`Auto — brief confirmation delay`},{value:`eternal`,label:`Eternal — autonomous until goal done`},{value:`eternal-parallel`,label:`Eternal Parallel — multi-agent fleet`}],onChange:e=>{m.set({autonomy:e}),p(e)}}),(0,Y.jsx)(km,{label:`Auto-proceed delay`,hint:`Milliseconds before the agent auto-proceeds in Auto mode. 0 = immediate.`,value:m.autonomyDelayMs,min:0,max:1e4,step:500,unit:`ms`,onChange:e=>_(`autonomyDelayMs`,e)}),(0,Y.jsx)(jm,{label:`YOLO mode`,hint:`Bypass tool confirmation prompts — the agent runs without asking.`,value:m.yolo,onChange:()=>_(`yolo`,!m.yolo)})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 mt-3 flex items-center gap-2`,children:[(0,Y.jsx)(Yt,{className:`h-4 w-4 text-muted-foreground`}),`Prompt Refinement`]}),(0,Y.jsx)(jm,{label:`Enable refine`,hint:`Rewrite prompts before sending — clearer instructions, better results.`,value:m.enhanceEnabled,onChange:()=>_(`enhanceEnabled`,!m.enhanceEnabled)}),(0,Y.jsx)(km,{label:`Refine delay`,hint:`Countdown before the refined prompt auto-sends.`,value:m.enhanceDelayMs,min:3e4,max:12e4,step:15e3,unit:`ms`,onChange:e=>_(`enhanceDelayMs`,e)}),(0,Y.jsx)(Am,{label:`Refine language`,hint:`Keep your language or translate to English for the model.`,value:m.enhanceLanguage,options:[{value:`original`,label:`Original — keep your language`},{value:`english`,label:`English — translate to English`}],onChange:e=>_(`enhanceLanguage`,e)})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 mt-3 flex items-center gap-2`,children:[(0,Y.jsx)(k,{className:`h-4 w-4 text-muted-foreground`}),`Reasoning & Cache`]}),(0,Y.jsx)(Am,{label:`Reasoning mode`,hint:`Control how the model uses extended thinking. Auto = provider default.`,value:m.reasoningMode,options:[{value:`auto`,label:`Auto — provider default`},{value:`on`,label:`On — force thinking on`},{value:`off`,label:`Off — force thinking off`}],onChange:e=>_(`reasoningMode`,e)}),(0,Y.jsx)(Am,{label:`Reasoning effort`,hint:`How much compute the model spends thinking. Only sent when the model supports it.`,value:m.reasoningEffort,options:[{value:`none`,label:`None`},{value:`minimal`,label:`Minimal`},{value:`low`,label:`Low`},{value:`medium`,label:`Medium`},{value:`high`,label:`High`},{value:`xhigh`,label:`Extra High`},{value:`max`,label:`Max`}],onChange:e=>_(`reasoningEffort`,e)}),(0,Y.jsx)(jm,{label:`Preserve thinking`,hint:`Keep reasoning blocks across turns for context continuity.`,value:m.reasoningPreserve,onChange:()=>_(`reasoningPreserve`,!m.reasoningPreserve)}),(0,Y.jsx)(Am,{label:`Cache TTL`,hint:`Prompt cache time-to-live. 1h costs more on write but saves on repeat reads (Anthropic).`,value:m.cacheTtl,options:[{value:`default`,label:`Default — provider default`},{value:`5m`,label:`5 minutes`},{value:`1h`,label:`1 hour`}],onChange:e=>_(`cacheTtl`,e)}),(0,Y.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-2`,children:[`Use `,(0,Y.jsx)(`code`,{className:`bg-muted px-1 py-0.5 rounded`,children:`wstack models caps`}),` to check what the current model supports. Unsupported settings are silently omitted per-request.`]})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 mt-3 flex items-center gap-2`,children:[(0,Y.jsx)(k,{className:`h-4 w-4 text-muted-foreground`}),`Model Fallbacks`]}),(0,Y.jsx)(`p`,{className:`mb-2 text-xs text-muted-foreground`,children:`When the active model rate-limits (429/529), 5xx-errors, or stalls — after its own retries — the agent rotates to the next model in this chain. Also used as the default for SDD worker subagents.`}),(0,Y.jsx)(om,{value:m.fallbackModels,candidates:h,onChange:e=>_(`fallbackModels`,e)}),(0,Y.jsxs)(`div`,{className:`pt-1`,children:[(0,Y.jsx)(jm,{label:`Auto fallback`,hint:`When the chain above is empty, auto-derive one from your keyed providers.`,value:m.fallbackAuto,onChange:()=>_(`fallbackAuto`,!m.fallbackAuto)}),(0,Y.jsx)(jm,{label:`Favorites only`,hint:`When auto fallback derives a chain, restrict it to your favorite models.`,value:m.favoriteModelsOnly,onChange:()=>_(`favoriteModelsOnly`,!m.favoriteModelsOnly)})]})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 mt-3 flex items-center gap-2`,children:[(0,Y.jsx)(ue,{className:`h-4 w-4 text-muted-foreground`}),`Fallback Profiles`]}),(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Y.jsx)(Qc,{value:I,onChange:e=>L(e.target.value),placeholder:`fallback1`,className:`font-mono text-sm`,onKeyDown:e=>{e.key===`Enter`&&de()}}),(0,Y.jsx)($,{type:`button`,variant:`outline`,onClick:de,children:`Add`})]}),(0,Y.jsx)(`div`,{className:`mt-3 space-y-3`,children:Object.keys(m.fallbackProfiles).length===0?(0,Y.jsxs)(`div`,{className:`rounded-md border border-dashed border-border p-3`,children:[(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No named fallback profiles yet.`}),(0,Y.jsx)($,{type:`button`,variant:`outline`,size:`sm`,className:`mt-2`,onClick:fe,children:`Create default from active model`})]}):Object.entries(m.fallbackProfiles).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>(0,Y.jsxs)(`div`,{className:`rounded-md border border-border p-3`,children:[(0,Y.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[(0,Y.jsx)(`span`,{className:`font-mono text-sm font-medium`,children:e}),(0,Y.jsxs)(`div`,{className:`flex gap-1`,children:[(0,Y.jsx)($,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>he(e),children:`Use chain`}),(0,Y.jsx)($,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>ge(e),children:`Set leader`}),(0,Y.jsx)($,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>me(e),children:`Remove`})]})]}),(0,Y.jsx)(om,{value:t,candidates:h,placeholder:`Add model to profile…`,emptyHint:`Profile is empty.`,onChange:t=>pe(e,t)})]},e))})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 mt-3 flex items-center gap-2`,children:[(0,Y.jsx)(k,{className:`h-4 w-4 text-muted-foreground`}),`Favorite Models`]}),(0,Y.jsx)(om,{value:m.favoriteModels,candidates:h,placeholder:`Add favorite model…`,emptyHint:`Favorites are shown first and can constrain auto fallback.`,onChange:e=>_(`favoriteModels`,e)})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 mt-3 flex items-center gap-2`,children:[(0,Y.jsx)(qe,{className:`h-4 w-4 text-muted-foreground`}),`Model Routing`]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-[120px_1fr_auto] gap-2`,children:[(0,Y.jsx)(Qc,{value:R,onChange:e=>z(e.target.value),placeholder:`*`,className:`font-mono text-sm`}),(0,Y.jsx)(Qc,{value:ee,onChange:e=>te(e.target.value),onKeyDown:e=>{e.key===`Enter`&&ve()},placeholder:`fallback1 or provider/model`,className:`font-mono text-sm`}),(0,Y.jsx)($,{type:`button`,variant:`outline`,onClick:ve,children:`Set`})]}),(0,Y.jsx)(`div`,{className:`mt-3 space-y-1.5`,children:Object.keys(m.modelMatrix).length===0?(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No model routes yet.`}):Object.entries(m.modelMatrix).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border border-border bg-muted px-2 py-1.5 text-xs`,children:[(0,Y.jsx)(`span`,{className:`w-28 shrink-0 font-mono text-muted-foreground`,children:e}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono`,children:be(t)}),(0,Y.jsx)($,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>ye(e),children:`Remove`})]},e))})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 mt-3 flex items-center gap-2`,children:[(0,Y.jsx)(Er,{className:`h-4 w-4 text-muted-foreground`}),`HQ Client`]}),(0,Y.jsx)(jm,{label:`HQ publishing`,hint:`Publish this WebUI/client session to WrongStack HQ. Same-machine clients can auto-discover local HQ auth; remote clients use the URL/token below.`,value:m.hqEnabled,onChange:()=>_(`hqEnabled`,!m.hqEnabled)}),(0,Y.jsxs)(`div`,{className:`space-y-1 py-2`,children:[(0,Y.jsx)(`label`,{className:`text-sm font-medium`,children:`HQ URL`}),(0,Y.jsx)(Qc,{value:m.hqUrl,placeholder:`http://host:3499`,onChange:e=>_(`hqUrl`,e.target.value)}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Leave empty for same-machine auto-discovery.`})]}),(0,Y.jsxs)(`div`,{className:`space-y-1 py-2`,children:[(0,Y.jsx)(`label`,{className:`text-sm font-medium`,children:`HQ client token`}),(0,Y.jsx)(Qc,{type:`password`,value:m.hqToken,placeholder:`Client token from wstack --hq`,onChange:e=>_(`hqToken`,e.target.value)})]}),(0,Y.jsx)(jm,{label:`Raw HQ content`,hint:`Send raw content previews to HQ instead of redacted previews.`,value:m.hqRawContent,onChange:()=>_(`hqRawContent`,!m.hqRawContent)})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 mt-3 flex items-center gap-2`,children:[(0,Y.jsx)(Yt,{className:`h-4 w-4 text-muted-foreground`}),`Execution`]}),(0,Y.jsx)(km,{label:`Max iterations per run`,hint:`Hard cap on LLM turns per agent.run().`,value:m.maxIterations,min:10,max:2e3,step:10,onChange:e=>_(`maxIterations`,e)}),(0,Y.jsx)(km,{label:`Auto-proceed max iterations`,hint:`Stop auto-proceed after N iterations. 0 = unlimited.`,value:m.autoProceedMaxIterations,min:0,max:250,step:5,onChange:e=>_(`autoProceedMaxIterations`,e)}),(0,Y.jsx)(jm,{label:`Confirm before exit`,hint:`First Ctrl+C aborts work, second confirms exit.`,value:m.confirmExit,onChange:()=>_(`confirmExit`,!m.confirmExit)}),(0,Y.jsx)(jm,{label:`Chime on completion`,hint:`Terminal bell when an agent run finishes.`,value:m.chime,onChange:()=>_(`chime`,!m.chime)})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 mt-3 flex items-center gap-2`,children:[(0,Y.jsx)(qe,{className:`h-4 w-4 text-muted-foreground`}),`Fleet & Streaming`]}),(0,Y.jsx)(jm,{label:`Stream fleet events`,hint:`Show live subagent activity in the fleet panel.`,value:m.streamFleet,onChange:()=>_(`streamFleet`,!m.streamFleet)}),(0,Y.jsx)(km,{label:`Max concurrent subagents`,hint:`Maximum number of subagents that can run simultaneously.`,value:m.maxConcurrent,min:1,max:50,step:1,onChange:e=>_(`maxConcurrent`,e)}),(0,Y.jsx)(jm,{label:`Next-step prediction`,hint:`After a turn completes, predict likely next steps.`,value:m.nextPrediction,onChange:()=>_(`nextPrediction`,!m.nextPrediction)})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 mt-3 flex items-center gap-2`,children:[(0,Y.jsx)(ht,{className:`h-4 w-4 text-muted-foreground`}),`Telegram Notifications`]}),m.tgConfigured?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(jm,{label:`Session end`,hint:`Send a summary when a session ends.`,value:m.tgSessionEnd,onChange:()=>_(`tgSessionEnd`,!m.tgSessionEnd)}),(0,Y.jsx)(jm,{label:`Delegate finished`,hint:`Send a humanized note when a subagent completes.`,value:m.tgDelegate,onChange:()=>_(`tgDelegate`,!m.tgDelegate)}),(0,Y.jsx)(jm,{label:`Long-running tools`,hint:`Notify when a tool exceeds ${m.tgLongToolMs}ms. Set 0 to disable.`,value:m.tgLongToolMs>0,onChange:()=>_(`tgLongToolMs`,m.tgLongToolMs>0?0:3e4)}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground mt-2`,children:`Changes apply immediately.`})]}):(0,Y.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Telegram is not configured. Run`,` `,(0,Y.jsx)(`code`,{className:`bg-muted px-1 py-0.5 rounded`,children:`/telegram-setup`}),` in the CLI to connect a bot first.`]})]})]}),(0,Y.jsxs)(Yd,{value:`features`,className:`space-y-4`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 flex items-center gap-2`,children:[(0,Y.jsx)(Nt,{className:`h-4 w-4 text-muted-foreground`}),`Feature Flags`]}),(0,Y.jsx)(jm,{label:`MCP servers`,hint:`Enable Model Context Protocol integrations.`,value:m.featureMcp,onChange:()=>_(`featureMcp`,!m.featureMcp)}),(0,Y.jsx)(jm,{label:`Plugins`,hint:`Load and run user-installed plugins.`,value:m.featurePlugins,onChange:()=>_(`featurePlugins`,!m.featurePlugins)}),(0,Y.jsx)(jm,{label:`Memory`,hint:`Persist and recall facts across sessions.`,value:m.featureMemory,onChange:()=>_(`featureMemory`,!m.featureMemory)}),(0,Y.jsx)(jm,{label:`Skills`,hint:`Load domain-specific skill prompts.`,value:m.featureSkills,onChange:()=>_(`featureSkills`,!m.featureSkills)}),(0,Y.jsx)(jm,{label:`Models registry`,hint:`Use the models.dev catalog for provider discovery.`,value:m.featureModelsRegistry,onChange:()=>_(`featureModelsRegistry`,!m.featureModelsRegistry)}),(0,Y.jsx)(jm,{label:`Index on start`,hint:`Build the codebase symbol index at session start.`,value:m.indexOnStart,onChange:()=>_(`indexOnStart`,!m.indexOnStart)})]}),(0,Y.jsxs)(`div`,{className:`pt-2 border-t`,children:[(0,Y.jsxs)(`h3`,{className:`text-sm font-semibold mb-3 mt-3 flex items-center gap-2`,children:[(0,Y.jsx)(rt,{className:`h-4 w-4 text-muted-foreground`}),`Context & Debug`]}),(0,Y.jsx)(jm,{label:`Auto-compact context`,hint:`Automatically trim the context window when near limits.`,value:m.contextAutoCompact,onChange:()=>_(`contextAutoCompact`,!m.contextAutoCompact)}),(0,Y.jsx)(Am,{label:`Compactor strategy`,hint:`How the context is compacted when it grows too large.`,value:m.contextStrategy,options:[{value:`hybrid`,label:`Hybrid — fast rules (default)`},{value:`intelligent`,label:`Intelligent — LLM summarization`},{value:`selective`,label:`Selective — LLM-driven selection`}],onChange:e=>_(`contextStrategy`,e)}),(0,Y.jsx)(Am,{label:`Context mode`,hint:`Context window policy — balanced is the default.`,value:m.contextMode,options:[{value:`balanced`,label:`Balanced — normal context usage`},{value:`frugal`,label:`Frugal — conservative token use`},{value:`deep`,label:`Deep — larger context for complex tasks`},{value:`archival`,label:`Archival — maximize context retention`}],onChange:e=>_(`contextMode`,e)}),(0,Y.jsx)(Am,{label:`Token-saving mode`,hint:`How aggressively to reduce token usage.`,value:m.tokenSavingTier,options:[{value:`off`,label:`Off — no token saving`},{value:`minimal`,label:`Minimal — basic optimization`},{value:`light`,label:`Light — moderate reduction`},{value:`medium`,label:`Medium — significant savings`},{value:`aggressive`,label:`Aggressive — maximum compression`}],onChange:e=>_(`tokenSavingTier`,e)}),(0,Y.jsx)(Am,{label:`Log level`,hint:`Minimum severity for server-side logging.`,value:m.logLevel,options:[{value:`debug`,label:`Debug — everything`},{value:`info`,label:`Info — normal flow`},{value:`warn`,label:`Warn — problems only`},{value:`error`,label:`Error — failures only`}],onChange:e=>_(`logLevel`,e)}),(0,Y.jsx)(Am,{label:`Audit level`,hint:`Detail level for session audit logs.`,value:m.auditLevel,options:[{value:`minimal`,label:`Minimal — errors only`},{value:`standard`,label:`Standard — tool calls + errors`},{value:`full`,label:`Full — every event (large logs)`}],onChange:e=>_(`auditLevel`,e)})]})]}),(0,Y.jsx)(Yd,{value:`mcp`,className:`space-y-4`,children:m.featureMcp?(0,Y.jsx)(Dm,{}):(0,Y.jsxs)(`div`,{className:`text-center py-8 text-muted-foreground`,children:[(0,Y.jsx)(st,{className:`w-10 h-10 mx-auto mb-2 opacity-50`}),(0,Y.jsx)(`p`,{children:`MCP servers are disabled.`}),(0,Y.jsx)(`p`,{className:`text-sm mt-1`,children:`Enable the "MCP servers" feature flag in the Features tab to use this section.`})]})})]})})})]})}var eh=[],th=100,nh=3e4,rh=5,ih=null,ah=!1;function oh(e){eh.push(e),eh.length>th&&eh.shift(),eh.length>=rh&&!ah&&sh()}async function sh(){if(ah||eh.length===0)return;ah=!0;let e=eh.splice(0,eh.length);try{(await fetch(`/api/analytics`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})).ok||(eh.unshift(...e),eh.length>th&&(eh.length=th))}catch{eh.unshift(...e),eh.length>th&&(eh.length=th)}finally{ah=!1}}function ch(){ih||=setInterval(()=>{eh.length>0&&sh()},nh)}function lh(e,t,n){oh({event:e,category:t,label:n?.label,value:n?.value,metadata:n?.metadata,timestamp:new Date().toISOString()})}var uh=`wrongstack_referral_click`;function dh(e){try{sessionStorage.setItem(uh,JSON.stringify(e))}catch{}lh(`referral_link_clicked`,`engagement`,{label:e.providerName,metadata:{providerId:e.providerId,referralCode:e.referralCode,docsUrl:e.docsUrl}})}function fh(){try{let e=sessionStorage.getItem(uh);return e?JSON.parse(e):null}catch{return null}}function ph(){try{sessionStorage.removeItem(uh)}catch{}}function mh(e,t){let n=fh();if(n&&n.providerId===e){let r=Date.now()-new Date(n.clickedAt).getTime();lh(`referral_converted`,`conversion`,{label:t,value:Math.round(r/1e3),metadata:{providerId:e,referralCode:n.referralCode,timeToConvertMs:r,clickedAt:n.clickedAt}}),ph()}}var hh=t(sn(),1),gh=[{id:`openai`,name:`OpenAI`,description:`GPT, o-series, and Codex models`,icon:`🤖`,color:`from-emerald-500/20 to-emerald-500/5 border-emerald-500/30 hover:border-emerald-500/50`,keyPlaceholder:`sk-...`,docsUrl:`https://platform.openai.com/api-keys`,family:`openai`},{id:`anthropic`,name:`Anthropic`,description:`Claude Opus, Sonnet, and Haiku`,icon:`🧠`,color:`from-amber-500/20 to-amber-500/5 border-amber-500/30 hover:border-amber-500/50`,keyPlaceholder:`sk-ant-...`,docsUrl:`https://console.anthropic.com/settings/keys`,family:`anthropic`},{id:`google`,name:`Google`,description:`Gemini Pro, Flash, and Nano`,icon:`✨`,color:`from-blue-500/20 to-blue-500/5 border-blue-500/30 hover:border-blue-500/50`,keyPlaceholder:`AIza...`,docsUrl:`https://aistudio.google.com/apikey`,family:`google`},{id:`deepseek`,name:`DeepSeek`,description:`High-performance reasoning at low cost`,icon:`🐋`,color:`from-sky-500/20 to-sky-500/5 border-sky-500/30 hover:border-sky-500/50`,keyPlaceholder:`sk-...`,docsUrl:`https://platform.deepseek.com/api_keys`,family:`openai-compatible`},{id:`openrouter`,name:`OpenRouter`,description:`All models via one key`,icon:`🔀`,color:`from-violet-500/20 to-violet-500/5 border-violet-500/30 hover:border-violet-500/50`,keyPlaceholder:`sk-or-...`,docsUrl:`https://openrouter.ai/keys`,family:`openai-compatible`},{id:`minimax`,name:`MiniMax`,description:`Subscribe to one plan and unlock the latest models, including frontier coding capabilities, 1M ultra-long context, and native multimodality. Text, image, and speech models all share the same quota. Invite Friends, Win Together: Friends get 10% off plus Builder benefits when they subscribe, while referrers earn 10% cashback plus community perks.`,icon:`🔮`,color:`from-fuchsia-500/20 to-fuchsia-500/5 border-fuchsia-500/30 hover:border-fuchsia-500/50`,keyPlaceholder:`eyJ...`,docsUrl:`https://platform.minimax.io/subscribe/token-plan?code=JrA4R9QAEn&source=link`,family:`openai-compatible`},{id:`kimi`,name:`Kimi`,description:`Moonshot AI long-context models`,icon:`🌙`,color:`from-cyan-500/20 to-cyan-500/5 border-cyan-500/30 hover:border-cyan-500/50`,keyPlaceholder:`sk-...`,docsUrl:`https://www.kimi.com/membership/pricing`,family:`openai-compatible`},{id:`zai`,name:`Z.ai (GLM)`,description:`You've been invited to join the GLM Coding Plan! Enjoy full support for Claude Code, Cline, and 20+ top coding tools — starting at just $18/month. Subscribe now and grab the limited-time deal!`,icon:`🔷`,color:`from-indigo-500/20 to-indigo-500/5 border-indigo-500/30 hover:border-indigo-500/50`,keyPlaceholder:`...`,docsUrl:`https://z.ai/subscribe?ic=JQZ7TPPRA6`,family:`openai-compatible`},{id:`opencode-go`,name:`OpenCode Go`,description:`Global hosted API for 75+ LLM providers — stable access from US, EU, and Singapore`,icon:`🌍`,color:`from-teal-500/20 to-teal-500/5 border-teal-500/30 hover:border-teal-500/50`,keyPlaceholder:`oc-...`,docsUrl:`https://opencode.ai/go?ref=6VZAER87H4`,family:`openai-compatible`}];async function _h(e,t){try{let n=await fetch(e,{signal:t});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json();if(!Array.isArray(r))throw Error(`Expected JSON array`);let i=r.filter(e=>typeof e.id==`string`&&typeof e.name==`string`&&typeof e.family==`string`);return i.length>0?i:gh}catch{return gh}}function vh({popular:e,catalogProvider:t,savedProvider:n,onKeySaved:r}){let[a,o]=(0,U.useState)(``),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(!!n?.apiKeys.some(e=>e.isActive)),[d,f]=(0,U.useState)(!1),[p,m]=(0,U.useState)(!1),[h,g]=(0,U.useState)(!1),[_,v]=(0,U.useState)(null);(0,U.useEffect)(()=>{h&&e.referral&&hh.toDataURL(e.referral.url,{width:200,margin:2,color:{dark:`#000000`,light:`#ffffff`}}).then(e=>v(e)).catch(()=>v(null))},[h,e.referral]);let y=async()=>{if(a.trim()){c(!0);try{let n=W(K.getState().wsUrl);t?n.addKey(e.id,`default`,a.trim()):n.send({type:`provider.add`,payload:{id:e.id,family:e.family,apiKey:a.trim()}}),u(!0),o(``),Q.success(`${e.name} API key saved`),r(e.id),lh(`provider_key_saved`,`engagement`,{label:e.name,metadata:{providerId:e.id,providerFamily:e.family,hasReferral:!!e.referral,isNewProvider:!t}}),e.referral&&mh(e.id,e.name)}catch{Q.error(`Failed to save ${e.name} API key`),lh(`provider_key_save_failed`,`error`,{label:e.name,metadata:{providerId:e.id,providerFamily:e.family}})}finally{c(!1)}}},b=e=>{e.key===`Enter`&&a.trim()&&y()},S=async()=>{if(e.referral)try{await navigator.clipboard.writeText(e.referral.url),m(!0),Q.success(`Referral link copied to clipboard`),setTimeout(()=>m(!1),2e3),lh(`referral_link_copied`,`engagement`,{label:e.name,metadata:{providerId:e.id,referralCode:e.referral.code,referralUrl:e.referral.url}})}catch{Q.error(`Failed to copy referral link`),lh(`referral_link_copy_failed`,`error`,{label:e.name,metadata:{providerId:e.id,referralCode:e.referral.code}})}},C=t&&t.modelCount>0;return(0,Y.jsxs)(`div`,{className:Z(`rounded-xl border p-4 transition-all`,l?`border-emerald-500/30 bg-emerald-500/5`:`bg-gradient-to-br ${e.color}`),children:[(0,Y.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Y.jsx)(`span`,{className:`text-2xl shrink-0 mt-0.5`,children:e.icon}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`h3`,{className:`text-sm font-semibold`,children:e.name}),l&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded-full bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 border border-emerald-500/20`,children:[(0,Y.jsx)(jn,{className:`h-2.5 w-2.5`}),`Key saved`]}),e.referral&&!l&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded-full bg-amber-500/10 text-amber-600 dark:text-amber-400 border border-amber-500/20`,children:[(0,Y.jsx)(Nn,{className:`h-2.5 w-2.5`}),`Referral`]})]}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground mt-0.5`,children:e.description}),e.referral&&!l&&(0,Y.jsxs)(`p`,{className:`text-[11px] text-amber-600/80 dark:text-amber-400/80 mt-1`,children:[`🎁 `,e.referral.reward]}),l?C?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>f(!d),className:`mt-2 text-[11px] text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1`,children:[t?.modelCount,` models available`,d?(0,Y.jsx)(ar,{className:`h-3 w-3`}):(0,Y.jsx)(i,{className:`h-3 w-3`})]}):null:(0,Y.jsxs)(`div`,{className:`mt-3 space-y-2`,children:[(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Y.jsx)(Qc,{type:`password`,placeholder:e.keyPlaceholder,value:a,onChange:e=>o(e.target.value),onKeyDown:b,className:`font-mono text-sm`}),(0,Y.jsx)($,{onClick:y,disabled:!a.trim()||s,size:`sm`,className:`shrink-0`,children:s?(0,Y.jsx)(O,{className:`h-4 w-4 animate-spin`}):`Save`})]}),e.docsUrl&&(0,Y.jsxs)(`a`,{href:e.docsUrl,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-[11px] text-muted-foreground hover:text-foreground transition-colors`,onClick:()=>{lh(`provider_docs_link_clicked`,`engagement`,{label:e.name,metadata:{providerId:e.id,docsUrl:e.docsUrl,hasReferral:!!e.referral}}),e.referral&&dh({providerId:e.id,providerName:e.name,referralCode:e.referral.code,clickedAt:new Date().toISOString(),docsUrl:e.docsUrl??``})},children:[`Get your API key `,(0,Y.jsx)(x,{className:`h-3 w-3`})]}),e.referral&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:S,className:`inline-flex items-center gap-1 text-[11px] text-amber-600/80 dark:text-amber-400/80 hover:text-amber-700 dark:hover:text-amber-300 transition-colors`,children:p?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(jn,{className:`h-3 w-3`}),` Copied`]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(de,{className:`h-3 w-3`}),` Copy referral link`]})}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>g(!0),className:`inline-flex items-center gap-1 text-[11px] text-amber-600/80 dark:text-amber-400/80 hover:text-amber-700 dark:hover:text-amber-300 transition-colors`,children:[(0,Y.jsx)(ie,{className:`h-3 w-3`}),` Share`]})]})]})]})]}),(0,Y.jsx)(Uc,{open:h,onOpenChange:g,children:(0,Y.jsxs)(qc,{className:`sm:max-w-md`,children:[(0,Y.jsxs)(Jc,{children:[(0,Y.jsxs)(Xc,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(Nn,{className:`h-4 w-4 text-amber-500`}),`Share `,e.name,` Referral`]}),(0,Y.jsx)(Zc,{children:`Share this referral link with friends and earn rewards!`})]}),(0,Y.jsx)(`div`,{className:`flex flex-col items-center gap-4 py-4`,children:e.referral&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`text-sm text-center`,children:(0,Y.jsxs)(`p`,{className:`font-medium text-amber-600 dark:text-amber-400`,children:[`🎁 `,e.referral.reward]})}),_?(0,Y.jsx)(`div`,{className:`rounded-lg border border-border p-2 bg-white`,children:(0,Y.jsx)(`img`,{src:_,alt:`${e.name} referral QR code`,className:`w-[200px] h-[200px]`})}):(0,Y.jsx)(`div`,{className:`w-[200px] h-[200px] rounded-lg border border-border flex items-center justify-center bg-muted`,children:(0,Y.jsx)(O,{className:`h-6 w-6 animate-spin text-muted-foreground`})}),(0,Y.jsxs)(`div`,{className:`w-full space-y-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-center gap-2`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(`Check out ${e.name}! 🎁 ${e.referral.reward}`),n=encodeURIComponent(e.referral.url);window.open(`https://twitter.com/intent/tweet?text=${t}&url=${n}`,`_blank`,`noopener,noreferrer`),lh(`referral_share_twitter`,`engagement`,{label:e.name,metadata:{providerId:e.id}})},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-slate-900 text-white text-xs hover:bg-slate-800 transition-colors`,title:`Share on X/Twitter`,children:[(0,Y.jsx)(`svg`,{className:`h-3.5 w-3.5`,fill:`currentColor`,viewBox:`0 0 24 24`,children:(0,Y.jsx)(`path`,{d:`M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z`})}),`X`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(e.referral.url),n=encodeURIComponent(`Check out ${e.name}! ${e.referral.reward}`);window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${t}&summary=${n}`,`_blank`,`noopener,noreferrer`),lh(`referral_share_linkedin`,`engagement`,{label:e.name,metadata:{providerId:e.id}})},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-[#0A66C2] text-white text-xs hover:bg-[#0958a8] transition-colors`,title:`Share on LinkedIn`,children:[(0,Y.jsx)(`svg`,{className:`h-3.5 w-3.5`,fill:`currentColor`,viewBox:`0 0 24 24`,children:(0,Y.jsx)(`path`,{d:`M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z`})}),`LinkedIn`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(`Check out ${e.name}! 🎁 ${e.referral.reward} ${e.referral.url}`);window.open(`https://t.me/share/url?url=${t}`,`_blank`,`noopener,noreferrer`),lh(`referral_share_telegram`,`engagement`,{label:e.name,metadata:{providerId:e.id}})},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-[#26A5E4] text-white text-xs hover:bg-[#1e96d1] transition-colors`,title:`Share on Telegram`,children:[(0,Y.jsx)(`svg`,{className:`h-3.5 w-3.5`,fill:`currentColor`,viewBox:`0 0 24 24`,children:(0,Y.jsx)(`path`,{d:`M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z`})}),`Telegram`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(`Check out ${e.name}! 🎁 ${e.referral.reward}`),n=encodeURIComponent(e.referral.url);window.open(`https://wa.me/?text=${t}%20${n}`,`_blank`,`noopener,noreferrer`),lh(`referral_share_whatsapp`,`engagement`,{label:e.name,metadata:{providerId:e.id}})},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-[#25D366] text-white text-xs hover:bg-[#1fb859] transition-colors`,title:`Share on WhatsApp`,children:[(0,Y.jsx)(`svg`,{className:`h-3.5 w-3.5`,fill:`currentColor`,viewBox:`0 0 24 24`,children:(0,Y.jsx)(`path`,{d:`M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.134 1.585 5.934L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z`})}),`WhatsApp`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(e.referral.url),n=encodeURIComponent(`${e.name} - ${e.referral.reward}`);window.open(`https://www.reddit.com/submit?url=${t}&title=${n}`,`_blank`,`noopener,noreferrer`),lh(`referral_share_reddit`,`engagement`,{label:e.name,metadata:{providerId:e.id}})},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-[#FF4500] text-white text-xs hover:bg-[#e03d00] transition-colors`,title:`Share on Reddit`,children:[(0,Y.jsx)(`svg`,{className:`h-3.5 w-3.5`,fill:`currentColor`,viewBox:`0 0 24 24`,children:(0,Y.jsx)(`path`,{d:`M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 0 1-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 0 1 .042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 0 1 4.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 0 1 .14-.197.35.35 0 0 1 .238-.042l2.906.617a1.214 1.214 0 0 0 1.108-.701 1.25 1.25 0 0 1 2.144.33zm-8.811 8.748c-.968 0-1.754.786-1.754 1.754 0 .968.786 1.754 1.754 1.754.968 0 1.754-.786 1.754-1.754 0-.968-.786-1.754-1.754-1.754zm7.944 0c-.968 0-1.754.786-1.754 1.754 0 .968.786 1.754 1.754 1.754.968 0 1.754-.786 1.754-1.754 0-.968-.786-1.754-1.754-1.754z`})}),`Reddit`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(`Check out ${e.name}! 🎁 ${e.referral.reward}`),n=encodeURIComponent(e.referral.url);window.open(`https://www.facebook.com/sharer/sharer.php?u=${n}&quote=${t}`,`_blank`,`noopener,noreferrer`),lh(`referral_share_facebook`,`engagement`,{label:e.name,metadata:{providerId:e.id}})},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-[#1877F2] text-white text-xs hover:bg-[#166fe5] transition-colors`,title:`Share on Facebook`,children:[(0,Y.jsx)(`svg`,{className:`h-3.5 w-3.5`,fill:`currentColor`,viewBox:`0 0 24 24`,children:(0,Y.jsx)(`path`,{d:`M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z`})}),`Facebook`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{let t=encodeURIComponent(`Check out ${e.name}! 🎁 ${e.referral.reward}`),n=encodeURIComponent(e.referral.url);window.open(`mailto:?subject=${t}&body=${n}`,`_blank`,`noopener,noreferrer`),lh(`referral_share_email`,`engagement`,{label:e.name,metadata:{providerId:e.id}})},className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-muted text-muted-foreground text-xs hover:bg-muted/80 transition-colors`,title:`Share via Email`,children:[(0,Y.jsx)(`svg`,{className:`h-3.5 w-3.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,viewBox:`0 0 24 24`,children:(0,Y.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M21.75 6.75v10.5a2.25 2.25 0 01-2.25 2.25H4.5a2.25 2.25 0 01-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25m19.5 0v.243a2.25 2.25 0 01-1.07 1.916l-7.5 4.615a2.25 2.25 0 01-2.36 0L3.32 8.91a2.25 2.25 0 01-1.07-1.916V6.75`})}),`Email`]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(Qc,{value:e.referral.url,readOnly:!0,className:`font-mono text-xs flex-1`}),(0,Y.jsx)($,{size:`sm`,variant:`outline`,onClick:S,className:`shrink-0`,children:p?(0,Y.jsx)(jn,{className:`h-4 w-4`}):(0,Y.jsx)(de,{className:`h-4 w-4`})})]}),(0,Y.jsx)(`p`,{className:`text-[11px] text-muted-foreground text-center`,children:`Scan the QR code or copy the link to share`})]})]})})]})})]})}function yh({onKeySaved:e}){let[t,n]=(0,U.useState)(!1),[r,a]=(0,U.useState)(``),[o,s]=(0,U.useState)(`openai-compatible`),[c,l]=(0,U.useState)(``),[u,d]=(0,U.useState)(``),[f,p]=(0,U.useState)(!1);return(0,Y.jsxs)(`div`,{className:`rounded-xl border border-dashed border-border/60 overflow-hidden`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>n(!t),className:`w-full flex items-center gap-3 p-4 text-left hover:bg-muted/30 transition-colors`,children:[(0,Y.jsx)(`div`,{className:`w-10 h-10 rounded-lg bg-muted/50 flex items-center justify-center`,children:(0,Y.jsx)(Sn,{className:`h-5 w-5 text-muted-foreground`})}),(0,Y.jsxs)(`div`,{className:`flex-1`,children:[(0,Y.jsx)(`h3`,{className:`text-sm font-medium`,children:`Custom / Self-hosted Provider`}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Add any OpenAI-compatible endpoint (Ollama, vLLM, Together, etc.)`})]}),(0,Y.jsx)(i,{className:Z(`h-4 w-4 text-muted-foreground transition-transform`,t&&`rotate-90`)})]}),t&&(0,Y.jsxs)(`div`,{className:`px-4 pb-4 space-y-3 border-t border-border/40`,children:[(0,Y.jsxs)(`div`,{className:`space-y-1.5 pt-3`,children:[(0,Y.jsx)(`span`,{className:`text-[11px] font-medium text-muted-foreground block`,children:`Local servers — click to pre-fill`}),(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Nm.map(e=>(0,Y.jsx)($,{type:`button`,size:`sm`,variant:r===e.id?`default`:`outline`,onClick:()=>{a(e.id),s(`openai-compatible`),l(e.defaultBaseUrl),e.noAuth&&d(``)},title:e.hint,children:e.label},e.id))})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground mb-1 block`,children:`Provider ID *`}),(0,Y.jsx)(Qc,{placeholder:`e.g. my-llm`,value:r,onChange:e=>a(e.target.value),className:`text-sm`})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground mb-1 block`,children:`Family`}),(0,Y.jsxs)(`select`,{value:o,onChange:e=>s(e.target.value),className:`flex h-9 w-full rounded-md border border-input bg-transparent px-3 text-sm`,children:[(0,Y.jsx)(`option`,{value:`openai-compatible`,children:`OpenAI Compatible`}),(0,Y.jsx)(`option`,{value:`openai`,children:`OpenAI`}),(0,Y.jsx)(`option`,{value:`anthropic`,children:`Anthropic`}),(0,Y.jsx)(`option`,{value:`google`,children:`Google`})]})]})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground mb-1 block`,children:`Base URL (optional)`}),(0,Y.jsx)(Qc,{placeholder:`e.g. http://localhost:11434/v1`,value:c,onChange:e=>l(e.target.value),className:`text-sm font-mono`})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`label`,{className:`text-[11px] font-medium text-muted-foreground mb-1 block`,children:`API Key (optional — some local providers don't need one)`}),(0,Y.jsx)(Qc,{type:`password`,placeholder:`API key (if required)`,value:u,onChange:e=>d(e.target.value),className:`text-sm font-mono`})]}),(0,Y.jsxs)($,{onClick:async()=>{if(r.trim()){p(!0);try{W(K.getState().wsUrl).send({type:`provider.add`,payload:{id:r.trim(),family:o,baseUrl:c.trim()||void 0,apiKey:u.trim()||void 0}}),Q.success(`Provider "${r.trim()}" added`),e(r.trim()),a(``),l(``),d(``),n(!1)}catch{Q.error(`Failed to add provider`)}finally{p(!1)}}},disabled:!r.trim()||f,size:`sm`,children:[f?(0,Y.jsx)(O,{className:`h-4 w-4 animate-spin mr-2`}):null,`Add Provider`]})]})]})}function bh(){let{setCurrentView:e}=J(),{provider:t,model:n,setProvider:r,setModel:a,wsConnected:o,wsUrl:s}=K();Vs();let[c,l]=(0,U.useState)(`keys`),[u,d]=(0,U.useState)([]),[f,p]=(0,U.useState)({}),[m,h]=(0,U.useState)([]),[g,_]=(0,U.useState)(!1),[v,y]=(0,U.useState)(null),[b,x]=(0,U.useState)(0),[S,C]=(0,U.useState)(new Set),[w,T]=(0,U.useState)(gh),[E,D]=(0,U.useState)(!1),[k,A]=(0,U.useState)(0),[j,M]=(0,U.useState)(0),[N,P]=(0,U.useState)(null),F=(0,U.useRef)(!0);(0,U.useEffect)(()=>{let e=new AbortController,t=`${window.location.origin}/providers.json`,n=`https://raw.githubusercontent.com/WrongStack/WrongStack/main/packages/webui/public/providers.json`;return D(!0),_h(t,e.signal).then(r=>{if(r!==gh){if(T(r),D(!1),lh(`providers_loaded`,`system`,{label:`local`,metadata:{providerCount:r.length,source:t}}),!F.current){let e=r.length-j;e>0?Q.success(`${r.length} providers loaded (${e} new)`):e<0?Q.success(`${r.length} providers loaded (${Math.abs(e)} removed)`):Q.success(`${r.length} providers loaded (no changes)`),M(r.length)}P(new Date);return}return _h(n,e.signal)}).then(e=>{if(e){if(T(e),lh(`providers_loaded`,`system`,{label:`github`,metadata:{providerCount:e.length,source:n}}),!F.current){let t=e.length-j;t>0?Q.success(`${e.length} providers loaded (${t} new)`):t<0?Q.success(`${e.length} providers loaded (${Math.abs(t)} removed)`):Q.success(`${e.length} providers loaded (no changes)`),M(e.length)}P(new Date)}}).catch(()=>{lh(`providers_load_failed`,`error`,{metadata:{localUrl:t,githubUrl:n}}),F.current||Q.error(`Failed to refresh providers`)}).finally(()=>{D(!1),F.current=!1}),()=>e.abort()},[k]);let[I,L]=(0,U.useState)(null),[R,z]=(0,U.useState)(null),[ee,te]=(0,U.useState)(!1);(0,U.useEffect)(()=>{if(!o)return;let e=W(s),t=setTimeout(()=>{t=null,_(!1),y(`The backend is not responding. It may have crashed or the connection dropped.`)},8e3),r=()=>{t&&=(clearTimeout(t),null)},i=e.on(`provider.catalog`,e=>{e.type===`provider.catalog`&&(r(),y(null),d(e.payload.providers.sort((e,t)=>e.id.localeCompare(t.id))),_(!1))}),a=e.on(`provider.models`,e=>{if(e.type===`provider.models`){let t=e.payload;p(e=>({...e,[t.provider]:t.models})),te(!1),t.models.length===1?z(t.models[0].id):n&&t.models.some(e=>e.id===n)&&z(n)}}),c=e.on(`providers.saved`,e=>{if(e.type===`providers.saved`){let t=e.payload.providers.sort((e,t)=>e.id.localeCompare(t.id));h(t),C(new Set(t.filter(e=>e.apiKeys.some(e=>e.isActive)).map(e=>e.id)))}});return y(null),_(!0),e.listProviders(),()=>{r(),i?.(),a?.(),c?.()}},[o,s,n,b]);let ne=(0,U.useCallback)(()=>{y(null),x(e=>e+1)},[]),re=(0,U.useCallback)(()=>{A(e=>e+1),lh(`providers_refresh_clicked`,`engagement`,{metadata:{currentProviderCount:w.length}})},[w.length]),B=(0,U.useCallback)(e=>{let t=new Date().getTime()-e.getTime(),n=Math.floor(t/1e3);if(n<10)return`just now`;if(n<60)return`${n}s ago`;let r=Math.floor(n/60);if(r<60)return`${r}m ago`;let i=Math.floor(r/60);return i<24?`${i}h ago`:`${Math.floor(i/24)}d ago`},[]),V=(0,U.useCallback)(e=>{C(t=>new Set([...t,e]))},[]),ie=S.size>0,ae=(0,U.useCallback)(()=>{if(!ie){if(m.length>0){let e=m[0];L(e.id),l(`done`)}return}let e=m.find(e=>e.apiKeys.some(e=>e.isActive));e&&(L(e.id),l(`done`))},[ie,m]);(0,U.useEffect)(()=>{if(!I||!o||c!==`done`)return;let e=W(s);f[I]||(te(!0),e.listProviderModels(I))},[I,o,s,f,c]);let se=I?f[I]??[]:[],ce=(0,U.useCallback)(()=>{if(!I||!R)return;r(I),a(R);let t=W(s);t.switchModel(I,R);let n=null,i=()=>{n&&clearTimeout(n)},o=t.on(`key.operation_result`,n=>{let r=n.payload;i(),o(),r.success?(t.newSession(),e(`chat`)):Q.error(r.message)});n=setTimeout(()=>{i(),o(),Q.error(`Model switch timed out. Please try again.`)},5e3)},[I,R,r,a,s,e]),le=new Set(w.map(e=>e.id)),ue=u.filter(e=>!le.has(e.id)).sort((e,t)=>e.id.localeCompare(t.id));return(0,Y.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,Y.jsxs)(`header`,{className:`flex items-center justify-between px-6 py-4 border-b bg-card shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(`div`,{className:`w-10 h-10 rounded-xl bg-gradient-to-br from-primary via-primary to-primary/60 flex items-center justify-center`,children:(0,Y.jsx)(Yt,{className:`h-5 w-5 text-primary-foreground`})}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Welcome to WrongStack`}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Add at least one API key to get started`})]})]}),ie&&(0,Y.jsxs)($,{onClick:ae,size:`sm`,children:[`Continue`,(0,Y.jsx)(Vn,{className:`h-4 w-4 ml-1.5`})]})]}),(0,Y.jsx)(Wd,{className:`flex-1`,children:c===`keys`?(0,Y.jsxs)(`div`,{className:`p-6 max-w-3xl mx-auto space-y-8`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-primary font-medium`,children:[(0,Y.jsx)(oe,{className:`h-4 w-4`}),(0,Y.jsx)(`span`,{children:`Add API Keys`})]}),(0,Y.jsx)(i,{className:`h-4 w-4 text-muted-foreground`}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,Y.jsx)(In,{className:`h-4 w-4`}),(0,Y.jsx)(`span`,{children:`Pick a Model`})]}),(0,Y.jsx)(i,{className:`h-4 w-4 text-muted-foreground`}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,Y.jsx)($e,{className:`h-4 w-4`}),(0,Y.jsx)(`span`,{children:`Start`})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-start gap-3 rounded-xl border border-primary/20 bg-primary/5 p-4`,children:[(0,Y.jsx)(rt,{className:`h-5 w-5 text-primary shrink-0 mt-0.5`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`text-sm font-medium`,children:`Your keys stay on your machine`}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground mt-0.5`,children:`API keys are encrypted and stored locally. They're only sent to the provider's API endpoint — never to us or any third party.`})]})]}),v?(0,Y.jsxs)(`div`,{className:`flex flex-col items-center text-center gap-4 py-12 rounded-xl border border-destructive/30 bg-destructive/5 px-6`,children:[(0,Y.jsx)(`div`,{className:`w-12 h-12 rounded-xl bg-destructive/10 border border-destructive/30 flex items-center justify-center`,children:(0,Y.jsx)(Ae,{className:`h-6 w-6 text-destructive`})}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`text-sm font-medium text-destructive`,children:`Can't reach the backend`}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground mt-1 max-w-sm`,children:v})]}),(0,Y.jsxs)($,{onClick:ne,size:`sm`,variant:`outline`,children:[(0,Y.jsx)(O,{className:`h-4 w-4 mr-2`}),`Retry`]})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`h2`,{className:`text-sm font-medium text-muted-foreground uppercase tracking-wider`,children:`Popular Providers`}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[E&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[11px] text-muted-foreground`,children:[(0,Y.jsx)(O,{className:`h-3 w-3 animate-spin`}),`Updating...`]}),N&&!E&&(0,Y.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,title:N.toLocaleString(),children:B(N)}),(0,Y.jsxs)(`button`,{type:`button`,onClick:re,disabled:E,className:`inline-flex items-center gap-1 text-[11px] text-muted-foreground hover:text-foreground transition-colors disabled:opacity-50 disabled:cursor-not-allowed`,title:`Refresh provider list`,children:[(0,Y.jsx)(tr,{className:Z(`h-3 w-3`,E&&`animate-spin`)}),`Refresh`]})]})]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:w.map(e=>(0,Y.jsx)(vh,{popular:e,catalogProvider:u.find(t=>t.id===e.id),savedProvider:m.find(t=>t.id===e.id),onKeySaved:V},e.id))})]}),ue.length>0&&(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsx)(`h2`,{className:`text-sm font-medium text-muted-foreground uppercase tracking-wider`,children:`More Providers`}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 gap-3`,children:ue.map(e=>(0,Y.jsx)(vh,{popular:{id:e.id,name:e.name,description:`${e.family} · ${e.modelCount} models`,icon:`🔗`,color:`from-slate-500/20 to-slate-500/5 border-slate-500/30 hover:border-slate-500/50`,keyPlaceholder:`API key`,family:e.family},catalogProvider:e,savedProvider:m.find(t=>t.id===e.id),onKeySaved:V},e.id))})]}),(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsx)(`h2`,{className:`text-sm font-medium text-muted-foreground uppercase tracking-wider`,children:`Self-hosted`}),(0,Y.jsx)(yh,{onKeySaved:V})]})]}),g&&(0,Y.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Y.jsx)(O,{className:`h-6 w-6 animate-spin text-muted-foreground`})}),ie&&(0,Y.jsx)(`div`,{className:`sticky bottom-0 bg-background/80 backdrop-blur-sm py-4 -mx-6 px-6 border-t`,children:(0,Y.jsxs)($,{onClick:ae,className:`w-full`,size:`lg`,children:[(0,Y.jsx)(In,{className:`h-4 w-4 mr-2`}),`Pick a model and start`,(0,Y.jsx)(Vn,{className:`h-4 w-4 ml-2`})]})})]}):(0,Y.jsxs)(`div`,{className:`p-6 max-w-2xl mx-auto space-y-8`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-emerald-500`,children:[(0,Y.jsx)(jn,{className:`h-4 w-4`}),(0,Y.jsx)(`span`,{children:`Keys`})]}),(0,Y.jsx)(i,{className:`h-4 w-4 text-muted-foreground`}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-primary font-medium`,children:[(0,Y.jsx)(In,{className:`h-4 w-4`}),(0,Y.jsx)(`span`,{children:`Pick a Model`})]}),(0,Y.jsx)(i,{className:`h-4 w-4 text-muted-foreground`}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,Y.jsx)($e,{className:`h-4 w-4`}),(0,Y.jsx)(`span`,{children:`Start`})]})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>l(`keys`),className:`text-xs text-muted-foreground hover:text-foreground transition-colors`,children:`← Add more keys`}),(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`h2`,{className:`text-base font-semibold flex items-center gap-2`,children:[(0,Y.jsx)(In,{className:`h-4 w-4 text-primary`}),`Choose a Provider`]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-3 gap-2`,children:m.map(e=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{L(e.id),z(null)},className:Z(`rounded-lg border p-3 text-left transition-all text-sm`,I===e.id?`border-primary bg-primary/10 ring-1 ring-primary/30`:`border-border hover:border-primary/40 hover:bg-primary/5`),children:[(0,Y.jsx)(`span`,{className:`font-medium`,children:e.id}),(0,Y.jsxs)(`span`,{className:`block text-[11px] text-muted-foreground mt-0.5`,children:[e.apiKeys.filter(e=>e.isActive).length,` active key`,e.apiKeys.filter(e=>e.isActive).length===1?``:`s`]})]},e.id))})]}),I&&(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`h2`,{className:`text-base font-semibold flex items-center gap-2`,children:[(0,Y.jsx)($e,{className:`h-4 w-4 text-primary`}),`Choose a Model`]}),(0,Y.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Models available for `,I]}),ee?(0,Y.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Y.jsx)(O,{className:`h-6 w-6 animate-spin text-muted-foreground`})}):se.length>0?(0,Y.jsx)(`div`,{className:`grid grid-cols-1 gap-2`,children:se.map(e=>{let t=e.contextWindow?`${(e.contextWindow/1e6).toFixed(0)}M ctx`:null;return(0,Y.jsx)(`button`,{type:`button`,onClick:()=>z(e.id),className:Z(`w-full text-left rounded-xl border p-3 transition-all`,`hover:border-primary/40 hover:bg-primary/5`,R===e.id?`border-primary bg-primary/10 ring-1 ring-primary/30`:`border-border bg-card`),children:(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`span`,{className:`font-medium text-sm`,children:e.name}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 mt-1`,children:[t&&(0,Y.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-muted text-muted-foreground`,children:t}),e.capabilities.slice(0,3).map(e=>(0,Y.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded bg-primary/10 text-primary border border-primary/20`,children:e},e))]})]}),R===e.id&&(0,Y.jsx)(`div`,{className:`w-5 h-5 rounded-full bg-primary flex items-center justify-center shrink-0`,children:(0,Y.jsx)(jn,{className:`h-3 h-3 text-primary-foreground`})})]})},e.id)})}):(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground py-8 text-center`,children:`No models available. Check your API key and try again.`})]}),I&&R&&(0,Y.jsxs)(`div`,{className:`sticky bottom-0 bg-background/80 backdrop-blur-sm py-4 -mx-6 px-6 border-t`,children:[(0,Y.jsx)(`div`,{className:`flex items-center justify-between text-sm text-muted-foreground mb-3`,children:(0,Y.jsxs)(`span`,{children:[I,` / `,R]})}),(0,Y.jsxs)($,{onClick:ce,className:`w-full`,size:`lg`,children:[(0,Y.jsx)(In,{className:`h-4 w-4 mr-2`}),`Start Session`,(0,Y.jsx)(Vn,{className:`h-4 w-4 ml-2`})]})]})]})})]})}var xh=[{section:`Global`,items:[{keys:[`Ctrl`,`K`],description:`Open command palette`},{keys:[`?`],description:`Show this shortcuts overlay`},{keys:[`Ctrl`,`\\`],description:`Toggle sidebar`},{keys:[`Ctrl`,`1-9`],description:`Open side panel (Session, Agents, History, Files, Changes, Projects, Mailbox, Skills, Office Map)`},{keys:[`Ctrl`,`/`],description:`Focus the message input`}]},{section:`TUI Panel Parity`,items:[{keys:[`F1`],description:`Project switcher`},{keys:[`F2`],description:`Fleet monitor overlay`},{keys:[`F3`],description:`Agents monitor overlay`},{keys:[`F4`],description:`Worktree monitor`},{keys:[`F5`],description:`Plan panel`},{keys:[`F6`],description:`Todos panel`},{keys:[`F7`],description:`Queue panel`},{keys:[`F8`],description:`Process monitor`},{keys:[`F9`],description:`Goal panel`},{keys:[`F10`],description:`Sessions dashboard`},{keys:[`F11`],description:`Coordinator office map`},{keys:[`F12`],description:`Dock chip picker`}]},{section:`Fleet & Agents`,items:[{keys:[`Ctrl`,`Shift`,`M`],description:`Open Fleet Monitor overlay`},{keys:[`Ctrl`,`Shift`,`A`],description:`Open Agents Monitor overlay`},{keys:[`↑`,`↓`],description:`Navigate agents in monitor`},{keys:[`Enter`],description:`Select focused agent`},{keys:[`Esc`],description:`Close active overlay`}]},{section:`Chat input`,items:[{keys:[`Enter`],description:`Send message`},{keys:[`Shift`,`Enter`],description:`Insert a newline`},{keys:[`↑`],description:`Recall previous prompt (in empty input)`},{keys:[`↓`],description:`Recall next prompt`},{keys:[`/`],description:`Open slash command popup`},{keys:[`Tab`],description:`Autocomplete highlighted command`},{keys:[`Esc`],description:`Dismiss popup / clear input`}]},{section:`Chat`,items:[{keys:[`Ctrl`,`F`],description:`Search within current chat`},{keys:[`Ctrl`,`L`],description:`Clear context (same as /clear)`},{keys:[`Ctrl`,`N`],description:`Start a new session (same as /new)`},{keys:[`Ctrl`,`E`],description:`Export chat as markdown`},{keys:[`Ctrl`,`M`],description:`Quick model switcher overlay`},{keys:[`Ctrl`,`Shift`,`D`],description:`Toggle compact UI density`},{keys:[`Esc`],description:`Abort the current run (when running)`}]},{section:`Chat navigation (when not typing)`,items:[{keys:[`j`],description:`Focus next message (alias: ↓)`},{keys:[`k`],description:`Focus previous message (alias: ↑)`},{keys:[`g`],description:`Jump to first message`},{keys:[`Shift`,`G`],description:`Jump to last message`},{keys:[`c`],description:`Copy focused message text`},{keys:[`Esc`],description:`Clear focused message`}]}];function Sh(){let e=J(e=>e.shortcutsOpen),t=J(e=>e.setShortcutsOpen);return(0,U.useEffect)(()=>{let e=e=>{let n=e.target,r=n?.tagName?.toLowerCase();if(!(r===`input`||r===`textarea`||n?.isContentEditable)&&e.key===`?`&&!e.ctrlKey&&!e.metaKey&&!e.altKey){e.preventDefault(),t(!J.getState().shortcutsOpen);return}e.key===`Escape`&&J.getState().shortcutsOpen&&(e.preventDefault(),t(!1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]),e?(0,Y.jsx)(`div`,{className:`fixed inset-0 z-50 bg-background/60 backdrop-blur-sm flex items-center justify-center px-4`,onClick:()=>t(!1),onKeyDown:e=>{e.key===`Escape`&&t(!1)},children:(0,Y.jsxs)(`div`,{onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),className:`w-full max-w-2xl rounded-xl border bg-popover shadow-2xl overflow-hidden flex flex-col max-h-[80vh]`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-5 py-4 border-b`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(tt,{className:`h-4 w-4 text-muted-foreground`}),(0,Y.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Keyboard shortcuts`})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>t(!1),className:`text-muted-foreground hover:text-foreground p-1 rounded hover:bg-muted`,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]}),(0,Y.jsx)(`div`,{className:`overflow-y-auto px-5 py-4 space-y-6`,children:xh.map(e=>(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground mb-2`,children:e.section}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 gap-1.5`,children:e.items.map(e=>(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-sm px-2 py-1.5 rounded hover:bg-muted/40`,children:[(0,Y.jsx)(`span`,{className:`text-foreground/80`,children:e.description}),(0,Y.jsx)(`span`,{className:`flex items-center gap-1 shrink-0`,children:e.keys.map((e,t)=>(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[t>0&&(0,Y.jsx)(`span`,{className:`text-muted-foreground/40 text-xs`,children:`+`}),(0,Y.jsx)(`kbd`,{className:`font-mono text-[10px] border rounded px-1.5 py-0.5 bg-background`,children:e})]},e))})]},e.description))})]},e.section))}),(0,Y.jsxs)(`div`,{className:`border-t px-5 py-3 text-xs text-muted-foreground`,children:[`Press`,` `,(0,Y.jsx)(`kbd`,{className:`font-mono text-[10px] border rounded px-1 py-0.5 bg-background`,children:`?`}),` `,`any time to reopen this list.`]})]})}):null}var Ch={ts:Be,tsx:Be,js:Be,jsx:Be,mjs:Be,cjs:Be,json:Sr,lock:yt,css:On,scss:On,less:On,html:Un,htm:Un,svg:_r,xml:Un,md:On,mdx:On,txt:On,yml:On,yaml:On,toml:Dr,env:Dr,gitignore:Dr,editorconfig:Dr,sh:Be,bash:Be,zsh:Be,fish:Be,ps1:Be,bat:Be,py:Be,pyi:Be,pyx:Be,rs:Be,go:Be,rb:Be,java:Be,c:Be,cpp:Be,h:Be,hpp:Be,sql:Be,graphql:Be,png:_r,jpg:_r,jpeg:_r,gif:_r,webp:_r,ico:_r};function wh(e,t){if(t){let t=e.toLowerCase();return t===`.git`?`text-orange-500/80 dark:text-orange-400/80`:t===`node_modules`?`text-red-400/60 dark:text-red-500/60`:t===`src`||t===`lib`||t===`packages`?`text-amber-500/70 dark:text-amber-400/70`:t===`tests`||t===`test`||t===`__tests__`?`text-emerald-500/70 dark:text-emerald-400/70`:t===`dist`||t===`build`||t===`.next`?`text-muted-foreground/50`:`text-amber-500/70 dark:text-amber-400/70`}let n=e.split(`.`).pop()?.toLowerCase()??``;return/^(ts|tsx|js|jsx|mjs|cjs)$/.test(n)?`text-blue-500 dark:text-blue-400`:/^(json|lock)$/.test(n)?`text-amber-500 dark:text-amber-400`:/^(css|scss|less|sass)$/.test(n)?`text-teal-500 dark:text-teal-400`:/^(html|htm|xml|svg)$/.test(n)?`text-rose-500 dark:text-rose-400`:/^(md|mdx)$/.test(n)?`text-violet-500 dark:text-violet-400`:/^(yml|yaml|toml|env)$/.test(n)?`text-emerald-500 dark:text-emerald-400`:/^(sh|bash|zsh|fish|ps1|bat)$/.test(n)?`text-orange-400 dark:text-orange-300`:/^(py|pyi|pyx)$/.test(n)?`text-cyan-500 dark:text-cyan-400`:n===`rs`?`text-orange-500 dark:text-orange-400`:n===`go`?`text-sky-500 dark:text-sky-400`:n===`rb`?`text-red-400 dark:text-red-400`:/^(c|h|cpp|hpp|cc|hh)$/.test(n)?`text-slate-500 dark:text-slate-400`:/^(png|jpe?g|gif|webp|ico|svg)$/.test(n)?`text-purple-500 dark:text-purple-400`:/^(gitignore|editorconfig|prettierrc|eslintrc)$/.test(n)?`text-muted-foreground/60`:`text-muted-foreground`}function Th(e){return Ch[e.split(`.`).pop()?.toLowerCase()??``]??Jt}function Eh({node:e,depth:t,selectedPath:n,forceExpand:r,onSelect:a,onOpen:o}){let[s,c]=(0,U.useState)(t<1),l=ea(e=>e.activeFilePath),u=e.type===`file`&&e.path===l;if((0,U.useEffect)(()=>{r!==null&&c(r)},[r]),e.type===`directory`){let l=(e.children?.length??0)>0,u=s?Pt:wt,d=e.name===`.git`,f=wh(e.name,!0);return(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>c(e=>!e),className:Z(`flex items-center gap-1 w-full text-left px-1 py-0.5 text-[11px] rounded`,`hover:bg-muted/60 transition-colors`),style:{paddingLeft:`${t*14+4}px`},children:[(0,Y.jsx)(i,{className:Z(`h-3 w-3 shrink-0 text-muted-foreground transition-transform`,s&&`rotate-90`)}),d?(0,Y.jsx)(Cn,{className:Z(`h-3.5 w-3.5 shrink-0`,f)}):(0,Y.jsx)(u,{className:Z(`h-3.5 w-3.5 shrink-0`,f)}),(0,Y.jsx)(`span`,{className:`truncate font-medium flex-1 min-w-0`,children:e.name})]}),s&&l&&(0,Y.jsx)(`div`,{children:(e.children??[]).map(e=>(0,Y.jsx)(Eh,{node:e,depth:t+1,selectedPath:n,forceExpand:r,onSelect:a,onOpen:o},e.path))}),s&&!l&&(0,Y.jsx)(`div`,{className:`text-[10px] text-muted-foreground italic py-0.5`,style:{paddingLeft:`${(t+1)*14+4}px`},children:`empty`})]})}let d=Th(e.name),f=wh(e.name,!1),p=e.path===n;return(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>a(e.path),onDoubleClick:t=>{t.preventDefault(),o(e.path)},className:Z(`flex items-center gap-1.5 w-full text-left px-1 py-0.5 text-[11px] rounded`,`hover:bg-muted/60 transition-colors`,u&&`bg-primary/10 text-primary`,p&&!u&&`bg-muted/70 ring-1 ring-inset ring-border`),style:{paddingLeft:`${t*14+4}px`},children:[(0,Y.jsx)(`span`,{className:`w-3 shrink-0`}),` `,(0,Y.jsx)(d,{className:Z(`h-3.5 w-3.5 shrink-0`,f)}),(0,Y.jsx)(`span`,{className:`truncate`,children:e.name})]})}function Dh(){let e=ea(e=>e.tree),t=ea(e=>e.treeLoading),n=ea(e=>e.error),r=ea(e=>e.openFiles),i=ea(e=>e.activeFilePath),a=q(e=>e.cwd),o=q(e=>e.projectName),s=a?.includes(`\\`)?`\\`:`/`,c=(e,t=8,n=4)=>e.length<=t+n+2?e:`${e.slice(0,t)}…${e.slice(-n)}`,l=(()=>{if(!a||!o)return!0;let e=a.replace(/\\/g,`/`).split(`/`).filter(Boolean);return(e[e.length-1]??``)===o})(),u=(0,U.useMemo)(()=>{if(!a||!o)return[];let e=a.replace(/\\/g,`/`).split(`/`).filter(Boolean),t=-1;for(let n=e.length-1;n>=0;n--)if(e[n]===o){t=n;break}if(t===-1)return e.map((t,n)=>({label:t,path:`/`+e.slice(0,n+1).join(`/`),isLast:n===e.length-1}));let n=e.slice(t);return n.map((r,i)=>({label:r,path:`/`+e.slice(0,t+i+1).join(`/`),isLast:i===n.length-1}))},[a,o]),d=(0,U.useRef)(null);(0,U.useEffect)(()=>{let e=d.current;e&&u.length>1&&(e.scrollLeft=e.scrollWidth)},[u]);let f=(0,U.useCallback)(e=>{W().send({type:`working_dir.set`,payload:{path:e}})},[]),[p,m]=(0,U.useState)(null);(0,U.useEffect)(()=>{if(!p)return;let e=()=>m(null),t=t=>{t.key===`Escape`&&e()};return window.addEventListener(`click`,e),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`click`,e),window.removeEventListener(`keydown`,t)}},[p]);let h=(0,U.useCallback)((e,t)=>{e.preventDefault(),e.stopPropagation(),m({x:e.clientX,y:e.clientY,crumb:t})},[]),g=(0,U.useCallback)(e=>{navigator.clipboard.writeText(e),m(null)},[]),_=(0,U.useCallback)(()=>{if(!i)return;let e=i.replace(/\\/g,`/`).split(`/`).slice(0,-1).join(`/`)||`.`;W().send({type:`working_dir.set`,payload:{path:e}})},[i]),v=(0,U.useCallback)((e,t)=>{W().send({type:`shell.open`,payload:{path:e,target:t}}),m(null)},[]),y=(0,U.useCallback)(()=>{if(!a)return;let e=a.replace(/\\/g,`/`),t=e.split(`/`).slice(0,-1).join(`/`)||e;W().send({type:`working_dir.set`,payload:{path:t}})},[a]),[b,x]=(0,U.useState)(!1),S=(0,U.useRef)(null);(0,U.useEffect)(()=>(t?S.current=setTimeout(()=>x(!0),150):(S.current&&clearTimeout(S.current),x(!1)),()=>{S.current&&clearTimeout(S.current)}),[t]);let[C,T]=(0,U.useState)(null),[E,D]=(0,U.useState)(null),k=(0,U.useMemo)(()=>{let t=0,n=e=>{for(let r of e)r.type===`directory`&&t++,r.children&&n(r.children)};return n(e),t},[e]),A=(0,U.useMemo)(()=>{let t=0,n=0;for(let r of e)r.type===`directory`?n++:t++;return{files:t,dirs:n}},[e]),j={value:!1},M=(0,U.useCallback)(()=>{j.value=!0,D(!1),setTimeout(()=>{j.value=!1},400)},[]),N=(0,U.useCallback)(()=>{j.value=!0,D(!0),setTimeout(()=>{j.value=!1},400)},[]),P=(0,U.useCallback)(e=>{if(r.find(t=>t.path===e)){ea.getState().setActiveFile(e);return}T(t=>t===e?null:e)},[r]),F=(0,U.useCallback)(e=>{window.dispatchEvent(new CustomEvent(`wrongstack:open-file`,{detail:{filePath:e}})),T(null)},[]);return(0,U.useEffect)(()=>{i&&T(null)},[i]),b?(0,Y.jsx)(`div`,{className:`flex items-center justify-center h-full py-8`,children:(0,Y.jsx)(O,{className:`h-5 w-5 animate-spin text-muted-foreground`})}):n?(0,Y.jsxs)(`div`,{className:`p-3 text-[11px] text-destructive`,children:[`Failed to load files: `,n]}):(0,Y.jsxs)(`div`,{className:`h-full flex flex-col overflow-hidden`,children:[e.length>0&&k>0&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-0.5 px-2 py-0.5 border-b shrink-0`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:N,className:Z(`flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] transition-colors`,`hover:bg-muted/60 text-muted-foreground hover:text-foreground`),title:`Expand all directories`,children:[(0,Y.jsx)(un,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{children:`Expand all`})]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:M,className:Z(`flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] transition-colors`,`hover:bg-muted/60 text-muted-foreground hover:text-foreground`),title:`Collapse all directories`,children:[(0,Y.jsx)(w,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{children:`Collapse`})]}),(0,Y.jsxs)(`span`,{className:`ml-auto text-[9px] text-muted-foreground/50 tabular-nums`,children:[k,` folder`,k===1?``:`s`]})]}),(0,Y.jsxs)(`div`,{className:`flex-1 overflow-y-auto py-1`,children:[u.length>0&&(0,Y.jsxs)(`div`,{ref:d,className:`relative flex items-center gap-0.5 px-1 pb-1 border-b border-border/30 overflow-x-auto`,children:[(0,Y.jsx)(`span`,{className:`sticky left-0 shrink-0 w-3 h-full bg-gradient-to-r from-background to-transparent pointer-events-none`}),u.map((e,t)=>{let n=e.isLast?e.label:c(e.label),r=e.path.replace(/\//g,s),i=a?a.replace(/\\/g,`/`).split(`/`).filter(Boolean):[],l=(()=>{for(let e=i.length-1;e>=0;e--)if(i[e]===o)return e;return-1})(),u=l>=0?i.slice(0,l+t+1):i.slice(0,t+1),d=s===`\\`?u.join(`\\`):`/`+u.join(`/`),p=(l>=0?i.slice(l+1,l+t+1):[]).join(s)||`.`;return(0,Y.jsxs)(`span`,{className:`flex items-center gap-0.5 shrink-0`,children:[t>0&&(0,Y.jsx)(`span`,{className:`text-[9px] text-muted-foreground/40 select-none`,children:s}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>f(e.path),onContextMenu:e=>h(e,{absPath:d,relPath:p}),className:Z(`px-1 py-0.5 rounded text-[11px] transition-colors whitespace-nowrap`,e.isLast?`text-foreground font-medium`:`text-muted-foreground hover:text-foreground hover:bg-muted/60`),title:e.isLast?`Current directory: ${r}`:`Navigate to ${r}`,children:n})]},e.path)}),e.length>0&&(0,Y.jsxs)(`span`,{className:`ml-auto shrink-0 text-[9px] text-muted-foreground/50 tabular-nums pl-2`,children:[A.files>0&&`${A.files} file${A.files===1?``:`s`}`,A.files>0&&A.dirs>0&&`, `,A.dirs>0&&`${A.dirs} folder${A.dirs===1?``:`s`}`]})]}),i&&(0,Y.jsxs)(`button`,{type:`button`,onClick:_,className:`flex items-center gap-1 w-full text-left px-2 py-0.5 border-b border-border/30 text-[10px] text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors`,title:`Navigate to parent directory of ${i.replace(/\//g,s)}`,children:[(0,Y.jsx)(Be,{className:`h-3 w-3 shrink-0`}),(0,Y.jsx)(`span`,{className:`truncate`,children:(()=>{let e=i.replace(/\\/g,`/`).split(`/`);return e[e.length-1]??i})()}),(0,Y.jsx)(`span`,{className:`ml-auto text-[8px] text-muted-foreground/40 shrink-0`,children:`go to dir`})]}),u.length===0&&!l&&(0,Y.jsxs)(`button`,{type:`button`,onClick:y,className:Z(`flex items-center gap-1.5 w-full text-left px-1 py-0.5 text-[11px] rounded`,`hover:bg-muted/60 transition-colors text-muted-foreground hover:text-foreground`,`font-medium`),children:[(0,Y.jsx)(te,{className:`h-3.5 w-3.5 shrink-0`}),(0,Y.jsx)(`span`,{children:`..`}),(0,Y.jsx)(`span`,{className:`text-[9px] text-muted-foreground/50 ml-auto`,children:`parent directory`})]}),e.map(e=>(0,Y.jsx)(Eh,{node:e,depth:0,selectedPath:C,forceExpand:E,onSelect:P,onOpen:F},e.path)),e.length===0&&(0,Y.jsx)(`p`,{className:`text-[11px] text-muted-foreground italic p-2`,children:`No files found`})]}),p&&(0,Y.jsxs)(`div`,{className:`fixed z-50 min-w-[140px] bg-popover border rounded-md shadow-md py-1 text-[11px]`,style:{left:p.x,top:p.y},children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>g(p.crumb.absPath),className:`flex items-center gap-2 w-full text-left px-3 py-1.5 hover:bg-accent transition-colors`,children:`Copy absolute path`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>g(p.crumb.relPath),className:`flex items-center gap-2 w-full text-left px-3 py-1.5 hover:bg-accent transition-colors`,children:`Copy relative path`}),(0,Y.jsx)(`div`,{className:`border-t border-border/50 my-0.5`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>v(p.crumb.absPath,`terminal`),className:`flex items-center gap-2 w-full text-left px-3 py-1.5 hover:bg-accent transition-colors`,children:`Open in terminal`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>v(p.crumb.absPath,`file-manager`),className:`flex items-center gap-2 w-full text-left px-3 py-1.5 hover:bg-accent transition-colors`,children:`Open in file manager`}),(0,Y.jsx)(`div`,{className:`border-t border-border/50 mt-0.5 pt-0.5`,children:(0,Y.jsx)(`div`,{className:`px-3 py-1 text-[9px] text-muted-foreground/50 truncate max-w-[200px]`,children:p.crumb.absPath})})]})]})}var Oh={note:On,ask:se,assign:ht,steer:Mn,btw:Mt,broadcast:ht,status:nt,result:V};function kh(e){let t=new Date(e),n=Date.now()-t.getTime();return n<6e4?`now`:n<36e5?`${Math.round(n/6e4)}m`:n<864e5?`${Math.round(n/36e5)}h`:t.toLocaleDateString()}function Ah({className:e}){let t=xi(e=>e.messages),n=xi(e=>e.agents),[r,i]=(0,U.useState)(!1),[a,o]=(0,U.useState)(!1),[c,l]=(0,U.useState)(!1),{client:u}=Vs(),[d,f]=(0,U.useState)(u.status.state===`open`);(0,U.useEffect)(()=>{let e=u.onStatus(e=>f(e.state===`open`));return()=>e()},[u]),(0,U.useEffect)(()=>{d&&(u.send({type:`mailbox.messages`,payload:{limit:30}}),u.send({type:`mailbox.agents`,payload:{}}))},[d,u]);let p=J(e=>e.selectedMailMessage),m=J(e=>e.setSelectedMailMessage),h=J(e=>e.selectActivity),g=J(e=>e.setCurrentView),_=J(e=>e.setSidebarOpen);function v(e){if(p?.id===e.id){m(null),g(`chat`);return}m(e),_(!0),h(`mailbox`),g(`mailbox`)}let y=t.filter(e=>!e.completed).length,x=n.filter(e=>e.online).length;async function S(){t.length!==0&&await el({title:`Delete all ${t.length} message${t.length===1?``:`s`}?`,message:`The mailbox file is truncated for every agent. This cannot be undone.`,confirmLabel:`Delete all`,danger:!0})&&(o(!0),u.send({type:`mailbox.clear`}))}(0,U.useEffect)(()=>{a&&t.length===0&&o(!1)},[a,t.length]);async function C(){await el({title:`Purge stale messages?`,message:`Removes completed messages older than 1 day and incomplete messages older than 7 days. Active messages are preserved.`,confirmLabel:`Purge`,danger:!1})&&(l(!0),u.send({type:`mailbox.purge`}))}return(0,U.useEffect)(()=>{if(c){let e=setTimeout(()=>l(!1),3e3);return()=>clearTimeout(e)}},[c]),(0,Y.jsxs)(`div`,{className:Z(`rounded-lg border border-border bg-card/60 backdrop-blur-sm`,e),children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>i(e=>!e),className:`flex w-full items-center gap-2 px-3 py-2.5 text-left hover:bg-accent/40 rounded-t-lg transition-colors`,children:[(0,Y.jsx)(s,{className:`h-4 w-4 text-cyan-500`}),(0,Y.jsx)(`span`,{className:`text-xs font-semibold text-foreground flex-1 min-w-0 truncate`,children:`Mailbox`}),y>0&&(0,Y.jsx)(`span`,{className:`inline-flex items-center px-1.5 py-0.5 rounded-full text-[10px] font-bold bg-yellow-100 dark:bg-yellow-900/40 text-yellow-700 dark:text-yellow-400`,children:y}),(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[x,` online`]})]}),!r&&(0,Y.jsxs)(`div`,{className:`px-3 pb-3 space-y-2`,children:[t.length>0?(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wide`,children:`Messages`}),(0,Y.jsxs)(`button`,{type:`button`,onClick:S,disabled:a,className:`flex items-center gap-1 text-[10px] text-muted-foreground hover:text-red-500 disabled:opacity-40 transition-colors`,title:`Delete all messages`,children:[(0,Y.jsx)(yn,{className:`h-3 w-3`}),a?`Deleting…`:`Delete all`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:C,disabled:c,className:`flex items-center gap-1 text-[10px] text-muted-foreground hover:text-cyan-500 disabled:opacity-40 transition-colors`,title:`Purge stale/orphaned messages`,children:[(0,Y.jsx)($e,{className:`h-3 w-3`}),c?`Purging…`:`Purge`]})]}),t.slice(0,8).map(e=>{let t=Oh[e.type]??b,n=e.readByCount>0,r=p?.id===e.id;return(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>v(e),className:Z(`flex items-start gap-2 px-2 py-1.5 rounded text-xs w-full text-left cursor-pointer transition-colors hover:bg-accent/60`,!n&&`bg-yellow-50 dark:bg-yellow-950/20`,r&&`ring-1 ring-primary bg-primary/5`),children:[(0,Y.jsx)(t,{className:Z(`h-3.5 w-3.5 mt-0.5 shrink-0`,n?`text-muted-foreground`:`text-yellow-600`)}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(`span`,{className:Z(`font-medium truncate`,!n&&`text-yellow-800 dark:text-yellow-300`),children:e.from}),e.completed&&(0,Y.jsx)(V,{className:`h-3 w-3 text-green-500 shrink-0`}),!n&&(0,Y.jsx)(`span`,{className:`text-[9px] text-yellow-600 font-bold`,children:`NEW`})]}),(0,Y.jsx)(`div`,{className:`text-muted-foreground truncate`,children:e.subject}),(0,Y.jsxs)(`div`,{className:`text-[10px] text-muted-foreground/70 truncate`,children:[e.body.slice(0,60),e.body.length>60?`…`:``]})]}),(0,Y.jsxs)(`div`,{className:`shrink-0 text-[10px] text-muted-foreground flex flex-col items-end gap-0.5`,children:[(0,Y.jsx)(`span`,{children:kh(e.timestamp)}),n&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-0.5`,children:[(0,Y.jsx)(Cr,{className:`h-3 w-3`}),e.readByCount]})]})]},e.id)})]}):(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground py-2 text-center`,children:[(0,Y.jsx)(pn,{className:`h-4 w-4 mx-auto mb-1 opacity-40`}),`No messages yet.`]}),n.length>0&&(0,Y.jsxs)(`div`,{className:`border-t border-border pt-2`,children:[(0,Y.jsxs)(`div`,{className:`text-[10px] font-semibold text-muted-foreground mb-1 flex items-center gap-1`,children:[(0,Y.jsx)(At,{className:`h-3 w-3`}),` Agents`]}),n.filter(e=>e.online).slice(0,5).map(e=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-muted-foreground py-0.5`,children:[(0,Y.jsx)(`span`,{className:Z(`h-1.5 w-1.5 rounded-full`,e.online?`bg-green-500`:`bg-muted-foreground/30`)}),(0,Y.jsx)(`span`,{className:`font-medium text-foreground/80`,children:e.name}),e.role&&(0,Y.jsxs)(`span`,{className:`opacity-60`,children:[`(`,e.role,`)`]}),(0,Y.jsx)(`span`,{className:`opacity-50`,children:e.status}),e.currentTool&&(0,Y.jsx)(`span`,{className:`text-cyan-500`,children:e.currentTool}),(0,Y.jsx)(`span`,{className:`ml-auto opacity-50`,children:kh(e.lastSeenAt)})]},e.agentId)),n.filter(e=>!e.online).length>0&&(0,Y.jsxs)(`div`,{className:`text-[10px] text-muted-foreground/50 mt-0.5`,children:[`+`,n.filter(e=>!e.online).length,` offline`]})]})]})]})}function jh({fullView:e}){let[t,n]=(0,U.useState)([]),[r,i]=(0,U.useState)(!0),[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(``),[l,u]=(0,U.useState)(``),[d,f]=(0,U.useState)(!1),p=(0,U.useRef)(null),[m,h]=(0,U.useState)({open:!1,project:null,agentCount:0}),g=(0,U.useCallback)(()=>{W().send({type:`projects.list`})},[]);(0,U.useEffect)(()=>{i(!0);let e=W(),t=e.on(`projects.list`,e=>{let t=e.payload;n(t.projects??[]),i(!1)}),r=e.on(`projects.added`,e=>{let t=e.payload;t.slug?(Q.success(t.message),g()):Q.error(t.message)});return g(),()=>{t(),r()}},[g]);let _=e=>{if(!e)return`never`;let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/6e4);if(n<1)return`just now`;if(n<60)return`${n}m ago`;let r=Math.floor(n/60);if(r<24)return`${r}h ago`;let i=Math.floor(r/24);return i===1?`yesterday`:i<30?`${i}d ago`:i<365?`${Math.floor(i/30)}mo ago`:`${Math.floor(i/365)}y ago`},v=(0,U.useCallback)(e=>{let t=q.getState().session?.id;if(t){let n=X.getState().getAgentsBySession(t).filter(e=>e.status===`running`);if(n.length>0){h({open:!0,project:e,agentCount:n.length});return}}y(e)},[]),y=(0,U.useCallback)(e=>{let t=W();t.send({type:`projects.select`,payload:{root:e.root,name:e.name}});let n=t.on(`projects.selected`,e=>{let t=e.payload;n();let r=t.message.match(/(https?:\/\/[^\s]+)/);r?.[1]?(window.open(r[1],`_blank`),Q.success(`Opening ${t.name} in a new tab...`)):Q.info(t.message)})},[]),b=(0,U.useCallback)(()=>{let e=s.trim();if(!e){Q.error(`Please enter a folder path.`);return}o(!0);let t=W();t.send({type:`projects.add`,payload:{root:e,name:l.trim()||void 0}});let n=t.on(`projects.added`,()=>{n(),o(!1),f(!1),c(``),u(``)})},[s,l]),S=m.open&&m.project&&(0,Y.jsx)(Uc,{open:!0,onOpenChange:()=>h({open:!1,project:null,agentCount:0}),children:(0,Y.jsxs)(qc,{className:`sm:max-w-sm`,children:[(0,Y.jsxs)(Jc,{children:[(0,Y.jsx)(Xc,{children:`Running Agents`}),(0,Y.jsxs)(Zc,{children:[m.agentCount,` agent`,m.agentCount===1?` is`:`s are`,` running in the current session. Switching projects will stop them.`]})]}),(0,Y.jsxs)(Yc,{children:[(0,Y.jsx)($,{variant:`outline`,size:`sm`,onClick:()=>h({open:!1,project:null,agentCount:0}),children:`Cancel`}),(0,Y.jsx)($,{size:`sm`,variant:`destructive`,onClick:()=>{let e=m.project;h({open:!1,project:null,agentCount:0}),y(e)},children:`Switch anyway`})]})]})}),C=[...t].sort((e,t)=>e.lastSeen&&t.lastSeen?t.lastSeen.localeCompare(e.lastSeen):e.lastSeen?-1:t.lastSeen?1:e.name.localeCompare(t.name)),w=(0,Y.jsxs)(Uc,{open:d,onOpenChange:f,children:[(0,Y.jsx)(Wc,{asChild:!0,children:(0,Y.jsxs)($,{variant:`outline`,size:`sm`,className:`gap-1 h-7 text-xs`,children:[(0,Y.jsx)(nr,{className:`h-3 w-3`}),`Register Project`]})}),(0,Y.jsxs)(qc,{className:`sm:max-w-md`,children:[(0,Y.jsxs)(Jc,{children:[(0,Y.jsx)(Xc,{children:`Register New Project`}),(0,Y.jsxs)(Zc,{children:[`Enter the absolute path to a project folder. The project will be added to`,` `,(0,Y.jsx)(`code`,{className:`font-mono bg-muted/40 px-1 rounded text-xs`,children:`~/.wrongstack/projects.json`}),`.`]})]}),(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`label`,{htmlFor:`proj-folder`,className:`text-xs font-medium text-muted-foreground mb-1 block`,children:`Folder path`}),(0,Y.jsx)(Qc,{id:`proj-folder`,placeholder:`/home/user/my-project or C:\\Users\\me\\my-project`,value:s,onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&p.current?.focus()}})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`label`,{htmlFor:`proj-name`,className:`text-xs font-medium text-muted-foreground mb-1 block`,children:`Project name (optional — defaults to folder name)`}),(0,Y.jsx)(Qc,{id:`proj-name`,ref:p,placeholder:`My Project`,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{e.key===`Enter`&&b()}})]})]}),(0,Y.jsxs)(Yc,{children:[(0,Y.jsx)($,{variant:`outline`,size:`sm`,onClick:()=>f(!1),children:`Cancel`}),(0,Y.jsxs)($,{size:`sm`,onClick:b,disabled:a||!s.trim(),children:[a?(0,Y.jsx)(O,{className:`h-3 w-3 animate-spin mr-1`}):null,`Register`]})]})]})]});if(r){let t=(0,Y.jsx)(`div`,{className:`flex items-center justify-center py-6`,children:(0,Y.jsx)(O,{className:`h-4 w-4 animate-spin text-muted-foreground`})});return e?(0,Y.jsxs)(`div`,{className:`h-full flex flex-col overflow-hidden`,children:[(0,Y.jsx)(`div`,{className:`px-3 py-2 border-b flex items-center justify-between`,children:(0,Y.jsx)(`h2`,{className:`text-xs font-semibold text-muted-foreground uppercase tracking-wider`,children:`Projects`})}),(0,Y.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:t})]}):t}let T=(0,Y.jsx)(`div`,{className:Z(`space-y-1`,e&&`p-2`),children:C.map(e=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>v(e),className:`flex items-start gap-2 w-full text-left px-2 py-1.5 rounded border bg-card/40 text-xs hover:bg-accent hover:border-primary/40 transition-colors`,children:[(0,Y.jsx)(wt,{className:`h-3.5 w-3.5 shrink-0 mt-0.5 text-muted-foreground`}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`font-medium truncate`,children:e.name}),(0,Y.jsx)(`div`,{className:`font-mono text-[10px] text-muted-foreground truncate`,children:e.root}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 mt-0.5 text-[10px] text-muted-foreground/60`,children:[(0,Y.jsx)(`span`,{className:`font-mono`,children:e.slug}),e.lastSeen&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(lt,{className:`h-2.5 w-2.5`}),_(e.lastSeen)]})]})]}),(0,Y.jsx)(x,{className:`h-3 w-3 shrink-0 mt-1 text-muted-foreground/40`})]},e.slug))});return e?(0,Y.jsxs)(`div`,{className:`h-full flex flex-col overflow-hidden`,children:[S,(0,Y.jsxs)(`div`,{className:`px-3 py-2 border-b shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`h2`,{className:`text-xs font-semibold text-muted-foreground uppercase tracking-wider`,children:`Projects`}),w]}),(0,Y.jsxs)(`p`,{className:`text-[10px] text-muted-foreground/60 mt-0.5`,children:[`Known projects from`,` `,(0,Y.jsx)(`code`,{className:`font-mono bg-muted/40 px-0.5 rounded`,children:`~/.wrongstack/projects.json`})]})]}),t.length===0?(0,Y.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground italic py-2`,children:[`No projects registered. Use the button above or run`,` `,(0,Y.jsx)(`code`,{className:`font-mono bg-muted/40 px-1 rounded`,children:`wstack`}),` `,`in a directory to register it.`]})}):(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:T}),(0,Y.jsx)(`div`,{className:`px-3 py-2 border-t shrink-0`,children:(0,Y.jsx)(`p`,{className:`text-[9px] text-muted-foreground/40 text-center`,children:`Click a project to open it in a new WebUI tab`})})]}):(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[S,(0,Y.jsx)(`div`,{className:`flex items-center justify-between`,children:w}),t.length===0?(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground italic py-2`,children:[`No projects registered. Use the button above or run`,` `,(0,Y.jsx)(`code`,{className:`font-mono bg-muted/40 px-1 rounded`,children:`wstack`}),` `,`in a directory to register it.`]}):T]})}var Mh={running:{led:`text-[hsl(var(--success))]`,label:`running`,pulse:!0},completed:{led:`text-[hsl(var(--success))]`,label:`done`,pulse:!1},failed:{led:`text-destructive`,label:`failed`,pulse:!1},timeout:{led:`text-[hsl(var(--warning))]`,label:`timeout`,pulse:!1},stopped:{led:`text-muted-foreground`,label:`stopped`,pulse:!1}};function Nh({agent:e,onClose:t}){let n=Mh[e.status],r=e.status===`running`,i=e.currentTool??e.lastTool,a=Date.now()-e.startedAt,[o,s]=(0,U.useState)(!1),c=X(e=>e.leaderId),l=e.id===c,u=Math.min(100,Math.max(0,e.ctxPct)),d=(0,U.useCallback)(async e=>{try{await navigator.clipboard.writeText(e),s(!0),setTimeout(()=>s(!1),2e3)}catch{}},[]),f=u>=85?`bg-red-500/15 text-red-600 dark:text-red-400`:u>=70?`bg-amber-500/15 text-amber-600 dark:text-amber-400`:`bg-muted text-muted-foreground`;return(0,Y.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-start justify-center pt-[10vh] bg-black/40 backdrop-blur-sm`,children:(0,Y.jsxs)(`div`,{className:`w-full max-w-xl max-h-[80vh] overflow-y-auto rounded-xl border bg-card shadow-2xl`,children:[(0,Y.jsxs)(`div`,{className:Z(`flex items-center justify-between px-4 py-3 border-b`,r?`border-primary/20`:`border-border`),children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:Z(`led`,n.led,n.pulse&&`led-pulse`)}),(0,Y.jsx)(`h3`,{className:`text-sm font-semibold`,children:e.name}),l&&(0,Y.jsx)(ye,{className:`h-3.5 w-3.5 text-amber-500 shrink-0`,"aria-label":`leader`}),(0,Y.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground`,children:n.label})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:t,className:`p-1 rounded-md hover:bg-muted transition-colors`,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]}),(0,Y.jsxs)(`div`,{className:`p-4 space-y-4`,children:[e.description&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground leading-relaxed`,children:e.description}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/30 px-3 py-2`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`Provider / Model`}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 mt-0.5`,children:[(0,Y.jsx)(k,{className:`h-3 w-3 text-muted-foreground`}),(0,Y.jsxs)(`span`,{className:`text-xs font-mono font-medium`,children:[e.provider??`?`,`/`,e.model??`?`]})]})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/30 px-3 py-2`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`Elapsed`}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 mt-0.5`,children:[(0,Y.jsx)(L,{className:`h-3 w-3 text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`text-xs font-mono tabular`,children:of(a)}),r&&(0,Y.jsx)(`span`,{className:`text-[10px] text-[hsl(var(--success))]`,children:`· running`})]})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/30 px-3 py-2`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`Iterations`}),(0,Y.jsx)(`span`,{className:`block text-xs font-mono font-medium mt-0.5 tabular`,children:e.iteration})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/30 px-3 py-2`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`Tool Calls`}),(0,Y.jsx)(`span`,{className:`block text-xs font-mono font-medium mt-0.5 tabular`,children:e.toolCalls})]}),(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/30 px-3 py-2`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`Cost`}),(0,Y.jsx)(`span`,{className:`block text-xs font-mono font-medium mt-0.5 tabular`,children:rf(e.costUsd)})]}),e.extensions>0&&(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/30 px-3 py-2`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`Budget Extensions`}),(0,Y.jsxs)(`span`,{className:`block text-xs font-mono font-medium mt-0.5 tabular`,children:[`⚡×`,e.extensions]})]})]}),r&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`Activity`}),(0,Y.jsx)(wc,{bins:e.sparklineBins,className:`font-mono`})]}),e.budgetWarning&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/20 text-xs`,children:[(0,Y.jsx)(Yt,{className:`h-3.5 w-3.5 text-amber-500 shrink-0`}),(0,Y.jsxs)(`span`,{className:`text-amber-600 dark:text-amber-400`,children:[`⚡ hitting `,(0,Y.jsx)(`strong`,{children:e.budgetWarning.kind}),` limit (`,e.budgetWarning.used,`/`,e.budgetWarning.limit,`) — extending`]})]}),e.maxContext>0&&(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between text-[10px]`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`Context window`}),(0,Y.jsxs)(`span`,{className:Z(`tabular font-medium`,f.replace(/bg-\S+\s*/g,``)),children:[u,`%`]})]}),(0,Y.jsx)(`div`,{className:`h-1.5 w-full overflow-hidden rounded-full bg-muted`,children:(0,Y.jsx)(`div`,{className:Z(`h-full rounded-full transition-all`,u>=85?`bg-destructive`:u>=70?`bg-[hsl(var(--warning))]`:`bg-primary`),style:{width:`${Math.max(2,u)}%`}})}),(0,Y.jsxs)(`div`,{className:`text-[10px] text-muted-foreground tabular text-right`,children:[af(e.ctxTokens),` / `,af(e.maxContext),` tokens`]})]}),i&&(0,Y.jsxs)(`div`,{className:Z(`flex items-center gap-2 rounded-lg border px-3 py-2`,r?`border-primary/30 bg-primary/[0.04]`:`border-border bg-muted/30`),children:[(0,Y.jsx)(kn,{className:Z(`h-3.5 w-3.5`,r?`text-primary animate-pulse`:`text-muted-foreground`)}),(0,Y.jsx)(`span`,{className:`text-xs font-mono`,children:i}),(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground ml-auto`,children:e.currentTool?`running…`:`last tool`})]}),e.error&&(0,Y.jsxs)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/5 p-3`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] font-semibold text-destructive uppercase tracking-wider`,children:`Error`}),(0,Y.jsx)(`p`,{className:`text-xs text-destructive/90 mt-1 leading-relaxed`,children:e.error.message})]}),e.finalText?(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/20 p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between mb-1.5`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wider`,children:`Final Output`}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>d(e.finalText),className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,title:`Copy output`,children:[o?(0,Y.jsx)(jn,{className:`h-3 w-3 text-emerald-500`}):(0,Y.jsx)(de,{className:`h-3 w-3`}),o?`Copied`:`Copy`]})]}),(0,Y.jsx)(`pre`,{className:`text-xs whitespace-pre-wrap font-mono text-foreground/80 leading-relaxed max-h-64 overflow-y-auto`,children:e.finalText})]}):e.partialText?(0,Y.jsxs)(`div`,{className:`rounded-lg border bg-muted/20 p-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between mb-1.5`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wider`,children:`Live Output`}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>d(e.partialText),className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,title:`Copy output`,children:[o?(0,Y.jsx)(jn,{className:`h-3 w-3 text-emerald-500`}):(0,Y.jsx)(de,{className:`h-3 w-3`}),o?`Copied`:`Copy`]})]}),(0,Y.jsx)(`pre`,{className:`text-xs whitespace-pre-wrap font-mono text-foreground/80 leading-relaxed max-h-48 overflow-y-auto`,children:e.partialText})]}):r?(0,Y.jsxs)(`div`,{className:`rounded-lg border border-dashed border-border p-3 text-center`,children:[(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Waiting for output…`}),(0,Y.jsx)(`p`,{className:`text-[10px] text-muted-foreground/60 mt-0.5`,children:`Output appears here as the agent streams text.`})]}):null,e.toolLog.length>0&&(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(`span`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wider`,children:[`Tool Log (`,e.toolLog.length,`)`]}),(0,Y.jsxs)(`div`,{className:`max-h-40 overflow-y-auto space-y-0.5`,children:[e.toolLog.slice(0,15).map((e,t)=>(0,Y.jsxs)(`div`,{className:Z(`flex items-center gap-2 rounded px-2 py-1 text-[10px]`,e.ok?`bg-muted/30`:`bg-destructive/5 border border-destructive/20`),children:[(0,Y.jsx)(`span`,{className:Z(`led shrink-0`,e.ok?`text-[hsl(var(--success))]`:`text-destructive`)}),(0,Y.jsx)(`span`,{className:`font-mono truncate flex-1`,children:e.name}),(0,Y.jsxs)(`span`,{className:`tabular text-muted-foreground`,children:[e.durationMs,`ms`]}),!e.ok&&(0,Y.jsx)(`span`,{className:`text-destructive font-medium`,children:`fail`})]},`${e.name}-${e.at}-${t}`)),e.toolLog.length>15&&(0,Y.jsxs)(`p`,{className:`text-[9px] text-muted-foreground text-center px-2 py-0.5`,children:[`+`,e.toolLog.length-15,` more tools`]})]})]})]})]})})}function Ph({a:e,onClick:t}){let n=Mh[e.status],r=e.status===`running`,i=e.currentTool??e.lastTool,a=Math.min(100,Math.max(0,e.ctxPct));return(0,Y.jsxs)(`button`,{type:`button`,onClick:t,className:Z(`flex min-w-[12rem] max-w-[15rem] flex-col gap-1 rounded-lg border p-2 transition-colors text-left cursor-pointer`,`hover:border-primary/40 hover:bg-primary/[0.06]`,r?`border-primary/30 bg-primary/[0.04]`:`border-border bg-card opacity-85`),children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,Y.jsx)(`span`,{className:Z(`led shrink-0`,n.led,n.pulse&&`led-pulse`)}),(0,Y.jsx)(`span`,{className:`truncate text-[11px] font-semibold text-foreground`,title:e.name,children:e.name}),(0,Y.jsxs)(`span`,{className:`tabular ml-auto shrink-0 text-[10px] text-muted-foreground`,children:[e.iteration,`it · `,e.toolCalls,`t`]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[e.model&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-0.5 text-[10px] text-muted-foreground truncate`,title:`${e.provider??``}/${e.model}`,children:[(0,Y.jsx)(k,{className:`h-2.5 w-2.5 shrink-0`}),(0,Y.jsx)(`span`,{className:`truncate font-mono`,children:e.model})]}),(0,Y.jsx)(`span`,{className:`tabular text-[10px] text-foreground/75 ml-auto`,children:rf(e.costUsd)})]}),i&&(0,Y.jsxs)(`div`,{className:Z(`flex items-center gap-1 text-[10px] truncate`,r?`text-primary`:`text-muted-foreground`),title:e.currentTool?`running ${i}`:`last: ${i}`,children:[(0,Y.jsx)(kn,{className:Z(`h-2.5 w-2.5 shrink-0`,r&&`animate-pulse`)}),(0,Y.jsx)(`span`,{className:`truncate font-mono`,children:i})]}),r&&e.maxContext>0&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,title:`Context ${a}%`,children:[(0,Y.jsx)(`div`,{className:`h-1 flex-1 overflow-hidden rounded-full bg-muted`,children:(0,Y.jsx)(`div`,{className:Z(`h-full rounded-full transition-all`,a>=85?`bg-destructive`:a>=70?`bg-[hsl(var(--warning))]`:`bg-primary`),style:{width:`${Math.max(2,a)}%`}})}),(0,Y.jsx)(`span`,{className:`tabular text-[9px] text-muted-foreground`,children:e.maxContext>0?`${a}%`:`—`})]}),e.error&&(0,Y.jsx)(`div`,{className:`truncate rounded bg-destructive/10 px-1 py-0.5 text-[9px] text-destructive`,title:e.error.message,children:e.error.message})]})}function Fh({className:e}){let t=X(e=>e.agents),[n,r]=(0,U.useState)(!0),[a,o]=(0,U.useState)(null),s=(0,U.useMemo)(()=>{let e=Array.from(t.values());return e.sort(tf),e},[t]),c=a?s.find(e=>e.id===a):null;if(s.length===0)return null;let l=nf(s),u=s.reduce((e,t)=>e+(t.costUsd??0),0),d=n&&s.length>=3;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:Z(`rounded-lg border border-border bg-card/50 backdrop-blur-sm overflow-hidden`,e),children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>r(e=>!e),className:`flex w-full items-center gap-2 px-3 py-1.5 text-left hover:bg-muted/30 transition-colors`,children:[(0,Y.jsx)(In,{className:`h-3.5 w-3.5 text-primary`}),(0,Y.jsx)(`span`,{className:`text-[11px] font-semibold text-foreground`,children:`Fleet`}),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5 ml-auto text-[10px]`,children:[l.running>0&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 text-[hsl(var(--success))]`,children:[(0,Y.jsx)(`span`,{className:`led led-pulse text-[hsl(var(--success))]`}),l.running]}),l.completed>0&&(0,Y.jsxs)(`span`,{className:`text-muted-foreground`,children:[l.completed,` done`]}),l.failed>0&&(0,Y.jsxs)(`span`,{className:`text-destructive`,children:[l.failed,` err`]}),u>0&&(0,Y.jsx)(`span`,{className:`tabular text-foreground/70`,children:rf(u)})]}),d?(0,Y.jsx)(i,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}):(0,Y.jsx)(ar,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`})]}),!d&&(0,Y.jsx)(`div`,{className:`flex gap-2 overflow-x-auto px-2 pb-2`,children:s.map(e=>(0,Y.jsx)(Ph,{a:e,onClick:()=>o(e.id)},e.id))})]}),c&&(0,Y.jsx)(Nh,{agent:c,onClose:()=>o(null)})]})}var Ih={running:{led:`text-[hsl(var(--success))]`,label:`running`,pulse:!0},completed:{led:`text-[hsl(var(--success))]`,label:`done`,pulse:!1},failed:{led:`text-destructive`,label:`failed`,pulse:!1},timeout:{led:`text-[hsl(var(--warning))]`,label:`timeout`,pulse:!1},stopped:{led:`text-muted-foreground`,label:`stopped`,pulse:!1}};function Lh(e){return e<=0?`$0`:e>=.01?`$${e.toFixed(3)}`:`$${e.toFixed(4)}`}function Rh({agent:e,onClick:t}){let n=Ih[e.status],r=e.status===`running`;return(0,Y.jsxs)(`button`,{type:`button`,onClick:t,className:Z(`w-full text-left rounded-lg border px-2.5 py-2 transition-colors`,`hover:border-primary/40 hover:bg-primary/[0.04]`,r?`border-primary/30 bg-primary/[0.03]`:`border-border/60 bg-card/40`),children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,Y.jsx)(`span`,{className:Z(`led shrink-0`,n.led,n.pulse&&`led-pulse`)}),(0,Y.jsx)(`span`,{className:`truncate text-[11px] font-semibold`,title:e.name,children:e.name}),(0,Y.jsxs)(`span`,{className:`tabular ml-auto shrink-0 text-[10px] text-muted-foreground`,children:[e.iteration,`it`]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 mt-0.5 min-w-0`,children:[e.model?(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground truncate font-mono`,children:e.model}):(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground italic`,children:`pending…`}),(0,Y.jsx)(`span`,{className:`tabular ml-auto text-[10px] text-foreground/70`,children:Lh(e.costUsd)})]}),(e.currentTool||e.lastTool)&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 mt-1 text-[10px] text-muted-foreground truncate`,children:[(0,Y.jsx)(kn,{className:Z(`h-2.5 w-2.5 shrink-0`,r&&`animate-pulse text-primary`)}),(0,Y.jsx)(`span`,{className:`truncate font-mono`,children:e.currentTool??e.lastTool})]})]})}function zh(){let e=X(e=>e.agents),[t,n]=(0,U.useState)(null),r=(0,U.useMemo)(()=>{let t=Array.from(e.values());return t.sort((e,t)=>{let n=e.status===`running`?0:1,r=t.status===`running`?0:1;return n===r?e.startedAt-t.startedAt:n-r}),t},[e]),i=r.filter(e=>e.status===`running`).length,a=t?r.find(e=>e.id===t)??null:null;return r.length===0?(0,Y.jsx)(`div`,{className:`flex-1 flex items-center justify-center p-4`,children:(0,Y.jsxs)(`div`,{className:`text-center text-muted-foreground`,children:[(0,Y.jsx)(In,{className:`h-8 w-8 mx-auto mb-3 opacity-20`}),(0,Y.jsx)(`p`,{className:`text-sm font-medium`,children:`No agents yet`}),(0,Y.jsx)(`p`,{className:`text-xs mt-1`,children:`Subagents appear here when the fleet is active.`})]})}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`px-3 py-2 border-b text-[10px] text-muted-foreground flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`font-semibold uppercase tracking-wider`,children:`Fleet`}),(0,Y.jsxs)(`span`,{className:`ml-auto tabular-nums`,children:[i>0?`${i} running · `:``,r.length,` total`]})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto p-2 space-y-1.5`,children:r.map(e=>(0,Y.jsx)(Rh,{agent:e,onClick:()=>n(e.id)},e.id))}),(0,Y.jsx)(`div`,{className:`border-t px-3 py-2 shrink-0`,children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>J.getState().setAgentsMonitorOpen(!0),className:`w-full flex items-center justify-center gap-1.5 h-7 rounded-md border border-border text-[11px] text-muted-foreground hover:text-foreground hover:bg-accent transition-colors`,children:[(0,Y.jsx)(Ze,{className:`h-3 w-3`}),`Open full agents view`]})}),a&&(0,Y.jsx)(Nh,{agent:a,onClose:()=>n(null)})]})}var Bh={M:{label:`M`,cls:`text-amber-600 dark:text-amber-400`},A:{label:`A`,cls:`text-emerald-600 dark:text-emerald-400`},D:{label:`D`,cls:`text-rose-600 dark:text-rose-400`},R:{label:`R`,cls:`text-sky-600 dark:text-sky-400`},C:{label:`C`,cls:`text-sky-600 dark:text-sky-400`},U:{label:`U`,cls:`text-orange-600 dark:text-orange-400`},"?":{label:`U`,cls:`text-muted-foreground`}};function Vh(e){let t=e.lastIndexOf(`/`);return t<0?{name:e,dir:``}:{name:e.slice(t+1),dir:e.slice(0,t+1)}}function Hh({file:e,active:t,onSelect:n}){let r=Bh[e.status]??Bh.M,{name:i,dir:a}=Vh(e.path);return(0,Y.jsxs)(`button`,{type:`button`,onClick:n,title:e.path,className:Z(`group flex items-center gap-2 w-full px-2 py-1 text-left text-xs rounded hover:bg-accent/60`,t&&`bg-accent`),children:[(0,Y.jsx)(`span`,{className:Z(`w-3 shrink-0 text-center font-mono font-bold`,r?.cls),children:r?.label}),(0,Y.jsxs)(`span`,{className:`flex-1 min-w-0 truncate`,children:[(0,Y.jsx)(`span`,{className:Z(e.status===`D`&&`line-through opacity-70`),children:i}),a&&(0,Y.jsx)(`span`,{className:`text-muted-foreground/60 ml-1 truncate`,children:a})]}),(0,Y.jsxs)(`span`,{className:`shrink-0 font-mono text-[10px] tabular-nums`,children:[e.added>0&&(0,Y.jsxs)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:[`+`,e.added]}),e.deleted>0&&(0,Y.jsxs)(`span`,{className:`text-rose-600 dark:text-rose-400 ml-1`,children:[`-`,e.deleted]})]})]})}function Uh(){let{client:e}=Vs(),t=K(e=>e.wsConnected),n=Ti(e=>e.files),r=Ti(e=>e.error),i=Ti(e=>e.loadingList),a=Ti(e=>e.selectedPath),o=(0,U.useCallback)(()=>{t&&(Ti.getState().setListLoading(!0),e?.getGitChanges?.())},[e,t]);(0,U.useEffect)(()=>{o()},[o]);let s=t=>{Ti.getState().select(t),e?.getGitDiff?.(t),J.getState().setCurrentView(`changes`)},c=n.reduce((e,t)=>e+t.added,0),l=n.reduce((e,t)=>e+t.deleted,0);return(0,Y.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b shrink-0`,children:[(0,Y.jsxs)(`span`,{className:`text-[11px] text-muted-foreground font-mono`,children:[n.length,` `,n.length===1?`file`:`files`,n.length>0&&(0,Y.jsxs)(Y.Fragment,{children:[` · `,(0,Y.jsxs)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,children:[`+`,c]}),` `,(0,Y.jsxs)(`span`,{className:`text-rose-600 dark:text-rose-400`,children:[`-`,l]})]})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:o,title:`Refresh changes`,className:`h-6 w-6 inline-flex items-center justify-center rounded hover:bg-accent text-muted-foreground`,children:i?(0,Y.jsx)(O,{className:`h-3.5 w-3.5 animate-spin`}):(0,Y.jsx)(tr,{className:`h-3.5 w-3.5`})})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto p-1.5`,children:r?(0,Y.jsx)(`div`,{className:`px-2 py-6 text-center text-xs text-muted-foreground`,children:r}):n.length===0?(0,Y.jsxs)(`div`,{className:`flex flex-col items-center gap-2 px-2 py-10 text-center text-xs text-muted-foreground`,children:[(0,Y.jsx)(Ut,{className:`h-6 w-6 opacity-40`}),i?`Loading changes…`:`No changes — working tree is clean.`]}):(0,Y.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:n.map(e=>(0,Y.jsx)(Hh,{file:e,active:e.path===a,onSelect:()=>s(e.path)},e.path))})})]})}var Wh=e=>{let t=Date.parse(e);if(Number.isNaN(t))return``;let n=Date.now()-t;if(n<6e4)return`just now`;if(n<36e5)return`${Math.floor(n/6e4)}m ago`;if(n<864e5)return`${Math.floor(n/36e5)}h ago`;let r=Math.floor(n/864e5);return r<7?`${r}d ago`:new Date(t).toLocaleDateString()};function Gh(e){return e.filter(e=>e.tokenTotal===0&&!e.isCurrent).map(e=>e.id)}function Kh({historyQuery:e,setHistoryQuery:t,historyEntries:n,historyLoading:r,historyError:i,wsConnected:a,listSessions:o,resumeSession:s,deleteSession:c}){let l=J(e=>e.favoriteSessionIds),u=J(e=>e.toggleFavoriteSession),d=J(e=>e.sessionNicknames),f=J(e=>e.setSessionNickname),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(``),[_,v]=(0,U.useState)(null);(0,U.useEffect)(()=>{_&&n.some(e=>e.id===_&&e.isCurrent)&&v(null)},[_,n]);let y=(0,U.useCallback)(e=>{v(e),s(e),setTimeout(()=>v(t=>t===e?null:t),1e4)},[s]),b=(0,U.useMemo)(()=>Gh(n),[n]),x=(0,U.useCallback)(async()=>{if(b.length!==0&&await el({title:b.length===1?`Delete 1 empty session?`:`Delete ${b.length} empty sessions?`,message:`Sessions without any token usage are removed from disk.`,confirmLabel:`Delete`,danger:!0}))for(let e of b)c(e)},[b,c]),S=(()=>{let t=e.trim().toLowerCase(),r=t?n.filter(e=>e.title.toLowerCase().includes(t)||e.model.toLowerCase().includes(t)||e.provider.toLowerCase().includes(t)||e.id.toLowerCase().includes(t)):n,i=new Date;i.setHours(0,0,0,0);let a=i.getTime(),o=a-864e5,s=a-6*864e5,c={today:[],yesterday:[],week:[],older:[]};for(let e of r){let t=Date.parse(e.startedAt);if(Number.isNaN(t)){c.older.push(e);continue}t>=a?c.today.push(e):t>=o?c.yesterday.push(e):t>=s?c.week.push(e):c.older.push(e)}let u=new Set(l),d=r.filter(e=>u.has(e.id)),f=[];d.length&&f.push({label:`Favorites`,rows:d,star:!0});let p=e=>e.filter(e=>!u.has(e.id)),m=p(c.today),h=p(c.yesterday),g=p(c.week),_=p(c.older);return m.length&&f.push({label:`Today`,rows:m}),h.length&&f.push({label:`Yesterday`,rows:h}),g.length&&f.push({label:`This week`,rows:g}),_.length&&f.push({label:`Earlier`,rows:_}),f})();return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b`,children:[(0,Y.jsx)(`span`,{className:`text-xs uppercase tracking-wider text-muted-foreground`,children:`Recent sessions`}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[b.length>0&&(0,Y.jsx)(`button`,{type:`button`,className:`h-6 w-6 inline-flex items-center justify-center rounded-md hover:bg-muted text-muted-foreground hover:text-destructive`,onClick:x,disabled:!a,title:`Delete ${b.length} empty session${b.length===1?``:`s`}`,children:(0,Y.jsx)(yn,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(`button`,{type:`button`,className:`h-6 w-6 inline-flex items-center justify-center rounded-md hover:bg-muted`,onClick:()=>o(50),disabled:!a,title:`Refresh`,children:r?(0,Y.jsx)(O,{className:`h-3.5 w-3.5 animate-spin`}):(0,Y.jsx)(tr,{className:`h-3.5 w-3.5`})})]})]}),n.length>3&&(0,Y.jsx)(`div`,{className:`px-3 py-2 border-b`,children:(0,Y.jsxs)(`div`,{className:`relative`,children:[(0,Y.jsx)(Me,{className:`absolute left-2 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground/60`}),(0,Y.jsx)(`input`,{type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:`Filter title, model, provider…`,className:`w-full pl-7 pr-7 py-1 text-xs rounded-md bg-muted/40 border border-transparent focus:bg-background focus:border-input focus:outline-none focus:ring-1 focus:ring-ring placeholder:text-muted-foreground/50`}),e&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>t(``),className:`absolute right-1 top-1/2 -translate-y-1/2 text-muted-foreground/60 hover:text-foreground p-0.5`,title:`Clear filter`,children:(0,Y.jsx)(H,{className:`h-3 w-3`})})]})}),i&&(0,Y.jsx)(`div`,{className:`px-4 py-2 text-xs text-destructive bg-destructive/5 border-b`,children:i}),(0,Y.jsx)(Wd,{className:`flex-1`,children:n.length===0&&!r?(0,Y.jsxs)(`div`,{className:`text-center text-muted-foreground py-8 px-4`,children:[(0,Y.jsx)(lt,{className:`h-8 w-8 mx-auto mb-3 opacity-20`}),(0,Y.jsx)(`p`,{className:`text-sm font-medium`,children:`No history yet`}),(0,Y.jsx)(`p`,{className:`text-xs mt-1`,children:`Your conversations will appear here`})]}):S.length===0?(0,Y.jsxs)(`div`,{className:`text-center text-muted-foreground py-8 px-4`,children:[(0,Y.jsx)(Me,{className:`h-8 w-8 mx-auto mb-3 opacity-20`}),(0,Y.jsx)(`p`,{className:`text-sm font-medium`,children:`No matches`}),(0,Y.jsx)(`p`,{className:`text-xs mt-1`,children:`Try a different filter`})]}):(0,Y.jsx)(`div`,{className:`p-2 space-y-3`,children:S.map(e=>(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(`div`,{className:Z(`sticky top-0 z-[1] px-1 pb-1 text-[10px] uppercase tracking-wider font-semibold bg-card/90 backdrop-blur-sm flex items-center gap-1`,e.star?`text-amber-500`:`text-muted-foreground/80`),children:[e.star&&(0,Y.jsx)(fe,{className:`h-3 w-3 fill-current`}),e.label,` `,(0,Y.jsxs)(`span`,{className:`text-muted-foreground/50 font-normal normal-case ml-1`,children:[`(`,e.rows.length,`)`]})]}),e.rows.map(e=>(0,Y.jsxs)(`div`,{className:Z(`group relative rounded-md border text-sm transition-colors`,e.isCurrent?`bg-primary/5 border-primary/40`:`bg-card border-border/60 hover:bg-muted/40 hover:border-primary/40`),children:[(0,Y.jsx)(`button`,{type:`button`,disabled:e.isCurrent||p===e.id||_!==null,onClick:()=>y(e.id),onDoubleClick:t=>{t.stopPropagation(),m(e.id),g(d[e.id]??e.title??``)},className:`block w-full rounded-md px-3 py-2 pr-16 text-left disabled:cursor-default focus:outline-none focus-visible:ring-2 focus-visible:ring-ring`,children:(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[p===e.id?(0,Y.jsx)(`input`,{value:h,onChange:e=>g(e.target.value),onClick:e=>e.stopPropagation(),onBlur:()=>{f(e.id,h),m(null)},onKeyDown:t=>{t.key===`Enter`?(t.preventDefault(),f(e.id,h),m(null)):t.key===`Escape`&&(t.preventDefault(),m(null))},placeholder:e.title||`Nickname`,className:`w-full text-sm bg-background border border-input rounded px-1.5 py-0.5 focus:outline-none focus:ring-1 focus:ring-ring`}):(0,Y.jsx)(`div`,{className:`font-medium truncate text-foreground`,title:d[e.id]?`${d[e.id]} — original: ${e.title}`:`${e.title}\n\nDouble-click to rename`,children:d[e.id]||e.title||`(empty)`}),(0,Y.jsxs)(`div`,{className:`text-[10px] text-muted-foreground font-mono truncate mt-0.5`,children:[e.provider,`/`,e.model]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] text-muted-foreground/80 mt-0.5`,children:[_===e.id?(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 text-primary font-medium`,children:[(0,Y.jsx)(O,{className:`h-3 w-3 animate-spin`}),`resuming…`]}):(0,Y.jsx)(`span`,{children:Wh(e.startedAt)}),e.tokenTotal>0&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`opacity-50`,children:`·`}),(0,Y.jsxs)(`span`,{className:`tabular-nums`,children:[e.tokenTotal.toLocaleString(),` tok`]})]}),e.isCurrent&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`opacity-50`,children:`·`}),(0,Y.jsx)(`span`,{className:`text-primary font-medium`,children:`active`})]})]})]})}),(0,Y.jsxs)(`div`,{className:`absolute right-2 top-2 flex items-center gap-1`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>u(e.id),className:Z(`transition-opacity hover:text-amber-500`,l.includes(e.id)?`opacity-100 text-amber-500`:`opacity-0 group-hover:opacity-100 text-muted-foreground`),title:l.includes(e.id)?`Unfavorite`:`Mark as favorite`,children:(0,Y.jsx)(fe,{className:Z(`h-3.5 w-3.5`,l.includes(e.id)&&`fill-current`)})}),!e.isCurrent&&(0,Y.jsx)(`button`,{type:`button`,onClick:async()=>{await el({title:`Delete session?`,message:`"${d[e.id]||e.title||`(empty)`}" will be removed from disk. This cannot be undone.`,confirmLabel:`Delete`,danger:!0})&&c(e.id)},className:`opacity-0 group-hover:opacity-100 transition-opacity text-muted-foreground hover:text-destructive`,title:`Delete session`,children:(0,Y.jsx)(yn,{className:`h-3.5 w-3.5`})})]})]},e.id))]},e.label))})})]})}function qh(){let e=K(e=>e.wsConnected),{entries:t,loading:n,error:r}=Ei(),{listSessions:i,resumeSession:a,deleteSession:o}=Vs(),s=J(e=>e.setCurrentView),c=q(e=>e.session?.id),[l,u]=(0,U.useState)(``);return(0,U.useEffect)(()=>{e&&i(50)},[e,c,i]),(0,Y.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[(0,Y.jsx)(Kh,{historyQuery:l,setHistoryQuery:u,historyEntries:t,historyLoading:n,historyError:r,wsConnected:e,listSessions:i,resumeSession:a,deleteSession:o}),(0,Y.jsx)(`div`,{className:`border-t px-3 py-2 shrink-0`,children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>s(`sessions`),className:`w-full flex items-center justify-center gap-1.5 h-7 rounded-md border border-border text-[11px] text-muted-foreground hover:text-foreground hover:bg-accent transition-colors`,children:[(0,Y.jsx)(Ze,{className:`h-3 w-3`}),`Open sessions dashboard`]})})]})}function Jh(e){return e<=0?`$0.000`:e>=.01?`$${e.toFixed(3)}`:`$${e.toFixed(4)}`}function Yh(e){if(e<=0)return`--`;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?`${n}m ${t%60}s`:`${Math.floor(n/60)}h ${n%60}m`}function Xh(e){let t=e.split(`/`).pop()??e;return t.length>18?t.slice(0,18):t}function Zh({icon:e,label:t,onClick:n,disabled:r,tone:i,title:a}){return(0,Y.jsxs)(`button`,{type:`button`,onClick:n,disabled:r,title:a??t,className:Z(`flex items-center justify-center gap-1.5 h-8 rounded-md border text-[11px] font-medium transition-colors`,`disabled:opacity-40 disabled:cursor-not-allowed`,i===`primary`?`border-primary/40 bg-primary/10 text-primary hover:bg-primary/20`:i===`danger`?`border-destructive/40 bg-destructive/10 text-destructive hover:bg-destructive/20`:`border-border bg-card hover:bg-accent text-foreground/80`),children:[e,t]})}function Qh({label:e,value:t,sub:n}){return(0,Y.jsxs)(`div`,{className:`flex flex-col p-2 rounded-lg bg-muted/40 border border-border/40 min-w-0`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:e}),(0,Y.jsx)(`span`,{className:`text-sm font-semibold tabular-nums truncate`,children:t}),n&&(0,Y.jsx)(`span`,{className:`text-[9px] text-muted-foreground/70 truncate`,children:n})]})}function $h({icon:e,label:t,right:n}){return(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5 text-[10px] uppercase tracking-wider text-muted-foreground font-semibold`,children:[e,t]}),n]})}function eg({label:e,value:t,onChange:n,title:r}){return(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2 py-1`,title:r,children:[(0,Y.jsx)(`span`,{className:`text-xs text-foreground/80`,children:e}),(0,Y.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":t,onClick:n,className:Z(`shrink-0 relative inline-flex h-4 w-7 rounded-full border transition-colors`,t?`bg-primary border-primary`:`bg-muted border-input hover:bg-muted/80`),children:(0,Y.jsx)(`span`,{className:Z(`absolute top-0.5 left-0.5 h-2.5 w-2.5 rounded-full bg-background shadow transition-transform`,t&&`translate-x-3`)})})]})}function tg(){let{client:e,updatePrefs:t,switchAutonomy:n}=Vs(),r=K(e=>e.wsConnected),i=K(e=>e.wsUrl),a=K(e=>e.provider),o=K(e=>e.model),s=K(e=>e.soundOnComplete),l=q(e=>e.session),u=q(e=>e.totalTokens),d=q(e=>e.cost),f=q(e=>e.iteration),p=q(e=>e.todos),m=q(e=>e.lastInputTokens),h=q(e=>e.maxContext),g=G(e=>e.messages),_=G(e=>e.isLoading),v=X(e=>e.agents),y=J(e=>e.pinnedIds),b=J(e=>e.unpinAll),x=J(e=>e.setModelSwitcherOpen),S=$i(),C=(0,U.useCallback)((e,n)=>{S.set({[e]:n}),t({[e]:n})},[S,t]),[w,T]=(0,U.useState)(!1),E=l?.startedAt??null,[D,O]=(0,U.useState)(()=>Date.now());(0,U.useEffect)(()=>{if(!E)return;let e=setInterval(()=>O(Date.now()),1e3);return()=>clearInterval(e)},[E]);let A=(0,U.useMemo)(()=>Array.from(v.values()).filter(e=>e.status===`running`).length,[v]),j=h>0&&m>0?Math.min(100,Math.round(m/h*100)):0,M=y.map(e=>g.find(t=>t.id===e)).filter(e=>!!e&&e.content.length>0),N=e=>W(i)?.send?.(e);return(0,Y.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[(0,Y.jsxs)(`div`,{className:`px-3 py-2.5 border-b grid grid-cols-2 gap-1.5`,children:[_?(0,Y.jsx)(Zh,{icon:(0,Y.jsx)(Ie,{className:`h-3 w-3`}),label:`Abort`,tone:`danger`,onClick:()=>N({type:`abort`,payload:{}}),disabled:!r}):(0,Y.jsx)(Zh,{icon:(0,Y.jsx)(Sn,{className:`h-3 w-3`}),label:`New session`,tone:`primary`,onClick:()=>{e?.newSession?.(),J.getState().setCurrentView(`chat`)},disabled:!r,title:`Start a new session (Ctrl+N)`}),(0,Y.jsx)(Zh,{icon:(0,Y.jsx)(c,{className:`h-3 w-3`}),label:`Export`,onClick:()=>Kl(),title:`Export chat as markdown (Ctrl+E)`}),(0,Y.jsx)(Zh,{icon:(0,Y.jsx)(Ye,{className:`h-3 w-3`}),label:`Compact`,onClick:()=>N({type:`context.compact`,payload:{aggressive:!1}}),disabled:!r,title:`Compact the context window`}),(0,Y.jsx)(Zh,{icon:(0,Y.jsx)(Ce,{className:`h-3 w-3`}),label:`Clear`,onClick:()=>N({type:`context.clear`}),disabled:!r,title:`Clear context (Ctrl+L)`})]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>x(!0),className:`w-full px-4 py-2.5 border-b text-left hover:bg-muted/40 transition-colors`,title:`Change model (Ctrl+M)`,children:[(0,Y.jsx)(`div`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground mb-0.5`,children:`Model`}),(0,Y.jsxs)(`div`,{className:`font-mono text-xs truncate`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:a||`—`}),(0,Y.jsx)(`span`,{className:`text-muted-foreground/40 mx-1`,children:`/`}),(0,Y.jsx)(`span`,{className:`font-medium`,children:o||`—`})]})]}),h>0&&(0,Y.jsxs)(`div`,{className:`px-4 py-2.5 border-b space-y-1.5`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>T(!0),className:`w-full block text-left`,title:`Click for a context breakdown`,children:(0,Y.jsx)($h,{icon:null,label:`Context`,right:(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground tabular-nums font-mono`,children:[dc(m),`/`,dc(h),` · `,j,`%`]})})}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>T(!0),className:`w-full block`,title:`Click for a context breakdown`,children:(0,Y.jsx)(bc,{pct:j,tokens:m,maxTokens:h,showTokens:!0})})]}),(0,Y.jsxs)(`div`,{className:`px-3 py-2.5 border-b space-y-1.5`,children:[(0,Y.jsx)($h,{icon:(0,Y.jsx)(k,{className:`h-3 w-3`}),label:`Session`}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 gap-1.5`,children:[(0,Y.jsx)(Qh,{label:`Messages`,value:g.length}),(0,Y.jsx)(Qh,{label:`Elapsed`,value:E?Yh(D-E):`--`}),(0,Y.jsx)(Qh,{label:`Tokens`,value:dc(u.input+u.output),sub:`${dc(u.input)} in / ${dc(u.output)} out`}),(0,Y.jsx)(Qh,{label:`Cost`,value:Jh(d)}),f&&(0,Y.jsx)(Qh,{label:`Iteration`,value:f.index,sub:f.max?`of ${f.max}`:void 0}),v.size>0&&(0,Y.jsx)(Qh,{label:`Agents`,value:v.size,sub:A>0?`${A} running`:void 0})]})]}),p.length>0&&(()=>{let e=p.filter(e=>e.status===`completed`).length,t=p.filter(e=>e.status===`in_progress`).length,n=Math.round(e/p.length*100),r=e===p.length;return(0,Y.jsxs)(`div`,{className:`px-3 py-2.5 border-b space-y-1.5`,children:[(0,Y.jsx)($h,{icon:(0,Y.jsx)(ee,{className:`h-3 w-3`}),label:`Plan`,right:(0,Y.jsxs)(`span`,{className:`tabular-nums text-[10px] text-muted-foreground`,children:[e,`/`,p.length]})}),(0,Y.jsx)(`div`,{className:Z(`relative h-1.5 w-full overflow-hidden rounded-full bg-muted`,t>0&&`bar-sweep`),title:`${n}% complete`,children:(0,Y.jsx)(`div`,{className:Z(`h-full rounded-full transition-all duration-500`,r?`bg-[hsl(var(--success))]`:`bg-primary`),style:{width:`${Math.max(n,t>0?4:0)}%`}})}),(0,Y.jsx)(`ul`,{className:`space-y-0.5 max-h-56 overflow-y-auto pr-1 -mx-1`,children:p.map(e=>{let t=e.status===`completed`?V:e.status===`in_progress`?Kn:nt,n=e.status===`in_progress`,r=e.status===`completed`?`text-[hsl(var(--success))] line-through opacity-60`:n?`text-foreground`:`text-muted-foreground`;return(0,Y.jsxs)(`li`,{className:Z(`flex items-start gap-2 text-xs leading-snug rounded-md px-1.5 py-1 transition-colors`,n&&`bg-primary/10 ring-1 ring-inset ring-primary/20`,r),children:[(0,Y.jsx)(t,{className:Z(`h-3.5 w-3.5 mt-0.5 shrink-0`,n&&`text-primary animate-pulse`)}),(0,Y.jsx)(`span`,{className:`break-words`,children:n&&e.activeForm?e.activeForm:e.content})]},e.id)})})]})})(),M.length>0&&(0,Y.jsxs)(`div`,{className:`px-3 py-2.5 border-b space-y-1.5`,children:[(0,Y.jsx)($h,{icon:(0,Y.jsx)(Rt,{className:`h-3 w-3 text-amber-500`}),label:`Pinned`,right:(0,Y.jsx)(`button`,{type:`button`,onClick:b,className:`text-[10px] text-muted-foreground hover:text-destructive`,children:`Clear`})}),(0,Y.jsx)(`ul`,{className:`space-y-1 max-h-48 overflow-y-auto pr-1`,children:M.map(e=>{let t=e.content.replace(/\s+/g,` `).slice(0,80);return(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{let t=document.querySelector(`[data-message-id="${e.id}"]`);t&&(t.scrollIntoView({behavior:`smooth`,block:`center`}),t.classList.add(`ring-2`,`ring-amber-500/60`),setTimeout(()=>{t.classList.remove(`ring-2`,`ring-amber-500/60`)},1600))},className:`w-full text-left text-xs px-2 py-1.5 rounded bg-muted/40 hover:bg-muted/70 border border-amber-500/20 leading-snug`,title:e.content.slice(0,400),children:[t,e.content.length>80?`…`:``]})},e.id)})})]}),(0,Y.jsxs)(`div`,{className:`px-3 py-2.5 border-b space-y-1`,children:[(0,Y.jsx)($h,{icon:(0,Y.jsx)(R,{className:`h-3 w-3`}),label:`Quick settings`}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2 py-1`,children:[(0,Y.jsx)(`span`,{className:`text-xs text-foreground/80`,children:`Autonomy`}),(0,Y.jsxs)(`select`,{value:S.autonomy,onChange:e=>{let t=e.target.value;S.set({autonomy:t}),n(t)},className:`shrink-0 h-6 max-w-[150px] rounded-md border bg-background px-1.5 text-[11px]`,children:[(0,Y.jsx)(`option`,{value:`off`,children:`Off`}),(0,Y.jsx)(`option`,{value:`suggest`,children:`Suggest`}),(0,Y.jsx)(`option`,{value:`auto`,children:`Auto`}),(0,Y.jsx)(`option`,{value:`eternal`,children:`Eternal`}),(0,Y.jsx)(`option`,{value:`eternal-parallel`,children:`Eternal Parallel`})]})]}),(0,Y.jsx)(eg,{label:`YOLO mode`,title:`Bypass tool confirmation prompts`,value:S.yolo,onChange:()=>C(`yolo`,!S.yolo)}),(0,Y.jsx)(eg,{label:`Refine prompts`,title:`Rewrite prompts before sending`,value:S.enhanceEnabled,onChange:()=>C(`enhanceEnabled`,!S.enhanceEnabled)}),(0,Y.jsx)(eg,{label:`Sound on completion`,title:`Play a soft chime when a run finishes`,value:s,onChange:()=>{let e=!K.getState().soundOnComplete;K.getState().setSoundOnComplete(e),e&&Ia()}})]}),(0,Y.jsxs)(`div`,{className:`px-4 py-2.5`,children:[(0,Y.jsxs)(`div`,{className:Z(`flex items-center gap-2 text-[11px]`,r?`text-[hsl(var(--success))]`:`text-[hsl(var(--warning))]`),children:[r?(0,Y.jsx)(on,{className:`h-3.5 w-3.5`}):(0,Y.jsx)(en,{className:`h-3.5 w-3.5`}),(0,Y.jsx)(`span`,{className:`font-medium`,children:r?`Connected`:`Disconnected`}),(0,Y.jsx)(`span`,{className:`text-muted-foreground font-mono truncate ml-auto`,title:i,children:i})]}),l&&(0,Y.jsxs)(`div`,{className:`text-[10px] text-muted-foreground font-mono mt-1 truncate`,title:l.id,children:[`session `,Xh(l.id)]})]}),(0,Y.jsx)(gu,{open:w,onClose:()=>T(!1)})]})}var ng={project:`Project`,user:`Global`,bundled:`Bundled`};function rg({source:e}){let t=`bundled`;return e===`project`?t=`project`:e===`user`&&(t=`user`),(0,Y.jsx)(`span`,{className:Z(`inline-flex items-center px-1.5 py-0.5 rounded text-[9px] font-semibold uppercase tracking-wide`,t===`project`&&`bg-emerald-100 text-emerald-700 dark:bg-emerald-950 dark:text-emerald-400`,t===`user`&&`bg-violet-100 text-violet-700 dark:bg-violet-950 dark:text-violet-400`,t===`bundled`&&`bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-400`),children:ng[t]??t})}function ig({className:e}){let{client:t}=Vs(),n=J(e=>e.skillsState),r=J(e=>e.setSkillsState),i=J(e=>e.setCurrentView),[a,o]=(0,U.useState)([]),[s,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(`all`),[f,p]=(0,U.useState)(``),m=(0,U.useRef)(n);m.current=n;let[h,g]=(0,U.useState)(!1),[_,v]=(0,U.useState)(``),[y,b]=(0,U.useState)(!1),[x,S]=(0,U.useState)(!1),[C,w]=(0,U.useState)(null),[T,E]=(0,U.useState)(null),[D,k]=(0,U.useState)(!1),[A,j]=(0,U.useState)(``),[M,N]=(0,U.useState)(``),[P,F]=(0,U.useState)(`project`),[I,L]=(0,U.useState)(!1),[R,z]=(0,U.useState)(null),[ee,te]=(0,U.useState)(null),[ne,re]=(0,U.useState)(!1),[B,V]=(0,U.useState)(!1),ie=(0,U.useCallback)(async()=>{if(!t||!_.trim())return;S(!0),w(null),E(null);let e=n=>{let r=n;S(!1),r.payload.success?(E(`Installed: ${r.payload.results?.map(e=>e.name).join(`, `)??_}`),t.send({type:`skills.list`})):w(r.payload.error??`Installation failed`),t.off(`skills.installed`,e)};t.on(`skills.installed`,e),t.installSkill(_.trim(),y)},[t,_,y]),ae=(0,U.useCallback)(()=>{if(!t||!A.trim()||!M.trim())return;L(!0),z(null),te(null);let e=n=>{let r=n;L(!1),r.payload.success?(te(`Created: ${r.payload.skill?.name}`),t.send({type:`skills.list`})):z(r.payload.error??`Creation failed`),t.off(`skills.created`,e)};t.on(`skills.created`,e),t.createSkill(A.trim(),M.trim(),P)},[t,A,M,P]),oe=(0,U.useCallback)(()=>{t&&(V(!0),t.checkForUpdates(void 0,void 0))},[t]),se=(0,U.useCallback)(()=>{if(!t)return;re(!0);let e=n=>{let r=n;if(re(!1),r.payload.error)console.error(`[skills.export]`,r.payload.error);else{let e=atob(r.payload.zipBase64),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);let n=new Blob([t],{type:`application/zip`}),i=URL.createObjectURL(n),a=document.createElement(`a`);a.href=i,a.download=`wrongstack-skills-${Date.now()}.zip`,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}t.off(`skills.exported`,e)};t.on(`skills.exported`,e),t.exportAllSkills()},[t]);(0,U.useEffect)(()=>{if(!t)return;l(!0);let e=e=>{let t=e;if(t.payload.enabled&&t.payload.skills){o(t.payload.skills);let e=m.current,n=e.knownRefs,i=0,a={...n};for(let e of t.payload.skills){if(e.source===`bundled`)continue;let t=e.ref;if(!t)continue;let r=n[e.name];a[e.name]=t,r&&r!==t&&i++}r({...e,knownRefs:a,updateAvailableCount:i})}l(!1)},n=e=>{let n=e;if(V(!1),n.payload.success){let e=m.current,i={...e.knownRefs};for(let e of n.payload.updated??[])i[e.name]=e.newRef;r({...e,knownRefs:i,updateAvailableCount:0}),t.send({type:`skills.list`})}};return t.on(`skills.list`,e),t.on(`skills.updated`,n),t.send({type:`skills.list`}),()=>{t.off(`skills.list`,e),t.off(`skills.updated`,n)}},[t,r]);let ce=(0,U.useCallback)(e=>{r({...m.current,selectedSkill:e,navHistory:[e],historyIndex:0,detailOpen:!0}),i(`skill`)},[r,i]),le=(0,U.useMemo)(()=>{let e=a;if(u!==`all`&&(e=e.filter(e=>e.source===u)),f.trim()){let t=f.toLowerCase();e=e.filter(e=>e.name.toLowerCase().includes(t)||e.description.toLowerCase().includes(t)||e.trigger.toLowerCase().includes(t))}return e},[a,u,f]),ue=(0,U.useMemo)(()=>{let e={project:[],user:[],bundled:[]};for(let t of le){let n=t.source||`bundled`;e[n]?e[n].push(t):e.bundled.push(t)}return e},[le]),de=n.selectedSkill?.name;return(0,Y.jsxs)(`div`,{className:Z(`flex flex-col h-full overflow-hidden`,e),children:[(0,Y.jsxs)(`div`,{className:`w-full border-b flex items-center gap-1 px-2 py-2`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{v(``),w(null),E(null),b(!1),g(!0)},className:`flex items-center justify-center w-8 h-8 rounded-lg text-muted-foreground hover:text-foreground hover:bg-accent transition-colors`,title:`Install skill`,children:(0,Y.jsx)(Sn,{className:`h-4 w-4`})}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{j(``),N(``),F(`project`),z(null),te(null),k(!0)},className:`flex items-center justify-center w-8 h-8 rounded-lg text-muted-foreground hover:text-foreground hover:bg-accent transition-colors`,title:`Create skill`,children:(0,Y.jsx)(On,{className:`h-4 w-4`})}),(0,Y.jsx)(`button`,{type:`button`,onClick:se,disabled:ne||a.length===0,className:`flex items-center justify-center w-8 h-8 rounded-lg text-muted-foreground hover:text-foreground hover:bg-accent transition-colors disabled:opacity-40`,title:`Export all skills as .zip`,children:ne?(0,Y.jsx)(O,{className:`h-4 w-4 animate-spin`}):(0,Y.jsx)(c,{className:`h-4 w-4`})}),(0,Y.jsxs)(`button`,{type:`button`,onClick:oe,disabled:B,className:`flex items-center justify-center w-8 h-8 rounded-lg text-muted-foreground hover:text-foreground hover:bg-accent transition-colors disabled:opacity-40 relative`,title:`Check for updates (all skills)`,children:[B?(0,Y.jsx)(O,{className:`h-4 w-4 animate-spin`}):(0,Y.jsx)(tr,{className:`h-4 w-4`}),!B&&n.updateAvailableCount>0&&(0,Y.jsx)(`span`,{className:`absolute top-0.5 right-0.5 h-2.5 w-2.5 rounded-full bg-primary text-[8px] font-bold text-primary-foreground flex items-center justify-center`,children:n.updateAvailableCount>9?`9+`:n.updateAvailableCount})]})]}),(0,Y.jsxs)(`div`,{className:`p-2 space-y-2 border-b shrink-0`,children:[(0,Y.jsx)(`input`,{type:`text`,value:f,onChange:e=>p(e.target.value),placeholder:`Search skills…`,className:`w-full px-2 py-1.5 text-xs rounded border border-border bg-background focus:outline-none focus:ring-1 focus:ring-ring`}),(0,Y.jsx)(`div`,{className:`flex gap-1 flex-wrap`,children:[`all`,`project`,`user`,`bundled`].map(e=>{let t=e===`all`?le.length:le.filter(t=>t.source===e).length;return(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>d(e),className:Z(`px-1.5 py-0.5 text-[10px] rounded transition-colors`,u===e?`bg-primary text-primary-foreground`:`bg-muted text-muted-foreground hover:bg-accent`),children:[e===`all`?`All`:ng[e],(0,Y.jsxs)(`span`,{className:Z(`ml-1 font-medium`,u===e?`opacity-90`:`opacity-60`,t===0&&`line-through`),children:[`(`,t,`)`]})]},e)})})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:s?(0,Y.jsx)(`div`,{className:`p-4 text-xs text-muted-foreground text-center`,children:`Loading…`}):le.length===0?(0,Y.jsx)(`div`,{className:`p-4 text-xs text-muted-foreground text-center`,children:a.length===0?`No skills installed`:`No skills match filter`}):(0,Y.jsx)(`div`,{className:`py-1`,children:[`project`,`user`,`bundled`].map(e=>{let t=ue[e];return t.length===0?null:(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`px-2 py-1 text-[10px] font-semibold text-muted-foreground uppercase tracking-wide flex items-center gap-1`,children:[(0,Y.jsx)(rg,{source:e}),(0,Y.jsx)(`span`,{className:`ml-auto opacity-60`,children:t.length})]}),t.map(e=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>ce(e),className:Z(`w-full text-left px-2 py-1.5 text-xs transition-colors`,de===e.name?`bg-primary/10 text-primary`:`hover:bg-accent/50 text-foreground`),children:[(0,Y.jsxs)(`div`,{className:`font-medium truncate flex items-center gap-1`,children:[(0,Y.jsx)($e,{className:`h-3 w-3 shrink-0`}),e.name]}),(0,Y.jsx)(`div`,{className:`text-[10px] text-muted-foreground truncate mt-0.5`,children:e.trigger||e.description?.slice(0,50)||`No description`})]},e.name))]},e)})})}),h&&(0,Y.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/40`,onClick:e=>{e.target===e.currentTarget&&g(!1)},children:(0,Y.jsxs)(`div`,{className:`bg-background rounded-lg border shadow-xl w-[420px] max-w-[90vw]`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(c,{className:`h-4 w-4 text-primary`}),(0,Y.jsx)(`span`,{className:`font-semibold text-sm`,children:`Install Skill`})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>g(!1),className:`p-1 rounded hover:bg-accent text-muted-foreground cursor-pointer`,children:`✕`})]}),(0,Y.jsxs)(`div`,{className:`p-4 space-y-3`,children:[(0,Y.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Enter a GitHub repository reference (`,(0,Y.jsx)(`span`,{className:`font-mono text-[10px]`,children:`owner/repo`}),`) or full URL.`]}),(0,Y.jsx)(`input`,{type:`text`,value:_,onChange:e=>{v(e.target.value),w(null),E(null)},onKeyDown:e=>{e.key===`Enter`&&!x&&ie()},placeholder:`e.g. wrongstack/skill-name or https://github.com/owner/repo`,className:`w-full px-3 py-2 text-xs rounded border border-border bg-background focus:outline-none focus:ring-1 focus:ring-ring`,autoFocus:!0}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`label`,{className:`text-xs text-muted-foreground`,children:`Install scope:`}),(0,Y.jsxs)(`div`,{className:`flex rounded border border-border overflow-hidden`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>b(!1),className:Z(`px-2 py-1 text-[10px] transition-colors`,y?`bg-background hover:bg-accent`:`bg-primary text-primary-foreground`),children:`Project`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>b(!0),className:Z(`px-2 py-1 text-[10px] transition-colors border-l border-border`,y?`bg-primary text-primary-foreground`:`bg-background hover:bg-accent`),children:`Global`})]})]}),C&&(0,Y.jsx)(`p`,{className:`text-xs text-destructive bg-destructive/10 rounded px-2 py-1`,children:C}),T&&(0,Y.jsx)(`p`,{className:`text-xs text-emerald-600 dark:text-emerald-400 bg-emerald-500/10 rounded px-2 py-1`,children:T})]}),(0,Y.jsxs)(`div`,{className:`flex justify-end gap-2 p-4 border-t bg-muted/20`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>g(!1),className:`px-3 py-1.5 text-xs rounded border border-border hover:bg-accent transition-colors`,children:T?`Close`:`Cancel`}),!T&&(0,Y.jsxs)(`button`,{type:`button`,onClick:ie,disabled:x||!_.trim(),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors`,children:[x&&(0,Y.jsx)(O,{className:`h-3 w-3 animate-spin`}),`Install`]})]})]})}),D&&(0,Y.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/40`,onClick:e=>{e.target===e.currentTarget&&k(!1)},children:(0,Y.jsxs)(`div`,{className:`bg-background rounded-lg border shadow-xl w-[480px] max-w-[90vw]`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(On,{className:`h-4 w-4 text-primary`}),(0,Y.jsx)(`span`,{className:`font-semibold text-sm`,children:`Create Skill`})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>k(!1),className:`p-1 rounded hover:bg-accent text-muted-foreground cursor-pointer`,children:`✕`})]}),(0,Y.jsxs)(`div`,{className:`p-4 space-y-3`,children:[(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Scaffold a new skill. The first line is the trigger; additional lines form the description.`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`label`,{className:`block text-xs font-medium mb-1`,children:[`Name `,(0,Y.jsx)(`span`,{className:`text-destructive`,children:`*`})]}),(0,Y.jsx)(`input`,{type:`text`,value:A,onChange:e=>{j(e.target.value.trim().toLowerCase().replace(/\s+/g,`-`).replace(/[^a-z0-9-]/g,``)),z(null),te(null)},placeholder:`e.g. my-new-skill`,className:`w-full px-3 py-2 text-xs rounded border border-border bg-background focus:outline-none focus:ring-1 focus:ring-ring font-mono`,autoFocus:!0})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`label`,{className:`block text-xs font-medium mb-1`,children:[`Description / Trigger `,(0,Y.jsx)(`span`,{className:`text-destructive`,children:`*`})]}),(0,Y.jsx)(`textarea`,{value:M,onChange:e=>{N(e.target.value),z(null),te(null)},onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&!I&&ae()},placeholder:`Use this skill when <trigger situation>.
140
+ Triggers: user says "keyword", "another".`,rows:4,className:`w-full px-3 py-2 text-xs rounded border border-border bg-background focus:outline-none focus:ring-1 focus:ring-ring resize-y`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`label`,{className:`text-xs text-muted-foreground`,children:`Save in:`}),(0,Y.jsxs)(`div`,{className:`flex rounded border border-border overflow-hidden`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>F(`project`),className:Z(`px-2 py-1 text-[10px] transition-colors`,P===`project`?`bg-primary text-primary-foreground`:`bg-background hover:bg-accent`),children:`Project`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>F(`global`),className:Z(`px-2 py-1 text-[10px] transition-colors border-l border-border`,P===`global`?`bg-primary text-primary-foreground`:`bg-background hover:bg-accent`),children:`Global`})]})]}),R&&(0,Y.jsx)(`p`,{className:`text-xs text-destructive bg-destructive/10 rounded px-2 py-1`,children:R}),ee&&(0,Y.jsx)(`p`,{className:`text-xs text-emerald-600 dark:text-emerald-400 bg-emerald-500/10 rounded px-2 py-1`,children:ee})]}),(0,Y.jsxs)(`div`,{className:`flex justify-end gap-2 p-4 border-t bg-muted/20`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>k(!1),className:`px-3 py-1.5 text-xs rounded border border-border hover:bg-accent transition-colors`,children:ee?`Close`:`Cancel`}),!ee&&(0,Y.jsxs)(`button`,{type:`button`,onClick:ae,disabled:I||!A.trim()||!M.trim(),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors`,children:[I&&(0,Y.jsx)(O,{className:`h-3 w-3 animate-spin`}),`Create Skill`]})]})]})})]})}var ag=[`web`,`react-native`,`flutter`,`swiftui`,`compose`],og=[`bg`,`surface`,`primary`,`accent`,`fg`,`border`];function sg({tokens:e,label:t}){let n=og.filter(t=>e[t]);return n.length===0?null:(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:`text-[9px] uppercase tracking-wide text-muted-foreground w-7`,children:t}),(0,Y.jsx)(`div`,{className:`flex gap-0.5`,children:n.map(t=>(0,Y.jsx)(`div`,{className:`w-4 h-4 rounded-sm border border-black/10 dark:border-white/10`,style:{backgroundColor:e[t]},title:`${t}: ${e[t]}`},t))})]})}function cg({className:e}){let{client:t}=Vs(),n=J(e=>e.setCurrentView),[r,i]=(0,U.useState)([]),[a,o]=(0,U.useState)(null),[s,c]=(0,U.useState)(!0),[l,u]=(0,U.useState)(`web`),[d,f]=(0,U.useState)(null);(0,U.useEffect)(()=>{if(!t)return;let e=e=>{let t=e.payload;i(t?.kits??[]),o(t?.activeKit??null),c(!1)},n=e=>{let t=e.payload;f(null),t?.ok&&t.kit&&o(t.kit)};return t.on(`design.list`,e),t.on(`design.use`,n),t.send({type:`design.list`}),()=>{t.off(`design.list`,e),t.off(`design.use`,n)}},[t]);let p=(0,U.useCallback)(e=>{t&&(f(e),t.send({type:`design.use`,payload:{kit:e,stack:l}}))},[t,l]),m=(0,U.useMemo)(()=>[...r].sort((e,t)=>e.name.localeCompare(t.name)),[r]);return(0,Y.jsxs)(`div`,{className:Z(`flex flex-col h-full`,e),children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2 border-b border-border/50`,children:[(0,Y.jsx)(jr,{className:`w-4 h-4 text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground flex-1`,children:`Pick a kit — the agent will adhere to it.`}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>n(`design-gallery`),className:`inline-flex items-center gap-1 text-[11px] px-1.5 py-0.5 rounded border border-border/60 hover:bg-muted`,title:`Open live preview gallery`,children:[(0,Y.jsx)(Ze,{className:`w-3 h-3`}),` Gallery`]}),(0,Y.jsx)(`select`,{value:l,onChange:e=>u(e.target.value),className:`text-[11px] bg-transparent border border-border/60 rounded px-1 py-0.5`,title:`Target stack`,children:ag.map(e=>(0,Y.jsx)(`option`,{value:e,children:e},e))})]}),(0,Y.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-2 space-y-2`,children:[s&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground p-3`,children:[(0,Y.jsx)(O,{className:`w-4 h-4 animate-spin`}),` Loading kits…`]}),!s&&m.length===0&&(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground p-3`,children:`No design kits found.`}),m.map(e=>{let t=a===e.id;return(0,Y.jsxs)(`div`,{className:Z(`rounded-lg border p-3 transition-colors`,t?`border-primary/60 bg-primary/5`:`border-border/60 hover:border-border`),children:[(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(`h3`,{className:`text-sm font-semibold truncate`,children:e.name}),t&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 text-[9px] font-semibold uppercase text-primary`,children:[(0,Y.jsx)(jn,{className:`w-3 h-3`}),` Active`]})]}),(0,Y.jsx)(`p`,{className:`text-[11px] text-muted-foreground leading-snug mt-0.5`,children:e.aesthetic})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>p(e.id),disabled:d===e.id,className:Z(`shrink-0 text-[11px] px-2 py-1 rounded font-medium`,t?`bg-primary/10 text-primary`:`bg-primary text-primary-foreground hover:opacity-90`),children:d===e.id?`…`:t?`Reapply`:`Use`})]}),(0,Y.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,Y.jsx)(sg,{tokens:e.light,label:`Light`}),(0,Y.jsx)(sg,{tokens:e.dark,label:`Dark`})]}),e.bestFor&&(0,Y.jsxs)(`p`,{className:`text-[10px] text-muted-foreground mt-2 leading-snug`,children:[(0,Y.jsx)(`span`,{className:`font-medium`,children:`Best for:`}),` `,e.bestFor]}),(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-1.5`,children:e.stacks.map(e=>(0,Y.jsx)(`span`,{className:`text-[9px] px-1 py-0.5 rounded bg-muted text-muted-foreground`,children:e},e))})]},e.id)})]})]})}var lg=e=>e?e.replace(/^wstack\/ap\//,``):`(detached)`,ug=new Set([`allocating`,`active`,`committing`,`merging`]),dg={active:`text-amber-500`,committing:`text-cyan-500`,merging:`text-blue-500`,merged:`text-emerald-500`,"needs-review":`text-fuchsia-500`,failed:`text-rose-500`,orphan:`text-zinc-400`};function fg(){let{client:e}=Vs(),t=Di(e=>e.worktrees),n=Di(e=>e.orphans),i=Di(e=>e.baseBranch),a=Di(e=>e.canClean),o=Di(e=>e.cleanResult),s=Di(e=>e.mergeResult),c=Di(e=>e.diffByDir),[l,u]=(0,U.useState)(null),[d,f]=(0,U.useState)(null),p=(0,U.useMemo)(()=>e?e.send.bind(e):void 0,[e]);(0,U.useEffect)(()=>{p?.({type:`worktree.scan`})},[p]),(0,U.useEffect)(()=>{u(null)},[s,o]);let m=(0,U.useMemo)(()=>{let e=new Set(t.map(e=>e.branch)),r=t.map(e=>({branch:e.branch,dir:e.dir,status:e.status,baseBranch:e.baseBranch,insertions:e.insertions,deletions:e.deletions,files:e.files,owner:e.ownerLabel,live:ug.has(e.status)}));for(let t of n)t.branch&&e.has(t.branch)||r.push({branch:t.branch,dir:t.dir,status:`orphan`,insertions:0,deletions:0,files:0,live:!1});return r},[t,n]),h=(e,t)=>{e&&p?.({type:`shell.open`,payload:{path:e,target:t}})},g=e=>{e&&(p?.({type:`worktree.diff`,payload:{dir:e}}),f(t=>t===e?null:e))},_=async e=>{e&&await el({title:`Merge ${lg(e)} into ${i||`base`}?`,message:`Squash-merges this branch onto the base branch. Aborts cleanly if it conflicts.`,confirmLabel:`Merge`})&&(u(e),p?.({type:`worktree.merge`,payload:{branch:e}}))},v=async e=>{await el({title:`Remove ${lg(e.branch)}?`,message:`Force-removes the worktree checkout and deletes its branch. Un-merged work is discarded.`,confirmLabel:`Remove`,danger:!0})&&(u(e.branch??``),p?.({type:`worktree.remove`,payload:{dir:e.dir,branch:e.branch}}))};return(0,Y.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2 px-3 py-2`,children:[(0,Y.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[m.length,` worktree`,m.length===1?``:`s`,i?` · base ${i}`:``]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[n.length>0&&(0,Y.jsxs)(`button`,{type:`button`,disabled:!a,onClick:()=>p?.({type:`worktree.cleanup`}),title:a?`Remove all orphaned worktrees`:`A run is live — stop it first`,className:`inline-flex items-center gap-1 rounded bg-amber-600/90 px-1.5 py-0.5 text-[11px] font-medium text-white hover:bg-amber-700 disabled:opacity-50`,children:[(0,Y.jsx)(Ce,{className:`h-3 w-3`}),` Clean orphans`]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>p?.({type:`worktree.scan`}),title:`Rescan`,className:`rounded p-1 text-muted-foreground hover:bg-muted hover:text-foreground`,children:(0,Y.jsx)(tr,{className:`h-3.5 w-3.5`})})]})]}),o&&(0,Y.jsx)(mg,{ok:o.ok,children:o.ok?`Removed ${o.removed} worktree(s).`:o.reason??`Failed`}),s&&(0,Y.jsx)(mg,{ok:s.ok,children:s.ok?`Merged ${lg(s.branch)} into base.`:s.conflict?`Conflict merging ${lg(s.branch)}: ${(s.conflictFiles??[]).join(`, `)||`see git`}`:`Merge failed: ${s.reason??`unknown`}`}),(0,Y.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-2 pb-3`,children:m.length===0?(0,Y.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-2 text-center text-xs text-muted-foreground`,children:[(0,Y.jsx)(sr,{className:`h-8 w-8 opacity-30`}),(0,Y.jsx)(`p`,{children:`No worktrees.`}),(0,Y.jsx)(`p`,{className:`max-w-[200px]`,children:`SDD / AutoPhase runs create isolated worktrees here. Orphans from crashed runs show up too.`})]}):m.map((e,t)=>{let n=l===(e.branch??``),i=e.dir?c[e.dir]:void 0;return(0,Y.jsxs)(`div`,{className:`mb-1.5 rounded-md border border-border bg-card/60 px-2.5 py-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(sr,{className:Z(`h-3.5 w-3.5 shrink-0`,dg[e.status]??`text-muted-foreground`)}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-xs text-foreground`,title:e.branch,children:lg(e.branch)}),(0,Y.jsx)(`span`,{className:Z(`shrink-0 text-[10px] uppercase`,dg[e.status]??`text-muted-foreground`),children:e.status})]}),(0,Y.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-2 pl-5 text-[10px] text-muted-foreground`,children:[e.owner&&(0,Y.jsx)(`span`,{className:`truncate`,children:e.owner}),(e.insertions>0||e.deletions>0)&&(0,Y.jsxs)(`span`,{className:`shrink-0`,children:[(0,Y.jsxs)(`span`,{className:`text-emerald-500`,children:[`+`,e.insertions]}),` `,(0,Y.jsxs)(`span`,{className:`text-rose-500`,children:[`−`,e.deletions]}),` · `,e.files,`f`]})]}),(0,Y.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-0.5 pl-5`,children:[(0,Y.jsx)(pg,{title:`Open in terminal`,disabled:!e.dir,onClick:()=>h(e.dir,`terminal`),children:(0,Y.jsx)(hn,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(pg,{title:`Open folder`,disabled:!e.dir,onClick:()=>h(e.dir,`file-manager`),children:(0,Y.jsx)(Pt,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(pg,{title:`View changes`,disabled:!e.dir,onClick:()=>g(e.dir),children:(0,Y.jsx)(We,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(pg,{title:`Merge to base`,disabled:e.live||!e.branch,onClick:()=>_(e.branch),children:n?(0,Y.jsx)(O,{className:`h-3.5 w-3.5 animate-spin`}):(0,Y.jsx)(r,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(pg,{title:`Remove / discard`,danger:!0,disabled:e.live,onClick:()=>v(e),children:(0,Y.jsx)(yn,{className:`h-3.5 w-3.5`})}),e.live&&(0,Y.jsx)(`span`,{className:`ml-1 text-[10px] text-amber-500`,children:`live`})]}),d===e.dir&&i!==void 0&&(0,Y.jsx)(`div`,{className:`mt-1.5 ml-5 rounded bg-muted/50 p-1.5 text-[10px]`,children:i===null||i.files.length===0?(0,Y.jsxs)(`span`,{className:`text-muted-foreground`,children:[`No uncommitted changes`,i&&i.commits>0?` · ${i.commits} commit(s) ahead`:``,`.`]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`mb-1 text-muted-foreground`,children:[i.commits>0?`${i.commits} commit(s) ahead · `:``,(0,Y.jsxs)(`span`,{className:`text-emerald-500`,children:[`+`,i.insertions]}),` `,(0,Y.jsxs)(`span`,{className:`text-rose-500`,children:[`−`,i.deletions]})]}),i.files.slice(0,12).map(e=>(0,Y.jsxs)(`div`,{className:`truncate font-mono`,children:[(0,Y.jsxs)(`span`,{className:`text-emerald-500`,children:[`+`,e.insertions]}),` `,(0,Y.jsxs)(`span`,{className:`text-rose-500`,children:[`−`,e.deletions]}),` `,e.path]},e.path)),i.files.length>12&&(0,Y.jsxs)(`div`,{className:`text-muted-foreground`,children:[`…`,i.files.length-12,` more`]})]})})]},`${e.branch??e.dir??t}`)})})]})}function pg({title:e,onClick:t,disabled:n,danger:r,children:i}){return(0,Y.jsx)(`button`,{type:`button`,title:e,disabled:n,onClick:t,className:Z(`rounded p-1 text-muted-foreground hover:bg-muted disabled:cursor-not-allowed disabled:opacity-30`,r?`hover:text-rose-500`:`hover:text-foreground`),children:i})}function mg({ok:e,children:t}){return(0,Y.jsxs)(`div`,{className:Z(`flex items-start gap-1.5 border-y px-3 py-1.5 text-[11px]`,e?`border-emerald-500/30 bg-emerald-500/5 text-emerald-600 dark:text-emerald-300`:`border-amber-500/30 bg-amber-500/5 text-amber-600 dark:text-amber-300`),children:[e?(0,Y.jsx)(V,{className:`mt-0.5 h-3.5 w-3.5 shrink-0`}):(0,Y.jsx)(E,{className:`mt-0.5 h-3.5 w-3.5 shrink-0`}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1`,children:t}),!e&&(0,Y.jsx)(N,{className:`mt-0.5 h-3 w-3 shrink-0 opacity-40`})]})}function hg({label:e,checked:t,onChange:n}){return(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>n(!t),className:`flex w-full items-center justify-between px-2 py-1.5 rounded text-xs hover:bg-accent/50 transition-colors`,children:[(0,Y.jsx)(`span`,{className:`text-foreground`,children:e}),(0,Y.jsx)(`span`,{className:Z(`relative inline-flex h-4 w-7 shrink-0 items-center rounded-full transition-colors`,t?`bg-primary`:`bg-muted`),children:(0,Y.jsx)(`span`,{className:Z(`inline-block h-3 w-3 transform rounded-full bg-background transition-transform`,t?`translate-x-3.5`:`translate-x-0.5`)})})]})}var gg=[{value:`dots`,label:`Dots`},{value:`lines`,label:`Lines`},{value:`cross`,label:`Cross`},{value:`none`,label:`None`}];function _g(){let{showHud:e,showLegend:t,showMinimap:n,showControls:r,animateEdges:i,background:a,setShowHud:o,setShowLegend:s,setShowMinimap:c,setShowControls:l,setAnimateEdges:u,setBackground:d}=Ea(),{clientCounts:f,currentSession:p,totalAgents:m,activeAgents:h}=ga(),g=f.tui+f.webui+f.repl;return(0,Y.jsxs)(`div`,{className:`flex flex-col h-full overflow-y-auto p-3 gap-4`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wide mb-2`,children:`Live`}),(0,Y.jsxs)(`div`,{className:`space-y-1.5 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,Y.jsx)(At,{className:`h-3.5 w-3.5`}),` Clients`]}),(0,Y.jsx)(`span`,{className:`font-mono`,children:g})]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,Y.jsx)(In,{className:`h-3.5 w-3.5`}),` Agents`]}),(0,Y.jsxs)(`span`,{className:`font-mono`,children:[h,(0,Y.jsxs)(`span`,{className:`text-muted-foreground`,children:[` / `,m]})]})]}),p.model&&(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,Y.jsx)(k,{className:`h-3.5 w-3.5`}),` Model`]}),(0,Y.jsx)(`span`,{className:`font-mono truncate max-w-[140px]`,title:p.model,children:p.model.split(`/`).pop()})]}),p.mode&&(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,Y.jsx)(Yt,{className:`h-3.5 w-3.5`}),` Mode`]}),(0,Y.jsx)(`span`,{className:`font-mono uppercase text-[10px]`,children:p.mode})]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5 text-muted-foreground`,children:[(0,Y.jsx)(Dt,{className:`h-3.5 w-3.5`}),` Tool calls`]}),(0,Y.jsx)(`span`,{className:`font-mono`,children:(e=>e?.toLocaleString()??`0`)(p.toolCalls)})]})]})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wide mb-1`,children:`Display`}),(0,Y.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,Y.jsx)(hg,{label:`Stats HUD`,checked:e,onChange:o}),(0,Y.jsx)(hg,{label:`Legends`,checked:t,onChange:s}),(0,Y.jsx)(hg,{label:`Minimap`,checked:n,onChange:c}),(0,Y.jsx)(hg,{label:`Zoom controls`,checked:r,onChange:l}),(0,Y.jsx)(hg,{label:`Animate wires`,checked:i,onChange:u})]})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wide mb-1.5 px-2`,children:`Background`}),(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-1 px-2`,children:gg.map(e=>(0,Y.jsx)(`button`,{type:`button`,onClick:()=>d(e.value),className:Z(`px-2 py-1 text-[10px] rounded transition-colors`,a===e.value?`bg-primary text-primary-foreground`:`bg-muted text-muted-foreground hover:bg-accent`),children:e.label},e.value))})]})]})}var vg={chat:`Session`,agents:`Agents`,history:`History`,files:`Files`,changes:`Changes`,projects:`Projects`,mailbox:`Mailbox`,skills:`Skills`,design:`Design Studio`,worktrees:`Worktrees`,officemap:`Office Map`};function yg(){let e=J(e=>e.activeActivity),t=J(e=>e.setSidebarOpen),n=J(e=>e.sidebarWidth),r=J(e=>e.setSidebarWidth),i=K(e=>e.wsConnected),{client:a}=Vs();return(0,U.useEffect)(()=>{if(e!==`files`||!i)return;ea.getState().setTreeLoading(!0);let t=q.getState().cwd;a?.send({type:`files.tree`,payload:t?{path:t}:{}})},[e,i,a]),(0,Y.jsxs)(`aside`,{style:{width:`${n}px`},className:`relative border-r bg-card flex flex-col shrink-0 overflow-hidden animate-slide-in`,children:[(0,Y.jsx)(`div`,{onMouseDown:e=>{e.preventDefault();let t=e.clientX,i=n,a=e=>r(i+(e.clientX-t)),o=()=>{window.removeEventListener(`mousemove`,a),window.removeEventListener(`mouseup`,o),document.body.style.cursor=``,document.body.style.userSelect=``};window.addEventListener(`mousemove`,a),window.addEventListener(`mouseup`,o),document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`},onDoubleClick:()=>r(304),className:`group/handle absolute top-0 right-0 h-full w-2 cursor-col-resize z-10 flex items-center justify-end`,title:`Drag to resize · double-click to reset`,children:(0,Y.jsx)(`div`,{className:`h-full w-px bg-border group-hover/handle:bg-primary/60 group-hover/handle:w-0.5 transition-all`})}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2.5 border-b shrink-0`,children:[(0,Y.jsx)(`span`,{className:`text-xs font-semibold tracking-tight text-muted-foreground uppercase`,children:vg[e]}),(0,Y.jsx)($,{variant:`ghost`,size:`icon`,className:`h-6 w-6`,onClick:()=>t(!1),title:`Collapse panel (Ctrl+\\)`,children:(0,Y.jsx)(gr,{className:`h-3.5 w-3.5`})})]}),(0,Y.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden`,children:[e===`chat`&&(0,Y.jsx)(tg,{}),e===`agents`&&(0,Y.jsx)(zh,{}),e===`history`&&(0,Y.jsx)(qh,{}),e===`files`&&(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:(0,Y.jsx)(Dh,{})}),e===`changes`&&(0,Y.jsx)(Uh,{}),e===`projects`&&(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto p-3`,children:(0,Y.jsx)(jh,{})}),e===`mailbox`&&(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto p-3`,children:(0,Y.jsx)(Ah,{})}),e===`skills`&&(0,Y.jsx)(`div`,{className:`flex-1 overflow-hidden`,children:(0,Y.jsx)(ig,{className:`h-full`})}),e===`design`&&(0,Y.jsx)(`div`,{className:`flex-1 overflow-hidden`,children:(0,Y.jsx)(cg,{className:`h-full`})}),e===`worktrees`&&(0,Y.jsx)(`div`,{className:`flex-1 overflow-hidden`,children:(0,Y.jsx)(fg,{})}),e===`officemap`&&(0,Y.jsx)(`div`,{className:`flex-1 overflow-hidden`,children:(0,Y.jsx)(_g,{})})]})]})}function bg(e){let t=e.match(/^(.+?)\/SKILL(?:\.save)?\.md$/);return t?t[1]:null}function xg({source:e}){let t=e===`project`?`project`:e===`user`?`user`:`bundled`;return(0,Y.jsx)(`span`,{className:Z(`inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-semibold uppercase tracking-wide`,t===`project`&&`bg-emerald-100 text-emerald-700 dark:bg-emerald-950 dark:text-emerald-400`,t===`user`&&`bg-violet-100 text-violet-700 dark:bg-violet-950 dark:text-violet-400`,t===`bundled`&&`bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-400`),children:{project:`Project`,user:`Global`,bundled:`Bundled`}[t]})}function Sg({className:e}){let{client:t}=Vs(),n=J(e=>e.skillsState),r=J(e=>e.setSkillsState),a=J(e=>e.setCurrentView),o=n.selectedSkill,s=n.navHistory,l=n.historyIndex,[u,d]=(0,U.useState)(null),[f,p]=(0,U.useState)(!1),[m,h]=(0,U.useState)(null),[g,_]=(0,U.useState)(!1),[v,y]=(0,U.useState)(``),[b,x]=(0,U.useState)(!1),[S,C]=(0,U.useState)(null),[w,T]=(0,U.useState)(!1),[E,D]=(0,U.useState)(null),[k,A]=(0,U.useState)(!1),j=(0,U.useRef)(``),[M,N]=(0,U.useState)(!1),[P,F]=(0,U.useState)(null),[I,L]=(0,U.useState)(!1),[R,z]=(0,U.useState)(null),[ee,te]=(0,U.useState)(!1),[ne,re]=(0,U.useState)([]),B=(0,U.useRef)(n);B.current=n;let V=(0,U.useRef)(!1),ie=(0,U.useMemo)(()=>v?{lines:v.split(`
141
+ `).length,words:v.trim()?v.trim().split(/\s+/).length:0,chars:v.length}:{lines:0,words:0,chars:0},[v]),ae=(0,U.useMemo)(()=>{if(!v)return null;let e=5*1024*1024,t=new Blob([v]).size;return t>=e?{level:`critical`,used:t,limit:e}:t>=4194304?{level:`warn`,used:t,limit:e}:null},[v]);(0,U.useEffect)(()=>{if(!E)return;let e=setTimeout(()=>D(null),2e3);return()=>clearTimeout(e)},[E]),(0,U.useEffect)(()=>{if(!g||!o)return;let e=setInterval(()=>{v&&v!==j.current&&(j.current=v,localStorage.setItem(`skills_draft_${o.name}`,JSON.stringify({content:v,savedAt:Date.now()})),D(Date.now()))},5e3);return()=>clearInterval(e)},[g,v,o]),(0,U.useEffect)(()=>{if(!o||!g)return;let e=localStorage.getItem(`skills_draft_${o.name}`);if(e)try{let{content:t}=JSON.parse(e);t&&t!==v&&t!==j.current&&(y(t),j.current=t,A(!0))}catch{}},[o?.name,g]),(0,U.useEffect)(()=>{if(!t||!o)return;p(!0),d(null),h(null);let e=setTimeout(()=>{p(!1),h(`Request timed out. Please try again.`)},1e4),n=t=>{clearTimeout(e);let n=t;n.payload.error?h(n.payload.error):n.payload.name&&d(n.payload),p(!1)},i=e=>{let n=e;N(!1);let i=B.current;if(n.payload.success){let e={...i.knownRefs};for(let t of n.payload.updated??[])e[t.name]=t.newRef;r({...i,knownRefs:e,updateAvailableCount:0}),F({updated:n.payload.updated??[],unchanged:n.payload.unchanged??[],errors:n.payload.errors??[]}),t.send({type:`skills.list`})}else F({updated:[],unchanged:[],errors:[{name:``,error:n.payload.error??`Update failed`}]})},a=e=>{let t=e;t.payload.skills&&re(t.payload.skills)};return t.on(`skills.content`,n),t.on(`skills.updated`,i),t.on(`skills.list`,a),t.send({type:`skills.content`,payload:{name:o.name,source:o.source}}),()=>{clearTimeout(e),t.off(`skills.content`,n),t.off(`skills.updated`,i),t.off(`skills.list`,a)}},[t,o?.name,o?.source]),(0,U.useEffect)(()=>{g&&(_(!1),y(``),C(null))},[o?.name]);let oe=(0,U.useCallback)(e=>ne.find(t=>t.name.toLowerCase()===e.toLowerCase()),[ne]),se=(0,U.useCallback)(e=>{let t=oe(e);if(t){V.current=!1;let e=s.slice(0,l+1);e.push(t),r({...B.current,selectedSkill:t,navHistory:e,historyIndex:e.length-1}),_(!1),y(``),F(null)}},[oe,s,l,r]),ce=(0,U.useCallback)(()=>{if(l<=0)return;V.current=!0;let e=l-1,t=s[e];r({...B.current,selectedSkill:t,historyIndex:e}),_(!1),y(``),F(null)},[l,s,r]),le=(0,U.useCallback)(()=>{if(l>=s.length-1)return;V.current=!0;let e=l+1,t=s[e];r({...B.current,selectedSkill:t,historyIndex:e}),_(!1),y(``),F(null)},[l,s,r]),ue=(0,U.useCallback)(()=>{a(`chat`)},[a]),fe=(0,U.useCallback)(()=>{u&&(y(u.body),j.current=u.body,A(!1),C(null),_(!0),T(!1))},[u]),pe=(0,U.useCallback)(()=>{_(!1),y(``),C(null),T(!1),A(!1),o&&localStorage.removeItem(`skills_draft_${o.name}`)},[o]),me=(0,U.useCallback)(()=>{!o||!u||(A(!1),y(u.body),j.current=u.body,o&&localStorage.removeItem(`skills_draft_${o.name}`))},[o,u]),he=(0,U.useCallback)(()=>{if(!t||!o||!v.trim())return;x(!0),C(null);let e=n=>{let r=n;x(!1),r.payload.success?(j.current=``,localStorage.removeItem(`skills_draft_${o.name}`),A(!1),_(!1),t.send({type:`skills.content`,payload:{name:o.name,source:o.source}}),t.send({type:`skills.list`})):C(r.payload.error??`Save failed`),t.off(`skills.edited`,e)};t.on(`skills.edited`,e),t.editSkill(o.name,v)},[t,o,v]),ge=(0,U.useCallback)(()=>{!t||!o||(N(!0),F(null),t.checkForUpdates(o.name,o.source===`user`))},[t,o]),_e=(0,U.useCallback)(()=>{o?.sourceUrl&&navigator.clipboard.writeText(o.sourceUrl).then(()=>{L(!0),setTimeout(()=>L(!1),2e3)})},[o]),ve=(0,U.useCallback)(()=>{if(!u?.body)return;let e=new Blob([u.body],{type:`text/markdown`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${u.name.replace(/\//g,`_`)}-SKILL.md`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)},[u]),ye=(0,U.useCallback)(async e=>{if(!t||!e)return;te(!0);let n=e=>{let r=e;te(!1),r.payload.success?(z(null),t.send({type:`skills.list`}),ue()):C(r.payload.error??`Uninstall failed`),t.off(`skills.uninstalled`,n)};t.on(`skills.uninstalled`,n),t.uninstallSkill(e.name,e.source===`user`)},[t,ue]);return o?(0,Y.jsxs)(`div`,{className:Z(`flex flex-col h-full overflow-hidden bg-background`,e),children:[(0,Y.jsxs)(`div`,{className:`px-4 py-3 border-b bg-card shrink-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)($e,{className:`h-4 w-4 text-primary shrink-0`}),(0,Y.jsx)(`h1`,{className:`text-base font-semibold truncate`,children:o.name}),o.version&&(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`v`,o.version]}),(0,Y.jsx)(xg,{source:o.source})]}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1 line-clamp-2`,children:o.description||o.trigger}),o.sourceUrl&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 mt-2`,children:[(0,Y.jsxs)(`a`,{href:`https://${o.sourceUrl.replace(`github:`,``)}`,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors cursor-pointer`,title:`Open source repo`,children:[(0,Y.jsx)(Ae,{className:`h-3 w-3 shrink-0`}),(0,Y.jsx)(`span`,{className:`truncate font-mono`,children:o.sourceUrl})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:_e,className:`flex items-center shrink-0 text-muted-foreground hover:text-foreground transition-colors cursor-pointer`,title:`Copy source URL`,children:I?(0,Y.jsx)(jn,{className:`h-3 w-3 text-green-500`}):(0,Y.jsx)(de,{className:`h-3 w-3`})})]}),o.scope.length>0&&(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-2`,children:o.scope.map(e=>(0,Y.jsx)(`span`,{className:`px-1.5 py-0.5 text-[10px] rounded bg-muted text-muted-foreground`,children:e},e))}),P&&(0,Y.jsxs)(`div`,{className:`mt-2 text-xs space-y-1`,children:[P.updated.length>0&&(0,Y.jsxs)(`div`,{className:`text-green-600`,children:[`↑ Updated: `,P.updated.map(e=>`${e.name} (${e.oldRef} → ${e.newRef})`).join(`, `)]}),P.unchanged.length>0&&(0,Y.jsxs)(`div`,{className:`text-muted-foreground`,children:[`— Up to date: `,P.unchanged.join(`, `)]}),P.errors.length>0&&(0,Y.jsxs)(`div`,{className:`text-destructive`,children:[`✗ `,P.errors.map(e=>`${e.name?`${e.name}: `:``}${e.error}`).join(`; `)]})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 ml-auto shrink-0`,children:[o.source!==`bundled`&&o.sourceUrl&&(0,Y.jsx)(`button`,{type:`button`,onClick:ge,disabled:M,className:`flex items-center gap-1 px-2 py-1.5 text-xs rounded text-muted-foreground hover:text-foreground hover:bg-accent transition-colors cursor-pointer disabled:opacity-50`,title:`Check for updates`,children:M?(0,Y.jsx)(O,{className:`h-3.5 w-3.5 animate-spin`}):(0,Y.jsx)(tr,{className:`h-3.5 w-3.5`})}),o.source!==`bundled`&&!g&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`button`,{type:`button`,onClick:ve,className:`flex items-center gap-1 px-2 py-1.5 text-xs rounded text-muted-foreground hover:text-foreground hover:bg-accent transition-colors cursor-pointer`,title:`Export skill as .md`,children:(0,Y.jsx)(c,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(`button`,{type:`button`,onClick:fe,className:`flex items-center gap-1 px-2 py-1.5 text-xs rounded text-muted-foreground hover:text-foreground hover:bg-accent transition-colors cursor-pointer`,title:`Edit skill`,children:(0,Y.jsx)(Hn,{className:`h-3.5 w-3.5`})})]}),o.source!==`bundled`&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>z(o),className:`flex items-center gap-1 px-2 py-1.5 text-xs rounded text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors cursor-pointer`,title:`Uninstall skill`,children:(0,Y.jsx)(yn,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(`button`,{type:`button`,onClick:ue,className:`p-1.5 rounded hover:bg-accent text-muted-foreground cursor-pointer`,title:`Close and go to chat`,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]})]}),s.length>1&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 mt-2`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:ce,disabled:l<=0,className:Z(`p-1 rounded transition-colors`,l<=0?`text-muted-foreground/40 cursor-not-allowed`:`hover:bg-accent text-muted-foreground cursor-pointer`),title:`Go back`,children:(0,Y.jsx)(Vt,{className:`h-4 w-4`})}),(0,Y.jsx)(`button`,{type:`button`,onClick:le,disabled:l>=s.length-1,className:Z(`p-1 rounded transition-colors`,l>=s.length-1?`text-muted-foreground/40 cursor-not-allowed`:`hover:bg-accent text-muted-foreground cursor-pointer`),title:`Go forward`,children:(0,Y.jsx)(i,{className:`h-4 w-4`})}),(0,Y.jsx)(`div`,{className:`flex items-center gap-0.5 overflow-x-auto text-xs`,children:s.map((e,t)=>(0,Y.jsxs)(`span`,{className:`flex items-center shrink-0`,children:[t>0&&(0,Y.jsx)(i,{className:`h-3 w-3 text-muted-foreground/40 mx-0.5 shrink-0`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{t<l&&(V.current=!0,r({...B.current,selectedSkill:e,historyIndex:t}),_(!1),y(``),F(null))},className:Z(`hover:text-primary cursor-pointer transition-colors`,t===l?`text-primary font-medium`:`text-muted-foreground`),children:e.name})]},e.name+t))})]})]}),u&&(u.relatedFiles.length>0||u.references.length>0)&&(0,Y.jsxs)(`div`,{className:`px-4 py-2 border-b bg-muted/30 shrink-0 space-y-2`,children:[u.relatedFiles.length>0&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground`,children:[(0,Y.jsx)(Pt,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{className:`font-medium uppercase tracking-wide`,children:`Related Files`})]}),u.relatedFiles.map(e=>{let t=bg(e);return t&&oe(t)?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>se(t),className:`inline-flex items-center gap-1 px-1.5 py-0.5 text-[10px] rounded bg-background border border-border hover:border-primary hover:text-primary transition-colors cursor-pointer`,title:`Go to ${t}`,children:[(0,Y.jsx)(Lt,{className:`h-2.5 w-2.5`}),e]},e):(0,Y.jsx)(`span`,{className:`px-1.5 py-0.5 text-[10px] rounded bg-background border border-border text-muted-foreground`,children:e},e)})]}),u.references.length>0&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground`,children:[(0,Y.jsx)(On,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{className:`font-medium uppercase tracking-wide`,children:`References`})]}),u.references.map(e=>{let t=bg(e)??e.replace(/\.md$/,``);return oe(t)?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>se(t),className:`inline-flex items-center gap-1 px-1.5 py-0.5 text-[10px] rounded bg-primary/5 border border-primary/20 text-primary hover:bg-primary/10 hover:border-primary/30 transition-colors cursor-pointer`,title:`Go to ${t}`,children:[(0,Y.jsx)(Lt,{className:`h-2.5 w-2.5`}),t]},e):(0,Y.jsx)(`span`,{className:`px-1.5 py-0.5 text-[10px] rounded bg-muted text-muted-foreground`,children:t},e)})]})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:f?(0,Y.jsxs)(`div`,{className:`p-8 text-center text-muted-foreground`,children:[(0,Y.jsx)(O,{className:`h-6 w-6 animate-spin mx-auto mb-2`}),(0,Y.jsx)(`p`,{children:`Loading skill content…`})]}):g?(0,Y.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,Y.jsxs)(`div`,{className:`px-4 py-2 border-b shrink-0 flex items-center justify-between gap-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`Editing `,(0,Y.jsx)(`span`,{className:`font-medium text-foreground`,children:o.name})]}),(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground tabular-nums`,children:[ie.lines,` line`,ie.lines===1?``:`s`,` · `,ie.words,` word`,ie.words===1?``:`s`,` · `,ie.chars,` char`,ie.chars===1?``:`s`]}),ae&&(0,Y.jsxs)(`span`,{className:`text-xs tabular-nums ${ae.level===`critical`?`text-red-500 font-medium`:`text-amber-500`}`,children:[`⚠ `,(ae.used/(1024*1024)).toFixed(1),`\xA0MB / `,(ae.limit/(1024*1024)).toFixed(0),`\xA0MB`]}),E&&(0,Y.jsx)(`span`,{className:`text-xs text-green-500 animate-pulse`,children:`Draft saved`}),k&&(0,Y.jsx)(`span`,{className:`text-xs text-amber-500 animate-pulse`,children:`Draft restored`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[S&&(0,Y.jsx)(`span`,{className:`text-xs text-destructive`,children:S}),k&&(0,Y.jsx)(`button`,{type:`button`,onClick:me,className:`px-2 py-1 text-[10px] rounded border border-amber-500/50 text-amber-600 dark:text-amber-400 hover:bg-amber-500/10 transition-colors cursor-pointer`,children:`Discard draft`}),(0,Y.jsx)(`button`,{type:`button`,onClick:pe,className:`px-2 py-1 text-xs rounded border border-border hover:bg-accent transition-colors cursor-pointer`,children:`Cancel`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>T(e=>!e),title:w?`Hide preview`:`Split view`,className:`px-2 py-1 text-xs rounded border transition-colors cursor-pointer ${w?`border-primary bg-primary/10 text-primary`:`border-border hover:bg-accent text-muted-foreground`}`,children:(0,Y.jsx)(Qt,{className:`h-3 w-3 inline`})}),(0,Y.jsx)(`button`,{type:`button`,onClick:he,disabled:b||!v.trim(),className:`px-3 py-1 text-xs rounded bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50 transition-colors cursor-pointer`,children:b?(0,Y.jsx)(O,{className:`h-3 w-3 animate-spin inline`}):`Save`})]})]}),w?(0,Y.jsxs)(`div`,{className:`flex flex-1 min-h-0 gap-0.5`,children:[(0,Y.jsx)(`div`,{className:`flex-1 min-w-0 flex flex-col min-h-0`,children:(0,Y.jsx)(Jn,{value:v,onChange:e=>y(e.target.value??``),language:`markdown`,className:`flex-1`,style:{fontSize:12,backgroundColor:`transparent`,minHeight:0},placeholder:`Skill content (markdown)...`})}),(0,Y.jsx)(`div`,{className:`w-px bg-border flex-shrink-0`}),(0,Y.jsx)(`div`,{className:`flex-1 min-w-0 overflow-y-auto p-4 prose prose-sm dark:prose-invert max-w-none`,children:(0,Y.jsx)(fn,{rehypePlugins:[gn],components:Uu,children:v})})]}):(0,Y.jsx)(Jn,{value:v,onChange:e=>y(e.target.value??``),language:`markdown`,className:`flex-1`,style:{fontSize:12,backgroundColor:`transparent`,minHeight:0},placeholder:`Skill content (markdown)...`})]}):u?(0,Y.jsx)(`div`,{className:`p-6 prose prose-sm dark:prose-invert max-w-none`,children:(0,Y.jsx)(fn,{rehypePlugins:[gn],components:Uu,children:u.body})}):m?(0,Y.jsxs)(`div`,{className:`p-8 text-center`,children:[(0,Y.jsx)(`p`,{className:`text-destructive mb-2`,children:`Failed to load skill content`}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:m}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{t&&o&&(p(!0),h(null),t.send({type:`skills.content`,payload:{name:o.name,source:o.source}}))},className:`mt-4 px-3 py-1.5 text-xs rounded border border-border hover:bg-accent transition-colors`,children:`Retry`})]}):(0,Y.jsx)(`div`,{className:`p-8 text-center text-muted-foreground`,children:`No skill content available`})}),R&&(0,Y.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/40`,onClick:e=>{e.target===e.currentTarget&&z(null)},children:(0,Y.jsxs)(`div`,{className:`bg-background rounded-lg border shadow-xl w-[380px] max-w-[90vw]`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(yn,{className:`h-4 w-4 text-destructive`}),(0,Y.jsx)(`span`,{className:`font-semibold text-sm`,children:`Uninstall Skill`})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>z(null),className:`p-1 rounded hover:bg-accent text-muted-foreground cursor-pointer`,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]}),(0,Y.jsxs)(`div`,{className:`p-4 space-y-2`,children:[(0,Y.jsxs)(`p`,{className:`text-sm`,children:[`Uninstall `,(0,Y.jsx)(`span`,{className:`font-semibold`,children:R.name}),`?`]}),(0,Y.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`This will remove the skill from`,` `,(0,Y.jsx)(`span`,{className:`font-mono text-[10px]`,children:R.source===`user`?`~/.wrongstack/skills`:`.wrongstack/skills`}),` `,`and cannot be undone.`]})]}),(0,Y.jsxs)(`div`,{className:`flex justify-end gap-2 p-4 border-t bg-muted/20`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>z(null),disabled:ee,className:`px-3 py-1.5 text-xs rounded border border-border hover:bg-accent transition-colors disabled:opacity-50`,children:`Cancel`}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>ye(R),disabled:ee,className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded bg-destructive text-destructive-foreground hover:bg-destructive/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors`,children:[ee&&(0,Y.jsx)(O,{className:`h-3 w-3 animate-spin`}),`Uninstall`]})]})]})})]}):(0,Y.jsxs)(`div`,{className:Z(`flex-1 flex flex-col items-center justify-center text-muted-foreground p-8`,e),children:[(0,Y.jsx)(er,{className:`h-12 w-12 mb-4 opacity-20`}),(0,Y.jsx)(`p`,{className:`text-base font-medium`,children:`No skill selected`}),(0,Y.jsx)(`p`,{className:`text-sm mt-1 text-center max-w-[300px]`,children:`Select a skill from the sidebar to view its documentation`}),(0,Y.jsx)(`button`,{type:`button`,onClick:ue,className:`mt-4 px-4 py-2 text-sm rounded-md border border-border hover:bg-accent transition-colors`,children:`Go to chat`})]})}var Cg={completed:{icon:(0,Y.jsx)(V,{className:`h-3.5 w-3.5`}),label:`Completed`,text:`text-emerald-400`,ring:`border-emerald-500/40`},in_progress:{icon:(0,Y.jsx)(O,{className:`h-3.5 w-3.5 animate-spin`}),label:`Running`,text:`text-sky-400`,ring:`border-sky-500/50`},queued:{icon:(0,Y.jsx)(L,{className:`h-3.5 w-3.5`}),label:`Queued`,text:`text-amber-400`,ring:`border-amber-500/40`},blocked:{icon:(0,Y.jsx)(Ee,{className:`h-3.5 w-3.5`}),label:`Blocked`,text:`text-rose-400`,ring:`border-rose-500/30`},pending:{icon:(0,Y.jsx)(nt,{className:`h-3.5 w-3.5`}),label:`Pending`,text:`text-slate-400`,ring:`border-white/10`},review:{icon:(0,Y.jsx)(Xn,{className:`h-3.5 w-3.5`}),label:`Review`,text:`text-violet-400`,ring:`border-violet-500/40`},failed:{icon:(0,Y.jsx)(N,{className:`h-3.5 w-3.5`}),label:`Failed`,text:`text-red-400`,ring:`border-red-500/50`},cancelled:{icon:(0,Y.jsx)(xn,{className:`h-3.5 w-3.5`}),label:`Cancelled`,text:`text-slate-400`,ring:`border-slate-500/40`}},wg=[`completed`,`in_progress`,`queued`,`blocked`,`pending`,`failed`],Tg={critical:{label:`Crit`,cls:`bg-red-500/15 text-red-400`},high:{label:`High`,cls:`bg-red-500/15 text-red-400`},medium:{label:`Med`,cls:`bg-amber-500/15 text-amber-400`},low:{label:`Low`,cls:`bg-emerald-500/15 text-emerald-400`}};function Eg({columns:e,onTaskClick:t}){return e.length===0?(0,Y.jsx)(`div`,{className:`flex h-40 items-center justify-center text-sm text-slate-400`,children:`No tasks in this spec yet.`}):(0,Y.jsxs)(`div`,{className:`rounded-lg border border-white/10 bg-[#0f1115] p-4`,children:[(0,Y.jsx)(`h3`,{className:`mb-3 text-sm font-semibold text-slate-200`,children:`Dependency Graph`}),(0,Y.jsx)(`div`,{className:`mb-4 flex flex-wrap items-center gap-x-4 gap-y-1 text-xs`,children:wg.map(e=>(0,Y.jsxs)(`span`,{className:Z(`inline-flex items-center gap-1.5`,Cg[e].text),children:[Cg[e].icon,(0,Y.jsx)(`span`,{className:`text-slate-400`,children:Cg[e].label})]},e))}),(0,Y.jsx)(`div`,{className:`flex gap-3 overflow-x-auto pb-2`,children:e.map((n,r)=>(0,Y.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Y.jsxs)(`div`,{className:`w-60 shrink-0`,children:[(0,Y.jsx)(`div`,{className:`mb-2 border-b border-white/10 pb-1 text-center text-xs font-medium uppercase tracking-wider text-slate-500`,children:n.label}),(0,Y.jsx)(`div`,{className:`space-y-2`,children:n.tasks.map(e=>(0,Y.jsx)(Dg,{task:e,onClick:t},e.id))})]}),r<e.length-1&&(0,Y.jsx)(`div`,{className:`flex h-full items-center pt-8 text-slate-600`,children:(0,Y.jsx)(i,{className:`h-5 w-5`})})]},n.label))})]})}function Dg({task:e,onClick:t}){let n=Cg[e.displayStatus],r=Tg[e.priority];return(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>t?.(e.id),className:Z(`w-full rounded-md border bg-[#161a22] p-2.5 text-left transition-colors hover:border-orange-500/40`,n.ring),children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Y.jsxs)(`span`,{className:Z(`inline-flex items-center gap-1.5 text-xs font-medium`,n.text),children:[n.icon,(0,Y.jsx)(`span`,{className:`font-mono text-slate-300`,children:e.shortId})]}),(0,Y.jsx)(`span`,{className:Z(`rounded px-1.5 py-0.5 text-[10px] font-medium`,r.cls),children:r.label})]}),(0,Y.jsx)(`p`,{className:`mt-1.5 text-xs text-slate-200`,children:e.title}),e.deps.length>0&&(0,Y.jsxs)(`p`,{className:`mt-1 font-mono text-[10px] text-slate-500`,children:[`← `,e.deps.join(`, `)]}),e.agentName&&(0,Y.jsxs)(`div`,{className:Z(`mt-1.5 inline-flex items-center gap-1 rounded-full px-1.5 py-0.5 text-[10px]`,e.displayStatus===`in_progress`?`bg-sky-500/15 text-sky-400`:`bg-white/5 text-slate-400`),title:e.worktreeBranch?`worktree: ${e.worktreeBranch}`:void 0,children:[e.displayStatus===`in_progress`&&(0,Y.jsx)(O,{className:`h-3 w-3 animate-spin`}),(0,Y.jsx)(`span`,{children:e.agentName})]})]})}function Og(e){return e.columns.map(e=>({name:e.label,description:``,priority:`medium`,estimateHours:e.tasks.length,parallelizable:!1,taskTemplates:e.tasks.map(e=>({title:e.title,description:e.description,type:e.type,priority:e.priority,estimateHours:1}))}))}function kg({onClose:e}){let{client:t}=Vs(),n=Yi(e=>e.specs),r=Yi(e=>e.detail),a=Yi(e=>e.expandedSpecId),o=Yi(e=>e.setExpanded),s=J(e=>e.setCurrentView),[c,l]=(0,U.useState)(`graph`),u=(0,U.useCallback)(e=>{!r||r.specId!==e.id||(t?.send?.({type:`autophase.start`,payload:{title:e.title,phases:Og(r),autonomous:!0}}),s(`autophase`))},[r,t,s]);(0,U.useEffect)(()=>{t?.send?.({type:`specs.list`})},[t]);let d=(0,U.useCallback)(e=>{a===e.id?o(null):(o(e.id),t?.send?.({type:`specs.get`,payload:{specId:e.id}}))},[a,o,t]),f=r?.columns.flatMap(e=>e.tasks)??[],p={done:f.filter(e=>e.status===`completed`).length,running:f.filter(e=>e.status===`in_progress`).length,pending:f.filter(e=>e.status===`pending`||e.displayStatus===`queued`).length};return(0,Y.jsxs)(`div`,{className:`flex h-full flex-col bg-background`,children:[(0,Y.jsxs)(`header`,{className:`flex shrink-0 items-center justify-between border-b bg-card px-4 py-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(On,{className:`h-5 w-5 text-orange-500`}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Specifications`}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`View and manage specification-driven development`})]})]}),(0,Y.jsx)($,{variant:`ghost`,size:`icon`,onClick:e,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:n.length===0?(0,Y.jsxs)(`div`,{className:`flex h-40 items-center justify-center text-sm text-muted-foreground`,children:[`No specs found. Use `,(0,Y.jsx)(`code`,{className:`mx-1 rounded bg-muted px-1`,children:`/sdd`}),` to create one.`]}):(0,Y.jsx)(`div`,{className:`space-y-3`,children:n.map(e=>{let t=a===e.id,n=e.total>0?Math.round(e.completed/e.total*100):0;return(0,Y.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/60`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>d(e),className:`flex w-full items-start gap-3 p-4 text-left`,children:[(0,Y.jsx)(`span`,{className:`mt-1 text-muted-foreground`,children:t?(0,Y.jsx)(ar,{className:`h-4 w-4`}):(0,Y.jsx)(i,{className:`h-4 w-4`})}),(0,Y.jsx)(On,{className:`mt-0.5 h-4 w-4 text-muted-foreground`}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.displayId}),(0,Y.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 text-[10px] capitalize text-muted-foreground`,children:e.status})]}),(0,Y.jsx)(`h2`,{className:`mt-1 text-base font-semibold`,children:e.title}),(0,Y.jsxs)(`div`,{className:`mt-2 flex items-center gap-2`,children:[(0,Y.jsx)(`div`,{className:`h-2 flex-1 overflow-hidden rounded-full bg-muted`,children:(0,Y.jsx)(`div`,{className:`h-full rounded-full bg-emerald-500 transition-all`,style:{width:`${n}%`}})}),(0,Y.jsxs)(`span`,{className:`shrink-0 font-mono text-xs text-muted-foreground`,children:[e.completed,`/`,e.total]})]})]})]}),t&&(0,Y.jsxs)(`div`,{className:`border-t border-border p-4`,children:[(0,Y.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{className:`text-sm font-medium`,children:[`Tasks (`,r?.total??e.total,`)`,r&&(0,Y.jsxs)(`span`,{className:`ml-3 text-xs font-normal text-muted-foreground`,children:[(0,Y.jsxs)(`span`,{className:`text-emerald-500`,children:[p.done,` done`]}),` `,(0,Y.jsxs)(`span`,{className:`text-sky-500`,children:[p.running,` running`]}),` `,(0,Y.jsxs)(`span`,{children:[p.pending,` pending`]})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)(`button`,{type:`button`,disabled:!r||r.specId!==e.id,onClick:()=>u(e),title:`Run this spec as a live AutoPhase board`,className:`inline-flex items-center gap-1 rounded-md bg-orange-500/15 px-2.5 py-1 text-xs font-medium text-orange-500 transition-colors hover:bg-orange-500/25 disabled:opacity-40`,children:[(0,Y.jsx)(dr,{className:`h-3.5 w-3.5`}),` Run`]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 rounded-md border border-border p-0.5`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>l(`list`),className:Z(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs`,c===`list`?`bg-primary/15 text-primary`:`text-muted-foreground`),children:[(0,Y.jsx)(I,{className:`h-3.5 w-3.5`}),` List`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>l(`graph`),className:Z(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs`,c===`graph`?`bg-primary/15 text-primary`:`text-muted-foreground`),children:[(0,Y.jsx)(Er,{className:`h-3.5 w-3.5`}),` Graph`]})]})]})]}),!r||r.specId!==e.id?(0,Y.jsx)(`div`,{className:`flex h-24 items-center justify-center text-sm text-muted-foreground`,children:`Loading tasks…`}):c===`graph`?(0,Y.jsx)(Eg,{columns:r.columns}):(0,Y.jsx)(`div`,{className:`space-y-1.5`,children:f.map(e=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md border border-border bg-card px-3 py-2`,children:[(0,Y.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.shortId}),(0,Y.jsx)(`span`,{className:`flex-1 text-sm`,children:e.title}),(0,Y.jsx)(`span`,{className:`text-xs capitalize text-muted-foreground`,children:e.displayStatus.replace(`_`,` `)})]},e.id))})]})]},e.id)})})})]})}var Ag={background:`#1e1e2e`,foreground:`#cdd6f4`,cursor:`#f5e0dc`,selectionBackground:`#585b70`,black:`#45475a`,red:`#f38ba8`,green:`#a6e3a1`,yellow:`#f9e2af`,blue:`#89b4fa`,magenta:`#f5c2e7`,cyan:`#94e2d5`,white:`#bac2de`,brightBlack:`#585b70`,brightRed:`#f38ba8`,brightGreen:`#a6e3a1`,brightYellow:`#f9e2af`,brightBlue:`#89b4fa`,brightMagenta:`#f5c2e7`,brightCyan:`#94e2d5`,brightWhite:`#a6adc8`};function jg(){try{return crypto.randomUUID()}catch{return`term-${Date.now()}-${Math.floor(Math.random()*1e6)}`}}function Mg({onClose:e}){let t=(0,U.useRef)(null);return(0,U.useEffect)(()=>{let e=t.current;if(!e)return;let n=new ir({fontFamily:`"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace`,fontSize:13,cursorBlink:!0,theme:Ag,scrollback:5e3}),r=new An;n.loadAddon(r),n.open(e);try{r.fit()}catch{}let i=jg(),a=W(K.getState().wsUrl);a.send({type:`terminal.create`,payload:{id:i,cols:n.cols,rows:n.rows}});let o=a.on(`terminal.output`,e=>{e.type===`terminal.output`&&e.payload.id===i&&n.write(e.payload.data)}),s=a.on(`terminal.exit`,e=>{e.type===`terminal.exit`&&e.payload.id===i&&n.write(`\r\n\x1b[2m[process exited with code ${e.payload.exitCode}]\x1b[0m\r\n`)}),c=n.onData(e=>{a.send({type:`terminal.input`,payload:{id:i,data:e}})}),l=new ResizeObserver(()=>{try{r.fit(),a.send({type:`terminal.resize`,payload:{id:i,cols:n.cols,rows:n.rows}})}catch{}});return l.observe(e),n.focus(),()=>{o(),s(),c.dispose(),l.disconnect(),a.send({type:`terminal.close`,payload:{id:i}}),n.dispose()}},[K(e=>e.wsConnected)]),(0,Y.jsxs)(`div`,{className:`fixed bottom-0 left-0 right-0 z-40 h-[40vh] min-h-[200px] flex flex-col border-t border-border bg-[#1e1e2e] shadow-2xl`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-1.5 border-b border-border/40 bg-[#181825]`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-[#cdd6f4]`,children:[(0,Y.jsx)(Lr,{className:`h-3.5 w-3.5`}),(0,Y.jsx)(`span`,{className:`font-medium`,children:`Terminal`})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:e,title:"Close terminal (Ctrl+`)",className:`inline-flex items-center justify-center h-6 w-6 rounded text-[#a6adc8] hover:bg-white/10 transition-colors`,children:(0,Y.jsx)(H,{className:`h-4 w-4`})})]}),(0,Y.jsx)(`div`,{ref:t,className:`flex-1 overflow-hidden px-2 py-1`})]})}function Ng(){let e=Ci(e=>e.info),{client:t}=Vs(),n=(0,U.useRef)(null),r=(0,U.useCallback)(()=>{t?.getGitInfo?.()},[t]);return(0,U.useEffect)(()=>(r(),n.current=setInterval(r,3e4),()=>{n.current&&clearInterval(n.current)}),[r]),e}function Pg({sessionId:e,className:t}){let[n,r]=(0,U.useState)([]),[i,a]=(0,U.useState)(!1),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(null),[u,d]=(0,U.useState)(0),[f,p]=(0,U.useState)(!1),[m,h]=(0,U.useState)(!1),[g,_]=(0,U.useState)(``),[v,y]=(0,U.useState)(``),[b,x]=(0,U.useState)(!1),[S,C]=(0,U.useState)(``),w=W(K(e=>e.wsUrl)),T=G(e=>e.messages).filter(e=>e.role===`tool`&&e.toolResult===void 0&&!!e.toolUseId);(0,U.useEffect)(()=>{let t=[];return t.push(w.on(`collab.state`,t=>{let n=t.payload;n.sessionId===e&&r(n.participants??[])})),t.push(w.on(`collab.participant.joined`,t=>{let n=t.payload;n.sessionId===e&&r(e=>e.some(e=>e.participantId===n.participantId)?e:[...e,{participantId:n.participantId,role:n.role,joinedAt:n.joinedAt}])})),t.push(w.on(`collab.participant.left`,t=>{let n=t.payload;if(n.sessionId!==e)return;let i=n.participantId;r(e=>e.filter(e=>e.participantId!==i))})),t.push(w.on(`error`,e=>{let t=e.payload;t.phase===`collab`&&(l(t.message),a(!1))})),t.push(w.on(`collab.annotation.added`,t=>{let n=t.payload;n.sessionId===e&&(n.annotation?.resolved||d(e=>e+1))})),t.push(w.on(`collab.annotation.resolved`,t=>{t.payload.sessionId===e&&d(e=>Math.max(0,e-1))})),t.push(w.on(`collab.pause.granted`,t=>{t.payload.sessionId===e&&p(!0)})),t.push(w.on(`collab.pause.released`,t=>{t.payload.sessionId===e&&p(!1)})),()=>{for(let e of t)e()}},[w,e]);let E=(t=`observer`)=>{l(null),w.send({type:`collab.join`,payload:{sessionId:e,role:t}}),a(!0),s(t)},D=()=>{w.send({type:`collab.request_pause`,payload:{sessionId:e}})},O=()=>{w.send({type:`collab.resume`,payload:{sessionId:e}})},k=()=>{w.send({type:`collab.leave`,payload:{sessionId:e}}),a(!1),r([])},A=t=>{w.send({type:`collab.grant_control`,payload:{sessionId:e,toParticipant:t}})},j=()=>{g&&(w.send({type:`collab.inject_tool`,payload:{sessionId:e,toolUseId:g,content:v,isError:b,reason:S.trim()||`controller injection`}}),h(!1),_(``),y(``),x(!1),C(``))},M=i&&o===`controller`;return n.length===0&&!c?(0,Y.jsxs)(`div`,{className:Z(`flex items-center gap-2 px-3 py-2 rounded-md border border-dashed border-border bg-card/40`,t),children:[(0,Y.jsx)(At,{className:`w-4 h-4 text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`No live observers`}),(0,Y.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>E(`observer`),className:`inline-flex items-center gap-1 text-xs px-2 py-1 rounded bg-primary text-primary-foreground hover:bg-primary/90 transition-colors`,title:`Join as a read-only observer (Phase 1)`,children:[(0,Y.jsx)(ve,{className:`w-3 h-3`}),`observer`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>E(`annotator`),className:`inline-flex items-center gap-1 text-xs px-2 py-1 rounded border border-amber-500/40 bg-amber-500/10 text-amber-700 dark:text-amber-300 hover:bg-amber-500/20 transition-colors`,title:`Join as an annotator — leave inline notes on tool calls (Phase 2)`,children:[(0,Y.jsx)(Se,{className:`w-3 h-3`}),`annotator`]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>E(`controller`),className:`inline-flex items-center gap-1 text-xs px-2 py-1 rounded border border-rose-500/40 bg-rose-500/10 text-rose-700 dark:text-rose-300 hover:bg-rose-500/20 transition-colors`,title:`Join as a controller — can pause the agent loop (Phase 3)`,children:[(0,Y.jsx)(rn,{className:`w-3 h-3`}),`controller`]})]})]}):c?(0,Y.jsxs)(`div`,{className:Z(`flex items-center gap-2 px-3 py-2 rounded-md border border-destructive/50 bg-destructive/10`,t),role:`alert`,children:[(0,Y.jsxs)(`span`,{className:`text-xs text-destructive`,children:[`Collab: `,c]}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{l(null),a(!1)},className:`ml-auto text-xs underline text-destructive`,children:`dismiss`})]}):(0,Y.jsxs)(`div`,{className:Z(`relative flex items-center gap-2 px-3 py-2 rounded-md border border-emerald-500/40 bg-emerald-500/5`,t),children:[(0,Y.jsxs)(`span`,{className:`relative flex h-2 w-2`,"aria-label":`Live`,children:[(0,Y.jsx)(`span`,{className:`absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75 animate-ping`}),(0,Y.jsx)(`span`,{className:`relative inline-flex rounded-full h-2 w-2 bg-emerald-500`})]}),(0,Y.jsx)(At,{className:`w-4 h-4 text-emerald-700 dark:text-emerald-400`}),(0,Y.jsxs)(`span`,{className:`text-xs font-medium text-emerald-700 dark:text-emerald-300`,children:[n.length,` `,n.length===1?`observer`:`observers`]}),u>0&&(0,Y.jsxs)(`span`,{title:`${u} open annotation(s) — annotators reviewing this session`,className:`ml-2 inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded bg-amber-500/15 text-amber-700 dark:text-amber-300 border border-amber-500/30`,children:[(0,Y.jsx)(Se,{className:`w-3 h-3`}),u,` note`,u===1?``:`s`]}),f&&(0,Y.jsxs)(`span`,{title:`Agent loop is paused — a controller is reviewing`,className:`ml-2 inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded bg-rose-500/15 text-rose-700 dark:text-rose-300 border border-rose-500/40`,children:[(0,Y.jsx)(rn,{className:`w-3 h-3`}),`paused`]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 ml-2`,children:[n.slice(0,3).map(e=>(0,Y.jsxs)(`span`,{title:`Joined ${new Date(e.joinedAt).toLocaleTimeString()}`,className:`inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-700 dark:text-emerald-300`,children:[(0,Y.jsx)(We,{className:`w-3 h-3`}),e.role,M&&e.role!==`controller`&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>A(e.participantId),title:`Grant control — promote this participant to controller`,className:`ml-0.5 inline-flex items-center rounded hover:bg-emerald-500/20 transition-colors`,children:(0,Y.jsx)(Ve,{className:`w-3 h-3`})})]},e.participantId)),n.length>3&&(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[`+`,n.length-3]})]}),M&&(0,Y.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>h(e=>!e),className:`inline-flex items-center gap-1 text-xs px-2 py-1 rounded border border-sky-500/40 bg-sky-500/10 text-sky-700 dark:text-sky-300 hover:bg-sky-500/20 transition-colors`,title:`Inject a synthetic result for an in-flight tool call`,children:[(0,Y.jsx)(Oe,{className:`w-3 h-3`}),`Inject`]}),f?(0,Y.jsxs)(`button`,{type:`button`,onClick:O,className:`inline-flex items-center gap-1 text-xs px-2 py-1 rounded border border-rose-500/40 bg-rose-500/10 text-rose-700 dark:text-rose-300 hover:bg-rose-500/20 transition-colors`,title:`Resume the agent loop`,children:[(0,Y.jsx)(dr,{className:`w-3 h-3`}),`Resume`]}):(0,Y.jsxs)(`button`,{type:`button`,onClick:D,className:`inline-flex items-center gap-1 text-xs px-2 py-1 rounded border border-amber-500/40 bg-amber-500/10 text-amber-700 dark:text-amber-300 hover:bg-amber-500/20 transition-colors`,title:`Pause the agent before the next tool call`,children:[(0,Y.jsx)(rn,{className:`w-3 h-3`}),`Pause agent`]})]}),i&&o!==`controller`&&(0,Y.jsxs)(`button`,{type:`button`,onClick:k,className:`ml-auto inline-flex items-center gap-1 text-xs px-2 py-1 rounded border border-border hover:bg-muted transition-colors`,title:`Leave the observer session`,children:[(0,Y.jsx)(me,{className:`w-3 h-3`}),`Leave`]}),M&&m&&(0,Y.jsxs)(`div`,{className:`absolute top-full left-0 right-0 mt-1 z-50 flex flex-col gap-2 p-3 rounded-md border border-sky-500/40 bg-card shadow-lg text-xs`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(Oe,{className:`w-3.5 h-3.5 text-sky-600 dark:text-sky-400`}),(0,Y.jsx)(`span`,{className:`font-medium`,children:`Inject tool result`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>h(!1),className:`ml-auto text-muted-foreground hover:text-foreground`,children:`close`})]}),(0,Y.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`Target tool_use id`}),(0,Y.jsx)(`input`,{list:`collab-inject-tools`,value:g,onChange:e=>_(e.target.value),placeholder:`pick an in-flight call or type a tool_use id`,className:`px-2 py-1 rounded border border-border bg-background font-mono`}),(0,Y.jsx)(`datalist`,{id:`collab-inject-tools`,children:T.map(e=>{let t=e.toolInput===void 0?``:` — ${JSON.stringify(e.toolInput).slice(0,40)}`;return(0,Y.jsxs)(`option`,{value:e.toolUseId,children:[e.toolName??`tool`,t]},e.toolUseId)})}),T.length===0&&(0,Y.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:`No in-flight tool calls — type a tool_use id to pre-queue, or pause the agent first.`})]}),(0,Y.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`Result content`}),(0,Y.jsx)(`textarea`,{value:v,onChange:e=>y(e.target.value),rows:3,placeholder:`Synthetic tool result fed to the agent in place of running the tool`,className:`px-2 py-1 rounded border border-border bg-background font-mono`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsxs)(`label`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`input`,{type:`checkbox`,checked:b,onChange:e=>x(e.target.checked)}),(0,Y.jsx)(`span`,{children:`mark as error`})]}),(0,Y.jsx)(`input`,{type:`text`,value:S,onChange:e=>C(e.target.value),placeholder:`reason (audit log)`,className:`flex-1 px-2 py-1 rounded border border-border bg-background`})]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:j,disabled:!g,className:`self-end inline-flex items-center gap-1 text-xs px-3 py-1 rounded bg-sky-600 text-white hover:bg-sky-700 disabled:opacity-50 disabled:cursor-not-allowed transition-colors`,children:[(0,Y.jsx)(Oe,{className:`w-3 h-3`}),`Queue injection`]})]})]})}var Fg={up:(0,Y.jsx)(S,{className:`h-3.5 w-3.5 text-emerald-500`}),down:(0,Y.jsx)(we,{className:`h-3.5 w-3.5 text-red-500`}),stable:(0,Y.jsx)(Ue,{className:`h-3.5 w-3.5 text-amber-500`})},Ig={active:{color:`text-emerald-600 dark:text-emerald-400`,bg:`bg-emerald-100 dark:bg-emerald-900/40`,label:`Active`},paused:{color:`text-amber-600 dark:text-amber-400`,bg:`bg-amber-100 dark:bg-amber-900/40`,label:`Paused`},completed:{color:`text-blue-600 dark:text-blue-400`,bg:`bg-blue-100 dark:bg-blue-900/40`,label:`Done`},failed:{color:`text-red-600 dark:text-red-400`,bg:`bg-red-100 dark:bg-red-900/40`,label:`Failed`},abandoned:{color:`text-stone-600 dark:text-stone-400`,bg:`bg-stone-100 dark:bg-stone-900/40`,label:`Abandoned`}};function Lg({goal:e,className:t}){let[n,r]=(0,U.useState)(!1);if((0,U.useEffect)(()=>{let e=W();e?.send?.({type:`goal.get`});let t=setInterval(()=>{e?.send?.({type:`goal.get`})},1e4);return()=>clearInterval(t)},[]),(0,U.useEffect)(()=>{(!e||e.goalState===`completed`||e.goalState===`failed`||e.goalState===`abandoned`)&&r(!0)},[e]),!e||e.goalState===`completed`||e.goalState===`failed`||e.goalState===`abandoned`)return null;let a=Ig[e.goalState],o=e.deliverables?.filter(e=>e.status===`done`).length??0,s=e.deliverables?.length??0,c=e.journal?.slice(-5).reverse()??[],l=e.progressTrend?Fg[e.progressTrend]:null;return(0,Y.jsxs)(`div`,{className:Z(`rounded-lg border border-border bg-card/60 backdrop-blur-sm`,t),children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>r(e=>!e),className:`flex w-full items-center gap-2 px-3 py-2.5 text-left hover:bg-accent/40 rounded-t-lg transition-colors`,children:[(0,Y.jsx)(ge,{className:`h-4 w-4 text-rose-500`}),(0,Y.jsx)(`span`,{className:`text-xs font-semibold text-foreground flex-1 min-w-0 truncate`,children:`Goal`}),(0,Y.jsx)(`span`,{className:Z(`inline-flex items-center px-1.5 py-0.5 rounded-full text-[10px] font-medium shrink-0`,a.bg,a.color),children:a.label}),n?(0,Y.jsx)(i,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`}):(0,Y.jsx)(ar,{className:`h-3.5 w-3.5 text-muted-foreground shrink-0`})]}),!n&&(0,Y.jsxs)(`div`,{className:`px-3 pb-3 space-y-3 border-t pt-2`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`text-xs text-foreground leading-relaxed whitespace-pre-wrap break-words`,children:e.goal}),e.refinedGoal&&e.refinedGoal!==e.goal&&(0,Y.jsxs)(`div`,{className:`mt-1.5 p-2 rounded bg-accent/40 border border-border/50`,children:[(0,Y.jsx)(`p`,{className:`text-[10px] text-muted-foreground mb-0.5 uppercase tracking-wider font-medium`,children:`Refined`}),(0,Y.jsx)(`p`,{className:`text-xs leading-relaxed whitespace-pre-wrap break-words`,children:e.refinedGoal})]})]}),(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between text-[10px]`,children:[(0,Y.jsx)(`span`,{className:`text-muted-foreground uppercase tracking-wider font-medium`,children:`Progress`}),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 tabular-nums`,children:[l,(0,Y.jsxs)(`span`,{className:`font-medium text-foreground`,children:[e.progress,`%`]})]})]}),(0,Y.jsx)(`div`,{className:`h-1.5 bg-muted rounded-full overflow-hidden`,children:(0,Y.jsx)(`div`,{className:Z(`h-full transition-all duration-700 rounded-full`,e.progress>=80?`bg-emerald-500`:e.progress>=50?`bg-amber-500`:`bg-primary`),style:{width:`${e.progress>0?Math.max(2,e.progress):0}%`}})}),e.progressNote&&(0,Y.jsx)(`p`,{className:`text-[10px] text-muted-foreground italic`,children:e.progressNote})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-muted-foreground`,children:[(0,Y.jsx)(L,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{className:`tabular-nums font-medium`,children:e.iterations}),(0,Y.jsx)(`span`,{children:`iterations`}),e.lastStatus&&(0,Y.jsx)(`span`,{className:`text-border`,children:`·`}),e.lastStatus&&(0,Y.jsx)(`span`,{className:`truncate`,children:e.lastStatus})]}),s>0&&(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between text-[10px] text-muted-foreground uppercase tracking-wider font-medium`,children:[(0,Y.jsx)(`span`,{children:`Deliverables`}),(0,Y.jsxs)(`span`,{className:`tabular-nums`,children:[o,`/`,s]})]}),(0,Y.jsx)(`ul`,{className:`space-y-0.5`,children:e.deliverables?.map(e=>(0,Y.jsxs)(`li`,{className:`flex items-start gap-1.5 text-[11px]`,children:[e.status===`done`?(0,Y.jsx)(V,{className:`h-3 w-3 text-emerald-500 mt-0.5 shrink-0`}):(0,Y.jsx)(nt,{className:`h-3 w-3 text-muted-foreground/50 mt-0.5 shrink-0`}),(0,Y.jsx)(`span`,{className:Z(`leading-snug`,e.status===`done`?`text-muted-foreground line-through`:`text-foreground`),children:e.text})]},e.id))})]}),c.length>0&&(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(`p`,{className:`text-[10px] text-muted-foreground uppercase tracking-wider font-medium`,children:`Recent Activity`}),(0,Y.jsx)(`div`,{className:`space-y-1`,children:c.map((e,t)=>(0,Y.jsxs)(`div`,{className:`flex items-start gap-1.5 text-[10px] text-muted-foreground`,children:[(0,Y.jsxs)(`span`,{className:`font-mono tabular-nums shrink-0 text-foreground/60`,children:[`#`,e.iteration]}),(0,Y.jsx)(`span`,{className:`truncate`,children:e.task||e.status||e.progressNote||`…`})]},`${e.iteration}-${t}`))})]})]})]})}var Rg={in_progress:0,pending:1,completed:2};function zg(){let[e,t]=(0,U.useState)([]),[n,r]=(0,U.useState)(new Set),i=W(),a=(0,U.useRef)(null);(0,U.useEffect)(()=>(i.send({type:`todos.get`}),a.current=i.on(`todos.updated`,e=>{let n=e?.payload;n?.todos&&t(n.todos)}),()=>{a.current?.()}),[i]);let o=(0,U.useCallback)(e=>{i.removeTodo(e)},[i]),s=(0,U.useCallback)(e=>{if(e.status===`in_progress`)return;let t=e.status===`completed`?`pending`:`completed`;i.updateTodoStatus(e.id,t)},[i]),c=[...e].sort((e,t)=>(Rg[e.status]??9)-(Rg[t.status]??9)),l=c.filter(e=>e.status===`in_progress`),u=c.filter(e=>e.status===`pending`),d=c.filter(e=>e.status===`completed`),f=d.length>0,p=n.has(`completed`),m=e=>{r(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},h=e=>{let t=e.status===`in_progress`&&e.activeForm?e.activeForm:e.content,n=e.status===`in_progress`,r=e.status===`completed`,i=!n;return(0,Y.jsxs)(`div`,{onClick:()=>i&&s(e),className:Z(`px-3 py-1.5 flex items-start gap-2 text-[13px] group transition-colors`,i&&`cursor-pointer hover:bg-accent/40`,n?`bg-yellow-50/40 dark:bg-yellow-950/25`:r?`bg-emerald-50/20 dark:bg-emerald-950/10`:`bg-background`),role:i?`button`:void 0,"aria-label":i?`Toggle ${e.content}`:void 0,tabIndex:i?0:void 0,onKeyDown:t=>{i&&(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),s(e))},children:[(0,Y.jsx)(`span`,{className:`mt-0.5 shrink-0`,children:r?(0,Y.jsx)(V,{className:`w-3.5 h-3.5 text-emerald-500`}):n?(0,Y.jsx)(L,{className:`w-3.5 h-3.5 text-yellow-500 animate-spin`}):(0,Y.jsx)(nt,{className:Z(`w-3.5 h-3.5 transition-colors`,`text-muted-foreground/40 group-hover:text-emerald-400`)})}),(0,Y.jsx)(`span`,{className:Z(`leading-snug flex-1 min-w-0`,n?`text-yellow-800 dark:text-yellow-200 font-medium`:r?`text-muted-foreground line-through`:`text-foreground/80`),children:t}),(0,Y.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),o(e.id)},className:`shrink-0 p-0.5 rounded opacity-0 group-hover:opacity-50 hover:opacity-100 hover:bg-destructive/10 transition-all`,title:`Remove todo`,"aria-label":`Remove "${e.content}"`,children:(0,Y.jsx)(yn,{className:`w-3 h-3 text-muted-foreground`})})]},e.id)};return e.length===0?null:(0,Y.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/50 backdrop-blur-sm overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`px-3 py-1.5 flex items-center gap-2 border-b border-border/50`,children:[(0,Y.jsx)(`h2`,{className:`text-[11px] font-semibold text-foreground uppercase tracking-wider`,children:`Todos`}),(0,Y.jsxs)(`span`,{className:`tabular text-[10px] text-muted-foreground ml-auto`,children:[d.length,`/`,e.length]})]}),l.length>0&&(0,Y.jsx)(`div`,{className:`border-b border-border/30 last:border-b-0`,children:l.map(h)}),u.length>0&&(0,Y.jsx)(`div`,{className:`border-b border-border/30 last:border-b-0`,children:u.map(h)}),f&&(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>m(`completed`),className:`w-full px-3 py-1 flex items-center gap-1.5 text-[10px] text-muted-foreground hover:text-foreground transition-colors`,children:(0,Y.jsxs)(`span`,{className:`tabular`,children:[p?`▶`:`▼`,` `,d.length,` completed`]})}),!p&&d.map(h)]})]})}var Bg={pending:{icon:(0,Y.jsx)(nt,{className:`w-3.5 h-3.5`}),label:`Pending`,color:`text-muted-foreground/50`},in_progress:{icon:(0,Y.jsx)(L,{className:`w-3.5 h-3.5 animate-spin`}),label:`In Progress`,color:`text-yellow-500`},blocked:{icon:(0,Y.jsx)(rn,{className:`w-3.5 h-3.5`}),label:`Blocked`,color:`text-orange-500`},failed:{icon:(0,Y.jsx)(N,{className:`w-3.5 h-3.5`}),label:`Failed`,color:`text-red-500`},review:{icon:(0,Y.jsx)(Xn,{className:`w-3.5 h-3.5`}),label:`Review`,color:`text-blue-500`},completed:{icon:(0,Y.jsx)(V,{className:`w-3.5 h-3.5`}),label:`Done`,color:`text-emerald-500`}},Vg={critical:`text-red-600 dark:text-red-400`,high:`text-orange-600 dark:text-orange-400`,medium:`text-yellow-600 dark:text-yellow-400`,low:`text-muted-foreground`},Hg={feature:`⚡`,bugfix:`🐛`,refactor:`♻️`,docs:`📝`,test:`🧪`,chore:`🔧`};function Ug(){let[e,t]=(0,U.useState)([]),[n,r]=(0,U.useState)(new Set),i=W(),a=(0,U.useRef)(null);(0,U.useEffect)(()=>(i.getTasks(),a.current=i.on(`tasks.updated`,e=>{let n=e?.payload;n?.tasks&&t(n.tasks)}),()=>{a.current?.()}),[i]);let o=(0,U.useCallback)(e=>{r(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),s=(0,U.useCallback)((e,t)=>{i.updateTaskStatus(e,t)},[i]),c=[`in_progress`,`blocked`,`review`,`pending`,`failed`,`completed`],l=new Map;for(let t of e){let e=l.get(t.status)??[];e.push(t),l.set(t.status,e)}let u=l.get(`completed`)?.length??0;return e.length===0?null:(0,Y.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/50 backdrop-blur-sm overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`px-3 py-1.5 flex items-center gap-2 border-b border-border/50`,children:[(0,Y.jsx)(`h2`,{className:`text-[11px] font-semibold text-foreground uppercase tracking-wider`,children:`Tasks`}),(0,Y.jsxs)(`span`,{className:`tabular text-[10px] text-muted-foreground ml-auto`,children:[u,`/`,e.length]})]}),c.map(e=>{let t=l.get(e);if(!t||t.length===0)return null;let r=Bg[e],i=n.has(e);return(0,Y.jsxs)(`div`,{className:`border-b border-border/30 last:border-b-0`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>o(e),className:`w-full px-3 py-1 flex items-center gap-1.5 text-[10px] text-muted-foreground hover:text-foreground transition-colors`,children:(0,Y.jsxs)(`span`,{className:`tabular`,children:[i?`▶`:`▼`,` `,t.length,` `,r.label]})}),!i&&t.map(e=>(0,Y.jsxs)(`div`,{className:Z(`px-3 py-1.5 flex items-start gap-2 text-[13px] group`,e.status===`in_progress`?`bg-yellow-50/40 dark:bg-yellow-950/25`:``),children:[(0,Y.jsx)(`span`,{className:Z(`mt-0.5 shrink-0`,r.color),children:r.icon}),(0,Y.jsxs)(`span`,{className:`leading-snug flex-1 min-w-0`,children:[(0,Y.jsxs)(`span`,{className:Z(e.status===`completed`?`text-muted-foreground line-through`:`text-foreground/80`),children:[Hg[e.type],` `,e.title]}),e.priority!==`medium`&&(0,Y.jsx)(`span`,{className:Z(`ml-1 text-[10px]`,Vg[e.priority]),children:e.priority}),e.assignee&&(0,Y.jsxs)(`span`,{className:`ml-1 text-[10px] text-muted-foreground`,children:[`@`,e.assignee]}),e.estimateHours&&(0,Y.jsxs)(`span`,{className:`ml-1 text-[10px] text-muted-foreground`,children:[e.estimateHours,`h`]})]}),(0,Y.jsxs)(`div`,{className:`flex gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity shrink-0`,children:[e.status!==`in_progress`&&e.status!==`completed`&&(0,Y.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),s(e.id,`in_progress`)},className:`px-1.5 py-0.5 text-[9px] rounded bg-primary/15 text-primary hover:bg-primary/25 transition-colors`,title:`Start`,children:`Start`}),e.status===`in_progress`&&(0,Y.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),s(e.id,`completed`)},className:`px-1.5 py-0.5 text-[9px] rounded bg-[hsl(var(--success)/0.15)] text-[hsl(var(--success))] hover:bg-[hsl(var(--success)/0.25)] transition-colors`,title:`Complete`,children:`Done`}),e.status!==`completed`&&e.status!==`failed`&&(0,Y.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),s(e.id,`failed`)},className:`px-1.5 py-0.5 text-[9px] rounded bg-destructive/15 text-destructive hover:bg-destructive/25 transition-colors`,title:`Mark failed`,children:`Fail`})]})]},e.id))]},e)})]})}var Wg={open:{icon:(0,Y.jsx)(nt,{className:`w-3.5 h-3.5`}),label:`Open`,color:`text-muted-foreground/50`},in_progress:{icon:(0,Y.jsx)(L,{className:`w-3.5 h-3.5 animate-spin`}),label:`In Progress`,color:`text-yellow-500`},done:{icon:(0,Y.jsx)(V,{className:`w-3.5 h-3.5`}),label:`Done`,color:`text-emerald-500`}};function Gg(){let[e,t]=(0,U.useState)([]),[n,r]=(0,U.useState)(new Set),i=W(),a=(0,U.useRef)(null);(0,U.useEffect)(()=>(i.getPlan(),a.current=i.on(`plan.updated`,e=>{let n=e?.payload;n?.plan?.items&&t(n.plan.items)}),()=>{a.current?.()}),[i]);let o=(0,U.useCallback)(e=>{r(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),s=(0,U.useCallback)((e,t)=>{i.updatePlanItem(e.id,t)},[i]),c=[`in_progress`,`open`,`done`],l=new Map;for(let t of e){let e=l.get(t.status)??[];e.push(t),l.set(t.status,e)}let u=l.get(`done`)?.length??0;return e.length===0?null:(0,Y.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/50 backdrop-blur-sm overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`px-3 py-1.5 flex items-center gap-2 border-b border-border/50`,children:[(0,Y.jsx)(`h2`,{className:`text-[11px] font-semibold text-foreground uppercase tracking-wider`,children:`📋 Plan`}),(0,Y.jsxs)(`span`,{className:`tabular text-[10px] text-muted-foreground ml-auto`,children:[u,`/`,e.length]})]}),c.map(e=>{let t=l.get(e);if(!t||t.length===0)return null;let r=Wg[e],i=n.has(e);return(0,Y.jsxs)(`div`,{className:`border-b border-border/30 last:border-b-0`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>o(e),className:`w-full px-3 py-1 flex items-center gap-1.5 text-[10px] text-muted-foreground hover:text-foreground transition-colors`,children:(0,Y.jsxs)(`span`,{className:`tabular`,children:[i?`▶`:`▼`,` `,t.length,` `,r.label]})}),!i&&t.map(e=>(0,Y.jsxs)(`div`,{className:Z(`px-3 py-1.5 flex items-start gap-2 text-[13px] group`,e.status===`in_progress`?`bg-yellow-50/40 dark:bg-yellow-950/25`:``),children:[(0,Y.jsx)(`span`,{className:Z(`mt-0.5 shrink-0`,r.color),children:r.icon}),(0,Y.jsx)(`span`,{className:Z(`leading-snug flex-1 min-w-0`,e.status===`done`?`text-muted-foreground line-through`:`text-foreground/80`),children:e.title}),(0,Y.jsxs)(`div`,{className:`flex gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity shrink-0`,children:[e.status===`open`&&(0,Y.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),s(e,`in_progress`)},className:`px-1.5 py-0.5 text-[9px] rounded bg-primary/15 text-primary hover:bg-primary/25 transition-colors`,title:`Start`,children:`Start`}),e.status!==`done`&&(0,Y.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),s(e,`done`)},className:`px-1.5 py-0.5 text-[9px] rounded bg-[hsl(var(--success)/0.15)] text-[hsl(var(--success))] hover:bg-[hsl(var(--success)/0.25)] transition-colors`,title:`Mark done`,children:`Done`}),e.status===`done`&&(0,Y.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),s(e,`open`)},className:`px-1.5 py-0.5 text-[9px] rounded bg-muted text-muted-foreground hover:bg-accent hover:text-foreground transition-colors`,title:`Reopen`,children:`Reopen`})]})]},e.id))]},e)})]})}var Kg=[{id:`todos`,label:`Todos`,icon:`✅`},{id:`tasks`,label:`Tasks`,icon:`📋`},{id:`plan`,label:`Plan`,icon:`🗺️`}];function qg(){let e=J(e=>e.workDashboardTab),t=J(e=>e.setWorkDashboardTab);return(0,Y.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/50 backdrop-blur-sm overflow-hidden`,children:[(0,Y.jsx)(`div`,{className:`flex border-b border-border/50 bg-muted/30`,children:Kg.map(n=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>t(n.id),className:Z(`flex items-center gap-1 px-3 py-1.5 text-[11px] font-medium transition-colors`,`border-b-2 -mb-px`,e===n.id?`border-primary text-foreground bg-background`:`border-transparent text-muted-foreground hover:text-foreground hover:bg-accent/30`),children:[(0,Y.jsx)(`span`,{className:`text-xs`,children:n.icon}),n.label]},n.id))}),(0,Y.jsx)(`div`,{className:Z(e===`todos`?`block`:`hidden`),children:(0,Y.jsx)(zg,{})}),(0,Y.jsx)(`div`,{className:Z(e===`tasks`?`block`:`hidden`),children:(0,Y.jsx)(Ug,{})}),(0,Y.jsx)(`div`,{className:Z(e===`plan`?`block`:`hidden`),children:(0,Y.jsx)(Gg,{})})]})}var Jg={autophase:{active:`bg-primary/15 border-primary/40 text-primary`,idle:`text-primary/80 hover:bg-primary/10`},goal:{active:`bg-rose-500/15 border-rose-500/40 text-rose-600 dark:text-rose-400`,idle:`text-rose-600/80 dark:text-rose-400/80 hover:bg-rose-500/10`},fleet:{active:`bg-emerald-500/15 border-emerald-500/40 text-emerald-600 dark:text-emerald-400`,idle:`text-emerald-600/80 dark:text-emerald-400/80 hover:bg-emerald-500/10`},work:{active:`bg-amber-500/15 border-amber-500/40 text-amber-600 dark:text-amber-400`,idle:`text-amber-600/80 dark:text-amber-400/80 hover:bg-amber-500/10`},worktrees:{active:`bg-violet-500/15 border-violet-500/40 text-violet-600 dark:text-violet-400`,idle:`text-violet-600/80 dark:text-violet-400/80 hover:bg-violet-500/10`},collab:{active:`bg-cyan-500/15 border-cyan-500/40 text-cyan-600 dark:text-cyan-400`,idle:`text-muted-foreground hover:bg-muted/60`}},Yg={autophase:`AutoPhase`,goal:`Goal`,fleet:`Fleet`,work:`Work`,worktrees:`Worktrees`,collab:`Collab`},Xg=[`autophase`,`goal`,`fleet`,`work`,`worktrees`,`collab`];function Zg({section:e,icon:t,label:n,value:r,active:i,pulse:a,onClick:o}){let s=Jg[e];return(0,Y.jsxs)(`button`,{type:`button`,onClick:o,title:i?`Collapse ${n}`:`Expand ${n}`,className:Z(`flex items-center gap-2 h-7 px-2.5 rounded-full border text-xs font-medium shrink-0 transition-colors`,i?s.active:Z(`border-border/40`,s.idle)),children:[(0,Y.jsx)(`span`,{className:Z(a&&`animate-pulse`),children:t}),n,r&&(0,Y.jsx)(`span`,{className:`tabular-nums opacity-80`,children:r})]})}function Qg({sessionId:e}){let t=J(e=>e.dockSection),n=J(e=>e.toggleDockSection),r=J(e=>e.setCurrentView),i=J(e=>e.hiddenChips),a=J(e=>e.toggleChipHidden),o=J(e=>e.dockCustomizeOpen),s=J(e=>e.setDockCustomizeOpen),c=qi(e=>e.goal),l=Ji(e=>e.phases.length),u=Ji(e=>e.overallPercent),d=Ji(e=>e.activePhaseId),f=Di(e=>e.worktrees),p=Di(e=>e.baseBranch),m=q(e=>e.todos),h=X(e=>e.agents),g=Ng(),[_,v]=(0,U.useState)(`graph`),y=h.size,b=(0,U.useMemo)(()=>Array.from(h.values()).filter(e=>e.status===`running`).length,[h]),x=m.filter(e=>e.status===`completed`).length,S=m.some(e=>e.status===`in_progress`),C=l>0,w=(0,U.useMemo)(()=>new Set(i),[i]),T={autophase:C,goal:c!==null,fleet:y>0,work:!0,worktrees:f.length>0,collab:!0},E={autophase:T.autophase&&!w.has(`autophase`),goal:T.goal&&!w.has(`goal`),fleet:T.fleet&&!w.has(`fleet`),work:T.work&&!w.has(`work`),worktrees:T.worktrees&&!w.has(`worktrees`),collab:T.collab&&!w.has(`collab`)},D=t&&E[t]?t:null;return(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 rounded-lg border border-border/50 bg-muted/20 px-2 py-1.5`,children:[E.autophase&&(0,Y.jsx)(Zg,{section:`autophase`,icon:(0,Y.jsx)(ln,{className:`h-3 w-3`}),label:`AutoPhase`,value:`${u}%`,active:!1,pulse:d!=null,onClick:()=>r(`autophase`)}),E.goal&&c&&(0,Y.jsx)(Zg,{section:`goal`,icon:(0,Y.jsx)(ge,{className:`h-3 w-3`}),label:`Goal`,value:`${c.progress}%`,active:D===`goal`,pulse:c.goalState===`active`,onClick:()=>n(`goal`)}),E.fleet&&(0,Y.jsx)(Zg,{section:`fleet`,icon:(0,Y.jsx)(In,{className:`h-3 w-3`}),label:`Fleet`,value:`${b}/${y}`,active:D===`fleet`,pulse:b>0,onClick:()=>n(`fleet`)}),(0,Y.jsx)(Zg,{section:`work`,icon:(0,Y.jsx)(ee,{className:`h-3 w-3`}),label:`Work`,value:m.length>0?`${x}/${m.length}`:void 0,active:D===`work`,pulse:S,onClick:()=>n(`work`)}),E.worktrees&&(0,Y.jsx)(Zg,{section:`worktrees`,icon:(0,Y.jsx)(sr,{className:`h-3 w-3`}),label:`Worktrees`,value:String(f.length),active:D===`worktrees`,onClick:()=>n(`worktrees`)}),g&&(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{},className:`inline-flex items-center gap-1.5 h-7 px-2.5 rounded-full border border-border/40 text-xs font-mono hover:bg-muted/60 transition-colors`,children:[(0,Y.jsx)(sr,{className:`h-3 w-3 shrink-0 text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`font-semibold text-foreground`,children:g.branch}),g.ahead>0&&(0,Y.jsxs)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,title:`${g.ahead} ahead`,children:[`↑`,g.ahead]}),g.behind>0&&(0,Y.jsxs)(`span`,{className:`text-amber-600 dark:text-amber-400`,title:`${g.behind} behind`,children:[`↓`,g.behind]}),g.added>0&&(0,Y.jsxs)(`span`,{className:`text-emerald-600 dark:text-emerald-400`,title:`${g.added} lines added`,children:[`+`,g.added]}),g.deleted>0&&(0,Y.jsxs)(`span`,{className:`text-red-600 dark:text-red-400`,title:`${g.deleted} lines deleted`,children:[`-`,g.deleted]}),g.untracked>0&&(0,Y.jsxs)(`span`,{className:`text-muted-foreground`,title:`${g.untracked} untracked files`,children:[g.untracked,`?`]})]}),(0,Y.jsx)(Zg,{section:`collab`,icon:(0,Y.jsx)(At,{className:`h-3 w-3`}),label:`Collab`,active:D===`collab`,onClick:()=>n(`collab`)}),(0,Y.jsxs)(Gs,{open:o,onOpenChange:s,children:[(0,Y.jsx)(Ks,{asChild:!0,children:(0,Y.jsx)(`button`,{type:`button`,title:`Customize dock chips`,className:`ml-auto inline-flex items-center justify-center h-7 w-7 rounded-full border border-border/40 text-muted-foreground hover:bg-muted/60 transition-colors shrink-0`,children:(0,Y.jsx)(R,{className:`h-3 w-3`})})}),(0,Y.jsxs)(Xs,{align:`end`,className:`w-44`,children:[(0,Y.jsx)(ec,{children:`Dock chips`}),(0,Y.jsx)(tc,{}),Xg.map(e=>(0,Y.jsx)(Qs,{checked:!w.has(e),onCheckedChange:()=>a(e),onSelect:e=>e.preventDefault(),children:Yg[e]},e))]})]})]}),D&&(0,Y.jsx)(`div`,{className:`border-t border-border/40 pt-2`}),D===`goal`&&(0,Y.jsx)(Lg,{goal:c}),D===`fleet`&&(0,Y.jsx)(Fh,{}),D===`worktrees`&&(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(`div`,{className:`flex items-center gap-2`,children:[`graph`,`lanes`].map(e=>(0,Y.jsx)(`button`,{type:`button`,onClick:()=>v(e),className:Z(`text-xs px-2.5 py-0.5 rounded-full border transition-colors capitalize`,_===e?`bg-primary/10 border-primary/30 text-primary`:`border-border text-muted-foreground hover:text-foreground`),children:e},e))}),(0,Y.jsx)(yl,{}),_===`graph`?(0,Y.jsx)(pl,{worktrees:f,baseBranch:p||`HEAD`}):(0,Y.jsx)(_l,{worktrees:f,baseBranch:p||`HEAD`})]}),(0,Y.jsx)(`div`,{className:Z(D===`work`?`block`:`hidden`),id:`panel-work`,children:(0,Y.jsx)(qg,{})}),(0,Y.jsx)(`div`,{className:Z(D===`collab`?`block`:`hidden`),children:(0,Y.jsx)(Pg,{sessionId:e})})]})}function $g(){let{theme:e}=Ws(),{currentView:t,sidebarOpen:n,toggleSidebar:r,setSearchOpen:i,setSidebarOpen:a,setCurrentView:o,setInspectorTab:s,toggleInspector:c,fleetMonitorOpen:l,agentsMonitorOpen:u,setFleetMonitorOpen:d,setAgentsMonitorOpen:f,processMonitorOpen:p,setProcessMonitorOpen:m,queuePanelOpen:h,setQueuePanelOpen:g,terminalOpen:_,setTerminalOpen:v}=J(),y=G(e=>e.isLoading),b=q(e=>e.iteration),x=q(e=>e.projectName),S=q(e=>e.session?.title),C=q(e=>e.session?.id),w=J(e=>C?e.sessionNicknames[C]:void 0);return(0,U.useEffect)(()=>{typeof window>`u`||(window.location.pathname===`/debug`?o(`debug`):window.location.pathname===`/analytics`?o(`analytics`):window.location.pathname===`/refresh-debug`&&o(`refresh-debug`))},[o]),(0,U.useEffect)(()=>{let e=e=>{let{filePath:t}=e.detail,n=W(K.getState().wsUrl);n&&n.send({type:`files.read`,payload:{filePath:t}})};return window.addEventListener(`wrongstack:open-file`,e),()=>window.removeEventListener(`wrongstack:open-file`,e)},[]),(0,U.useEffect)(()=>{let e=e=>{let{filePath:t}=e.detail,n=ea.getState().openFiles.find(e=>e.path===t);if(!n)return;let r=W(K.getState().wsUrl);r&&r.send({type:`files.write`,payload:{filePath:t,content:n.content}})};return window.addEventListener(`wrongstack:save-file`,e),()=>window.removeEventListener(`wrongstack:save-file`,e)},[]),(0,U.useEffect)(()=>{if(typeof window>`u`)return;let e=window.matchMedia(`(max-width: 768px)`),t=()=>{e.matches&&J.getState().sidebarOpen&&a(!1)};return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[a]),Bs(),(0,U.useEffect)(()=>{let e=()=>{try{let e=[q,G,J,K];for(let t of e){let e=t.persist;e&&typeof e.flush==`function`&&e.flush()}}catch{}};return window.addEventListener(`pagehide`,e),window.addEventListener(`beforeunload`,e),()=>{window.removeEventListener(`pagehide`,e),window.removeEventListener(`beforeunload`,e)}},[]),(0,U.useEffect)(()=>{if(typeof window>`u`||window.location.pathname===`/refresh-debug`)return;let e=J.getState().currentView;(e===`debug`||e===`analytics`||e===`design-gallery`||e===`setup`)&&J.getState().setCurrentView(`chat`)},[]),(0,U.useEffect)(()=>{let e=[];if(y){let t=b?` iter ${b.index}${b.max?`/${b.max}`:``}`:``;e.push(`●${t}`)}let t=w?.trim()||S?.trim(),n=x?.trim();t&&e.push(t),n&&e.push(n),e.length===0&&e.push(n||`AI Agent`);let r=e.filter(Boolean).join(` · `);return document.title=r,()=>{document.title=x||`AI Agent`}},[y,b,x,S,w]),(0,U.useEffect)(()=>{let e=e=>{let t=e.target,n=t?.tagName?.toLowerCase(),a=n===`input`||n===`textarea`||t?.isContentEditable,l=e.ctrlKey||e.metaKey;if(l&&e.key===`\\`){e.preventDefault(),r();return}if(l&&e.key==="`"){e.preventDefault(),J.getState().toggleTerminal();return}if(l&&!e.shiftKey&&!e.altKey&&e.key>=`1`&&e.key<=String(sc.length)){let t=sc[Number(e.key)-1];if(t){e.preventDefault(),oc(t);return}}if(!a&&!l&&!e.altKey&&/^F([1-9]|1[0-2])$/.test(e.key)){e.preventDefault();let t=J.getState(),n=W(K.getState().wsUrl),r=Number(e.key.slice(1));switch(t.setDockCustomizeOpen(!1),r){case 1:oc(`projects`);return;case 2:t.setFleetMonitorOpen(!0);return;case 3:t.setAgentsMonitorOpen(!0);return;case 4:t.setCurrentView(`chat`),t.setDockSection(`worktrees`);return;case 5:n?.getPlan?.(),t.setCurrentView(`chat`),t.setDockSection(`work`),t.setWorkDashboardTab(`plan`);return;case 6:t.setCurrentView(`chat`),t.setDockSection(`work`),t.setWorkDashboardTab(`todos`);return;case 7:t.setQueuePanelOpen(!0);return;case 8:t.setProcessMonitorOpen(!0);return;case 9:n?.send?.({type:`goal.get`}),t.setCurrentView(`chat`),t.setDockSection(`goal`);return;case 10:n?.listSessions?.(50),t.setCurrentView(`sessions`);return;case 11:t.setSidebarOpen(!0),t.selectActivity(`officemap`),t.setCurrentView(`officemap`);return;case 12:t.setCurrentView(`chat`),t.setDockSection(`work`),t.setDockCustomizeOpen(!0);return}}if(l&&e.key.toLowerCase()===`f`){e.preventDefault(),i(!0);return}if(l&&e.key.toLowerCase()===`/`){e.preventDefault(),document.querySelector(`textarea`)?.focus();return}if(l&&!a&&(e.key.toLowerCase()===`l`?(e.preventDefault(),Zr.dropAll(),G.getState().clearMessages(),W(K.getState().wsUrl)?.clearContext?.()):e.key.toLowerCase()===`n`?(e.preventDefault(),W(K.getState().wsUrl)?.newSession?.(),J.getState().setCurrentView(`chat`)):e.key.toLowerCase()===`e`&&(e.preventDefault(),Kl())),l&&e.shiftKey&&e.key.toLowerCase()===`d`&&(e.preventDefault(),J.getState().toggleCompactMode()),l&&e.shiftKey&&e.key.toLowerCase()===`m`){e.preventDefault();let t=J.getState();t.inspectorOpen&&t.inspectorTab===`fleet`?c():(s(`fleet`),t.inspectorOpen||c())}if(l&&e.shiftKey&&e.key.toLowerCase()===`a`){e.preventDefault();let t=J.getState();t.inspectorOpen&&t.inspectorTab===`agents`?c():(s(`agents`),t.inspectorOpen||c())}if(l&&e.shiftKey&&e.key.toLowerCase()===`g`&&(e.preventDefault(),o(`debug`)),e.key===`Escape`&&!l&&J.getState().inspectorOpen&&J.getState().setInspectorOpen(!1),!a&&!l&&!e.altKey){let t=Array.from(document.querySelectorAll(`[data-message-id]`));if(t.length===0)return;let n=document.querySelector(`[data-message-id][data-focused="true"]`),r=n?t.indexOf(n):-1,i=e=>{for(let e of t)e.removeAttribute(`data-focused`);e.setAttribute(`data-focused`,`true`),e.scrollIntoView({behavior:`smooth`,block:`center`})};if(e.key===`j`||e.key===`ArrowDown`){let n=t[Math.min(t.length-1,Math.max(0,r+1))];n&&(e.preventDefault(),i(n));return}if(e.key===`k`||e.key===`ArrowUp`){let n=t[Math.max(0,r<=0?0:r-1)];n&&(e.preventDefault(),i(n));return}if(e.key===`g`&&!e.shiftKey){e.preventDefault(),i(Rr(t[0]));return}if(e.key===`G`||e.key===`g`&&e.shiftKey){e.preventDefault(),i(Rr(t[t.length-1]));return}if(e.key===`Escape`&&n){e.preventDefault(),n.removeAttribute(`data-focused`);return}if(e.key===`c`&&n){let t=n.querySelector(`.markdown-content`)?.innerText??n.innerText;t&&(navigator.clipboard?.writeText(t).catch(()=>{}),e.preventDefault());return}}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r,i]),(0,Y.jsxs)(`div`,{className:Z(`flex h-screen`,e),children:[t!==`setup`&&(0,Y.jsx)(cc,{}),n&&t!==`setup`&&(0,Y.jsx)(yg,{}),(0,Y.jsxs)(`main`,{className:`flex-1 flex flex-col overflow-hidden`,children:[t!==`setup`&&(0,Y.jsx)(Ed,{}),t===`chat`&&(0,Y.jsxs)(Y.Fragment,{children:[C&&(0,Y.jsx)(`div`,{className:`px-4 pt-2 shrink-0 max-h-[45vh] overflow-y-auto`,children:(0,Y.jsx)(Qg,{sessionId:C})}),(0,Y.jsx)(cd,{}),(0,Y.jsx)(Cf,{})]}),t===`settings`&&(0,Y.jsx)($m,{}),t===`setup`&&(0,Y.jsx)(bh,{}),t===`autophase`&&(0,Y.jsx)(bl,{onClose:()=>o(`chat`)}),t===`specs`&&(0,Y.jsx)(kg,{onClose:()=>o(`chat`)}),t===`sddboard`&&(0,Y.jsx)(nm,{onClose:()=>o(`chat`)}),t===`sddwizard`&&(0,Y.jsx)(lm,{onClose:()=>o(`chat`)}),t===`sessions`&&(0,Y.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:(0,Y.jsx)(_m,{})}),t===`debug`&&(0,Y.jsx)(Od,{}),t===`refresh-debug`&&(0,Y.jsx)(bp,{}),t===`files`&&(0,Y.jsx)(Sd,{}),t===`changes`&&(0,Y.jsx)(kl,{className:`h-full`}),t===`mailbox`&&(0,Y.jsx)(Pf,{className:`h-full`}),t===`design-gallery`&&(0,Y.jsx)(`div`,{className:`flex-1 overflow-hidden`,children:(0,Y.jsx)(Hd,{className:`h-full`})}),t===`skill`&&(0,Y.jsx)(`div`,{className:`flex-1 overflow-hidden`,children:(0,Y.jsx)(Sg,{className:`h-full`})}),t===`officemap`&&(0,Y.jsx)(`div`,{className:`flex-1 overflow-hidden`,children:(0,Y.jsx)(hp,{})}),t===`analytics`&&(0,Y.jsx)(`div`,{className:`flex-1 overflow-hidden`,children:(0,Y.jsx)(Ic,{})})]}),l&&(0,Y.jsx)(uf,{onClose:()=>d(!1)}),u&&(0,Y.jsx)(kc,{onClose:()=>f(!1)}),p&&(0,Y.jsx)(Xu,{open:p,onClose:()=>m(!1)}),h&&(0,Y.jsx)(_p,{open:h,onClose:()=>g(!1)}),_&&(0,Y.jsx)(Mg,{onClose:()=>v(!1)}),(0,Y.jsx)(Td,{}),(0,Y.jsx)(tl,{}),(0,Y.jsx)(il,{}),(0,Y.jsx)(Jl,{}),(0,Y.jsx)(Sh,{}),(0,Y.jsx)(yp,{}),(0,Y.jsx)(Ma,{})]})}function e_(){return(0,Y.jsx)(Ud,{children:(0,Y.jsx)(Us,{defaultTheme:`system`,children:(0,Y.jsx)($g,{})})})}ch(),Vr.createRoot(Rr(document.getElementById(`root`))).render((0,Y.jsx)(U.StrictMode,{children:(0,Y.jsx)(e_,{})}));