@wrongstack/webui 0.291.0 → 0.291.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/assets/{AnalyticsDashboard-DGSAut_P.js → AnalyticsDashboard-BBbdycai.js} +1 -1
  2. package/dist/assets/{AudienceMemoryPanel-DjdzWznT.js → AudienceMemoryPanel-BWcCpuCv.js} +1 -1
  3. package/dist/assets/{ChangesView-BY9-680w.js → ChangesView-Bwb4Qh4n.js} +1 -1
  4. package/dist/assets/{ChronicleDashboard-_i-J0z7w.js → ChronicleDashboard-oOlGTsm5.js} +1 -1
  5. package/dist/assets/{CodeEditor-UhIn6DIp.js → CodeEditor-Bt9fqzjU.js} +1 -1
  6. package/dist/assets/{CronJobsPanel-BKknBQzw.js → CronJobsPanel-i2-zcKIC.js} +1 -1
  7. package/dist/assets/{DebugDashboard-D47dsdl6.js → DebugDashboard-CCe1PP60.js} +1 -1
  8. package/dist/assets/{DesignGalleryView-B2yA--3z.js → DesignGalleryView-BDxyVUoW.js} +1 -1
  9. package/dist/assets/{GoalView-BEX-kC__.js → GoalView-Ck6Oa8nh.js} +1 -1
  10. package/dist/assets/{KanbanView-C9EY0_-X.js → KanbanView-BSoNz6a-.js} +1 -1
  11. package/dist/assets/LazyMarkdown-CGMv69IJ.js +3 -0
  12. package/dist/assets/MailboxDetailView-Dr3B9nM0.js +1 -0
  13. package/dist/assets/MemoryManager-BQZeiYDi.js +1 -0
  14. package/dist/assets/{ModelPicker-DPNTWYxu.js → ModelPicker-DwoHlu_Q.js} +1 -1
  15. package/dist/assets/OfficeMapPanel-CA-BmADR.js +4 -0
  16. package/dist/assets/{ProcessMonitor-C9yCk-bu.js → ProcessMonitor-7mzC-JTl.js} +1 -1
  17. package/dist/assets/{QueuePanel-SPyWkHtD.js → QueuePanel-DNccWIKx.js} +1 -1
  18. package/dist/assets/{RefreshDebugView-k1iKV6Hh.js → RefreshDebugView-2Ockf4po.js} +1 -1
  19. package/dist/assets/{SddHub-CktdOif3.js → SddHub-Cg63TJIL.js} +1 -1
  20. package/dist/assets/{SessionsDashboard-DMaHyATc.js → SessionsDashboard-yrSEaUdc.js} +1 -1
  21. package/dist/assets/{SetupScreen-D7_1mlMi.js → SetupScreen-BFfYTt1L.js} +1 -1
  22. package/dist/assets/{SkillDetailView-DGDLax2X.js → SkillDetailView-Sqe-T3-x.js} +2 -2
  23. package/dist/assets/{SpecsView-ecFmV6N0.js → SpecsView-DFj6_8G5.js} +1 -1
  24. package/dist/assets/{TechStackView-CVdayRXB.js → TechStackView-DPxBWfsU.js} +1 -1
  25. package/dist/assets/{TerminalPanel-Dd3kbKFo.js → TerminalPanel-B-BSGITg.js} +1 -1
  26. package/dist/assets/index-CuByAUEC.css +1 -0
  27. package/dist/assets/{index-DeInm8PK.js → index-D_QeLLAg.js} +16 -16
  28. package/dist/assets/{stores-j4CUJPI1.js → stores-BazbaxhT.js} +1 -1
  29. package/dist/assets/{useWebSocket-6y5oEA6Z.js → useWebSocket-BEkBQAAR.js} +2 -2
  30. package/dist/assets/{ws-client-fBMR5Zg-.js → ws-client-BOKgdABR.js} +1 -1
  31. package/dist/components/MemoryManager/index.d.ts.map +1 -1
  32. package/dist/components/MessageBubble/index.d.ts.map +1 -1
  33. package/dist/components/MessageBubble/utils.d.ts.map +1 -1
  34. package/dist/components/WatchMessageBubble.d.ts +1 -1
  35. package/dist/components/WatchMessageBubble.d.ts.map +1 -1
  36. package/dist/hooks/useWebSocket.d.ts +7 -0
  37. package/dist/hooks/useWebSocket.d.ts.map +1 -1
  38. package/dist/index.html +7 -7
  39. package/dist/index.js +625 -340
  40. package/dist/index.js.map +4 -4
  41. package/dist/lib/ws-client.d.ts +12 -0
  42. package/dist/lib/ws-client.d.ts.map +1 -1
  43. package/dist/types.d.ts +20 -1
  44. package/dist/types.d.ts.map +1 -1
  45. package/package.json +6 -6
  46. package/dist/assets/MailboxDetailView-DqCY91Vm.js +0 -1
  47. package/dist/assets/MemoryManager-QB0lTAxf.js +0 -1
  48. package/dist/assets/OfficeMapPanel-Duzb5VQW.js +0 -4
  49. package/dist/assets/index-B-xfHdYd.css +0 -1
  50. package/dist/assets/utils-dYJO5odh.js +0 -3
