@wrongstack/webui 0.297.0 → 0.298.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 (530) hide show
  1. package/dist/assets/AgentRosterView-C8j2NuD1.js +11 -0
  2. package/dist/assets/{AnalyticsDashboard-CkceglT6.js → AnalyticsDashboard-D2_HYmYw.js} +1 -1
  3. package/dist/assets/AudienceMemoryPanel-SzXptIQj.js +3 -0
  4. package/dist/assets/{ChangesView-DouwIaDk.js → ChangesView-D31wr7_h.js} +1 -1
  5. package/dist/assets/ChronicleDashboard-B7P4f1hr.js +1 -0
  6. package/dist/assets/CodeEditor-BRDwx8Y-.js +1 -0
  7. package/dist/assets/CodeMap-uabWaeJH.js +1 -0
  8. package/dist/assets/{CronJobsPanel-CAImDL8t.js → CronJobsPanel-C9shS0P2.js} +1 -1
  9. package/dist/assets/DeadCodeScanPanel-CHud_Ugp.js +2 -0
  10. package/dist/assets/{DebugDashboard-DLNPZIEI.js → DebugDashboard-DmqpGXnx.js} +1 -1
  11. package/dist/assets/{DesignGalleryView-D0azMq2e.js → DesignGalleryView-CnAHpKa1.js} +1 -1
  12. package/dist/assets/GoalView-DaptZIKr.js +1 -0
  13. package/dist/assets/KanbanView-DA5Ulb8C.js +3 -0
  14. package/dist/assets/MailboxDetailView-CQtHeWVs.js +1 -0
  15. package/dist/assets/MemoryManager-BWuSS0Pg.js +1 -0
  16. package/dist/assets/{ModelPicker-CN-UD3lc.js → ModelPicker-Dt0wCi90.js} +1 -1
  17. package/dist/assets/OfficeMapPanel-CUNRI3X7.js +4 -0
  18. package/dist/assets/{ProcessMonitor-ButM8C0T.js → ProcessMonitor-Dq760Vqm.js} +1 -1
  19. package/dist/assets/QueuePanel-ZcJliKcY.js +1 -0
  20. package/dist/assets/{RefreshDebugView-DVvWsh9A.js → RefreshDebugView-SivBV0LN.js} +1 -1
  21. package/dist/assets/SageTabs-CGrc4PuM.js +2 -0
  22. package/dist/assets/SddHub-oU47Hv8Y.js +2 -0
  23. package/dist/assets/SessionsDashboard-Dp-Mr844.js +1 -0
  24. package/dist/assets/SetupScreen-BWA_dTU0.js +1 -0
  25. package/dist/assets/SkillDetailView-DmRgd_uu.js +3 -0
  26. package/dist/assets/{SpecsView-BJs_okSx.js → SpecsView-CzYtHNbj.js} +1 -1
  27. package/dist/assets/TechStackView-p9PKj9pQ.js +1 -0
  28. package/dist/assets/{TerminalPanel-W2V0X7b9.js → TerminalPanel-BRSYloOD.js} +1 -1
  29. package/dist/assets/{Toaster-CbcX_Cou.js → Toaster-Bd6ckyrP.js} +1 -1
  30. package/dist/assets/{activity-CbbZyUMG.js → activity-Bo6DncWg.js} +1 -1
  31. package/dist/assets/{activity-C4z6-WoZ.js → activity-C34aPcFU.js} +1 -1
  32. package/dist/assets/{activity-B4Ngvkan.js → activity-CBdzUJQ_.js} +1 -1
  33. package/dist/assets/{activity-B8uejnae.js → activity-CLYyxeC6.js} +1 -1
  34. package/dist/assets/{activity-qoJ3grs0.js → activity-Cv_EIWjY.js} +1 -1
  35. package/dist/assets/{activity-B5MvPWYV.js → activity-Wr0_Gb8A.js} +1 -1
  36. package/dist/assets/{activity-D57y5l1T.js → activity-kCY0dGRC.js} +1 -1
  37. package/dist/assets/{button-uGqXvobk.js → button-Clh96jMK.js} +1 -1
  38. package/dist/assets/chat-store-CWhuSNod.js +17 -0
  39. package/dist/assets/{codemap-activity-store-DP3mCZu1.js → codemap-activity-store-C1XWbXeZ.js} +1 -1
  40. package/dist/assets/codemap-index-store-DDT3gP6t.js +1 -0
  41. package/dist/assets/common-BfVFjVhf.js +1 -0
  42. package/dist/assets/common-C5hY-d_0.js +1 -0
  43. package/dist/assets/{dialog-CT1PTjzK.js → dialog-DYJUM0p1.js} +1 -1
  44. package/dist/assets/{empty-state-CdyXy96A.js → empty-state-BV-Y8c35.js} +1 -1
  45. package/dist/assets/{i18n-1BkaqMgr.js → i18n-DOuSY1L8.js} +2 -2
  46. package/dist/assets/index-C09Opuro.css +1 -0
  47. package/dist/assets/index-DxZTscTk.js +132 -0
  48. package/dist/assets/{input-B-VCX2sG.js → input-CW-Yw2Wu.js} +1 -1
  49. package/dist/assets/{mailbox-store-DVoNbOZr.js → mailbox-store-_8voaug1.js} +1 -1
  50. package/dist/assets/markdown-sSmz-Ua_.js +44 -0
  51. package/dist/assets/{progress-ring-CFOvGxw7.js → progress-ring-DPV94fM-.js} +1 -1
  52. package/dist/assets/{roster-ws-DXm0krqH.js → roster-ws-q8Cp6us7.js} +1 -1
  53. package/dist/assets/session-store-D4JWBP5w.js +1 -0
  54. package/dist/assets/settings-B9EPDhAL.js +1 -0
  55. package/dist/assets/{settings-DEmKlLmn.js → settings-BBNOO9wC.js} +1 -1
  56. package/dist/assets/settings-BoXoFVdx.js +1 -0
  57. package/dist/assets/settings-CkXKHC77.js +1 -0
  58. package/dist/assets/settings-DWIDXI2K.js +1 -0
  59. package/dist/assets/settings-r_KOGrbF.js +1 -0
  60. package/dist/assets/settings-tyKsHhya.js +1 -0
  61. package/dist/assets/{shared-jvJxtKc5.js → shared-DidGznBo.js} +1 -1
  62. package/dist/assets/stores-CpZiOiOP.js +7 -0
  63. package/dist/assets/ui-store-C-oyG_br.js +1 -0
  64. package/dist/assets/useWebSocket-BTXT0rOW.js +28 -0
  65. package/dist/assets/{utils-CN2sfDVP.js → utils-DxDx8yib.js} +1 -1
  66. package/dist/assets/{vendor-2VBBgNb5.js → vendor-BTDGplXK.js} +28 -28
  67. package/dist/assets/{view-navigation-Cgy5xh9q.js → view-navigation-BRtuAwZo.js} +1 -1
  68. package/dist/assets/ws-client-DqIqzkfU.js +1 -0
  69. package/dist/components/ChatInput/refine-panel-host.d.ts +9 -1
  70. package/dist/components/DeadCodeScanPanel/DeadCodeScanPanel.d.ts +1 -3
  71. package/dist/components/PanelSuspense.d.ts +8 -0
  72. package/dist/components/SettingsPanel/DisplaySection.d.ts +20 -0
  73. package/dist/components/ViewRouter.d.ts +12 -0
  74. package/dist/components/WorkbenchTopbar.d.ts +53 -0
  75. package/dist/components/codemap-model.d.ts +2 -0
  76. package/dist/hooks/useViewport.d.ts +38 -0
  77. package/dist/hooks/useWebSocket.d.ts +1 -0
  78. package/dist/index.html +24 -25
  79. package/dist/index.js +55560 -54349
  80. package/dist/lib/view-navigation.d.ts +1 -1
  81. package/dist/lib/ws-client.d.ts +16 -8
  82. package/dist/providers.json +10 -0
  83. package/dist/stores/chat-store.d.ts +36 -3
  84. package/dist/stores/config-store.d.ts +0 -2
  85. package/dist/stores/local-prefs.d.ts +20 -0
  86. package/dist/stores/session-store.d.ts +3 -0
  87. package/dist/stores/ui-store.d.ts +8 -1
  88. package/dist/types/client-message.d.ts +1 -0
  89. package/dist/types/connections.d.ts +7 -1
  90. package/dist/types/system.d.ts +4 -0
  91. package/package.json +8 -7
  92. package/dist/App.d.ts.map +0 -1
  93. package/dist/assets/AgentRosterView-Cje2NBtU.js +0 -11
  94. package/dist/assets/AudienceMemoryPanel-DB-8ISNP.js +0 -3
  95. package/dist/assets/ChronicleDashboard-B4Khm6hu.js +0 -1
  96. package/dist/assets/CodeEditor-CrKbA5s8.js +0 -1
  97. package/dist/assets/CodeMap-Dz8yNlUe.js +0 -1
  98. package/dist/assets/DeadCodeScanPanel-C5ehBTQF.js +0 -2
  99. package/dist/assets/GoalView-gtQRK78W.js +0 -1
  100. package/dist/assets/KanbanView-BXKe19EI.js +0 -3
  101. package/dist/assets/LazyMarkdown-BGwFjYKr.js +0 -3
  102. package/dist/assets/MailboxDetailView-D4fXipos.js +0 -1
  103. package/dist/assets/MemoryManager-D_rquas9.js +0 -1
  104. package/dist/assets/OfficeMapPanel-CJFrTNmg.js +0 -4
  105. package/dist/assets/QueuePanel-C5oihwYM.js +0 -1
  106. package/dist/assets/SageTabs-C9vAgvCD.js +0 -2
  107. package/dist/assets/SddHub-D_nsWjuM.js +0 -2
  108. package/dist/assets/SessionsDashboard-DdwU3Ma5.js +0 -1
  109. package/dist/assets/SetupScreen-CQCfLdPI.js +0 -1
  110. package/dist/assets/SkillDetailView-mVxi-9jo.js +0 -3
  111. package/dist/assets/TechStackView-BZ4M7TYc.js +0 -1
  112. package/dist/assets/chat-store-CM1dMeuY.js +0 -17
  113. package/dist/assets/codemap-index-store-DyAe3ZYJ.js +0 -1
  114. package/dist/assets/common-D8_r1x8x.js +0 -1
  115. package/dist/assets/common-suUxW9sA.js +0 -1
  116. package/dist/assets/index-BPfIz78e.js +0 -131
  117. package/dist/assets/index-BlceaIyu.css +0 -1
  118. package/dist/assets/markdown-L6DLSM7f.js +0 -44
  119. package/dist/assets/session-store-BsNYnfOc.js +0 -1
  120. package/dist/assets/settings-C5F2tQ7C.js +0 -1
  121. package/dist/assets/settings-Cdk8i_p6.js +0 -1
  122. package/dist/assets/settings-D6wFOw5n.js +0 -1
  123. package/dist/assets/settings-DCEOkxYE.js +0 -1
  124. package/dist/assets/settings-DsflqNn0.js +0 -1
  125. package/dist/assets/settings-skShEZ2B.js +0 -1
  126. package/dist/assets/stores-mpa0202y.js +0 -6
  127. package/dist/assets/ui-store-CS-njcmT.js +0 -1
  128. package/dist/assets/useWebSocket-Dh3aAFDE.js +0 -28
  129. package/dist/assets/ws-client-WVGn8ORh.js +0 -1
  130. package/dist/components/AgentOfficeDetails.d.ts.map +0 -1
  131. package/dist/components/AgentOfficeView/model.d.ts.map +0 -1
  132. package/dist/components/AgentOfficeView.d.ts.map +0 -1
  133. package/dist/components/AgentRosterCatalogTab.d.ts.map +0 -1
  134. package/dist/components/AgentRosterChrome.d.ts.map +0 -1
  135. package/dist/components/AgentRosterLiveTab.d.ts.map +0 -1
  136. package/dist/components/AgentRosterSelfLearningTab.d.ts.map +0 -1
  137. package/dist/components/AgentRosterView.d.ts.map +0 -1
  138. package/dist/components/AgentRuntimePolicyEditor.d.ts.map +0 -1
  139. package/dist/components/AgentTranscript.d.ts.map +0 -1
  140. package/dist/components/AgentsMonitor.d.ts.map +0 -1
  141. package/dist/components/AgentsPage/format.d.ts.map +0 -1
  142. package/dist/components/AgentsPage.d.ts.map +0 -1
  143. package/dist/components/AnalyticsDashboard.d.ts.map +0 -1
  144. package/dist/components/AudienceMemoryPanel.d.ts.map +0 -1
  145. package/dist/components/AutonomyPicker.d.ts.map +0 -1
  146. package/dist/components/AvailabilityCalendarEditor.d.ts.map +0 -1
  147. package/dist/components/BoardView.d.ts.map +0 -1
  148. package/dist/components/ChangesView.d.ts.map +0 -1
  149. package/dist/components/ChatInput/code-detect.d.ts.map +0 -1
  150. package/dist/components/ChatInput/draft-token-counter.d.ts.map +0 -1
  151. package/dist/components/ChatInput/file-mention-picker.d.ts.map +0 -1
  152. package/dist/components/ChatInput/image-attach-control.d.ts.map +0 -1
  153. package/dist/components/ChatInput/image-attachments.d.ts.map +0 -1
  154. package/dist/components/ChatInput/queued-messages.d.ts.map +0 -1
  155. package/dist/components/ChatInput/refine-panel-host.d.ts.map +0 -1
  156. package/dist/components/ChatInput/slash-commands.d.ts.map +0 -1
  157. package/dist/components/ChatInput/slash-popup.d.ts.map +0 -1
  158. package/dist/components/ChatInput/slash-routing.d.ts.map +0 -1
  159. package/dist/components/ChatInput/stop-controls.d.ts.map +0 -1
  160. package/dist/components/ChatInput/use-paste-drop.d.ts.map +0 -1
  161. package/dist/components/ChatInput.d.ts.map +0 -1
  162. package/dist/components/ChatView/ThinkingBubble.d.ts.map +0 -1
  163. package/dist/components/ChatView/index.d.ts.map +0 -1
  164. package/dist/components/ChatView/utils.d.ts.map +0 -1
  165. package/dist/components/ChatView.d.ts.map +0 -1
  166. package/dist/components/CheckpointTimeline.d.ts.map +0 -1
  167. package/dist/components/ChipMultiSelect.d.ts.map +0 -1
  168. package/dist/components/ChronicleDashboard.d.ts.map +0 -1
  169. package/dist/components/ChroniclePipelineStrip.d.ts.map +0 -1
  170. package/dist/components/CodeEditor.d.ts.map +0 -1
  171. package/dist/components/CodeMap.d.ts.map +0 -1
  172. package/dist/components/CodeMapActivityDrawer.d.ts.map +0 -1
  173. package/dist/components/CodeMapActivityHelpers.d.ts.map +0 -1
  174. package/dist/components/CodeMapActivityStreamPanel.d.ts.map +0 -1
  175. package/dist/components/CodeMapCanvasSurface.d.ts.map +0 -1
  176. package/dist/components/CodeMapCanvasToolbar.d.ts.map +0 -1
  177. package/dist/components/CodeMapConfig.d.ts.map +0 -1
  178. package/dist/components/CodeMapDirectoryTree.d.ts.map +0 -1
  179. package/dist/components/CodeMapFlowState.d.ts.map +0 -1
  180. package/dist/components/CodeMapHeader.d.ts.map +0 -1
  181. package/dist/components/CodeMapLiveOverlay.d.ts.map +0 -1
  182. package/dist/components/CodeMapRelationInspector.d.ts.map +0 -1
  183. package/dist/components/CodeMapRelations.d.ts.map +0 -1
  184. package/dist/components/CodeMapSearchResults.d.ts.map +0 -1
  185. package/dist/components/CodeMapSelectedNodeSummary.d.ts.map +0 -1
  186. package/dist/components/CodeMapTreeSidebar.d.ts.map +0 -1
  187. package/dist/components/CodeMapVisuals.d.ts.map +0 -1
  188. package/dist/components/CollabPanel.d.ts.map +0 -1
  189. package/dist/components/CommandPalette/export-utils.d.ts.map +0 -1
  190. package/dist/components/CommandPalette/index.d.ts.map +0 -1
  191. package/dist/components/CommandPalette.d.ts.map +0 -1
  192. package/dist/components/ConfirmDialog.d.ts.map +0 -1
  193. package/dist/components/ConfirmModal.d.ts.map +0 -1
  194. package/dist/components/ConnectionBanner.d.ts.map +0 -1
  195. package/dist/components/ContextBar.d.ts.map +0 -1
  196. package/dist/components/ContextBreakdownModal.d.ts.map +0 -1
  197. package/dist/components/ContextDashboard.d.ts.map +0 -1
  198. package/dist/components/ContextMemoryMonitor.d.ts.map +0 -1
  199. package/dist/components/ContextModePicker.d.ts.map +0 -1
  200. package/dist/components/CostChip.d.ts.map +0 -1
  201. package/dist/components/CronJobsPanel.d.ts.map +0 -1
  202. package/dist/components/CronTrigger.d.ts.map +0 -1
  203. package/dist/components/CustomRosterPanel.d.ts.map +0 -1
  204. package/dist/components/DeadCodeScanPanel/DeadCodeScanPanel.d.ts.map +0 -1
  205. package/dist/components/DebugDashboard.d.ts.map +0 -1
  206. package/dist/components/DependencyGraph.d.ts.map +0 -1
  207. package/dist/components/DesignGalleryView.d.ts.map +0 -1
  208. package/dist/components/DiffView.d.ts.map +0 -1
  209. package/dist/components/ErrorBoundary.d.ts.map +0 -1
  210. package/dist/components/FallbackEditor.d.ts.map +0 -1
  211. package/dist/components/FileActivityDrawer.d.ts.map +0 -1
  212. package/dist/components/FileExplorer.d.ts.map +0 -1
  213. package/dist/components/FilePicker.d.ts.map +0 -1
  214. package/dist/components/FileReferenceChip.d.ts.map +0 -1
  215. package/dist/components/FleetMonitor.d.ts.map +0 -1
  216. package/dist/components/FleetPanel.d.ts.map +0 -1
  217. package/dist/components/GoalPanel.d.ts.map +0 -1
  218. package/dist/components/GoalView.d.ts.map +0 -1
  219. package/dist/components/InspectorPanel.d.ts.map +0 -1
  220. package/dist/components/KanbanAgentRunPanel.d.ts.map +0 -1
  221. package/dist/components/KanbanBoardChrome.d.ts.map +0 -1
  222. package/dist/components/KanbanBoardSidebar.d.ts.map +0 -1
  223. package/dist/components/KanbanBoardState.d.ts.map +0 -1
  224. package/dist/components/KanbanBoundaryEditor.d.ts.map +0 -1
  225. package/dist/components/KanbanCleanerAlert.d.ts.map +0 -1
  226. package/dist/components/KanbanColumnView.d.ts.map +0 -1
  227. package/dist/components/KanbanDecompositionPanel.d.ts.map +0 -1
  228. package/dist/components/KanbanQueueHealthBar.d.ts.map +0 -1
  229. package/dist/components/KanbanRunControls.d.ts.map +0 -1
  230. package/dist/components/KanbanTaskActivityRecorder.d.ts.map +0 -1
  231. package/dist/components/KanbanTaskCompletionChecks.d.ts.map +0 -1
  232. package/dist/components/KanbanTaskFields.d.ts.map +0 -1
  233. package/dist/components/KanbanTaskInspector.d.ts.map +0 -1
  234. package/dist/components/KanbanTaskOptions.d.ts.map +0 -1
  235. package/dist/components/KanbanTaskTree.d.ts.map +0 -1
  236. package/dist/components/KanbanVerificationDashboard.d.ts.map +0 -1
  237. package/dist/components/KanbanView.d.ts.map +0 -1
  238. package/dist/components/KanbanViewModeTabs.d.ts.map +0 -1
  239. package/dist/components/MailboxDetailView.d.ts.map +0 -1
  240. package/dist/components/MailboxPanel.d.ts.map +0 -1
  241. package/dist/components/MemoryManager/DeleteMemoryDialog.d.ts.map +0 -1
  242. package/dist/components/MemoryManager/MemoryDetail.d.ts.map +0 -1
  243. package/dist/components/MemoryManager/MemoryDrawer.d.ts.map +0 -1
  244. package/dist/components/MemoryManager/MemoryEditor.d.ts.map +0 -1
  245. package/dist/components/MemoryManager/MemoryFilters.d.ts.map +0 -1
  246. package/dist/components/MemoryManager/MemoryGraph.d.ts.map +0 -1
  247. package/dist/components/MemoryManager/MemoryInjectorTrace.d.ts.map +0 -1
  248. package/dist/components/MemoryManager/MemoryLifecycleTrace.d.ts.map +0 -1
  249. package/dist/components/MemoryManager/MemoryList.d.ts.map +0 -1
  250. package/dist/components/MemoryManager/MemoryManagerEmpty.d.ts.map +0 -1
  251. package/dist/components/MemoryManager/SageTabs.d.ts.map +0 -1
  252. package/dist/components/MemoryManager/index.d.ts.map +0 -1
  253. package/dist/components/MemoryManager/selectors.d.ts.map +0 -1
  254. package/dist/components/MemoryManager/shared.d.ts.map +0 -1
  255. package/dist/components/MessageBubble/AttachmentGallery.d.ts.map +0 -1
  256. package/dist/components/MessageBubble/CopyButton.d.ts.map +0 -1
  257. package/dist/components/MessageBubble/ErrorBody.d.ts.map +0 -1
  258. package/dist/components/MessageBubble/LazyMarkdown.d.ts.map +0 -1
  259. package/dist/components/MessageBubble/StreamingMarkdown.d.ts.map +0 -1
  260. package/dist/components/MessageBubble/ToolInputView.d.ts.map +0 -1
  261. package/dist/components/MessageBubble/ToolLedgerCard.d.ts.map +0 -1
  262. package/dist/components/MessageBubble/index.d.ts.map +0 -1
  263. package/dist/components/MessageBubble/utils.d.ts.map +0 -1
  264. package/dist/components/MessageBubble.d.ts.map +0 -1
  265. package/dist/components/ModePicker.d.ts.map +0 -1
  266. package/dist/components/ModelPickDialog.d.ts.map +0 -1
  267. package/dist/components/ModelPicker.d.ts.map +0 -1
  268. package/dist/components/ModelSelectDialog.d.ts.map +0 -1
  269. package/dist/components/MonacoDiffView.d.ts.map +0 -1
  270. package/dist/components/NextStepsBar.d.ts.map +0 -1
  271. package/dist/components/OfficeMapCanvas/CanvasPanels.d.ts.map +0 -1
  272. package/dist/components/OfficeMapCanvas/Hud.d.ts.map +0 -1
  273. package/dist/components/OfficeMapCanvas/Overlays.d.ts.map +0 -1
  274. package/dist/components/OfficeMapCanvas/SelectedNodeDetailPanel.d.ts.map +0 -1
  275. package/dist/components/OfficeMapCanvas/edges.d.ts.map +0 -1
  276. package/dist/components/OfficeMapCanvas/nodes.d.ts.map +0 -1
  277. package/dist/components/OfficeMapCanvas/resolve.d.ts.map +0 -1
  278. package/dist/components/OfficeMapCanvas/use-recently-finished.d.ts.map +0 -1
  279. package/dist/components/OfficeMapCanvas/utils.d.ts.map +0 -1
  280. package/dist/components/OfficeMapCanvas.d.ts.map +0 -1
  281. package/dist/components/OfficeMapPanel.d.ts.map +0 -1
  282. package/dist/components/OfficeMapSettingsPanel.d.ts.map +0 -1
  283. package/dist/components/PhasePanel.d.ts.map +0 -1
  284. package/dist/components/PlanPanel.d.ts.map +0 -1
  285. package/dist/components/ProcessMonitor.d.ts.map +0 -1
  286. package/dist/components/PromptLibraryModal.d.ts.map +0 -1
  287. package/dist/components/ProviderWaitingRoom.d.ts.map +0 -1
  288. package/dist/components/QueuePanel.d.ts.map +0 -1
  289. package/dist/components/QuickModelSwitcher.d.ts.map +0 -1
  290. package/dist/components/QuickModelSwitcher.filter.d.ts.map +0 -1
  291. package/dist/components/RefinePanel.d.ts.map +0 -1
  292. package/dist/components/RefreshDebugView.d.ts.map +0 -1
  293. package/dist/components/SageMemoryCard.d.ts.map +0 -1
  294. package/dist/components/SddActivityFeed.d.ts.map +0 -1
  295. package/dist/components/SddBoardView.d.ts.map +0 -1
  296. package/dist/components/SddDestroyDialog.d.ts.map +0 -1
  297. package/dist/components/SddFlowGraph.d.ts.map +0 -1
  298. package/dist/components/SddHub.d.ts.map +0 -1
  299. package/dist/components/SddKanbanView.d.ts.map +0 -1
  300. package/dist/components/SddTaskDrawer.d.ts.map +0 -1
  301. package/dist/components/SddWizard.d.ts.map +0 -1
  302. package/dist/components/SearchOverlay.d.ts.map +0 -1
  303. package/dist/components/SendButton.d.ts.map +0 -1
  304. package/dist/components/SessionWatchPanel.d.ts.map +0 -1
  305. package/dist/components/SessionsDashboard.d.ts.map +0 -1
  306. package/dist/components/SettingsPanel/BasicSettingsTabs.d.ts.map +0 -1
  307. package/dist/components/SettingsPanel/BrainSection.d.ts.map +0 -1
  308. package/dist/components/SettingsPanel/ChimeraSettingsPanel.d.ts.map +0 -1
  309. package/dist/components/SettingsPanel/ClearAllowlistDialog.d.ts.map +0 -1
  310. package/dist/components/SettingsPanel/ConnectionsHealthSection.d.ts.map +0 -1
  311. package/dist/components/SettingsPanel/FallbacksSection.d.ts.map +0 -1
  312. package/dist/components/SettingsPanel/FleetSection.d.ts.map +0 -1
  313. package/dist/components/SettingsPanel/IntegrationsSection.d.ts.map +0 -1
  314. package/dist/components/SettingsPanel/MCPSection.d.ts.map +0 -1
  315. package/dist/components/SettingsPanel/ModelSection.d.ts.map +0 -1
  316. package/dist/components/SettingsPanel/OAuthLoginSection.d.ts.map +0 -1
  317. package/dist/components/SettingsPanel/PluginToggleList.d.ts.map +0 -1
  318. package/dist/components/SettingsPanel/PreferenceControls.d.ts.map +0 -1
  319. package/dist/components/SettingsPanel/PreferenceToggle.d.ts.map +0 -1
  320. package/dist/components/SettingsPanel/ProviderModelsPanel.d.ts.map +0 -1
  321. package/dist/components/SettingsPanel/ProviderModelsPanel.filter.d.ts.map +0 -1
  322. package/dist/components/SettingsPanel/ProviderSection.d.ts.map +0 -1
  323. package/dist/components/SettingsPanel/RoutingSection.d.ts.map +0 -1
  324. package/dist/components/SettingsPanel/SecuritySection.d.ts.map +0 -1
  325. package/dist/components/SettingsPanel/ShadowSection.d.ts.map +0 -1
  326. package/dist/components/SettingsPanel/ToolsSection.d.ts.map +0 -1
  327. package/dist/components/SettingsPanel/brain-section-options.d.ts.map +0 -1
  328. package/dist/components/SettingsPanel/index.d.ts.map +0 -1
  329. package/dist/components/SettingsPanel/local-presets.d.ts.map +0 -1
  330. package/dist/components/SettingsPanel/official-servers.d.ts.map +0 -1
  331. package/dist/components/SettingsPanel/settings-panel-reducers.d.ts.map +0 -1
  332. package/dist/components/SettingsPanel/undo-send-decision.d.ts.map +0 -1
  333. package/dist/components/SettingsPanel.d.ts.map +0 -1
  334. package/dist/components/SetupScreen/CustomProviderSection.d.ts.map +0 -1
  335. package/dist/components/SetupScreen/ModelEditor.d.ts.map +0 -1
  336. package/dist/components/SetupScreen/ProviderKeyCard.d.ts.map +0 -1
  337. package/dist/components/SetupScreen/key-operation.d.ts.map +0 -1
  338. package/dist/components/SetupScreen/popular-providers.d.ts.map +0 -1
  339. package/dist/components/SetupScreen/relative-time.d.ts.map +0 -1
  340. package/dist/components/SetupScreen/types.d.ts.map +0 -1
  341. package/dist/components/SetupScreen.d.ts.map +0 -1
  342. package/dist/components/ShortcutsOverlay.d.ts.map +0 -1
  343. package/dist/components/SideEffectTimeline.d.ts.map +0 -1
  344. package/dist/components/SidePanel/AgentsPanel.d.ts.map +0 -1
  345. package/dist/components/SidePanel/ChangesPanel.d.ts.map +0 -1
  346. package/dist/components/SidePanel/DesignStudioPanel.d.ts.map +0 -1
  347. package/dist/components/SidePanel/SessionList.d.ts.map +0 -1
  348. package/dist/components/SidePanel/SessionPanel.d.ts.map +0 -1
  349. package/dist/components/SidePanel/SkillsList.d.ts.map +0 -1
  350. package/dist/components/SidePanel/WorktreesPanel.d.ts.map +0 -1
  351. package/dist/components/SidePanel/index.d.ts.map +0 -1
  352. package/dist/components/SkillDetailView.d.ts.map +0 -1
  353. package/dist/components/SpecsView.d.ts.map +0 -1
  354. package/dist/components/TaskActivityTimeline.d.ts.map +0 -1
  355. package/dist/components/TaskBoard.d.ts.map +0 -1
  356. package/dist/components/TaskCard.d.ts.map +0 -1
  357. package/dist/components/TaskExecutionAttempts.d.ts.map +0 -1
  358. package/dist/components/TaskIntelligencePanel.d.ts.map +0 -1
  359. package/dist/components/TaskRiskPanel.d.ts.map +0 -1
  360. package/dist/components/TaskVerificationSection.d.ts.map +0 -1
  361. package/dist/components/TasksPanel.d.ts.map +0 -1
  362. package/dist/components/TechStackView/DependencyDetail.d.ts.map +0 -1
  363. package/dist/components/TechStackView/DependencyTable.d.ts.map +0 -1
  364. package/dist/components/TechStackView/FindingsPanel.d.ts.map +0 -1
  365. package/dist/components/TechStackView/TechStackToolbar.d.ts.map +0 -1
  366. package/dist/components/TechStackView/index.d.ts.map +0 -1
  367. package/dist/components/TechStackView/shared.d.ts.map +0 -1
  368. package/dist/components/TerminalPanel.d.ts.map +0 -1
  369. package/dist/components/ThemeProvider.d.ts.map +0 -1
  370. package/dist/components/Toaster.d.ts.map +0 -1
  371. package/dist/components/TodosPanel.d.ts.map +0 -1
  372. package/dist/components/ToolGroup.d.ts.map +0 -1
  373. package/dist/components/ToolResult.d.ts.map +0 -1
  374. package/dist/components/UpdateBanner.d.ts.map +0 -1
  375. package/dist/components/VerificationReportPanel.d.ts.map +0 -1
  376. package/dist/components/WatchMessageBubble.d.ts.map +0 -1
  377. package/dist/components/WelcomeScreen.d.ts.map +0 -1
  378. package/dist/components/WorkDashboard.d.ts.map +0 -1
  379. package/dist/components/WorkspaceDock.d.ts.map +0 -1
  380. package/dist/components/WorktreeGraph.d.ts.map +0 -1
  381. package/dist/components/WorktreeLanes.d.ts.map +0 -1
  382. package/dist/components/WorktreeOrphans.d.ts.map +0 -1
  383. package/dist/components/activity-bar/index.d.ts.map +0 -1
  384. package/dist/components/activity-bar/nav.d.ts.map +0 -1
  385. package/dist/components/agent-roster-data.d.ts.map +0 -1
  386. package/dist/components/agents/AgentDetailSection.d.ts.map +0 -1
  387. package/dist/components/agents/AgentRosterCard.d.ts.map +0 -1
  388. package/dist/components/agents/FleetSummaryBar.d.ts.map +0 -1
  389. package/dist/components/codemap-model.d.ts.map +0 -1
  390. package/dist/components/context-editor/ContextWindowEditor.d.ts.map +0 -1
  391. package/dist/components/dashboard-primitives.d.ts.map +0 -1
  392. package/dist/components/index.d.ts.map +0 -1
  393. package/dist/components/monaco-theme.d.ts.map +0 -1
  394. package/dist/components/toaster-helpers.d.ts.map +0 -1
  395. package/dist/components/ui/PickerCardList.d.ts.map +0 -1
  396. package/dist/components/ui/api-key-display.d.ts.map +0 -1
  397. package/dist/components/ui/badge.d.ts.map +0 -1
  398. package/dist/components/ui/button.d.ts.map +0 -1
  399. package/dist/components/ui/concurrency-gauge.d.ts.map +0 -1
  400. package/dist/components/ui/dialog.d.ts.map +0 -1
  401. package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
  402. package/dist/components/ui/empty-state.d.ts.map +0 -1
  403. package/dist/components/ui/event-timeline.d.ts.map +0 -1
  404. package/dist/components/ui/fleet-agent-row.d.ts.map +0 -1
  405. package/dist/components/ui/index.d.ts.map +0 -1
  406. package/dist/components/ui/input.d.ts.map +0 -1
  407. package/dist/components/ui/pagination.d.ts.map +0 -1
  408. package/dist/components/ui/progress-ring.d.ts.map +0 -1
  409. package/dist/components/ui/scroll-area.d.ts.map +0 -1
  410. package/dist/components/ui/sheet.d.ts.map +0 -1
  411. package/dist/components/ui/sparkline.d.ts.map +0 -1
  412. package/dist/components/ui/tabs.d.ts.map +0 -1
  413. package/dist/components/useAgentRosterData.d.ts.map +0 -1
  414. package/dist/components/useKanbanRegistrySessionIds.d.ts.map +0 -1
  415. package/dist/hooks/index.d.ts.map +0 -1
  416. package/dist/hooks/use-ws-handlers.d.ts.map +0 -1
  417. package/dist/hooks/useDesktopBridge.d.ts.map +0 -1
  418. package/dist/hooks/useF5Resilience.d.ts.map +0 -1
  419. package/dist/hooks/useFieldKeyboardNav.d.ts.map +0 -1
  420. package/dist/hooks/useFleetPolling.d.ts.map +0 -1
  421. package/dist/hooks/useGitInfo.d.ts.map +0 -1
  422. package/dist/hooks/useGlobalKeyboardShortcuts.d.ts.map +0 -1
  423. package/dist/hooks/useHorizontalScroll.d.ts.map +0 -1
  424. package/dist/hooks/useKanbanMeta.d.ts.map +0 -1
  425. package/dist/hooks/useMemoryForFile.d.ts.map +0 -1
  426. package/dist/hooks/usePagination.d.ts.map +0 -1
  427. package/dist/hooks/useProviderModels.d.ts.map +0 -1
  428. package/dist/hooks/useScrollPosition.d.ts.map +0 -1
  429. package/dist/hooks/useWebSocket.d.ts.map +0 -1
  430. package/dist/hooks/ws-handlers/chat-handlers.d.ts.map +0 -1
  431. package/dist/hooks/ws-handlers/coordinator-handlers.d.ts.map +0 -1
  432. package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts.map +0 -1
  433. package/dist/hooks/ws-handlers/fleet-handlers.d.ts.map +0 -1
  434. package/dist/hooks/ws-handlers/misc-handlers.d.ts.map +0 -1
  435. package/dist/hooks/ws-handlers/session-handlers.d.ts.map +0 -1
  436. package/dist/hooks/ws-handlers/techstack-handlers.d.ts.map +0 -1
  437. package/dist/hooks/ws-handlers.d.ts.map +0 -1
  438. package/dist/i18n/index.d.ts.map +0 -1
  439. package/dist/i18n/languages.d.ts.map +0 -1
  440. package/dist/index.css.map +0 -7
  441. package/dist/index.js.map +0 -7
  442. package/dist/lib/accent-colors.d.ts.map +0 -1
  443. package/dist/lib/agent-office.d.ts.map +0 -1
  444. package/dist/lib/agent-status.d.ts.map +0 -1
  445. package/dist/lib/chime.d.ts.map +0 -1
  446. package/dist/lib/color.d.ts.map +0 -1
  447. package/dist/lib/completion.d.ts.map +0 -1
  448. package/dist/lib/core-browser-shim.d.ts.map +0 -1
  449. package/dist/lib/default-prompt-pools.d.ts.map +0 -1
  450. package/dist/lib/desktop-host.d.ts.map +0 -1
  451. package/dist/lib/desktop-shell.d.ts.map +0 -1
  452. package/dist/lib/fallback-ref.d.ts.map +0 -1
  453. package/dist/lib/favicon.d.ts.map +0 -1
  454. package/dist/lib/file-icons.d.ts.map +0 -1
  455. package/dist/lib/goal.d.ts.map +0 -1
  456. package/dist/lib/index.d.ts.map +0 -1
  457. package/dist/lib/kanban-cleaner.d.ts.map +0 -1
  458. package/dist/lib/kanban-metadata.d.ts.map +0 -1
  459. package/dist/lib/kanban-verification.d.ts.map +0 -1
  460. package/dist/lib/model-calendar.d.ts.map +0 -1
  461. package/dist/lib/model-matrix-routes.d.ts.map +0 -1
  462. package/dist/lib/notify.d.ts.map +0 -1
  463. package/dist/lib/plugin-enablement.d.ts.map +0 -1
  464. package/dist/lib/roster-ws.d.ts.map +0 -1
  465. package/dist/lib/sage-block.d.ts.map +0 -1
  466. package/dist/lib/sdd-theme.d.ts.map +0 -1
  467. package/dist/lib/stream-coalescer.d.ts.map +0 -1
  468. package/dist/lib/terminal-dock.d.ts.map +0 -1
  469. package/dist/lib/tool-icon.d.ts.map +0 -1
  470. package/dist/lib/tool-summary.d.ts.map +0 -1
  471. package/dist/lib/utils.d.ts.map +0 -1
  472. package/dist/lib/view-navigation.d.ts.map +0 -1
  473. package/dist/lib/ws-client-actions.d.ts.map +0 -1
  474. package/dist/lib/ws-client-contracts.d.ts.map +0 -1
  475. package/dist/lib/ws-client-helpers.d.ts.map +0 -1
  476. package/dist/lib/ws-client-utils.d.ts.map +0 -1
  477. package/dist/lib/ws-client.d.ts.map +0 -1
  478. package/dist/main.d.ts.map +0 -1
  479. package/dist/protocol-compatibility.d.ts.map +0 -1
  480. package/dist/stores/auto-submit-streak.d.ts.map +0 -1
  481. package/dist/stores/chat-store.d.ts.map +0 -1
  482. package/dist/stores/codemap-activity-store.d.ts.map +0 -1
  483. package/dist/stores/codemap-index-store.d.ts.map +0 -1
  484. package/dist/stores/config-store.d.ts.map +0 -1
  485. package/dist/stores/context-editor-store.d.ts.map +0 -1
  486. package/dist/stores/coordinator-monitor-store.d.ts.map +0 -1
  487. package/dist/stores/cron-store.d.ts.map +0 -1
  488. package/dist/stores/file-reference-store.d.ts.map +0 -1
  489. package/dist/stores/file-store.d.ts.map +0 -1
  490. package/dist/stores/fleet-store.d.ts.map +0 -1
  491. package/dist/stores/git-changes-store.d.ts.map +0 -1
  492. package/dist/stores/git-info-store.d.ts.map +0 -1
  493. package/dist/stores/goal-assess-store.d.ts.map +0 -1
  494. package/dist/stores/goal-run-store.d.ts.map +0 -1
  495. package/dist/stores/goal-state-store.d.ts.map +0 -1
  496. package/dist/stores/goal-store.d.ts.map +0 -1
  497. package/dist/stores/history-store.d.ts.map +0 -1
  498. package/dist/stores/index.d.ts.map +0 -1
  499. package/dist/stores/kanban-store.d.ts.map +0 -1
  500. package/dist/stores/local-prefs.d.ts.map +0 -1
  501. package/dist/stores/mailbox-store.d.ts.map +0 -1
  502. package/dist/stores/memory-injector-store.d.ts.map +0 -1
  503. package/dist/stores/memory-lifecycle-store.d.ts.map +0 -1
  504. package/dist/stores/monitor-store.d.ts.map +0 -1
  505. package/dist/stores/office-map-store.d.ts.map +0 -1
  506. package/dist/stores/provider-status-store.d.ts.map +0 -1
  507. package/dist/stores/sdd-board-store.d.ts.map +0 -1
  508. package/dist/stores/sdd-wizard-store.d.ts.map +0 -1
  509. package/dist/stores/session-store.d.ts.map +0 -1
  510. package/dist/stores/side-effect-store.d.ts.map +0 -1
  511. package/dist/stores/specs-store.d.ts.map +0 -1
  512. package/dist/stores/techstack-store.d.ts.map +0 -1
  513. package/dist/stores/types.d.ts.map +0 -1
  514. package/dist/stores/ui-store.d.ts.map +0 -1
  515. package/dist/stores/viz-store.d.ts.map +0 -1
  516. package/dist/stores/worktree-store.d.ts.map +0 -1
  517. package/dist/types/brain.d.ts.map +0 -1
  518. package/dist/types/chronicle.d.ts.map +0 -1
  519. package/dist/types/client-message.d.ts.map +0 -1
  520. package/dist/types/collab.d.ts.map +0 -1
  521. package/dist/types/connections.d.ts.map +0 -1
  522. package/dist/types/goal-kanban-worktree.d.ts.map +0 -1
  523. package/dist/types/protocol-core.d.ts.map +0 -1
  524. package/dist/types/runtime.d.ts.map +0 -1
  525. package/dist/types/sage.d.ts.map +0 -1
  526. package/dist/types/server-message.d.ts.map +0 -1
  527. package/dist/types/skills-design.d.ts.map +0 -1
  528. package/dist/types/system.d.ts.map +0 -1
  529. package/dist/types.d.ts.map +0 -1
  530. package/dist/types.js.map +0 -7
