@wrongstack/webui 0.319.1 → 1.0.0

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 (207) hide show
  1. package/dist/assets/AgentRosterView-B_J6SvVF.js +12 -0
  2. package/dist/assets/AnalyticsDashboard-BgZiiiDb.js +1 -0
  3. package/dist/assets/AudienceMemoryPanel-CPuksIMN.js +3 -0
  4. package/dist/assets/ChangesView-CmZeNwbw.js +1 -0
  5. package/dist/assets/ChimeraReviewsView-CpfSkgQ2.js +1 -0
  6. package/dist/assets/ChronicleDashboard-B6lhZGjz.js +1 -0
  7. package/dist/assets/CodeEditor-Daz1yqjF.js +2 -0
  8. package/dist/assets/CodeMap-D-H9FNUJ.js +1 -0
  9. package/dist/assets/ConfirmModal-CjsZbvo3.js +1 -0
  10. package/dist/assets/CronJobsPanel-DGKW_zwc.js +1 -0
  11. package/dist/assets/{DeadCodeScanPanel-DooqnEMF.js → DeadCodeScanPanel-Cn5bSfLv.js} +1 -1
  12. package/dist/assets/DebugDashboard-Uh9QLbEk.js +1 -0
  13. package/dist/assets/DesignGalleryView-Da1QtI5b.js +1 -0
  14. package/dist/assets/GoalView-BgVxzzzS.js +1 -0
  15. package/dist/assets/KanbanView-_JvZKFyI.js +3 -0
  16. package/dist/assets/MailboxDetailView-26bVSSbU.js +1 -0
  17. package/dist/assets/MemoryDrawer-C5sEdVvj.js +1 -0
  18. package/dist/assets/MemoryManager-BqWzNt8w.js +1 -0
  19. package/dist/assets/ModelPicker-DqRzzv5J.js +1 -0
  20. package/dist/assets/ProcessMonitor-ygFLD5zk.js +1 -0
  21. package/dist/assets/PromptJournalView-B65KxlYi.js +1 -0
  22. package/dist/assets/QueuePanel-CJlIV0pX.js +1 -0
  23. package/dist/assets/RefreshDebugView-CNovrSAn.js +1 -0
  24. package/dist/assets/RequirementIntakeView-BnrQSVE_.js +1 -0
  25. package/dist/assets/SageTabs-CJqOqiY7.js +2 -0
  26. package/dist/assets/SddFlowGraph-CNOyn5N9.js +1 -0
  27. package/dist/assets/SddHub-mFjsa_Zl.js +2 -0
  28. package/dist/assets/SessionInspectView-MEmxIEzB.js +1 -0
  29. package/dist/assets/SessionList-DmcQJmzw.js +1 -0
  30. package/dist/assets/SessionsDashboard-BCYViJlx.js +1 -0
  31. package/dist/assets/SetupScreen-BwnSJt7v.js +1 -0
  32. package/dist/assets/SkillDetailView-ebz2dRUQ.js +3 -0
  33. package/dist/assets/TechStackView-DESDpUDA.js +2 -0
  34. package/dist/assets/TerminalPanel-BiWnldbB.js +1 -0
  35. package/dist/assets/{activity-C7dkJqBU.js → activity-87Kr1xrI.js} +2 -2
  36. package/dist/assets/{activity-D1rp3dH9.js → activity-CCW2-qSA.js} +2 -2
  37. package/dist/assets/activity-CXLMCm4J.js +10 -0
  38. package/dist/assets/{activity-BU6MNvBJ.js → activity-CmzV075e.js} +2 -2
  39. package/dist/assets/{activity-C_18AaRY.js → activity-D2D6_ljD.js} +2 -2
  40. package/dist/assets/{activity-CpnSsE22.js → activity-Dt348P4m.js} +2 -2
  41. package/dist/assets/{activity-hTPcI4q1.js → activity-FxWZooaS.js} +2 -2
  42. package/dist/assets/button-rqi3MczV.js +1 -0
  43. package/dist/assets/chat-store-BcfvHUUj.js +1 -0
  44. package/dist/assets/{codemap-activity-store-Br4b57a0.js → codemap-activity-store-CWi-Yd9Z.js} +1 -1
  45. package/dist/assets/codemap-index-store-3M7F08K_.js +1 -0
  46. package/dist/assets/dialog-xJxaQi60.js +1 -0
  47. package/dist/assets/empty-state-BxilAuC3.js +1 -0
  48. package/dist/assets/i18n-DBqM1FUM.js +2 -0
  49. package/dist/assets/index-TDhvFXb0.js +144 -0
  50. package/dist/assets/input-ClZR-odw.js +1 -0
  51. package/dist/assets/{mailbox-store-B9DIvRgo.js → mailbox-store-yydAVjyj.js} +1 -1
  52. package/dist/assets/{markdown-Kp5uSgOw.js → markdown-BP6Z3HKc.js} +24 -24
  53. package/dist/assets/{monaco-BCqJp2xW.js → monaco-_kWjHrlo.js} +204 -204
  54. package/dist/assets/{monaco-theme-CR1QvFi2.js → monaco-theme-Dmx6JuoU.js} +1 -1
  55. package/dist/assets/react-core-BNmTiJ-I.js +9 -0
  56. package/dist/assets/{roster-ws-BQUI8QuW.js → roster-ws-n_N7K9tX.js} +1 -1
  57. package/dist/assets/{settings-BGvRM3vJ.js → settings-B1vpPbTt.js} +1 -1
  58. package/dist/assets/{settings-D-LlBmzO.js → settings-BZnHCnGT.js} +1 -1
  59. package/dist/assets/{settings-1o1gooaL.js → settings-BcB2BIE2.js} +1 -1
  60. package/dist/assets/{settings-Cy_xp4Jt.js → settings-D9AQ5wLT2.js} +1 -1
  61. package/dist/assets/{settings-BV8EFmpH.js → settings-DiVpBZQ2.js} +1 -1
  62. package/dist/assets/{settings-nWMBX3xS.js → settings-DwbEJvxt.js} +1 -1
  63. package/dist/assets/settings-WuyKla3E.js +1 -0
  64. package/dist/assets/setup-B-xPcuTH.js +1 -0
  65. package/dist/assets/setup-B9oerXTs.js +1 -0
  66. package/dist/assets/setup-BWlr07i_.js +1 -0
  67. package/dist/assets/setup-CQ4-lz5u.js +1 -0
  68. package/dist/assets/setup-Cmq_aIjv.js +1 -0
  69. package/dist/assets/setup-DK5JTuqw.js +1 -0
  70. package/dist/assets/setup-qooXjj4V.js +1 -0
  71. package/dist/assets/shared-D8dubdNH.js +1 -0
  72. package/dist/assets/stores-Cfei1ViB.js +7 -0
  73. package/dist/assets/ui-store-CLXDcLPI.js +1 -0
  74. package/dist/assets/useWebSocket-AYEcpb1U.js +27 -0
  75. package/dist/assets/{utils-DQ9Exx8j.js → utils-BpBOwXlT.js} +1 -1
  76. package/dist/assets/vector-memory-panel-BwPPCCbh.js +1 -0
  77. package/dist/assets/{vendor-BMdWcCR4.css → vendor-BShi5_Dg.css} +1 -1
  78. package/dist/assets/vendor-BshlG0z-.js +125 -0
  79. package/dist/assets/view-navigation-CvWJeGMc.js +1 -0
  80. package/dist/assets/vite-preload-Czpn1I53.js +1 -0
  81. package/dist/assets/ws-client-C_IqS0t4.js +22 -0
  82. package/dist/assets/xyflow-BNn76cbK.js +7 -0
  83. package/dist/assets/xyflow-DLioOiRN.css +1 -0
  84. package/dist/components/AgentOfficeView/AgentLane.d.ts +10 -0
  85. package/dist/components/AgentOfficeView/BreakRoom.d.ts +10 -0
  86. package/dist/components/AgentOfficeView/ClientOfficeHeader.d.ts +6 -0
  87. package/dist/components/AgentOfficeView/OfficeBriefing.d.ts +8 -0
  88. package/dist/components/AgentOfficeView/parcels.d.ts +27 -0
  89. package/dist/components/AgentOfficeView.d.ts +2 -10
  90. package/dist/components/ChatInput/chat-input-bars.d.ts +30 -0
  91. package/dist/components/ChatInput/session-draft.d.ts +46 -0
  92. package/dist/components/ChatInput/use-chat-keydown.d.ts +21 -0
  93. package/dist/components/ChatInput/use-chat-submit.d.ts +40 -0
  94. package/dist/components/ChatInput/use-paste-drop.d.ts +1 -1
  95. package/dist/components/ChatInput.d.ts +3 -3
  96. package/dist/components/FileActivityDrawer/ContextTab.d.ts +21 -0
  97. package/dist/components/FileActivityDrawer/LogsTab.d.ts +13 -0
  98. package/dist/components/FileActivityDrawer/OverviewTab.d.ts +14 -0
  99. package/dist/components/FileActivityDrawer/SkeletonTab.d.ts +5 -0
  100. package/dist/components/FileActivityDrawer/types.d.ts +58 -0
  101. package/dist/components/FileActivityDrawer.d.ts +1 -40
  102. package/dist/components/MainViewSlot.d.ts +16 -0
  103. package/dist/components/MemoryManager/DeleteMemoryDialog.d.ts +3 -2
  104. package/dist/components/SettingsPanel/brain-section-options.d.ts +6 -0
  105. package/dist/components/ViewRouter.d.ts +12 -4
  106. package/dist/components/view-registry.d.ts +73 -0
  107. package/dist/hooks/useServerMessage.d.ts +71 -0
  108. package/dist/hooks/ws-handlers/session-context-handlers.d.ts +20 -0
  109. package/dist/index.css +788 -788
  110. package/dist/index.html +25 -25
  111. package/dist/index.js +81157 -80161
  112. package/dist/lib/platform.d.ts +40 -0
  113. package/dist/lib/view-navigation.d.ts +27 -2
  114. package/dist/lib/ws-client-auth.d.ts +17 -0
  115. package/dist/lib/ws-client-connection.d.ts +26 -0
  116. package/dist/lib/ws-client-contracts.d.ts +10 -0
  117. package/dist/lib/ws-client-echo.d.ts +46 -0
  118. package/dist/lib/ws-client-queue.d.ts +18 -0
  119. package/dist/lib/ws-client-session-methods.d.ts +54 -0
  120. package/dist/lib/ws-client-swap.d.ts +53 -0
  121. package/dist/lib/ws-client.d.ts +40 -71
  122. package/dist/stores/context-editor-store.d.ts +1 -1
  123. package/dist/stores/council-log-store.d.ts +6 -0
  124. package/dist/stores/session-tab-store.d.ts +8 -0
  125. package/dist/stores/types.d.ts +10 -1
  126. package/dist/stores/ui-store-chrome.d.ts +12 -0
  127. package/dist/stores/ui-store-persist.d.ts +4 -0
  128. package/dist/stores/ui-store-types.d.ts +379 -0
  129. package/dist/stores/ui-store.d.ts +7 -467
  130. package/dist/stores/viz-graph-helpers.d.ts +18 -0
  131. package/dist/stores/viz-pipeline.d.ts +7 -0
  132. package/dist/stores/viz-store.d.ts +3 -123
  133. package/dist/stores/viz-types.d.ts +124 -0
  134. package/dist/types/brain.d.ts +3 -0
  135. package/dist/types/client-message.d.ts +8 -0
  136. package/dist/types/runtime.d.ts +7 -0
  137. package/dist/types/sage.d.ts +7 -0
  138. package/dist/types/server-message-chimera.d.ts +161 -0
  139. package/dist/types/server-message-files.d.ts +195 -0
  140. package/dist/types/server-message-fleet.d.ts +148 -0
  141. package/dist/types/server-message-mcp.d.ts +199 -0
  142. package/dist/types/server-message-system.d.ts +399 -0
  143. package/dist/types/server-message.d.ts +12 -1098
  144. package/dist/types/skills-design.d.ts +7 -0
  145. package/dist/types/system.d.ts +16 -0
  146. package/package.json +9 -9
  147. package/dist/assets/AgentRosterView-VIctzKMy.js +0 -9
  148. package/dist/assets/AnalyticsDashboard-Dr67MeEY.js +0 -1
  149. package/dist/assets/AudienceMemoryPanel-DoaZfrjf.js +0 -3
  150. package/dist/assets/ChangesView-s7Mn7iE2.js +0 -1
  151. package/dist/assets/ChimeraReviewsView-Cverzv0b.js +0 -1
  152. package/dist/assets/ChronicleDashboard-CzqPfaPc.js +0 -1
  153. package/dist/assets/CodeEditor-DXQoTSH5.js +0 -2
  154. package/dist/assets/CodeMap-D34FOPgR.js +0 -1
  155. package/dist/assets/ConfirmModal-B6BGiiN8.js +0 -1
  156. package/dist/assets/CronJobsPanel-CenxuaN9.js +0 -1
  157. package/dist/assets/DebugDashboard-DWaUg6e1.js +0 -1
  158. package/dist/assets/DesignGalleryView-BKtjn4px.js +0 -1
  159. package/dist/assets/GoalView-BZ62_vF-.js +0 -1
  160. package/dist/assets/KanbanView-DsWnTpxr.js +0 -3
  161. package/dist/assets/MailboxDetailView-DS1P9DRT.js +0 -1
  162. package/dist/assets/MemoryDrawer-BJEY1v4P.js +0 -1
  163. package/dist/assets/MemoryManager-D-kuyTQe.js +0 -1
  164. package/dist/assets/ModelPicker-CLs0qQgg.js +0 -1
  165. package/dist/assets/OfficeMapPanel-BqoCcniD.js +0 -4
  166. package/dist/assets/ProcessMonitor-CHNNqCk9.js +0 -1
  167. package/dist/assets/PromptJournalView-Biu4DknM.js +0 -1
  168. package/dist/assets/QueuePanel-CzTXq6j4.js +0 -1
  169. package/dist/assets/RefreshDebugView-d9iU3sFX.js +0 -1
  170. package/dist/assets/RequirementIntakeView-BVyF2zXR.js +0 -1
  171. package/dist/assets/SageTabs-YASyEFo6.js +0 -2
  172. package/dist/assets/SddFlowGraph-Bj_Aqq5B.js +0 -1
  173. package/dist/assets/SddHub-rmGGEYZe.js +0 -2
  174. package/dist/assets/SessionInspectView-iaKkGAAM.js +0 -1
  175. package/dist/assets/SessionList-vmAS2Fg5.js +0 -1
  176. package/dist/assets/SessionsDashboard-x3iyhrGl.js +0 -1
  177. package/dist/assets/SetupScreen-huPJT0Bv.js +0 -1
  178. package/dist/assets/SkillDetailView-BcD9z7zG.js +0 -3
  179. package/dist/assets/SpecsView-ok8HZ8ws.js +0 -1
  180. package/dist/assets/TechStackView-DmMtwb4l.js +0 -2
  181. package/dist/assets/TerminalPanel-cbM6oQWQ.js +0 -1
  182. package/dist/assets/activity-CtTKsSX6.js +0 -10
  183. package/dist/assets/button-DNyYztcH.js +0 -1
  184. package/dist/assets/chat-store-oW_-zcJP.js +0 -1
  185. package/dist/assets/codemap-index-store-tSmlp7Uz.js +0 -1
  186. package/dist/assets/dialog-BTHxOi5z.js +0 -1
  187. package/dist/assets/empty-state-DBQN80mK.js +0 -1
  188. package/dist/assets/i18n-D06uU1PM.js +0 -2
  189. package/dist/assets/index-BQ7PJ-sA.js +0 -144
  190. package/dist/assets/input-CTGeYzNe.js +0 -1
  191. package/dist/assets/settings-Ci_RMpCQ.js +0 -1
  192. package/dist/assets/setup-B0D9CK3-.js +0 -1
  193. package/dist/assets/setup-B58YVaGU.js +0 -1
  194. package/dist/assets/setup-C2H9Uv0Q.js +0 -1
  195. package/dist/assets/setup-CzM4dkkU.js +0 -1
  196. package/dist/assets/setup-Di56FlHP.js +0 -1
  197. package/dist/assets/setup-Dwt58Mpz.js +0 -1
  198. package/dist/assets/setup-DznVdlJy.js +0 -1
  199. package/dist/assets/shared-CLfD85oZ.js +0 -1
  200. package/dist/assets/stores-C7Vvce-6.js +0 -7
  201. package/dist/assets/ui-store-Dm7ujR9u.js +0 -1
  202. package/dist/assets/useWebSocket-9lfOsI_r.js +0 -27
  203. package/dist/assets/vector-memory-panel-B4bQhdHe.js +0 -1
  204. package/dist/assets/vendor-enc0q-Va.js +0 -139
  205. package/dist/assets/view-navigation-wOKaM_Rf.js +0 -1
  206. package/dist/assets/ws-client-DtTZLD8e.js +0 -22
  207. /package/dist/assets/{OfficeMapPanel-Ce7myLNH.css → AgentRosterView-Ce7myLNH.css} +0 -0
