@wrongstack/webui 0.296.2 → 0.296.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AgentRosterView-CG7hiTO5.js → AgentRosterView-Bnfjs7SR.js} +1 -1
- package/dist/assets/{AnalyticsDashboard-BQH6L1S1.js → AnalyticsDashboard-Df_4y-Kx.js} +1 -1
- package/dist/assets/{AudienceMemoryPanel-DX4uLxnp.js → AudienceMemoryPanel-BCXl0qMA.js} +1 -1
- package/dist/assets/{ChangesView-B2DsGWiA.js → ChangesView-CngAYbT4.js} +1 -1
- package/dist/assets/{ChronicleDashboard-DI6fBbLJ.js → ChronicleDashboard-BTnRluuW.js} +1 -1
- package/dist/assets/{CodeEditor-CgXWP1-I.js → CodeEditor-Bb8Oyrho.js} +1 -1
- package/dist/assets/{CronJobsPanel-ByrWTFMO.js → CronJobsPanel-CUjKpoEA.js} +1 -1
- package/dist/assets/DeadCodeScanPanel-DHsw8Nn4.js +2 -0
- package/dist/assets/{DebugDashboard-C4jNeXwd.js → DebugDashboard-CF9tnDg7.js} +1 -1
- package/dist/assets/{DesignGalleryView-DR2MqDGO.js → DesignGalleryView-DDOG2RxE.js} +1 -1
- package/dist/assets/{GoalView-BsZXe4sN.js → GoalView-CAckYUC5.js} +1 -1
- package/dist/assets/{KanbanView-CjAQz5ko.js → KanbanView-BMzDV1-z.js} +1 -1
- package/dist/assets/{LazyMarkdown-BGp00cAh.js → LazyMarkdown-CaNUh8CL.js} +1 -1
- package/dist/assets/{MailboxDetailView-D2zOtsHb.js → MailboxDetailView-DQUJsig8.js} +1 -1
- package/dist/assets/{MemoryManager-C0c6SLEn.js → MemoryManager-JTZWsb0i.js} +1 -1
- package/dist/assets/{ModelPicker-HVIA8pKx.js → ModelPicker-D5XBxW8U.js} +1 -1
- package/dist/assets/{OfficeMapPanel-DtMjwPJ2.js → OfficeMapPanel-C6S89GWN.js} +1 -1
- package/dist/assets/{ProcessMonitor-Es5rkf_W.js → ProcessMonitor-DJaaQP3Q.js} +1 -1
- package/dist/assets/{QueuePanel-BO4V720k.js → QueuePanel-DBQkV_Ka.js} +1 -1
- package/dist/assets/{RefreshDebugView-CnOMdm5p.js → RefreshDebugView-BL9PikWZ.js} +1 -1
- package/dist/assets/{SageTabs-C630-UtZ.js → SageTabs-CPyvLW73.js} +2 -2
- package/dist/assets/{SddHub-BUPmZYcI.js → SddHub-CLFzMwKX.js} +1 -1
- package/dist/assets/{SessionsDashboard-_a7mqxAP.js → SessionsDashboard-B1lpqE1X.js} +1 -1
- package/dist/assets/{SetupScreen-BiOzT5PT.js → SetupScreen-M95bQ1A6.js} +1 -1
- package/dist/assets/{SkillDetailView-BucSq6E1.js → SkillDetailView-CeA6lnQh.js} +1 -1
- package/dist/assets/{SpecsView-C4BODULT.js → SpecsView-T1qjfodF.js} +1 -1
- package/dist/assets/{TechStackView-CibHS3rz.js → TechStackView-ByuNsOIe.js} +1 -1
- package/dist/assets/{TerminalPanel-AM_WVT3e.js → TerminalPanel-yTWOVqll.js} +1 -1
- package/dist/assets/{Toaster-C6a7sphP.js → Toaster-D5WTIK_V.js} +1 -1
- package/dist/assets/{i18n-CIqbHugq.js → i18n-D-JnOQZX.js} +1 -1
- package/dist/assets/{index-Dy7C2V-G.js → index-WvJRbCoi.js} +31 -30
- package/dist/assets/{progress-ring-D8StLpFh.js → progress-ring-DZ7API6e.js} +1 -1
- package/dist/assets/{roster-ws-DOgj2SAo.js → roster-ws-CVCrt_ih.js} +1 -1
- package/dist/assets/{stores-nxVpq1NP.js → stores-hEu6z1qz.js} +1 -1
- package/dist/assets/ui-store-BI3LH2q8.js +1 -0
- package/dist/assets/{useWebSocket-DLQNx26C.js → useWebSocket-DAm5zYOB.js} +2 -2
- package/dist/assets/{view-navigation-DuOBOluC.js → view-navigation-BSA3_knE.js} +1 -1
- package/dist/assets/ws-client-eyEv8wbm.js +1 -0
- package/dist/components/ChatInput.d.ts.map +1 -1
- package/dist/components/ChatView/index.d.ts.map +1 -1
- package/dist/components/DeadCodeScanPanel/DeadCodeScanPanel.d.ts.map +1 -1
- package/dist/components/MessageBubble/ToolLedgerCard.d.ts.map +1 -1
- package/dist/components/MessageBubble/index.d.ts.map +1 -1
- package/dist/components/NextStepsBar.d.ts +9 -3
- package/dist/components/NextStepsBar.d.ts.map +1 -1
- package/dist/components/SettingsPanel/ConnectionsHealthSection.d.ts.map +1 -1
- package/dist/components/ToolResult.d.ts +8 -1
- package/dist/components/ToolResult.d.ts.map +1 -1
- package/dist/hooks/ws-handlers/chat-handlers.d.ts.map +1 -1
- package/dist/index.html +10 -10
- package/dist/index.js +3167 -2825
- package/dist/index.js.map +4 -4
- package/dist/lib/sage-block.d.ts.map +1 -1
- package/dist/lib/ws-client.d.ts +11 -1
- package/dist/lib/ws-client.d.ts.map +1 -1
- package/dist/stores/local-prefs.d.ts +1 -1
- package/dist/stores/local-prefs.d.ts.map +1 -1
- package/dist/stores/types.d.ts +9 -0
- package/dist/stores/types.d.ts.map +1 -1
- package/dist/types/client-message.d.ts +6 -0
- package/dist/types/client-message.d.ts.map +1 -1
- package/dist/types/connections.d.ts +6 -0
- package/dist/types/connections.d.ts.map +1 -1
- package/dist/types/protocol-core.d.ts +6 -0
- package/dist/types/protocol-core.d.ts.map +1 -1
- package/dist/types/server-message.d.ts +4 -1
- package/dist/types/server-message.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/assets/DeadCodeScanPanel-mREO2zoW.js +0 -2
- package/dist/assets/ui-store-CBdBem9f.js +0 -1
- package/dist/assets/ws-client-D0KuNwAk.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{$i as t,Ft as n,Kn as r,Ri as i,Wi as a,Wt as o,_ as s,a as c,at as l,br as u,bt as d,c as f,et as p,f as m,ga as h,h as g,i as _,in as v,ir as y,ki as b,mn as x,r as S,s as C,u as w,vr as T,xa as E}from"./vendor-9hC4n4Me.js";import"./i18n-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{$i as t,Ft as n,Kn as r,Ri as i,Wi as a,Wt as o,_ as s,a as c,at as l,br as u,bt as d,c as f,et as p,f as m,ga as h,h as g,i as _,in as v,ir as y,ki as b,mn as x,r as S,s as C,u as w,vr as T,xa as E}from"./vendor-9hC4n4Me.js";import"./i18n-D-JnOQZX.js";import{t as D}from"./utils-DzRQUvln.js";var O=e(E(),1),k={pending:{label:`Pending`,icon:b,text:`text-muted-foreground`,ring:`border-border/70 bg-muted/45`,dot:`bg-muted-foreground`,hex:`hsl(var(--muted-foreground))`},queued:{label:`Ready`,icon:b,text:`text-primary`,ring:`border-primary/35 bg-primary/10`,dot:`bg-primary`,hex:`hsl(var(--primary))`},in_progress:{label:`Running`,icon:r,spin:!0,text:`text-warning`,ring:`border-warning/45 bg-warning/10`,dot:`bg-warning`,hex:`hsl(var(--warning))`},blocked:{label:`Blocked`,icon:b,text:`text-destructive`,ring:`border-destructive/30 bg-destructive/10`,dot:`bg-destructive`,hex:`hsl(var(--destructive))`},review:{label:`Review`,icon:b,text:`text-primary`,ring:`border-primary/35 bg-primary/10`,dot:`bg-primary`,hex:`hsl(var(--info))`},failed:{label:`Failed`,icon:l,text:`text-destructive`,ring:`border-destructive/45 bg-destructive/10`,dot:`bg-destructive`,hex:`hsl(var(--destructive))`},completed:{label:`Done`,icon:i,text:`text-success`,ring:`border-success/35 bg-success/10`,dot:`bg-success`,hex:`hsl(var(--success))`},cancelled:{label:`Cancelled`,icon:t,text:`text-muted-foreground`,ring:`border-border/70 bg-muted/45`,dot:`bg-muted-foreground`,hex:`hsl(var(--muted-foreground))`}};function A(e){return k[e]??k.pending}var j={critical:{text:`text-destructive`,chip:`bg-destructive/10 text-destructive`},high:{text:`text-warning`,chip:`bg-warning/12 text-warning`},medium:{text:`text-primary`,chip:`bg-primary/10 text-primary`},low:{text:`text-muted-foreground`,chip:`bg-muted text-muted-foreground`}};function M(e){return j[e]??j.medium}var N={running:`border-primary/35 bg-primary/10 text-primary`,paused:`border-warning/35 bg-warning/10 text-warning`,stopped:`border-border/70 bg-muted text-muted-foreground`,completed:`border-success/35 bg-success/10 text-success`,failed:`border-destructive/35 bg-destructive/10 text-destructive`,deadlocked:`border-destructive/35 bg-destructive/10 text-destructive`,idle:`border-border bg-muted text-muted-foreground`},P=[`bg-warning`,`bg-primary`,`bg-success`,`bg-destructive`,`bg-secondary`,`bg-muted-foreground`,`bg-accent`],F={started:{icon:x,color:`text-warning`},completed:{icon:i,color:`text-success`},failed:{icon:l,color:`text-destructive`},retrying:{icon:v,color:`text-warning`},wave:{icon:y,color:`text-primary`},deadlock:{icon:d,color:`text-destructive`},verification_failed:{icon:o,color:`text-destructive`},conflict:{icon:T,color:`text-warning`},split:{icon:n,color:`text-primary`},supervisor:{icon:a,color:`text-primary`}};function I(e){let t=e.trim().split(/\s+/);return((t[0]?.[0]??``)+(t[1]?.[0]??``)).toUpperCase()||`·`}function L(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 R(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`}var z=p(),B=300,V=128,H=240,U={pending:{ring:`border-border/70`,chip:`bg-muted text-muted-foreground`,dot:`bg-muted-foreground`},queued:{ring:`border-primary/35`,chip:`bg-primary/10 text-primary`,dot:`bg-primary`},in_progress:{ring:`border-warning/45`,chip:`bg-warning/12 text-warning`,dot:`bg-warning`},blocked:{ring:`border-destructive/30`,chip:`bg-destructive/10 text-destructive`,dot:`bg-destructive`},review:{ring:`border-primary/35`,chip:`bg-primary/10 text-primary`,dot:`bg-primary`},failed:{ring:`border-destructive/45`,chip:`bg-destructive/10 text-destructive`,dot:`bg-destructive`},completed:{ring:`border-success/35`,chip:`bg-success/12 text-success`,dot:`bg-success`},cancelled:{ring:`border-border/70`,chip:`bg-muted text-muted-foreground`,dot:`bg-muted-foreground`}};function W({data:e}){let t=e.task,{t:n}=h(),a=U[t.displayStatus],o=t.displayStatus===`in_progress`,c=t.displayStatus===`completed`?i:t.displayStatus===`failed`?l:o?r:b;return(0,z.jsxs)(`div`,{className:D(`sdd-node-enter group relative rounded-lg border bg-card/95 px-2.5 py-2 text-left shadow-lg backdrop-blur`,a.ring,o&&`sdd-node-running`,t.displayStatus===`completed`&&`sdd-node-complete`,t.displayStatus===`failed`&&`sdd-node-failed`,e.onTaskClick&&`hover:brightness-125`),style:{width:H,animationDelay:`${Math.min(e.index*45,600)}ms`},children:[e.onTaskClick&&(0,z.jsx)(`button`,{type:`button`,"aria-label":n(`activity:sdd.openTask`,{title:t.title,defaultValue:`Open task: ${t.title}`}),className:`absolute inset-0 z-10 cursor-pointer rounded-lg`,onClick:()=>e.onTaskClick?.(t.id)}),(0,z.jsx)(C,{type:`target`,position:s.Left,isConnectable:!1,className:`!h-1.5 !w-1.5 !border-0 !bg-border`}),(0,z.jsx)(C,{type:`source`,position:s.Right,isConnectable:!1,className:`!h-1.5 !w-1.5 !border-0 !bg-border`}),(0,z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,z.jsx)(c,{className:D(`h-3.5 w-3.5`,o&&`animate-spin`,a.chip.split(` `).find(e=>e.startsWith(`text`)))}),(0,z.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:t.shortId}),(0,z.jsx)(`span`,{className:D(`font-mono text-[10px] font-bold uppercase`,M(t.priority).text),children:t.priority[0]}),(0,z.jsx)(`span`,{className:D(`ml-auto rounded px-1.5 py-px text-[9px] font-medium`,a.chip),children:n(`activity:sdd.status.${t.displayStatus}`)})]}),(0,z.jsx)(`p`,{className:`mt-1 line-clamp-2 text-[11px] leading-snug text-foreground`,children:t.title}),(t.agentName||t.worktreeBranch)&&(0,z.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-1.5`,children:[t.agentName&&(0,z.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,z.jsx)(`span`,{className:D(`flex h-4 w-4 items-center justify-center rounded-full text-[8px] font-bold text-white`,o?`bg-warning sdd-agent-live`:`bg-muted-foreground`),children:I(t.agentName)}),(0,z.jsx)(`span`,{className:`max-w-[88px] truncate text-[10px] text-muted-foreground`,children:t.agentName})]}),t.retries?(0,z.jsxs)(`span`,{className:`flex items-center gap-0.5 text-[9px] text-destructive`,children:[(0,z.jsx)(v,{className:`h-2.5 w-2.5`}),t.retries]}):null,t.worktreeBranch&&(0,z.jsxs)(`span`,{className:`ml-auto flex items-center gap-0.5 text-[9px] text-muted-foreground`,title:t.worktreeBranch,children:[(0,z.jsx)(u,{className:`h-2.5 w-2.5`}),(0,z.jsx)(`span`,{className:`max-w-[70px] truncate`,children:t.worktreeBranch.replace(/^.*\//,``)})]})]})]})}function G({data:e}){return(0,z.jsx)(`div`,{className:`whitespace-nowrap text-[11px] font-bold uppercase text-muted-foreground`,children:e.label})}var K={task:W,colLabel:G};function q(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*B,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*B,y:o*V},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:A(t.displayStatus).hex,strokeWidth:i?2.2:1.4,opacity:t.displayStatus===`pending`?.4:.85}})}return{nodes:i,edges:o}}function J({tasks:e,columns:t,onTaskClick:n}){let{fitView:r}=g(),{nodes:i,edges:a}=(0,O.useMemo)(()=>q(e,t,n),[e,t,n]),o=e.length;return(0,O.useEffect)(()=>{let e=setTimeout(()=>r({padding:.18,duration:400}),60);return()=>clearTimeout(e)},[o,r]),(0,z.jsxs)(m,{nodes:i,edges:a,nodeTypes:K,fitView:!0,fitViewOptions:{padding:.18},minZoom:.2,maxZoom:1.6,proOptions:{hideAttribution:!0},nodesConnectable:!1,elementsSelectable:!!n,children:[(0,z.jsx)(S,{variant:_.Dots,gap:22,size:1,color:`hsl(var(--border))`}),(0,z.jsx)(c,{showInteractive:!1,className:`!bottom-2 !left-2`}),(0,z.jsx)(f,{pannable:!0,zoomable:!0,nodeStrokeWidth:2,maskColor:`hsl(var(--background) / 0.65)`,nodeColor:e=>{let t=e.data?.task?.displayStatus;return t?A(t).hex:`hsl(var(--muted-foreground))`},className:`!bottom-2 !right-2 !h-24 !w-40 overflow-hidden rounded-md border border-border/70 bg-card`})]})}function Y({tasks:e,columns:t,onTaskClick:n}){return(0,z.jsx)(w,{children:(0,z.jsx)(J,{tasks:e,columns:t,onTaskClick:n})})}function X({pct:e}){let t=(0,O.useId)(),n=2*Math.PI*26,r=n-Math.max(0,Math.min(100,e))/100*n;return(0,z.jsxs)(`div`,{className:`relative h-16 w-16 shrink-0`,children:[(0,z.jsxs)(`svg`,{viewBox:`0 0 64 64`,className:`h-16 w-16 -rotate-90`,role:`img`,"aria-label":`Progress`,children:[(0,z.jsx)(`circle`,{cx:`32`,cy:`32`,r:26,fill:`none`,stroke:`hsl(var(--muted))`,strokeWidth:`6`}),(0,z.jsx)(`circle`,{cx:`32`,cy:`32`,r:26,fill:`none`,stroke:`url(#${t})`,strokeWidth:`6`,strokeLinecap:`round`,strokeDasharray:n,strokeDashoffset:r,style:{transition:`stroke-dashoffset 0.6s cubic-bezier(0.16,1,0.3,1)`}}),(0,z.jsx)(`defs`,{children:(0,z.jsxs)(`linearGradient`,{id:t,x1:`0`,y1:`0`,x2:`1`,y2:`1`,children:[(0,z.jsx)(`stop`,{offset:`0%`,stopColor:`hsl(var(--primary))`}),(0,z.jsx)(`stop`,{offset:`100%`,stopColor:`hsl(var(--info))`})]})})]}),(0,z.jsxs)(`div`,{className:`absolute inset-0 flex items-center justify-center text-sm font-bold text-foreground`,children:[Math.round(e),`%`]})]})}export{N as a,L as c,F as i,M as l,Y as n,I as o,P as r,R as s,X as t,A as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./ws-client-
|
|
1
|
+
import{t as e}from"./ws-client-eyEv8wbm.js";var t=new Map,n=15e3;function r(e){return e.startsWith(`agent-roster.`)&&e.length>13?e.slice(13):void 0}function i(i,a,o){return new Promise((s,c)=>{let l=e(),u=!1,d=[],f=e=>{if(!u){u=!0;for(let e of d)e();d=[],t.delete(i),e()}},p=e=>{let t=e,n=t&&typeof t==`object`?t.payload??t:e;if(n&&typeof n==`object`&&`error`in n&&typeof n.error==`string`){f(()=>c(Error(n.error)));return}f(()=>s(n))};l.connect().then(()=>{if(u)return;let e=t.get(i);e&&(e.cleanup(),e.reject(Error(`Roster request "${i}" superseded by new request`)),t.delete(i)),t.set(i,{reject:e=>f(()=>c(e)),cleanup:()=>{for(let e of d)e();d=[],u||t.delete(i)}});let s=l.on(i,p);d.push(s);let m=r(i);if(m){let e=l.on(m,p);d.push(e)}if(o){if(o.aborted){f(()=>c(new DOMException(`Aborted`,`AbortError`)));return}let e=()=>f(()=>c(new DOMException(`Aborted`,`AbortError`)));o.addEventListener(`abort`,e,{once:!0}),d.push(()=>o.removeEventListener(`abort`,e))}let h=setTimeout(()=>f(()=>c(Error(`Roster request "${i}" timed out`))),n);d.push(()=>clearTimeout(h)),l.send({type:i,payload:a})}).catch(e=>f(()=>c(e)))})}export{i as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./chat-store-DaSs2P3S.js";import{ha as t,ma as n}from"./vendor-9hC4n4Me.js";import"./ui-store-
|
|
1
|
+
import{r as e}from"./chat-store-DaSs2P3S.js";import{ha as t,ma as n}from"./vendor-9hC4n4Me.js";import"./ui-store-BI3LH2q8.js";import{r,t as i}from"./ws-client-eyEv8wbm.js";import"./session-store-w5G2euPs.js";import"./codemap-activity-store-CkJTt5go.js";import"./mailbox-store-BN2cGkN_.js";var a=t()(n(e=>({provider:``,model:``,wsUrl:r(),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:r(),wsConnected:!1,wsStatus:{state:`connecting`}})}));function o(e,t){return t>=100?`danger`:`warning`}function s(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 c=200,l=50,u=300,d=200,ee=100;function f(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 te=t()(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 f(n,d,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()}),f(r,d,e=>e.status===`stopped`),{subagents:r,lastUpdated:Date.now()}}),pushEvent:(t,n,r,i,a)=>e(e=>{let o=n.kind??t,l=(t.includes(`budget`)||t.includes(`threshold`))&&typeof n.limit==`number`&&n.limit>0?Math.round(n.used/n.limit*100):void 0,u=l===void 0?t.includes(`consensus.vote_resolved`)?`info`:t.includes(`consensus.vote_initiated`)?`warning`:`info`:l>=100?`danger`:l>=85?`warning`:`info`;return{events:[{id:`${r}-${t}`,ts:r,type:t,subagentId:i,taskId:a,payload:n,kind:o,level:u,message:s(t,n)},...e.events].slice(0,c),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}),f(i,ee,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()}),f(i,u,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}),f(i,u,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()}),f(r,u,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;for(let t of e.budgetAlerts){let e=`${t.subagentId}:${t.kind}`;a.has(e)||a.set(e,t)}let 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}`,s=i>0?Math.round(r/i*100):0;return{budgetAlerts:[{id:a,ts:Date.now(),subagentId:t,kind:n,level:o(n,s),used:r,limit:i,pct:s},...e.budgetAlerts].slice(0,l),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()})})),p=t()(e=>({snapshot:null,lastFiredAt:{},revision:0,setSnapshot:t=>e(e=>({snapshot:t,revision:e.revision+1})),recordFired:(t,n)=>e(e=>({lastFiredAt:{...e.lastFiredAt,[t]:n},revision:e.revision+1})),clear:()=>e({snapshot:null,lastFiredAt:{},revision:0})}));function m(){return`ref_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function h(e){switch(e.split(`.`).pop()?.toLowerCase()??``){case`ts`:case`tsx`:return`typescript`;case`js`:case`jsx`:return`javascript`;case`json`:return`json`;case`md`:case`mdx`:return`markdown`;case`css`:return`css`;case`scss`:return`scss`;case`html`:case`htm`:return`html`;case`py`:return`python`;case`rs`:return`rust`;case`go`:return`go`;case`rb`:return`ruby`;case`java`:return`java`;case`c`:return`c`;case`cpp`:case`hpp`:return`cpp`;case`h`:return`c`;case`sh`:case`bash`:return`bash`;case`sql`:return`sql`;case`yaml`:case`yml`:return`yaml`;case`toml`:return`toml`;default:return``}}function g(e,t=20,n=2e3){let r=e.split(`
|
|
2
2
|
`),i=!1,a=e;return r.length>t&&(a=r.slice(0,t).join(`
|
|
3
3
|
`),i=!0),a.length>n&&(a=a.slice(0,n),i=!0),i&&(a=a.replace(/\s+$/,``)+`
|
|
4
4
|
…`),a}function ne(e,t){if(e.length===0)return``;let n=[];for(let r of e){if(r.kind===`file`){let e=t?.[r.path];if(e){let t=h(r.path),i=t?`\`\`\`${t}`:"```";n.push(`${i}\n// ${r.path} (entire file)\n${g(e)}\n\`\`\``)}else n.push(`@${r.path}`);continue}let e=h(r.path),i=e?`\`\`\`${e}`:"```",a=`// ${r.path}:${r.startLine}-${r.endLine}`,o=r.kind===`snippet`?g(r.content):g(r.preview);n.push(`${i}\n${a}\n${o}\n\`\`\``)}return n.join(`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ha as e,ma as t}from"./vendor-9hC4n4Me.js";var n=[`en`,`tr`,`de`,`fr`,`it`,`es`,`pt-BR`],r=[{code:`en`,name:`English`},{code:`tr`,name:`Türkçe`},{code:`de`,name:`Deutsch`},{code:`fr`,name:`Français`},{code:`it`,name:`Italiano`},{code:`es`,name:`Español`},{code:`pt-BR`,name:`Português (Brasil)`}],i=new Set(n);function a(){return typeof navigator>`u`||!navigator.language?`en`:s(navigator.language)}function o(e){return!e||typeof e!=`string`?a():s(e)}function s(e){let t=e.trim().toLowerCase();if(!t)return`en`;if(i.has(t))return t;let n=t.split(`-`)[0];return n&&i.has(n)?n:n===`pt`?`pt-BR`:`en`}var c={autonomy:`auto`,autonomyDelayMs:45e3,autoProceedMaxIterations:50,yolo:!0,maxIterations:500,chime:!1,confirmExit:!0,fleetChatVerbosity:`off`,nextPrediction:!1,fallbackModels:[],fallbackProfiles:{},favoriteModels:[],favoriteModelsOnly:!1,modelMatrix:{},fallbackAuto:!0,modelAvailabilitySchedule:[],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,enhanceCountdownMs:3e3,enhanceLanguage:`original`,refinerProvider:``,refinerModel:``,refinerFallbackProfile:``,thinkingWord:`thinking`,statuslineMode:`detailed`,animationStyle:`rainbow`,showThinkingLogs:!0,groupToolCalls:!0,showModelReasoning:!0,showAgentSwarmPanel:!1,allowOutsideProjectRoot:!0,reasoningMode:`auto`,reasoningEffort:`high`,reasoningPreserve:!1,cacheTtl:`default`,breakerEnabled:!1,breakerAutoKillResetMs:6e4,fsAccess:`unrestricted`,debugStream:!1,hqEnabled:!1,hqUrl:``,hqToken:``,hqRawContent:!1,tgConfigured:!1,tgSessionEnd:!1,tgDelegate:!0,tgLongToolMs:3e4,uiLocale:a(),chimeraAutoFix:`off`,chimeraEnabled:!0,chimeraProvider:``,chimeraModel:``,chimeraMaxFiles:15,autoReviewEnabled:!1,autoReviewProvider:``,autoReviewModel:``,autoReviewFallbackProfile:``,autoReviewFallbackModels:[],autoReviewDebounceMs:15e3,autoReviewMaxFilesPerBatch:15,autoReviewMaxConcurrentReviews:2,autoReviewCascadeOn:`off`,pluginsEnabled:{}},l=e()(t(e=>({...c,set:t=>e(t),reset:()=>e(c)}),{name:`wrongstack-local-prefs`,version:12,migrate:(e,t)=>{let n=e??{};return t<12&&n.autoReviewDebounceMs===5e3&&(n.autoReviewDebounceMs=15e3),typeof n.fleetChatVerbosity!=`string`&&(n.streamFleet===!0?n.fleetChatVerbosity=`full`:(n.streamFleet,n.fleetChatVerbosity=`off`),delete n.streamFleet),n.fleetChatVerbosity!==`off`&&n.fleetChatVerbosity!==`full`&&(n.fleetChatVerbosity=`off`),[`hybrid`,`intelligent`,`selective`].includes(n.contextStrategy)||(n.contextStrategy=`hybrid`),n.auditLevel===`verbose`&&(n.auditLevel=`full`),[`minimal`,`standard`,`full`].includes(n.auditLevel)||(n.auditLevel=`standard`),typeof n.autoProceedMaxIterations!=`number`&&(n.autoProceedMaxIterations=50),(!n.fallbackProfiles||typeof n.fallbackProfiles!=`object`||Array.isArray(n.fallbackProfiles))&&(n.fallbackProfiles={}),Array.isArray(n.favoriteModels)||(n.favoriteModels=[]),typeof n.favoriteModelsOnly!=`boolean`&&(n.favoriteModelsOnly=!1),Array.isArray(n.modelAvailabilitySchedule)||(n.modelAvailabilitySchedule=[]),(!n.modelMatrix||typeof n.modelMatrix!=`object`||Array.isArray(n.modelMatrix))&&(n.modelMatrix={}),(typeof n.uiLocale!=`string`||!n.uiLocale)&&(n.uiLocale=a()),typeof n.breakerEnabled!=`boolean`&&(n.breakerEnabled=!1),typeof n.breakerAutoKillResetMs!=`number`&&(n.breakerAutoKillResetMs=6e4),n.fsAccess!==`unrestricted`&&n.fsAccess!==`project`&&(n.fsAccess=`unrestricted`),typeof n.debugStream!=`boolean`&&(n.debugStream=!1),typeof n.chimeraEnabled!=`boolean`&&(n.chimeraEnabled=!0),typeof n.chimeraProvider!=`string`&&(n.chimeraProvider=``),typeof n.chimeraModel!=`string`&&(n.chimeraModel=``),n.chimeraAutoFix!==`off`&&n.chimeraAutoFix!==`ask`&&n.chimeraAutoFix!==`auto`&&(n.chimeraAutoFix=`off`),(typeof n.chimeraMaxFiles!=`number`||!Number.isFinite(n.chimeraMaxFiles)||n.chimeraMaxFiles<1)&&(n.chimeraMaxFiles=15),typeof n.autoReviewEnabled!=`boolean`&&(n.autoReviewEnabled=!1),typeof n.autoReviewProvider!=`string`&&(n.autoReviewProvider=``),typeof n.autoReviewModel!=`string`&&(n.autoReviewModel=``),typeof n.autoReviewFallbackProfile!=`string`&&(n.autoReviewFallbackProfile=``),Array.isArray(n.autoReviewFallbackModels)||(n.autoReviewFallbackModels=[]),(typeof n.autoReviewDebounceMs!=`number`||!Number.isFinite(n.autoReviewDebounceMs)||n.autoReviewDebounceMs<0)&&(n.autoReviewDebounceMs=15e3),(typeof n.autoReviewMaxFilesPerBatch!=`number`||!Number.isFinite(n.autoReviewMaxFilesPerBatch)||n.autoReviewMaxFilesPerBatch<1)&&(n.autoReviewMaxFilesPerBatch=15),(typeof n.autoReviewMaxConcurrentReviews!=`number`||!Number.isFinite(n.autoReviewMaxConcurrentReviews)||n.autoReviewMaxConcurrentReviews<1)&&(n.autoReviewMaxConcurrentReviews=2),n.autoReviewCascadeOn!==`off`&&n.autoReviewCascadeOn!==`critical`&&n.autoReviewCascadeOn!==`high`&&(n.autoReviewCascadeOn=`off`),typeof n.showModelReasoning!=`boolean`&&(n.showModelReasoning=!0),typeof n.showAgentSwarmPanel!=`boolean`&&(n.showAgentSwarmPanel=!1),typeof n.allowOutsideProjectRoot!=`boolean`&&(n.allowOutsideProjectRoot=!0),n}})),u=[`chat`,`agents`,`files`,`changes`,`mailbox`,`skills`,`design`,`worktrees`,`officemap`];function d(e){return u.includes(e)?e:e===`context`||e===`history`||e===`sessions`||e===`projects`?`chat`:e===`officemap`?`officemap`:`chat`}var f=[`chat`,`settings`,`memory`,`roster`,`context`,`goal`,`kanban`,`sddhub`,`files`,`changes`,`sessions`,`setup`,`skill`,`officemap`,`mailbox`,`debug`,`design-gallery`,`refresh-debug`,`analytics`,`codemap`,`techstack`,`deadcode`,`chronicle`];function p(e){return f.includes(e)?e:`chat`}var m=[`goal`,`goal-state`,`fleet`,`work`,`worktrees`,`collab`];function h(e){return e==null||!m.includes(e)?null:e}var g=[`general`,`provider`,`connection`,`agent`,`execution`,`fallbacks`,`routing`,`fleet`,`integrations`,`chimera`,`context`,`logs`,`security`];function _(e){return g.includes(e)?e:`general`}function v(){if(typeof window>`u`)return!1;if(window.wrongstackDesktopHost)return!0;try{return new URLSearchParams(window.location.search).get(`shell`)===`desktop`}catch{return!1}}function y(e={}){return{currentView:`chat`,activeActivity:`chat`,sidebarOpen:e.sidebarOpen??!1,dockSection:null,dockCustomizeOpen:!1,fleetMonitorOpen:!1,agentsMonitorOpen:!1,processMonitorOpen:!1,queuePanelOpen:!1,cronJobsOpen:!1,sideContextBreakdownOpen:!1,inspectorOpen:!1,inspectorTab:`fleet`,inspectorFocusedAgentId:null,terminalOpen:!1,paletteOpen:!1,shortcutsOpen:!1,searchOpen:!1,searchQuery:``,searchActiveMessageId:null,modelSwitcherOpen:!1,promptLibraryOpen:!1,selectedMailMessage:null,refinePanel:null}}var b=e()(t(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`,inspectorFocusedAgentId:null,processMonitorOpen:!1,queuePanelOpen:!1,cronJobsOpen:!1,terminalOpen:!1,terminalCreateNonce:0,settingsActiveTab:`general`,scrollPositions:{},draftInput:``,sideContextBreakdownOpen:!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:p(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,...t?{inspectorOpen:!1}:{}}),setWorkDashboardTab:t=>e({workDashboardTab:t}),toggleDockSection:t=>e(e=>{let n=e.dockSection===t?null:t;return{dockSection:n,...n?{inspectorOpen:!1}:{}}}),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}}),showDockChip:t=>e(e=>({hiddenChips:e.hiddenChips.filter(e=>e!==t)})),setDockCustomizeOpen:t=>e({dockCustomizeOpen:t}),setFleetMonitorOpen:t=>e(e=>({fleetMonitorOpen:!1,inspectorOpen:t?!0:e.inspectorTab!==`fleet`&&e.inspectorOpen,inspectorTab:t?`fleet`:e.inspectorTab,...t?{dockSection:null}:{}})),setAgentsMonitorOpen:t=>e(e=>({agentsMonitorOpen:!1,inspectorOpen:t?!0:e.inspectorTab!==`agents`&&e.inspectorOpen,inspectorTab:t?`agents`:e.inspectorTab,...t?{dockSection:null}:{}})),setInspectorOpen:t=>e({inspectorOpen:t,...t?{dockSection:null}:{}}),setInspectorTab:t=>e({inspectorTab:t}),setInspectorFocusedAgentId:t=>e({inspectorFocusedAgentId:t}),toggleInspector:()=>e(e=>({inspectorOpen:!e.inspectorOpen,...e.inspectorOpen?{}:{dockSection:null}})),setProcessMonitorOpen:t=>e({processMonitorOpen:t}),setQueuePanelOpen:t=>e({queuePanelOpen:t}),setCronJobsOpen:t=>e({cronJobsOpen:t}),setTerminalOpen:t=>e({terminalOpen:t}),toggleTerminal:()=>e(e=>({terminalOpen:!e.terminalOpen})),requestTerminalCreate:()=>e(e=>({terminalCreateNonce:e.terminalCreateNonce+1})),setSettingsActiveTab:t=>e({settingsActiveTab:_(t)}),setScrollPosition:(t,n)=>e(e=>({scrollPositions:{...e.scrollPositions,[t]:n}})),setDraftInput:t=>e({draftInput:t}),setSideContextBreakdownOpen:t=>e({sideContextBreakdownOpen:t}),setSkillsState:t=>e({skillsState:t}),setSelectedMailMessage:t=>e({selectedMailMessage:t})}),{name:`wrongstack-ui`,version:5,migrate:(e,t)=>{let n=e??{};return n.activeActivity=d(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=p(n.currentView)),`dockSection`in n&&(n.dockSection=h(n.dockSection)),`settingsActiveTab`in n&&(n.settingsActiveTab=_(n.settingsActiveTab)),n},merge:(e,t)=>{let n={...t,...e??{}};return n.activeActivity=d(n.activeActivity),n.currentView=p(n.currentView),n.dockSection=h(n.dockSection),n.settingsActiveTab=_(n.settingsActiveTab),n.sidebarWidth=Math.max(240,Math.min(560,n.sidebarWidth)),v()?{...n,...y({sidebarOpen:!1})}: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,settingsActiveTab:e.settingsActiveTab,scrollPositions:e.scrollPositions,draftInput:e.draftInput})}));function x(e={}){b.setState(y(e))}export{n as a,r as i,b as n,o,l as r,x as t};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{i as t,n,t as r}from"./chat-store-DaSs2P3S.js";import{ha as i,xa as a,ya as o}from"./vendor-9hC4n4Me.js";import"./i18n-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{i as t,n,t as r}from"./chat-store-DaSs2P3S.js";import{ha as i,xa as a,ya as o}from"./vendor-9hC4n4Me.js";import"./i18n-D-JnOQZX.js";import{n as s,r as c,t as l}from"./ui-store-BI3LH2q8.js";import{a as u,c as d,i as f,l as p,o as ee,s as m,t as h}from"./ws-client-eyEv8wbm.js";import{t as g}from"./session-store-w5G2euPs.js";import{i as _,n as v}from"./codemap-activity-store-CkJTt5go.js";import{A as te,D as y,M as b,a as x,d as ne,f as re,g as S,h as ie,i as ae,j as C,l as oe,m as se,n as w,o as T,p as E,r as ce,s as D,t as O,u as le,x as k}from"./stores-hEu6z1qz.js";import{r as A}from"./mailbox-store-BN2cGkN_.js";import{n as ue,o as de}from"./view-navigation-BSA3_knE.js";import{t as fe}from"./codemap-index-store-8v-MK2XF.js";import{n as j}from"./Toaster-D5WTIK_V.js";var M=e(a(),1);function pe(e,t){if(t)return!0;try{return new URLSearchParams(e).get(`shell`)===`desktop`}catch{return!1}}function N(){return typeof window>`u`?!1:pe(window.location.search,!!window.wrongstackDesktopHost)}function P(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function F(e,t=``){return typeof e==`string`?e:t}function I(e,t=0){return typeof e==`number`&&Number.isFinite(e)?e:t}function me(e){let t=P(e.payload);if(!t)return null;switch(e.type){case`provider.thinking_delta`:{let e=F(t.text);return e?{kind:`thinking-delta`,text:e}:null}case`provider.text_delta`:{let e=F(t.text);return e?{kind:`text-delta`,text:e,messageId:F(t.messageId)}:null}case`provider.response`:return{kind:`response`,content:t.content};case`run.result`:return{kind:`run-result`,status:F(t.status),iterations:I(t.iterations,1),...typeof t.finalText==`string`?{finalText:t.finalText}:{}};case`error`:return{kind:`error`,message:F(t.message,`Run failed`)};default:return null}}function L(e){let t=P(e.payload);if(!t)return null;if(e.type===`tool.started`){let e=F(t.name,`tool`);return{kind:`started`,id:F(t.id,e),name:e,input:t.input,messageId:F(t.messageId)}}if(e.type===`tool.progress`){let e=P(t.event);return{kind:`progress`,id:F(t.id),name:F(t.name,`tool`),eventType:F(e?.type),text:F(e?.text).trim()}}return e.type===`tool.executed`?{kind:`executed`,id:F(t.id),name:F(t.name),ok:t.ok!==!1,durationMs:I(t.durationMs),...typeof t.output==`string`?{output:t.output}:{},...Array.isArray(t.sage)?{sage:t.sage.filter(e=>typeof e==`string`)}:{}}:null}function R(e){let t=P(e.payload);if(!t)return null;switch(e.type){case`fleet.concurrency_update`:return{kind:`concurrency`,active:I(t.fleetConcurrency),maximum:I(t.fleetConcurrencyMax)};case`client.status_update`:return{kind:`client-status`,status:t};case`sessions.status_update`:return{kind:`sessions`,sessions:Array.isArray(t.sessions)?t.sessions:[]};case`coordinator.stats`:return{kind:`coordinator`,agents:Array.isArray(t.subagentStatuses)?t.subagentStatuses.filter(e=>P(e)!==null):[]};default:return null}}function he(e){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
|
|
2
2
|
<rect width="64" height="64" fill="#121210" />
|
|
3
3
|
<path fill="#FD9F02" d="M5 27h10v10H5zM27 27h10v10H27zM38 27h10v10H38zM49 27h10v10H49z" />
|
|
4
4
|
<path fill="#FE2E5F" d="M16 32h10v10H16z" />
|
|
5
5
|
${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>`:``}
|
|
6
6
|
</svg>`}function ge(e){return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`}function _e(){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 z=`idle`;function B(e){z=e;let t=_e();t&&(t.href=ge(he(e)))}var ve=!1;function ye(){ve||typeof document>`u`||(ve=!0,document.addEventListener(`visibilitychange`,()=>{!document.hidden&&(z===`ready`||z===`error`||z===`attention`)&&B(`idle`)}))}var be=2048,xe=2*1024*1024,Se=new Set([`image/png`,`image/jpeg`,`image/webp`,`image/gif`]),V=class extends Error{reason;constructor(e,t){super(e),this.reason=t,this.name=`ImageAttachmentError`}};function Ce(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=()=>n(r.error),r.readAsDataURL(e)})}function we(e){let t=e.indexOf(`,`),n=t>=0?e.length-t-1:e.length;return Math.floor(n*3/4)}function Te(e){return/^data:([^;,]+)/.exec(e)?.[1]??`image/png`}async function Ee(e){try{return await createImageBitmap(e)}catch{let t=URL.createObjectURL(e);try{return await new Promise((e,n)=>{let r=new Image;r.onload=()=>e(r),r.onerror=()=>n(Error(`image decode failed`)),r.src=t})}finally{URL.revokeObjectURL(t)}}}function De(e,t,n,r,i){let a=document.createElement(`canvas`);a.width=t,a.height=n;let o=a.getContext(`2d`);if(!o)throw new V(`canvas 2d context unavailable`,`decode_failed`);o.drawImage(e,0,0,t,n);let s=a.toDataURL(`image/webp`,i);return s.startsWith(`data:image/webp`)?s:r?a.toDataURL(`image/png`):a.toDataURL(`image/jpeg`,i)}var Oe=0;function ke(){return Oe+=1,`img_${Date.now()}_${Oe}`}async function Ae(e){let t=Se.has(e.type),n;try{n=await Ee(e)}catch{throw new V(`Could not decode image "${e.name}"`,`decode_failed`)}let r=n.width,i=n.height,a=Math.max(r,i);if(!(!t||a>be||e.size>xe)){let t=await Ce(e);return{id:ke(),dataUrl:t,mediaType:e.type,bytes:we(t),name:e.name||void 0,width:r,height:i}}let o=e.type!==`image/jpeg`,s=Math.min(1,be/a),c=.85,l=De(n,Math.max(1,Math.round(r*s)),Math.max(1,Math.round(i*s)),o,c);we(l)>4194304&&(s=Math.min(s,1280/a),c=.7,l=De(n,Math.max(1,Math.round(r*s)),Math.max(1,Math.round(i*s)),o,c)),`close`in n&&n.close();let u=we(l);if(u>4194304)throw new V(`Image "${e.name}" is too large after compression`,`too_large`);return{id:ke(),dataUrl:l,mediaType:Te(l),bytes:u,name:e.name||void 0,width:Math.max(1,Math.round(r*s)),height:Math.max(1,Math.round(i*s))}}function je(e){return e.map(e=>{let t=e.dataUrl.indexOf(`,`);return{data:t>=0?e.dataUrl.slice(t+1):e.dataUrl,mediaType:e.mediaType,...e.name?{name:e.name}:{}}})}var H=null;function Me(){if(typeof window>`u`)return null;if(H)return H;let e=window.AudioContext||window.webkitAudioContext;if(!e)return null;try{H=new e}catch{return null}return H}function U(e,t,n){let r=Me();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 Ne(){U(659.25,0,.18),U(880,.12,.24)}function Pe(){U(523.25,0,.15),U(659.25,.1,.15),U(783.99,.2,.25)}var W=`default`;W=typeof window<`u`&&`Notification`in window?Notification.permission:`unsupported`;async function Fe(){if(W===`unsupported`||W===`granted`||W===`denied`)return W;try{let e=await Notification.requestPermission();return W=e,e}catch{return`denied`}}function Ie(e,t,n){if(!(typeof document>`u`||!document.hidden)&&W===`granted`)try{let r=new Notification(e,{body:t,icon:`/wrongstack.svg`,tag:n??`wrongstack-run`,requireInteraction:n===`wrongstack-confirm`});r.onclick=()=>{window.focus(),r.close()}}catch{}}var Le={"iteration.started":Re,"provider.text_delta":ze,"provider.thinking_delta":Be,"tool.started":Ve,"tool.progress":He,"tool.executed":Ue,"tool.confirm_needed":We,"run.result":Ge};function Re(e){if(!f(e))return;u(e);let t=e.payload;g.getState().setIteration({index:t.index,max:t.maxIterations??0}),r.getState().setLoading(!0),typeof document<`u`&&document.hidden&&B(`running`),r.getState().runStart===null&&r.getState().setRunStart({at:Date.now(),cost:g.getState().cost}),r.getState().setCurrentAssistantMessage(null)}function ze(e){if(!f(e))return;let t=me(e);if(t?.kind!==`text-delta`)return;p.flush(`__thinking__`),r.getState().clearThinking();let n=r.getState().currentAssistantMessageId;n||(n=r.getState().addMessage({role:`assistant`,content:``,streaming:!0}),r.getState().setCurrentAssistantMessage(n)),p.push(n,t.text,(e,t)=>r.getState().appendToMessage(e,t))}function Be(e){if(!f(e))return;let t=me(e);t?.kind===`thinking-delta`&&p.push(`__thinking__`,t.text,(e,t)=>r.getState().appendThinking(t))}function Ve(e){if(!f(e))return;u(e);let t=L(e);if(t?.kind!==`started`)return;let n=r.getState().getToolMessageId(t.id);if(n){r.getState().setCurrentToolId(n);return}p.flushAll(),r.getState().clearThinking();let i=r.getState().currentAssistantMessageId;i&&r.getState().finalizeMessage(i),r.getState().setCurrentAssistantMessage(null);let a=r.getState().addMessage({role:`tool`,content:``,toolName:t.name,toolInput:t.input,toolUseId:t.id});r.getState().setCurrentToolId(a),r.getState().addExecution({id:t.id,name:t.name,input:t.input,ok:!0,startedAt:Date.now()})}function He(e){if(!f(e))return;let t=L(e);if(t?.kind!==`progress`)return;let n=t.text;if(!n)return;let i=r.getState().getToolMessageId(t.id);if(!i)return;let a=t.eventType===`warning`?`⚠ `:``;p.push(i,`${a}${n}\n`,(e,n)=>r.getState().appendToolProgressLinesByUseId(t.id,n.split(`
|
|
7
|
-
`).filter(e=>e.length>0)))}function Ue(e){if(!f(e))return;u(e);let t=L(e);if(t?.kind!==`executed`)return;let{currentToolId:n}=r.getState(),i=t.id?r.getState().getToolMessageId(t.id):n;i&&(p.drop(i),t.id?r.getState().setToolResultByUseId(t.id,t.output??``,t.ok):r.getState().setToolResult(i,t.output??``,t.ok),r.getState().updateMessage(i,{toolDurationMs:t.durationMs})),t.id&&r.getState().updateExecution(t.id,{completedAt:Date.now(),durationMs:t.durationMs,output:t.output,ok:t.ok}),n&&i===n&&r.getState().setCurrentToolId(null)}function We(e){if(!f(e))return;let t=e.payload;if(c.getState().yolo===!0&&!t.boundaryReason){h(b.getState().wsUrl).sendConfirm(t.id,`yes`),s.getState().hideConfirm();return}s.getState().showConfirm({id:t.id,toolName:t.toolName,input:t.input,suggestedPattern:t.suggestedPattern,decisionSource:t.decisionSource,riskTier:t.riskTier,boundaryReason:t.boundaryReason});try{Pe()}catch{}Fe(),Ie(`${g.getState().projectName||`Agent`} needs approval`,`Tool "${t.toolName}" is waiting for your decision.`,`agent-confirm`),typeof document<`u`&&document.hidden&&B(`attention`)}function Ge(e){if(!f(e))return;let i=ee(e,{status:`string`},{iterations:`number`,finalText:`string`,error:`object`});if(!i)return;let a=i.iterations??1;p.flushAll(),r.getState().flushThinkingLog(Math.max(1,a)),g.getState().setIteration(null),r.getState().setLoading(!1);let o=r.getState().currentAssistantMessageId,s=i.status===`done`?i.finalText?.trim():void 0;if(o){let e=r.getState().messages.find(e=>e.id===o);r.getState().updateMessage(o,{content:e?.content?.trim()?e.content:s??e?.content??``}),r.getState().finalizeMessage(o)}else if(s){let e=r.getState().runStart,t=n(s).stripped.trim(),i=r.getState().messages,a;for(let t=i.length-1;t>=0;t--){let n=i[t];if(n?.role===`assistant`&&(!e||n.timestamp>=e.at)){a=n;break}}let o=a?.content.trim();if(!(o!==void 0&&(o===s||o===t))){let e=r.getState().addMessage({role:`assistant`,content:s});r.getState().finalizeMessage(e)}}r.getState().setCurrentAssistantMessage(null),r.getState().clearThinking();let c=r.getState().runStart;if(c&&i.status===`done`){let e=r.getState().messages,n=-1,i=0;for(let r=e.length-1;r>=0;r--){let a=t(e[r]);if(a.role===`assistant`&&n===-1&&a.content&&(n=r),a.role===`tool`&&a.timestamp>=c.at&&(i+=1),a.role===`user`&&a.timestamp<=c.at)break}if(n!==-1){let t=g.getState().cost;r.getState().updateMessage(e[n]?.id,{runSummary:{iterations:a,tools:i,durationMs:Date.now()-c.at,costDelta:Math.max(0,t-c.cost)}})}}if(r.getState().setRunStart(null),i.status!==`done`&&i.error)r.getState().addMessage({role:`assistant`,content:`Error: ${i.error.message}`,isError:!0}),j.error(`Run ended: ${i.error.message}`),Ie(`${g.getState().projectName||`Agent`} run failed`,i.error.message),typeof document<`u`&&document.hidden&&B(`error`);else if(i.status===`done`){if(typeof document<`u`&&document.hidden&&(j.success(`Run completed in ${a} iteration${a===1?``:`s`}`),Ie(`${g.getState().projectName||`Agent`} run finished`,`Completed in ${a} iteration${a===1?``:`s`}.`),B(`ready`)),Fe(),b.getState().soundOnComplete)try{Ne()}catch{}typeof document<`u`&&document.dispatchEvent(new CustomEvent(`chat:next-step-countdown`))}let l=r.getState().dequeue();if(!l)return;let u=h(b.getState().wsUrl),d=l.images??[];r.getState().addMessage({role:`user`,content:l.text,...d.length>0?{attachments:d.map(e=>({id:e.id,kind:`image`,dataUrl:e.dataUrl,mediaType:e.mediaType,bytes:e.bytes,name:e.name}))}:{}}),r.getState().setLoading(!0),u.sendMessage(l.text,d.length>0?je(d):void 0)}var Ke={"coordinator.status":e=>{let t=e.payload;C.getState().setCoordinatorStatus(t.status,t.mode),t.taskQueue&&C.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;C.getState().updateCoordinatorStats(t)},"budget.threshold_reached":e=>{let t=e.payload;C.getState().pushEvent(`budget.threshold_reached`,t,t.ts??Date.now(),t.subagentId,t.taskId),t.limit>0&&t.used/t.limit*100>=85&&C.getState().recordBudgetAlert(t.subagentId,t.kind,t.used,t.limit),C.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;C.getState().recordBudgetDecision(t.subagentId,t.kind,t.decision,n),C.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;C.getState().recordBudgetExtended(t.subagentId,t.kind,t.extendedTo),C.getState().pushEvent(`subagent.budget_extended`,t,Date.now(),t.subagentId)},"consensus.vote_initiated":e=>{let t=e.payload;C.getState().pushConsensusVote(t.changeId,t.title,t.eligible),C.getState().pushEvent(`consensus.vote_initiated`,t,Date.now()),j.info(`Vote started: `+t.title)},"consensus.vote_cast":e=>{let t=e.payload,n=C.getState().consensusVotes.get(t.changeId)?.eligible.find(e=>e.agentId===t.voterId);C.getState().recordConsensusVote(t.changeId,t.voterId,n?.agentName??t.voterId,t.value),C.getState().pushEvent(`consensus.vote_cast`,t,Date.now(),t.voterId)},"consensus.vote_resolved":e=>{let t=e.payload;C.getState().resolveConsensusVote(t.changeId,t.result,t.approveCount,t.rejectCount),C.getState().pushEvent(`consensus.vote_resolved`,t,Date.now()),j.info(`Vote resolved: `+t.result+` (y`+t.approveCount+` n`+t.rejectCount+`)`)},"task.pending":e=>{let t=e.payload;C.getState().pushTaskPending(t.taskId,t.description,t.priority),C.getState().pushEvent(`task.pending`,t,Date.now())},"task.started":e=>{let t=e.payload;C.getState().startTask(t.taskId,t.subagentId),C.getState().pushEvent(`task.started`,t,Date.now(),t.subagentId)},"task.completed":e=>{let t=e.payload;C.getState().completeTask(t.taskId,t.status,t.durationMs),C.getState().pushEvent(`task.completed`,t,Date.now(),t.subagentId)},"task.failed":e=>{let t=e.payload;C.getState().failTask(t.taskId,t.error),C.getState().pushEvent(`task.failed`,{taskId:t.taskId,subagentId:t.subagentId,error:String(t.error).slice(0,120)},Date.now(),t.subagentId),j.error(`Task failed: `+String(t.error).slice(0,80))}};function G(){let e=h();e?.send?.({type:`mailbox.messages`,payload:{limit:30,incompleteOnly:!0}}),e?.send?.({type:`mailbox.agents`,payload:{}})}var K=null;function q(){K!==null&&clearTimeout(K),K=setTimeout(()=>{K=null,G()},300)}function qe(e){let t=e.payload;if(t.error){y.getState().setError(t.error);return}y.getState().setTree(t.root,t.tree)}function Je(e){let t=e.payload;if(t.error){y.getState().setError(t.error);return}y.getState().openFile(t.filePath,t.content)}function Ye(e){let t=e.payload;t.success?y.getState().markSaved(t.filePath):t.error&&y.getState().setError(`Save failed: ${t.error}`)}function Xe(e){let t=d(`mailbox.event`,e.payload);t&&(m.getState().pushEvent(t),m.getState().setActive(!0)),q()}function Ze(e){let t=e.payload;t?.messages&&A.getState().setMessages(t.messages)}function Qe(e){let t=e.payload;t?.agents&&A.getState().setAgents(t.agents)}function $e(e){let t=d(`mailbox.received`,e.payload);t&&(m.getState().pushEvent(t),m.getState().setActive(!0)),q()}function et(e){q()}function tt(e){A.getState().setMessages([]),G()}function nt(e){q()}function rt(e){let t=e.payload;t&&typeof t.totalRemoved==`number`&&A.getState().setLastCompaction({readByAllRemoved:t.readByAllRemoved??0,expiredRemoved:t.expiredRemoved??0,stalePurged:t.stalePurged??0,totalRemoved:t.totalRemoved,remaining:t.remaining??0}),q()}var it={"files.tree":qe,"files.read":Je,"files.written":Ye,"mailbox.event":Xe,"mailbox.messages":Ze,"mailbox.agents":Qe,"mailbox.received":$e,"mailbox.agent_registered":et,"mailbox.cleared":tt,"mailbox.purged":nt,"mailbox.compacted":rt};function at(e){let t=e.payload;O.getState().setSnapshot(t.worktrees??[],t.baseBranch??``)}function ot(e){let t=e.payload;O.getState().pushEvent(t)}function st(e){let t=e.payload;O.getState().setOrphans(t.orphans??[],t.canClean??!1,t.reason)}function ct(e){let t=e.payload;O.getState().setCleanResult({...t,at:Date.now()})}function lt(e){let t=e.payload;O.getState().setMergeResult({...t,at:Date.now()})}function ut(e){let t=e.payload;O.getState().setDiff(t.dir,t.summary)}function dt(e){k.getState().applyEvent(e.payload);let t=d(`subagent.event`,e.payload);t&&(m.getState().pushEvent(t),m.getState().setActive(!0))}function ft(e){let t=R(e);t?.kind===`concurrency`&&k.setState({fleetConcurrency:t.active,fleetConcurrencyMax:t.maximum})}function pt(e){let t=R(e);if(t?.kind!==`client-status`)return;let n=t.status;oe.getState().setCurrentSession({clientType:n.clientType,clientId:n.clientId,agentCount:n.agentCount,model:n.model,mode:n.mode,toolCalls:n.toolCalls,inputTokens:n.inputTokens,outputTokens:n.outputTokens,cacheTokens:n.cacheTokens,costUsd:n.costUsd,timestamp:n.timestamp})}function mt(e){let t=R(e);if(t?.kind!==`sessions`)return;oe.getState().setLiveSessions(t.sessions);let n=Date.now();if(n-gt>=5e3&&(gt=n,G()),n-ht<1e3)return;ht=n;let r=d(`sessions.status_update`,e.payload);r&&(m.getState().pushEvent(r),m.getState().setActive(!0))}var ht=0,gt=0,_t={"worktree.state":at,"worktree.event":ot,"worktree.orphans":st,"worktree.cleanup_result":ct,"worktree.merge_result":lt,"worktree.diff_result":ut,"subagent.event":dt,"fleet.concurrency_update":ft,"client.status_update":pt,"sessions.status_update":mt};function vt(e,t){let n=e=>e.trim().replace(/\s+/g,` `).toLowerCase();return n(e)===n(t)}var yt=50,bt=200;function xt(e){return e.length<=300?e:`${e.slice(0,299)}…`}function St(e){return{...e,text:xt(e.text)}}function Ct(e){let t=[];for(let n of Object.values(e))n.state===`exited`&&t.push(n);if(t.length<=bt)return e;t.sort((e,t)=>(t.exitedAt??t.lastSeenAt).localeCompare(e.exitedAt??e.lastSeenAt));let n={...e};for(let e of t.slice(bt))delete n[e.id];return n}var J=i()(e=>({traces:[],contextMemories:{},transitions:[],pushTrace:t=>e(e=>{let n={...e.contextMemories},r=[...e.transitions],i=t.injected.map(St),a=t.activated.map(St);for(let e of i){let i=n[e.id];n[e.id]={...e,state:i?.state===`active`?`active`:`injected`,trigger:t.trigger,enteredAt:i?.enteredAt??t.at,lastSeenAt:t.at};let a=`${t.at}_injected_${e.id}`;r.some(e=>e.id===a)||r.unshift({id:a,at:t.at,memoryId:e.id,action:`injected`,reason:`${t.trigger} · score ${e.score.toFixed(2)}`})}return{traces:[{...t,activated:a,injected:i},...e.traces.filter(e=>e.runId!==t.runId)].slice(0,yt),contextMemories:Ct(n),transitions:r.slice(0,100)}}),applyContextSnapshot:t=>e(e=>{let n={...e.contextMemories},r=[...e.transitions],i=new Set(t.activeMemoryIds);for(let e of t.activeMemoryIds){let r=n[e];n[e]=r?{...r,state:`active`,lastSeenAt:t.at,exitedAt:void 0}:wt(e,t.at,`active`)}for(let e of t.enteredMemoryIds){let n=`${t.at}_entered_${e}`;r.some(e=>e.id===n)||r.unshift({id:n,at:t.at,memoryId:e,action:`entered`,reason:`present in provider request`})}for(let e of t.exitedMemoryIds){let i=n[e];i&&(n[e]={...i,state:`exited`,exitedAt:t.at});let a=`${t.at}_exited_${e}`;r.some(e=>e.id===a)||r.unshift({id:a,at:t.at,memoryId:e,action:`exited`,reason:`absent from provider request`})}for(let[e,a]of Object.entries(n))if((a.state===`injected`||a.state===`active`)&&!i.has(e)&&(n[e]={...a,state:`exited`,exitedAt:t.at},!t.exitedMemoryIds.includes(e))){let n=`${t.at}_exited_before_provider_${e}`;r.some(e=>e.id===n)||r.unshift({id:n,at:t.at,memoryId:e,action:`exited`,reason:a.state===`injected`?`removed before provider request`:`absent from provider context snapshot`})}return{contextMemories:Ct(n),transitions:r.slice(0,100)}}),resetContext:()=>e({contextMemories:{},transitions:[]}),clear:()=>e({traces:[],contextMemories:{},transitions:[]})}));function wt(e,t,n){return{id:e,kind:`unknown`,text:`Memory details were not present in this UI process.`,score:0,relationStrength:0,anchors:[],tags:[],activationReasons:[],importance:0,confidence:0,freshness:0,persistence:`unknown`,state:n,trigger:`context snapshot`,enteredAt:t,lastSeenAt:t,isPlaceholder:!0}}var Tt=100,Et=new Set([`exited`,`superseded`,`archived`,`staled`,`contradicted`]);function Dt(e,t=new Date){let n=e.event,r=Y(e.memoryId),i=Y(e.at)??t.toISOString(),a={id:`${n}_${t.getTime()}_${Math.random().toString(36).slice(2,7)}`,at:i,event:n};if(n===`memory.accepted`&&r)return{...a,action:`entered`,memoryId:r,label:`${r} entered memory`,detail:kt(e)};if(n===`memory.merged`&&r){let t=Array.isArray(e.mergedIds)?e.mergedIds.length:0;return{...a,action:`merged`,memoryId:r,label:`${r} merged`,detail:t>0?`${t} records folded in`:void 0}}if(n===`memory.recovered`&&r)return{...a,action:`recovered`,memoryId:r,label:`${r} recovered`,detail:Y(e.reason)};if(n===`memory.deleted`&&r)return{...a,action:`exited`,memoryId:r,label:`${r} exited memory`,detail:At(e)};if(n===`memory.updated`&&r){let t=Y(e.status)??`updated`;return{...a,action:t===`deleted`?`exited`:`updated`,memoryId:r,label:t===`deleted`?`${r} exited memory`:`${r} updated → ${t}`,detail:kt(e)}}if(n===`memory.graph_edge_added`){let t=Y(e.from),n=Y(e.to);if(!t?.startsWith(`mem:`)||!n?.startsWith(`mem:`))return null;let r=Y(e.relation)??`related_to`,i=X(e.weight),o=Array.isArray(e.evidence)?e.evidence.filter(e=>typeof e==`string`):[];return{...a,action:`related`,memoryId:t.startsWith(`mem:`)?t.slice(4):void 0,label:`${jt(t)} ↔ ${jt(n)}`,detail:[r,i===void 0?void 0:`weight ${i.toFixed(2)}`,o.length>0?`why: ${o.join(`, `)}`:void 0].filter(Boolean).join(` · `)}}return n===`memory.relationships_rebuilt`?{...a,action:`related`,label:`Memory relationships rebuilt`,detail:`${X(e.added)??0} added / ${X(e.proposed)??0} proposed`}:n===`memory.superseded`&&r?{...a,action:`superseded`,memoryId:r,label:`${r} → superseded`,detail:Y(e.reason)??kt(e)}:n===`memory.archived`&&r?{...a,action:`archived`,memoryId:r,label:`${r} → archived`,detail:Y(e.reason)}:n===`memory.staled`&&r?{...a,action:`staled`,memoryId:r,label:`${r} → staled`,detail:Y(e.reason)??`anchor drift detected`}:n===`memory.contradicted`&&r?{...a,action:`contradicted`,memoryId:r,label:`${r} → contradicted`,detail:Y(e.reason)??`conflicting evidence`}:null}var Ot=i()(e=>({items:[],pushEvent:t=>e(e=>{let n=Dt(t);return n?{items:[n,...Et.has(n.action)?e.items.filter(e=>!(Et.has(e.action)&&e.memoryId===n.memoryId)):e.items].slice(0,Tt)}:e}),clear:()=>e({items:[]})}));function Y(e){return typeof e==`string`&&e.length>0?e:void 0}function X(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function kt(e){let t=[Y(e.kind),Y(e.persistence)],n=X(e.confidence),r=X(e.freshness);return n!==void 0&&t.push(`confidence ${n.toFixed(2)}`),r!==void 0&&t.push(`freshness ${r.toFixed(2)}`),t.filter(Boolean).join(` · `)||void 0}function At(e){let t=Y(e.reason),n=X(e.removedEdges);return[t,n===void 0?void 0:`${n} edges removed`].filter(Boolean).join(` · `)||void 0}function jt(e){let t=e.replace(/^mem:/,``);return t.length>26?`${t.slice(0,23)}…`:t}function Mt(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 Nt(e){let t=e.payload,n=Array.isArray(t.phases)?t.phases:void 0,r=Mt(n);E.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,multiBoard:t.multiBoard===!0,lastError:r===`failed`?E.getState().lastError:null})}function Pt(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};E.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 Z(e){let t=e.payload,n=typeof t.title==`string`&&t.title?t.title:`Goal`,r=typeof t.error==`string`&&t.error?t.error:void 0;if(e.type===`goal.paused`){E.getState().setState({status:`paused`,autonomous:!1,lastEvent:`paused`}),j.info(`Goal paused`);return}if(e.type===`goal.resumed`){E.getState().setState({status:`running`,autonomous:!0,lastEvent:`resumed`}),j.info(`Goal resumed`);return}if(e.type===`goal.stopped`){E.getState().setState({status:`stopped`,autonomous:!1,lastEvent:`stopped`}),j.warn(`Goal stopped`);return}if(e.type===`goal.cleared`){E.getState().clear();return}if(e.type===`goal.reverted`){let e=t.ok===!0,n=typeof t.reverted==`number`?t.reverted:0,r=typeof t.reason==`string`?t.reason:void 0;e?j.success(n>0?`Reverted ${n} commit${n===1?``:`s`}`:`Nothing to revert`):j.error(`Revert failed: ${r??`unknown error`}`),E.getState().setState({lastEvent:`reverted`});return}if(e.type===`goal.saved`){E.getState().setState({lastEvent:`saved`}),j.success(`Goal graph saved`);return}if(e.type===`goal.completed`){E.getState().setState({status:`completed`,autonomous:!1,overallPercent:100,lastEvent:`completed`,lastError:null}),j.success(`${n} completed`);return}if(e.type===`goal.failed`||e.type===`goal.error`){let e=r??(typeof t.message==`string`?t.message:`${n} failed`);E.getState().setState({status:`failed`,autonomous:!1,lastEvent:`failed`,lastError:e}),j.error(e)}}function Ft(e){let t=e.payload;E.getState().setState({lastEvent:`list`,graphs:Array.isArray(t.graphs)?t.graphs:[]})}function It(e){let t=e.payload;re.getState().setGoal(t)}function Lt(e){let t=e.payload;c.getState().set(t),t.yolo===!0&&s.getState().confirmInfo&&s.getState().hideConfirm()}function Rt(e){if(!f(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.`;r.getState().addMessage({role:`assistant`,content:n})}function zt(e){if(!f(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.`;r.getState().addMessage({role:`assistant`,content:[n,t.request?.question??``,e?`_${e}_`:``].filter(Boolean).join(`
|
|
7
|
+
`).filter(e=>e.length>0)))}function Ue(e){if(!f(e))return;u(e);let t=L(e);if(t?.kind!==`executed`)return;let{currentToolId:n}=r.getState(),i=t.id?r.getState().getToolMessageId(t.id):n;i&&(p.drop(i),t.id?r.getState().setToolResultByUseId(t.id,t.output??``,t.ok):r.getState().setToolResult(i,t.output??``,t.ok),r.getState().updateMessage(i,{toolDurationMs:t.durationMs,...t.sage&&t.sage.length>0?{sageLines:t.sage}:{}})),t.id&&r.getState().updateExecution(t.id,{completedAt:Date.now(),durationMs:t.durationMs,output:t.output,ok:t.ok}),n&&i===n&&r.getState().setCurrentToolId(null)}function We(e){if(!f(e))return;let t=e.payload;if(c.getState().yolo===!0&&!t.boundaryReason){h(b.getState().wsUrl).sendConfirm(t.id,`yes`),s.getState().hideConfirm();return}s.getState().showConfirm({id:t.id,toolName:t.toolName,input:t.input,suggestedPattern:t.suggestedPattern,decisionSource:t.decisionSource,riskTier:t.riskTier,boundaryReason:t.boundaryReason});try{Pe()}catch{}Fe(),Ie(`${g.getState().projectName||`Agent`} needs approval`,`Tool "${t.toolName}" is waiting for your decision.`,`agent-confirm`),typeof document<`u`&&document.hidden&&B(`attention`)}function Ge(e){if(!f(e))return;let i=ee(e,{status:`string`},{iterations:`number`,finalText:`string`,error:`object`});if(!i)return;let a=i.iterations??1;p.flushAll(),r.getState().flushThinkingLog(Math.max(1,a)),g.getState().setIteration(null),r.getState().setLoading(!1);let o=r.getState().currentAssistantMessageId,s=i.status===`done`?i.finalText?.trim():void 0;if(o){let e=r.getState().messages.find(e=>e.id===o);r.getState().updateMessage(o,{content:e?.content?.trim()?e.content:s??e?.content??``}),r.getState().finalizeMessage(o)}else if(s){let e=r.getState().runStart,t=n(s).stripped.trim(),i=r.getState().messages,a;for(let t=i.length-1;t>=0;t--){let n=i[t];if(n?.role===`assistant`&&(!e||n.timestamp>=e.at)){a=n;break}}let o=a?.content.trim();if(!(o!==void 0&&(o===s||o===t))){let e=r.getState().addMessage({role:`assistant`,content:s});r.getState().finalizeMessage(e)}}r.getState().setCurrentAssistantMessage(null),r.getState().clearThinking();let c=r.getState().runStart;if(c&&i.status===`done`){let e=r.getState().messages,n=-1,i=0;for(let r=e.length-1;r>=0;r--){let a=t(e[r]);if(a.role===`assistant`&&n===-1&&a.content&&(n=r),a.role===`tool`&&a.timestamp>=c.at&&(i+=1),a.role===`user`&&a.timestamp<=c.at)break}if(n!==-1){let t=g.getState().cost;r.getState().updateMessage(e[n]?.id,{runSummary:{iterations:a,tools:i,durationMs:Date.now()-c.at,costDelta:Math.max(0,t-c.cost)}})}}if(r.getState().setRunStart(null),i.status!==`done`&&i.error)r.getState().addMessage({role:`assistant`,content:`Error: ${i.error.message}`,isError:!0}),j.error(`Run ended: ${i.error.message}`),Ie(`${g.getState().projectName||`Agent`} run failed`,i.error.message),typeof document<`u`&&document.hidden&&B(`error`);else if(i.status===`done`){if(typeof document<`u`&&document.hidden&&(j.success(`Run completed in ${a} iteration${a===1?``:`s`}`),Ie(`${g.getState().projectName||`Agent`} run finished`,`Completed in ${a} iteration${a===1?``:`s`}.`),B(`ready`)),Fe(),b.getState().soundOnComplete)try{Ne()}catch{}typeof document<`u`&&document.dispatchEvent(new CustomEvent(`chat:next-step-countdown`))}let l=r.getState().dequeue();if(!l)return;let u=h(b.getState().wsUrl),d=l.images??[];if(r.getState().addMessage({role:`user`,content:l.text,...d.length>0?{attachments:d.map(e=>({id:e.id,kind:`image`,dataUrl:e.dataUrl,mediaType:e.mediaType,bytes:e.bytes,name:e.name}))}:{}}),l.mode===`btw`){u.sendMailboxMessage({type:`btw`,to:`leader`,subject:`btw from WebUI`,body:l.text,priority:`normal`,audience:`all`});return}r.getState().setLoading(!0),u.sendMessage(l.text,d.length>0?je(d):void 0)}var Ke={"coordinator.status":e=>{let t=e.payload;C.getState().setCoordinatorStatus(t.status,t.mode),t.taskQueue&&C.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;C.getState().updateCoordinatorStats(t)},"budget.threshold_reached":e=>{let t=e.payload;C.getState().pushEvent(`budget.threshold_reached`,t,t.ts??Date.now(),t.subagentId,t.taskId),t.limit>0&&t.used/t.limit*100>=85&&C.getState().recordBudgetAlert(t.subagentId,t.kind,t.used,t.limit),C.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;C.getState().recordBudgetDecision(t.subagentId,t.kind,t.decision,n),C.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;C.getState().recordBudgetExtended(t.subagentId,t.kind,t.extendedTo),C.getState().pushEvent(`subagent.budget_extended`,t,Date.now(),t.subagentId)},"consensus.vote_initiated":e=>{let t=e.payload;C.getState().pushConsensusVote(t.changeId,t.title,t.eligible),C.getState().pushEvent(`consensus.vote_initiated`,t,Date.now()),j.info(`Vote started: `+t.title)},"consensus.vote_cast":e=>{let t=e.payload,n=C.getState().consensusVotes.get(t.changeId)?.eligible.find(e=>e.agentId===t.voterId);C.getState().recordConsensusVote(t.changeId,t.voterId,n?.agentName??t.voterId,t.value),C.getState().pushEvent(`consensus.vote_cast`,t,Date.now(),t.voterId)},"consensus.vote_resolved":e=>{let t=e.payload;C.getState().resolveConsensusVote(t.changeId,t.result,t.approveCount,t.rejectCount),C.getState().pushEvent(`consensus.vote_resolved`,t,Date.now()),j.info(`Vote resolved: `+t.result+` (y`+t.approveCount+` n`+t.rejectCount+`)`)},"task.pending":e=>{let t=e.payload;C.getState().pushTaskPending(t.taskId,t.description,t.priority),C.getState().pushEvent(`task.pending`,t,Date.now())},"task.started":e=>{let t=e.payload;C.getState().startTask(t.taskId,t.subagentId),C.getState().pushEvent(`task.started`,t,Date.now(),t.subagentId)},"task.completed":e=>{let t=e.payload;C.getState().completeTask(t.taskId,t.status,t.durationMs),C.getState().pushEvent(`task.completed`,t,Date.now(),t.subagentId)},"task.failed":e=>{let t=e.payload;C.getState().failTask(t.taskId,t.error),C.getState().pushEvent(`task.failed`,{taskId:t.taskId,subagentId:t.subagentId,error:String(t.error).slice(0,120)},Date.now(),t.subagentId),j.error(`Task failed: `+String(t.error).slice(0,80))}};function G(){let e=h();e?.send?.({type:`mailbox.messages`,payload:{limit:30,incompleteOnly:!0}}),e?.send?.({type:`mailbox.agents`,payload:{}})}var K=null;function q(){K!==null&&clearTimeout(K),K=setTimeout(()=>{K=null,G()},300)}function qe(e){let t=e.payload;if(t.error){y.getState().setError(t.error);return}y.getState().setTree(t.root,t.tree)}function Je(e){let t=e.payload;if(t.error){y.getState().setError(t.error);return}y.getState().openFile(t.filePath,t.content)}function Ye(e){let t=e.payload;t.success?y.getState().markSaved(t.filePath):t.error&&y.getState().setError(`Save failed: ${t.error}`)}function Xe(e){let t=d(`mailbox.event`,e.payload);t&&(m.getState().pushEvent(t),m.getState().setActive(!0)),q()}function Ze(e){let t=e.payload;t?.messages&&A.getState().setMessages(t.messages)}function Qe(e){let t=e.payload;t?.agents&&A.getState().setAgents(t.agents)}function $e(e){let t=d(`mailbox.received`,e.payload);t&&(m.getState().pushEvent(t),m.getState().setActive(!0)),q()}function et(e){q()}function tt(e){A.getState().setMessages([]),G()}function nt(e){q()}function rt(e){let t=e.payload;t&&typeof t.totalRemoved==`number`&&A.getState().setLastCompaction({readByAllRemoved:t.readByAllRemoved??0,expiredRemoved:t.expiredRemoved??0,stalePurged:t.stalePurged??0,totalRemoved:t.totalRemoved,remaining:t.remaining??0}),q()}var it={"files.tree":qe,"files.read":Je,"files.written":Ye,"mailbox.event":Xe,"mailbox.messages":Ze,"mailbox.agents":Qe,"mailbox.received":$e,"mailbox.agent_registered":et,"mailbox.cleared":tt,"mailbox.purged":nt,"mailbox.compacted":rt};function at(e){let t=e.payload;O.getState().setSnapshot(t.worktrees??[],t.baseBranch??``)}function ot(e){let t=e.payload;O.getState().pushEvent(t)}function st(e){let t=e.payload;O.getState().setOrphans(t.orphans??[],t.canClean??!1,t.reason)}function ct(e){let t=e.payload;O.getState().setCleanResult({...t,at:Date.now()})}function lt(e){let t=e.payload;O.getState().setMergeResult({...t,at:Date.now()})}function ut(e){let t=e.payload;O.getState().setDiff(t.dir,t.summary)}function dt(e){k.getState().applyEvent(e.payload);let t=d(`subagent.event`,e.payload);t&&(m.getState().pushEvent(t),m.getState().setActive(!0))}function ft(e){let t=R(e);t?.kind===`concurrency`&&k.setState({fleetConcurrency:t.active,fleetConcurrencyMax:t.maximum})}function pt(e){let t=R(e);if(t?.kind!==`client-status`)return;let n=t.status;oe.getState().setCurrentSession({clientType:n.clientType,clientId:n.clientId,agentCount:n.agentCount,model:n.model,mode:n.mode,toolCalls:n.toolCalls,inputTokens:n.inputTokens,outputTokens:n.outputTokens,cacheTokens:n.cacheTokens,costUsd:n.costUsd,timestamp:n.timestamp})}function mt(e){let t=R(e);if(t?.kind!==`sessions`)return;oe.getState().setLiveSessions(t.sessions);let n=Date.now();if(n-gt>=5e3&&(gt=n,G()),n-ht<1e3)return;ht=n;let r=d(`sessions.status_update`,e.payload);r&&(m.getState().pushEvent(r),m.getState().setActive(!0))}var ht=0,gt=0,_t={"worktree.state":at,"worktree.event":ot,"worktree.orphans":st,"worktree.cleanup_result":ct,"worktree.merge_result":lt,"worktree.diff_result":ut,"subagent.event":dt,"fleet.concurrency_update":ft,"client.status_update":pt,"sessions.status_update":mt};function vt(e,t){let n=e=>e.trim().replace(/\s+/g,` `).toLowerCase();return n(e)===n(t)}var yt=50,bt=200;function xt(e){return e.length<=300?e:`${e.slice(0,299)}…`}function St(e){return{...e,text:xt(e.text)}}function Ct(e){let t=[];for(let n of Object.values(e))n.state===`exited`&&t.push(n);if(t.length<=bt)return e;t.sort((e,t)=>(t.exitedAt??t.lastSeenAt).localeCompare(e.exitedAt??e.lastSeenAt));let n={...e};for(let e of t.slice(bt))delete n[e.id];return n}var J=i()(e=>({traces:[],contextMemories:{},transitions:[],pushTrace:t=>e(e=>{let n={...e.contextMemories},r=[...e.transitions],i=t.injected.map(St),a=t.activated.map(St);for(let e of i){let i=n[e.id];n[e.id]={...e,state:i?.state===`active`?`active`:`injected`,trigger:t.trigger,enteredAt:i?.enteredAt??t.at,lastSeenAt:t.at};let a=`${t.at}_injected_${e.id}`;r.some(e=>e.id===a)||r.unshift({id:a,at:t.at,memoryId:e.id,action:`injected`,reason:`${t.trigger} · score ${e.score.toFixed(2)}`})}return{traces:[{...t,activated:a,injected:i},...e.traces.filter(e=>e.runId!==t.runId)].slice(0,yt),contextMemories:Ct(n),transitions:r.slice(0,100)}}),applyContextSnapshot:t=>e(e=>{let n={...e.contextMemories},r=[...e.transitions],i=new Set(t.activeMemoryIds);for(let e of t.activeMemoryIds){let r=n[e];n[e]=r?{...r,state:`active`,lastSeenAt:t.at,exitedAt:void 0}:wt(e,t.at,`active`)}for(let e of t.enteredMemoryIds){let n=`${t.at}_entered_${e}`;r.some(e=>e.id===n)||r.unshift({id:n,at:t.at,memoryId:e,action:`entered`,reason:`present in provider request`})}for(let e of t.exitedMemoryIds){let i=n[e];i&&(n[e]={...i,state:`exited`,exitedAt:t.at});let a=`${t.at}_exited_${e}`;r.some(e=>e.id===a)||r.unshift({id:a,at:t.at,memoryId:e,action:`exited`,reason:`absent from provider request`})}for(let[e,a]of Object.entries(n))if((a.state===`injected`||a.state===`active`)&&!i.has(e)&&(n[e]={...a,state:`exited`,exitedAt:t.at},!t.exitedMemoryIds.includes(e))){let n=`${t.at}_exited_before_provider_${e}`;r.some(e=>e.id===n)||r.unshift({id:n,at:t.at,memoryId:e,action:`exited`,reason:a.state===`injected`?`removed before provider request`:`absent from provider context snapshot`})}return{contextMemories:Ct(n),transitions:r.slice(0,100)}}),resetContext:()=>e({contextMemories:{},transitions:[]}),clear:()=>e({traces:[],contextMemories:{},transitions:[]})}));function wt(e,t,n){return{id:e,kind:`unknown`,text:`Memory details were not present in this UI process.`,score:0,relationStrength:0,anchors:[],tags:[],activationReasons:[],importance:0,confidence:0,freshness:0,persistence:`unknown`,state:n,trigger:`context snapshot`,enteredAt:t,lastSeenAt:t,isPlaceholder:!0}}var Tt=100,Et=new Set([`exited`,`superseded`,`archived`,`staled`,`contradicted`]);function Dt(e,t=new Date){let n=e.event,r=Y(e.memoryId),i=Y(e.at)??t.toISOString(),a={id:`${n}_${t.getTime()}_${Math.random().toString(36).slice(2,7)}`,at:i,event:n};if(n===`memory.accepted`&&r)return{...a,action:`entered`,memoryId:r,label:`${r} entered memory`,detail:kt(e)};if(n===`memory.merged`&&r){let t=Array.isArray(e.mergedIds)?e.mergedIds.length:0;return{...a,action:`merged`,memoryId:r,label:`${r} merged`,detail:t>0?`${t} records folded in`:void 0}}if(n===`memory.recovered`&&r)return{...a,action:`recovered`,memoryId:r,label:`${r} recovered`,detail:Y(e.reason)};if(n===`memory.deleted`&&r)return{...a,action:`exited`,memoryId:r,label:`${r} exited memory`,detail:At(e)};if(n===`memory.updated`&&r){let t=Y(e.status)??`updated`;return{...a,action:t===`deleted`?`exited`:`updated`,memoryId:r,label:t===`deleted`?`${r} exited memory`:`${r} updated → ${t}`,detail:kt(e)}}if(n===`memory.graph_edge_added`){let t=Y(e.from),n=Y(e.to);if(!t?.startsWith(`mem:`)||!n?.startsWith(`mem:`))return null;let r=Y(e.relation)??`related_to`,i=X(e.weight),o=Array.isArray(e.evidence)?e.evidence.filter(e=>typeof e==`string`):[];return{...a,action:`related`,memoryId:t.startsWith(`mem:`)?t.slice(4):void 0,label:`${jt(t)} ↔ ${jt(n)}`,detail:[r,i===void 0?void 0:`weight ${i.toFixed(2)}`,o.length>0?`why: ${o.join(`, `)}`:void 0].filter(Boolean).join(` · `)}}return n===`memory.relationships_rebuilt`?{...a,action:`related`,label:`Memory relationships rebuilt`,detail:`${X(e.added)??0} added / ${X(e.proposed)??0} proposed`}:n===`memory.superseded`&&r?{...a,action:`superseded`,memoryId:r,label:`${r} → superseded`,detail:Y(e.reason)??kt(e)}:n===`memory.archived`&&r?{...a,action:`archived`,memoryId:r,label:`${r} → archived`,detail:Y(e.reason)}:n===`memory.staled`&&r?{...a,action:`staled`,memoryId:r,label:`${r} → staled`,detail:Y(e.reason)??`anchor drift detected`}:n===`memory.contradicted`&&r?{...a,action:`contradicted`,memoryId:r,label:`${r} → contradicted`,detail:Y(e.reason)??`conflicting evidence`}:null}var Ot=i()(e=>({items:[],pushEvent:t=>e(e=>{let n=Dt(t);return n?{items:[n,...Et.has(n.action)?e.items.filter(e=>!(Et.has(e.action)&&e.memoryId===n.memoryId)):e.items].slice(0,Tt)}:e}),clear:()=>e({items:[]})}));function Y(e){return typeof e==`string`&&e.length>0?e:void 0}function X(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function kt(e){let t=[Y(e.kind),Y(e.persistence)],n=X(e.confidence),r=X(e.freshness);return n!==void 0&&t.push(`confidence ${n.toFixed(2)}`),r!==void 0&&t.push(`freshness ${r.toFixed(2)}`),t.filter(Boolean).join(` · `)||void 0}function At(e){let t=Y(e.reason),n=X(e.removedEdges);return[t,n===void 0?void 0:`${n} edges removed`].filter(Boolean).join(` · `)||void 0}function jt(e){let t=e.replace(/^mem:/,``);return t.length>26?`${t.slice(0,23)}…`:t}function Mt(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 Nt(e){let t=e.payload,n=Array.isArray(t.phases)?t.phases:void 0,r=Mt(n);E.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,multiBoard:t.multiBoard===!0,lastError:r===`failed`?E.getState().lastError:null})}function Pt(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};E.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 Z(e){let t=e.payload,n=typeof t.title==`string`&&t.title?t.title:`Goal`,r=typeof t.error==`string`&&t.error?t.error:void 0;if(e.type===`goal.paused`){E.getState().setState({status:`paused`,autonomous:!1,lastEvent:`paused`}),j.info(`Goal paused`);return}if(e.type===`goal.resumed`){E.getState().setState({status:`running`,autonomous:!0,lastEvent:`resumed`}),j.info(`Goal resumed`);return}if(e.type===`goal.stopped`){E.getState().setState({status:`stopped`,autonomous:!1,lastEvent:`stopped`}),j.warn(`Goal stopped`);return}if(e.type===`goal.cleared`){E.getState().clear();return}if(e.type===`goal.reverted`){let e=t.ok===!0,n=typeof t.reverted==`number`?t.reverted:0,r=typeof t.reason==`string`?t.reason:void 0;e?j.success(n>0?`Reverted ${n} commit${n===1?``:`s`}`:`Nothing to revert`):j.error(`Revert failed: ${r??`unknown error`}`),E.getState().setState({lastEvent:`reverted`});return}if(e.type===`goal.saved`){E.getState().setState({lastEvent:`saved`}),j.success(`Goal graph saved`);return}if(e.type===`goal.completed`){E.getState().setState({status:`completed`,autonomous:!1,overallPercent:100,lastEvent:`completed`,lastError:null}),j.success(`${n} completed`);return}if(e.type===`goal.failed`||e.type===`goal.error`){let e=r??(typeof t.message==`string`?t.message:`${n} failed`);E.getState().setState({status:`failed`,autonomous:!1,lastEvent:`failed`,lastError:e}),j.error(e)}}function Ft(e){let t=e.payload;E.getState().setState({lastEvent:`list`,graphs:Array.isArray(t.graphs)?t.graphs:[]})}function It(e){let t=e.payload;re.getState().setGoal(t)}function Lt(e){let t=e.payload;c.getState().set(t),t.yolo===!0&&s.getState().confirmInfo&&s.getState().hideConfirm()}function Rt(e){if(!f(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.`;r.getState().addMessage({role:`assistant`,content:n})}function zt(e){if(!f(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.`;r.getState().addMessage({role:`assistant`,content:[n,t.request?.question??``,e?`_${e}_`:``].filter(Boolean).join(`
|
|
8
8
|
|
|
9
9
|
`)}),t.intervened&&j.info(`Brain intervened: agent steered`)}else t.event===`brain.decision_denied`&&j.warn(`Brain denied: ${t.decision?.reason??t.request?.question??`request`}`)}function Bt(e){if(!f(e))return;let t=e.payload;m.getState().pushEvent({id:`memory_${Date.now()}_${Math.random().toString(36).slice(2,7)}`,kind:`memory:event`,timestamp:Date.now(),source:`sage`,target:`leader`,label:t.event.replace(/^memory\./,``),data:t,color:`#a78bfa`,flowGroup:`memory`}),t.event===`memory.injector_run`&&J.getState().pushTrace(t),t.event===`memory.context_snapshot`&&J.getState().applyContextSnapshot(t),Ot.getState().pushEvent(t),t.event===`memory.staled`?j.warn(`Memory became stale: ${String(t.memoryId??``)}`):t.event===`memory.contradicted`?j.warn(`Memory contradicted: ${String(t.memoryId??``)}`):t.event===`memory.hygiene_completed`&&j.info(`SAGE hygiene completed`)}function Vt(e){let t=e.payload,n=typeof t.kind==`string`?t.kind:typeof t.event==`string`?t.event:`collab.event`;m.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`}),m.getState().setActive(!0)}function Ht(e){Vt(e);let t=e.payload;t?.phase===`consumed`?j.success(`Tool injection applied${t.toolName?` to ${t.toolName}`:``}`):j.info(`Collab tool injection queued`)}function Ut(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();re.getState().appendJournalEntry({iteration:n,task:r,status:i,timestamp:a}),m.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`}),m.getState().setActive(!0)}function Wt(e){let t=e.payload;g.getState().setEnv({cwd:t.cwd,projectRoot:t.projectRoot,projectName:t.projectRoot.split(/[/\\]/).pop()||t.projectRoot}),y.getState().setTreeLoading(!0),h().send({type:`files.tree`,payload:{path:t.cwd}})}function Gt(e){let t=e.payload,n=s.getState().refinePanel,i=r.getState().pendingRefinement;if(!n&&i){r.getState().setRefining(!1);let e=i.text,n=i.images?.length?i.images.map((e,t)=>({id:`pr_${Date.now()}_${t}`,dataUrl:`data:${e.mime};base64,${e.data}`,mediaType:e.mime,bytes:Math.round(e.data.length*3/4)})):void 0;if(t.error){r.getState().setPendingRefinement(null),r.getState().enqueue(e,`queue`,n);return}let a=t.refined??``;if(!a||vt(a,e)){r.getState().setPendingRefinement(null),r.getState().enqueue(e,`queue`,n);return}r.getState().setPendingRefinement(null),s.getState().setRefinePanel({original:e,refined:a,english:t.english||a,status:`ready`,...t.refinedWith?{provider:t.refinedWith.provider,model:t.refinedWith.model}:{},error:void 0,errorKind:void 0,resolve:()=>{}});return}if(!n)return;if(t.error){if(t.errorKind===`timeout`&&!n.retried&&t.retryTimeoutMs){s.getState().setRefinePanel({...n,status:`refining`,retried:!0}),h().refineModel(n.original,{timeoutMs:t.retryTimeoutMs});return}s.getState().setRefinePanel({...n,status:`failed`,error:t.error,errorKind:t.errorKind,fallbackRef:t.fallbackRef});return}let a=n.original;if(vt(t.refined,a)){s.getState().setRefinePanel(null),r.getState().addMessage({role:`user`,content:a}),r.getState().setLoading(!0),h().sendMessage(a);return}s.getState().setRefinePanel({...n,status:`ready`,refined:t.refined,english:t.english,...t.refinedWith?{provider:t.refinedWith.provider,model:t.refinedWith.model}:{},error:void 0,errorKind:void 0})}function Kt(e){let t=e.payload;ie.getState().setInfo({...t,fetchedAt:Date.now()})}function qt(e){let t=e.payload;S.getState().setFiles(t.files??[],t.error??null)}function Jt(e){let t=e.payload;S.getState().selectedPath===t.path&&S.getState().setDiff({path:t.path,oldText:t.oldText??``,newText:t.newText??``,binary:t.binary,tooLarge:t.tooLarge,error:t.error})}function Yt(e){let t=e.payload;te.getState().setSnapshot({count:t.count,maxConcurrent:t.maxConcurrent,jobs:t.jobs??[]})}function Xt(e){let t=e.payload;te.getState().recordFired(t.name,t.ts)}var Zt={"goal-state.updated":It,"prefs.updated":Lt,"goal.state":Nt,"goal.progress":Pt,"goal.paused":Z,"goal.resumed":Z,"goal.stopped":Z,"goal.cleared":Z,"goal.reverted":Z,"goal.saved":Z,"goal.completed":Z,"goal.failed":Z,"goal.error":Z,"goal.list":Ft,"brain.answer":Rt,"brain.event":zt,"memory.event":Bt,"collab.event":Vt,"collab.injection.granted":Ht,"eternal.iteration":Ut,"working_dir.changed":Wt,"model.refine_result":Gt,"git.info":Kt,"git.changes":qt,"git.diff":Jt,"cron.snapshot":Yt,"cron.job_fired":Xt};function Qt(e){let t=e.payload;!t.jobId||!t.kind||w.getState().jobStarted(t.jobId,t.kind)}function $t(e){let t=e.payload;!t.jobId||!t.phase||!Number.isFinite(t.completed)||!Number.isFinite(t.total)||w.getState().jobProgress(t.jobId,{phase:t.phase,completed:t.completed??0,total:t.total??0})}function en(e){let t=e.payload;t.workspaceId&&w.getState().workspaceCompleted(t.workspaceId)}function tn(e){let t=e.payload;t.snapshot&&w.getState().setSnapshot(t.snapshot,t.stale??!1)}function nn(e){let t=e.payload;t.reportId&&w.getState().reportReady(t.reportId)}function rn(e){let t=e.payload;t.jobId&&w.getState().jobFailed(t.jobId,t.error??`TechStack job failed`)}function an(e){let t=e.payload;t.jobId&&w.getState().jobCancelled(t.jobId)}var on={"techstack.job.started":Qt,"techstack.job.progress":$t,"techstack.workspace.completed":en,"techstack.snapshot.updated":tn,"techstack.report.ready":nn,"techstack.job.failed":rn,"techstack.job.cancelled":an};function sn(e){if(typeof e!=`string`)return Date.now();let t=Date.parse(e);return Number.isFinite(t)?t:Date.now()}function Q(e){return`replay_${Date.now()}_${e}`}function cn(){return typeof window>`u`?!1:window.location.pathname===`/debug`||window.location.pathname===`/analytics`||window.location.pathname===`/refresh-debug`}function ln(e){return typeof e==`string`?e:JSON.stringify(e)}function un(e){return typeof e==`string`?e:Array.isArray(e)?e.filter(e=>!!e&&typeof e==`object`&&e.type===`text`&&typeof e.text==`string`).map(e=>e.text).join(`
|
|
10
10
|
`):``}function dn(e){if(typeof e==`string`)return e.trim();if(!e||typeof e!=`object`||Array.isArray(e))return``;let t=e;for(let e of[`id`,`name`,`type`]){let n=t[e];if(typeof n==`string`&&n.trim())return n.trim()}return``}function fn(e,t=[]){let n=[],r=new Map,i=0,a=0,o=(e,t,r)=>{t&&n.push({id:Q(n.length),role:e,content:t,timestamp:r})},s=e=>{n.push({id:Q(n.length),role:`system`,content:e.text,timestamp:sn(e.ts),isError:e.level===`error`||void 0})},c=e=>{if(typeof e==`string`)for(;a<t.length&&t[a].ts<e;)s(t[a]),a+=1},l=(e,t)=>{let r=e.trim();r&&(i+=1,n.push({id:Q(n.length),role:`system`,content:``,timestamp:t,thinkingLog:{iteration:i,text:r,startedAt:t,durationMs:0,replayed:!0}}))};for(let t of e){if(c(t.ts),t.role!==`user`&&t.role!==`assistant`&&t.role!==`system`)continue;let e=t.role,i=sn(t.ts);if(typeof t.content==`string`){o(e,t.content,i);continue}if(!Array.isArray(t.content))continue;let a=``,s=[];for(let c of t.content){if(c.type===`thinking`&&typeof c.thinking==`string`){s.push(c.thinking);continue}if(c.type===`text`&&typeof c.text==`string`){a+=(a?`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./ui-store-
|
|
1
|
+
import{n as e}from"./ui-store-BI3LH2q8.js";var t={chat:`chat`,agents:`chat`,files:`files`,changes:`changes`,mailbox:`mailbox`,skills:`skill`,worktrees:`chat`,design:`design-gallery`,officemap:`officemap`},n={chat:`chat`,files:`files`,changes:`changes`,mailbox:`mailbox`,skill:`skills`,officemap:`officemap`,"design-gallery":`design`},r={1:`chat`,2:`files`,3:`changes`,4:`mailbox`,5:`skills`,6:`officemap`,0:`design`},i={chat:`Ctrl+1`,agents:``,files:`Ctrl+2`,changes:`Ctrl+3`,mailbox:`Ctrl+4`,skills:`Ctrl+5`,worktrees:`Ctrl+Shift+W`,design:`Ctrl+0`,officemap:`Ctrl+6`};function a(e){return t[e]??`chat`}function o(e){return i[e]??``}function s(t){let n=e.getState();n.currentView!==t&&n.setCurrentView(t)}function c(t){let n=e.getState();n.setSidebarOpen(!0),n.selectActivity(t),s(a(t))}function l(t){let n=e.getState();if(!n.sidebarOpen)n.setSidebarOpen(!0),n.selectActivity(t);else if(n.activeActivity===t){n.setSidebarOpen(!1);return}else n.activeActivity===`agents`&&n.setSidebarOpen(!0),n.selectActivity(t);s(a(t))}function u(t){let n=e.getState();if(n.currentView===t){c(`chat`);return}n.setSidebarOpen(!1),s(t)}function d(t){let r=n[t];if(r){c(r);return}e.getState().setSidebarOpen(!1),s(t)}export{o as a,l as i,d as n,c as o,u as r,r as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-QTnfLwEv.js";import{ha as t}from"./vendor-9hC4n4Me.js";import{n}from"./utils-DzRQUvln.js";import{t as r}from"./session-store-w5G2euPs.js";function i(e){typeof requestAnimationFrame==`function`?requestAnimationFrame(e):queueMicrotask(e)}var a=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,i(()=>{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()}},o={maxReconnectAttempts:10,initialBackoffMs:1e3,maxBackoffMs:3e4,backoffMultiplier:2,jitterRatio:0,queueLimit:1e3,heartbeatIntervalMs:0,heartbeatTimeoutMs:0};function s(){return{phase:`idle`,reconnectAttempt:0,lastActivityAt:null,stopped:!1}}function c(e){return e.stopped?e:{...e,phase:`connecting`}}function l(e,t=Date.now()){return{...e,phase:`open`,reconnectAttempt:0,lastActivityAt:t,stopped:!1}}function u(e,t=Date.now()){return{...e,lastActivityAt:t}}function d(e){return{...e,phase:`closed`,stopped:!0}}function f(e){return{...e,phase:`idle`,reconnectAttempt:0,stopped:!1}}function p(e,t,n=Date.now(),r=Math.random){if(e.stopped||e.reconnectAttempt>=t.maxReconnectAttempts)return{state:{...e,phase:`closed`},plan:null};let i=e.reconnectAttempt+1,a=Math.min(t.initialBackoffMs*t.backoffMultiplier**(i-1),t.maxBackoffMs),o=(r()*2-1)*t.jitterRatio,s=Math.max(0,Math.round(a*(1+o)));return{state:{...e,phase:`reconnecting`,reconnectAttempt:i},plan:{attempt:i,delayMs:s,retryAt:n+s}}}function m(e,t,n){return n<=0?{queue:[],dropped:t}:e.length<n?{queue:[...e,t],dropped:null}:{queue:[...e.slice(e.length-n+1),t],dropped:e[0]??null}}var h=`abort,ping,user_message,tool.confirm_result,completion.request,model.switch,model.refine,autonomy.switch,context.clear,context.compact,context.debug,context.editor.open,context.editor.validate,context.editor.apply,context.mode.create,context.mode.delete,context.mode.switch,context.mode.update,context.modes.list,context.repair,mode.switch,modes.list,session.checkpoints,session.delete,session.new,session.rename,session.resume,session.rewind,session.save,sessions.list,side_effects.list,stats.get,todo.update,todos.clear,todos.get,todos.remove`.split(`,`),g=[`collab.join`,`collab.leave`,`collab.annotate`,`collab.resolve`,`collab.request_pause`,`collab.resume`,`collab.grant_control`,`collab.inject_tool`,`mailbox.agents`,`mailbox.clear`,`mailbox.compact`,`mailbox.messages`,`mailbox.purge`,`mailbox.send`],_=`brain.ask,brain.config.get,brain.config.set,brain.risk,brain.status,chronicle.facet,chronicle.facets,chronicle.graph,chronicle.metrics,chronicle.query,chronicle.status,config.doctor,design.list,design.materialize,design.set,design.state,design.swap,design.tune,design.use,design.verify,memory.list,memory.sage.backfillRecoverable,memory.sage.candidateResolve,memory.sage.delete,memory.sage.forFile,memory.sage.get,memory.sage.graph,memory.sage.list,memory.sage.listPage,memory.sage.recover,memory.sage.remember,memory.sage.update`.split(`,`),v=`auth.oauth.cancel,auth.oauth.code,auth.oauth.start,mcp.add,mcp.disable,mcp.discover,mcp.enable,mcp.list,mcp.prompt.get,mcp.prompts,mcp.remove,mcp.resource.read,mcp.resources,mcp.restart,mcp.sleep,mcp.update,mcp.wake,prompts.content,prompts.create,prompts.favorite,prompts.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.create,skills.edit,skills.export,skills.install,skills.list,skills.uninstall,skills.update`.split(`,`),ee=`goal-state.get,goal.addTask,goal.assess,goal.assignTask,goal.clear,goal.get,goal.list,goal.load,goal.moveTask,goal.pause,goal.resume,goal.retryTask,goal.revert,goal.runTask,goal.save,goal.selectPhase,goal.start,goal.state,goal.status,goal.stop,goal.taskStatus,goal.toggleAutonomous,plan.get,plan.item.update,plan.template_use,task.update,tasks.get`.split(`,`),te=`sdd.board.cancel_task,sdd.board.cleanup_worktrees,sdd.board.delete_task,sdd.board.destroy,sdd.board.get,sdd.board.list,sdd.board.pause,sdd.board.reassign,sdd.board.resume,sdd.board.retry,sdd.board.retry_all_failed,sdd.board.rollback,sdd.board.set_task_fallbacks,sdd.board.set_task_model,sdd.board.set_task_verification,sdd.board.split_task,sdd.board.stop,sdd.run.from_graph,sdd.run.from_spec,sdd.run.start,sdd.spec.approve,sdd.spec.discard,sdd.spec.get,sdd.spec.message,sdd.spec.start,specs.get,specs.list,specs.taskStatus`.split(`,`),y=[`files.list`,`files.read`,`files.tree`,`files.write`,`git.changes`,`git.diff`,`git.info`,`projects.add`,`projects.list`,`projects.select`,`working_dir.set`,`worktree.cleanup`,`worktree.diff`,`worktree.merge`,`worktree.remove`,`worktree.scan`,`shell.open`,`process.kill`,`process.killAll`,`process.list`,`terminal.close`,`terminal.create`,`terminal.input`,`terminal.resize`],b=`codebase.index.server.shutdown,connections.health,connections.service_action,diag.get,key.add,key.delete,key.set_active,key.update,prefs.get,prefs.update,provider.add,provider.clear_models,provider.models,provider.models.search,provider.probe,provider.remove,provider.status.clear,provider.status.get,provider.status.retry,provider.undo_clear,provider.update,providers.list,providers.saved,tool.disable,tool.enable,tools.list,webui.shutdown`.split(`,`),x=`error,log,pong,side_effects,agent.status_changed,agent.timeline.message,client.status_update,compaction.failed,completion.result,context.compacted,context.debug,context.editor.snapshot,context.editor.validation,context.editor.applied,context.mode.changed,context.modes.list,context.repaired,ctx.max_context,ctx.pct,delegate.completed,delegate.started,iteration.completed,iteration.limit_reached,iteration.started,model.refine_result,modes.list,provider.active_blocked,provider.error,provider.fallback,provider.response,provider.retry,provider.status_changed,provider.stream_error,provider.text_delta,provider.thinking_delta,run.result,session.checkpoints,session.damaged,session.end,session.rewound,session.start,session.stats,sessions.list,sessions.status_update,stats.get,token.cost_estimate_unavailable,token.threshold,tool.confirm_needed,tool.disabled,tool.enabled,tool.executed,tool.loop_detected,tool.progress,tool.started,tools.list,trust.persisted`.split(`,`),S=[`collab.annotation.added`,`collab.annotation.resolved`,`collab.event`,`collab.injection.granted`,`collab.participant.joined`,`collab.participant.left`,`collab.pause.granted`,`collab.pause.released`,`collab.state`,`mailbox.agent_registered`,`mailbox.agents`,`mailbox.cleared`,`mailbox.compacted`,`mailbox.event`,`mailbox.messages`,`mailbox.sent`,`mailbox.purged`,`mailbox.received`,`subagent.budget_extended`,`subagent.event`],C=`brain.answer,brain.config,brain.event,brain.status,chronicle.error,chronicle.facet_result,chronicle.facets_result,chronicle.graph_result,chronicle.metrics_result,chronicle.query_result,chronicle.status_result,config.doctor.result,design.list,design.materialize,design.set,design.state,design.swap,design.tune,design.use,design.verify,memory.event,memory.list,memory.sage.backfillRecoverable,memory.sage.candidateResolve,memory.sage.delete,memory.sage.forFile,memory.sage.get,memory.sage.graph,memory.sage.list,memory.sage.listPage,memory.sage.recover,memory.sage.remember,memory.sage.update`.split(`,`),ne=`mcp.content.error,mcp.content.selected,mcp.list,mcp.operation_result,mcp.prompts,mcp.resources,mcp.server.added,mcp.server.connected,mcp.server.disconnected,mcp.server.discovered,mcp.server.error,mcp.server.reconnected,mcp.server.removed,mcp.server.sleeping,mcp.server.updated,mcp.server.waking,prompts.content,prompts.created,prompts.favorite,prompts.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.created,skills.edited,skills.exported,skills.installed,skills.list,skills.uninstalled,skills.updated`.split(`,`),re=`budget.decision,budget.threshold_reached,coordinator.stats,coordinator.status,eternal.iteration,fleet.concurrency_update,goal-state.updated,goal.assess.result,goal.list,goal.paused,goal.resumed,goal.saved,goal.error,goal.stopped,goal.failed,goal.completed,goal.cleared,goal.reverted,goal.progress,goal.state,in_flight.ended,in_flight.started,plan.updated,task.completed,task.failed,task.pending,task.started,tasks.updated,todos.cleared,todos.updated`.split(`,`),ie=[`kanban.task.activity`,`sdd.board.lifecycle_result`,`sdd.board.list`,`sdd.board.snapshot`,`sdd.run.started`,`sdd.spec.agent_text`,`sdd.spec.error`,`sdd.spec.snapshot`,`specs.detail`,`specs.list`],ae=[`consensus.vote_cast`,`consensus.vote_initiated`,`consensus.vote_resolved`,`cron.job_fired`,`cron.snapshot`,`techstack.job.cancelled`,`techstack.job.failed`,`techstack.job.progress`,`techstack.job.started`,`techstack.report.delivered`,`techstack.report.ready`,`techstack.snapshot.updated`,`techstack.workspace.completed`],oe=`checkpoint.written,codemap.file_event,codemap.index_updated,codemap.tool_executed,codemap.tool_started,file.saved,files.list,files.read,files.tree,files.written,git.changes,git.diff,git.info,process.list,projects.added,projects.list,projects.selected,terminal.exit,terminal.output,working_dir.changed,worktree.cleanup_result,worktree.diff_result,worktree.event,worktree.merge_result,worktree.orphans,worktree.state`.split(`,`),se=[`auth.oauth.status`,`codebase.index.server.shutdown_result`,`connections.health_error`,`connections.health_result`,`connections.service_action_result`,`diag.get`,`key.operation_result`,`model.switch_result`,`prefs.updated`,`provider.catalog`,`provider.models`,`provider.models.search_result`,`provider.probe`,`provider.status.snapshot`,`providers.saved`],ce=[...h,...g,...y,...b,...ee,...te,..._,...v],le=[...x,...S,...oe,...se,...re,...ie,...ae,...C,...ne],ue=new Set(ce),de=new Set(le);function fe(e,t){return(t===`client`?ue:de).has(e)||e.startsWith(`kanban.`)&&e.length>7||e.startsWith(`agent-roster.`)&&e.length>13}var pe=new Set([`__proto__`,`constructor`,`prototype`]),me=32;function w(e,t,n){if(n>me)return{code:`too_deep`,message:`Protocol payload exceeds the nesting limit`,path:t};if(typeof e!=`object`||!e)return null;for(let r of Object.keys(e)){let i=`${t}.${r}`;if(pe.has(r))return{code:`unsafe_key`,message:`Unsafe protocol key: ${r}`,path:i};let a=w(e[r],i,n+1);if(a)return a}return null}function T(e,t){if(typeof e!=`object`||!e||Array.isArray(e))return{ok:!1,issue:{code:`invalid_envelope`,message:`Protocol message must be an object`}};let n=e;if(typeof n.type!=`string`||n.type.length===0)return{ok:!1,issue:{code:`invalid_type`,message:`Protocol message type must be a non-empty string`}};if(!fe(n.type,t))return{ok:!1,issue:{code:`unknown_type`,message:`Unknown ${t} message: ${n.type}`}};if(t===`server`&&!Object.hasOwn(n,`payload`))return{ok:!1,issue:{code:`invalid_envelope`,message:`Server protocol messages require a payload`}};let r=w(n,`$`,0);return r?{ok:!1,issue:r}:{ok:!0,message:e}}function he(e,t){try{return T(JSON.parse(e),t)}catch{return{ok:!1,issue:{code:`invalid_envelope`,message:`Protocol frame is not valid JSON`}}}}var ge=[`protocol.directional-decoder`,`protocol.recursive-key-safety`,`chronicle.query`,`chronicle.facet`,`chronicle.facets`,`chronicle.graph`,`chronicle.metrics`,`chronicle.status`,`connections.health`,`sdd.interview.continuity`,`sdd.run.from_graph`];function E(e){let t=e.protocolVersion,n=t===void 0,r=n?1:Math.min(t,1),i=n||Number.isInteger(t)&&t>=1,a=new Set(e.protocolCapabilities??[]);return{compatible:i,legacyPeer:n,version:r,capabilities:ge.filter(e=>a.has(e))}}var D={listTools(e){this.send({type:`tools.list`},e)},listMemory(e){this.send({type:`memory.list`},e)},listSageMemories(e){this.send({type:`memory.sage.list`},e)},listSageMemoriesPage(e,t){this.send({type:`memory.sage.listPage`,payload:{...e}},t)},getSage(e,t){this.send({type:`memory.sage.get`,payload:{id:e}},t)},getSageGraph(e,t,n){this.send({type:`memory.sage.graph`,payload:{query:e,...t}},n)},updateSage(e,t,n){this.send({type:`memory.sage.update`,payload:{id:e,...t}},n)},deleteSage(e,t){this.send({type:`memory.sage.delete`,payload:{id:e,...t===void 0?{}:{reason:t}}})},rememberSage(e,t){this.send({type:`memory.sage.remember`,payload:e},t)},findMemoriesForFile(e,t){this.send({type:`memory.sage.forFile`,payload:e},t)},recoverSage(e,t){this.send({type:`memory.sage.recover`,payload:e},t)},resolveMemoryCandidate(e,t){this.send({type:`memory.sage.candidateResolve`,payload:e},t)},backfillRecoverable(e,t){this.send({type:`memory.sage.backfillRecoverable`,payload:e},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}})},listMcpResources(e,t=!1){this.send({type:`mcp.resources`,payload:{name:e,refresh:t}})},listMcpPrompts(e,t=!1){this.send({type:`mcp.prompts`,payload:{name:e,refresh:t}})},readMcpResource(e,t){this.send({type:`mcp.resource.read`,payload:{name:e,uri:t}})},getMcpPrompt(e,t,n){this.send({type:`mcp.prompt.get`,payload:{name:e,prompt:t,...n===void 0?{}:{arguments:n}}})},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(e){this.send({type:`skills.list`},e)},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(e){this.send({type:`diag.get`,payload:this.withSession({})},e)},getStats(e){this.send({type:`stats.get`,payload:this.withSession({})},e)},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}})},renameSession(e,t){this.send({type:`session.rename`,payload:{id: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,t){this.send({type:`model.refine`,payload:{text:e,...t?.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs},...t?.provider===void 0?{}:{provider:t.provider},...t?.model===void 0?{}:{model:t.model},...t?.previousRefined===void 0?{}:{previousRefined:t.previousRefined},...t?.previousEnglish===void 0?{}:{previousEnglish:t.previousEnglish},...t?.retryFeedback===void 0?{}:{retryFeedback:t.retryFeedback}}})}};function O(e){Object.assign(e.prototype,D)}function k(e){return{type:`provider.clear_models`,payload:{providerId:e}}}function A(e,t){return{type:`provider.undo_clear`,payload:{providerId:e,previousModels:[...t]}}}function j(e){return{type:`provider.update`,payload:e}}function M(e){return Math.max(0,Math.min(100,Math.round((typeof e==`number`&&Number.isFinite(e)?e:0)*100)))}function N(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 P(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 F=0;function I(){return`viz_${Date.now()}_${++F}`}function L(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)||!L(n,i))return!1;continue}return!1}}return!0}var R={provider:`hsl(var(--info))`,agent:`hsl(var(--primary))`,tool:`hsl(var(--warning))`,mailbox:`hsl(var(--success))`,session:`hsl(var(--primary))`,system:`hsl(var(--muted-foreground))`,success:`hsl(var(--success))`,error:`hsl(var(--destructive))`},z={"provider:call":`hsl(var(--info))`,"provider:delta":`hsl(var(--primary))`,"agent:tool":`hsl(var(--warning))`,"mailbox:send":`hsl(var(--success))`,default:`hsl(var(--muted-foreground))`},B=t()((e,t)=>({events:[],toolEvents:[],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??I(),timestamp:t.timestamp||Date.now()},r=[n,...e.events];r.length>e.maxEvents&&(r.length=e.maxEvents);let i=t.kind===`agent:tool`||t.kind===`tool:started`||t.kind===`tool:progress`||t.kind===`tool:executed`?[n,...e.toolEvents].slice(0,600):e.toolEvents,a=Date.now(),o=t.source,s={id:o,kind:N(t),label:t.label,status:P(t.kind),activity:1,color:t.color??R[N(t)],lastSeenAt:a},c=e.nodes.get(o),l=c?{...c,...s}:s,u=!L(c,l),d,f=!1,p;if(t.target){p=t.target;let n={id:p,kind:N(t,!0),label:p,status:P(t.kind),activity:.8,color:t.color??R[N(t,!0)],lastSeenAt:a},r=e.nodes.get(p);d=r?{...r,...n}:n,f=!L(r,d)}let m,h=!1,g;if(t.target&&o){g=`${o}->${t.target}`;let n=e.edges.get(g),r={id:g,source:o,target:t.target,kind:t.kind,label:t.label,intensity:n?Math.min(1,n.intensity+.3):.7,color:t.color??R[N(t)]??R.agent,lastActiveAt:a,totalMagnitude:(n?.totalMagnitude??0)+(t.magnitude??0)};m=n?{...n,...r}:r,h=!L(n,m)}let _=e.nodes,v=e.edges;return(u||f)&&(_=new Map(e.nodes),u&&_.set(o,l),f&&d&&p&&_.set(p,d)),h&&m&&g&&(v=new Map(e.edges),v.set(g,m)),{events:r,toolEvents:i,nodes:_,edges:v}}),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??z[t.kind]??z.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:[],toolEvents:[],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 V(e,t){switch(e){case`provider.text_delta`:{let e=t.text??``;return{id:I(),kind:`provider:delta`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,60),magnitude:e.length,data:{text:e},color:R.provider,flowGroup:`provider`}}case`provider.response`:{let e=t.usage,n=(e?.input??0)+(e?.output??0);return{id:I(),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:R.provider,flowGroup:`provider`}}case`provider.stream_error`:{let e=t.message??`Provider stream error`;return{id:I(),kind:`error`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,80),magnitude:1,data:t,color:R.error,flowGroup:`provider`}}case`tool.started`:{let e=t.name??`tool`;return{id:I(),kind:`tool:started`,timestamp:Date.now(),source:e,target:`filesystem`,label:e,magnitude:1,data:t,color:R.tool,flowGroup:`tool:${e}`}}case`tool.executed`:{let e=t.name??`tool`,n=t.ok??!0;return{id:I(),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?R.tool:R.error,flowGroup:`tool:${e}`}}case`tool.progress`:{let e=t.name??`tool`,n=t.event?.text??``;return{id:I(),kind:`tool:progress`,timestamp:Date.now(),source:e,target:`leader`,label:n.slice(0,60)||e,magnitude:n.length,data:t,color:R.tool,flowGroup:`tool:${e}`}}case`codemap.tool_started`:{let e=t.name??`tool`,n=t.agentId??`subagent`;return{id:I(),kind:`tool:started`,timestamp:Date.now(),source:n,target:e,label:e,magnitude:1,data:t,color:R.tool,flowGroup:`agent:${n}`}}case`codemap.tool_executed`:{let e=t.name??`tool`,n=t.agentId??`subagent`,r=t.ok??!0;return{id:I(),kind:`tool:executed`,timestamp:Date.now(),source:n,target:e,label:`${e} ${r?`✓`:`✗`} (${t.durationMs??0}ms)`,magnitude:t.durationMs??0,data:t,color:r?R.tool:R.error,flowGroup:`agent:${n}`}}case`tool.loop_detected`:{let e=t.tools??``,n=t.kind??`loop`,r=t.action===`steer`;return{id:I(),kind:r?`agent:status`:`error`,timestamp:Date.now(),source:e||n,target:`leader`,label:`${n} loop x${t.repeatCount??0}`,magnitude:t.repeatCount??1,data:t,color:r?R.agent:R.error,flowGroup:`tool`}}case`delegate.started`:{let e=t.target??`delegate`,n=t.task??``;return{id:I(),kind:`agent:status`,timestamp:Date.now(),source:`leader`,target:e,label:n.slice(0,80)||`Delegating to ${e}`,magnitude:1,data:t,color:R.agent,flowGroup:`delegate:${e}`}}case`delegate.completed`:{let e=t.subagentId??t.target??`delegate`,n=t.ok??!1;return{id:I(),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?R.agent:R.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:I(),kind:`agent:spawned`,timestamp:Date.now(),source:n,target:`session`,label:`${r} spawned`,magnitude:1,data:t,color:R.agent,flowGroup:`agent:${n}`};case`tool_executed`:{let e=t.toolName??`tool`,r=t.ok??!0;return{id:I(),kind:`agent:tool`,timestamp:Date.now(),source:n,target:e,label:e,magnitude:t.durationMs??0,data:t,color:r?R.tool:R.error,flowGroup:`agent:${n}`}}case`task_completed`:{let e=t.status??`completed`;return{id:I(),kind:`agent:status`,timestamp:Date.now(),source:n,target:`session`,label:`${r} ${e}`,magnitude:1,data:t,color:e===`success`?R.success:R.error,flowGroup:`agent:${n}`}}case`ctx_pct`:return{id:I(),kind:`agent:ctx`,timestamp:Date.now(),source:n,target:`session`,label:`ctx ${M(t.load)}%`,magnitude:t.tokens??0,data:t,color:R.agent,flowGroup:`agent:${n}`};case`iteration_summary`:return{id:I(),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:R.agent,flowGroup:`agent:${n}`};case`budget_extended`:return{id:I(),kind:`budget:extended`,timestamp:Date.now(),source:n,target:`session`,label:`${r} extended budget`,magnitude:t.totalExtensions??1,data:t,color:R.tool,flowGroup:`agent:${n}`};case`budget_warning`:return{id:I(),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:R.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:I(),kind:a?`mailbox:send`:`mailbox:deliver`,timestamp:Date.now(),source:n,target:r,label:i||(a?`→ ${r}`:`← ${n}`),magnitude:1,data:t,color:R.mailbox,flowGroup:`mailbox`}}case`iteration.started`:{let e=t.index??0;return{id:I(),kind:`iteration:start`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e}`,magnitude:e,data:t,color:R.agent,flowGroup:`iteration`}}case`iteration.completed`:{let e=t.index??0;return{id:I(),kind:`iteration:end`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e} done`,magnitude:e,data:t,color:R.session,flowGroup:`iteration`}}case`ctx.pct`:{let e=t.tokens??0;return{id:I(),kind:`agent:ctx`,timestamp:Date.now(),source:`leader`,target:`session`,label:`ctx ${M(t.load)}%`,magnitude:e,data:t,color:R.agent,flowGroup:`leader`}}case`error`:{let e=t.message??`Error`;return{id:I(),kind:`error`,timestamp:Date.now(),source:t.phase??`system`,target:`session`,label:e,magnitude:1,data:t,color:R.error,flowGroup:`error`}}case`context.compacted`:return{id:I(),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:I(),kind:`error`,timestamp:Date.now(),source:`compactor`,target:`session`,label:e.slice(0,80),magnitude:t.tokens??1,data:t,color:R.error,flowGroup:`context`}}case`context.repaired`:return{id:I(),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:I(),kind:`session:start`,timestamp:Date.now(),source:`session`,target:`leader`,label:n||e.slice(0,12),magnitude:1,data:t,color:R.session,flowGroup:`session`}}case`sessions.status_update`:{let e=t.sessions??[];return{id:I(),kind:`fleet:snapshot`,timestamp:Date.now(),source:`system`,target:`session`,label:`${e.length} session(s)`,magnitude:e.length,data:t,color:R.system,flowGroup:`fleet`}}default:return null}}function _e(e){let t=e.payload?.sessionId,n=r.getState().session?.id;return!t||!n||t===n}function ve(e){let t=V(e.type,e.payload);t&&(B.getState().pushEvent(t),B.getState().setActive(!0))}function ye(e,t,n){let r=e.payload??{};for(let[e,n]of Object.entries(t)){let t=r[e];if(!H(t,n))return null}if(n)for(let[e,t]of Object.entries(n)){let n=r[e];if(n!=null&&!H(n,t))return null}return r}function H(e,t){switch(t){case`string`:return typeof e==`string`;case`number`:return typeof e==`number`;case`boolean`:return typeof e==`boolean`;case`object`:return typeof e==`object`&&!!e&&!Array.isArray(e);case`array`:return Array.isArray(e);default:return!1}}function be(e){try{return new URL(e).searchParams.get(`token`)}catch{return null}}function U(){if(typeof window>`u`||!window.location)return null;try{let e=window.location.search??``;return new URLSearchParams(e).get(`token`)}catch{return null}}function W(e){try{let t=new URL(e);return t.searchParams.delete(`token`),t.toString()}catch{return e}}function G(){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{}}function K(){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=U();return n&&!t.searchParams.has(`token`)&&t.searchParams.set(`token`,n),t.toString()}catch{return null}}function q(){let e=K();if(e)return e;if(typeof window>`u`||!window.location?.hostname)return`ws://127.0.0.1:3456`;let t=window.location.protocol===`https:`?`wss`:`ws`,n=window.location.hostname.toLowerCase(),r=window.location.port,i=U(),a=i?`?token=${encodeURIComponent(i)}`:``;return`${t}://${n===`localhost`||n===`127.0.0.1`||n===`[::1]`||n===`::1`?`127.0.0.1`:n}${r?`:${r}`:``}${a}`}function J(){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 xe=e({WrongStackWebSocketClient:()=>Z,getWSClient:()=>$}),Se={"context.debug":`context.debug`,"diag.get":`diag.get`,"memory.list":`memory.list`,"memory.sage.get":`memory.sage.get`,"memory.sage.graph":`memory.sage.graph`,"memory.sage.list":`memory.sage.list`,"memory.sage.listPage":`memory.sage.listPage`,"memory.sage.remember":`memory.sage.remember`,"memory.sage.update":`memory.sage.update`,"skills.list":`skills.list`,"stats.get":`stats.get`,"tools.list":`tools.list`},Ce=3e4;function Y(e){try{let t=new URL(e),n=new URL(J());return t.hostname===n.hostname}catch{return!0}}var X=class e{ws=null;url;handlers=new Map;maxReconnectAttempts=10;shouldReconnect=!0;reconnectTimer=null;connectPromise=null;socketGeneration=0;messageQueue=[];connectionState=s();static MAX_QUEUED_MESSAGES=1e3;pendingConfirms=new Map;sessionId=null;sessionSwapPending=!1;lastErrorText;statusListeners=new Set;currentStatus={state:`connecting`};suppressedChatEchoes=new Map;protocolCapabilities=new Set;protocolVersion=null;supportsCapability(e){return this.protocolCapabilities.has(e)}get negotiatedProtocolVersion(){return this.protocolVersion}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??q()}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=`))){Y(this.url)&&(this.url=W(this.url)),G();return}let e=be(this.url)??U();if(!e)return;let t=J()+`/ws-auth?token=${encodeURIComponent(e)}`;try{let e=await fetch(t,{method:`GET`,credentials:`same-origin`,cache:`no-store`});e.ok?(Y(this.url)&&(this.url=W(this.url)),G()):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()}))}}connect(){return this.ws?.readyState===WebSocket.OPEN?Promise.resolve():(this.connectPromise||=this.openSocket().finally(()=>{this.connectPromise=null}),this.connectPromise)}async openSocket(){return await this.ensureAuthCookie(),this.connectionState=c(this.connectionState),new Promise((e,t)=>{if(this.ws?.readyState===WebSocket.OPEN){e();return}this.setStatus({state:`connecting`});let n=++this.socketGeneration;try{let r=new WebSocket(this.url);this.ws=r,r.binaryType=`arraybuffer`;let i=setTimeout(()=>{if(this.ws===r){try{r.close()}catch{}this.ws===r&&(this.ws=null)}this.lastErrorText=`Connection timeout`,t(Error(`Connection timeout`)),s()},3e4),a=!1,o=!1,s=()=>{o||(o=!0,this.attemptReconnect())};r.onopen=()=>{this.socketGeneration===n&&(clearTimeout(i),a=!0,this.connectionState=l(this.connectionState),this.lastErrorText=void 0,this.setStatus({state:`open`}),this.flushMessageQueue(),e())},r.onmessage=e=>{if(this.socketGeneration!==n)return;this.connectionState=u(this.connectionState);let t=he(String(e.data),`server`);t.ok?this.handleMessage(t.message):console.error(JSON.stringify({level:`error`,event:`ws_client.message_rejected`,code:t.issue.code,message:t.issue.message,timestamp:new Date().toISOString()}))},r.onerror=e=>{this.socketGeneration===n&&(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)`,a||(clearTimeout(i),t(Error(this.lastErrorText)),s()))},r.onclose=e=>{if(this.socketGeneration===n){if(this.sessionSwapPending=!1,!a){clearTimeout(i);let n=e.reason||`Closed with code ${e.code}`;this.lastErrorText=n,t(Error(n)),s();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){if(this.socketGeneration!==n)return;this.lastErrorText=e instanceof Error?e.message:String(e),this.setStatus({state:`closed`,error:this.lastErrorText}),t(e)}})}attemptReconnect(){if(!this.shouldReconnect){this.connectionState=d(this.connectionState),this.reconnectTimer=null,this.setStatus({state:`closed`,error:this.lastErrorText??`Disconnected`});return}let t=p(this.connectionState,{...o,maxReconnectAttempts:this.maxReconnectAttempts,queueLimit:e.MAX_QUEUED_MESSAGES});if(this.connectionState=t.state,!t.plan){this.reconnectTimer=null,this.setStatus({state:`closed`,error:this.lastErrorText??`Disconnected`});return}this.setStatus({state:`reconnecting`,attempt:t.plan.attempt,nextRetryAt:t.plan.retryAt,lastError:this.lastErrorText}),this.reconnectTimer=setTimeout(async()=>{if(this.reconnectTimer=null,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()}))}},t.plan.delayMs)}retryNow(){this.currentStatus.state!==`open`&&(this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.connectionState=f(this.connectionState),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,{}),this.emit(e);return}if(e.type===`session.start`){let t=e.payload,n=E(t);this.sessionId=t.sessionId,this.protocolVersion=n.version,this.protocolCapabilities=new Set(n.capabilities),this.sessionSwapPending=!1}else e.type===`error`&&(e.payload.phase===`session.new`||e.payload.phase===`session.resume`)&&(this.sessionSwapPending=!1);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,n={}){let r=T(t,`client`);if(!r.ok)return console.error(JSON.stringify({level:`error`,event:`ws_client.outbound_message_rejected`,code:r.issue.code,message:r.issue.message,timestamp:new Date().toISOString()})),!1;let i=t.type===`session.new`||t.type===`session.resume`;if(i&&this.sessionSwapPending)return!1;if(i&&(this.sessionSwapPending=!0),n.echoToChat===!1){let e=Se[t.type];if(e){let t=this.suppressedChatEchoes.get(e)??[];t.push(Date.now()+Ce),this.suppressedChatEchoes.set(e,t)}}if((t.type===`context.clear`||t.type===`session.new`||t.type===`session.resume`)&&a.dropAll(),this.ws?.readyState===WebSocket.OPEN)return this.ws.send(JSON.stringify(r.message)),!0;{if(n.queueIfDisconnected===!1)return!1;let r=m(this.messageQueue,t,e.MAX_QUEUED_MESSAGES);return r.dropped&&console.warn(JSON.stringify({level:`warn`,event:`ws_client.message_queue_full`,cap:e.MAX_QUEUED_MESSAGES,droppedType:r.dropped.type,timestamp:new Date().toISOString()})),this.messageQueue=r.queue,!0}}consumeSuppressedChatEcho(e){let t=this.suppressedChatEchoes.get(e);if(!t)return!1;let n=Date.now();for(;t.length>0&&t[0]<=n;)t.shift();return t.length===0?(this.suppressedChatEchoes.delete(e),!1):(t.shift(),t.length===0&&this.suppressedChatEchoes.delete(e),!0)}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 r=`msg_${Date.now()}_${n().slice(0,8)}`;return this.send({type:`user_message`,payload:this.withSession({id:r,content:e,timestamp:Date.now(),...t&&t.length>0?{images:t}:{}})}),r}sendMailboxMessage(e){let t=`mbox_${Date.now()}_${n().slice(0,8)}`;return this.send({type:`mailbox.send`,payload:{requestId:t,to:e.to,type:e.type,audience:e.audience??`all`,subject:e.subject,body:e.body,priority:e.priority??`normal`}}),t}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){this.pendingConfirms.has(e)&&this.pendingConfirms.delete(e),this.send({type:`tool.confirm_result`,payload:this.withSession({id:e,decision:t})})}switchModel(e,t,r=8e3){let i=n();return new Promise(n=>{let a=!1,o=e=>{a||(a=!0,clearTimeout(c),s(),n(e))},s=this.on(`model.switch_result`,e=>{let t=e.payload;t.requestId===i&&o(t)}),c=setTimeout(()=>{o({requestId:i,success:!1,message:`Model switch timed out. Please try again.`,provider:e,model:t,runActive:!1})},r);this.send({type:`model.switch`,payload:{provider:e,model:t,requestId:i}})})}getProviderStatus(){this.send({type:`provider.status.get`})}retryProviderModel(e,t){this.send({type:`provider.status.retry`,payload:{providerId:e,model:t}})}clearProviderStatus(e,t){this.send({type:`provider.status.clear`,payload:{providerId:e,model:t}})}newSession(){this.send({type:`session.new`,payload:this.withSession({})})}shutdownCodebaseIndexServer(e=8e3){let t=n();return new Promise(n=>{let r=!1,i=e=>{r||(r=!0,clearTimeout(o),a(),n(e))},a=this.on(`codebase.index.server.shutdown_result`,e=>{e.payload.requestId&&e.payload.requestId!==t||i(e.payload)}),o=setTimeout(()=>{i({requestId:t,stopped:!1,reason:`Codebase index server shutdown timed out.`})},e);this.send({type:`codebase.index.server.shutdown`,payload:{requestId:t}},{queueIfDisconnected:!1})||i({requestId:t,stopped:!1,reason:`WebSocket is not connected.`})})}listProviders(){this.send({type:`providers.list`})}listProviderModels(e){this.send({type:`provider.models`,payload:{providerId:e}})}listSavedProviders(){this.send({type:`providers.saved`})}searchProviderModels(e,t){this.send({type:`provider.models.search`,payload:{query:e,...t===void 0?{}:{limit:t}}})}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,i,a){this.send({type:`provider.add`,payload:{id:e,family:t,baseUrl:n,apiKey:r,...i?{models:i}:{},...a?{customModels:a}:{}}})}removeProvider(e){this.send({type:`provider.remove`,payload:{providerId:e}})}startOAuth(e,t){this.send({type:`auth.oauth.start`,payload:t?{kind:e,providerId:t}:{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(k(e))}undoProviderClear(e,t){this.send(A(e,t))}updateProvider(e){this.send(j(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({})})}openContextEditor(){this.send({type:`context.editor.open`,payload:this.withSession({})})}validateContextEditor(e,t,n){this.send({type:`context.editor.validate`,payload:this.withSession({baseRevision:e,messages:t,allowRepair:n})})}applyContextEditor(e,t,n){this.send({type:`context.editor.apply`,payload:this.withSession({baseRevision:e,messages:t,allowRepair:n})})}debugContext(e){this.send({type:`context.debug`,payload:this.withSession({})},e)}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`})}disconnect(){this.shouldReconnect=!1,this.connectionState=d(this.connectionState),this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.messageQueue.length=0,this.sessionSwapPending=!1,this.ws?.close(),this.ws=null}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}get currentSessionId(){return this.sessionId}};O(X);var Z=X,Q=null;function $(e){return Q||=new Z(e),Q}export{ve as a,V as c,_e as i,a as l,xe as n,ye as o,q as r,B as s,$ as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../src/components/ChatInput.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../src/components/ChatInput.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAkC/B,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,wBAAgB,SAAS,CAAC,EACxB,eAAe,GAChB,GAAE;IACD,eAAe,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACvC,qBA8/BL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ChatView/index.tsx"],"names":[],"mappings":"AAgLA,wBAAgB,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ChatView/index.tsx"],"names":[],"mappings":"AAgLA,wBAAgB,QAAQ,gCA4zBvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeadCodeScanPanel.d.ts","sourceRoot":"","sources":["../../../src/components/DeadCodeScanPanel/DeadCodeScanPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"DeadCodeScanPanel.d.ts","sourceRoot":"","sources":["../../../src/components/DeadCodeScanPanel/DeadCodeScanPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAoEH,wBAAgB,iBAAiB,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,+BAsVzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolLedgerCard.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/ToolLedgerCard.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5C,OAAO,cAAc,CAAC;AAsBtB;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,qDAExB;IACD,OAAO,EAAE,WAAW,CAAC;CACtB,
|
|
1
|
+
{"version":3,"file":"ToolLedgerCard.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/ToolLedgerCard.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5C,OAAO,cAAc,CAAC;AAsBtB;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,qDAExB;IACD,OAAO,EAAE,WAAW,CAAC;CACtB,iCAwLC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/index.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/index.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAe5C,UAAU,kBAAkB;IAC1B,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC;AAED,eAAO,MAAM,aAAa,8EAIvB,kBAAkB,wCAuoBnB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { type ParsedNextStep as NextStep, type ParseNextStepsResult, parseNextSteps, stripNextStepsBlock } from '@wrongstack/tools/next-steps';
|
|
1
2
|
import type React from 'react';
|
|
2
|
-
import { type ParseNextStepsResult, type ParsedNextStep as NextStep, parseNextSteps, stripNextStepsBlock } from '@wrongstack/tools/next-steps';
|
|
3
|
-
export { parseNextSteps, stripNextStepsBlock };
|
|
4
3
|
export type { NextStep, ParseNextStepsResult };
|
|
4
|
+
export { parseNextSteps, stripNextStepsBlock };
|
|
5
5
|
/**
|
|
6
6
|
* Fill the chat input textarea with the given text.
|
|
7
7
|
* Uses the native setter to trigger React's onChange.
|
|
@@ -11,7 +11,7 @@ export declare function NextStepsBar({ steps, yoloMode, autoMode, autoDelayMs, o
|
|
|
11
11
|
/** If true, start a countdown that fills the input after session end */
|
|
12
12
|
sessionEndAutoFill,
|
|
13
13
|
/** Override the default 5s countdown for session-end auto-fill */
|
|
14
|
-
sessionEndAutoFillSeconds, }: {
|
|
14
|
+
sessionEndAutoFillSeconds, isLatest, onBatchSubmit, }: {
|
|
15
15
|
steps: NextStep[];
|
|
16
16
|
/** Whether YOLO mode is active */
|
|
17
17
|
yoloMode?: boolean;
|
|
@@ -27,6 +27,12 @@ sessionEndAutoFillSeconds, }: {
|
|
|
27
27
|
sessionEndAutoFill?: boolean;
|
|
28
28
|
/** Override the default countdown seconds for session-end auto-fill */
|
|
29
29
|
sessionEndAutoFillSeconds?: number;
|
|
30
|
+
/** Whether this bar belongs to the latest assistant message. When false,
|
|
31
|
+
* the session-end auto-fill listener is suppressed to prevent duplicate
|
|
32
|
+
* handler registration across multiple bars. */
|
|
33
|
+
isLatest?: boolean;
|
|
34
|
+
/** Callback to submit multiple selected step texts together (bypasses refine) */
|
|
35
|
+
onBatchSubmit?: (texts: string[]) => void;
|
|
30
36
|
}): React.ReactElement | null;
|
|
31
37
|
/**
|
|
32
38
|
* Hook-friendly version: takes raw markdown content and returns the parse
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NextStepsBar.d.ts","sourceRoot":"","sources":["../../src/components/NextStepsBar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NextStepsBar.d.ts","sourceRoot":"","sources":["../../src/components/NextStepsBar.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,IAAI,QAAQ,EAC/B,KAAK,oBAAoB,EACzB,cAAc,EACd,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,YAAY,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAU5C;AAoFD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAgB,EAChB,QAAgB,EAChB,WAAoB,EACpB,YAAY,EACZ,aAAa,EAAE,iBAAwB;AACvC,wEAAwE;AACxE,kBAA0B;AAC1B,kEAAkE;AAClE,yBAAoD,EACpD,QAAe,EACf,aAAa,GACd,EAAE;IACD,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,kEAAkE;IAClE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uEAAuE;IACvE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;qDAEiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CAC3C,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA+N5B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAElE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionsHealthSection.d.ts","sourceRoot":"","sources":["../../../src/components/SettingsPanel/ConnectionsHealthSection.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConnectionsHealthSection.d.ts","sourceRoot":"","sources":["../../../src/components/SettingsPanel/ConnectionsHealthSection.tsx"],"names":[],"mappings":"AA8BA,wBAAgB,wBAAwB,gCAkLvC"}
|
|
@@ -19,6 +19,13 @@ interface Props {
|
|
|
19
19
|
* map.
|
|
20
20
|
*/
|
|
21
21
|
renderMode?: 'simple' | 'extend' | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* SAGE Memory Injector lines delivered out-of-band by `tool.executed.sage`.
|
|
24
|
+
* Authoritative when present: the backend split the block off the tool text
|
|
25
|
+
* before its preview cap, so `result` carries no SAGE suffix to recover.
|
|
26
|
+
* Replayed messages have no such field and fall back to splitting `result`.
|
|
27
|
+
*/
|
|
28
|
+
sageLines?: string[] | undefined;
|
|
22
29
|
}
|
|
23
30
|
/**
|
|
24
31
|
* Decides which renderer to use for a tool result based on its shape /
|
|
@@ -28,6 +35,6 @@ interface Props {
|
|
|
28
35
|
* - Valid JSON gets pretty-printed and collapsible by default.
|
|
29
36
|
* - Everything else falls back to raw monospace.
|
|
30
37
|
*/
|
|
31
|
-
export declare const ToolResult: import("react").MemoExoticComponent<({ toolName, result, isError, className, renderMode, }: Props) => import("react").JSX.Element>;
|
|
38
|
+
export declare const ToolResult: import("react").MemoExoticComponent<({ toolName, result, isError, className, renderMode, sageLines: sageLinesFromEvent, }: Props) => import("react").JSX.Element>;
|
|
32
39
|
export {};
|
|
33
40
|
//# sourceMappingURL=ToolResult.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolResult.d.ts","sourceRoot":"","sources":["../../src/components/ToolResult.tsx"],"names":[],"mappings":"AAaA;;;;iCAIiC;AACjC,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAkGvD,UAAU,KAAK;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolResult.d.ts","sourceRoot":"","sources":["../../src/components/ToolResult.tsx"],"names":[],"mappings":"AAaA;;;;iCAIiC;AACjC,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAkGvD,UAAU,KAAK;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC7C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,6HAOpB,KAAK,iCAiGN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-handlers.d.ts","sourceRoot":"","sources":["../../../src/hooks/ws-handlers/chat-handlers.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,YAAY;;;;;;;;;CASxB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC,CASlF,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,eAAe,QAa1D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,QAmBnD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,QAQvD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,QA8BrD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,QAetD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"chat-handlers.d.ts","sourceRoot":"","sources":["../../../src/hooks/ws-handlers/chat-handlers.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,YAAY;;;;;;;;;CASxB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC,CASlF,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,eAAe,QAa1D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,QAmBnD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,QAQvD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,QA8BrD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,QAetD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,QA6BtD;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,eAAe,QAsC3D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,QAkKnD"}
|
package/dist/index.html
CHANGED
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/wrongstack.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>WrongStack WebUI</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-WvJRbCoi.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-QTnfLwEv.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/monaco-BLUV5g0U.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/markdown-L6DLSM7f.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/vendor-9hC4n4Me.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/utils-DzRQUvln.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assets/chat-store-DaSs2P3S.js">
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/ui-store-
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/ui-store-BI3LH2q8.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/activity-qoJ3grs0.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="/assets/chat-BJzPxfyr.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="/assets/commandPalette-DpaemFux.js">
|
|
@@ -20,20 +20,20 @@
|
|
|
20
20
|
<link rel="modulepreload" crossorigin href="/assets/settings-oGMBWYjV.js">
|
|
21
21
|
<link rel="modulepreload" crossorigin href="/assets/setup-BFcmn89w.js">
|
|
22
22
|
<link rel="modulepreload" crossorigin href="/assets/toasts-BL_8kH4B.js">
|
|
23
|
-
<link rel="modulepreload" crossorigin href="/assets/i18n-
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/assets/i18n-D-JnOQZX.js">
|
|
24
24
|
<link rel="modulepreload" crossorigin href="/assets/session-store-w5G2euPs.js">
|
|
25
|
-
<link rel="modulepreload" crossorigin href="/assets/ws-client-
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/ws-client-eyEv8wbm.js">
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assets/codemap-activity-store-CkJTt5go.js">
|
|
27
27
|
<link rel="modulepreload" crossorigin href="/assets/mailbox-store-BN2cGkN_.js">
|
|
28
|
-
<link rel="modulepreload" crossorigin href="/assets/stores-
|
|
29
|
-
<link rel="modulepreload" crossorigin href="/assets/view-navigation-
|
|
28
|
+
<link rel="modulepreload" crossorigin href="/assets/stores-hEu6z1qz.js">
|
|
29
|
+
<link rel="modulepreload" crossorigin href="/assets/view-navigation-BSA3_knE.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/codemap-index-store-8v-MK2XF.js">
|
|
31
|
-
<link rel="modulepreload" crossorigin href="/assets/Toaster-
|
|
32
|
-
<link rel="modulepreload" crossorigin href="/assets/useWebSocket-
|
|
31
|
+
<link rel="modulepreload" crossorigin href="/assets/Toaster-D5WTIK_V.js">
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assets/useWebSocket-DAm5zYOB.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/dialog-BLr7olIX.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assets/button-Bmh1yFe5.js">
|
|
35
|
-
<link rel="modulepreload" crossorigin href="/assets/ModelPicker-
|
|
36
|
-
<link rel="modulepreload" crossorigin href="/assets/LazyMarkdown-
|
|
35
|
+
<link rel="modulepreload" crossorigin href="/assets/ModelPicker-D5XBxW8U.js">
|
|
36
|
+
<link rel="modulepreload" crossorigin href="/assets/LazyMarkdown-CaNUh8CL.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="/assets/input-BRS2rHSR.js">
|
|
38
38
|
<link rel="stylesheet" crossorigin href="/assets/monaco-Bowa0-zp.css">
|
|
39
39
|
<link rel="stylesheet" crossorigin href="/assets/vendor-BMdWcCR4.css">
|