@@ -1 +1 @@
1
- import{n as e}from"./ui-store-CS-njcmT.js";var t={chat:`chat`,agents:`chat`,files:`files`,changes:`changes`,mailbox:`mailbox`,skills:`skill`,worktrees:`chat`,design:`design-gallery`,officemap:`officemap`},n={chat:`chat`,files:`files`,changes:`changes`,mailbox:`mailbox`,skill:`skills`,officemap:`officemap`,"design-gallery":`design`},r={1:`chat`,2:`files`,3:`changes`,4:`mailbox`,5:`skills`,6:`officemap`,0:`design`},i={chat:`Ctrl+1`,agents:``,files:`Ctrl+2`,changes:`Ctrl+3`,mailbox:`Ctrl+4`,skills:`Ctrl+5`,worktrees:`Ctrl+Shift+W`,design:`Ctrl+0`,officemap:`Ctrl+6`};function a(e){return t[e]??`chat`}function o(e){return i[e]??``}function s(t){let n=e.getState();n.currentView!==t&&n.setCurrentView(t)}function c(t){let n=e.getState();n.setSidebarOpen(!0),n.selectActivity(t),s(a(t))}function l(t){let n=e.getState();if(!n.sidebarOpen)n.setSidebarOpen(!0),n.selectActivity(t);else if(n.activeActivity===t){n.setSidebarOpen(!1);return}else n.activeActivity===`agents`&&n.setSidebarOpen(!0),n.selectActivity(t);s(a(t))}function u(t){let n=e.getState();if(n.currentView===t){c(`chat`);return}n.setSidebarOpen(!1),s(t)}function d(t){let r=n[t];if(r){c(r);return}e.getState().setSidebarOpen(!1),s(t)}export{o as a,l as i,d as n,c as o,u as r,r as t};
1
+ import{n as e}from"./ui-store-C-oyG_br.js";var t={chat:`chat`,agents:`chat`,files:`files`,changes:`changes`,mailbox:`mailbox`,skills:`skill`,worktrees:`chat`,design:`design-gallery`,officemap:`officemap`},n={chat:`chat`,files:`files`,changes:`changes`,mailbox:`mailbox`,skill:`skills`,officemap:`officemap`,"design-gallery":`design`},r={1:`chat`,2:`files`,3:`changes`,4:`mailbox`,5:`skills`,6:`officemap`,0:`design`},i={chat:`Ctrl+1`,agents:``,files:`Ctrl+2`,changes:`Ctrl+3`,mailbox:`Ctrl+4`,skills:`Ctrl+5`,worktrees:`Ctrl+Shift+W`,design:`Ctrl+0`,officemap:`Ctrl+6`};function a(e){return t[e]??`chat`}function o(e){return i[e]??``}function s(t){let n=e.getState();n.currentView!==t&&n.setCurrentView(t)}function c(t){let n=e.getState();n.setSidebarOpen(!0),n.selectActivity(t),s(a(t))}function l(t){let n=e.getState();if(!n.sidebarOpen)n.setSidebarOpen(!0),n.selectActivity(t);else if(n.activeActivity===t){n.setSidebarOpen(!1);return}else n.activeActivity===`agents`&&n.setSidebarOpen(!0),n.selectActivity(t);s(a(t))}function u(t){let n=e.getState();if(n.currentView===t){c(`chat`);return}n.setSidebarOpen(!1),s(t)}function d(t){let r=n[t];if(r){c(r);return}e.getState().setSidebarOpen(!1),s(t)}export{o as a,l as i,d as n,c as o,u as r,r as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-QTnfLwEv.js";import{_a as t}from"./vendor-BTDGplXK.js";import{n}from"./utils-DxDx8yib.js";import{t as r}from"./session-store-D4JWBP5w.js";function i(e){typeof requestAnimationFrame==`function`?requestAnimationFrame(e):queueMicrotask(e)}var a=new class{pending=new Map;scheduled=!1;push(e,t,n){if(!t)return;let r=this.pending.get(e);r?(r.buffer+=t,r.flush=n):this.pending.set(e,{buffer:t,flush:n}),this.schedule()}schedule(){this.scheduled||(this.scheduled=!0,i(()=>{this.scheduled=!1,this.drain()}))}drain(){if(this.pending.size===0)return;let e=Array.from(this.pending.entries());this.pending.clear();for(let[t,n]of e)n.buffer&&n.flush(t,n.buffer)}drop(e){this.pending.delete(e)}dropAll(){this.pending.clear()}flush(e){let t=this.pending.get(e);t&&(this.pending.delete(e),t.buffer&&t.flush(e,t.buffer))}flushAll(){this.drain()}},o={maxReconnectAttempts:10,initialBackoffMs:1e3,maxBackoffMs:3e4,backoffMultiplier:2,jitterRatio:0,queueLimit:1e3,heartbeatIntervalMs:0,heartbeatTimeoutMs:0};function s(){return{phase:`idle`,reconnectAttempt:0,lastActivityAt:null,stopped:!1}}function c(e){return e.stopped?e:{...e,phase:`connecting`}}function l(e,t=Date.now()){return{...e,phase:`open`,reconnectAttempt:0,lastActivityAt:t,stopped:!1}}function u(e,t=Date.now()){return{...e,lastActivityAt:t}}function d(e){return{...e,phase:`closed`,stopped:!0}}function f(e){return{...e,phase:`idle`,reconnectAttempt:0,stopped:!1}}function p(e,t,n=Date.now(),r=Math.random){if(e.stopped||e.reconnectAttempt>=t.maxReconnectAttempts)return{state:{...e,phase:`closed`},plan:null};let i=e.reconnectAttempt+1,a=Math.min(t.initialBackoffMs*t.backoffMultiplier**(i-1),t.maxBackoffMs),o=(r()*2-1)*t.jitterRatio,s=Math.max(0,Math.round(a*(1+o)));return{state:{...e,phase:`reconnecting`,reconnectAttempt:i},plan:{attempt:i,delayMs:s,retryAt:n+s}}}var m=`abort,ping,user_message,tool.confirm_result,completion.request,model.switch,model.refine,autonomy.switch,context.clear,context.compact,context.debug,context.editor.open,context.editor.validate,context.editor.apply,context.mode.create,context.mode.delete,context.mode.switch,context.mode.update,context.modes.list,context.repair,mode.switch,modes.list,session.checkpoints,session.delete,session.new,session.rename,session.resume,session.rewind,session.save,sessions.list,side_effects.list,stats.get,todo.update,todos.clear,todos.get,todos.remove`.split(`,`),h=[`collab.join`,`collab.leave`,`collab.annotate`,`collab.resolve`,`collab.request_pause`,`collab.resume`,`collab.grant_control`,`collab.inject_tool`,`mailbox.action`,`mailbox.agents`,`mailbox.clear`,`mailbox.compact`,`mailbox.messages`,`mailbox.purge`,`mailbox.send`],g=`brain.ask,brain.config.get,brain.config.set,brain.risk,brain.status,chronicle.facet,chronicle.facets,chronicle.graph,chronicle.metrics,chronicle.query,chronicle.status,config.doctor,design.list,design.materialize,design.set,design.state,design.swap,design.tune,design.use,design.verify,memory.list,memory.sage.backfillRecoverable,memory.sage.candidateResolve,memory.sage.delete,memory.sage.forFile,memory.sage.get,memory.sage.graph,memory.sage.list,memory.sage.listPage,memory.sage.recover,memory.sage.remember,memory.sage.update`.split(`,`),_=`auth.oauth.cancel,auth.oauth.code,auth.oauth.start,mcp.add,mcp.disable,mcp.discover,mcp.enable,mcp.list,mcp.prompt.get,mcp.prompts,mcp.remove,mcp.resource.read,mcp.resources,mcp.restart,mcp.sleep,mcp.update,mcp.wake,prompts.content,prompts.create,prompts.favorite,prompts.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.create,skills.edit,skills.export,skills.install,skills.list,skills.uninstall,skills.update`.split(`,`),v=`goal-state.get,goal.addTask,goal.assess,goal.assignTask,goal.clear,goal.get,goal.list,goal.load,goal.moveTask,goal.pause,goal.resume,goal.retryTask,goal.revert,goal.runTask,goal.save,goal.selectPhase,goal.start,goal.state,goal.status,goal.stop,goal.taskStatus,goal.toggleAutonomous,plan.get,plan.item.update,plan.template_use,task.update,tasks.get`.split(`,`),y=`sdd.board.cancel_task,sdd.board.cleanup_worktrees,sdd.board.delete_task,sdd.board.destroy,sdd.board.get,sdd.board.list,sdd.board.pause,sdd.board.reassign,sdd.board.resume,sdd.board.retry,sdd.board.retry_all_failed,sdd.board.rollback,sdd.board.set_task_fallbacks,sdd.board.set_task_model,sdd.board.set_task_verification,sdd.board.split_task,sdd.board.stop,sdd.run.from_graph,sdd.run.from_spec,sdd.run.start,sdd.spec.approve,sdd.spec.discard,sdd.spec.get,sdd.spec.message,sdd.spec.start,specs.get,specs.list,specs.taskStatus`.split(`,`),b=[`files.list`,`files.read`,`files.tree`,`files.write`,`git.changes`,`git.diff`,`git.info`,`projects.add`,`projects.list`,`projects.select`,`working_dir.set`,`worktree.cleanup`,`worktree.diff`,`worktree.merge`,`worktree.remove`,`worktree.scan`,`shell.open`,`process.kill`,`process.killAll`,`process.list`,`terminal.close`,`terminal.create`,`terminal.input`,`terminal.resize`],x=`codebase.index.server.shutdown,connections.health,connections.service_action,diag.get,key.add,key.delete,key.set_active,key.update,prefs.get,prefs.update,provider.add,provider.clear_models,provider.models,provider.models.search,provider.probe,provider.remove,provider.status.clear,provider.status.get,provider.status.retry,provider.undo_clear,provider.update,providers.list,providers.saved,tool.disable,tool.enable,tools.list,webui.shutdown`.split(`,`),S=`error,log,pong,side_effects,agent.status_changed,agent.timeline.message,client.status_update,compaction.failed,completion.result,context.compacted,context.debug,context.editor.snapshot,context.editor.validation,context.editor.applied,context.mode.changed,context.modes.list,context.repaired,ctx.max_context,ctx.pct,delegate.completed,delegate.started,iteration.completed,iteration.limit_reached,iteration.started,model.refine_result,modes.list,provider.active_blocked,provider.error,provider.fallback,provider.response,provider.retry,provider.status_changed,provider.stream_error,provider.text_delta,provider.thinking_delta,run.result,session.checkpoints,session.damaged,session.end,session.rewound,session.start,session.stats,sessions.list,sessions.status_update,stats.get,token.cost_estimate_unavailable,token.threshold,tool.confirm_needed,tool.disabled,tool.enabled,tool.executed,tool.loop_detected,tool.progress,tool.started,tools.list,trust.persisted`.split(`,`),ee=[`collab.annotation.added`,`collab.annotation.resolved`,`collab.event`,`collab.injection.granted`,`collab.participant.joined`,`collab.participant.left`,`collab.pause.granted`,`collab.pause.released`,`collab.state`,`mailbox.action_result`,`mailbox.agent_registered`,`mailbox.agents`,`mailbox.cleared`,`mailbox.compacted`,`mailbox.event`,`mailbox.messages`,`mailbox.sent`,`mailbox.purged`,`mailbox.received`,`subagent.budget_extended`,`subagent.event`],te=`brain.answer,brain.config,brain.event,brain.status,chronicle.error,chronicle.facet_result,chronicle.facets_result,chronicle.graph_result,chronicle.metrics_result,chronicle.query_result,chronicle.status_result,config.doctor.result,design.list,design.materialize,design.set,design.state,design.swap,design.tune,design.use,design.verify,memory.event,memory.list,memory.sage.backfillRecoverable,memory.sage.candidateResolve,memory.sage.delete,memory.sage.forFile,memory.sage.get,memory.sage.graph,memory.sage.list,memory.sage.listPage,memory.sage.recover,memory.sage.remember,memory.sage.update`.split(`,`),ne=`mcp.content.error,mcp.content.selected,mcp.list,mcp.operation_result,mcp.prompts,mcp.resources,mcp.server.added,mcp.server.connected,mcp.server.disconnected,mcp.server.discovered,mcp.server.error,mcp.server.reconnected,mcp.server.removed,mcp.server.sleeping,mcp.server.updated,mcp.server.waking,prompts.content,prompts.created,prompts.favorite,prompts.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.created,skills.edited,skills.exported,skills.installed,skills.list,skills.uninstalled,skills.updated`.split(`,`),C=`budget.decision,budget.threshold_reached,coordinator.stats,coordinator.status,eternal.iteration,fleet.concurrency_update,goal-state.updated,goal.assess.result,goal.list,goal.paused,goal.resumed,goal.saved,goal.error,goal.stopped,goal.failed,goal.completed,goal.cleared,goal.reverted,goal.progress,goal.state,in_flight.ended,in_flight.started,plan.updated,task.completed,task.failed,task.pending,task.started,tasks.updated,todos.cleared,todos.updated`.split(`,`),re=[`kanban.task.activity`,`sdd.board.lifecycle_result`,`sdd.board.list`,`sdd.board.snapshot`,`sdd.run.started`,`sdd.spec.agent_text`,`sdd.spec.error`,`sdd.spec.snapshot`,`specs.detail`,`specs.list`],ie=[`consensus.vote_cast`,`consensus.vote_initiated`,`consensus.vote_resolved`,`cron.job_fired`,`cron.snapshot`,`techstack.job.cancelled`,`techstack.job.failed`,`techstack.job.progress`,`techstack.job.started`,`techstack.report.delivered`,`techstack.report.ready`,`techstack.snapshot.updated`,`techstack.workspace.completed`],ae=`checkpoint.written,codemap.file_event,codemap.index_updated,codemap.tool_executed,codemap.tool_started,file.saved,files.list,files.read,files.tree,files.written,git.changes,git.diff,git.info,process.list,projects.added,projects.list,projects.selected,terminal.exit,terminal.output,working_dir.changed,worktree.cleanup_result,worktree.diff_result,worktree.event,worktree.merge_result,worktree.orphans,worktree.state`.split(`,`),w=[`auth.oauth.status`,`codebase.index.server.shutdown_result`,`connections.health_error`,`connections.health_result`,`connections.service_action_result`,`diag.get`,`key.operation_result`,`model.switch_result`,`prefs.updated`,`provider.catalog`,`provider.models`,`provider.models.search_result`,`provider.probe`,`provider.status.snapshot`,`providers.saved`],oe=[...m,...h,...b,...x,...v,...y,...g,..._],T=[...S,...ee,...ae,...w,...C,...re,...ie,...te,...ne],se=new Set(oe),ce=new Set(T);function le(e,t){return(t===`client`?se:ce).has(e)||e.startsWith(`kanban.`)&&e.length>7||e.startsWith(`agent-roster.`)&&e.length>13}var ue=new Set([`__proto__`,`constructor`,`prototype`]),de=32;function E(e,t,n){if(n>de)return{code:`too_deep`,message:`Protocol payload exceeds the nesting limit`,path:t};if(typeof e!=`object`||!e)return null;for(let r of Object.keys(e)){let i=`${t}.${r}`;if(ue.has(r))return{code:`unsafe_key`,message:`Unsafe protocol key: ${r}`,path:i};let a=E(e[r],i,n+1);if(a)return a}return null}function D(e,t){if(typeof e!=`object`||!e||Array.isArray(e))return{ok:!1,issue:{code:`invalid_envelope`,message:`Protocol message must be an object`}};let n=e;if(typeof n.type!=`string`||n.type.length===0)return{ok:!1,issue:{code:`invalid_type`,message:`Protocol message type must be a non-empty string`}};if(!le(n.type,t))return{ok:!1,issue:{code:`unknown_type`,message:`Unknown ${t} message: ${n.type}`}};if(t===`server`&&!Object.hasOwn(n,`payload`))return{ok:!1,issue:{code:`invalid_envelope`,message:`Server protocol messages require a payload`}};let r=E(n,`$`,0);return r?{ok:!1,issue:r}:{ok:!0,message:e}}function fe(e,t){try{return D(JSON.parse(e),t)}catch{return{ok:!1,issue:{code:`invalid_envelope`,message:`Protocol frame is not valid JSON`}}}}var pe=[`protocol.directional-decoder`,`protocol.recursive-key-safety`,`chronicle.query`,`chronicle.facet`,`chronicle.facets`,`chronicle.graph`,`chronicle.metrics`,`chronicle.status`,`connections.health`,`sdd.interview.continuity`,`sdd.run.from_graph`];function me(e){let t=e.protocolVersion,n=t===void 0,r=n?1:Math.min(t,1),i=n||Number.isInteger(t)&&t>=1,a=new Set(e.protocolCapabilities??[]);return{compatible:i,legacyPeer:n,version:r,capabilities:pe.filter(e=>a.has(e))}}var O={listTools(e){this.send({type:`tools.list`},e)},listMemory(e){this.send({type:`memory.list`},e)},listSageMemories(e){this.send({type:`memory.sage.list`},e)},listSageMemoriesPage(e,t){this.send({type:`memory.sage.listPage`,payload:{...e}},t)},getSage(e,t){this.send({type:`memory.sage.get`,payload:{id:e}},t)},getSageGraph(e,t,n){this.send({type:`memory.sage.graph`,payload:{query:e,...t}},n)},updateSage(e,t,n){this.send({type:`memory.sage.update`,payload:{id:e,...t}},n)},deleteSage(e,t){this.send({type:`memory.sage.delete`,payload:{id:e,force:!0,...t===void 0?{}:{reason:t}}})},rememberSage(e,t){this.send({type:`memory.sage.remember`,payload:e},t)},findMemoriesForFile(e,t){this.send({type:`memory.sage.forFile`,payload:e},t)},recoverSage(e,t){this.send({type:`memory.sage.recover`,payload:e},t)},resolveMemoryCandidate(e,t){this.send({type:`memory.sage.candidateResolve`,payload:e},t)},backfillRecoverable(e,t){this.send({type:`memory.sage.backfillRecoverable`,payload:e},t)},listMcpServers(){this.send({type:`mcp.list`})},addMcpServer(e){this.send({type:`mcp.add`,payload:e})},removeMcpServer(e){this.send({type:`mcp.remove`,payload:{name:e}})},updateMcpServer(e){this.send({type:`mcp.update`,payload:e})},wakeMcpServer(e){this.send({type:`mcp.wake`,payload:{name:e}})},sleepMcpServer(e){this.send({type:`mcp.sleep`,payload:{name:e}})},discoverMcpServer(e){this.send({type:`mcp.discover`,payload:{name:e}})},listMcpResources(e,t=!1){this.send({type:`mcp.resources`,payload:{name:e,refresh:t}})},listMcpPrompts(e,t=!1){this.send({type:`mcp.prompts`,payload:{name:e,refresh:t}})},readMcpResource(e,t){this.send({type:`mcp.resource.read`,payload:{name:e,uri:t}})},getMcpPrompt(e,t,n){this.send({type:`mcp.prompt.get`,payload:{name:e,prompt:t,...n===void 0?{}:{arguments:n}}})},enableMcpServer(e){this.send({type:`mcp.enable`,payload:{name:e}})},disableMcpServer(e){this.send({type:`mcp.disable`,payload:{name:e}})},restartMcpServer(e){this.send({type:`mcp.restart`,payload:{name:e}})},listSkills(e){this.send({type:`skills.list`},e)},getSkillContent(e,t){this.send({type:`skills.content`,payload:{name:e,source:t}})},installSkill(e,t){this.send({type:`skills.install`,payload:{ref:e,global:t}})},uninstallSkill(e,t){this.send({type:`skills.uninstall`,payload:{name:e,global:t}})},checkForUpdates(e,t){this.send({type:`skills.update`,payload:{name:e,global:t}})},createSkill(e,t,n){this.send({type:`skills.create`,payload:{name:e,description:t,scope:n}})},editSkill(e,t){this.send({type:`skills.edit`,payload:{name:e,body:t}})},exportAllSkills(){this.send({type:`skills.export`})},getDiag(e){this.send({type:`diag.get`,payload:this.withSession({})},e)},getStats(e){this.send({type:`stats.get`,payload:this.withSession({})},e)},saveSession(){this.send({type:`session.save`,payload:this.withSession({})})},resumeSessionById(e){this.send({type:`session.resume`,payload:this.withSession({id:e})})},listModes(){this.send({type:`modes.list`})},switchMode(e){this.send({type:`mode.switch`,payload:{id:e}})},listFiles(e,t,n){this.send({type:`files.list`,payload:{query:e,limit:t,path:n}})},requestCompletion(e){this.send({type:`completion.request`,payload:e})},getTodos(){this.send({type:`todos.get`,payload:this.withSession({})})},clearTodos(){this.send({type:`todos.clear`,payload:this.withSession({})})},removeTodo(e){let t=typeof e==`number`?{index:e}:{id:e};this.send({type:`todos.remove`,payload:this.withSession(t)})},updateTodoStatus(e,t){this.send({type:`todo.update`,payload:this.withSession({id:e,status:t})})},getTasks(){this.send({type:`tasks.get`,payload:this.withSession({})})},updateTaskStatus(e,t){this.send({type:`task.update`,payload:this.withSession({id:e,status:t})})},getPlan(){this.send({type:`plan.get`,payload:this.withSession({})})},updatePlanItem(e,t){this.send({type:`plan.item.update`,payload:this.withSession({target:e,status:t})})},listSessions(e=50){this.send({type:`sessions.list`,payload:this.withSession({limit:e})})},deleteSession(e){this.send({type:`session.delete`,payload:{id:e}})},renameSession(e,t){this.send({type:`session.rename`,payload:{id:e,name:t}})},setWorkingDir(e){this.send({type:`working_dir.set`,payload:{path:e}})},resumeSession(e){this.send({type:`session.resume`,payload:this.withSession({id:e})})},ping(){this.send({type:`ping`})},refineModel(e,t){this.send({type:`model.refine`,payload:{text:e,...t?.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs},...t?.provider===void 0?{}:{provider:t.provider},...t?.model===void 0?{}:{model:t.model},...t?.previousRefined===void 0?{}:{previousRefined:t.previousRefined},...t?.previousEnglish===void 0?{}:{previousEnglish:t.previousEnglish},...t?.retryFeedback===void 0?{}:{retryFeedback:t.retryFeedback}}})}};function k(e){Object.assign(e.prototype,O)}function A(e){return{type:`provider.clear_models`,payload:{providerId:e}}}function j(e,t){return{type:`provider.undo_clear`,payload:{providerId:e,previousModels:[...t]}}}function M(e){return{type:`provider.update`,payload:e}}function N(e){return Math.max(0,Math.min(100,Math.round((typeof e==`number`&&Number.isFinite(e)?e:0)*100)))}function P(e,t=!1){if(t&&e.target){if(e.kind===`agent:tool`||e.kind===`tool:executed`||e.kind===`tool:started`)return`tool`;if(e.source===`leader`||e.source===`coordinator`)return`coordinator`;if(e.kind.startsWith(`provider:`))return`provider`;if(e.kind.startsWith(`mailbox:`))return`mailbox`}switch(e.kind){case`provider:call`:case`provider:delta`:case`provider:response`:return`provider`;case`agent:spawned`:case`agent:tool`:case`agent:status`:case`agent:text`:case`agent:ctx`:case`budget:warning`:case`budget:extended`:return`agent`;case`tool:started`:case`tool:executed`:case`tool:progress`:return`tool`;case`mailbox:send`:case`mailbox:deliver`:return`mailbox`;case`collab:event`:return`system`;case`session:start`:case`session:end`:case`iteration:start`:case`iteration:end`:case`eternal:iteration`:case`fleet:snapshot`:return`session`;case`context:compacted`:case`context:repaired`:case`cost:update`:return`system`;case`error`:return`error`;default:return`system`}}function F(e){switch(e){case`provider:call`:case`provider:delta`:case`agent:tool`:case`tool:started`:case`tool:progress`:case`iteration:start`:case`agent:text`:return`streaming`;case`agent:status`:case`iteration:end`:return`completed`;case`error`:return`error`;case`tool:executed`:return`completed`;case`session:end`:return`idle`;default:return`active`}}var I=0;function L(){return`viz_${Date.now()}_${++I}`}function R(e,t){if(e===t)return!0;if(!e||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n){let n=e[r],i=t[r];if(n!==i){if(n==null||i==null||typeof n!=typeof i)return!1;if(typeof n==`object`){if(Array.isArray(n)||Array.isArray(i)||!R(n,i))return!1;continue}return!1}}return!0}var z={provider:`hsl(var(--info))`,agent:`hsl(var(--primary))`,tool:`hsl(var(--warning))`,mailbox:`hsl(var(--success))`,session:`hsl(var(--primary))`,system:`hsl(var(--muted-foreground))`,success:`hsl(var(--success))`,error:`hsl(var(--destructive))`},B={"provider:call":`hsl(var(--info))`,"provider:delta":`hsl(var(--primary))`,"agent:tool":`hsl(var(--warning))`,"mailbox:send":`hsl(var(--success))`,default:`hsl(var(--muted-foreground))`},V=t()((e,t)=>({events:[],toolEvents:[],nodes:new Map,edges:new Map,isActive:!1,maxEvents:2e3,counters:{totalTokens:0,totalCost:0,totalToolCalls:0,activeAgents:0,completedTasks:0,errors:0,mailboxMessages:0},pushEvent:t=>e(e=>{let n={...t,id:t.id??L(),timestamp:t.timestamp||Date.now()},r=[n,...e.events];r.length>e.maxEvents&&(r.length=e.maxEvents);let i=t.kind===`agent:tool`||t.kind===`tool:started`||t.kind===`tool:progress`||t.kind===`tool:executed`?[n,...e.toolEvents].slice(0,600):e.toolEvents,a=Date.now(),o=t.source,s={id:o,kind:P(t),label:t.label,status:F(t.kind),activity:1,color:t.color??z[P(t)],lastSeenAt:a},c=e.nodes.get(o),l=c?{...c,...s}:s,u=!R(c,l),d,f=!1,p;if(t.target){p=t.target;let n={id:p,kind:P(t,!0),label:p,status:F(t.kind),activity:.8,color:t.color??z[P(t,!0)],lastSeenAt:a},r=e.nodes.get(p);d=r?{...r,...n}:n,f=!R(r,d)}let m,h=!1,g;if(t.target&&o){g=`${o}->${t.target}`;let n=e.edges.get(g),r={id:g,source:o,target:t.target,kind:t.kind,label:t.label,intensity:n?Math.min(1,n.intensity+.3):.7,color:t.color??z[P(t)]??z.agent,lastActiveAt:a,totalMagnitude:(n?.totalMagnitude??0)+(t.magnitude??0)};m=n?{...n,...r}:r,h=!R(n,m)}let _=e.nodes,v=e.edges;return(u||f)&&(_=new Map(e.nodes),u&&_.set(o,l),f&&d&&p&&_.set(p,d)),h&&m&&g&&(v=new Map(e.edges),v.set(g,m)),{events:r,toolEvents:i,nodes:_,edges:v}}),upsertNode:t=>e(e=>{let n=new Map(e.nodes),r=n.get(t.id);return n.set(t.id,{...r,...t,lastSeenAt:t.lastSeenAt===void 0?Date.now():t.lastSeenAt}),{nodes:n}}),removeNode:t=>e(e=>{let n=new Map(e.nodes);n.delete(t);let r=new Map(e.edges);for(let[e,n]of r)(n.source===t||n.target===t)&&r.delete(e);return{nodes:n,edges:r}}),upsertEdge:t=>e(e=>{let n=new Map(e.edges),r=n.get(t.id);return n.set(t.id,{...r,...t,lastActiveAt:t.lastActiveAt===void 0?Date.now():t.lastActiveAt,intensity:t.intensity??r?.intensity??.5,color:t.color??B[t.kind]??B.default,totalMagnitude:(r?.totalMagnitude??0)+(t.totalMagnitude??0)}),{edges:n}}),removeEdge:t=>e(e=>{let n=new Map(e.edges);return n.delete(t),{edges:n}}),clear:()=>e({events:[],toolEvents:[],nodes:new Map,edges:new Map,counters:{totalTokens:0,totalCost:0,totalToolCalls:0,activeAgents:0,completedTasks:0,errors:0,mailboxMessages:0}}),setActive:t=>e({isActive:t}),decayActivity:()=>e(e=>{let t=new Map(e.nodes);for(let[e,n]of t)if(n.activity>=.01){let r=n.activity*.92;t.set(e,{...n,activity:r<.01?0:r})}let n=new Map(e.edges);for(let[e,t]of n)if(t.intensity>=.01){let r=t.intensity*.9;n.set(e,{...t,intensity:r<.01?0:r})}return{nodes:t,edges:n}}),prunesStale:t=>e(e=>{let n=Date.now()-t,r=new Map(e.nodes);for(let[e,t]of r)t.lastSeenAt<n&&t.status!==void 0&&t.status!==`active`&&r.delete(e);let i=new Map(e.edges);for(let[e,t]of i)t.lastActiveAt<n&&i.delete(e);return{nodes:r,edges:i,events:e.events.filter(e=>e.timestamp>n)}})}));function H(e,t){switch(e){case`provider.text_delta`:{let e=t.text??``;return{id:L(),kind:`provider:delta`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,60),magnitude:e.length,data:{text:e},color:z.provider,flowGroup:`provider`}}case`provider.response`:{let e=t.usage,n=(e?.input??0)+(e?.output??0);return{id:L(),kind:`provider:response`,timestamp:Date.now(),source:`provider`,target:`leader`,label:`${(e?.input??0).toLocaleString(`en-US`)} in / ${(e?.output??0).toLocaleString(`en-US`)} out`,magnitude:n,data:t,color:z.provider,flowGroup:`provider`}}case`provider.stream_error`:{let e=t.message??`Provider stream error`;return{id:L(),kind:`error`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,80),magnitude:1,data:t,color:z.error,flowGroup:`provider`}}case`tool.started`:{let e=t.name??`tool`;return{id:L(),kind:`tool:started`,timestamp:Date.now(),source:e,target:`filesystem`,label:e,magnitude:1,data:t,color:z.tool,flowGroup:`tool:${e}`}}case`tool.executed`:{let e=t.name??`tool`,n=t.ok??!0;return{id:L(),kind:`tool:executed`,timestamp:Date.now(),source:e,target:`leader`,label:`${e} ${n?`✓`:`✗`} (${t.durationMs??0}ms)`,magnitude:t.durationMs??0,data:t,color:n?z.tool:z.error,flowGroup:`tool:${e}`}}case`tool.progress`:{let e=t.name??`tool`,n=t.event?.text??``;return{id:L(),kind:`tool:progress`,timestamp:Date.now(),source:e,target:`leader`,label:n.slice(0,60)||e,magnitude:n.length,data:t,color:z.tool,flowGroup:`tool:${e}`}}case`codemap.tool_started`:{let e=t.name??`tool`,n=t.agentId??`subagent`;return{id:L(),kind:`tool:started`,timestamp:Date.now(),source:n,target:e,label:e,magnitude:1,data:t,color:z.tool,flowGroup:`agent:${n}`}}case`codemap.tool_executed`:{let e=t.name??`tool`,n=t.agentId??`subagent`,r=t.ok??!0;return{id:L(),kind:`tool:executed`,timestamp:Date.now(),source:n,target:e,label:`${e} ${r?`✓`:`✗`} (${t.durationMs??0}ms)`,magnitude:t.durationMs??0,data:t,color:r?z.tool:z.error,flowGroup:`agent:${n}`}}case`tool.loop_detected`:{let e=t.tools??``,n=t.kind??`loop`,r=t.action===`steer`;return{id:L(),kind:r?`agent:status`:`error`,timestamp:Date.now(),source:e||n,target:`leader`,label:`${n} loop x${t.repeatCount??0}`,magnitude:t.repeatCount??1,data:t,color:r?z.agent:z.error,flowGroup:`tool`}}case`delegate.started`:{let e=t.target??`delegate`,n=t.task??``;return{id:L(),kind:`agent:status`,timestamp:Date.now(),source:`leader`,target:e,label:n.slice(0,80)||`Delegating to ${e}`,magnitude:1,data:t,color:z.agent,flowGroup:`delegate:${e}`}}case`delegate.completed`:{let e=t.subagentId??t.target??`delegate`,n=t.ok??!1;return{id:L(),kind:n?`agent:status`:`error`,timestamp:Date.now(),source:e,target:`leader`,label:(t.summary??t.status??`delegate completed`).slice(0,80),magnitude:t.durationMs??1,data:t,color:n?z.agent:z.error,flowGroup:`delegate:${e}`}}case`subagent.event`:{let e=t.kind,n=t.subagentId??`unknown`,r=t.name??n;switch(e){case`spawned`:return{id:L(),kind:`agent:spawned`,timestamp:Date.now(),source:n,target:`session`,label:`${r} spawned`,magnitude:1,data:t,color:z.agent,flowGroup:`agent:${n}`};case`tool_executed`:{let e=t.toolName??`tool`,r=t.ok??!0;return{id:L(),kind:`agent:tool`,timestamp:Date.now(),source:n,target:e,label:e,magnitude:t.durationMs??0,data:t,color:r?z.tool:z.error,flowGroup:`agent:${n}`}}case`task_completed`:{let e=t.status??`completed`;return{id:L(),kind:`agent:status`,timestamp:Date.now(),source:n,target:`session`,label:`${r} ${e}`,magnitude:1,data:t,color:e===`success`?z.success:z.error,flowGroup:`agent:${n}`}}case`ctx_pct`:return{id:L(),kind:`agent:ctx`,timestamp:Date.now(),source:n,target:`session`,label:`ctx ${N(t.load)}%`,magnitude:t.tokens??0,data:t,color:z.agent,flowGroup:`agent:${n}`};case`iteration_summary`:return{id:L(),kind:`agent:text`,timestamp:Date.now(),source:n,target:`session`,label:(t.partialText??``).slice(0,80)||`iter ${t.iteration??0}`,magnitude:t.costUsd??0,data:t,color:z.agent,flowGroup:`agent:${n}`};case`budget_extended`:return{id:L(),kind:`budget:extended`,timestamp:Date.now(),source:n,target:`session`,label:`${r} extended budget`,magnitude:t.totalExtensions??1,data:t,color:z.tool,flowGroup:`agent:${n}`};case`budget_warning`:return{id:L(),kind:`budget:warning`,timestamp:Date.now(),source:n,target:`session`,label:`${r} hit ${t.budgetKind??`budget`} ${t.used??0}/${t.limit??0}`,magnitude:t.used??1,data:t,color:z.error,flowGroup:`agent:${n}`}}return null}case`mailbox.event`:{let e=t.event,n=t.from??`?`,r=t.to??`?`,i=t.subject??``,a=e===`mailbox.sent`;return{id:L(),kind:a?`mailbox:send`:`mailbox:deliver`,timestamp:Date.now(),source:n,target:r,label:i||(a?`→ ${r}`:`← ${n}`),magnitude:1,data:t,color:z.mailbox,flowGroup:`mailbox`}}case`iteration.started`:{let e=t.index??0;return{id:L(),kind:`iteration:start`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e}`,magnitude:e,data:t,color:z.agent,flowGroup:`iteration`}}case`iteration.completed`:{let e=t.index??0;return{id:L(),kind:`iteration:end`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e} done`,magnitude:e,data:t,color:z.session,flowGroup:`iteration`}}case`ctx.pct`:{let e=t.tokens??0;return{id:L(),kind:`agent:ctx`,timestamp:Date.now(),source:`leader`,target:`session`,label:`ctx ${N(t.load)}%`,magnitude:e,data:t,color:z.agent,flowGroup:`leader`}}case`error`:{let e=t.message??`Error`;return{id:L(),kind:`error`,timestamp:Date.now(),source:t.phase??`system`,target:`session`,label:e,magnitude:1,data:t,color:z.error,flowGroup:`error`}}case`context.compacted`:return{id:L(),kind:`context:compacted`,timestamp:Date.now(),source:`system`,target:`session`,label:`Compacted: ${(t.saved??0).toLocaleString(`en-US`)} tokens`,magnitude:t.saved??0,data:t,color:`hsl(220, 60%, 50%)`,flowGroup:`context`};case`compaction.failed`:{let e=t.message??`Compaction failed`;return{id:L(),kind:`error`,timestamp:Date.now(),source:`compactor`,target:`session`,label:e.slice(0,80),magnitude:t.tokens??1,data:t,color:z.error,flowGroup:`context`}}case`context.repaired`:return{id:L(),kind:`context:repaired`,timestamp:Date.now(),source:`system`,target:`session`,label:`Repaired: ${t.removedMessages??0} msgs`,magnitude:t.removedMessages??0,data:t,color:`hsl(220, 60%, 50%)`,flowGroup:`context`};case`session.start`:{let e=t.sessionId??`?`,n=t.projectName??``;return{id:L(),kind:`session:start`,timestamp:Date.now(),source:`session`,target:`leader`,label:n||e.slice(0,12),magnitude:1,data:t,color:z.session,flowGroup:`session`}}case`sessions.status_update`:{let e=t.sessions??[];return{id:L(),kind:`fleet:snapshot`,timestamp:Date.now(),source:`system`,target:`session`,label:`${e.length} session(s)`,magnitude:e.length,data:t,color:z.system,flowGroup:`fleet`}}default:return null}}function he(e){let t=e.payload?.sessionId,n=r.getState().session?.id;return!t||!n||t===n}function ge(e){let t=H(e.type,e.payload);t&&(V.getState().pushEvent(t),V.getState().setActive(!0))}function _e(e,t,n){let r=e.payload??{};for(let[e,n]of Object.entries(t)){let t=r[e];if(!U(t,n))return null}if(n)for(let[e,t]of Object.entries(n)){let n=r[e];if(n!=null&&!U(n,t))return null}return r}function U(e,t){switch(t){case`string`:return typeof e==`string`;case`number`:return typeof e==`number`;case`boolean`:return typeof e==`boolean`;case`object`:return typeof e==`object`&&!!e&&!Array.isArray(e);case`array`:return Array.isArray(e);default:return!1}}function ve(e){try{return new URL(e).searchParams.get(`token`)}catch{return null}}function W(){if(typeof window>`u`||!window.location)return null;try{let e=window.location.search??``;return new URLSearchParams(e).get(`token`)}catch{return null}}function G(e){try{let t=new URL(e);return t.searchParams.delete(`token`),t.toString()}catch{return e}}function K(){if(!(typeof window>`u`||!window.location||!window.history?.replaceState))try{let e=window.location.href;if(!e)return;let t=new URL(e);if(!t.searchParams.has(`token`))return;t.searchParams.delete(`token`),window.history.replaceState(window.history.state,document.title,t.toString())}catch{}}function ye(){if(typeof document>`u`)return null;let e=document.querySelector(`meta[name="wrongstack-ws-url"]`)?.getAttribute(`content`)?.trim();if(!e)return null;try{let t=new URL(e);if(t.protocol!==`ws:`&&t.protocol!==`wss:`)return null;let n=W();return n&&!t.searchParams.has(`token`)&&t.searchParams.set(`token`,n),t.toString()}catch{return null}}function q(){let e=ye();if(e)return e;if(typeof window>`u`||!window.location?.hostname)return`ws://127.0.0.1:3456`;let t=window.location.protocol===`https:`?`wss`:`ws`,n=window.location.hostname.toLowerCase(),r=window.location.port,i=W(),a=i?`?token=${encodeURIComponent(i)}`:``;return`${t}://${n===`localhost`||n===`127.0.0.1`||n===`[::1]`||n===`::1`?`127.0.0.1`:n}${r?`:${r}`:``}${a}`}function J(){if(typeof window>`u`||!window.location?.hostname)return`http://127.0.0.1:3456`;let e=window.location.protocol===`https:`?`https`:`http`,t=window.location.hostname.toLowerCase(),n=window.location.port?`:${window.location.port}`:``;return t===`localhost`||t===`127.0.0.1`||t===`[::1]`||t===`::1`?`${e}://127.0.0.1${n}`:`${e}://${window.location.hostname}${n}`}var be=e({WrongStackWebSocketClient:()=>Z,getWSClient:()=>$}),xe={"context.debug":`context.debug`,"diag.get":`diag.get`,"memory.list":`memory.list`,"memory.sage.get":`memory.sage.get`,"memory.sage.graph":`memory.sage.graph`,"memory.sage.list":`memory.sage.list`,"memory.sage.listPage":`memory.sage.listPage`,"memory.sage.remember":`memory.sage.remember`,"memory.sage.update":`memory.sage.update`,"skills.list":`skills.list`,"stats.get":`stats.get`,"tools.list":`tools.list`},Se=3e4,Ce=32;function Y(e){try{let t=new URL(e),n=new URL(J());return t.hostname===n.hostname}catch{return!0}}var X=class e{ws=null;url;handlers=new Map;maxReconnectAttempts=10;shouldReconnect=!0;reconnectTimer=null;connectPromise=null;socketGeneration=0;messageQueue=[];messageQueueChars=0;messageQueueWeights=new WeakMap;connectionState=s();static MAX_QUEUED_MESSAGES=1e3;static MAX_QUEUED_CHARS=16*1024*1024;pendingConfirms=new Map;sessionId=null;sessionSwapPending=!1;lastErrorText;statusListeners=new Set;currentStatus={state:`connecting`};suppressedChatEchoes=new Map;protocolCapabilities=new Set;protocolVersion=null;supportsCapability(e){return this.protocolCapabilities.has(e)}get negotiatedProtocolVersion(){return this.protocolVersion}onStatus(e){return this.statusListeners.add(e),e(this.currentStatus),()=>this.statusListeners.delete(e)}get status(){return this.currentStatus}setStatus(e){this.currentStatus=e;for(let t of this.statusListeners)try{t(e)}catch{}}constructor(e){this.url=e??q()}withSession(e){return this.sessionId?{...e,sessionId:this.sessionId}:e}async ensureAuthCookie(){if(typeof window>`u`)return;if(document.cookie.split(`;`).some(e=>e.trim().startsWith(`ws_token=`))){Y(this.url)&&(this.url=G(this.url)),K();return}let e=ve(this.url)??W();if(!e)return;let t=J()+`/ws-auth?token=${encodeURIComponent(e)}`;try{let e=await fetch(t,{method:`GET`,credentials:`same-origin`,cache:`no-store`});e.ok?(Y(this.url)&&(this.url=G(this.url)),K()):console.warn(JSON.stringify({level:`warn`,event:`ws_client.ws_auth_failed`,status:e.status,timestamp:new Date().toISOString()}))}catch(e){console.warn(JSON.stringify({level:`warn`,event:`ws_client.ws_auth_error`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}}connect(){return this.ws?.readyState===WebSocket.OPEN?Promise.resolve():(this.connectPromise||=this.openSocket().finally(()=>{this.connectPromise=null}),this.connectPromise)}async openSocket(){return await this.ensureAuthCookie(),this.connectionState=c(this.connectionState),new Promise((e,t)=>{if(this.ws?.readyState===WebSocket.OPEN){e();return}this.setStatus({state:`connecting`});let n=++this.socketGeneration;try{let r=new WebSocket(this.url);this.ws=r,r.binaryType=`arraybuffer`;let i=setTimeout(()=>{if(this.ws===r){try{r.close()}catch{}this.ws===r&&(this.ws=null)}this.lastErrorText=`Connection timeout`,t(Error(`Connection timeout`)),s()},3e4),a=!1,o=!1,s=()=>{o||(o=!0,this.attemptReconnect())};r.onopen=()=>{this.socketGeneration===n&&(clearTimeout(i),a=!0,this.connectionState=l(this.connectionState),this.lastErrorText=void 0,this.setStatus({state:`open`}),this.flushMessageQueue(),e())},r.onmessage=e=>{if(this.socketGeneration!==n)return;this.connectionState=u(this.connectionState);let t=fe(String(e.data),`server`);t.ok?this.handleMessage(t.message):console.error(JSON.stringify({level:`error`,event:`ws_client.message_rejected`,code:t.issue.code,message:t.issue.message,timestamp:new Date().toISOString()}))},r.onerror=e=>{this.socketGeneration===n&&(console.error(JSON.stringify({level:`error`,event:`ws_client.error`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()})),this.lastErrorText=`Connection error (see browser devtools)`,a||(clearTimeout(i),t(Error(this.lastErrorText)),s()))},r.onclose=e=>{if(this.socketGeneration===n){if(this.sessionSwapPending=!1,!a){clearTimeout(i);let n=e.reason||`Closed with code ${e.code}`;this.lastErrorText=n,t(Error(n)),s();return}e.reason&&!this.lastErrorText?this.lastErrorText=`${e.reason} (code ${e.code})`:!this.lastErrorText&&e.code!==1e3&&(this.lastErrorText=`Closed with code ${e.code}`),this.attemptReconnect()}}}catch(e){if(this.socketGeneration!==n)return;this.lastErrorText=e instanceof Error?e.message:String(e),this.setStatus({state:`closed`,error:this.lastErrorText}),t(e)}})}attemptReconnect(){if(!this.shouldReconnect){this.connectionState=d(this.connectionState),this.reconnectTimer=null,this.setStatus({state:`closed`,error:this.lastErrorText??`Disconnected`});return}let t=p(this.connectionState,{...o,maxReconnectAttempts:this.maxReconnectAttempts,queueLimit:e.MAX_QUEUED_MESSAGES});if(this.connectionState=t.state,!t.plan){this.reconnectTimer=null,this.setStatus({state:`closed`,error:this.lastErrorText??`Disconnected`});return}this.setStatus({state:`reconnecting`,attempt:t.plan.attempt,nextRetryAt:t.plan.retryAt,lastError:this.lastErrorText}),this.reconnectTimer=setTimeout(async()=>{if(this.reconnectTimer=null,this.shouldReconnect)try{await this.connect()}catch(e){console.error(JSON.stringify({level:`error`,event:`ws_client.reconnect_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}},t.plan.delayMs)}retryNow(){this.currentStatus.state!==`open`&&(this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.connectionState=f(this.connectionState),this.connect().catch(e=>console.warn(JSON.stringify({level:`warn`,event:`ws_client.reconnect_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))))}flushMessageQueue(){for(;this.messageQueue.length>0;){let e=this.messageQueue.shift();if(e){let t=this.messageQueueWeights.get(e)??JSON.stringify(e).length;this.messageQueueChars=Math.max(0,this.messageQueueChars-t),this.messageQueueWeights.delete(e),this.send(e)}}this.messageQueueChars=0}handleMessage(e){if(e.type===`tool.confirm_needed`){let t=e.payload;this.pendingConfirms.set(t.id,{}),this.emit(e);return}if(e.type===`session.start`){let t=e.payload,n=me(t);this.sessionId=t.sessionId,this.protocolVersion=n.version,this.protocolCapabilities=new Set(n.capabilities),this.sessionSwapPending=!1}else e.type===`error`&&(e.payload.phase===`session.new`||e.payload.phase===`session.resume`)&&(this.sessionSwapPending=!1);this.emit(e)}emit(e){let t=this.handlers.get(e.type);if(t)for(let n of t)try{n(e)}catch(t){console.error(JSON.stringify({level:`error`,event:`ws_client.handler_error`,messageType:e.type,message:t instanceof Error?t.message:String(t),timestamp:new Date().toISOString()}))}}send(e,t={}){let n=this.constructor,r=n.MAX_QUEUED_MESSAGES,i=n.MAX_QUEUED_CHARS,o=D(e,`client`);if(!o.ok)return console.error(JSON.stringify({level:`error`,event:`ws_client.outbound_message_rejected`,code:o.issue.code,message:o.issue.message,timestamp:new Date().toISOString()})),!1;let s=JSON.stringify(o.message),c=this.ws?.readyState===WebSocket.OPEN;if(!c&&s.length>i)return console.warn(JSON.stringify({level:`warn`,event:`ws_client.message_queue_full`,cap:r,charCap:i,droppedType:e.type,reason:`message_too_large`,timestamp:new Date().toISOString()})),!1;let l=e.type===`session.new`||e.type===`session.resume`;if(l&&this.sessionSwapPending)return!1;if(l&&(this.sessionSwapPending=!0),t.echoToChat===!1){let t=xe[e.type];if(t){let e=this.suppressedChatEchoes.get(t)??[];for(e.push(Date.now()+Se);e.length>Ce;)e.shift();this.suppressedChatEchoes.set(t,e)}}if((e.type===`context.clear`||e.type===`session.new`||e.type===`session.resume`)&&a.dropAll(),c)return this.ws?.send(s),!0;{if(t.queueIfDisconnected===!1)return!1;let n;for(;this.messageQueue.length>0&&(this.messageQueue.length>=r||this.messageQueueChars+s.length>i);){let e=this.messageQueue.shift();if(!e)break;n??=e;let t=this.messageQueueWeights.get(e)??JSON.stringify(e).length;this.messageQueueChars=Math.max(0,this.messageQueueChars-t),this.messageQueueWeights.delete(e)}return n&&console.warn(JSON.stringify({level:`warn`,event:`ws_client.message_queue_full`,cap:r,charCap:i,droppedType:n.type,timestamp:new Date().toISOString()})),this.messageQueue.push(e),this.messageQueueWeights.set(e,s.length),this.messageQueueChars+=s.length,!0}}consumeSuppressedChatEcho(e){let t=this.suppressedChatEchoes.get(e);if(!t)return!1;let n=Date.now();for(;t.length>0&&t[0]<=n;)t.shift();return t.length===0?(this.suppressedChatEchoes.delete(e),!1):(t.shift(),t.length===0&&this.suppressedChatEchoes.delete(e),!0)}on(e,t){let n=this.handlers.get(e);return n||(n=new Set,this.handlers.set(e,n)),n.add(t),()=>n?.delete(t)}off(e,t){this.handlers.get(e)?.delete(t)}sendMessage(e,t){let r=`msg_${Date.now()}_${n().slice(0,8)}`;return this.send({type:`user_message`,payload:this.withSession({id:r,content:e,timestamp:Date.now(),...t&&t.length>0?{images:t}:{}})}),r}sendMailboxMessage(e){let t=`mbox_${Date.now()}_${n().slice(0,8)}`;return this.send({type:`mailbox.send`,payload:{requestId:t,to:e.to,type:e.type,audience:e.audience??`all`,subject:e.subject,body:e.body,priority:e.priority??`normal`}}),t}sendAbort(){this.send({type:`abort`,payload:this.withSession({})})}getGitInfo(){this.send({type:`git.info`})}getGitChanges(){this.send({type:`git.changes`})}getGitDiff(e){this.send({type:`git.diff`,payload:{path:e}})}sendConfirm(e,t){this.pendingConfirms.has(e)&&this.pendingConfirms.delete(e),this.send({type:`tool.confirm_result`,payload:this.withSession({id:e,decision:t})})}switchModel(e,t,r=8e3){let i=n();return new Promise(n=>{let a=!1,o=e=>{a||(a=!0,clearTimeout(c),s(),n(e))},s=this.on(`model.switch_result`,e=>{let t=e.payload;t.requestId===i&&o(t)}),c=setTimeout(()=>{o({requestId:i,success:!1,message:`Model switch timed out. Please try again.`,provider:e,model:t,runActive:!1})},r);this.send({type:`model.switch`,payload:{provider:e,model:t,requestId:i}})})}getProviderStatus(){this.send({type:`provider.status.get`})}retryProviderModel(e,t){this.send({type:`provider.status.retry`,payload:{providerId:e,model:t}})}clearProviderStatus(e,t){this.send({type:`provider.status.clear`,payload:{providerId:e,model:t}})}newSession(){this.send({type:`session.new`,payload:this.withSession({})})}shutdownCodebaseIndexServer(e=8e3){let t=n();return new Promise(n=>{let r=!1,i=e=>{r||(r=!0,clearTimeout(o),a(),n(e))},a=this.on(`codebase.index.server.shutdown_result`,e=>{e.payload.requestId&&e.payload.requestId!==t||i(e.payload)}),o=setTimeout(()=>{i({requestId:t,stopped:!1,reason:`Codebase index server shutdown timed out.`})},e);this.send({type:`codebase.index.server.shutdown`,payload:{requestId:t}},{queueIfDisconnected:!1})||i({requestId:t,stopped:!1,reason:`WebSocket is not connected.`})})}listProviders(){this.send({type:`providers.list`})}listProviderModels(e){this.send({type:`provider.models`,payload:{providerId:e}})}listSavedProviders(){this.send({type:`providers.saved`})}searchProviderModels(e,t){this.send({type:`provider.models.search`,payload:{query:e,...t===void 0?{}:{limit:t}}})}addKey(e,t,n){this.send({type:`key.add`,payload:{providerId:e,label:t,apiKey:n}})}updateKey(e,t,n){this.send({type:`key.update`,payload:{providerId:e,label:t,apiKey:n}})}deleteKey(e,t){this.send({type:`key.delete`,payload:{providerId:e,label:t}})}setActiveKey(e,t){this.send({type:`key.set_active`,payload:{providerId:e,label:t}})}addProvider(e,t,n,r,i,a){this.send({type:`provider.add`,payload:{id:e,family:t,baseUrl:n,apiKey:r,...i?{models:i}:{},...a?{customModels:a}:{}}})}removeProvider(e){this.send({type:`provider.remove`,payload:{providerId:e}})}startOAuth(e,t){this.send({type:`auth.oauth.start`,payload:t?{kind:e,providerId:t}:{kind:e}})}submitOAuthCode(e,t){this.send({type:`auth.oauth.code`,payload:{kind:e,input:t}})}cancelOAuth(e){this.send({type:`auth.oauth.cancel`,payload:{kind:e}})}probeProvider(e,t){this.send({type:`provider.probe`,payload:t===void 0?{providerId:e}:{providerId:e,timeoutMs:t}})}clearProviderModels(e){this.send(A(e))}undoProviderClear(e,t){this.send(j(e,t))}updateProvider(e){this.send(M(e))}clearContext(){this.send({type:`context.clear`,payload:this.withSession({})})}compactContext(e=!1){this.send({type:`context.compact`,payload:this.withSession({aggressive:e})})}repairContext(){this.send({type:`context.repair`,payload:this.withSession({})})}openContextEditor(){this.send({type:`context.editor.open`,payload:this.withSession({})})}validateContextEditor(e,t,n){this.send({type:`context.editor.validate`,payload:this.withSession({baseRevision:e,messages:t,allowRepair:n})})}applyContextEditor(e,t,n){this.send({type:`context.editor.apply`,payload:this.withSession({baseRevision:e,messages:t,allowRepair:n})})}debugContext(e){this.send({type:`context.debug`,payload:this.withSession({})},e)}listContextModes(){this.send({type:`context.modes.list`,payload:this.withSession({})})}switchContextMode(e){this.send({type:`context.mode.switch`,payload:this.withSession({id:e})})}createContextMode(e){this.send({type:`context.mode.create`,payload:this.withSession(e)})}updateContextMode(e,t){this.send({type:`context.mode.update`,payload:this.withSession({id:e,...t})})}deleteContextMode(e){this.send({type:`context.mode.delete`,payload:this.withSession({id:e})})}switchAutonomy(e){this.send({type:`autonomy.switch`,payload:{mode:e}})}updatePrefs(e){this.send({type:`prefs.update`,payload:e})}getPrefs(){this.send({type:`prefs.get`})}disconnect(){this.shouldReconnect=!1,this.connectionState=d(this.connectionState),this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.messageQueue.length=0,this.messageQueueChars=0,this.sessionSwapPending=!1,this.ws?.close(),this.ws=null}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}get currentSessionId(){return this.sessionId}};k(X);var Z=X,Q=null;function $(e){return Q||=new Z(e),Q}export{ge as a,H as c,he as i,a as l,be as n,_e as o,q as r,V as s,$ as t};
@@ -1,4 +1,5 @@
1
1
  import type React from 'react';
2
+ import type { QueueMode, QueuedItem } from '@/stores/chat-store';
2
3
  export declare const REFINE_RETRY_FEEDBACK = "Make another pass that is sharper and more self-contained. Use the provided project memory, current session context, and recent conversation only to resolve references and preserve project vocabulary; keep the original scope unchanged.";
3
4
  export interface ChatInputRefinePanelHostProps {
4
5
  enhanceEnabled: boolean;
@@ -16,9 +17,16 @@ export interface ChatInputRefinePanelHostProps {
16
17
  addUserMessage: (content: string) => void;
17
18
  setLoading: (loading: boolean) => void;
18
19
  sendMessage: (text: string) => void;
20
+ /** True while a run is in flight. Used to tell the mid-run (pre-queue)
21
+ * refinement path — which carries a preserved submit mode — apart from the
22
+ * idle path that sends directly. */
23
+ isLoading: boolean;
24
+ /** Enqueue the approved text with its preserved mode so the run.result
25
+ * drain dispatches it (btw → mailbox injection, queue → regular send). */
26
+ enqueue: (text: string, mode?: QueueMode, images?: QueuedItem['images']) => void;
19
27
  setInput: React.Dispatch<React.SetStateAction<string>>;
20
28
  resolveCancelInput: (prev: string, original: string) => string;
21
29
  notConnectedDraftKept: () => void;
22
30
  }
23
- export declare function ChatInputRefinePanelHost({ enhanceEnabled, refinePickOpen, setRefinePickOpen, refineModel, clientConnected, addUserMessage, setLoading, sendMessage, setInput, resolveCancelInput, notConnectedDraftKept, }: ChatInputRefinePanelHostProps): React.JSX.Element;
31
+ export declare function ChatInputRefinePanelHost({ enhanceEnabled, refinePickOpen, setRefinePickOpen, refineModel, clientConnected, addUserMessage, setLoading, sendMessage, isLoading, enqueue, setInput, resolveCancelInput, notConnectedDraftKept, }: ChatInputRefinePanelHostProps): React.JSX.Element;
24
32
  //# sourceMappingURL=refine-panel-host.d.ts.map
@@ -10,7 +10,5 @@
10
10
  * 5. Action plan displayed with "Execute Plan" button
11
11
  * 6. Execute sends a message to the current agent via WS to perform cleanup
12
12
  */
13
- export declare function DeadCodeScanPanel({ projectRoot }: {
14
- projectRoot: string;
15
- }): import("react").JSX.Element;
13
+ export declare function DeadCodeScanPanel(): import("react").JSX.Element;
16
14
  //# sourceMappingURL=DeadCodeScanPanel.d.ts.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Suspense fallback for lazy-loaded views — a quiet centered spinner so the
3
+ * first open of the editor / terminal / office map doesn't look frozen.
4
+ */
5
+ export declare function PanelSuspense({ label }: {
6
+ label?: string;
7
+ }): React.ReactElement;
8
+ //# sourceMappingURL=PanelSuspense.d.ts.map
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Display parity section for the WebUI SettingsPanel. Adds the settings the
3
+ * TUI exposes under its "Display" section (fields 39–44) plus a few that the
4
+ * TUI groups under "Reasoning" or "Debug" but which a WebUI user reasonably
5
+ * expects next to other appearance knobs: thinkingWord (22), statusline (34),
6
+ * animationStyle (36), preRefineSeconds (41), multiDiffSummaryThreshold (21).
7
+ *
8
+ * Pattern mirrors FleetSection.tsx: a stack of `rounded-xl` cards with a
9
+ * single header per card, and `divide-y divide-border/50` between rows inside
10
+ * a card. Each row calls `syncPref(key, value)` so the same write path that
11
+ * drives every other section also drives these — local zustand store +
12
+ * server `prefs.update` via the shared `syncPref` callback.
13
+ */
14
+ interface DisplaySectionProps {
15
+ /** Push a pref change locally + to the server. */
16
+ syncPref: (key: string, value: unknown) => void;
17
+ }
18
+ export declare function DisplaySection({ syncPref }: DisplaySectionProps): import("react").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=DisplaySection.d.ts.map
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Main view router — switches the main content area based on `currentView`.
3
+ *
4
+ * Extracted from App.tsx Phase 2 shell decomposition. Each view branch wraps
5
+ * its component in an ErrorBoundary + Suspense. Lazy-loaded views get a
6
+ * PanelSuspense fallback; eagerly-loaded views (chat, settings, context) do not.
7
+ */
8
+ export declare function ViewRouter({ sessionId, desktopShell }: {
9
+ sessionId: string | null;
10
+ desktopShell: boolean;
11
+ }): React.ReactElement;
12
+ //# sourceMappingURL=ViewRouter.d.ts.map
@@ -0,0 +1,53 @@
1
+ export declare function viewLabel(view: string): string;
2
+ export interface ServerProcessMetrics {
3
+ pid: number;
4
+ memoryUsage: {
5
+ rss: number;
6
+ heapUsed: number;
7
+ heapTotal: number;
8
+ };
9
+ heapLimit: number;
10
+ codebaseIndexServer?: {
11
+ status: 'unavailable' | 'offline' | 'connecting' | 'connected' | 'degraded' | 'unresponsive' | 'error' | 'stopping';
12
+ connected: boolean;
13
+ pid?: number | undefined;
14
+ health?: {
15
+ status: 'healthy' | 'degraded' | 'unresponsive';
16
+ latencyMs: number | null;
17
+ missedHeartbeats: number;
18
+ server?: {
19
+ uptimeMs: number;
20
+ memory: {
21
+ rss: number;
22
+ heapUsed: number;
23
+ heapTotal: number;
24
+ };
25
+ clients: number;
26
+ activeRequests: number;
27
+ queuedWrites: number;
28
+ pendingExternalFiles: number;
29
+ watchingExternal: boolean;
30
+ watchingClients?: number | undefined;
31
+ clientLeaseTimeoutMs?: number | undefined;
32
+ oldestClientIdleMs?: number | undefined;
33
+ } | undefined;
34
+ } | undefined;
35
+ } | undefined;
36
+ }
37
+ export declare function formatCompactBytes(bytes: number): string;
38
+ export declare function useServerProcessMetrics(): ServerProcessMetrics | null;
39
+ export declare function WorkbenchTopbar({ currentView, projectName, sessionLabel, isLoading, iteration, onPalette, onSearch, onModel, onSettings, }: {
40
+ currentView: string;
41
+ projectName?: string | undefined;
42
+ sessionLabel?: string | undefined;
43
+ isLoading: boolean;
44
+ iteration: {
45
+ index: number;
46
+ max: number;
47
+ } | null;
48
+ onPalette: () => void;
49
+ onSearch: () => void;
50
+ onModel: () => void;
51
+ onSettings: () => void;
52
+ }): import("react").JSX.Element;
53
+ //# sourceMappingURL=WorkbenchTopbar.d.ts.map
@@ -55,6 +55,8 @@ export interface DirectoryNode {
55
55
  files: GraphNodeData[];
56
56
  }
57
57
  export declare function normalizedPath(filePath: string): string;
58
+ export declare function _clearNormalizedPathCacheForTests(): void;
59
+ export declare function _normalizedPathCacheSizeForTests(): number;
58
60
  export declare function scopeKey(scope: CodeMapScope): string;
59
61
  export declare function scopeUrl(scope: CodeMapScope): string;
60
62
  export declare function relationItems(graph: CodeMapGraphResponse, nodeId: string, direction: 'incoming' | 'outgoing'): RelationItem[];
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Shared viewport breakpoint contract for the WebUI.
3
+ *
4
+ * Centralizes the Tailwind breakpoint values so every component
5
+ * uses the same pixel thresholds. Previously `matchMedia('(max-width: 768px)')`
6
+ * was scattered across 3+ files with the magic number inlined.
7
+ *
8
+ * Breakpoint values mirror Tailwind's `sm` (640px) and `md` (768px):
9
+ * - `mobile`: viewport ≤ 768px (below `md`)
10
+ * - `tablet`: 641px–768px (between `sm` and `md`)
11
+ * - `desktop`: > 768px (at or above `md`)
12
+ */
13
+ export interface ViewportState {
14
+ /** True when viewport width ≤ 768px (Tailwind `md` breakpoint). */
15
+ isMobile: boolean;
16
+ /** True when viewport width ≤ 640px (Tailwind `sm` breakpoint). */
17
+ isSmall: boolean;
18
+ /** Current viewport width in pixels (0 during SSR). */
19
+ width: number;
20
+ }
21
+ declare const MOBILE_BREAKPOINT = 768;
22
+ declare const SMALL_BREAKPOINT = 640;
23
+ /**
24
+ * React hook that tracks the viewport breakpoint state.
25
+ * Re-renders on viewport resize. SSR-safe (returns desktop defaults
26
+ * until mounted).
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * const { isMobile } = useViewport();
31
+ * if (isMobile) return <MobileLayout />;
32
+ * return <DesktopLayout />;
33
+ * ```
34
+ */
35
+ export declare function useViewport(): ViewportState;
36
+ export declare function isMobileViewport(): boolean;
37
+ export { MOBILE_BREAKPOINT, SMALL_BREAKPOINT };
38
+ //# sourceMappingURL=useViewport.d.ts.map
@@ -22,6 +22,7 @@ export declare function useWebSocket(): {
22
22
  client: WrongStackWebSocketClient;
23
23
  sendMessage: (content: string, images?: import('@/types').WSUserMessageImage[]) => string | null;
24
24
  sendAbort: () => void;
25
+ sendMailboxMessage: (opts: Parameters<(opts: import("@/lib/ws-client").WSMailboxSendOptions) => string>[0]) => string;
25
26
  sendConfirm: (id: string, decision: 'yes' | 'no' | 'always' | 'deny') => void;
26
27
  switchModel: (provider: string, model: string) => Promise<{
27
28
  requestId?: string | undefined;
package/dist/index.html CHANGED
@@ -5,39 +5,38 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/wrongstack.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>WrongStack WebUI</title>
8
- <script type="module" crossorigin src="/assets/index-BPfIz78e.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-DxZTscTk.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-QTnfLwEv.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/monaco-BLUV5g0U.js">
11
- <link rel="modulepreload" crossorigin href="/assets/markdown-L6DLSM7f.js">
12
- <link rel="modulepreload" crossorigin href="/assets/vendor-2VBBgNb5.js">
13
- <link rel="modulepreload" crossorigin href="/assets/utils-CN2sfDVP.js">
14
- <link rel="modulepreload" crossorigin href="/assets/chat-store-CM1dMeuY.js">
15
- <link rel="modulepreload" crossorigin href="/assets/ui-store-CS-njcmT.js">
16
- <link rel="modulepreload" crossorigin href="/assets/activity-qoJ3grs0.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/markdown-sSmz-Ua_.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/vendor-BTDGplXK.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/utils-DxDx8yib.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/chat-store-CWhuSNod.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/ui-store-C-oyG_br.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/activity-Cv_EIWjY.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/chat-BJzPxfyr.js">
18
18
  <link rel="modulepreload" crossorigin href="/assets/commandPalette-DpaemFux.js">
19
- <link rel="modulepreload" crossorigin href="/assets/common-suUxW9sA.js">
20
- <link rel="modulepreload" crossorigin href="/assets/settings-D6wFOw5n.js">
19
+ <link rel="modulepreload" crossorigin href="/assets/common-BfVFjVhf.js">
20
+ <link rel="modulepreload" crossorigin href="/assets/settings-r_KOGrbF.js">
21
21
  <link rel="modulepreload" crossorigin href="/assets/setup-BFcmn89w.js">
22
22
  <link rel="modulepreload" crossorigin href="/assets/toasts-BL_8kH4B.js">
23
- <link rel="modulepreload" crossorigin href="/assets/i18n-1BkaqMgr.js">
24
- <link rel="modulepreload" crossorigin href="/assets/session-store-BsNYnfOc.js">
25
- <link rel="modulepreload" crossorigin href="/assets/ws-client-WVGn8ORh.js">
26
- <link rel="modulepreload" crossorigin href="/assets/codemap-activity-store-DP3mCZu1.js">
27
- <link rel="modulepreload" crossorigin href="/assets/mailbox-store-DVoNbOZr.js">
28
- <link rel="modulepreload" crossorigin href="/assets/stores-mpa0202y.js">
29
- <link rel="modulepreload" crossorigin href="/assets/view-navigation-Cgy5xh9q.js">
30
- <link rel="modulepreload" crossorigin href="/assets/codemap-index-store-DyAe3ZYJ.js">
31
- <link rel="modulepreload" crossorigin href="/assets/Toaster-CbcX_Cou.js">
32
- <link rel="modulepreload" crossorigin href="/assets/useWebSocket-Dh3aAFDE.js">
33
- <link rel="modulepreload" crossorigin href="/assets/dialog-CT1PTjzK.js">
34
- <link rel="modulepreload" crossorigin href="/assets/button-uGqXvobk.js">
35
- <link rel="modulepreload" crossorigin href="/assets/ModelPicker-CN-UD3lc.js">
36
- <link rel="modulepreload" crossorigin href="/assets/LazyMarkdown-BGwFjYKr.js">
37
- <link rel="modulepreload" crossorigin href="/assets/input-B-VCX2sG.js">
23
+ <link rel="modulepreload" crossorigin href="/assets/i18n-DOuSY1L8.js">
24
+ <link rel="modulepreload" crossorigin href="/assets/session-store-D4JWBP5w.js">
25
+ <link rel="modulepreload" crossorigin href="/assets/ws-client-DqIqzkfU.js">
26
+ <link rel="modulepreload" crossorigin href="/assets/codemap-activity-store-C1XWbXeZ.js">
27
+ <link rel="modulepreload" crossorigin href="/assets/mailbox-store-_8voaug1.js">
28
+ <link rel="modulepreload" crossorigin href="/assets/stores-CpZiOiOP.js">
29
+ <link rel="modulepreload" crossorigin href="/assets/view-navigation-BRtuAwZo.js">
30
+ <link rel="modulepreload" crossorigin href="/assets/codemap-index-store-DDT3gP6t.js">
31
+ <link rel="modulepreload" crossorigin href="/assets/Toaster-Bd6ckyrP.js">
32
+ <link rel="modulepreload" crossorigin href="/assets/useWebSocket-BTXT0rOW.js">
33
+ <link rel="modulepreload" crossorigin href="/assets/dialog-DYJUM0p1.js">
34
+ <link rel="modulepreload" crossorigin href="/assets/button-Clh96jMK.js">
35
+ <link rel="modulepreload" crossorigin href="/assets/input-CW-Yw2Wu.js">
36
+ <link rel="modulepreload" crossorigin href="/assets/ModelPicker-Dt0wCi90.js">
38
37
  <link rel="stylesheet" crossorigin href="/assets/monaco-Bowa0-zp.css">
39
38
  <link rel="stylesheet" crossorigin href="/assets/vendor-BMdWcCR4.css">
40
- <link rel="stylesheet" crossorigin href="/assets/index-BlceaIyu.css">
39
+ <link rel="stylesheet" crossorigin href="/assets/index-C09Opuro.css">
41
40
  </head>
42
41
  <body>
43
42
  <div id="root"></div>