@@ -1,27 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$ as t,At as n,Bt as r,Ct as i,D as a,Et as o,Ft as s,H as c,Ht as l,It as u,J as d,K as f,Lt as p,Nt as m,Ot as h,Q as g,Rt as _,St as v,T as ee,Tt as te,V as y,Vt as b,X as x,Z as S,a as C,c as w,ct as ne,d as re,dt as ie,ft as ae,g as oe,gt as se,h as ce,ht as le,i as ue,j as T,jt as E,l as D,lt as O,o as k,pt as de,r as A,s as j,t as M,u as N,ut as fe,wt as pe,x as P,xt as F,y as I,zt as L}from"./ws-client-DtTZLD8e.js";import{io as me,oo as he}from"./vendor-enc0q-Va.js";import{n as ge,t as _e}from"./i18n-D06uU1PM.js";import{a as ve,n as R,t as ye}from"./ui-store-Dm7ujR9u.js";import{i as z,n as be}from"./codemap-activity-store-Br4b57a0.js";import{C as xe,S as Se,a as Ce,d as we,g as Te,h as Ee,i as De,m as B,n as V,o as Oe,p as ke,r as Ae,s as je,t as H,u as Me,x as Ne,y as Pe}from"./stores-C7Vvce-6.js";import{r as Fe}from"./mailbox-store-B9DIvRgo.js";import{n as Ie,o as Le}from"./view-navigation-wOKaM_Rf.js";import{t as Re}from"./codemap-index-store-tSmlp7Uz.js";var U=e(he(),1);function ze(e,t){if(t)return!0;try{return new URLSearchParams(e).get(`shell`)===`desktop`}catch{return!1}}function Be(){return typeof window>`u`?!1:ze(window.location.search,!!window.wrongstackDesktopHost)}var Ve=new Set([`mode_changed`,`compaction`,`checkpoint`,`skill_activated`,`skill_deactivated`,`agent_spawned`,`agent_session_linked`,`agent_stopped`,`agent_error`,`delegate_started`,`delegate_completed`,`loop_detected`,`model_switched`,`error`,`provider_retry`,`provider_error`,`message_truncated`]),He=new Set([`checkpoint`,`agent_spawned`,`agent_session_linked`,`agent_stopped`,`agent_error`,`delegate_started`,`delegate_completed`]);new Set([...Ve].filter(e=>!He.has(e)));function Ue(e){switch(e.type){case`compaction`:{let t=(e.before/1e3).toFixed(0),n=(e.after/1e3).toFixed(0),r=e.level?` (${e.level})`:``,i=e.reductions&&e.reductions.length>0?` [${e.reductions.map(e=>`${e.phase}: \u2212${e.saved}`).join(`, `)}]`:``;return{ts:e.ts,source:e.type,level:`info`,text:`\u27F2 context compacted${r}: ${t}K \u2192 ${n}K tokens${i}`}}case`error`:return{ts:e.ts,source:e.type,level:`error`,text:e.phase?`[${e.phase}] ${e.message}`:e.message};case`provider_retry`:{let t=(e.delayMs/1e3).toFixed(e.delayMs>=1e3?1:2);return{ts:e.ts,source:e.type,level:`warn`,text:e.status?`\u27F3 retry ${e.attempt} (HTTP ${e.status}) after ${t}s \u2014 ${e.description}`:`\u27F3 retry ${e.attempt} after ${t}s \u2014 ${e.description}`}}case`provider_error`:return{ts:e.ts,source:e.type,level:`error`,text:e.status?`provider error (HTTP ${e.status}, ${e.retryable?`retryable`:`fatal`}): ${e.description}`:`provider error (${e.retryable?`retryable`:`fatal`}): ${e.description}`};case`checkpoint`:return{ts:e.ts,source:e.type,level:`info`,text:`\u2713 checkpoint #${e.promptIndex}: "${e.promptPreview.slice(0,60)}"`};case`agent_spawned`:return{ts:e.ts,source:e.type,level:`info`,text:`spawned as ${e.role}`,agentId:e.agentId};case`agent_session_linked`:return{ts:e.ts,source:e.type,level:`info`,text:`transcript \u2192 ${e.transcriptPath??e.agentSessionId}`,agentId:e.agentId};case`agent_stopped`:return{ts:e.ts,source:e.type,level:`info`,text:`stopped`,agentId:e.agentId};case`delegate_started`:return{ts:e.ts,source:e.type,level:`info`,text:`\u{1F91D} delegating \u2192 ${e.target}: ${e.task.length>100?`${e.task.slice(0,99)}\u2026`:e.task}`,agentId:e.subagentId,detail:{kind:`delegate_started`,target:e.target,task:e.task}};case`delegate_completed`:{let t=e.costUsd&&e.costUsd>0?` \xB7 $${e.costUsd.toFixed(4)}`:``;return{ts:e.ts,source:e.type,level:e.ok?`info`:`error`,text:`${e.ok?`✅`:`❌`} ${e.summary}${t}`,agentId:e.subagentId,detail:{kind:`delegate_completed`,target:e.target,task:e.task,ok:e.ok,status:e.status,summary:e.summary,durationMs:e.durationMs,iterations:e.iterations,toolCalls:e.toolCalls,costUsd:e.costUsd}}}case`loop_detected`:{let t=e.kind===`message`?`the same reply`:e.tools?`\`${e.tools}\``:`the same step`;return{ts:e.ts,source:e.type,level:`warn`,text:e.action===`steer`?`\u{1F501} Loop detected \u2014 ${t} repeated ${e.repeatCount}\xD7 ; the run was steered.`:`\u{1F501} Loop detected \u2014 ${t} repeated ${e.repeatCount}\xD7 ; the run was stopped.`}}case`model_switched`:{let t=`${e.to.providerId}/${e.to.model}`,n=e.from?`${e.from.providerId}/${e.from.model} \u2192 `:``;return{ts:e.ts,source:e.type,level:e.reason===`fallback`?`warn`:`info`,text:e.reason===`fallback`?`\u26A0 fallback${e.status?` (HTTP ${e.status})`:``}: ${n}${t}`:`model: ${n}${t}`}}case`agent_error`:return{ts:e.ts,source:e.type,level:`error`,text:`error: ${e.error.slice(0,80)}`,agentId:e.agentId};case`mode_changed`:return{ts:e.ts,source:e.type,level:`info`,text:`mode: ${e.from} \u2192 ${e.to}`};case`skill_activated`:return{ts:e.ts,source:e.type,level:`info`,text:`skill activated: ${e.skillName}`};case`skill_deactivated`:return{ts:e.ts,source:e.type,level:`info`,text:`skill deactivated: ${e.skillName}`};case`message_truncated`:return{ts:e.ts,source:e.type,level:`warn`,text:e.after<e.before?`message truncated: ${e.before} \u2192 ${e.after} tokens`:`message truncated at ${e.after} tokens`};default:return null}}function We(e,t=Ve){let n=[];for(let r of e){if(!t.has(r.type))continue;let e=Ue(r);e&&n.push(e)}return n}var Ge=[`[MAILBOX]`,`[MAILBOX BTW]`,`[BY THE WAY —`,`[QUEUED MESSAGES —`,`[FLEET PULSE]`,`[loop-detector]`,`[tool_history_digest:`,`[session.resume] Request targeted session`];function Ke(e){let t=e.trimStart();for(let e of Ge)if(t.startsWith(e))return!0;return!1}function qe(e){let t=[];for(let n of e)n.type===`tool_call_end`&&t.push({id:n.id,name:n.name,durationMs:n.durationMs,outputBytes:n.outputBytes??n.outputSize,outputTokens:n.outputTokens,outputLines:n.outputLines,ok:n.ok,agentId:n.agentId});return t}function Je(e){let t=new Map;if(!e)return t;for(let n of e)t.set(n.id,n);return t}function Ye(e){let t=[];for(let n of e)n.type===`image`&&t.push({mediaType:n.source.media_type,data:n.source.data,url:n.source.url});return t.length>0?t:void 0}function Xe(e){return typeof e==`string`?e:JSON.stringify(e)}function Ze(e){let{messages:t,events:n,thinkingPlacement:r=`inline`,textBlocks:i=`split`,textSeparator:a=``,hideSystemInjections:o=!0}=e,s=e.markers??(n?We(n,e.markerSources??Ve):[]),c=Je(e.toolMeta??(n?qe(n):void 0)),l=[],u=new Map,d=0,f=``,p=(e,t,n,r)=>{let i=t.trim();i&&(o&&Ke(i)||(e===`assistant`?l.push({kind:`assistant`,ts:n,text:i,final:r}):e===`system`?l.push({kind:`system`,ts:n,text:i}):l.push({kind:`user`,ts:n,text:i})))},m=(e,t)=>{e.trim()&&(d+=1,l.push({kind:`thinking`,ts:t,text:e,index:d}))};for(let e of t){let t=e.ts??f;if(e.ts&&(f=e.ts),typeof e.content==`string`){p(e.role,e.content,t,!0);continue}let n=e.content;if(r===`inline`)for(let e of n)e.type===`thinking`&&m(e.thinking,t);let o=e.role===`user`?Ye(n):void 0,s=!n.some(e=>e.type===`tool_use`),d=[],h=()=>{if(i===`join`)return;let n=d.join(a).trim();n&&p(e.role,n,t,s),d.length=0};if(i===`join`){let r=n.filter(e=>e.type===`text`).map(e=>e.text).join(a).trim();r&&p(e.role,r,t,s)}for(let e of n){if(e.type===`text`){d.push(e.text);continue}if(e.type===`tool_use`){h();let n=c.get(e.id),r={kind:`tool`,ts:t,toolUseId:e.id,name:e.name,input:e.input,ok:n?.ok,durationMs:n?.durationMs,outputBytes:n?.outputBytes,outputTokens:n?.outputTokens,outputLines:n?.outputLines,agentId:n?.agentId};l.push(r),u.set(e.id,r);continue}if(e.type!==`tool_result`)continue;h();let n=u.get(e.tool_use_id);if(n){n.output=Xe(e.content),n.ok=!e.is_error,u.delete(e.tool_use_id);continue}let r=c.get(e.tool_use_id);l.push({kind:`tool`,ts:t,toolUseId:e.tool_use_id,name:e.name??r?.name??e.tool_use_id,output:Xe(e.content),ok:!e.is_error,durationMs:r?.durationMs,outputBytes:r?.outputBytes,outputTokens:r?.outputTokens,outputLines:r?.outputLines,agentId:r?.agentId})}if(h(),r===`merged-after`&&m(n.filter(e=>e.type===`thinking`).map(e=>e.thinking).join(`
2
-
3
- `).trim(),t),o){let e=l[l.length-1];e?.kind===`user`&&e.ts===t?e.images=o:l.push({kind:`user`,ts:t,text:``,images:o})}}let h=[],g=0,_=0;for(;g<l.length&&_<s.length;){let e=s[_];e.ts<l[g].ts?(h.push(Qe(e)),_+=1):(h.push(l[g]),g+=1)}for(;g<l.length;)h.push(l[g++]);for(;_<s.length;)h.push(Qe(s[_++]));return h}function Qe(e){return{kind:`marker`,ts:e.ts,source:e.source,level:e.level,text:e.text,agentId:e.agentId,detail:e.detail}}function $e(e){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
4
- <rect width="64" height="64" fill="#121210" />
5
- <path fill="#FD9F02" d="M5 27h10v10H5zM27 27h10v10H27zM38 27h10v10H38zM49 27h10v10H49z" />
6
- <path fill="#FE2E5F" d="M16 32h10v10H16z" />
7
- ${e===`ready`?`<circle cx="50" cy="14" r="14" fill="#22c55e" stroke="#fff" stroke-width="3" />`:e===`error`?`<circle cx="50" cy="14" r="14" fill="#ef4444" stroke="#fff" stroke-width="3" />`:e===`running`?`<circle cx="50" cy="14" r="14" fill="#f59e0b" stroke="#fff" stroke-width="3" />`:e===`attention`?`<circle cx="50" cy="14" r="14" fill="#eab308" stroke="#fff" stroke-width="3"><animate attributeName="opacity" values="1;0.3;1" dur="1s" repeatCount="indefinite"/></circle>`:``}
8
- </svg>`}function et(e){return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`}function tt(){if(typeof document>`u`)return null;let e=document.querySelector(`link[rel="icon"]`);return e||(e=document.createElement(`link`),e.rel=`icon`,e.type=`image/svg+xml`,document.head.appendChild(e)),e}var nt=`idle`;function W(e){nt=e;let t=tt();t&&(t.href=et($e(e)))}var rt=!1;function it(){rt||typeof document>`u`||(rt=!0,document.addEventListener(`visibilitychange`,()=>{!document.hidden&&(nt===`ready`||nt===`error`||nt===`attention`)&&W(`idle`)}))}var at=null;function ot(){if(typeof window>`u`)return null;if(at)return at;let e=window.AudioContext||window.webkitAudioContext;if(!e)return null;try{at=new e}catch{return null}return at}function st(e,t,n){let r=ot();if(!r)return;let i=r.currentTime+t,a=r.createOscillator(),o=r.createGain();a.type=`sine`,a.frequency.value=e,o.gain.setValueAtTime(0,i),o.gain.linearRampToValueAtTime(.18,i+.01),o.gain.exponentialRampToValueAtTime(1e-4,i+n),a.connect(o).connect(r.destination),a.start(i),a.stop(i+n+.02)}function ct(){st(659.25,0,.18),st(880,.12,.24)}function lt(){st(523.25,0,.15),st(659.25,.1,.15),st(783.99,.2,.25)}var G=`default`;G=typeof window<`u`&&`Notification`in window?Notification.permission:`unsupported`;async function ut(){if(G===`unsupported`||G===`granted`||G===`denied`)return G;try{let e=await Notification.requestPermission();return G=e,e}catch{return`denied`}}function dt(e,t,n){if(!(typeof document>`u`||!document.hidden)&&G===`granted`)try{let r=new Notification(e,{body:t,icon:`/wrongstack.svg`,tag:n??`wrongstack-run`,requireInteraction:n===`wrongstack-confirm`});r.onclick=()=>{window.focus(),r.close()}}catch{}}function ft(e){let t=e.payload;return typeof t?.agentName==`string`&&t.agentName.length>0?t.agentName:void 0}var pt={"iteration.started":xt,"provider.text_delta":St,"provider.thinking_delta":Ct,"tool.started":wt,"tool.progress":Tt,"tool.executed":Et,"tool.confirm_needed":Dt,"run.result":kt,"session.run_state":Ot},mt=new Map,ht=new Map;function gt(e){let t=mt.get(e);return t||(t=new Map,mt.set(e,t)),t}function _t(e){return`__thinking__:${e}`}function K(e){return e.sessionId===v()}function vt(e){return R.getState().sessionNicknames[e]??`session ${e.slice(0,8)}`}function yt(e){return`wrongstack-run:${e}`}function bt(e){mt.delete(e),ht.delete(e),b.drop(_t(e))}h(bt);function xt(e){let t=A(e);if(!t)return;j(e),e.payload.index===1&&(mt.delete(t.sessionId),ht.delete(t.sessionId));let n=e.payload,r=D(e);r?.setIteration({index:n.index,max:n.maxIterations??0}),t.setLoading(!0),typeof document<`u`&&document.hidden&&K(t)&&W(`running`),t.runStart===null&&t.setRunStart({at:Date.now(),cost:r?.data.cost??0}),t.setCurrentAssistantMessage(null)}function St(e){let t=A(e);if(!t)return;let n=_(e);if(n?.kind!==`text-delta`)return;b.flush(_t(t.sessionId)),t.clearThinking();let r=t.currentAssistantMessageId;r||(r=t.addMessage({role:`assistant`,content:``,streaming:!0}),t.setCurrentAssistantMessage(r)),b.push(r,n.text,(e,n)=>t.appendToMessage(e,n))}function Ct(e){let t=A(e);if(!t)return;let n=_(e);n?.kind===`thinking-delta`&&b.push(_t(t.sessionId),n.text,(e,n)=>t.appendThinking(n))}function wt(e){let t=A(e);if(!t)return;j(e);let n=r(e);if(n?.kind!==`started`)return;n.name===`nextsteps`&&n.id&&gt(t.sessionId).set(n.id,p(n.input));let i=t.getToolMessageId(n.id);if(i){t.setCurrentToolId(i);return}b.flushAll(),t.clearThinking();let a=t.currentAssistantMessageId;a&&t.finalizeMessage(a,{final:!1}),t.setCurrentAssistantMessage(null);let o=t.addMessage({role:`tool`,content:``,toolName:n.name,toolInput:n.input,toolUseId:n.id});t.setCurrentToolId(o),t.addExecution({id:n.id,name:n.name,input:n.input,ok:!0,startedAt:Date.now()}),I.getState().recordToolStarted(t.sessionId,{name:n.name,agentName:ft(e)})}function Tt(e){let t=A(e);if(!t)return;let n=r(e);if(n?.kind!==`progress`)return;let i=n.text;if(!i)return;let a=t.getToolMessageId(n.id);if(!a)return;let o=n.eventType===`warning`?`⚠ `:``;b.push(a,`${o}${i}\n`,(e,r)=>t.appendToolProgressLinesByUseId(n.id,r.split(`
9
- `).filter(e=>e.length>0)))}function Et(e){let t=A(e);if(!t)return;j(e);let n=r(e);if(n?.kind!==`executed`)return;if(n.name===`nextsteps`&&n.id){let e=gt(t.sessionId),r=e.get(n.id)??[];e.delete(n.id),n.ok&&r.length>0&&ht.set(t.sessionId,r)}let{currentToolId:i}=t,a=n.id?t.getToolMessageId(n.id):i;a&&(b.drop(a),n.id?t.setToolResultByUseId(n.id,n.output??``,n.ok):t.setToolResult(a,n.output??``,n.ok),t.updateMessage(a,{toolDurationMs:n.durationMs,...n.sage&&n.sage.length>0?{sageLines:n.sage}:{}})),n.id&&t.updateExecution(n.id,{completedAt:Date.now(),durationMs:n.durationMs,output:n.output,ok:n.ok}),I.getState().recordToolExecuted(t.sessionId,{name:n.name,ok:n.ok,durationMs:n.durationMs,agentName:ft(e)}),i&&a===i&&t.setCurrentToolId(null)}function Dt(e){let n=A(e);if(!n)return;let r=e.payload;if(_e(n.sessionId,`yolo`)===!0&&!r.boundaryReason){M(t.getState().wsUrl).sendConfirm(r.id,`yes`),R.getState().hideConfirm();return}if(!K(n)){n.setPendingConfirm(r),oe.getState().setAttention(n.sessionId,!0),ut(),dt(`${x.getState().projectName||`Agent`} needs approval`,`Another tab is waiting on "${r.toolName}".`,`agent-confirm`);return}n.setPendingConfirm(r),R.getState().showConfirm({id:r.id,toolName:r.toolName,input:r.input,suggestedPattern:r.suggestedPattern,decisionSource:r.decisionSource,riskTier:r.riskTier,boundaryReason:r.boundaryReason});try{lt()}catch{}ut(),dt(`${x.getState().projectName||`Agent`} needs approval`,`Tool "${r.toolName}" is waiting for your decision.`,`agent-confirm`),typeof document<`u`&&document.hidden&&W(`attention`)}function Ot(e){let t=A(e);if(!t)return;let n=w(e,{isRunning:`boolean`},{});n&&t.isLoading!==n.isRunning&&(t.setLoading(n.isRunning),n.isRunning||(b.flushAll(),t.flushThinkingLog(1),D(e)?.setIteration(null),t.clearThinking(),t.setRunStart(null)))}function kt(e){let n=A(e);if(!n)return;let r=w(e,{status:`string`},{requestId:`string`,iterations:`number`,finalText:`string`,error:`object`});if(!r)return;let i=r.iterations??1;b.flushAll(),n.flushThinkingLog(Math.max(1,i));let a=D(e);a?.setIteration(null),n.setLoading(!1);let o=n.currentAssistantMessageId,s=r.status===`done`?r.finalText?.trim():void 0;if(o){let e=n.messages.find(e=>e.id===o);n.updateMessage(o,{content:e?.content?.trim()?e.content:s??e?.content??``}),n.finalizeMessage(o,{final:!0})}else if(s){let e=n.runStart,t=u(s).stripped.trim(),r=n.messages,i;for(let t=r.length-1;t>=0;t--){let n=r[t];if(n?.role===`assistant`&&(!e||n.timestamp>=e.at)){i=n;break}}let a=i?.content.trim();if(a===void 0||a!==s&&a!==t){let e=n.addMessage({role:`assistant`,content:s});n.finalizeMessage(e,{final:!0})}}let c=ht.get(n.sessionId)??[];r.status===`done`&&c.length>0&&(n.messages.some(e=>e.role===`assistant`&&(e.nextSteps?.steps.length??0)>0)||n.addMessage({role:`assistant`,content:``,nextSteps:{steps:c}}),ht.delete(n.sessionId)),n.setCurrentAssistantMessage(null),n.clearThinking();let d=n.runStart;if(d&&r.status===`done`){let e=n.messages,t=-1,r=0;for(let n=e.length-1;n>=0;n--){let i=l(e[n]);if(i.role===`assistant`&&t===-1&&i.content&&(t=n),i.role===`tool`&&i.timestamp>=d.at&&(r+=1),i.role===`user`&&i.timestamp<=d.at)break}if(t!==-1){let o=a?.data.cost??0;n.updateMessage(e[t]?.id,{runSummary:{iterations:i,tools:r,durationMs:Date.now()-d.at,costDelta:Math.max(0,o-d.cost)}})}}if(n.setRunStart(null),r.status!==`done`&&r.error){r.requestId&&n.updateMessage(r.requestId,{status:`failed`}),n.addMessage({role:`assistant`,content:`Error: ${r.error.message}`,isError:!0});let e=r.error.message===`User aborted`||r.error.message===`aborted`,t=K(n);e||(t?f.error(`Run ended: ${r.error.message}`):oe.getState().setAttention(n.sessionId,!0)),dt(t?`${x.getState().projectName||`Agent`} run failed`:`${vt(n.sessionId)} run failed`,r.error.message,yt(n.sessionId)),typeof document<`u`&&document.hidden&&K(n)&&W(`error`)}else if(r.status===`done`){if(typeof document<`u`&&document.hidden){let e=K(n);e?f.success(`Run completed in ${i} iteration${i===1?``:`s`}`):oe.getState().setAttention(n.sessionId,!0),dt(e?`${x.getState().projectName||`Agent`} run finished`:`${vt(n.sessionId)} run finished`,`Completed in ${i} iteration${i===1?``:`s`}.`,yt(n.sessionId)),e&&W(`ready`)}if(ut(),t.getState().soundOnComplete)try{ct()}catch{}typeof document<`u`&&K(n)&&document.dispatchEvent(new CustomEvent(`chat:next-step-countdown`))}let p=n,m=p.queue[0];if(!m)return;if(m.alreadyDispatched===!0){At(n,m);let e=p.dequeueDrainable();return e?jt(n,e):void 0}let h=p.dequeue();if(h)return jt(n,h)}function At(e,t){if(t.bubbleAdded===!0)return;let n=t.images??[];e.addMessage({role:`user`,content:t.text,...n.length>0?{attachments:n.map(e=>({id:e.id,kind:`image`,dataUrl:e.dataUrl,mediaType:e.mediaType,bytes:e.bytes,name:e.name}))}:{}}),t.bubbleAdded=!0}function jt(e,n){let r=M(t.getState().wsUrl),i=n.images??[];if(e.addMessage({role:`user`,content:n.text,...i.length>0?{attachments:i.map(e=>({id:e.id,kind:`image`,dataUrl:e.dataUrl,mediaType:e.mediaType,bytes:e.bytes,name:e.name}))}:{}}),n.mode===`btw`){n.alreadyDispatched!==!0&&r.sendMailboxMessage({type:`btw`,to:`leader`,subject:`btw from WebUI`,body:n.text,priority:`normal`,audience:`all`},e.sessionId);return}e.setLoading(!0),r.sendMessage(n.text,i.length>0?ve(i):void 0,!1,e.sessionId)}function q(e){return Se.for(k(e)).getState()}function Mt(e){let t=k(e);return!t||t===v()}var Nt={"coordinator.status":e=>{let t=e.payload;q(e).setCoordinatorStatus(t.status,t.mode),t.taskQueue&&q(e).updateCoordinatorStats({total:t.subagentCount??0,running:0,idle:0,stopped:0,inFlight:t.taskQueue.running,pending:t.taskQueue.pending,completed:t.taskQueue.completed})},"coordinator.stats":e=>{let t=e.payload;q(e).updateCoordinatorStats(t)},"budget.threshold_reached":e=>{let t=e.payload;q(e).pushEvent(`budget.threshold_reached`,t,t.ts??Date.now(),t.subagentId,t.taskId),t.limit>0&&t.used/t.limit*100>=85&&q(e).recordBudgetAlert(t.subagentId,t.kind,t.used,t.limit),q(e).updateSubagentBudget(t.subagentId,{budgetUsage:{iterations:0,toolCalls:0,tokens:0,costUsd:0,elapsedMs:t.used??0}})},"budget.decision":e=>{let t=e.payload,n=t.extended?.timeoutMs??t.extended?.maxIterations??t.extended?.maxToolCalls;q(e).recordBudgetDecision(t.subagentId,t.kind,t.decision,n),q(e).pushEvent(`budget.decision`,{subagentId:t.subagentId,kind:t.kind,decision:t.decision,newLimit:n},Date.now(),t.subagentId)},"subagent.budget_extended":e=>{let t=e.payload;q(e).recordBudgetExtended(t.subagentId,t.kind,t.extendedTo),q(e).pushEvent(`subagent.budget_extended`,t,Date.now(),t.subagentId)},"consensus.vote_initiated":e=>{let t=e.payload;q(e).pushConsensusVote(t.changeId,t.title,t.eligible),q(e).pushEvent(`consensus.vote_initiated`,t,Date.now()),Mt(e)&&f.info(`Vote started: `+t.title)},"consensus.vote_cast":e=>{let t=e.payload,n=q(e).consensusVotes.get(t.changeId)?.eligible.find(e=>e.agentId===t.voterId);q(e).recordConsensusVote(t.changeId,t.voterId,n?.agentName??t.voterId,t.value),q(e).pushEvent(`consensus.vote_cast`,t,Date.now(),t.voterId)},"consensus.vote_resolved":e=>{let t=e.payload;q(e).resolveConsensusVote(t.changeId,t.result,t.approveCount,t.rejectCount),q(e).pushEvent(`consensus.vote_resolved`,t,Date.now()),Mt(e)&&f.info(`Vote resolved: `+t.result+` (y`+t.approveCount+` n`+t.rejectCount+`)`)},"task.pending":e=>{let t=e.payload;q(e).pushTaskPending(t.taskId,t.description,t.priority),q(e).pushEvent(`task.pending`,t,Date.now())},"task.started":e=>{let t=e.payload;q(e).startTask(t.taskId,t.subagentId),q(e).pushEvent(`task.started`,t,Date.now(),t.subagentId)},"task.completed":e=>{let t=e.payload;q(e).completeTask(t.taskId,t.status,t.durationMs),q(e).pushEvent(`task.completed`,t,Date.now(),t.subagentId)},"task.failed":e=>{let t=e.payload;q(e).failTask(t.taskId,t.error),q(e).pushEvent(`task.failed`,{taskId:t.taskId,subagentId:t.subagentId,error:String(t.error).slice(0,120)},Date.now(),t.subagentId),Mt(e)&&f.error(`Task failed: `+String(t.error).slice(0,80))}};function Pt(){let e=M();e?.send?.({type:`mailbox.messages`,payload:{limit:30,incompleteOnly:!0}}),e?.send?.({type:`mailbox.agents`,payload:{}})}var Ft=null;function J(){Ft!==null&&clearTimeout(Ft),Ft=setTimeout(()=>{Ft=null,Pt()},300)}function It(e,t){return t?{...e,sessionId:t}:e}function Lt(e,t){let n=g.getState();return t&&n.fileSessionId!==t?n.filesBySession[t]?.hydratingPaths.has(e)??!1:n.hydratingPaths.has(e)}function Rt(e,t=O()??x.getState().session?.id??null){let n=g.getState(),r=t&&n.fileSessionId!==t?n.filesBySession[t]:n,i=r?.openFiles??[],a=r?.projectIdentity??``;if(i.length===0){n.setProjectIdentity(e,t);return}if(a&&a!==e){n.clearOpenTabs(t),n.setProjectIdentity(e,t);return}n.setProjectIdentity(e,t);let o=i.filter(e=>e.content===``&&!e.dirty).map(e=>e.path);if(o.length===0)return;g.getState().setHydratingPaths(o,t);let s=M();for(let e of o)s?.send?.({type:`files.read`,payload:It({filePath:e},t)})}function zt(e){let t=e.payload,n=k(e);if(t.error){g.getState().setError(t.error,n);return}g.getState().setTree(t.root,t.tree,n)}function Bt(e){let t=e.payload,n=k(e),r=g.getState();if(t.error){if(Lt(t.filePath,n)){r.hydrateFileFailed(t.filePath,n);return}r.setError(t.error,n);return}if(t.binary||t.tooLarge){if(Lt(t.filePath,n)){r.hydrateFileFailed(t.filePath,n);return}r.setError(t.binary?`Binary file not displayed: ${t.filePath}`:`File exceeds the 2 MB display limit: ${t.filePath}`,n);return}if(Lt(t.filePath,n)){r.hydrateFileContent(t.filePath,t.content,n);return}r.openFile(t.filePath,t.content,n),R.getState().setCurrentView(`files`)}function Vt(e){let t=e.payload,n=k(e);t.success?g.getState().markSaved(t.filePath,n):t.error&&g.getState().setError(`Save failed: ${t.error}`,n)}function Ht(e){let t=e.payload;!t.success&&t.error&&g.getState().setError(`Create failed: ${t.error}`,k(e))}function Ut(e){let t=e.payload,n=k(e);t.success?g.getState().closeFile(t.filePath,n):t.error&&g.getState().setError(`Delete failed: ${t.error}`,n)}function Wt(e){let t=e.payload,n=k(e);t.success?g.getState().closeFile(t.oldPath,n):t.error&&g.getState().setError(`Rename failed: ${t.error}`,n)}function Gt(e){let t=e.payload,n=k(e);t.success?g.getState().closeFile(t.srcPath,n):t.error&&g.getState().setError(`Move failed: ${t.error}`,n)}var Kt=null,qt=500;function Jt(e){let t=k(e);Kt&&clearTimeout(Kt),Kt=setTimeout(()=>{Kt=null;let e=x.getState().cwd;g.getState().setTreeLoading(!0,t),M().send({type:`files.tree`,payload:It({path:e},t)})},qt)}function Yt(e){let t=re(`mailbox.event`,e.payload);t&&(N.getState().pushEvent(t),N.getState().setActive(!0)),J()}function Xt(e){let t=e.payload;t?.messages&&Fe.getState().setMessages(t.messages)}function Zt(e){let t=e.payload;t?.agents&&Fe.getState().setAgents(t.agents)}function Qt(e){let t=re(`mailbox.received`,e.payload);t&&(N.getState().pushEvent(t),N.getState().setActive(!0)),J()}function $t(e){J()}function en(e){let t=e.payload;t?.agentId&&Fe.getState().removeAgent(t.agentId)}function tn(e){Fe.getState().setMessages([]),Pt()}function nn(e){J()}function rn(e){let t=e.payload;t&&typeof t.totalRemoved==`number`&&Fe.getState().setLastCompaction({readByAllRemoved:t.readByAllRemoved??0,expiredRemoved:t.expiredRemoved??0,stalePurged:t.stalePurged??0,totalRemoved:t.totalRemoved,remaining:t.remaining??0}),J()}function an(e){let t=e.payload;if(t?.success){J();return}f.error(`Mailbox action failed: ${t?.error??`unknown error`}`)}var on={"files.tree":zt,"files.tree.changed":Jt,"files.read":Bt,"files.written":Vt,"files.created":Ht,"files.deleted":Ut,"files.renamed":Wt,"files.moved":Gt,"mailbox.event":Yt,"mailbox.messages":Xt,"mailbox.agents":Zt,"mailbox.received":Qt,"mailbox.agent_registered":$t,"mailbox.agent_deregistered":en,"mailbox.cleared":tn,"mailbox.purged":nn,"mailbox.compacted":rn,"mailbox.action_result":an};function sn(e){let t=e.payload;H.getState().setSnapshot(t.worktrees??[],t.baseBranch??``)}function cn(e){let t=e.payload;H.getState().pushEvent(t)}function ln(e){let t=e.payload;H.getState().setOrphans(t.orphans??[],t.canClean??!1,t.reason)}function un(e){let t=e.payload;H.getState().setCleanResult({...t,at:Date.now()})}function dn(e){let t=e.payload;H.getState().setMergeResult({...t,at:Date.now()})}function fn(e){let t=e.payload;H.getState().setDiff(t.dir,t.summary)}function pn(e){T.getState().applyEvent(e.payload);let t=re(`subagent.event`,e.payload);t&&(N.getState().pushEvent(t),N.getState().setActive(!0))}function mn(e){let t=L(e);t?.kind===`concurrency`&&T.setState({fleetConcurrency:t.active,fleetConcurrencyMax:t.maximum,...t.maxSpawns===void 0?{}:{fleetMaxSpawns:t.maxSpawns},...t.usedSpawns===void 0?{}:{fleetUsedSpawns:t.usedSpawns},...t.remainingSpawns===void 0?{}:{fleetRemainingSpawns:t.remainingSpawns},...t.effectiveSource===void 0?{}:{fleetBudgetSource:t.effectiveSource},...t.checkpointMaxSpawns===void 0?{}:{fleetCheckpointMaxSpawns:t.checkpointMaxSpawns},...t.ceilingMismatch===void 0?{}:{fleetCeilingMismatch:t.ceilingMismatch}})}function hn(e){let t=L(e);if(t?.kind!==`client-status`)return;let n=t.status;Me.getState().setCurrentSession({clientType:n.clientType,clientId:n.clientId,agentCount:n.agentCount,model:n.model,mode:n.mode,toolCalls:n.toolCalls,inputTokens:n.inputTokens,outputTokens:n.outputTokens,cacheTokens:n.cacheTokens,costUsd:n.costUsd,timestamp:n.timestamp})}function gn(e){let t=L(e);if(t?.kind!==`sessions`)return;Me.getState().setLiveSessions(t.sessions);let n=Date.now();if(n-vn>=5e3&&(vn=n,Pt()),n-_n<1e3)return;_n=n;let r=re(`sessions.status_update`,e.payload);r&&(N.getState().pushEvent(r),N.getState().setActive(!0))}var _n=0,vn=0,yn={"worktree.state":sn,"worktree.event":cn,"worktree.orphans":ln,"worktree.cleanup_result":un,"worktree.merge_result":dn,"worktree.diff_result":fn,"subagent.event":pn,"fleet.concurrency_update":mn,"client.status_update":hn,"sessions.status_update":gn};function bn(e,t){let n=e=>e.trim().replace(/\s+/g,` `).toLowerCase();return n(e)===n(t)}var xn=50,Sn=200;function Cn(e){return e.length<=300?e:`${e.slice(0,299)}…`}function wn(e){return{...e,text:Cn(e.text)}}function Tn(e){let t=[];for(let n of Object.values(e))n.state===`exited`&&t.push(n);if(t.length<=Sn)return e;t.sort((e,t)=>(t.exitedAt??t.lastSeenAt).localeCompare(e.exitedAt??e.lastSeenAt));let n={...e};for(let e of t.slice(Sn))delete n[e.id];return n}var En=xe(e=>({traces:[],contextMemories:{},transitions:[],pushTrace:t=>e(e=>{let n={...e.contextMemories},r=[...e.transitions],i=t.injected.map(wn),a=t.activated.map(wn);for(let e of i){let i=n[e.id];n[e.id]={...e,state:i?.state===`active`?`active`:`injected`,trigger:t.trigger,enteredAt:i?.enteredAt??t.at,lastSeenAt:t.at};let a=`${t.at}_injected_${e.id}`;r.some(e=>e.id===a)||r.unshift({id:a,at:t.at,memoryId:e.id,action:`injected`,reason:`${t.trigger} · score ${e.score.toFixed(2)}`})}return{traces:[{...t,activated:a,injected:i},...e.traces.filter(e=>e.runId!==t.runId)].slice(0,xn),contextMemories:Tn(n),transitions:r.slice(0,100)}}),applyContextSnapshot:t=>e(e=>{let n={...e.contextMemories},r=[...e.transitions],i=new Set(t.activeMemoryIds);for(let e of t.activeMemoryIds){let r=n[e];n[e]=r?{...r,state:`active`,lastSeenAt:t.at,exitedAt:void 0}:Dn(e,t.at,`active`)}for(let e of t.enteredMemoryIds){let n=`${t.at}_entered_${e}`;r.some(e=>e.id===n)||r.unshift({id:n,at:t.at,memoryId:e,action:`entered`,reason:`present in provider request`})}for(let e of t.exitedMemoryIds){let i=n[e];i&&(n[e]={...i,state:`exited`,exitedAt:t.at});let a=`${t.at}_exited_${e}`;r.some(e=>e.id===a)||r.unshift({id:a,at:t.at,memoryId:e,action:`exited`,reason:`absent from provider request`})}for(let[e,a]of Object.entries(n))if((a.state===`injected`||a.state===`active`)&&!i.has(e)&&(n[e]={...a,state:`exited`,exitedAt:t.at},!t.exitedMemoryIds.includes(e))){let n=`${t.at}_exited_before_provider_${e}`;r.some(e=>e.id===n)||r.unshift({id:n,at:t.at,memoryId:e,action:`exited`,reason:a.state===`injected`?`removed before provider request`:`absent from provider context snapshot`})}return{contextMemories:Tn(n),transitions:r.slice(0,100)}}),resetContext:()=>e({contextMemories:{},transitions:[]}),clear:()=>e({traces:[],contextMemories:{},transitions:[]})}));function Dn(e,t,n){return{id:e,kind:`unknown`,text:`Memory details were not present in this UI process.`,score:0,relationStrength:0,anchors:[],tags:[],activationReasons:[],importance:0,confidence:0,freshness:0,persistence:`unknown`,state:n,trigger:`context snapshot`,enteredAt:t,lastSeenAt:t,isPlaceholder:!0}}var On=100,kn=new Set([`exited`,`superseded`,`archived`,`staled`,`contradicted`]);function An(e,t=new Date){let n=e.event,r=Y(e.memoryId),i=Y(e.at)??t.toISOString(),a={id:`${n}_${t.getTime()}_${Math.random().toString(36).slice(2,7)}`,at:i,event:n};if(n===`memory.accepted`&&r)return{...a,action:`entered`,memoryId:r,label:`${r} entered memory`,detail:Nn(e)};if(n===`memory.merged`&&r){let t=Array.isArray(e.mergedIds)?e.mergedIds.length:0;return{...a,action:`merged`,memoryId:r,label:`${r} merged`,detail:t>0?`${t} records folded in`:void 0}}if(n===`memory.recovered`&&r)return{...a,action:`recovered`,memoryId:r,label:`${r} recovered`,detail:Y(e.reason)};if(n===`memory.deleted`&&r)return{...a,action:`exited`,memoryId:r,label:`${r} exited memory`,detail:Pn(e)};if(n===`memory.updated`&&r){let t=Y(e.status)??`updated`;return{...a,action:t===`deleted`?`exited`:`updated`,memoryId:r,label:t===`deleted`?`${r} exited memory`:`${r} updated → ${t}`,detail:Nn(e)}}if(n===`memory.graph_edge_added`){let t=Y(e.from),n=Y(e.to);if(!t?.startsWith(`mem:`)||!n?.startsWith(`mem:`))return null;let r=Y(e.relation)??`related_to`,i=Mn(e.weight),o=Array.isArray(e.evidence)?e.evidence.filter(e=>typeof e==`string`):[];return{...a,action:`related`,memoryId:t.startsWith(`mem:`)?t.slice(4):void 0,label:`${Fn(t)} ↔ ${Fn(n)}`,detail:[r,i===void 0?void 0:`weight ${i.toFixed(2)}`,o.length>0?`why: ${o.join(`, `)}`:void 0].filter(Boolean).join(` · `)}}return n===`memory.relationships_rebuilt`?{...a,action:`related`,label:`Memory relationships rebuilt`,detail:`${Mn(e.added)??0} added / ${Mn(e.proposed)??0} proposed`}:n===`memory.superseded`&&r?{...a,action:`superseded`,memoryId:r,label:`${r} → superseded`,detail:Y(e.reason)??Nn(e)}:n===`memory.archived`&&r?{...a,action:`archived`,memoryId:r,label:`${r} → archived`,detail:Y(e.reason)}:n===`memory.staled`&&r?{...a,action:`staled`,memoryId:r,label:`${r} → staled`,detail:Y(e.reason)??`anchor drift detected`}:n===`memory.contradicted`&&r?{...a,action:`contradicted`,memoryId:r,label:`${r} → contradicted`,detail:Y(e.reason)??`conflicting evidence`}:null}var jn=xe(e=>({items:[],pushEvent:t=>e(e=>{let n=An(t);return n?{items:[n,...kn.has(n.action)?e.items.filter(e=>!(kn.has(e.action)&&e.memoryId===n.memoryId)):e.items].slice(0,On)}:e}),clear:()=>e({items:[]})}));function Y(e){return typeof e==`string`&&e.length>0?e:void 0}function Mn(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function Nn(e){let t=[Y(e.kind),Y(e.persistence)],n=Mn(e.confidence),r=Mn(e.freshness);return n!==void 0&&t.push(`confidence ${n.toFixed(2)}`),r!==void 0&&t.push(`freshness ${r.toFixed(2)}`),t.filter(Boolean).join(` · `)||void 0}function Pn(e){let t=Y(e.reason),n=Mn(e.removedEdges);return[t,n===void 0?void 0:`${n} edges removed`].filter(Boolean).join(` · `)||void 0}function Fn(e){let t=e.replace(/^mem:/,``);return t.length>26?`${t.slice(0,23)}…`:t}function In(e){return Ne.for(k(e)).getState()}function Ln(e){if(!e||e.length===0)return;let t=e.map(e=>e.status);return t.some(e=>e===`failed`)?`failed`:t.every(e=>e===`completed`||e===`skipped`)?`completed`:t.some(e=>e===`paused`)?`paused`:`running`}function Rn(e){let t=e.payload,n=Array.isArray(t.phases)?t.phases:void 0,r=Ln(n);B.getState().setState({phases:n,activePhaseId:typeof t.activePhaseId==`string`?t.activePhaseId:void 0,overallPercent:typeof t.overallPercent==`number`?t.overallPercent:void 0,autonomous:typeof t.autonomous==`boolean`?t.autonomous:void 0,title:typeof t.title==`string`?t.title:void 0,goal:typeof t.goal==`string`?t.goal:void 0,status:r,multiBoard:t.multiBoard===!0,lastError:r===`failed`?B.getState().lastError:null})}function zn(e){let t=e.payload,n={totalPhases:typeof t.totalPhases==`number`?t.totalPhases:0,completed:typeof t.completed==`number`?t.completed:0,failed:typeof t.failed==`number`?t.failed:0,totalTasks:typeof t.totalTasks==`number`?t.totalTasks:0,completedTasks:typeof t.completedTasks==`number`?t.completedTasks:0,failedTasks:typeof t.failedTasks==`number`?t.failedTasks:0};B.getState().setState({progress:n,overallPercent:typeof t.percentComplete==`number`?Math.round(t.percentComplete):void 0,status:n.failed>0||n.failedTasks>0?`failed`:`running`,lastEvent:`progress`})}function X(e){let t=e.payload,n=typeof t.title==`string`&&t.title?t.title:`Goal`,r=typeof t.error==`string`&&t.error?t.error:void 0;if(e.type===`goal.paused`){B.getState().setState({status:`paused`,autonomous:!1,lastEvent:`paused`}),f.info(`Goal paused`);return}if(e.type===`goal.resumed`){B.getState().setState({status:`running`,autonomous:!0,lastEvent:`resumed`}),f.info(`Goal resumed`);return}if(e.type===`goal.stopped`){B.getState().setState({status:`stopped`,autonomous:!1,lastEvent:`stopped`}),f.warn(`Goal stopped`);return}if(e.type===`goal.cleared`){B.getState().clear();return}if(e.type===`goal.reverted`){let e=t.ok===!0,n=typeof t.reverted==`number`?t.reverted:0,r=typeof t.reason==`string`?t.reason:void 0;e?f.success(n>0?`Reverted ${n} commit${n===1?``:`s`}`:`Nothing to revert`):f.error(`Revert failed: ${r??`unknown error`}`),B.getState().setState({lastEvent:`reverted`});return}if(e.type===`goal.saved`){B.getState().setState({lastEvent:`saved`}),f.success(`Goal graph saved`);return}if(e.type===`goal.completed`){B.getState().setState({status:`completed`,autonomous:!1,overallPercent:100,lastEvent:`completed`,lastError:null}),f.success(`${n} completed`);return}if(e.type===`goal.failed`||e.type===`goal.error`){let e=r??(typeof t.message==`string`?t.message:`${n} failed`);B.getState().setState({status:`failed`,autonomous:!1,lastEvent:`failed`,lastError:e}),f.error(e)}}function Bn(e){let t=e.payload;B.getState().setState({lastEvent:`list`,graphs:Array.isArray(t.graphs)?t.graphs:[]})}function Vn(e){let t=e.payload;ke.getState().setGoal(t)}function Hn(e){let t=e.payload,n=k(e);if(ge.getState().applyRemote(t,n??void 0),t.yolo!==!0||n&&n!==ge.getState().activeSessionId)return;let r=R.getState().confirmInfo;r&&(E(r.id),R.getState().hideConfirm())}function Un(e){let t=e.payload;!t||!Array.isArray(t.variants)||P.getState().setInfo(t,t.sessionId)}function Wn(e){let t=A(e)??F(),n=e.payload,r;if(n.decision.type===`answer`){let e=n.decision.rationale&&n.decision.rationale!==n.decision.text?`\n\n_${n.decision.rationale}_`:``;r=`🧠 ${n.decision.text??``}${e}`}else r=n.decision.type===`deny`?`🧠 Denied: ${n.decision.reason??``}`:`🧠 The Brain escalated this question back to you — it needs human judgement.`;let i={kind:n.decision.type===`answer`?`answered`:n.decision.type===`deny`?`denied`:`ask_human`,question:n.question,decisionType:n.decision.type,text:n.decision.text,rationale:n.decision.rationale,reason:n.decision.reason,optionId:n.decision.optionId,at:Date.now()};t.addMessage({role:`assistant`,content:r,brainDecision:i})}function Gn(e){let t=A(e)??F(),n=e.payload,r=n.requestId??n.request?.id;if(r&&n.request?.question&&In(e).noteQuestion(r,n.request.question),n.event===`brain.council_vote`){In(e).recordVote(n);let t=n.requestId??`unknown`;N.getState().pushEvent({id:`council_${t}_${n.seatId??`seat-${Date.now()}`}`,kind:`brain:council_vote`,timestamp:Date.now(),source:n.model??n.persona??`seat`,target:`brain`,label:`${n.persona??`voter`} → ${n.status===`valid`?n.optionId??`stance`:n.status??`failed`}`,data:n,color:`#38bdf8`,flowGroup:`brain`});return}if(n.event===`brain.council_resolved`){In(e).recordResolution(n);let r=n.requestId??`unknown`,i=In(e).panels.find(e=>e.requestId===r),a=i?.seats??[],o=a.map(e=>`- **${e.persona}**${e.veto?` (veto)`:``} → ${e.status===`valid`?e.optionId??`stance`:e.status}${e.model?` · \`${e.model}\``:``}`),s=[`⚖️ **Council ${n.resolution??`resolved`}**`,`${n.validVoteCount??a.length}/${n.configuredSeatCount??a.length} seats`,`${n.distinctTargetCount??0} distinct target${n.distinctTargetCount===1?``:`s`}`,n.judgeUsed?`judge used`:void 0,n.usage?.totalTokens?`${n.usage.totalTokens} tok`:void 0].filter(Boolean).join(` · `),c={requestId:r,status:n.status??i?.status??`decided`,resolution:n.resolution??i?.resolution??`decided`,optionId:n.optionId??i?.optionId,question:i?.question??n.request?.question,reason:n.reason??i?.reason,configuredSeatCount:n.configuredSeatCount??i?.configuredSeatCount??a.length,validVoteCount:n.validVoteCount??i?.validVoteCount??a.length,distinctTargetCount:n.distinctTargetCount??i?.distinctTargetCount??new Set(a.map(e=>e.model||e.persona)).size,judgeUsed:!!(n.judgeUsed??i?.judgeUsed),totalTokens:n.usage?.totalTokens??i?.totalTokens,durationMs:n.usage?.durationMs??i?.durationMs,warnings:n.warnings??i?.warnings,seats:a.length>0?a:i?.seats??[]};t.addMessage({role:`assistant`,content:[s,...o,...(n.warnings??[]).map(e=>`> ⚠ ${e}`)].filter(Boolean).join(`
10
- `),councilDecision:c});for(let e of n.warnings??[])f.warn(e);return}if(n.event===`brain.intervention`){let e=n.decision?.rationale??n.decision?.text??``,r=n.intervened?`🧠 **Brain intervention** — corrective guidance was sent to the agent.`:`🧠 **Brain check** — a distress signal was reviewed; no action needed.`,i={id:n.requestId??n.request?.id,kind:n.intervened?`intervention`:`check`,intervened:!!n.intervened,question:n.request?.question,source:n.request?.source,risk:n.request?.risk,decisionType:n.decision?.type??(n.intervened?`steer`:`observe`),optionId:n.decision?.optionId,text:n.decision?.text,rationale:e,reason:n.decision?.reason,at:Date.now()};t.addMessage({role:`assistant`,content:[r,n.request?.question??``,e?`_${e}_`:``].filter(Boolean).join(`
11
-
12
- `),brainDecision:i}),n.intervened&&f.info(`Brain intervened: agent steered`)}else if(n.event===`brain.decision_denied`){let e=n.decision?.reason??n.request?.question??`request`,r={id:n.requestId??n.request?.id,kind:`denied`,question:n.request?.question,source:n.request?.source,risk:n.request?.risk,decisionType:`deny`,reason:e,rationale:n.decision?.rationale,at:Date.now()};t.addMessage({role:`assistant`,content:`🧠 Denied: ${e}`,brainDecision:r}),f.warn(`Brain denied: ${e}`)}else if(n.event===`brain.decision_answered`){let e=n.decision?.text??n.decision?.optionId??``,r=n.decision?.rationale??``,i={id:n.requestId??n.request?.id,kind:`answered`,question:n.request?.question,source:n.request?.source,risk:n.request?.risk,decisionType:n.decision?.type??`answer`,optionId:n.decision?.optionId,text:e,rationale:r,reason:n.decision?.reason,at:Date.now()};t.addMessage({role:`assistant`,content:`🧠 ${e}${r?`\n\n_${r}_`:``}`,brainDecision:i})}else if(n.event===`brain.decision_ask_human`){let e={id:n.requestId??n.request?.id,kind:`ask_human`,question:n.request?.question,source:n.request?.source,risk:n.request?.risk,decisionType:`ask_human`,rationale:n.decision?.rationale,reason:n.decision?.reason,at:Date.now()};t.addMessage({role:`assistant`,content:`🧠 The Brain escalated this question back to you — it needs human judgement.`,brainDecision:e})}}function Kn(e){let t=En.for(k(e)),n=jn.for(k(e)),r=e.payload;N.getState().pushEvent({id:`memory_${Date.now()}_${Math.random().toString(36).slice(2,7)}`,kind:`memory:event`,timestamp:Date.now(),source:`sage`,target:`leader`,label:r.event.replace(/^memory\./,``),data:r,color:`#a78bfa`,flowGroup:`memory`}),r.event===`memory.injector_run`&&t.getState().pushTrace(r),r.event===`memory.context_snapshot`&&t.getState().applyContextSnapshot(r),n.getState().pushEvent(r),r.event===`memory.staled`?f.warn(`Memory became stale: ${String(r.memoryId??``)}`):r.event===`memory.contradicted`?f.warn(`Memory contradicted: ${String(r.memoryId??``)}`):r.event===`memory.hygiene_completed`&&f.info(`SAGE hygiene completed`)}function qn(e){let t=e.payload,n=typeof t.kind==`string`?t.kind:typeof t.event==`string`?t.event:`collab.event`;N.getState().pushEvent({id:`collab_${Date.now()}_${Math.random().toString(36).slice(2,7)}`,kind:`collab:event`,timestamp:Date.now(),source:`collab`,target:typeof t.sessionId==`string`?t.sessionId:`session`,label:n,magnitude:1,data:t,raw:e.payload,color:`hsl(200, 70%, 55%)`,flowGroup:`collab`}),N.getState().setActive(!0)}function Jn(e){qn(e);let t=e.payload;t?.phase===`consumed`?f.success(`Tool injection applied${t.toolName?` to ${t.toolName}`:``}`):f.info(`Collab tool injection queued`)}function Yn(e){let t=e.payload?.entry;if(!t)return;let n=typeof t.iteration==`number`?t.iteration:0,r=typeof t.task==`string`?t.task:void 0,i=typeof t.status==`string`?t.status:void 0,a=typeof t.at==`string`?t.at:new Date().toISOString();ke.getState().appendJournalEntry({iteration:n,task:r,status:i,timestamp:a}),N.getState().pushEvent({id:`eternal_${Date.now()}_${n}`,kind:`eternal:iteration`,timestamp:Date.now(),source:`eternal`,target:`goal`,label:r?`L${n}: ${r}`:`Eternal iteration ${n}`,magnitude:typeof t.costUsd==`number`?t.costUsd:1,data:t,raw:e.payload,color:i===`failure`?`hsl(0, 80%, 55%)`:`hsl(220, 80%, 60%)`,flowGroup:`eternal`}),N.getState().setActive(!0)}function Xn(e){let t=e.payload,n=k(e);x.getState().setEnv({cwd:t.cwd,projectRoot:t.projectRoot,projectName:t.projectRoot.split(/[/\\]/).pop()||t.projectRoot}),g.getState().setTreeLoading(!0,n),Rt(t.projectRoot,n),M().send({type:`files.tree`,payload:n?{path:t.cwd,sessionId:n}:{path:t.cwd}})}function Zn(e){let t=e.payload,n=R.getState().refinePanel,r=k(e)??n?.sessionId??null,i=A(e)??(r?pe(r):null),a=i?.pendingRefinement??null;if(n?.sessionId&&r&&n.sessionId!==r||n?.sessionId&&!i)return;if(!n&&a&&i){i.setRefining(!1);let e=a.text,n=a.images?.length?a.images.map((e,t)=>({id:`pr_${Date.now()}_${t}`,dataUrl:`data:${e.mime};base64,${e.data}`,mediaType:e.mime,bytes:Math.round(e.data.length*3/4)})):void 0,r=n&&n.length>0&&a.mode===`btw`?`queue`:a.mode??`queue`;if(t.error){i.setPendingRefinement(null),i.enqueue(e,r,n);return}let o=t.refined??``;if(!o||bn(o,e)){i.setPendingRefinement(null),i.enqueue(e,r,n);return}i.setPendingRefinement(null),R.getState().setRefinePanel({original:e,refined:o,english:t.english||o,status:`ready`,mode:n&&n.length>0&&a.mode===`btw`?`queue`:a.mode,images:n,...t.refinedWith?{provider:t.refinedWith.provider,model:t.refinedWith.model}:{},error:void 0,errorKind:void 0,sessionId:i.sessionId,resolve:()=>{}});return}if(!n)return;if(t.error){if(t.errorKind===`timeout`&&!n.retried&&t.retryTimeoutMs){R.getState().setRefinePanel({...n,status:`refining`,retried:!0}),M().refineModel(n.original,{timeoutMs:t.retryTimeoutMs});return}R.getState().setRefinePanel({...n,status:`failed`,error:t.error,errorKind:t.errorKind,fallbackRef:t.fallbackRef});return}let o=n.original;if(bn(t.refined,o)){R.getState().setRefinePanel(null);let e=i??F();e.addMessage({role:`user`,content:o}),e.setLoading(!0);let t=e.sessionId===`__unbound__`?void 0:e.sessionId;M().sendMessage(o,void 0,!1,t);return}R.getState().setRefinePanel({...n,status:`ready`,refined:t.refined,english:t.english,...t.refinedWith?{provider:t.refinedWith.provider,model:t.refinedWith.model}:{},error:void 0,errorKind:void 0})}function Qn(e){let t=e.payload;Te.getState().setInfo({...t,fetchedAt:Date.now()})}function $n(e){let t=e.payload;S.getState().setFiles(t.files??[],t.error??null,t.repoPrefix??``,t.dirs??{})}function er(e){let t=e.payload;S.getState().selectedPath===t.path&&S.getState().setDiff({path:t.path,oldText:t.oldText??``,newText:t.newText??``,binary:t.binary,tooLarge:t.tooLarge,error:t.error})}function tr(e){let t=e.payload;if(!t.ok){f.error(t.error??`Git ${t.action} failed`);return}let n=M();n.getGitChanges(),n.getGitInfo()}function nr(e){let t=e.payload;Pe.getState().setSnapshot({count:t.count,maxConcurrent:t.maxConcurrent,jobs:t.jobs??[]})}function rr(e){let t=e.payload;Pe.getState().recordFired(t.name,t.ts)}function ir(e){let t=e.payload;f.info(t.message??`🦂 Chimera report ready. No follow-up started; open the mailbox to inspect it.`,8e3);let n=k(e);!t.reportId||!n||!c.getState().recordReport({reportId:t.reportId,sessionId:n,message:t.message??``,findingCount:t.findingCount??0,fileCount:t.fileCount??0,hasActionableFindings:t.hasActionableFindings===!0,receivedAt:Date.now(),actionedAt:null,source:`event`})||t.hasActionableFindings!==!0||A(e)?.addMessage({role:`system`,content:t.message??`🦂 Chimera report ${t.reportId} is ready — findings await review.`,chimeraReport:{reportId:t.reportId,actionable:!0,actionedAt:null}})}function ar(e){let t=k(e);if(!t)return;let n=e.payload.reports??[];c.getState().hydrateReports(t,n.filter(e=>e.reportId&&e.totalFindings>0&&e.lifecycleStatus!==`completed`&&e.lifecycleStatus!==`skipped`).map(e=>{let n=Date.parse(e.reviewedAt);return{reportId:e.reportId,sessionId:t,message:`🦂 Chimera report ready — ${e.totalFindings} finding(s) recorded for this session.`,findingCount:e.totalFindings,fileCount:0,hasActionableFindings:e.hasActionableFindings===!0,receivedAt:Number.isFinite(n)?n:Date.now(),actionedAt:null,source:`hydrate`}}))}var or={"goal-state.updated":Vn,"prefs.updated":Hn,"system_prompt.info":Un,"goal.state":Rn,"goal.progress":zn,"goal.paused":X,"goal.resumed":X,"goal.stopped":X,"goal.cleared":X,"goal.reverted":X,"goal.saved":X,"goal.completed":X,"goal.failed":X,"goal.error":X,"goal.list":Bn,"brain.answer":Wn,"brain.event":Gn,"memory.event":Kn,"collab.event":qn,"collab.injection.granted":Jn,"eternal.iteration":Yn,"working_dir.changed":Xn,"model.refine_result":Zn,"git.info":Qn,"git.changes":$n,"git.diff":er,"git.action_result":tr,"cron.snapshot":nr,"cron.job_fired":rr,"chimera.report_available":ir,"chimera.reports":ar},sr=new Map;function cr(e){let t=e??`__unbound__`,n=sr.get(t);if(n)return n;let r=new Set;return sr.set(t,r),r}function lr(e=F()){b.flush(`__thinking__:${e.sessionId}`);let t=ae(e.sessionId).iteration;e.flushThinkingLog(Math.max(1,t?.index??1)),e.clearThinking()}function ur(e){let t=A(e);if(!t)return;let n=e.payload,r=e=>e.toLocaleString(),i=[...n.tools.breakdown].sort((e,t)=>t.tokens-e.tokens).slice(0,8),a=[...n.messages.breakdown].sort((e,t)=>t.tokens-e.tokens).slice(0,8);t.addMessage({role:`assistant`,content:[`📊 **Context breakdown** (heuristic — 4 chars/token)`,``,`**Total estimate:** ${r(n.total)} tokens`,`• System prompt: ${r(n.systemPrompt)}`,`• Tool schemas: ${r(n.tools.total)} (${n.tools.count} tools)`,`• Messages: ${r(n.messages.total)} (${n.messages.count} messages)`,``,`**Top tool schemas:**`,...i.map(e=>` · ${e.name}: ${r(e.tokens)}`),``,`**Top messages:**`,...a.map(e=>` · #${e.index} ${e.role}: ${r(e.tokens)} — ${e.preview||`(empty)`}`)].join(`
13
- `)})}function dr(e){let n=e.payload;!n||typeof n.message!=`string`||n.message.startsWith(`Resumed session`)||n.message.includes(`Session is already active`)||n.message.startsWith(`Swapped session`)||(n.success?f.success(n.message):f.error(n.message),M(t.getState().wsUrl).listSavedProviders())}function fr(e){let n=e.payload;if(!n.success||!n.provider||!n.model)return;let r=A(e),i=D(e);if(!r||!i)return;let a=i.data.session;i.setSession({id:a?.id??r.sessionId,startedAt:a?.startedAt??Date.now(),provider:n.provider,model:n.model,...a?.title?{title:a.title}:{}}),r.sessionId===v()&&(t.getState().setProvider(n.provider),t.getState().setModel(n.model));let o=n.previousProvider&&n.previousModel?`${n.previousProvider} / ${n.previousModel}`:me.t(`settings:toast.previousModel`),s=`${n.provider} / ${n.model}`;r.addMessage({role:`system`,content:me.t(n.runActive?`settings:toast.modelSwitchedRunActive`:`settings:toast.modelSwitchedNextRequest`,{from:o,to:s})})}function pr(e){let t=A(e);if(!t)return;j(e);let n=e.payload,r=n.reductions.length?n.reductions.map(e=>`${e.phase}: ${e.saved}`).join(`, `):`no-op`;n.repaired&&(r+=`; repaired ${n.repaired.removedToolUses?.length??0} tool_use, ${n.repaired.removedToolResults?.length??0} tool_result, ${n.repaired.removedMessages} empty messages`),t.addMessage({role:`system`,content:`🗜️ Context compacted: ${n.before} → ${n.after} tokens (saved ~${n.saved}). ${r}`}),D(e)?.patch({lastInputTokens:n.after})}function mr(e){let t=A(e);if(!t)return;j(e);let n=e.payload,r,i;n.budget&&n.budget.availableInputTokens>0?(r=Math.min(100,Math.max(0,Math.round(n.budget.load*100))),i=`input budget`):(r=n.maxContext>0?Math.min(100,Math.max(0,Math.round(n.tokens/n.maxContext*100))):0,i=`context`),t.addMessage({role:`assistant`,content:`Compaction failed at ${n.level} (${r}% ${i}): ${n.message}`,isError:n.fatal}),t.sessionId===v()&&f.error(`Compaction failed: ${n.message}`)}function hr(e){if(!C(e))return;let t=e.payload,n=`${t.tool}: ${t.pattern}`;t.decision===`always`?f.success(`Always allowed ${n}`):f.warn(`Denied ${n}`)}function gr(e){let t=A(e);if(!t)return;j(e);let n=e.payload,r=n.removedToolUses.length+n.removedToolResults.length+n.removedMessages,i=n.beforeMessages!==void 0&&n.afterMessages!==void 0?` Messages: ${n.beforeMessages} -> ${n.afterMessages}.`:``;t.addMessage({role:`assistant`,content:`Context repaired: removed ${r} orphan protocol item(s).${i} tool_use ${n.removedToolUses.length}, tool_result ${n.removedToolResults.length}.`})}function _r(e){let t=D(e);if(!t)return;j(e);let n=e.payload;t.setContextUsage(n.tokens,n.maxContext)}function vr(e){let t=D(e);if(!t)return;let n=e.payload;t.setEnvRates({maxContext:n.maxContext});let r=t.data;n.source===`provider`&&n.decreased===!0&&typeof n.previousMaxContext==`number`&&n.previousMaxContext>n.maxContext?t.setContextLimitWarning({previousMaxContext:n.previousMaxContext,maxContext:n.maxContext,providerId:n.providerId??r.session?.provider??`provider`,modelId:n.modelId??r.session?.model??`model`}):(n.decreased===!1||n.source===`configured`)&&t.setContextLimitWarning(null)}function yr(e){let t=D(e);if(!t)return;let n=e.payload;t.setContextUsage(n.used,n.limit);let r=n.limit>0?Math.round(n.used/n.limit*100):0;t.sessionId===v()&&f.warn(`Token threshold reached (${r}%)`)}function br(e){let t=k(e),n=e.payload.model||`<unknown>`,r=cr(t);r.has(n)||(r.add(n),(!t||t===v())&&f.warn(`Cost estimate unavailable for ${n}`))}function xr(e){let t=e.payload;se({contextModes:t.modes.map(e=>({id:e.id,name:e.name,description:e.description,thresholds:e.thresholds,preserveK:e.preserveK,eliseThreshold:e.eliseThreshold,custom:e.custom}))}),(D(e)??null)?.setEnvRates({contextMode:t.activeId})}function Sr(e){let t=D(e);if(!t)return;let n=e.payload;t.setEnvRates({contextMode:n.id})}function Cr(e){let t=e.payload;typeof t.sessionId==`string`&&t.sessionId.length!==0&&ee.getState().update(t.sessionId,{stage:typeof t.stage==`string`?t.stage:`open_journal`,loadedBytes:typeof t.loadedBytes==`number`?t.loadedBytes:0,totalBytes:typeof t.totalBytes==`number`?t.totalBytes:0})}function wr(e){let t=e.payload;if(t.phase===`session.resume`||t.phase===`session.focus`){let n=typeof t.requestedSessionId==`string`?t.requestedSessionId:k(e);n&&ee.getState().end(n)}if(t.phase===`todos.get`||typeof t.requestedSessionId==`string`)return;if(t.code===`session_not_ready`){let n=k(e),r=typeof t.content==`string`?t.content:``;if(n&&r){let i=Array.isArray(t.images)?t.images:void 0,a=M();if(a.armNotReadyResend(n,{content:r,freshContext:t.freshContext===!0,...i?{images:i}:{}})){a.resumeSession(n);let t=A(e);t?.addMessage({role:`assistant`,content:`ℹ️ Session is reopening — your message will be resent automatically.`}),t?.setLoading(!1);return}}}let n=A(e)??F();lr(n),n.addMessage({role:`assistant`,content:`[${t.phase}] ${t.message}`,isError:!0}),n.setLoading(!1)}function Tr(e,t=180){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t-1)}…`:n}var Er=640;function Dr(){let[e,t]=(0,U.useState)({isMobile:!1,isSmall:!1,width:0});return(0,U.useEffect)(()=>{if(typeof window>`u`)return;let e=window.matchMedia(`(max-width: 768px)`),n=window.matchMedia(`(max-width: ${Er}px)`),r=()=>{t({isMobile:e.matches,isSmall:n.matches,width:window.innerWidth})};return r(),e.addEventListener(`change`,r),n.addEventListener(`change`,r),()=>{e.removeEventListener(`change`,r),n.removeEventListener(`change`,r)}},[]),e}function Or(){return typeof window>`u`?!1:window.matchMedia(`(max-width: 768px)`).matches}var kr=`<!-- wrongstack-bug-hunt`,Ar=/^<!-- wrongstack-bug-hunt scope="([^"]*)" max-bugs="([123])" -->\n/;function jr(e,t){return`${kr} scope="${encodeURIComponent(t.scope)}" max-bugs="${t.maxBugs}" -->\n${e}`}function Mr(e){let t=Ar.exec(e);if(t)try{return{scope:decodeURIComponent(t[1]??``),maxBugs:Number(t[2])}}catch{return}}var Nr=[`ratchet`,`audit`,`triage`,`memory`,`io`,`cpu`,`guard`,`contract`],Pr=[`wall-ms`,`p99-latency-ms`,`peak-rss-bytes`,`throughput-ops`,`allocs-per-op`,`cold-start-ms`,`bundle-bytes`],Fr={ratchet:`Performance Ratchet`,audit:`Performance Audit`,triage:`Performance Triage`,memory:`Memory & Retention Hunt`,io:`I/O & Concurrency Analysis`,cpu:`CPU Hot Path Reduction`,guard:`Regression Guard Setup`,contract:`Performance Contract`},Ir={"wall-ms":`Wall time`,"p99-latency-ms":`p99 latency`,"peak-rss-bytes":`Peak RSS`,"throughput-ops":`Throughput`,"allocs-per-op":`Allocations/op`,"cold-start-ms":`Cold start`,"bundle-bytes":`Bundle size`},Lr={ratchet:`elite-performance-ratchet`,audit:`performance-baseline-audit`,triage:`performance-quick-triage`,memory:`performance-memory-hunt`,io:`performance-io-concurrency`,cpu:`performance-cpu-hot-path`,guard:`performance-regression-guard`,contract:`performance-contract`},Rr=new Set([`ratchet`,`cpu`,`guard`]),zr=`<!-- wrongstack-perf-run`,Br=/^<!-- wrongstack-perf-run scope="([^"]*)" mode="([a-z]+)" metric="([a-z0-9-]*)" -->\n/;function Vr(e){return Nr.includes(e)}function Hr(e){return Pr.includes(e)}function Ur(e,t){return`${zr} scope="${encodeURIComponent(t.scope)}" mode="${t.mode}" metric="${t.metric}" -->\n${e}`}function Wr(e){let t=Br.exec(e);if(!t)return;let n=t[2]??``,r=t[3]??``;if(Vr(n))try{return{scope:decodeURIComponent(t[1]??``),mode:n,metric:Hr(r)?r:``}}catch{return}}function Gr(e){if(typeof e!=`string`)return Date.now();let t=Date.parse(e);return Number.isFinite(t)?t:Date.now()}function Kr(e){return`replay_${Date.now()}_${e}`}function qr(){return typeof window>`u`?!1:window.location.pathname===`/debug`||window.location.pathname===`/analytics`||window.location.pathname===`/refresh-debug`}function Jr(e){return typeof e==`string`?e:Array.isArray(e)?e.filter(e=>!!e&&typeof e==`object`&&e.type===`text`&&typeof e.text==`string`).map(e=>e.text).join(`
14
- `):``}function Yr(e){if(typeof e==`string`)return e.trim();if(!e||typeof e!=`object`||Array.isArray(e))return``;let t=e;for(let e of[`id`,`name`,`type`]){let n=t[e];if(typeof n==`string`&&n.trim())return n.trim()}return``}function Xr(e,t=[],n=[]){let r=Ze({messages:(Array.isArray(e)?e:[]).filter(e=>!!(e&&typeof e==`object`&&typeof e.role==`string`&&(e.role===`user`||e.role===`assistant`||e.role===`system`))),markers:t.filter(e=>!Qr(e.source)),toolMeta:n,thinkingPlacement:`merged-after`}),i=[];for(let e of r){let t=Gr(e.ts),n=Kr(i.length);switch(e.kind){case`user`:{let r=Mr(e.text),a=Wr(e.text);i.push({id:n,role:`user`,content:e.text,timestamp:t,...r?{bugHunt:r}:{},...a?{perfRun:a}:{},...e.images?{attachments:$r(e.images,n)}:{}});break}case`assistant`:i.push({id:n,role:`assistant`,content:e.text,timestamp:t});break;case`system`:i.push({id:n,role:`system`,content:e.text,timestamp:t});break;case`thinking`:i.push({id:n,role:`system`,content:``,timestamp:t,thinkingLog:{iteration:e.index,text:e.text,startedAt:t,durationMs:0,replayed:!0}});break;case`tool`:i.push({id:n,role:`tool`,content:``,toolName:e.name,toolInput:e.input,toolUseId:e.toolUseId,timestamp:t,...e.output===void 0?{}:{toolResult:e.output},...e.ok===void 0?{}:{isError:!e.ok},...e.durationMs===void 0?{}:{toolDurationMs:e.durationMs}});break;case`marker`:i.push({id:n,role:`system`,content:e.text,timestamp:t,isError:e.level===`error`||void 0})}}return i}var Zr=new Set([`agent_spawned`,`agent_session_linked`,`agent_stopped`,`agent_error`,`delegate_started`,`delegate_completed`]);function Qr(e){return Zr.has(e)}function $r(e,t){return e.map((e,n)=>{let r=e.mediaType??`image/png`,i=e.data?`data:${r};base64,${e.data}`:e.url;return{id:`${t}_img_${n}`,kind:`image`,mediaType:r,bytes:e.data?Math.floor(e.data.length*3/4):0,...i?{dataUrl:i}:{}}})}function ei(e){let n=re(`session.start`,e.payload);n&&(N.getState().pushEvent(n),N.getState().setActive(!0));let r=e?.payload&&typeof e.payload==`object`?e.payload:{},a=r.sessionId;if(!a)return;ee.getState().end(a),`openSessionIds`in r&&ce(Array.isArray(r.openSessionIds)?r.openSessionIds.filter(e=>typeof e==`string`):[]),(r.appVersion||r.latestVersion)&&se({appVersion:String(r.appVersion??``),latestVersion:String(r.latestVersion??``),updateAvailable:!!r.updateAvailable}),Array.isArray(r.providerStatuses)&&je.getState().hydrate(r.providerStatuses.map(e=>({providerId:e.providerId,model:e.model,state:e.state,reason:e.lastErrorKind??e.state,updatedAt:e.lastFailureAt??Date.now(),stateExpiresAt:e.stateExpiresAt??void 0}))),r.needsSetup&&Ie(`setup`);let s={};r.projectRoot!==void 0&&(s.projectRoot=r.projectRoot),r.projectName!==void 0&&(s.projectName=r.projectName),r.cwd!==void 0&&(s.cwd=r.cwd),Object.keys(s).length>0&&se(s);let c=!o(a);i(a),fe(a),te(a),ie(a);let l=pe(a),u=de(a),f=t.getState(),p=u.data.session,h=Yr(r.provider),_=Yr(r.model),y=h||p?.provider||f.provider||``,b=_||p?.model||f.model||``,S=typeof r.startedAt==`string`?Date.parse(r.startedAt):NaN,C=Number.isFinite(S)?S:Date.now(),w=!!r.isRunning,ne=ti(a),ae=r.replayReason===`focus`,ue=!c&&(ae||v()!==a),E=c||r.reset===!0&&!ue;E?(u.startSession({id:a,startedAt:C,model:b,provider:y}),En.for(a).getState().clear()):u.setSession({id:a,startedAt:p?.startedAt??C,model:b,provider:y,...p?.title?{title:p.title}:{}}),u.setEnvRates({maxContext:r.maxContext,mode:r.mode,contextMode:r.contextMode,inputCost:r.inputCost,outputCost:r.outputCost,cacheReadCost:r.cacheReadCost,reasoningEffortLevels:r.reasoningEffortLevels,hasReasoningEffortKey:`reasoningEffortLevels`in r,effortSupported:r.effortSupported===!0||r.effortSupported===!1?r.effortSupported:void 0,hasEffortSupportedKey:`effortSupported`in r,projectReasoningEffort:typeof r.projectReasoningEffort==`string`?r.projectReasoningEffort:void 0,hasProjectEffortKey:`projectReasoningEffort`in r});let D=r.replayMessages,O=Array.isArray(D)&&D.length>0,k=O?Xr(D,r.replayMarkers??[],r.replayToolMeta??[]):[],A=l.messages.length>0,j=A&&(w||ue&&!ne);if(r.replayReason===`redisplay`&&A&&k.length>0){let e=l.messages[0]?.timestamp??0,t=k.filter(t=>t.timestamp<e);t.length>0&&l.setMessages([...t,...l.messages])}else k.length>0&&!j?l.setMessages(k):E&&r.reset===!0&&k.length===0&&!w&&l.clearMessages();w||l.clearThinking(),l.setLoading(w);let P=r.replayUsage;if(D&&P){let e=u.data,t=P.input??0,n=P.output??0,r=P.cacheRead??0,i=P.cacheWrite??0;u.patch({totalTokens:{input:t,output:n,cacheRead:r,cacheWrite:i},cost:((t+i)*e.inputCost+n*e.outputCost+r*e.cacheReadCost)/1e6})}let F=r.lastInputTokens;typeof F==`number`&&F>0&&u.patch({lastInputTokens:F});let I=r.clearedSessionId;if(I){let e=new Map;for(let[t,n]of T.getState().agents)n.sessionId!==I&&e.set(t,n);T.setState({agents:e})}Array.isArray(r.agentSessions)&&r.agentSessions.length>0&&T.getState().hydrateAgentSessions(r.agentSessions,a);let L=v(),me=L===`__unbound__`||!o(L),he=oe.getState(),ge=E&&!O&&!r.needsSetup&&!Be()&&!qr()?{currentView:R.getState().currentView,activeActivity:R.getState().activeActivity,sidebarOpen:R.getState().sidebarOpen}:null;!ne&&!me&&L!==a||(he.openTabIds.includes(a)?(m(a),le(a),d(a),he.markSeen(a)):he.openTab(a,{}),y&&b?t.getState().setConfig({provider:y,model:b}):y&&t.getState().setConfig({provider:y}),W(w?`running`:`ready`),E&&(!r.needsSetup&&Be()&&!qr()&&ye({sidebarOpen:!1}),R.getState().setSearchActiveMessageId(null),g.getState().setTreeLoading(!0,a),Rt(x.getState().projectRoot,a),M().send({type:`files.tree`,payload:{path:x.getState().cwd,sessionId:a}})),ge&&R.setState(ge),O&&!r.needsSetup&&!qr()&&(Be()?ye({sidebarOpen:!1}):R.getState().currentView!==`chat`&&Le(`chat`)),O&&Or()&&R.getState().setSidebarOpen(!1))}function ti(e){try{return M().consumeRequestedSwitch(e)}catch{return!1}}function Z(e,t){e.sessionId===v()&&t()}function ni(e){let t=A(e),n=D(e);if(!t||!n)return;j(e);let r=e.payload&&typeof e.payload==`object`?e.payload:{},i=Jr(r.content),a=r.usage,o=(a?.input??0)+(a?.cacheRead??0)+(a?.cacheWrite??0);if(o>0&&n.patch({lastInputTokens:o}),r.usage){n.updateUsage(r.usage,r.provider);let{inputCost:e,outputCost:t,cacheReadCost:i}=n.data,a=((r.usage.input??0)*e+(r.usage.cacheWrite??0)*e+(r.usage.output??0)*t+(r.usage.cacheRead??0)*i)/1e6;a>0&&n.addCost(a)}let c=s(r.stopReason);c&&t.setLoading(!1);let l=t.currentAssistantMessageId;if(l){b.flush(l);let e=t.messages.find(e=>e.id===l)?.content??``;i.trim()&&(e.trim()?i.startsWith(e)&&i.length>e.length&&t.updateMessage(l,{content:i}):t.updateMessage(l,{content:i})),t.finalizeMessage(l,{final:c}),r.usage&&(r.usage.output??0)>0&&t.updateMessage(l,{usage:r.usage})}else if(i.trim()){let e=t.addMessage({role:`assistant`,content:i,usage:r.usage&&(r.usage.output??0)>0?r.usage:void 0});t.finalizeMessage(e,{final:c})}t.setCurrentAssistantMessage(null),b.flush(`__thinking__:${t.sessionId}`),t.clearThinking()}function ri(e){let t=A(e);if(!t)return;j(e);let n=e.payload;b.flush(`__thinking__:${t.sessionId}`),t.flushThinkingLog(n.index),t.clearThinking();let r=D(e),i=r?.data.iteration;r&&i&&r.setIteration({index:n.index,max:i.max})}function ii(e){let t=A(e);if(!t)return;let n=e.payload;t.addMessage({role:`assistant`,content:`Iteration limit reached: ${n.currentIterations}/${n.currentLimit}.`,isError:!0}),Z(t,()=>f.warn(`Iteration limit reached (${n.currentIterations}/${n.currentLimit})`))}function ai(e){let t=A(e);if(!t)return;let n=e.payload,r=Math.max(0,Math.round(n.delayMs/100)/10);Z(t,()=>f.warn(`${n.providerId} retry ${n.attempt} after ${r}s (${n.status})`))}function oi(e){let t=A(e);if(!t)return;let n=e.payload;t.addMessage({role:`assistant`,content:[`Provider error from \`${n.providerId}\` (${n.status}).`,n.description,n.retryable?`_Retryable; WrongStack may recover automatically._`:``].filter(Boolean).join(`
15
-
16
- `),isError:!0}),Z(t,()=>f.error(`${n.providerId} provider error (${n.status})`))}function si(e,n,r){let i=D(n),a=i?.data.session;i&&a&&i.setSession({...a,provider:r.providerId,model:r.model}),e.sessionId===v()&&t.getState().setConfig({provider:r.providerId,model:r.model})}function ci(e){let t=A(e);if(!t)return;let r=e.payload,i=`${r.from.providerId}/${r.from.model}`,a=`${r.to.providerId}/${r.to.model}`;si(t,e,r.to),t.addMessage({role:`assistant`,content:`Provider fallback: \`${i}\` returned ${r.status}; switching to \`${a}\`${r.providerSwitched?` with provider change`:``}.`}),Z(t,()=>f.warn(`Fallback to ${a}`)),n(t.sessionId).pendingFallback&&t.setPendingFallback(null);let o=y.getState().pending;o&&t.sessionId===v()&&o.from.providerId===r.from.providerId&&o.from.model===r.from.model&&(typeof r.requestId==`string`&&r.requestId.length>0&&o.requestId!==r.requestId||y.getState().clear())}function li(e){let t=A(e);if(!t)return;let n=e.payload,r=`${n.to.providerId}/${n.to.model}`,i=n.from?`${n.from.providerId}/${n.from.model}`:``;si(t,e,n.to),t.addMessage({role:`assistant`,content:i?`Model switched: \`${i}\` → \`${r}\``:`Model switched to \`${r}\``}),Z(t,()=>f.info(`Model: ${r}`))}function ui(e){let t=A(e);if(!t)return;let n=e.payload,r={requestId:n.requestId,from:n.from,status:n.status,candidates:n.candidates,autoSwitchSeconds:n.autoSwitchSeconds,timestamp:Date.now()};if(t.setPendingFallback(r),t.sessionId===v()){y.getState().setPending(r);return}oe.getState().setAttention(t.sessionId,!0)}function di(e){let t=e.payload;je.getState().update({providerId:t.providerId,model:t.model,state:t.newState,reason:t.reason,updatedAt:t.timestamp,stateExpiresAt:t.stateExpiresAt,lastErrorKind:t.lastErrorKind,lastErrorStatus:t.lastErrorStatus??void 0,lastErrorMessage:t.lastErrorMessage??void 0,lastSessionId:t.lastSessionId??void 0,lastAgentId:t.lastAgentId??void 0});let n=`${t.providerId}/${t.model}`;t.newState===`blocked`&&t.oldState!==`blocked`?f.warn(`${n} entered the limit-reset waiting room`):t.newState===`healthy`&&t.oldState!==`healthy`&&f.success(`${n} recovered and rejoined model routing`)}function fi(e){let t=e.payload;if(t&&typeof t==`object`&&`error`in t){je.getState().setError(`Provider status tracking not available`);return}je.getState().applySnapshot(t)}function pi(e){let t=e.payload,n=Array.isArray(t?.lines)?t.lines:[],r=[];for(let e of n){if(!e||typeof e!=`object`)continue;let t=e,n=typeof t.providerId==`string`?t.providerId:``,i=typeof t.model==`string`?t.model:``,a=t.from,o=t.to;if(!n||!i||a!==`healthy`&&a!==`degraded`&&a!==`blocked`||o!==`healthy`&&o!==`degraded`&&o!==`blocked`)continue;let s=t.error??null;r.push({ts:typeof t.ts==`number`?t.ts:0,providerId:n,model:i,from:a,to:o,reason:typeof t.reason==`string`?t.reason:``,expiresAt:typeof t.expiresAt==`number`?t.expiresAt:null,error:s})}je.getState().setAudit(r)}function mi(e){let t=A(e);if(!t)return;let n=e.payload;t.addMessage({role:`assistant`,content:`Waiting room skipped \`${n.providerId}/${n.model}\`. ${n.lastError}`})}function hi(e){let t=A(e);if(!t)return;j(e);let n=e.payload;Z(t,()=>f.warn(`Provider stream event skipped: ${n.eventType}`)),t.addMessage({role:`assistant`,content:`Provider stream warning (${n.eventType}): ${n.message}`,isError:!0})}function gi(e){let t=A(e);if(!t)return;j(e);let n=e.payload,r=n.tools||n.kind||`assistant response`;if(n.action===`steer`){Z(t,()=>f.info(`Possible repetition noticed for ${r}; changing approach.`));return}t.addMessage({role:`assistant`,content:`Loop guard stopped the turn: ${r} made no progress ${n.repeatCount} time(s) (iteration ${n.iteration+1}).`,isError:!0}),Z(t,()=>f.warn(`Loop guard stopped the turn`))}function _i(e){let t=A(e);if(!t)return;j(e);let n=e.payload,r=Tr(n.task),i=n.subagentId??n.target,a=T.getState();a.applyEvent({kind:`spawned`,subagentId:i,name:n.target,description:r,sessionId:t.sessionId}),I.getState().recordDelegateStarted(t.sessionId,{target:n.target}),a.applyEvent({kind:`task_started`,subagentId:i,name:n.target,description:r,sessionId:t.sessionId}),a.pushAgentTimelineEntry({subagentId:i,agentName:n.target,content:r,kind:`status`,iteration:0,ts:new Date().toISOString(),status:`delegating`,sessionId:t.sessionId})}function vi(e){let t=A(e);if(!t)return;j(e);let n=e.payload,r=T.getState(),i=n.subagentId??n.target;r.applyEvent({kind:`task_completed`,subagentId:i,name:n.target,sessionId:t.sessionId,status:n.ok?`success`:n.status===`timeout`||n.status===`host_timeout`?`timeout`:`failed`,iterations:n.iterations,toolCalls:n.toolCalls,finalText:n.summary,...n.ok?{}:{failureReason:n.status??`failed`}}),I.getState().recordDelegateCompleted(t.sessionId,{target:n.target,ok:n.ok,toolCalls:n.toolCalls}),r.pushAgentTimelineEntry({subagentId:i,agentName:n.target,content:n.summary,kind:n.ok?`status`:`error`,iteration:n.iterations,ts:new Date().toISOString(),status:n.status??(n.ok?`completed`:`failed`),sessionId:t.sessionId}),n.ok||Z(t,()=>f.warn(`Delegate failed: ${n.target}`))}function yi(e){let t=A(e);if(!t)return;let n=e.payload;t.addMessage({role:`assistant`,content:`Session ${n.sessionId} is damaged: ${n.detail}`,isError:!0}),Z(t,()=>f.error(`Session damage detected`))}function bi(e){let t=A(e);if(!t)return;let n=e.payload;t.addMessage({role:`assistant`,content:`Session rewound to prompt #${n.toPromptIndex}. Removed ${n.removedEvents} event(s); reverted ${n.revertedFiles.length} file(s).`}),Z(t,()=>f.info(`Session rewound`))}function xi(e){let t=A(e);if(!t)return;let n=e.payload;Z(t,()=>f.success(`Checkpoint #${n.promptIndex} written (${n.fileCount} file(s))`))}function Si(e){if(!C(e))return;let t=e.payload;N.getState().pushEvent({id:`inflight_${Date.now()}`,kind:`session:start`,timestamp:Date.now(),source:`session`,target:`leader`,label:`In-flight: ${t.context}`,magnitude:1,data:t,raw:e.payload,flowGroup:`session`})}function Ci(e){C(e)&&e.payload.reason===`recovered`&&f.info(`Recovered previous in-flight operation`)}function wi(){typeof document<`u`&&document.dispatchEvent(new CustomEvent(`chat:session-end`))}function Ti(e){let t=e.payload,n=O(),r=n&&n!==`__unbound__`?n:null,i=(t.sessions??[]).map(e=>({...e,isCurrent:r?e.id===r:e.isCurrent}));a.getState().setEntries(i,t.error??null)}var Ei={"context.debug":ur,"key.operation_result":dr,"model.switch_result":fr,"context.compacted":pr,"compaction.failed":mr,"provider.response":ni,"iteration.completed":ri,"iteration.limit_reached":ii,"provider.retry":ai,"provider.error":oi,"provider.fallback":ci,"provider.fallback_pending":ui,"provider.model_switched":li,"provider.status_changed":di,"provider.active_blocked":mi,"provider.stream_error":hi,"tool.loop_detected":gi,"delegate.started":_i,"delegate.completed":vi,"trust.persisted":hr,"context.repaired":gr,"ctx.pct":_r,"ctx.max_context":vr,"token.threshold":yr,"token.cost_estimate_unavailable":br,"session.end":wi,"session.resume_progress":Cr,"session.damaged":yi,"session.rewound":bi,"checkpoint.written":xi,"in_flight.started":Si,"in_flight.ended":Ci,"context.modes.list":xr,"context.mode.changed":Sr,"sessions.list":Ti,"provider.status.snapshot":fi,"provider.audit.history":pi,error:wr};function Di(e){let t=e.payload;!t.jobId||!t.kind||V.getState().jobStarted(t.jobId,t.kind)}function Oi(e){let t=e.payload;!t.jobId||!t.phase||!Number.isFinite(t.completed)||!Number.isFinite(t.total)||V.getState().jobProgress(t.jobId,{phase:t.phase,completed:t.completed??0,total:t.total??0})}function ki(e){let t=e.payload;t.workspaceId&&V.getState().workspaceCompleted(t.workspaceId)}function Ai(e){let t=e.payload;t.snapshot&&V.getState().setSnapshot(t.snapshot,t.stale??!1)}function ji(e){let t=e.payload;t.reportId&&V.getState().reportReady(t.reportId)}function Mi(e){let t=e.payload;t.jobId&&V.getState().jobFailed(t.jobId,t.error??`TechStack job failed`)}function Ni(e){let t=e.payload;t.jobId&&V.getState().jobCancelled(t.jobId)}var Pi={"techstack.job.started":Di,"techstack.job.progress":Oi,"techstack.workspace.completed":ki,"techstack.snapshot.updated":Ai,"techstack.report.ready":ji,"techstack.job.failed":Mi,"techstack.job.cancelled":Ni};function Q(e){return A(e)??F()}function Fi(e){return D(e)??ne()}function Ii(e){let t=e.payload;Q(e).addMessage({role:`assistant`,content:[`🛠️ **Registered tools** (${t.tools.length})`,``,...t.tools.map(e=>`• \`${e.name}\`${e.params.length?` (${e.params.join(`, `)})`:``} — ${e.description||`_no description_`}`)].join(`
17
- `)})}function Li(e){let t=e.payload,n=t.text?.trim();Q(e).addMessage({role:`assistant`,content:t.error?`Memory read failed: ${t.error}`:n?`🧠 **Memory** \n\n${n}`:`🧠 **Memory**
18
-
19
- _empty — nothing remembered yet_`})}function Ri(e){let t=e.payload,n=Q(e);if(!t.success){n.addMessage({role:`assistant`,content:`❌ **Config Doctor failed**\n\n${t.error??`Unknown config error.`}`,isError:!0});return}if(!t.changed){n.addMessage({role:`assistant`,content:`✅ **Config Doctor** — active profile config is healthy.\n\n\`${t.configPath}\``});return}let r=t.changes.slice(0,40),i=[t.applied?`✅ **Config Doctor** — repaired ${t.changes.length} field(s).`:`🩺 **Config Doctor** — found ${t.changes.length} repairable field(s).`,``,...r.map(e=>`- \`${e.path}\` — ${e.action===`added`?`missing default`:`invalid shape; default required`}`)];t.changes.length>r.length&&i.push(`- _…and ${t.changes.length-r.length} more_`),i.push(``,`Config: \`${t.configPath}\``),t.applied&&t.backupPath&&i.push(`Backup: \`${t.backupPath}\``),t.applied||i.push(``,"Run `/doctor fix` to apply these repairs."),n.addMessage({role:`assistant`,content:i.join(`
20
- `)})}function zi(e){let t=e.payload;if(t.error){Q(e).addMessage({role:`assistant`,content:`❌ ${t.error}`});return}let n=t.memories??[],r=t.stats,i=[`## 🧠 SAGE`];if(r){let e=r.byStatus.active??0,t=r.byStatus.stale??0,n=r.byStatus.archived??0;i.push(`**Total:** ${r.total} · Active: ${e} · Stale: ${t} · Archived: ${n} · Graph edges: ${r.edges}`);let a=Object.entries(r.byKind).filter(([,e])=>e>0).map(([e,t])=>`${e}=${t}`).join(`, `);a&&i.push(`**Kinds:** ${a}`),i.push(``)}if(n.length===0)i.push(`_No entries to display._`);else{for(let e of n.slice(0,20)){let t=e.text.length>80?`${e.text.slice(0,78)}…`:e.text,n=e.tags.length>0?e.tags.map(e=>`\`${e}\``).join(` `):``,r=e.createdAt.slice(0,10);i.push(`- \`${e.id.slice(0,12)}…\` [${e.kind}|${e.status}] ${r} — ${t}${n?` ${n}`:``}`)}n.length>20&&i.push(`_…and ${n.length-20} more_`)}i.push(``),i.push("*Use `/memory` in the TUI or build a Memory Manager panel for full editing.*"),Q(e).addMessage({role:`assistant`,content:i.join(`
21
- `)})}function Bi(e){let t=e.payload;if(t.error){Q(e).addMessage({role:`assistant`,content:`❌ ${t.error}`});return}if(!t.memory){Q(e).addMessage({role:`assistant`,content:`❌ Memory not found.`});return}let n=t.memory,r=n.tags.length>0?n.tags.map(e=>`\`${e}\``).join(` `):`—`,i=n.anchors.length>0?n.anchors.map(e=>e.path??e.type).join(`, `):`—`,a=[`## 🧠 Memory: \`${n.id}\``,``,`**Text:** ${n.text}`,`**Kind:** \`${n.kind}\` · **Status:** \`${n.status}\``,`**Created:** ${n.createdAt.slice(0,10)} · **Updated:** ${n.updatedAt.slice(0,10)}`,`**Importance:** ${n.importance} · **Confidence:** ${n.confidence}`,`**Tags:** ${r}`,`**Anchors:** ${i}`];Q(e).addMessage({role:`assistant`,content:a.join(`
22
- `)})}function Vi(e){let t=e.payload;if(t.error){Q(e).addMessage({role:`assistant`,content:`❌ Update failed: ${t.error}`});return}if(t.memory){let n=String(t.memory.id??``);Q(e).addMessage({role:`assistant`,content:`✅ Memory \`${n}\` updated.`})}}function Hi(e){let t=e.payload;if(t.error){Q(e).addMessage({role:`assistant`,content:`❌ Failed to create memory: ${t.error}`});return}if(t.memory){let n=String(t.memory.id??``);Q(e).addMessage({role:`assistant`,content:`✅ Memory \`${n}\` created.`})}}function Ui(e){let t=e.payload,n=Q(e);if(t.error){n.addMessage({role:`assistant`,content:`❌ Recover failed: ${t.error}`});return}if(!t.memory)return;let r=String(t.memory.id??``);if(t.noop){let e=t.activeId??r;n.addMessage({role:`assistant`,content:`ℹ️ Nothing to recover — \`${e}\` is already the active version.`});return}n.addMessage({role:`assistant`,content:`✅ Memory \`${r}\` recovered.`})}function Wi(e){let t=e.payload,n=Q(e);if(t.error){n.addMessage({role:`assistant`,content:`❌ Candidate resolve failed: ${t.error}`});return}if(!t.candidate)return;let r=t.resolvedAction===`reject`?`rejected`:`accepted`;n.addMessage({role:`assistant`,content:`✅ Candidate \`${t.candidate.id}\` ${r}.`})}function Gi(e){let t=e.payload,n=Q(e);if(t.error){n.addMessage({role:`assistant`,content:`❌ Backfill failed: ${t.error}`});return}let r=`examined ${t.examined??0} · recoverable ${t.recoverable??0} · recovered ${t.recovered??0}`;n.addMessage({role:`assistant`,content:t.dryRun?`ℹ️ Backfill preview (dry-run) — ${r}. Re-run with apply to write.`:`✅ Backfill applied — ${r}.`})}function Ki(e){let t=e.payload;if(!t.enabled){Q(e).addMessage({role:`assistant`,content:`🎯 **Skills**
23
-
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}`),Q(e).addMessage({role:`assistant`,content:n.join(`
25
- `)})}function qi(e){let t=e.payload;Fi(e).setDroppedTools((t.maxTools??0)>0?t.droppedTools??0:0),Q(e).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
- `)})}function Ji(e){let t=e.payload,n=Math.floor(t.elapsedMs/1e3),r=n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m ${n%60}s`:`${Math.floor(n/3600)}h ${Math.floor(n%3600/60)}m`,i=Fi(e).data.lastInputTokens,a=t.currentRequest?.cacheRead??0;Fi(e).setCacheStats(t.cache?{readTokens:t.cache.readTokens,writeTokens:t.cache.writeTokens,hitRatio:t.cache.hitRatio,providers:t.cache.providers??[],coverageTokens:Math.max(0,Math.min(i,a))}:null),Q(e).addMessage({role:`assistant`,content:[`📈 **Session stats**`,``,`**Session:** \`${t.sessionId}\``,`**Provider/Model:** \`${t.provider}\` / \`${t.model}\``,`**Elapsed:** ${r}`,``,`**Usage:** ${t.usage.input.toLocaleString()} in · ${t.usage.output.toLocaleString()} out`,...t.cache&&t.cache.readTokens>0?[`**Cache:** ${t.cache.readTokens.toLocaleString()} read · ${t.cache.writeTokens.toLocaleString()} write · hit ratio ${(t.cache.hitRatio*100).toFixed(1)}%`]:[],`**Cost:** ${t.cost.toFixed(4)}`,``,`**Messages:** ${t.messages} · **Files read:** ${t.readFiles} · **Tools available:** ${t.tools}`,...t.sideEffectCount?[`**Side effects:** ⚠ ${t.sideEffectCount}`]:[]].join(`
27
- `)})}function Yi(e){let t=e.payload,n=D(e);n&&n.setTodos(t.todos??[])}function Xi(e){let t=e.payload;x.getState().setModes(t.modes.map(e=>({id:e.id,name:e.name,description:e.description}))),Fi(e).setEnvRates({mode:t.activeId})}function $(e){we.getState().handleResult(e.type,e.payload)}var Zi={...pt,...Ei,...yn,...on,...or,...Nt,...Pi,"config.doctor.result":Ri,"session.start":e=>{ei(e),Pt()},"specs.list":e=>{let t=e.payload;Ae.getState().setSpecs(t.specs??[])},"specs.detail":e=>{Ae.getState().setDetail(e.payload)},"sdd.board.snapshot":e=>{Oe.getState().setSnapshot(e.payload)},"sdd.board.list":e=>{let t=e.payload;Oe.getState().setBoards(t.boards??[])},"sdd.board.lifecycle_result":e=>{let t=e.payload,n=Oe.getState();n.setLifecycleResult({...t,at:Date.now()}),n.setDestroying(!1),t.op===`destroy`&&t.ok&&Ce.getState().reset()},"sdd.spec.snapshot":e=>{Ce.getState().setSnapshot(e.payload)},"sdd.spec.agent_text":e=>{Ce.getState().setAgentText(e.payload.text??``)},"sdd.spec.error":e=>{Ce.getState().setError(e.payload.message??`Error`)},"sdd.run.started":e=>{Ce.getState().setStartedRunId(e.payload.runId??null)},"goal.assess.result":e=>{let t=e.payload;Ee.getState().setResult({realistic:t.realistic,durationClaimed:t.durationClaimed,explanation:t.explanation,recommendedDuration:t.recommendedDuration,concerns:t.concerns,parseFailed:t.parseFailed,parseError:t.parseError,reqSeq:t.reqSeq??0})},"kanban.list":$,"kanban.get":$,"kanban.health":$,"kanban.workbench":$,"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.transition":$,"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.board.history":$,"kanban.run.start":$,"kanban.supervisor.status":$,"kanban.supervisor.audit":$,"kanban.task.verify":$,"kanban.task.verification_started":$,"kanban.task.verification_completed":$,"kanban.decomposition.approve":$,"kanban.decomposition.reject":$,"kanban.decomposition.resolved":$,"kanban.decomposition.applied":$,"tools.list":Ii,"memory.list":Li,"memory.sage.list":zi,"memory.sage.get":Bi,"memory.sage.update":Vi,"memory.sage.remember":Hi,"memory.sage.recover":Ui,"memory.sage.candidateResolve":Wi,"memory.sage.backfillRecoverable":Gi,"skills.list":Ki,"diag.get":qi,"stats.get":Ji,side_effects:e=>{let t=e.payload;De.for(k(e)).getState().setSideEffects(t.sideEffects??[])},"todos.updated":Yi,"todos.cleared":e=>{let t=D(e);t&&t.setTodos([])},"agent.timeline.message":e=>{let t=e.payload;T.getState().pushAgentTimelineEntry({subagentId:t.subagentId,sessionId:k(e)??void 0,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=>{let t=e.payload;T.getState().pushAgentTimelineEntry({subagentId:t.subagentId,sessionId:k(e)??void 0,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":Xi,"session.checkpoints":e=>{},"process.list":e=>{},"projects.list":e=>{},"projects.added":e=>{},"projects.selected":e=>{},"tool.disabled":e=>{},"tool.enabled":e=>{},"provider.response":e=>{ni(e)},"tool.progress":e=>{Tt(e);let t=be(e),n=z.getState();for(let e of t)n.recordFileEvent(e)},"tool.started":e=>{wt(e);let t=be(e);t.length>0&&z.getState().startActivities(t)},"tool.executed":e=>{Et(e);let t=e.payload;t.id&&z.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.tool_started":e=>{j(e);let t=be(e);t.length>0&&z.getState().startActivities(t)},"codemap.tool_executed":e=>{j(e);let t=e.payload;t.id&&z.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.file_event":e=>{let t=be(e),n=z.getState();for(let e of t)n.recordFileEvent(e)},"codemap.index_updated":e=>{let t=e.payload;Re.getState().notifyIndexUpdated(t?.at)},"file.saved":e=>{let t=be(e);if(t.length>0){let e=z.getState();for(let n of t)e.recordFileEvent(n)}},"memory.event":e=>{Kn(e);let t=be(e);if(t.length>0){let e=z.getState();for(let n of t)e.recordActivity(n)}}};function Qi(e){let t=[];for(let[n,r]of Object.entries(Zi))r&&t.push(e.on(n,t=>{e.consumeSuppressedChatEcho(n)||r(t)}));return()=>{for(let e of t)e()}}function $i(){let{autoConnect:e,wsUrl:n}=t(),r=t(e=>e.setWsStatus);(0,U.useEffect)(()=>{if(!e)return;it();let t=M(n),i=!1,a=t.onStatus(e=>{i||r(e)});t.connect().then(()=>{if(!i){try{let e=new URLSearchParams(window.location.search).get(`session`);e&&t.resumeSessionById(e)}catch{}t.getPrefs(ue()??void 0),t.getSystemPrompt()}}).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=Qi(t);return()=>{i=!0,o(),a()}},[e,n,r])}function ea(){let{wsUrl:e}=t(),n=M(e),r=(0,U.useCallback)((e,t,r=!1)=>n.isConnected?r?n.sendMessage(e,t,!0):n.sendMessage(e,t):null,[n]),i=(0,U.useCallback)(()=>n.sendAbort(),[n]),o=(0,U.useCallback)(e=>n.adviseTopic(e),[n]),s=(0,U.useCallback)(e=>n.sendMailboxMessage(e),[n]),{hideConfirm:c}=R(),l=(0,U.useCallback)((e,t)=>{n.sendConfirm(e,t),E(e),c()},[n,c]),u=(0,U.useCallback)((e,t)=>n.switchModel(e,t),[n]),d=(0,U.useCallback)(()=>n.listProviders(),[n]),f=(0,U.useCallback)(e=>n.listProviderModels(e),[n]),p=(0,U.useCallback)(()=>n.listSavedProviders(),[n]),m=(0,U.useCallback)((e,t,r)=>n.addKey(e,t,r),[n]),h=(0,U.useCallback)((e,t,r)=>n.updateKey(e,t,r),[n]),g=(0,U.useCallback)((e,t)=>n.deleteKey(e,t),[n]),_=(0,U.useCallback)((e,t)=>n.setActiveKey(e,t),[n]),v=(0,U.useCallback)((e,t,r,i,a,o)=>n.addProvider(e,t,r,i,a,o),[n]),ee=(0,U.useCallback)(e=>n.removeProvider(e),[n]),te=(0,U.useCallback)(e=>{a.getState().setLoading(!0),n.listSessions(e)},[n]),y=(0,U.useCallback)(e=>n.deleteSession(e),[n]),b=(0,U.useCallback)((e,t)=>{a.getState().updateEntryName(e,t),n.renameSession(e,t)},[n]),x=(0,U.useCallback)(e=>n.resumeSessionById(e),[n]),S=(0,U.useCallback)(()=>n.newSession(),[n]),C=(0,U.useCallback)(e=>n.inspectSession(e),[n]),w=(0,U.useCallback)(()=>n.saveSession(),[n]),ne=(0,U.useCallback)(e=>n.listTools(e),[n]),re=(0,U.useCallback)(e=>n.listMemory(e),[n]),ie=(0,U.useCallback)(e=>n.listSageMemories(e),[n]),ae=(0,U.useCallback)((e,t)=>n.listSageMemoriesPage(e,t),[n]),oe=(0,U.useCallback)((e,t)=>n.searchSageBreakdown(e,t),[n]),se=(0,U.useCallback)((e,t)=>n.listMemoryCandidates(e,t),[n]),ce=(0,U.useCallback)((e,t)=>n.getSage(e,t),[n]),le=(0,U.useCallback)((e,t,r)=>n.getSageGraph(e,t,r),[n]),ue=(0,U.useCallback)((e,t,r)=>n.updateSage(e,t,r),[n]),T=(0,U.useCallback)((e,t)=>n.deleteSage(e,t),[n]),D=(0,U.useCallback)((e,t)=>n.rememberSage(e,t),[n]),O=(0,U.useCallback)((e,t)=>n.findMemoriesForFile(e,t),[n]),k=(0,U.useCallback)((e,t)=>n.recoverSage(e,t),[n]),de=(0,U.useCallback)((e,t)=>n.resolveMemoryCandidate(e,t),[n]),A=(0,U.useCallback)((e,t)=>n.backfillRecoverable(e,t),[n]),j=(0,U.useCallback)(e=>n.listSkills(e),[n]),N=(0,U.useCallback)(e=>n.getDiag(e),[n]),fe=(0,U.useCallback)(e=>n.getStats(e),[n]),pe=(0,U.useCallback)(()=>n.getPlan(),[n]),P=(0,U.useCallback)(()=>n.listModes(),[n]),F=(0,U.useCallback)(e=>n.switchMode(e),[n]),I=(0,U.useCallback)(()=>n.listContextModes(),[n]),L=(0,U.useCallback)(e=>n.switchContextMode(e),[n]),me=(0,U.useCallback)(e=>n.createContextMode(e),[n]),he=(0,U.useCallback)((e,t)=>n.updateContextMode(e,t),[n]),ge=(0,U.useCallback)(e=>n.deleteContextMode(e),[n]),_e=(0,U.useCallback)(()=>n.repairContext(),[n]),ve=(0,U.useCallback)((e,t)=>n.refineModel(e,t),[n]),ye=(0,U.useCallback)(e=>n.switchAutonomy(e),[n]),z=(0,U.useCallback)(e=>n.updatePrefs(e),[n]);return{client:n,sendMessage:r,adviseTopic:o,sendAbort:i,sendMailboxMessage:s,sendConfirm:l,switchModel:u,listProviders:d,listProviderModels:f,listSavedProviders:p,addKey:m,updateKey:h,deleteKey:g,setActiveKey:_,addProvider:v,removeProvider:ee,listSessions:te,deleteSession:y,renameSession:b,resumeSession:x,newSession:S,inspectSession:C,saveSession:w,listTools:ne,listMemory:re,listSageMemories:ie,listSageMemoriesPage:ae,searchSageBreakdown:oe,listMemoryCandidates:se,getSage:ce,getSageGraph:le,updateSage:ue,deleteSage:T,rememberSage:D,findMemoriesForFile:O,recoverSage:k,resolveMemoryCandidate:de,backfillRecoverable:A,listSkills:j,getDiag:N,getStats:fe,getPlan:pe,listModes:P,switchMode:F,listContextModes:I,switchContextMode:L,createContextMode:me,updateContextMode:he,deleteContextMode:ge,repairContext:_e,toggleGoalAutonomous:(0,U.useCallback)(e=>{n.send({type:`goal.toggleAutonomous`,payload:{autonomous:e}})},[n]),startGoal:(0,U.useCallback)((e,t,r=!0)=>{n.send({type:`goal.start`,payload:{title:e,phases:t,autonomous:r}})},[n]),pauseGoal:(0,U.useCallback)(()=>{n.send({type:`goal.pause`,payload:{}})},[n]),resumeGoal:(0,U.useCallback)(()=>{n.send({type:`goal.resume`,payload:{}})},[n]),stopGoal:(0,U.useCallback)(()=>{n.send({type:`goal.stop`,payload:{}})},[n]),selectGoal:(0,U.useCallback)(e=>{n.send({type:`goal.selectPhase`,payload:{phaseId:e}})},[n]),switchAutonomy:ye,updatePrefs:z,refineModel:ve,stageGit:(0,U.useCallback)(e=>n.stageGit(e),[n]),unstageGit:(0,U.useCallback)(e=>n.unstageGit(e),[n]),discardGit:(0,U.useCallback)(e=>n.discardGit(e),[n]),commitGit:(0,U.useCallback)(e=>n.commitGit(e),[n])}}export{Pr as a,Fr as c,Dr as d,jn as f,Be as h,Rr as i,Ur as l,ct as m,$i as n,Ir as o,En as p,Lr as r,Nr as s,ea as t,jr as u};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Mt as t,da as n,fr as r,oo as i,ut as a}from"./vendor-enc0q-Va.js";import{a as o,i as s,n as c,o as l,r as u,t as d}from"./dialog-BTHxOi5z.js";import{t as f}from"./button-DNyYztcH.js";var p=e(i(),1);async function m(e=``){let t=await fetch(`${e}/api/vector-memory/status`,{credentials:`include`});if(!t.ok)throw Error(`status failed: HTTP ${t.status}`);return await t.json()}async function h(e,t={}){let n=new URLSearchParams;n.set(`q`,e),t.limit!==void 0&&n.set(`limit`,String(t.limit)),t.threshold!==void 0&&n.set(`threshold`,String(t.threshold)),t.similarity===!0&&n.set(`similarity`,`1`);let r=await fetch(`${t.baseUrl??``}/api/vector-memory/search?${n.toString()}`,{credentials:`include`});if(!r.ok)throw Error(`search failed: HTTP ${r.status}`);return await r.json()}function g(e,t=170){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t-1)}…`:n}async function _(e,t={}){let n=await fetch(`${t.baseUrl??``}/api/vector-memory/store/${encodeURIComponent(e)}`,{method:`DELETE`,credentials:`include`});if(!n.ok)throw Error(`forget failed: HTTP ${n.status}`);return await n.json()}var v=a();function y({hit:e,busy:n,error:i,onCancel:a,onConfirm:p,onOpenChange:m}){return(0,v.jsx)(d,{open:e!==null,onOpenChange:m,children:(0,v.jsxs)(c,{className:`max-w-md`,children:[(0,v.jsxs)(o,{children:[(0,v.jsx)(`span`,{className:`mb-2 flex size-10 items-center justify-center border border-destructive/35 bg-destructive/10 text-destructive`,children:(0,v.jsx)(t,{className:`size-4`})}),(0,v.jsx)(l,{children:`Forget this vector memory?`}),(0,v.jsx)(u,{className:`leading-6`,children:`This removes the entry and its embedding from the vector memory store.`})]}),(0,v.jsx)(`div`,{className:`border border-border/70 bg-background/45 p-3 text-xs text-muted-foreground`,children:g(e?.text??``,180)}),i===void 0?null:(0,v.jsx)(`p`,{role:`alert`,className:`text-xs text-destructive`,children:i}),(0,v.jsxs)(s,{children:[(0,v.jsx)(f,{variant:`outline`,onClick:a,disabled:n,children:`Cancel`}),(0,v.jsxs)(f,{variant:`destructive`,onClick:p,disabled:n,children:[n?(0,v.jsx)(r,{className:`size-4 animate-spin`}):(0,v.jsx)(t,{className:`size-4`}),n?`Forgetting…`:`Forget memory`]})]})]})})}function b({baseUrl:e=``}={}){let[t,r]=(0,p.useState)(),[i,a]=(0,p.useState)(),[o,s]=(0,p.useState)(``),[c,l]=(0,p.useState)(10),[u,d]=(0,p.useState)(void 0),[f,b]=(0,p.useState)([]),[S,C]=(0,p.useState)(),[w,T]=(0,p.useState)(),[E,D]=(0,p.useState)(!1),[O,k]=(0,p.useState)(null),[A,j]=(0,p.useState)(null),[M,N]=(0,p.useState)(!1),[P,F]=(0,p.useState)(),[I,L]=(0,p.useState)(0),R=(0,p.useRef)(0),z=(0,p.useRef)(!1),B=(0,p.useRef)(e);(0,p.useEffect)(()=>{let t=!1;return B.current!==e&&(B.current=e,z.current=!1,r(void 0),a(void 0)),m(e).then(e=>{t||(z.current=!0,r(e),a(void 0))}).catch(e=>{t||z.current||(r(void 0),a(e instanceof Error?e.message:String(e)))}),()=>{t=!0}},[e,I]);let V=async()=>{let t=o.trim();if(t.length!==0){D(!0),T(void 0),k(null),j(null),F(void 0);try{let n=await h(t,{limit:c,...u===void 0?{}:{threshold:u},similarity:!0,baseUrl:e});b(n.hits),C(n.similarity)}catch(e){b([]),C(void 0),T(e instanceof Error?e.message:String(e))}finally{R.current+=1,D(!1)}}},H=async()=>{if(A===null)return;let t=A.id,n=R.current,r=f,i=S;N(!0),F(void 0);try{let{removed:a}=await _(t,{baseUrl:e});if(a){if(R.current===n){let e=r.findIndex(e=>e.id===t);b(r.filter(e=>e.id!==t)),i!==void 0&&e>=0&&C(i.filter((t,n)=>n!==e).map(t=>t.filter((t,n)=>n!==e))),O===t&&k(null)}j(e=>e?.id===t?null:e),L(e=>e+1)}else F(`The store reported the entry was not removed.`)}catch(e){F(e instanceof Error?e.message:String(e))}finally{N(!1)}};return i===void 0?t===void 0?(0,v.jsxs)(`div`,{className:`vector-memory-panel vector-memory-panel--loading`,children:[(0,v.jsx)(`h3`,{children:`Vector Memory`}),(0,v.jsx)(`p`,{children:`Loading status…`})]}):t.enabled?(0,v.jsxs)(`div`,{className:`vector-memory-panel`,children:[(0,v.jsx)(`h3`,{children:`Vector Memory`}),(0,v.jsxs)(`dl`,{className:`vector-memory-panel__status`,children:[(0,v.jsx)(`dt`,{children:`Active provider`}),(0,v.jsx)(`dd`,{children:(0,v.jsx)(`code`,{children:t.providerId??`unknown`})}),(0,v.jsx)(`dt`,{children:`Model`}),(0,v.jsx)(`dd`,{children:(0,v.jsx)(`code`,{children:t.modelId??`unknown`})}),(0,v.jsx)(`dt`,{children:`Dimensions`}),(0,v.jsx)(`dd`,{children:t.dimensions??`unknown`}),(0,v.jsx)(`dt`,{children:`Entries / vectors`}),(0,v.jsxs)(`dd`,{children:[t.entries??0,` / `,t.vectors??0]}),(0,v.jsx)(`dt`,{children:`Store path`}),(0,v.jsx)(`dd`,{children:(0,v.jsx)(`code`,{children:t.storePath??`(project root)`})}),(0,v.jsx)(`dt`,{children:`Model cache`}),(0,v.jsx)(`dd`,{children:(0,v.jsx)(`code`,{children:t.modelCacheDir??`(project root)`})}),(0,v.jsx)(`dt`,{children:`Providers`}),(0,v.jsx)(`dd`,{children:t.providers?.join(`, `)??``}),t.cache?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`dt`,{children:`Embedding cache`}),(0,v.jsxs)(`dd`,{children:[t.cache.entries,` entries · `,t.cache.providers,` provider`,t.cache.providers===1?``:`s`,` · `,t.cache.totalUseCount,` hits`]})]}):null]}),(0,v.jsxs)(`div`,{className:`vector-memory-panel__search`,children:[(0,v.jsx)(`label`,{htmlFor:`vm-query`,children:`Query`}),(0,v.jsx)(`input`,{id:`vm-query`,type:`text`,value:o,onChange:e=>s(e.currentTarget.value),onKeyDown:e=>{e.key===`Enter`&&V()},placeholder:`apple banana`}),(0,v.jsxs)(`div`,{className:`vector-memory-panel__controls`,children:[(0,v.jsxs)(`label`,{children:[`limit`,(0,v.jsx)(`input`,{type:`number`,min:1,max:50,value:c,onChange:e=>l(Math.max(1,Math.min(50,Number(e.currentTarget.value)||10)))})]}),(0,v.jsxs)(`label`,{children:[`threshold`,(0,v.jsx)(`input`,{type:`number`,min:0,max:1,step:.05,value:u??``,onChange:e=>{let t=e.currentTarget.value;d(t===``?void 0:Number.parseFloat(t))}})]}),(0,v.jsx)(`button`,{type:`button`,onClick:()=>void V(),disabled:E,children:E?`Searching…`:`Search`})]})]}),w===void 0?null:(0,v.jsxs)(`p`,{className:`vector-memory-panel__error`,children:[`Search error: `,w]}),(0,v.jsxs)(`ol`,{className:`vector-memory-panel__hits`,children:[f.map(e=>{let t=O===e.id;return(0,v.jsxs)(`li`,{className:t?`vector-memory-panel__hit vector-memory-panel__hit--expanded`:`vector-memory-panel__hit`,children:[(0,v.jsxs)(`button`,{type:`button`,className:`vector-memory-panel__hit-toggle`,"aria-expanded":t,onClick:()=>k(t?null:e.id),children:[(0,v.jsx)(n,{"aria-hidden":`true`,className:t?`vector-memory-panel__hit-chevron vector-memory-panel__hit-chevron--open`:`vector-memory-panel__hit-chevron`}),(0,v.jsx)(`span`,{className:`vector-memory-panel__hit-score`,children:e.score.toFixed(3)}),e.summary?(0,v.jsx)(`span`,{className:`vector-memory-panel__hit-summary`,children:e.summary}):null]}),(0,v.jsx)(`p`,{className:`vector-memory-panel__hit-text`,children:t?e.text:g(e.text)}),e.tags.length>0?(0,v.jsx)(`p`,{className:`vector-memory-panel__hit-tags`,children:e.tags.map(e=>(0,v.jsx)(`span`,{className:`vector-memory-panel__hit-tag`,children:e},e))}):null,t?(0,v.jsxs)(`div`,{className:`vector-memory-panel__hit-detail`,children:[(0,v.jsxs)(`dl`,{className:`vector-memory-panel__hit-fields`,children:[(0,v.jsx)(`dt`,{children:`id`}),(0,v.jsx)(`dd`,{children:(0,v.jsx)(`code`,{children:e.id})}),(0,v.jsx)(`dt`,{children:`score`}),(0,v.jsx)(`dd`,{children:e.score.toFixed(3)}),e.summary?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`dt`,{children:`summary`}),(0,v.jsx)(`dd`,{children:e.summary})]}):null]}),(0,v.jsx)(`div`,{className:`vector-memory-panel__hit-actions`,children:(0,v.jsx)(`button`,{type:`button`,className:`vector-memory-panel__forget`,onClick:()=>{F(void 0),j(e)},children:`Forget`})})]}):null]},e.id)}),f.length===0&&E===!1&&o.trim().length>0?(0,v.jsx)(`li`,{className:`vector-memory-panel__no-hits`,children:`No results.`}):null]}),S!==void 0&&S.length>1?(0,v.jsxs)(`div`,{className:`vector-memory-panel__heatmap`,"data-testid":`vector-memory-heatmap`,children:[(0,v.jsx)(`h4`,{children:`Result similarity`}),(0,v.jsx)(`p`,{className:`vector-memory-panel__heatmap-hint`,children:`Pairwise cosine similarity between returned hits. Darker cells = more similar. A bright diagonal with mostly dark off-diagonals means results form a tight cluster; a noisy grid means the search returned mixed topics.`}),(0,v.jsxs)(`div`,{className:`vector-memory-panel__heatmap-grid`,style:{gridTemplateColumns:`auto repeat(${S.length}, minmax(20px, 1fr))`},role:`table`,"aria-label":`Pairwise cosine similarity between returned hits`,children:[(0,v.jsx)(`div`,{className:`vector-memory-panel__heatmap-corner`}),S.map((e,t)=>(0,v.jsx)(`div`,{className:`vector-memory-panel__heatmap-col-label`,children:t+1},`col-${t}`)),S.map((e,t)=>(0,v.jsx)(x,{row:e,index:t},`row-${t}`))]})]}):null,(0,v.jsx)(y,{hit:A,busy:M,error:P,onCancel:()=>j(null),onConfirm:()=>void H(),onOpenChange:e=>{!e&&!M&&j(null)}})]}):(0,v.jsxs)(`div`,{className:`vector-memory-panel vector-memory-panel--disabled`,children:[(0,v.jsx)(`h3`,{children:`Vector Memory`}),(0,v.jsx)(`p`,{children:`Disabled — the webui-server host does not have a vector memory store wired.`})]}):(0,v.jsxs)(`div`,{className:`vector-memory-panel vector-memory-panel--error`,children:[(0,v.jsx)(`h3`,{children:`Vector Memory`}),(0,v.jsxs)(`p`,{children:[`Status unavailable: `,i]})]})}function x({row:e,index:t}){return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`div`,{className:`vector-memory-panel__heatmap-row-label`,children:t+1}),e.map((e,n)=>{let r=t===n,i=Math.max(0,Math.min(1,e)),a=95-i*60,o=`hsl(220, ${r?0:35}%, ${a}%)`;return(0,v.jsx)(`div`,{className:r?`vector-memory-panel__heatmap-cell vector-memory-panel__heatmap-cell--diagonal`:`vector-memory-panel__heatmap-cell`,style:{background:o},role:`cell`,"aria-label":`hit ${t+1} vs hit ${n+1}: ${i.toFixed(2)}`,title:`hit ${t+1} ↔ hit ${n+1}: ${i.toFixed(3)}`,children:i>=.5?i.toFixed(2):``},`cell-${t}-${n}`)})]})}export{b as VectorMemoryPanel};