@@ -1,4 +1,4 @@
1
- import{r as e}from"./chat-store-BvxTrNjV.js";import{Xi as t,Yi as n}from"./vendor-BsMARlcy.js";import"./ui-store-D_s-_3Y6.js";import{r,t as i}from"./ws-client-fBMR5Zg-.js";import"./session-store-BZ4TsTBa.js";import"./codemap-activity-store-CfY_WBuV.js";import"./mailbox-store-CibW8-D6.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,f=100;function p(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 ee=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 p(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()}),p(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}),p(i,f,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()}),p(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}),p(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()}),p(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(e.budgetAlerts.reduce((e,r)=>(r.subagentId===t&&r.kind===n||e.set(`${r.subagentId}:${r.kind}`,r),e),new Map)),o=`${t}:${n}`,s=a.get(o);return s&&a.set(o,{...s,decision:r,newLimit:i,level:r===`extend`?`warning`:`danger`}),{budgetAlerts:Array.from(a.values()),lastUpdated:Date.now()}}),recordBudgetAlert:(t,n,r,i)=>e(e=>{let a=`${Date.now()}-${t}-${n}`,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()})})),m=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 h(){return`ref_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function g(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 _(e,t=20,n=2e3){let r=e.split(`
1
+ import{r as e}from"./chat-store-BvxTrNjV.js";import{Xi as t,Yi as n}from"./vendor-BsMARlcy.js";import"./ui-store-D_s-_3Y6.js";import{r,t as i}from"./ws-client-BOKgdABR.js";import"./session-store-BZ4TsTBa.js";import"./codemap-activity-store-CfY_WBuV.js";import"./mailbox-store-CibW8-D6.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,f=100;function p(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 ee=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 p(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()}),p(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}),p(i,f,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()}),p(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}),p(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()}),p(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(e.budgetAlerts.reduce((e,r)=>(r.subagentId===t&&r.kind===n||e.set(`${r.subagentId}:${r.kind}`,r),e),new Map)),o=`${t}:${n}`,s=a.get(o);return s&&a.set(o,{...s,decision:r,newLimit:i,level:r===`extend`?`warning`:`danger`}),{budgetAlerts:Array.from(a.values()),lastUpdated:Date.now()}}),recordBudgetAlert:(t,n,r,i)=>e(e=>{let a=`${Date.now()}-${t}-${n}`,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()})})),m=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 h(){return`ref_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function g(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 _(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 te(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=g(r.path),i=t?`\`\`\`${t}`:"```";n.push(`${i}\n// ${r.path} (entire file)\n${_(e)}\n\`\`\``)}else n.push(`@${r.path}`);continue}let e=g(r.path),i=e?`\`\`\`${e}`:"```",a=`// ${r.path}:${r.startLine}-${r.endLine}`,o=r.kind===`snippet`?_(r.content):_(r.preview);n.push(`${i}\n${a}\n${o}\n\`\`\``)}return n.join(`
@@ -1,4 +1,4 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,i as n,t as r}from"./chat-store-BvxTrNjV.js";import{na as i}from"./vendor-BsMARlcy.js";import{n as a,r as o,t as s}from"./ui-store-D_s-_3Y6.js";import{a as c,c as l,i as u,l as d,o as f,s as p,t as m}from"./ws-client-fBMR5Zg-.js";import{t as h}from"./session-store-BZ4TsTBa.js";import{i as g,n as _}from"./codemap-activity-store-CfY_WBuV.js";import{C as v,S as y,_ as b,a as x,d as S,f as C,h as w,i as ee,l as T,m as te,n as E,o as D,p as O,r as k,s as A,t as j,u as ne,v as M,x as N}from"./stores-j4CUJPI1.js";import{r as P}from"./mailbox-store-CibW8-D6.js";import{n as re,s as ie}from"./view-navigation-Dx54K1uS.js";import{n as F}from"./Toaster-CPO2WS96.js";var I=e(i(),1);function ae(e,t){if(t)return!0;try{return new URLSearchParams(e).get(`shell`)===`desktop`}catch{return!1}}function L(){return typeof window>`u`?!1:ae(window.location.search,!!window.wrongstackDesktopHost)}function oe(e){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,i as n,t as r}from"./chat-store-BvxTrNjV.js";import{na as i}from"./vendor-BsMARlcy.js";import{n as a,r as o,t as s}from"./ui-store-D_s-_3Y6.js";import{a as c,c as l,i as u,l as d,o as f,s as p,t as m}from"./ws-client-BOKgdABR.js";import{t as h}from"./session-store-BZ4TsTBa.js";import{i as g,n as _}from"./codemap-activity-store-CfY_WBuV.js";import{C as v,S as y,_ as b,a as x,d as S,f as C,h as w,i as ee,l as T,m as te,n as E,o as D,p as O,r as k,s as A,t as j,u as ne,v as M,x as N}from"./stores-BazbaxhT.js";import{r as P}from"./mailbox-store-CibW8-D6.js";import{n as re,s as ie}from"./view-navigation-Dx54K1uS.js";import{n as F}from"./Toaster-CPO2WS96.js";var I=e(i(),1);function ae(e,t){if(t)return!0;try{return new URLSearchParams(e).get(`shell`)===`desktop`}catch{return!1}}function L(){return typeof window>`u`?!1:ae(window.location.search,!!window.wrongstackDesktopHost)}function oe(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" />
@@ -24,4 +24,4 @@ _empty — nothing remembered yet_`})}function Tn(e){let t=e.payload;if(t.error)
24
24
  _disabled (config.features.skills = false)_`});return}let n=[`🎯 **Skills** (${t.skills.length})`,``,...t.skills.length===0?[`_none registered_`]:t.skills.map(e=>`• \`${e.name}\`${e.version?` v${e.version}`:``} _(${e.source})_ — ${e.description||e.trigger||`_no description_`}`)];t.error&&n.push(``,`⚠ ${t.error}`),r.getState().addMessage({role:`assistant`,content:n.join(`
25
25
  `)})}function Nn(e){if(!u(e))return;let t=e.payload;r.getState().addMessage({role:`assistant`,content:[`🩺 **Runtime diagnostics**`,``,`**Provider:** \`${t.provider}\` / \`${t.model}\``,`**Mode:** \`${t.mode}\``,`**Session:** \`${t.sessionId}\``,`**CWD:** \`${t.cwd}\``,``,`**Tools:** ${t.tools.count}`,`**Messages:** ${t.messages} · **Todos:** ${t.todos}`,`**Usage:** ${t.usage.input.toLocaleString()} in · ${t.usage.output.toLocaleString()} out${t.usage.cacheRead?` · ${t.usage.cacheRead.toLocaleString()} cache`:``}`,``,`**Features:** memory=${t.features.memory?`✓`:`✗`} · skills=${t.features.skills?`✓`:`✗`} · modelsRegistry=${t.features.modelsRegistry?`✓`:`✗`}`].join(`
26
26
  `)})}function Pn(e){if(!u(e))return;let t=e.payload,n=Math.floor(t.elapsedMs/1e3),i=n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m ${n%60}s`:`${Math.floor(n/3600)}h ${Math.floor(n%3600/60)}m`;r.getState().addMessage({role:`assistant`,content:[`📈 **Session stats**`,``,`**Session:** \`${t.sessionId}\``,`**Provider/Model:** \`${t.provider}\` / \`${t.model}\``,`**Elapsed:** ${i}`,``,`**Usage:** ${t.usage.input.toLocaleString()} in · ${t.usage.output.toLocaleString()} out`,...t.cache&&t.cache.readTokens>0?[`**Cache:** ${t.cache.readTokens.toLocaleString()} read · ${t.cache.writeTokens.toLocaleString()} write · hit ratio ${(t.cache.hitRatio*100).toFixed(1)}%`]:[],`**Cost:** ${t.cost.toFixed(4)}`,``,`**Messages:** ${t.messages} · **Files read:** ${t.readFiles} · **Tools available:** ${t.tools}`,...t.sideEffectCount?[`**Side effects:** ⚠ ${t.sideEffectCount}`]:[]].join(`
27
- `)})}function Fn(e){if(!u(e))return;let t=e.payload;h.getState().setTodos(t.todos??[])}function In(e){let t=e.payload;h.getState().setModes(t.modes.map(e=>({id:e.id,name:e.name,description:e.description}))),h.getState().setEnv({mode:t.activeId})}function $(e){ne.getState().handleResult(e.type,e.payload)}var Ln={...we,...Sn,...it,...Ge,...wt,...Ne,...Mt,"session.start":e=>{Ht(e),J()},"specs.list":e=>{let t=e.payload;k.getState().setSpecs(t.specs??[])},"specs.detail":e=>{k.getState().setDetail(e.payload)},"sdd.board.snapshot":e=>{D.getState().setSnapshot(e.payload)},"sdd.board.list":e=>{let t=e.payload;D.getState().setBoards(t.boards??[])},"sdd.board.lifecycle_result":e=>{let t=e.payload,n=D.getState();n.setLifecycleResult({...t,at:Date.now()}),n.setDestroying(!1)},"sdd.spec.snapshot":e=>{x.getState().setSnapshot(e.payload)},"sdd.spec.agent_text":e=>{x.getState().setAgentText(e.payload.text??``)},"sdd.spec.error":e=>{x.getState().setError(e.payload.message??`Error`)},"sdd.run.started":e=>{x.getState().setStartedRunId(e.payload.runId??null)},"kanban.list":$,"kanban.get":$,"kanban.create":$,"kanban.duplicate":$,"kanban.update":$,"kanban.delete":$,"kanban.generate":$,"kanban.snapshot":$,"kanban.taskgraph.export":$,"kanban.taskgraph.sync":$,"kanban.task.ready":$,"kanban.task.add":$,"kanban.task.split":$,"kanban.task.merge":$,"kanban.task.update":$,"kanban.task.move":$,"kanban.task.copy":$,"kanban.task.transfer":$,"kanban.task.chain":$,"kanban.task.chain.get":$,"kanban.task.claim":$,"kanban.task.release":$,"kanban.task.metric.add":$,"kanban.task.metric.update":$,"kanban.task.check.add":$,"kanban.task.check.update":$,"kanban.task.note.add":$,"kanban.task.assign":$,"kanban.task.dispatch":$,"kanban.task.remove":$,"kanban.task.get":$,"kanban.column.add":$,"kanban.column.remove":$,"kanban.run.start":$,"kanban.supervisor.status":$,"kanban.supervisor.audit":$,"tools.list":Cn,"memory.list":wn,"memory.super.list":Tn,"memory.super.get":En,"memory.super.update":Dn,"memory.super.remember":On,"memory.super.recover":kn,"memory.super.candidateResolve":An,"memory.super.backfillRecoverable":jn,"skills.list":Mn,"diag.get":Nn,"stats.get":Pn,side_effects:e=>{if(!u(e))return;let t=e.payload;ee.getState().setSideEffects(t.sideEffects??[])},"todos.updated":Fn,"todos.cleared":e=>{u(e)&&h.getState().setTodos([])},"agent.timeline.message":e=>{if(!u(e))return;let t=e.payload;b.getState().pushAgentTimelineEntry({subagentId:t.subagentId,agentName:t.agentName,content:t.content,kind:t.kind,iteration:t.iteration,ts:t.ts,toolName:t.toolName,toolOk:t.toolOk,costUsd:t.costUsd})},"agent.status_changed":e=>{if(!u(e))return;let t=e.payload;b.getState().pushAgentTimelineEntry({subagentId:t.subagentId,agentName:t.agentName,content:t.summary??t.status,kind:`status`,iteration:0,ts:t.ts,status:t.status})},"tasks.updated":e=>{},"plan.updated":e=>{},"modes.list":In,"session.checkpoints":e=>{},"process.list":e=>{},"projects.list":e=>{},"projects.added":e=>{},"projects.selected":e=>{},"tool.disabled":e=>{},"tool.enabled":e=>{},"provider.response":e=>{qt(e)},"tool.progress":e=>{ke(e);let t=_(e),n=g.getState();for(let e of t)n.recordFileEvent(e)},"tool.started":e=>{Oe(e);let t=_(e);t.length>0&&g.getState().startActivities(t)},"tool.executed":e=>{Ae(e);let t=e.payload;t.id&&g.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.tool_started":e=>{c(e);let t=_(e);t.length>0&&g.getState().startActivities(t)},"codemap.tool_executed":e=>{c(e);let t=e.payload;t.id&&g.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.file_event":e=>{let t=_(e),n=g.getState();for(let e of t)n.recordFileEvent(e)},"file.saved":e=>{let t=_(e);if(t.length>0){let e=g.getState();for(let n of t)e.recordFileEvent(n)}},"memory.event":e=>{pt(e);let t=_(e);if(t.length>0){let e=g.getState();for(let n of t)e.recordActivity(n)}}};function Rn(e){let t=[];for(let[n,r]of Object.entries(Ln))r&&t.push(e.on(n,t=>{e.consumeSuppressedChatEcho(n)||r(t)}));return()=>{for(let e of t)e()}}function zn(){let{autoConnect:e,wsUrl:t}=v(),n=v(e=>e.setWsStatus);(0,I.useEffect)(()=>{if(!e)return;le();let r=m(t),i=!1,a=r.onStatus(e=>{i||n(e)});r.connect().then(()=>{i||r.getPrefs()}).catch(e=>{i||console.warn(JSON.stringify({level:`warn`,event:`webui.ws_connection_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))});let o=Rn(r);return()=>{i=!0,o(),a()}},[e,t,n])}function Bn(){let{wsUrl:e}=v(),t=m(e),n=(0,I.useCallback)((e,n)=>t.isConnected?t.sendMessage(e,n):null,[t]),r=(0,I.useCallback)(()=>t.sendAbort(),[t]),{hideConfirm:i}=a(),o=(0,I.useCallback)((e,n)=>{t.sendConfirm(e,n),i()},[t,i]),s=(0,I.useCallback)((e,n)=>t.switchModel(e,n),[t]),c=(0,I.useCallback)(()=>t.listProviders(),[t]),l=(0,I.useCallback)(e=>t.listProviderModels(e),[t]),u=(0,I.useCallback)(()=>t.listSavedProviders(),[t]),d=(0,I.useCallback)((e,n,r)=>t.addKey(e,n,r),[t]),f=(0,I.useCallback)((e,n,r)=>t.updateKey(e,n,r),[t]),p=(0,I.useCallback)((e,n)=>t.deleteKey(e,n),[t]),h=(0,I.useCallback)((e,n)=>t.setActiveKey(e,n),[t]),g=(0,I.useCallback)((e,n,r,i)=>t.addProvider(e,n,r,i),[t]),_=(0,I.useCallback)(e=>t.removeProvider(e),[t]),y=(0,I.useCallback)(e=>{S.getState().setLoading(!0),t.listSessions(e)},[t]),b=(0,I.useCallback)(e=>t.deleteSession(e),[t]),x=(0,I.useCallback)((e,n)=>{S.getState().updateEntryName(e,n),t.renameSession(e,n)},[t]),C=(0,I.useCallback)(e=>t.resumeSessionById(e),[t]),w=(0,I.useCallback)(()=>t.saveSession(),[t]),ee=(0,I.useCallback)(e=>t.listTools(e),[t]),T=(0,I.useCallback)(e=>t.listMemory(e),[t]),te=(0,I.useCallback)(e=>t.listSuperMemories(e),[t]),E=(0,I.useCallback)((e,n)=>t.getSuperMemory(e,n),[t]),D=(0,I.useCallback)((e,n,r)=>t.updateSuperMemory(e,n,r),[t]),O=(0,I.useCallback)((e,n)=>t.deleteSuperMemory(e,n),[t]),k=(0,I.useCallback)((e,n)=>t.rememberSuperMemory(e,n),[t]),A=(0,I.useCallback)((e,n)=>t.findMemoriesForFile(e,n),[t]),j=(0,I.useCallback)((e,n)=>t.recoverSuperMemory(e,n),[t]),ne=(0,I.useCallback)((e,n)=>t.resolveMemoryCandidate(e,n),[t]),M=(0,I.useCallback)((e,n)=>t.backfillRecoverable(e,n),[t]),N=(0,I.useCallback)(e=>t.listSkills(e),[t]),P=(0,I.useCallback)(e=>t.getDiag(e),[t]),re=(0,I.useCallback)(e=>t.getStats(e),[t]),ie=(0,I.useCallback)(()=>t.getPlan(),[t]),F=(0,I.useCallback)(()=>t.listModes(),[t]),ae=(0,I.useCallback)(e=>t.switchMode(e),[t]),L=(0,I.useCallback)(()=>t.listContextModes(),[t]),oe=(0,I.useCallback)(e=>t.switchContextMode(e),[t]),se=(0,I.useCallback)(e=>t.createContextMode(e),[t]),ce=(0,I.useCallback)((e,n)=>t.updateContextMode(e,n),[t]),R=(0,I.useCallback)(e=>t.deleteContextMode(e),[t]),z=(0,I.useCallback)(()=>t.repairContext(),[t]),B=(0,I.useCallback)((e,n)=>t.refineModel(e,n),[t]),le=(0,I.useCallback)(e=>t.switchAutonomy(e),[t]),V=(0,I.useCallback)(e=>t.updatePrefs(e),[t]);return{client:t,sendMessage:n,sendAbort:r,sendConfirm:o,switchModel:s,listProviders:c,listProviderModels:l,listSavedProviders:u,addKey:d,updateKey:f,deleteKey:p,setActiveKey:h,addProvider:g,removeProvider:_,listSessions:y,deleteSession:b,renameSession:x,resumeSession:C,saveSession:w,listTools:ee,listMemory:T,listSuperMemories:te,getSuperMemory:E,updateSuperMemory:D,deleteSuperMemory:O,rememberSuperMemory:k,findMemoriesForFile:A,recoverSuperMemory:j,resolveMemoryCandidate:ne,backfillRecoverable:M,listSkills:N,getDiag:P,getStats:re,getPlan:ie,listModes:F,switchMode:ae,listContextModes:L,switchContextMode:oe,createContextMode:se,updateContextMode:ce,deleteContextMode:R,repairContext:z,toggleGoalAutonomous:(0,I.useCallback)(e=>{t.send({type:`goal.toggleAutonomous`,payload:{autonomous:e}})},[t]),startGoal:(0,I.useCallback)((e,n,r=!0)=>{t.send({type:`goal.start`,payload:{title:e,phases:n,autonomous:r}})},[t]),pauseGoal:(0,I.useCallback)(()=>{t.send({type:`goal.pause`,payload:{}})},[t]),resumeGoal:(0,I.useCallback)(()=>{t.send({type:`goal.resume`,payload:{}})},[t]),stopGoal:(0,I.useCallback)(()=>{t.send({type:`goal.stop`,payload:{}})},[t]),selectGoal:(0,I.useCallback)(e=>{t.send({type:`goal.selectPhase`,payload:{phaseId:e}})},[t]),switchAutonomy:le,updatePrefs:V,refineModel:B}}export{ve as a,H as i,zn as n,ye as o,xe as r,L as s,Bn as t};
27
+ `)})}function Fn(e){if(!u(e))return;let t=e.payload;h.getState().setTodos(t.todos??[])}function In(e){let t=e.payload;h.getState().setModes(t.modes.map(e=>({id:e.id,name:e.name,description:e.description}))),h.getState().setEnv({mode:t.activeId})}function $(e){ne.getState().handleResult(e.type,e.payload)}var Ln={...we,...Sn,...it,...Ge,...wt,...Ne,...Mt,"session.start":e=>{Ht(e),J()},"specs.list":e=>{let t=e.payload;k.getState().setSpecs(t.specs??[])},"specs.detail":e=>{k.getState().setDetail(e.payload)},"sdd.board.snapshot":e=>{D.getState().setSnapshot(e.payload)},"sdd.board.list":e=>{let t=e.payload;D.getState().setBoards(t.boards??[])},"sdd.board.lifecycle_result":e=>{let t=e.payload,n=D.getState();n.setLifecycleResult({...t,at:Date.now()}),n.setDestroying(!1)},"sdd.spec.snapshot":e=>{x.getState().setSnapshot(e.payload)},"sdd.spec.agent_text":e=>{x.getState().setAgentText(e.payload.text??``)},"sdd.spec.error":e=>{x.getState().setError(e.payload.message??`Error`)},"sdd.run.started":e=>{x.getState().setStartedRunId(e.payload.runId??null)},"kanban.list":$,"kanban.get":$,"kanban.create":$,"kanban.duplicate":$,"kanban.update":$,"kanban.delete":$,"kanban.generate":$,"kanban.snapshot":$,"kanban.taskgraph.export":$,"kanban.taskgraph.sync":$,"kanban.task.ready":$,"kanban.task.add":$,"kanban.task.split":$,"kanban.task.merge":$,"kanban.task.update":$,"kanban.task.move":$,"kanban.task.copy":$,"kanban.task.transfer":$,"kanban.task.chain":$,"kanban.task.chain.get":$,"kanban.task.claim":$,"kanban.task.release":$,"kanban.task.metric.add":$,"kanban.task.metric.update":$,"kanban.task.check.add":$,"kanban.task.check.update":$,"kanban.task.note.add":$,"kanban.task.assign":$,"kanban.task.dispatch":$,"kanban.task.remove":$,"kanban.task.get":$,"kanban.column.add":$,"kanban.column.remove":$,"kanban.run.start":$,"kanban.supervisor.status":$,"kanban.supervisor.audit":$,"tools.list":Cn,"memory.list":wn,"memory.super.list":Tn,"memory.super.get":En,"memory.super.update":Dn,"memory.super.remember":On,"memory.super.recover":kn,"memory.super.candidateResolve":An,"memory.super.backfillRecoverable":jn,"skills.list":Mn,"diag.get":Nn,"stats.get":Pn,side_effects:e=>{if(!u(e))return;let t=e.payload;ee.getState().setSideEffects(t.sideEffects??[])},"todos.updated":Fn,"todos.cleared":e=>{u(e)&&h.getState().setTodos([])},"agent.timeline.message":e=>{if(!u(e))return;let t=e.payload;b.getState().pushAgentTimelineEntry({subagentId:t.subagentId,agentName:t.agentName,content:t.content,kind:t.kind,iteration:t.iteration,ts:t.ts,toolName:t.toolName,toolOk:t.toolOk,costUsd:t.costUsd})},"agent.status_changed":e=>{if(!u(e))return;let t=e.payload;b.getState().pushAgentTimelineEntry({subagentId:t.subagentId,agentName:t.agentName,content:t.summary??t.status,kind:`status`,iteration:0,ts:t.ts,status:t.status})},"tasks.updated":e=>{},"plan.updated":e=>{},"modes.list":In,"session.checkpoints":e=>{},"process.list":e=>{},"projects.list":e=>{},"projects.added":e=>{},"projects.selected":e=>{},"tool.disabled":e=>{},"tool.enabled":e=>{},"provider.response":e=>{qt(e)},"tool.progress":e=>{ke(e);let t=_(e),n=g.getState();for(let e of t)n.recordFileEvent(e)},"tool.started":e=>{Oe(e);let t=_(e);t.length>0&&g.getState().startActivities(t)},"tool.executed":e=>{Ae(e);let t=e.payload;t.id&&g.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.tool_started":e=>{c(e);let t=_(e);t.length>0&&g.getState().startActivities(t)},"codemap.tool_executed":e=>{c(e);let t=e.payload;t.id&&g.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.file_event":e=>{let t=_(e),n=g.getState();for(let e of t)n.recordFileEvent(e)},"file.saved":e=>{let t=_(e);if(t.length>0){let e=g.getState();for(let n of t)e.recordFileEvent(n)}},"memory.event":e=>{pt(e);let t=_(e);if(t.length>0){let e=g.getState();for(let n of t)e.recordActivity(n)}}};function Rn(e){let t=[];for(let[n,r]of Object.entries(Ln))r&&t.push(e.on(n,t=>{e.consumeSuppressedChatEcho(n)||r(t)}));return()=>{for(let e of t)e()}}function zn(){let{autoConnect:e,wsUrl:t}=v(),n=v(e=>e.setWsStatus);(0,I.useEffect)(()=>{if(!e)return;le();let r=m(t),i=!1,a=r.onStatus(e=>{i||n(e)});r.connect().then(()=>{i||r.getPrefs()}).catch(e=>{i||console.warn(JSON.stringify({level:`warn`,event:`webui.ws_connection_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))});let o=Rn(r);return()=>{i=!0,o(),a()}},[e,t,n])}function Bn(){let{wsUrl:e}=v(),t=m(e),n=(0,I.useCallback)((e,n)=>t.isConnected?t.sendMessage(e,n):null,[t]),r=(0,I.useCallback)(()=>t.sendAbort(),[t]),{hideConfirm:i}=a(),o=(0,I.useCallback)((e,n)=>{t.sendConfirm(e,n),i()},[t,i]),s=(0,I.useCallback)((e,n)=>t.switchModel(e,n),[t]),c=(0,I.useCallback)(()=>t.listProviders(),[t]),l=(0,I.useCallback)(e=>t.listProviderModels(e),[t]),u=(0,I.useCallback)(()=>t.listSavedProviders(),[t]),d=(0,I.useCallback)((e,n,r)=>t.addKey(e,n,r),[t]),f=(0,I.useCallback)((e,n,r)=>t.updateKey(e,n,r),[t]),p=(0,I.useCallback)((e,n)=>t.deleteKey(e,n),[t]),h=(0,I.useCallback)((e,n)=>t.setActiveKey(e,n),[t]),g=(0,I.useCallback)((e,n,r,i)=>t.addProvider(e,n,r,i),[t]),_=(0,I.useCallback)(e=>t.removeProvider(e),[t]),y=(0,I.useCallback)(e=>{S.getState().setLoading(!0),t.listSessions(e)},[t]),b=(0,I.useCallback)(e=>t.deleteSession(e),[t]),x=(0,I.useCallback)((e,n)=>{S.getState().updateEntryName(e,n),t.renameSession(e,n)},[t]),C=(0,I.useCallback)(e=>t.resumeSessionById(e),[t]),w=(0,I.useCallback)(()=>t.saveSession(),[t]),ee=(0,I.useCallback)(e=>t.listTools(e),[t]),T=(0,I.useCallback)(e=>t.listMemory(e),[t]),te=(0,I.useCallback)(e=>t.listSuperMemories(e),[t]),E=(0,I.useCallback)((e,n)=>t.listSuperMemoriesPage(e,n),[t]),D=(0,I.useCallback)((e,n)=>t.getSuperMemory(e,n),[t]),O=(0,I.useCallback)((e,n,r)=>t.updateSuperMemory(e,n,r),[t]),k=(0,I.useCallback)((e,n)=>t.deleteSuperMemory(e,n),[t]),A=(0,I.useCallback)((e,n)=>t.rememberSuperMemory(e,n),[t]),j=(0,I.useCallback)((e,n)=>t.findMemoriesForFile(e,n),[t]),ne=(0,I.useCallback)((e,n)=>t.recoverSuperMemory(e,n),[t]),M=(0,I.useCallback)((e,n)=>t.resolveMemoryCandidate(e,n),[t]),N=(0,I.useCallback)((e,n)=>t.backfillRecoverable(e,n),[t]),P=(0,I.useCallback)(e=>t.listSkills(e),[t]),re=(0,I.useCallback)(e=>t.getDiag(e),[t]),ie=(0,I.useCallback)(e=>t.getStats(e),[t]),F=(0,I.useCallback)(()=>t.getPlan(),[t]),ae=(0,I.useCallback)(()=>t.listModes(),[t]),L=(0,I.useCallback)(e=>t.switchMode(e),[t]),oe=(0,I.useCallback)(()=>t.listContextModes(),[t]),se=(0,I.useCallback)(e=>t.switchContextMode(e),[t]),ce=(0,I.useCallback)(e=>t.createContextMode(e),[t]),R=(0,I.useCallback)((e,n)=>t.updateContextMode(e,n),[t]),z=(0,I.useCallback)(e=>t.deleteContextMode(e),[t]),B=(0,I.useCallback)(()=>t.repairContext(),[t]),le=(0,I.useCallback)((e,n)=>t.refineModel(e,n),[t]),V=(0,I.useCallback)(e=>t.switchAutonomy(e),[t]),ue=(0,I.useCallback)(e=>t.updatePrefs(e),[t]);return{client:t,sendMessage:n,sendAbort:r,sendConfirm:o,switchModel:s,listProviders:c,listProviderModels:l,listSavedProviders:u,addKey:d,updateKey:f,deleteKey:p,setActiveKey:h,addProvider:g,removeProvider:_,listSessions:y,deleteSession:b,renameSession:x,resumeSession:C,saveSession:w,listTools:ee,listMemory:T,listSuperMemories:te,listSuperMemoriesPage:E,getSuperMemory:D,updateSuperMemory:O,deleteSuperMemory:k,rememberSuperMemory:A,findMemoriesForFile:j,recoverSuperMemory:ne,resolveMemoryCandidate:M,backfillRecoverable:N,listSkills:P,getDiag:re,getStats:ie,getPlan:F,listModes:ae,switchMode:L,listContextModes:oe,switchContextMode:se,createContextMode:ce,updateContextMode:R,deleteContextMode:z,repairContext:B,toggleGoalAutonomous:(0,I.useCallback)(e=>{t.send({type:`goal.toggleAutonomous`,payload:{autonomous:e}})},[t]),startGoal:(0,I.useCallback)((e,n,r=!0)=>{t.send({type:`goal.start`,payload:{title:e,phases:n,autonomous:r}})},[t]),pauseGoal:(0,I.useCallback)(()=>{t.send({type:`goal.pause`,payload:{}})},[t]),resumeGoal:(0,I.useCallback)(()=>{t.send({type:`goal.resume`,payload:{}})},[t]),stopGoal:(0,I.useCallback)(()=>{t.send({type:`goal.stop`,payload:{}})},[t]),selectGoal:(0,I.useCallback)(e=>{t.send({type:`goal.selectPhase`,payload:{phaseId:e}})},[t]),switchAutonomy:V,updatePrefs:ue,refineModel:le}}export{ve as a,H as i,zn as n,ye as o,xe as r,L as s,Bn as t};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-QTnfLwEv.js";import{Xi as t}from"./vendor-BsMARlcy.js";import{n}from"./utils-Ca0_D_-X.js";import{t as r}from"./session-store-BZ4TsTBa.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()}};function o(e){return{type:`provider.clear_models`,payload:{providerId:e}}}function s(e,t){return{type:`provider.undo_clear`,payload:{providerId:e,previousModels:[...t]}}}function c(e){return{type:`provider.update`,payload:e}}function l(e){return Math.max(0,Math.min(100,Math.round((typeof e==`number`&&Number.isFinite(e)?e:0)*100)))}function u(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 d(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 p(){return`viz_${Date.now()}_${++f}`}function m(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)||!m(n,i))return!1;continue}return!1}}return!0}var h={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))`},g={"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))`},_=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??p(),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:u(t),label:t.label,status:d(t.kind),activity:1,color:t.color??h[u(t)],lastSeenAt:a},c=e.nodes.get(o),l=c?{...c,...s}:s,f=!m(c,l),g,_=!1,v;if(t.target){v=t.target;let n={id:v,kind:u(t,!0),label:v,status:d(t.kind),activity:.8,color:t.color??h[u(t,!0)],lastSeenAt:a},r=e.nodes.get(v);g=r?{...r,...n}:n,_=!m(r,g)}let y,b=!1,x;if(t.target&&o){x=`${o}->${t.target}`;let n=e.edges.get(x),r={id:x,source:o,target:t.target,kind:t.kind,label:t.label,intensity:n?Math.min(1,n.intensity+.3):.7,color:t.color??h[u(t)]??h.agent,lastActiveAt:a,totalMagnitude:(n?.totalMagnitude??0)+(t.magnitude??0)};y=n?{...n,...r}:r,b=!m(n,y)}let S=e.nodes,C=e.edges;return(f||_)&&(S=new Map(e.nodes),f&&S.set(o,l),_&&g&&v&&S.set(v,g)),b&&y&&x&&(C=new Map(e.edges),C.set(x,y)),{events:r,toolEvents:i,nodes:S,edges:C}}),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??g[t.kind]??g.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:p(),kind:`provider:delta`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,60),magnitude:e.length,data:{text:e},color:h.provider,flowGroup:`provider`}}case`provider.response`:{let e=t.usage,n=(e?.input??0)+(e?.output??0);return{id:p(),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:h.provider,flowGroup:`provider`}}case`provider.stream_error`:{let e=t.message??`Provider stream error`;return{id:p(),kind:`error`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,80),magnitude:1,data:t,color:h.error,flowGroup:`provider`}}case`tool.started`:{let e=t.name??`tool`;return{id:p(),kind:`tool:started`,timestamp:Date.now(),source:e,target:`filesystem`,label:e,magnitude:1,data:t,color:h.tool,flowGroup:`tool:${e}`}}case`tool.executed`:{let e=t.name??`tool`,n=t.ok??!0;return{id:p(),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?h.tool:h.error,flowGroup:`tool:${e}`}}case`tool.progress`:{let e=t.name??`tool`,n=t.event?.text??``;return{id:p(),kind:`tool:progress`,timestamp:Date.now(),source:e,target:`leader`,label:n.slice(0,60)||e,magnitude:n.length,data:t,color:h.tool,flowGroup:`tool:${e}`}}case`codemap.tool_started`:{let e=t.name??`tool`,n=t.agentId??`subagent`;return{id:p(),kind:`tool:started`,timestamp:Date.now(),source:n,target:e,label:e,magnitude:1,data:t,color:h.tool,flowGroup:`agent:${n}`}}case`codemap.tool_executed`:{let e=t.name??`tool`,n=t.agentId??`subagent`,r=t.ok??!0;return{id:p(),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?h.tool:h.error,flowGroup:`agent:${n}`}}case`tool.loop_detected`:{let e=t.tools??``,n=t.kind??`loop`;return{id:p(),kind:`error`,timestamp:Date.now(),source:e||n,target:`leader`,label:`${n} loop x${t.repeatCount??0}`,magnitude:t.repeatCount??1,data:t,color:h.error,flowGroup:`tool`}}case`delegate.started`:{let e=t.target??`delegate`,n=t.task??``;return{id:p(),kind:`agent:status`,timestamp:Date.now(),source:`leader`,target:e,label:n.slice(0,80)||`Delegating to ${e}`,magnitude:1,data:t,color:h.agent,flowGroup:`delegate:${e}`}}case`delegate.completed`:{let e=t.subagentId??t.target??`delegate`,n=t.ok??!1;return{id:p(),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?h.agent:h.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:p(),kind:`agent:spawned`,timestamp:Date.now(),source:n,target:`session`,label:`${r} spawned`,magnitude:1,data:t,color:h.agent,flowGroup:`agent:${n}`};case`tool_executed`:{let e=t.toolName??`tool`,r=t.ok??!0;return{id:p(),kind:`agent:tool`,timestamp:Date.now(),source:n,target:e,label:e,magnitude:t.durationMs??0,data:t,color:r?h.tool:h.error,flowGroup:`agent:${n}`}}case`task_completed`:{let e=t.status??`completed`;return{id:p(),kind:`agent:status`,timestamp:Date.now(),source:n,target:`session`,label:`${r} ${e}`,magnitude:1,data:t,color:e===`success`?h.success:h.error,flowGroup:`agent:${n}`}}case`ctx_pct`:return{id:p(),kind:`agent:ctx`,timestamp:Date.now(),source:n,target:`session`,label:`ctx ${l(t.load)}%`,magnitude:t.tokens??0,data:t,color:h.agent,flowGroup:`agent:${n}`};case`iteration_summary`:return{id:p(),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:h.agent,flowGroup:`agent:${n}`};case`budget_extended`:return{id:p(),kind:`budget:extended`,timestamp:Date.now(),source:n,target:`session`,label:`${r} extended budget`,magnitude:t.totalExtensions??1,data:t,color:h.tool,flowGroup:`agent:${n}`};case`budget_warning`:return{id:p(),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:h.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:p(),kind:a?`mailbox:send`:`mailbox:deliver`,timestamp:Date.now(),source:n,target:r,label:i||(a?`→ ${r}`:`← ${n}`),magnitude:1,data:t,color:h.mailbox,flowGroup:`mailbox`}}case`iteration.started`:{let e=t.index??0;return{id:p(),kind:`iteration:start`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e}`,magnitude:e,data:t,color:h.agent,flowGroup:`iteration`}}case`iteration.completed`:{let e=t.index??0;return{id:p(),kind:`iteration:end`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e} done`,magnitude:e,data:t,color:h.session,flowGroup:`iteration`}}case`ctx.pct`:{let e=t.tokens??0;return{id:p(),kind:`agent:ctx`,timestamp:Date.now(),source:`leader`,target:`session`,label:`ctx ${l(t.load)}%`,magnitude:e,data:t,color:h.agent,flowGroup:`leader`}}case`error`:{let e=t.message??`Error`;return{id:p(),kind:`error`,timestamp:Date.now(),source:t.phase??`system`,target:`session`,label:e,magnitude:1,data:t,color:h.error,flowGroup:`error`}}case`context.compacted`:return{id:p(),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:p(),kind:`error`,timestamp:Date.now(),source:`compactor`,target:`session`,label:e.slice(0,80),magnitude:t.tokens??1,data:t,color:h.error,flowGroup:`context`}}case`context.repaired`:return{id:p(),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:p(),kind:`session:start`,timestamp:Date.now(),source:`session`,target:`leader`,label:n||e.slice(0,12),magnitude:1,data:t,color:h.session,flowGroup:`session`}}case`sessions.status_update`:{let e=t.sessions??[];return{id:p(),kind:`fleet:snapshot`,timestamp:Date.now(),source:`system`,target:`session`,label:`${e.length} session(s)`,magnitude:e.length,data:t,color:h.system,flowGroup:`fleet`}}default:return null}}function y(e){let t=e.payload?.sessionId,n=r.getState().session?.id;return!t||!n||t===n}function b(e){let t=v(e.type,e.payload);t&&(_.getState().pushEvent(t),_.getState().setActive(!0))}function x(e,t,n){let r=e.payload??{};for(let[e,n]of Object.entries(t)){let t=r[e];if(!S(t,n))return null}if(n)for(let[e,t]of Object.entries(n)){let n=r[e];if(n!=null&&!S(n,t))return null}return r}function S(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 C(e){try{return new URL(e).searchParams.get(`token`)}catch{return null}}function w(){if(typeof window>`u`||!window.location)return null;try{let e=window.location.search??``;return new URLSearchParams(e).get(`token`)}catch{return null}}function T(e){try{let t=new URL(e);return t.searchParams.delete(`token`),t.toString()}catch{return e}}function E(){if(!(typeof window>`u`||!window.location||!window.history?.replaceState))try{let e=window.location.href;if(!e)return;let t=new URL(e);if(!t.searchParams.has(`token`))return;t.searchParams.delete(`token`),window.history.replaceState(window.history.state,document.title,t.toString())}catch{}}var D=3457;function O(){if(typeof document>`u`)return D;let e=document.querySelector(`meta[name="wrongstack-ws-port"]`)?.getAttribute(`content`),t=e?Number.parseInt(e,10):NaN;return Number.isFinite(t)&&t>0&&t<65536?t:D}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=w();return n&&!t.searchParams.has(`token`)&&t.searchParams.set(`token`,n),t.toString()}catch{return null}}function A(){let e=k();if(e)return e;let t=O();if(typeof window>`u`||!window.location?.hostname)return`ws://127.0.0.1:${t}`;let n=window.location.protocol===`https:`?`wss`:`ws`,r=window.location.hostname.toLowerCase(),i=w(),a=i?`?token=${encodeURIComponent(i)}`:``;return r===`localhost`||r===`127.0.0.1`||r===`[::1]`||r===`::1`?`${n}://127.0.0.1:${t}${a}`:`${n}://${window.location.hostname}:${t}${a}`}function 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 M=e({WrongStackWebSocketClient:()=>I,getWSClient:()=>R}),N={"context.debug":`context.debug`,"diag.get":`diag.get`,"memory.list":`memory.list`,"memory.super.get":`memory.super.get`,"memory.super.list":`memory.super.list`,"memory.super.remember":`memory.super.remember`,"memory.super.update":`memory.super.update`,"skills.list":`skills.list`,"stats.get":`stats.get`,"tools.list":`tools.list`},P=3e4;function F(e){try{let t=new URL(e),n=new URL(j());return t.hostname===n.hostname}catch{return!0}}var I=class e{ws=null;url;handlers=new Map;reconnectAttempts=0;maxReconnectAttempts=10;reconnectDelay=1e3;shouldReconnect=!0;reconnectTimer=null;connectPromise=null;socketGeneration=0;messageQueue=[];static MAX_QUEUED_MESSAGES=1e3;pendingConfirms=new Map;sessionId=null;lastErrorText;statusListeners=new Set;currentStatus={state:`connecting`};suppressedChatEchoes=new Map;protocolCapabilities=new Set;supportsCapability(e){return this.protocolCapabilities.has(e)}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??A()}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=`))){F(this.url)&&(this.url=T(this.url)),E();return}let e=C(this.url)??w();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?(F(this.url)&&(this.url=T(this.url)),E()):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(),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.reconnectAttempts=0,this.lastErrorText=void 0,this.setStatus({state:`open`}),this.flushMessageQueue(),e())},r.onmessage=e=>{if(this.socketGeneration===n)try{let t=JSON.parse(e.data);this.handleMessage(t)}catch(e){console.error(JSON.stringify({level:`error`,event:`ws_client.message_parse_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}},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(!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.reconnectAttempts>=this.maxReconnectAttempts){this.reconnectTimer=null,this.setStatus({state:`closed`,error:this.lastErrorText??`Disconnected`});return}this.reconnectAttempts++;let e=Math.min(this.reconnectDelay*2**(this.reconnectAttempts-1),3e4),t=Date.now()+e;this.setStatus({state:`reconnecting`,attempt:this.reconnectAttempts,nextRetryAt:t,lastError:this.lastErrorText}),this.reconnectTimer=setTimeout(async()=>{if(this.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()}))}},e)}retryNow(){this.currentStatus.state!==`open`&&(this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.reconnectAttempts=0,this.connect().catch(e=>console.warn(JSON.stringify({level:`warn`,event:`ws_client.reconnect_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))))}flushMessageQueue(){for(;this.messageQueue.length>0;){let e=this.messageQueue.shift();e&&this.send(e)}}handleMessage(e){if(e.type===`tool.confirm_needed`){let t=e.payload;this.pendingConfirms.set(t.id,{}),this.emit(e);return}if(e.type===`session.start`){let t=e.payload;this.sessionId=t.sessionId,this.protocolCapabilities=new Set(t.protocolCapabilities??[])}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={}){if(n.echoToChat===!1){let e=N[t.type];if(e){let t=this.suppressedChatEchoes.get(e)??[];t.push(Date.now()+P),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)this.ws.send(JSON.stringify(t));else{if(this.messageQueue.length>=e.MAX_QUEUED_MESSAGES){let t=this.messageQueue.shift();t&&console.warn(JSON.stringify({level:`warn`,event:`ws_client.message_queue_full`,cap:e.MAX_QUEUED_MESSAGES,droppedType:t.type,timestamp:new Date().toISOString()}))}this.messageQueue.push(t)}}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}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){this.send({type:`model.switch`,payload:{provider:e,model:t}})}newSession(){this.send({type:`session.new`,payload:this.withSession({})})}listProviders(){this.send({type:`providers.list`})}listProviderModels(e){this.send({type:`provider.models`,payload:{providerId:e}})}listSavedProviders(){this.send({type:`providers.saved`})}addKey(e,t,n){this.send({type:`key.add`,payload:{providerId:e,label:t,apiKey:n}})}updateKey(e,t,n){this.send({type:`key.update`,payload:{providerId:e,label:t,apiKey:n}})}deleteKey(e,t){this.send({type:`key.delete`,payload:{providerId:e,label:t}})}setActiveKey(e,t){this.send({type:`key.set_active`,payload:{providerId:e,label:t}})}addProvider(e,t,n,r){this.send({type:`provider.add`,payload:{id:e,family:t,baseUrl:n,apiKey:r}})}removeProvider(e){this.send({type:`provider.remove`,payload:{providerId:e}})}startOAuth(e){this.send({type:`auth.oauth.start`,payload:{kind:e}})}submitOAuthCode(e,t){this.send({type:`auth.oauth.code`,payload:{kind:e,input:t}})}cancelOAuth(e){this.send({type:`auth.oauth.cancel`,payload:{kind:e}})}probeProvider(e,t){this.send({type:`provider.probe`,payload:t===void 0?{providerId:e}:{providerId:e,timeoutMs:t}})}clearProviderModels(e){this.send(o(e))}undoProviderClear(e,t){this.send(s(e,t))}updateProvider(e){this.send(c(e))}clearContext(){this.send({type:`context.clear`,payload:this.withSession({})})}compactContext(e=!1){this.send({type:`context.compact`,payload:this.withSession({aggressive:e})})}repairContext(){this.send({type:`context.repair`,payload:this.withSession({})})}debugContext(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`})}listTools(e){this.send({type:`tools.list`},e)}listMemory(e){this.send({type:`memory.list`},e)}listSuperMemories(e){this.send({type:`memory.super.list`},e)}getSuperMemory(e,t){this.send({type:`memory.super.get`,payload:{id:e}},t)}updateSuperMemory(e,t,n){this.send({type:`memory.super.update`,payload:{id:e,...t}},n)}deleteSuperMemory(e,t){this.send({type:`memory.super.delete`,payload:{id:e,reason:t}})}rememberSuperMemory(e,t){this.send({type:`memory.super.remember`,payload:e},t)}findMemoriesForFile(e,t){this.send({type:`memory.super.forFile`,payload:e},t)}recoverSuperMemory(e,t){this.send({type:`memory.super.recover`,payload:e},t)}resolveMemoryCandidate(e,t){this.send({type:`memory.super.candidateResolve`,payload:e},t)}backfillRecoverable(e,t){this.send({type:`memory.super.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}}})}disconnect(){this.shouldReconnect=!1,this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.messageQueue.length=0,this.ws?.close(),this.ws=null}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}get currentSessionId(){return this.sessionId}},L=null;function R(e){return L||=new I(e),L}export{b as a,v as c,y as i,a as l,M as n,x as o,A as r,_ as s,R as t};
1
+ import{n as e}from"./rolldown-runtime-QTnfLwEv.js";import{Xi as t}from"./vendor-BsMARlcy.js";import{n}from"./utils-Ca0_D_-X.js";import{t as r}from"./session-store-BZ4TsTBa.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()}};function o(e){return{type:`provider.clear_models`,payload:{providerId:e}}}function s(e,t){return{type:`provider.undo_clear`,payload:{providerId:e,previousModels:[...t]}}}function c(e){return{type:`provider.update`,payload:e}}function l(e){return Math.max(0,Math.min(100,Math.round((typeof e==`number`&&Number.isFinite(e)?e:0)*100)))}function u(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 d(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 p(){return`viz_${Date.now()}_${++f}`}function m(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)||!m(n,i))return!1;continue}return!1}}return!0}var h={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))`},g={"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))`},_=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??p(),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:u(t),label:t.label,status:d(t.kind),activity:1,color:t.color??h[u(t)],lastSeenAt:a},c=e.nodes.get(o),l=c?{...c,...s}:s,f=!m(c,l),g,_=!1,v;if(t.target){v=t.target;let n={id:v,kind:u(t,!0),label:v,status:d(t.kind),activity:.8,color:t.color??h[u(t,!0)],lastSeenAt:a},r=e.nodes.get(v);g=r?{...r,...n}:n,_=!m(r,g)}let y,b=!1,x;if(t.target&&o){x=`${o}->${t.target}`;let n=e.edges.get(x),r={id:x,source:o,target:t.target,kind:t.kind,label:t.label,intensity:n?Math.min(1,n.intensity+.3):.7,color:t.color??h[u(t)]??h.agent,lastActiveAt:a,totalMagnitude:(n?.totalMagnitude??0)+(t.magnitude??0)};y=n?{...n,...r}:r,b=!m(n,y)}let S=e.nodes,C=e.edges;return(f||_)&&(S=new Map(e.nodes),f&&S.set(o,l),_&&g&&v&&S.set(v,g)),b&&y&&x&&(C=new Map(e.edges),C.set(x,y)),{events:r,toolEvents:i,nodes:S,edges:C}}),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??g[t.kind]??g.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:p(),kind:`provider:delta`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,60),magnitude:e.length,data:{text:e},color:h.provider,flowGroup:`provider`}}case`provider.response`:{let e=t.usage,n=(e?.input??0)+(e?.output??0);return{id:p(),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:h.provider,flowGroup:`provider`}}case`provider.stream_error`:{let e=t.message??`Provider stream error`;return{id:p(),kind:`error`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,80),magnitude:1,data:t,color:h.error,flowGroup:`provider`}}case`tool.started`:{let e=t.name??`tool`;return{id:p(),kind:`tool:started`,timestamp:Date.now(),source:e,target:`filesystem`,label:e,magnitude:1,data:t,color:h.tool,flowGroup:`tool:${e}`}}case`tool.executed`:{let e=t.name??`tool`,n=t.ok??!0;return{id:p(),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?h.tool:h.error,flowGroup:`tool:${e}`}}case`tool.progress`:{let e=t.name??`tool`,n=t.event?.text??``;return{id:p(),kind:`tool:progress`,timestamp:Date.now(),source:e,target:`leader`,label:n.slice(0,60)||e,magnitude:n.length,data:t,color:h.tool,flowGroup:`tool:${e}`}}case`codemap.tool_started`:{let e=t.name??`tool`,n=t.agentId??`subagent`;return{id:p(),kind:`tool:started`,timestamp:Date.now(),source:n,target:e,label:e,magnitude:1,data:t,color:h.tool,flowGroup:`agent:${n}`}}case`codemap.tool_executed`:{let e=t.name??`tool`,n=t.agentId??`subagent`,r=t.ok??!0;return{id:p(),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?h.tool:h.error,flowGroup:`agent:${n}`}}case`tool.loop_detected`:{let e=t.tools??``,n=t.kind??`loop`;return{id:p(),kind:`error`,timestamp:Date.now(),source:e||n,target:`leader`,label:`${n} loop x${t.repeatCount??0}`,magnitude:t.repeatCount??1,data:t,color:h.error,flowGroup:`tool`}}case`delegate.started`:{let e=t.target??`delegate`,n=t.task??``;return{id:p(),kind:`agent:status`,timestamp:Date.now(),source:`leader`,target:e,label:n.slice(0,80)||`Delegating to ${e}`,magnitude:1,data:t,color:h.agent,flowGroup:`delegate:${e}`}}case`delegate.completed`:{let e=t.subagentId??t.target??`delegate`,n=t.ok??!1;return{id:p(),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?h.agent:h.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:p(),kind:`agent:spawned`,timestamp:Date.now(),source:n,target:`session`,label:`${r} spawned`,magnitude:1,data:t,color:h.agent,flowGroup:`agent:${n}`};case`tool_executed`:{let e=t.toolName??`tool`,r=t.ok??!0;return{id:p(),kind:`agent:tool`,timestamp:Date.now(),source:n,target:e,label:e,magnitude:t.durationMs??0,data:t,color:r?h.tool:h.error,flowGroup:`agent:${n}`}}case`task_completed`:{let e=t.status??`completed`;return{id:p(),kind:`agent:status`,timestamp:Date.now(),source:n,target:`session`,label:`${r} ${e}`,magnitude:1,data:t,color:e===`success`?h.success:h.error,flowGroup:`agent:${n}`}}case`ctx_pct`:return{id:p(),kind:`agent:ctx`,timestamp:Date.now(),source:n,target:`session`,label:`ctx ${l(t.load)}%`,magnitude:t.tokens??0,data:t,color:h.agent,flowGroup:`agent:${n}`};case`iteration_summary`:return{id:p(),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:h.agent,flowGroup:`agent:${n}`};case`budget_extended`:return{id:p(),kind:`budget:extended`,timestamp:Date.now(),source:n,target:`session`,label:`${r} extended budget`,magnitude:t.totalExtensions??1,data:t,color:h.tool,flowGroup:`agent:${n}`};case`budget_warning`:return{id:p(),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:h.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:p(),kind:a?`mailbox:send`:`mailbox:deliver`,timestamp:Date.now(),source:n,target:r,label:i||(a?`→ ${r}`:`← ${n}`),magnitude:1,data:t,color:h.mailbox,flowGroup:`mailbox`}}case`iteration.started`:{let e=t.index??0;return{id:p(),kind:`iteration:start`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e}`,magnitude:e,data:t,color:h.agent,flowGroup:`iteration`}}case`iteration.completed`:{let e=t.index??0;return{id:p(),kind:`iteration:end`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e} done`,magnitude:e,data:t,color:h.session,flowGroup:`iteration`}}case`ctx.pct`:{let e=t.tokens??0;return{id:p(),kind:`agent:ctx`,timestamp:Date.now(),source:`leader`,target:`session`,label:`ctx ${l(t.load)}%`,magnitude:e,data:t,color:h.agent,flowGroup:`leader`}}case`error`:{let e=t.message??`Error`;return{id:p(),kind:`error`,timestamp:Date.now(),source:t.phase??`system`,target:`session`,label:e,magnitude:1,data:t,color:h.error,flowGroup:`error`}}case`context.compacted`:return{id:p(),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:p(),kind:`error`,timestamp:Date.now(),source:`compactor`,target:`session`,label:e.slice(0,80),magnitude:t.tokens??1,data:t,color:h.error,flowGroup:`context`}}case`context.repaired`:return{id:p(),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:p(),kind:`session:start`,timestamp:Date.now(),source:`session`,target:`leader`,label:n||e.slice(0,12),magnitude:1,data:t,color:h.session,flowGroup:`session`}}case`sessions.status_update`:{let e=t.sessions??[];return{id:p(),kind:`fleet:snapshot`,timestamp:Date.now(),source:`system`,target:`session`,label:`${e.length} session(s)`,magnitude:e.length,data:t,color:h.system,flowGroup:`fleet`}}default:return null}}function y(e){let t=e.payload?.sessionId,n=r.getState().session?.id;return!t||!n||t===n}function b(e){let t=v(e.type,e.payload);t&&(_.getState().pushEvent(t),_.getState().setActive(!0))}function x(e,t,n){let r=e.payload??{};for(let[e,n]of Object.entries(t)){let t=r[e];if(!S(t,n))return null}if(n)for(let[e,t]of Object.entries(n)){let n=r[e];if(n!=null&&!S(n,t))return null}return r}function S(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 C(e){try{return new URL(e).searchParams.get(`token`)}catch{return null}}function w(){if(typeof window>`u`||!window.location)return null;try{let e=window.location.search??``;return new URLSearchParams(e).get(`token`)}catch{return null}}function T(e){try{let t=new URL(e);return t.searchParams.delete(`token`),t.toString()}catch{return e}}function E(){if(!(typeof window>`u`||!window.location||!window.history?.replaceState))try{let e=window.location.href;if(!e)return;let t=new URL(e);if(!t.searchParams.has(`token`))return;t.searchParams.delete(`token`),window.history.replaceState(window.history.state,document.title,t.toString())}catch{}}var D=3457;function O(){if(typeof document>`u`)return D;let e=document.querySelector(`meta[name="wrongstack-ws-port"]`)?.getAttribute(`content`),t=e?Number.parseInt(e,10):NaN;return Number.isFinite(t)&&t>0&&t<65536?t:D}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=w();return n&&!t.searchParams.has(`token`)&&t.searchParams.set(`token`,n),t.toString()}catch{return null}}function A(){let e=k();if(e)return e;let t=O();if(typeof window>`u`||!window.location?.hostname)return`ws://127.0.0.1:${t}`;let n=window.location.protocol===`https:`?`wss`:`ws`,r=window.location.hostname.toLowerCase(),i=w(),a=i?`?token=${encodeURIComponent(i)}`:``;return r===`localhost`||r===`127.0.0.1`||r===`[::1]`||r===`::1`?`${n}://127.0.0.1:${t}${a}`:`${n}://${window.location.hostname}:${t}${a}`}function 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 M=e({WrongStackWebSocketClient:()=>I,getWSClient:()=>R}),N={"context.debug":`context.debug`,"diag.get":`diag.get`,"memory.list":`memory.list`,"memory.super.get":`memory.super.get`,"memory.super.list":`memory.super.list`,"memory.super.listPage":`memory.super.listPage`,"memory.super.remember":`memory.super.remember`,"memory.super.update":`memory.super.update`,"skills.list":`skills.list`,"stats.get":`stats.get`,"tools.list":`tools.list`},P=3e4;function F(e){try{let t=new URL(e),n=new URL(j());return t.hostname===n.hostname}catch{return!0}}var I=class e{ws=null;url;handlers=new Map;reconnectAttempts=0;maxReconnectAttempts=10;reconnectDelay=1e3;shouldReconnect=!0;reconnectTimer=null;connectPromise=null;socketGeneration=0;messageQueue=[];static MAX_QUEUED_MESSAGES=1e3;pendingConfirms=new Map;sessionId=null;lastErrorText;statusListeners=new Set;currentStatus={state:`connecting`};suppressedChatEchoes=new Map;protocolCapabilities=new Set;supportsCapability(e){return this.protocolCapabilities.has(e)}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??A()}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=`))){F(this.url)&&(this.url=T(this.url)),E();return}let e=C(this.url)??w();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?(F(this.url)&&(this.url=T(this.url)),E()):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(),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.reconnectAttempts=0,this.lastErrorText=void 0,this.setStatus({state:`open`}),this.flushMessageQueue(),e())},r.onmessage=e=>{if(this.socketGeneration===n)try{let t=JSON.parse(e.data);this.handleMessage(t)}catch(e){console.error(JSON.stringify({level:`error`,event:`ws_client.message_parse_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}},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(!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.reconnectAttempts>=this.maxReconnectAttempts){this.reconnectTimer=null,this.setStatus({state:`closed`,error:this.lastErrorText??`Disconnected`});return}this.reconnectAttempts++;let e=Math.min(this.reconnectDelay*2**(this.reconnectAttempts-1),3e4),t=Date.now()+e;this.setStatus({state:`reconnecting`,attempt:this.reconnectAttempts,nextRetryAt:t,lastError:this.lastErrorText}),this.reconnectTimer=setTimeout(async()=>{if(this.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()}))}},e)}retryNow(){this.currentStatus.state!==`open`&&(this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.reconnectAttempts=0,this.connect().catch(e=>console.warn(JSON.stringify({level:`warn`,event:`ws_client.reconnect_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))))}flushMessageQueue(){for(;this.messageQueue.length>0;){let e=this.messageQueue.shift();e&&this.send(e)}}handleMessage(e){if(e.type===`tool.confirm_needed`){let t=e.payload;this.pendingConfirms.set(t.id,{}),this.emit(e);return}if(e.type===`session.start`){let t=e.payload;this.sessionId=t.sessionId,this.protocolCapabilities=new Set(t.protocolCapabilities??[])}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={}){if(n.echoToChat===!1){let e=N[t.type];if(e){let t=this.suppressedChatEchoes.get(e)??[];t.push(Date.now()+P),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)this.ws.send(JSON.stringify(t));else{if(this.messageQueue.length>=e.MAX_QUEUED_MESSAGES){let t=this.messageQueue.shift();t&&console.warn(JSON.stringify({level:`warn`,event:`ws_client.message_queue_full`,cap:e.MAX_QUEUED_MESSAGES,droppedType:t.type,timestamp:new Date().toISOString()}))}this.messageQueue.push(t)}}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}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){this.send({type:`model.switch`,payload:{provider:e,model:t}})}newSession(){this.send({type:`session.new`,payload:this.withSession({})})}listProviders(){this.send({type:`providers.list`})}listProviderModels(e){this.send({type:`provider.models`,payload:{providerId:e}})}listSavedProviders(){this.send({type:`providers.saved`})}addKey(e,t,n){this.send({type:`key.add`,payload:{providerId:e,label:t,apiKey:n}})}updateKey(e,t,n){this.send({type:`key.update`,payload:{providerId:e,label:t,apiKey:n}})}deleteKey(e,t){this.send({type:`key.delete`,payload:{providerId:e,label:t}})}setActiveKey(e,t){this.send({type:`key.set_active`,payload:{providerId:e,label:t}})}addProvider(e,t,n,r){this.send({type:`provider.add`,payload:{id:e,family:t,baseUrl:n,apiKey:r}})}removeProvider(e){this.send({type:`provider.remove`,payload:{providerId:e}})}startOAuth(e){this.send({type:`auth.oauth.start`,payload:{kind:e}})}submitOAuthCode(e,t){this.send({type:`auth.oauth.code`,payload:{kind:e,input:t}})}cancelOAuth(e){this.send({type:`auth.oauth.cancel`,payload:{kind:e}})}probeProvider(e,t){this.send({type:`provider.probe`,payload:t===void 0?{providerId:e}:{providerId:e,timeoutMs:t}})}clearProviderModels(e){this.send(o(e))}undoProviderClear(e,t){this.send(s(e,t))}updateProvider(e){this.send(c(e))}clearContext(){this.send({type:`context.clear`,payload:this.withSession({})})}compactContext(e=!1){this.send({type:`context.compact`,payload:this.withSession({aggressive:e})})}repairContext(){this.send({type:`context.repair`,payload:this.withSession({})})}debugContext(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`})}listTools(e){this.send({type:`tools.list`},e)}listMemory(e){this.send({type:`memory.list`},e)}listSuperMemories(e){this.send({type:`memory.super.list`},e)}listSuperMemoriesPage(e,t){this.send({type:`memory.super.listPage`,payload:{...e}},t)}getSuperMemory(e,t){this.send({type:`memory.super.get`,payload:{id:e}},t)}updateSuperMemory(e,t,n){this.send({type:`memory.super.update`,payload:{id:e,...t}},n)}deleteSuperMemory(e,t){this.send({type:`memory.super.delete`,payload:{id:e,reason:t}})}rememberSuperMemory(e,t){this.send({type:`memory.super.remember`,payload:e},t)}findMemoriesForFile(e,t){this.send({type:`memory.super.forFile`,payload:e},t)}recoverSuperMemory(e,t){this.send({type:`memory.super.recover`,payload:e},t)}resolveMemoryCandidate(e,t){this.send({type:`memory.super.candidateResolve`,payload:e},t)}backfillRecoverable(e,t){this.send({type:`memory.super.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}}})}disconnect(){this.shouldReconnect=!1,this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.messageQueue.length=0,this.ws?.close(),this.ws=null}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}get currentSessionId(){return this.sessionId}},L=null;function R(e){return L||=new I(e),L}export{b as a,v as c,y as i,a as l,M as n,x as o,A as r,_ as s,R as t};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MemoryManager/index.tsx"],"names":[],"mappings":"AA0CA,wBAAgB,aAAa,gCAi1B5B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MemoryManager/index.tsx"],"names":[],"mappings":"AA0CA,wBAAgB,aAAa,gCAg8B5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAqC5C,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,iCA8cnB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/index.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAuB5C,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,iCAywBnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/utils.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,iBAAe,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAsB7D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAWrE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKrE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,gFAAgF;AAChF,eAAO,MAAM,aAAa,4BAAoB,CAAC;AA6C/C,eAAO,MAAM,kBAAkB;IAa7B,IAAI,4CAKD;QACD,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;KACxC;CAgEF,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/utils.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,iBAAe,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAsB7D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAWrE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKrE;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMrD;AAED,gFAAgF;AAChF,eAAO,MAAM,aAAa,4BAAoB,CAAC;AA6C/C,eAAO,MAAM,kBAAkB;IAa7B,IAAI,4CAKD;QACD,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;KACxC;CAuEF,CAAC"}
@@ -25,6 +25,6 @@ interface WatchMessageBubbleProps {
25
25
  entry: WatchEntry;
26
26
  isContinuation?: boolean;
27
27
  }
28
- export declare function WatchMessageBubble({ entry, isContinuation, }: WatchMessageBubbleProps): import("react").JSX.Element;
28
+ export declare function WatchMessageBubble({ entry, isContinuation }: WatchMessageBubbleProps): import("react").JSX.Element;
29
29
  export {};
30
30
  //# sourceMappingURL=WatchMessageBubble.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WatchMessageBubble.d.ts","sourceRoot":"","sources":["../../src/components/WatchMessageBubble.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,UAAU,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAkKD,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,cAAsB,GACvB,EAAE,uBAAuB,+BAyEzB"}
1
+ {"version":3,"file":"WatchMessageBubble.d.ts","sourceRoot":"","sources":["../../src/components/WatchMessageBubble.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,UAAU,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAoKD,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,cAAsB,EAAE,EAAE,uBAAuB,+BAyE5F"}
@@ -40,6 +40,13 @@ export declare function useWebSocket(): {
40
40
  listTools: (options?: WSSendOptions) => void;
41
41
  listMemory: (options?: WSSendOptions) => void;
42
42
  listSuperMemories: (options?: WSSendOptions) => void;
43
+ listSuperMemoriesPage: (params?: {
44
+ statuses?: string[];
45
+ kind?: string;
46
+ query?: string;
47
+ limit?: number;
48
+ cursor?: string;
49
+ }, options?: WSSendOptions) => void;
43
50
  getSuperMemory: (id: string, options?: WSSendOptions) => void;
44
51
  updateSuperMemory: (id: string, patch: Record<string, unknown>, options?: WSSendOptions) => void;
45
52
  deleteSuperMemory: (id: string, reason?: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useWebSocket.d.ts","sourceRoot":"","sources":["../../src/hooks/useWebSocket.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAqChF;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAyC5C;AAED;;;GAGG;AACH,wBAAgB,YAAY;;2BAKd,MAAM,WAAW,OAAO,SAAS,EAAE,kBAAkB,EAAE;;sBAW5D,MAAM,YAAY,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,MAAM;4BAQ5C,MAAM,SAAS,MAAM;;qCAMnB,MAAM;;yBAKN,MAAM,SAAS,MAAM,UAAU,MAAM;4BAIrC,MAAM,SAAS,MAAM,UAAU,MAAM;4BAKrC,MAAM,SAAS,MAAM;+BAIrB,MAAM,SAAS,MAAM;sBAI7B,MAAM,UAAU,MAAM,YAAY,MAAM,GAAG,SAAS,WAAW,MAAM;iCAK7D,MAAM;2BAKV,MAAM;wBAMsB,MAAM;wBAEtC,MAAM,QAAQ,MAAM;wBAMY,MAAM;;0BAEJ,aAAa;2BACZ,aAAa;kCAE1C,aAAa;yBAInB,MAAM,YAAY,aAAa;4BAI/B,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,aAAa;4BAK/D,MAAM,WAAW,MAAM;gCAIrB,UAAU;;oDAAmC,CAAC,CAAC,CAAC,YAAY,aAAa;gCAKzE,UAAU;;oDAAmC,CAAC,CAAC,CAAC,YAAY,aAAa;+BAKzE,UAAU;;oDAAkC,CAAC,CAAC,CAAC,YAAY,aAAa;mCAKxE,UAAU;;oDAAsC,CAAC,CAAC,CAAC,YAAY,aAAa;gCAK5E,UAAU;;oDAAmC,CAAC,CAAC,CAAC,YAAY,aAAa;2BAIxC,aAAa;wBAChB,aAAa;yBACZ,aAAa;;;qBAGjB,MAAM;;4BAEC,MAAM;8BAExC;QACL,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACzD,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;KACxB;4BAKK,MAAM,SACH;QACL,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,UAAU,CAAC,EACP;YAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAAE,GACnF,SAAS,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC;4BAIsC,MAAM;;uCAyBlC,OAAO;uBAMZ,MAAM,WAAW,OAAO,EAAE,GAAG,SAAS;;;;0BAepC,MAAM;2BA7BwB,MAAM;yBAEtC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;wBAbvB,MAAM,SACL;QACL,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B;EA8FN"}
1
+ {"version":3,"file":"useWebSocket.d.ts","sourceRoot":"","sources":["../../src/hooks/useWebSocket.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAqChF;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAyC5C;AAED;;;GAGG;AACH,wBAAgB,YAAY;;2BAKd,MAAM,WAAW,OAAO,SAAS,EAAE,kBAAkB,EAAE;;sBAW5D,MAAM,YAAY,KAAK,GAAG,IAAI,GAAG,QAAQ,GAAG,MAAM;4BAQ5C,MAAM,SAAS,MAAM;;qCAMnB,MAAM;;yBAKN,MAAM,SAAS,MAAM,UAAU,MAAM;4BAIrC,MAAM,SAAS,MAAM,UAAU,MAAM;4BAKrC,MAAM,SAAS,MAAM;+BAIrB,MAAM,SAAS,MAAM;sBAI7B,MAAM,UAAU,MAAM,YAAY,MAAM,GAAG,SAAS,WAAW,MAAM;iCAK7D,MAAM;2BAKV,MAAM;wBAMsB,MAAM;wBAEtC,MAAM,QAAQ,MAAM;wBAMY,MAAM;;0BAEJ,aAAa;2BACZ,aAAa;kCAE1C,aAAa;qCAKb;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,YACtF,aAAa;yBAKpB,MAAM,YAAY,aAAa;4BAI/B,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,aAAa;4BAK/D,MAAM,WAAW,MAAM;gCAIrB,UAAU;;oDAAmC,CAAC,CAAC,CAAC,YAAY,aAAa;gCAKzE,UAAU;;oDAAmC,CAAC,CAAC,CAAC,YAAY,aAAa;+BAKzE,UAAU;;oDAAkC,CAAC,CAAC,CAAC,YAAY,aAAa;mCAKxE,UAAU;;oDAAsC,CAAC,CAAC,CAAC,YAAY,aAAa;gCAK5E,UAAU;;oDAAmC,CAAC,CAAC,CAAC,YAAY,aAAa;2BAIxC,aAAa;wBAChB,aAAa;yBACZ,aAAa;;;qBAGjB,MAAM;;4BAEC,MAAM;8BAExC;QACL,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACzD,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;KACxB;4BAKK,MAAM,SACH;QACL,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACjC,UAAU,CAAC,EACP;YAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAAE,GACnF,SAAS,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACrC;4BAIsC,MAAM;;uCAyBlC,OAAO;uBAMZ,MAAM,WAAW,OAAO,EAAE,GAAG,SAAS;;;;0BAepC,MAAM;2BA7BwB,MAAM;yBAEtC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;wBAbvB,MAAM,SACL;QACL,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B;EA+FN"}
package/dist/index.html CHANGED
@@ -5,7 +5,7 @@
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-DeInm8PK.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-D_QeLLAg.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-QTnfLwEv.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/monaco-C7izDJhg.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/markdown-L6DLSM7f.js">
@@ -22,23 +22,23 @@
22
22
  <link rel="modulepreload" crossorigin href="/assets/toasts-BL_8kH4B.js">
23
23
  <link rel="modulepreload" crossorigin href="/assets/i18n-VQ8IAWEk.js">
24
24
  <link rel="modulepreload" crossorigin href="/assets/session-store-BZ4TsTBa.js">
25
- <link rel="modulepreload" crossorigin href="/assets/ws-client-fBMR5Zg-.js">
25
+ <link rel="modulepreload" crossorigin href="/assets/ws-client-BOKgdABR.js">
26
26
  <link rel="modulepreload" crossorigin href="/assets/codemap-activity-store-CfY_WBuV.js">
27
27
  <link rel="modulepreload" crossorigin href="/assets/mailbox-store-CibW8-D6.js">
28
- <link rel="modulepreload" crossorigin href="/assets/stores-j4CUJPI1.js">
28
+ <link rel="modulepreload" crossorigin href="/assets/stores-BazbaxhT.js">
29
29
  <link rel="modulepreload" crossorigin href="/assets/view-navigation-Dx54K1uS.js">
30
30
  <link rel="modulepreload" crossorigin href="/assets/Toaster-CPO2WS96.js">
31
- <link rel="modulepreload" crossorigin href="/assets/useWebSocket-6y5oEA6Z.js">
31
+ <link rel="modulepreload" crossorigin href="/assets/useWebSocket-BEkBQAAR.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/dialog-DWvX4WNX.js">
33
- <link rel="modulepreload" crossorigin href="/assets/ModelPicker-DPNTWYxu.js">
33
+ <link rel="modulepreload" crossorigin href="/assets/ModelPicker-DwoHlu_Q.js">
34
34
  <link rel="modulepreload" crossorigin href="/assets/pagination-D2oCHj95.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/button-FFFZxxoZ.js">
36
- <link rel="modulepreload" crossorigin href="/assets/utils-dYJO5odh.js">
36
+ <link rel="modulepreload" crossorigin href="/assets/LazyMarkdown-CGMv69IJ.js">
37
37
  <link rel="modulepreload" crossorigin href="/assets/input-BpQGvMAi.js">
38
38
  <link rel="modulepreload" crossorigin href="/assets/ConfirmModal-B9lFAAUO.js">
39
39
  <link rel="stylesheet" crossorigin href="/assets/monaco-Br_kD0ds.css">
40
40
  <link rel="stylesheet" crossorigin href="/assets/vendor-BMdWcCR4.css">
41
- <link rel="stylesheet" crossorigin href="/assets/index-B-xfHdYd.css">
41
+ <link rel="stylesheet" crossorigin href="/assets/index-CuByAUEC.css">
42
42
  </head>
43
43
  <body>
44
44
  <div id="root"></div>