@wrongstack/webui 0.313.1 → 0.316.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/dist/assets/AgentRosterView-CESYPVXA.js +9 -0
  2. package/dist/assets/AnalyticsDashboard-zDBIqTxO.js +1 -0
  3. package/dist/assets/AudienceMemoryPanel-BnNJ0EhQ.js +3 -0
  4. package/dist/assets/ChangesView-CGwCocSR.js +1 -0
  5. package/dist/assets/ChimeraReviewsView-CFxZwJBI.js +1 -0
  6. package/dist/assets/ChronicleDashboard-DKiMK5nl.js +1 -0
  7. package/dist/assets/CodeEditor-CZcMPNTH.js +2 -0
  8. package/dist/assets/CodeMap-zPUlmh5G.js +1 -0
  9. package/dist/assets/ConfirmModal-CUGk-0lT.js +1 -0
  10. package/dist/assets/{CronJobsPanel-BzH_InFe.js → CronJobsPanel-C_wutCVP.js} +1 -1
  11. package/dist/assets/{DeadCodeScanPanel-Dj-5SAEE.js → DeadCodeScanPanel-DCCjg17Q.js} +2 -2
  12. package/dist/assets/{DebugDashboard-C-lpnxsJ.js → DebugDashboard-D-ogYAbO.js} +1 -1
  13. package/dist/assets/DesignGalleryView-CtlHZWOn.js +1 -0
  14. package/dist/assets/GoalView-Czksj2nD.js +1 -0
  15. package/dist/assets/KanbanView-C5_GD0qk.js +3 -0
  16. package/dist/assets/MailboxDetailView-2rWp3cTv.js +1 -0
  17. package/dist/assets/MemoryDrawer-D9Chtt6v.js +1 -0
  18. package/dist/assets/MemoryManager-Bj41s3KW.js +1 -0
  19. package/dist/assets/ModelPicker-vwrqLOL4.js +1 -0
  20. package/dist/assets/OfficeMapPanel-BfuePIGH.js +4 -0
  21. package/dist/assets/ProcessMonitor-CHPTCtyu.js +1 -0
  22. package/dist/assets/PromptJournalView-tOTjKpi8.js +1 -0
  23. package/dist/assets/QueuePanel-BIwoG-tG.js +1 -0
  24. package/dist/assets/RefreshDebugView-DesPEAAq.js +1 -0
  25. package/dist/assets/RequirementIntakeView-BonXC1a5.js +1 -0
  26. package/dist/assets/SageTabs-82lpgRh-.js +2 -0
  27. package/dist/assets/SddFlowGraph-CMedulJi.js +1 -0
  28. package/dist/assets/SddHub-D3Gm4Io2.js +2 -0
  29. package/dist/assets/SessionInspectView-BUs2B4mF.js +1 -0
  30. package/dist/assets/SessionList-DxQgJqgl.js +1 -0
  31. package/dist/assets/SessionsDashboard-JtwQf-N5.js +1 -0
  32. package/dist/assets/SetupScreen-XFBFjPbd.js +1 -0
  33. package/dist/assets/SkillDetailView-C_P_-783.js +3 -0
  34. package/dist/assets/{SpecsView-B9Aj1qpe.js → SpecsView-D6GqoZ2L.js} +1 -1
  35. package/dist/assets/TechStackView-BE4tdEYZ.js +2 -0
  36. package/dist/assets/TerminalPanel-BcizpYrZ.js +1 -0
  37. package/dist/assets/activity-B2_Vr2oD.js +10 -0
  38. package/dist/assets/activity-BF1idM4Y.js +10 -0
  39. package/dist/assets/activity-C-kOJZXC.js +10 -0
  40. package/dist/assets/activity-DPpMW8BU.js +10 -0
  41. package/dist/assets/activity-DYMBKGt0.js +10 -0
  42. package/dist/assets/activity-IxgYWPDt.js +10 -0
  43. package/dist/assets/activity-q85HXQNv.js +10 -0
  44. package/dist/assets/{button-Dhmop_yM.js → button-C_EYpeP-.js} +1 -1
  45. package/dist/assets/{chat-CR2B97dj.js → chat-B5a3cvps.js} +1 -1
  46. package/dist/assets/{chat-DResBrkV.js → chat-B60h8Cji.js} +1 -1
  47. package/dist/assets/{chat-BnkVCZ3Q.js → chat-BNWqeV-N.js} +1 -1
  48. package/dist/assets/chat-BlllxfpP.js +1 -0
  49. package/dist/assets/{chat-BfQBSiII.js → chat-BvKkSd09.js} +1 -1
  50. package/dist/assets/{chat-BPuAsrkF.js → chat-DTI7lNDx.js} +1 -1
  51. package/dist/assets/{chat-Di8o0wDz.js → chat-DlhXGxxi.js} +1 -1
  52. package/dist/assets/chat-store-x5w4ss_D.js +1 -0
  53. package/dist/assets/{codemap-activity-store-BWt_a7Gs.js → codemap-activity-store-ZCXcHlwd.js} +1 -1
  54. package/dist/assets/codemap-index-store-Cb5mn74P.js +1 -0
  55. package/dist/assets/{dialog-DPl7DolS.js → dialog-9eW9sG90.js} +1 -1
  56. package/dist/assets/{empty-state-IT10GzRA.js → empty-state-DJb_tw7Q.js} +1 -1
  57. package/dist/assets/i18n-DkMSw3tI.js +2 -0
  58. package/dist/assets/index-BSpLtv9S.css +1 -0
  59. package/dist/assets/index-CTyM4bm8.js +137 -0
  60. package/dist/assets/{input-C3rIQ26u.js → input-CsEvo8Oo.js} +1 -1
  61. package/dist/assets/{mailbox-store-DhAVkVJQ.js → mailbox-store-KHcrg_Fm.js} +1 -1
  62. package/dist/assets/{roster-ws-Ch6O90eT.js → roster-ws-CXnrEaEu.js} +1 -1
  63. package/dist/assets/settings-1o1gooaL.js +1 -0
  64. package/dist/assets/settings-BGvRM3vJ.js +1 -0
  65. package/dist/assets/{settings-BV1_j8_-.js → settings-BV8EFmpH.js} +1 -1
  66. package/dist/assets/settings-Ci_RMpCQ.js +1 -0
  67. package/dist/assets/settings-Cy_xp4Jt.js +1 -0
  68. package/dist/assets/settings-D-LlBmzO.js +1 -0
  69. package/dist/assets/settings-nWMBX3xS.js +1 -0
  70. package/dist/assets/{shared-BUXBOqyO.js → shared-sYlGVRJI.js} +1 -1
  71. package/dist/assets/stores-5ynEAenb.js +7 -0
  72. package/dist/assets/toasts-BsmyGP95.js +1 -0
  73. package/dist/assets/toasts-CgXHu8ZB.js +1 -0
  74. package/dist/assets/toasts-DZ6HdKgG.js +1 -0
  75. package/dist/assets/toasts-DizCJjAR.js +1 -0
  76. package/dist/assets/toasts-NC2MT4uN.js +1 -0
  77. package/dist/assets/toasts-bPl097de.js +1 -0
  78. package/dist/assets/toasts-tCVo15mP.js +1 -0
  79. package/dist/assets/ui-store-9b7zzi3V.js +1 -0
  80. package/dist/assets/useWebSocket-1kxFH7f8.js +27 -0
  81. package/dist/assets/utils-DIo8iytt.js +1 -0
  82. package/dist/assets/{vector-memory-panel-CBA4CK6N.js → vector-memory-panel-Dd3jXXYA.js} +1 -1
  83. package/dist/assets/{vendor-DZ9_OO6N.js → vendor-UFryhfbN.js} +30 -30
  84. package/dist/assets/view-navigation-ICwpL9qw.js +1 -0
  85. package/dist/assets/ws-client-Ccf_VLRQ.js +22 -0
  86. package/dist/components/AgentOfficeView/model.d.ts +4 -3
  87. package/dist/components/AgentRosterView.d.ts +8 -1
  88. package/dist/components/ChatInput/composer-button-bar.d.ts +6 -2
  89. package/dist/components/ChatInput/image-attachments.d.ts +2 -1
  90. package/dist/components/ChatInput/next-steps-helpers.d.ts +0 -16
  91. package/dist/components/ChatInput/refine-panel-host.d.ts +2 -2
  92. package/dist/components/ChatInput/session-effort-select.d.ts +16 -0
  93. package/dist/components/ChatInput/slash-commands.d.ts +2 -1
  94. package/dist/components/ChatInput/slash-routing.d.ts +8 -0
  95. package/dist/components/ChatInput/use-chat-input-mcp.d.ts +2 -1
  96. package/dist/components/ChatInput/use-paste-drop.d.ts +2 -1
  97. package/dist/components/ChatInput/use-refine-timeout.d.ts +2 -1
  98. package/dist/components/ChatInput/use-speech-recognition.d.ts +9 -0
  99. package/dist/components/ChatView/AgentTabs.d.ts +1 -1
  100. package/dist/components/ChatView/BrainDecisionCard.d.ts +9 -0
  101. package/dist/components/ChatView/ChatHeader.d.ts +3 -3
  102. package/dist/components/ChatView/ChatRowView.d.ts +3 -1
  103. package/dist/components/ChatView/ChimeraReportCard.d.ts +22 -0
  104. package/dist/components/ChatView/CouncilDecisionCard.d.ts +9 -0
  105. package/dist/components/ChatView/auto-collapse.d.ts +2 -1
  106. package/dist/components/ChatView/useChatViewState.d.ts +14 -28
  107. package/dist/components/ChatView/utils.d.ts +2 -1
  108. package/dist/components/ChimeraReviewsView.d.ts +2 -0
  109. package/dist/components/CodeMapActivityStreamPanel.d.ts +2 -1
  110. package/dist/components/CodeMapDirectoryTree.d.ts +2 -1
  111. package/dist/components/CodeMapLiveOverlay.d.ts +0 -3
  112. package/dist/components/CodeMapSelectedNodeSummary.d.ts +2 -1
  113. package/dist/components/CollabPanel.d.ts +2 -7
  114. package/dist/components/ConfirmModal.d.ts +6 -13
  115. package/dist/components/CronJobsPanel.d.ts +2 -1
  116. package/dist/components/CustomRosterPanel.d.ts +0 -1
  117. package/dist/components/DependencyGraph.d.ts +2 -1
  118. package/dist/components/FileActivityDrawer.d.ts +2 -2
  119. package/dist/components/FileExplorer/FileExplorerModals.d.ts +11 -6
  120. package/dist/components/FileExplorer/TreeRow.d.ts +2 -6
  121. package/dist/components/FileExplorer/tree-helpers.d.ts +7 -0
  122. package/dist/components/FleetPanel.d.ts +4 -13
  123. package/dist/components/InspectorPanel.d.ts +6 -1
  124. package/dist/components/KanbanBoardSidebar.d.ts +2 -1
  125. package/dist/components/KanbanBoardState.d.ts +1 -1
  126. package/dist/components/KanbanContractGraphView.d.ts +3 -2
  127. package/dist/components/KanbanQueueHealthBar.d.ts +2 -1
  128. package/dist/components/KanbanTaskActivityRecorder.d.ts +2 -1
  129. package/dist/components/MemoryManager/MemoryDetail.d.ts +2 -1
  130. package/dist/components/MemoryManager/MemoryEditor.d.ts +2 -1
  131. package/dist/components/MemoryManager/MemoryFilters.d.ts +2 -1
  132. package/dist/components/MemoryManager/MemoryList.d.ts +2 -1
  133. package/dist/components/MemoryManager/MemorySearchBreakdown.d.ts +2 -1
  134. package/dist/components/MemoryManager/ReviewQueue.d.ts +2 -1
  135. package/dist/components/MemoryManager/SageTabs.d.ts +2 -1
  136. package/dist/components/MemoryManager/shared.d.ts +0 -1
  137. package/dist/components/MessageBubble/FailedRunContinue.d.ts +12 -0
  138. package/dist/components/MessageBubble/utils.d.ts +6 -0
  139. package/dist/components/ModelPickDialog.d.ts +1 -1
  140. package/dist/components/ModelSelectDialog.d.ts +4 -3
  141. package/dist/components/NextStepsBar.d.ts +1 -6
  142. package/dist/components/NotificationMenu.d.ts +6 -0
  143. package/dist/components/OfficeMapCanvas/edges.d.ts +0 -6
  144. package/dist/components/OfficeMapCanvas/nodes.d.ts +0 -32
  145. package/dist/components/OfficeMapCanvas/use-recently-finished.d.ts +2 -1
  146. package/dist/components/OfficeMapCanvas/utils.d.ts +4 -10
  147. package/dist/components/ProcessMonitor.d.ts +2 -1
  148. package/dist/components/ProviderWaitingRoom.d.ts +8 -0
  149. package/dist/components/QueuePanel.d.ts +1 -1
  150. package/dist/components/QuickModelSwitcher.filter.d.ts +23 -7
  151. package/dist/components/RestoreTabsModal.d.ts +20 -0
  152. package/dist/components/SddFlowGraph.d.ts +3 -2
  153. package/dist/components/SessionTabBar/TabMap.d.ts +19 -0
  154. package/dist/components/SessionTabBar/summaries.d.ts +39 -0
  155. package/dist/components/SessionTabBar.d.ts +14 -0
  156. package/dist/components/SettingsPanel/ClearAllowlistDialog.d.ts +2 -1
  157. package/dist/components/SettingsPanel/ModelCatalogPicker.d.ts +2 -14
  158. package/dist/components/SettingsPanel/ModelEffortSelect.d.ts +12 -0
  159. package/dist/components/SettingsPanel/ModelListEditor.d.ts +2 -1
  160. package/dist/components/SettingsPanel/ModelSchemaEditor.d.ts +2 -1
  161. package/dist/components/SettingsPanel/ModelSection.d.ts +3 -1
  162. package/dist/components/SettingsPanel/ModelTiersSection.d.ts +7 -0
  163. package/dist/components/SettingsPanel/OAuthLoginSection.d.ts +2 -2
  164. package/dist/components/SettingsPanel/PluginToggleList.d.ts +3 -1
  165. package/dist/components/SettingsPanel/ProviderModelsPanel.d.ts +2 -1
  166. package/dist/components/SettingsPanel/ProviderModelsPanel.filter.d.ts +2 -1
  167. package/dist/components/SettingsPanel/ProviderSection.d.ts +2 -2
  168. package/dist/components/SettingsPanel/ToolsSection.d.ts +0 -10
  169. package/dist/components/SettingsPanel/brain-section-options.d.ts +3 -10
  170. package/dist/components/SettingsPanel/contracts.d.ts +5 -3
  171. package/dist/components/SettingsPanel/sync-settings-preference.d.ts +8 -0
  172. package/dist/components/SettingsPanel/undo-send-decision.d.ts +2 -1
  173. package/dist/components/SidePanel/ChangesPanel.d.ts +0 -6
  174. package/dist/components/SidePanel/DesignStudioPanel.d.ts +7 -0
  175. package/dist/components/SidePanel/SessionList.d.ts +6 -6
  176. package/dist/components/SystemPromptDialog.d.ts +18 -0
  177. package/dist/components/TaskActivityTimeline.d.ts +3 -3
  178. package/dist/components/TaskBoard.d.ts +1 -1
  179. package/dist/components/TaskCard.d.ts +2 -7
  180. package/dist/components/TaskExecutionAttempts.d.ts +2 -1
  181. package/dist/components/TaskIntelligencePanel.d.ts +1 -1
  182. package/dist/components/TaskRiskPanel.d.ts +4 -3
  183. package/dist/components/TechStackView/DependencyDetail.d.ts +2 -1
  184. package/dist/components/TechStackView/DependencyTable.d.ts +2 -1
  185. package/dist/components/TechStackView/FindingsPanel.d.ts +2 -1
  186. package/dist/components/TechStackView/TechStackToolbar.d.ts +2 -1
  187. package/dist/components/TechStackView/shared.d.ts +5 -5
  188. package/dist/components/Toaster.d.ts +3 -31
  189. package/dist/components/ToolStatsModal.d.ts +15 -0
  190. package/dist/components/UpdateBanner.d.ts +6 -4
  191. package/dist/components/WorkbenchTopbar.d.ts +1 -3
  192. package/dist/components/agent-roster-data.d.ts +1 -1
  193. package/dist/components/agents/AgentDetailSection.d.ts +2 -1
  194. package/dist/components/agents/AgentRosterCard.d.ts +2 -1
  195. package/dist/components/agents/FleetSummaryBar.d.ts +6 -3
  196. package/dist/components/codemap-model.d.ts +3 -2
  197. package/dist/components/ui/PickerCardList.d.ts +3 -2
  198. package/dist/components/ui/badge.d.ts +2 -2
  199. package/dist/components/ui/button.d.ts +2 -2
  200. package/dist/components/ui/concurrency-gauge.d.ts +2 -1
  201. package/dist/components/ui/dialog.d.ts +5 -5
  202. package/dist/components/ui/dropdown-menu.d.ts +8 -8
  203. package/dist/components/ui/event-timeline.d.ts +2 -1
  204. package/dist/components/ui/fleet-agent-row.d.ts +2 -7
  205. package/dist/components/ui/scroll-area.d.ts +2 -2
  206. package/dist/components/ui/sheet.d.ts +2 -2
  207. package/dist/components/ui/sparkline.d.ts +2 -1
  208. package/dist/components/vector-memory-panel/model.d.ts +2 -7
  209. package/dist/hooks/index.d.ts +1 -0
  210. package/dist/hooks/useDesktopBridge.d.ts +2 -1
  211. package/dist/hooks/useF5Resilience.d.ts +0 -14
  212. package/dist/hooks/useFleetPolling.d.ts +2 -1
  213. package/dist/hooks/useGlobalKeyboardShortcuts.d.ts +4 -1
  214. package/dist/hooks/useIntegrationStatus.d.ts +10 -0
  215. package/dist/hooks/useKanbanMeta.d.ts +4 -3
  216. package/dist/hooks/useLiveContextDebug.d.ts +4 -3
  217. package/dist/hooks/useMemoryForFile.d.ts +3 -2
  218. package/dist/hooks/usePagination.d.ts +2 -1
  219. package/dist/hooks/useProviderModels.d.ts +1 -0
  220. package/dist/hooks/useSessionSubscription.d.ts +15 -0
  221. package/dist/hooks/useViewport.d.ts +2 -3
  222. package/dist/hooks/useWebSocket.d.ts +6 -1
  223. package/dist/hooks/ws-handlers/chat-handlers.d.ts +22 -10
  224. package/dist/hooks/ws-handlers/coordinator-handlers.d.ts +7 -0
  225. package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts +1 -3
  226. package/dist/hooks/ws-handlers/misc-handlers.d.ts +22 -0
  227. package/dist/hooks/ws-handlers/session-context-handlers.d.ts +24 -2
  228. package/dist/hooks/ws-handlers/session-execution-handlers.d.ts +12 -0
  229. package/dist/hooks/ws-handlers/session-handlers.d.ts +3 -3
  230. package/dist/hooks/ws-handlers/session-replay-handlers.d.ts +31 -2
  231. package/dist/hooks/ws-handlers/techstack-handlers.d.ts +0 -3
  232. package/dist/index.html +30 -26
  233. package/dist/index.js +77572 -66789
  234. package/dist/lib/agent-office.d.ts +3 -3
  235. package/dist/lib/agent-session.d.ts +19 -0
  236. package/dist/lib/agent-status.d.ts +5 -4
  237. package/dist/lib/completion.d.ts +3 -2
  238. package/dist/lib/delegate-format.d.ts +33 -0
  239. package/dist/lib/favicon.d.ts +2 -1
  240. package/dist/lib/kanban-verification.d.ts +3 -2
  241. package/dist/lib/model-matrix-routes.d.ts +3 -3
  242. package/dist/lib/plugin-enablement.d.ts +1 -1
  243. package/dist/lib/reasoning-effort.d.ts +76 -0
  244. package/dist/lib/sdd-theme.d.ts +4 -3
  245. package/dist/lib/task-brief-preview.d.ts +5 -0
  246. package/dist/lib/terminal-dock.d.ts +0 -1
  247. package/dist/lib/view-navigation.d.ts +2 -2
  248. package/dist/lib/ws-client-actions.d.ts +1 -0
  249. package/dist/lib/ws-client-domain-methods.d.ts +45 -5
  250. package/dist/lib/ws-client-utils.d.ts +33 -0
  251. package/dist/lib/ws-client.d.ts +135 -6
  252. package/dist/manifest.json +17 -0
  253. package/dist/protocol-compatibility.d.ts +0 -10
  254. package/dist/stores/auto-submit-streak.d.ts +3 -1
  255. package/dist/stores/chat-lanes.d.ts +279 -0
  256. package/dist/stores/chat-retention.d.ts +2 -4
  257. package/dist/stores/chat-store-types.d.ts +1 -0
  258. package/dist/stores/chat-store.d.ts +46 -25
  259. package/dist/stores/chimera-hub-store.d.ts +140 -0
  260. package/dist/stores/chimera-reports-store.d.ts +45 -0
  261. package/dist/stores/codemap-activity-store.d.ts +4 -4
  262. package/dist/stores/context-editor-store.d.ts +4 -5
  263. package/dist/stores/coordinator-monitor-store.d.ts +3 -2
  264. package/dist/stores/council-log-store.d.ts +6 -20
  265. package/dist/stores/file-store.d.ts +32 -13
  266. package/dist/stores/fleet-store.d.ts +49 -5
  267. package/dist/stores/git-changes-store.d.ts +25 -1
  268. package/dist/stores/goal-run-store.d.ts +2 -2
  269. package/dist/stores/history-store.d.ts +11 -0
  270. package/dist/stores/index.d.ts +17 -9
  271. package/dist/stores/local-prefs.d.ts +87 -0
  272. package/dist/stores/mailbox-store.d.ts +2 -2
  273. package/dist/stores/memory-injector-store.d.ts +2 -2
  274. package/dist/stores/memory-lifecycle-store.d.ts +6 -2
  275. package/dist/stores/monitor-store.d.ts +3 -2
  276. package/dist/stores/notification-store.d.ts +141 -0
  277. package/dist/stores/provider-status-store.d.ts +19 -0
  278. package/dist/stores/restore-tabs-store.d.ts +29 -0
  279. package/dist/stores/resume-progress-store.d.ts +58 -0
  280. package/dist/stores/session-inspect-store.d.ts +1 -1
  281. package/dist/stores/session-lanes.d.ts +242 -0
  282. package/dist/stores/session-scoped-store.d.ts +56 -0
  283. package/dist/stores/session-store.d.ts +97 -154
  284. package/dist/stores/session-tab-store.d.ts +197 -0
  285. package/dist/stores/side-effect-store.d.ts +9 -1
  286. package/dist/stores/system-prompt-store.d.ts +48 -0
  287. package/dist/stores/tool-stats-store.d.ts +52 -0
  288. package/dist/stores/types.d.ts +81 -4
  289. package/dist/stores/ui-store.d.ts +113 -11
  290. package/dist/types/brain.d.ts +17 -16
  291. package/dist/types/chronicle.d.ts +3 -2
  292. package/dist/types/client-message.d.ts +139 -23
  293. package/dist/types/collab.d.ts +0 -2
  294. package/dist/types/protocol-core.d.ts +62 -6
  295. package/dist/types/server-message.d.ts +204 -3
  296. package/dist/types/skills-design.d.ts +2 -1
  297. package/package.json +11 -11
  298. package/dist/assets/AgentRosterView-p5iiedCA.js +0 -9
  299. package/dist/assets/AnalyticsDashboard-B0sbSAxw.js +0 -1
  300. package/dist/assets/AudienceMemoryPanel-DcDONq7t.js +0 -3
  301. package/dist/assets/ChangesView-CD3JR3qY.js +0 -1
  302. package/dist/assets/ChronicleDashboard-3tJUiU7K.js +0 -1
  303. package/dist/assets/CodeEditor-0RJa9mSq.js +0 -2
  304. package/dist/assets/CodeMap-BvqQN6MG.js +0 -1
  305. package/dist/assets/ConfirmModal-CRSE2t_c.js +0 -1
  306. package/dist/assets/DesignGalleryView-BKl6Ce71.js +0 -1
  307. package/dist/assets/GoalView-Db55m-Nq.js +0 -1
  308. package/dist/assets/KanbanView-BQ7duNsz.js +0 -3
  309. package/dist/assets/MailboxDetailView-CgHzqllF.js +0 -1
  310. package/dist/assets/MemoryDrawer-BNTsi4jl.js +0 -1
  311. package/dist/assets/MemoryManager-B4NAvfYx.js +0 -1
  312. package/dist/assets/ModelPicker-BtK3pwfC.js +0 -1
  313. package/dist/assets/OfficeMapPanel-Bk9q12hP.js +0 -4
  314. package/dist/assets/ProcessMonitor-BTndLGIV.js +0 -1
  315. package/dist/assets/PromptJournalView-DbwN6AWe.js +0 -1
  316. package/dist/assets/QueuePanel-Cb1mIIuO.js +0 -1
  317. package/dist/assets/RefreshDebugView-CzGncYqB.js +0 -1
  318. package/dist/assets/RequirementIntakeView-BgKJbUlD.js +0 -1
  319. package/dist/assets/SageTabs-mB6lxkdD.js +0 -2
  320. package/dist/assets/SddFlowGraph-C484p5L9.js +0 -1
  321. package/dist/assets/SddHub-DsD8ORZo.js +0 -2
  322. package/dist/assets/SessionInspectView-DtM6MBbL.js +0 -1
  323. package/dist/assets/SessionList-CCaEa3iW.js +0 -1
  324. package/dist/assets/SessionsDashboard-CxatSEv6.js +0 -1
  325. package/dist/assets/SetupScreen-CBkuOnoN.js +0 -1
  326. package/dist/assets/SkillDetailView-DKVIAnwb.js +0 -3
  327. package/dist/assets/TechStackView-B6WDU-tt.js +0 -2
  328. package/dist/assets/TerminalPanel-Dfkt3xtA.js +0 -1
  329. package/dist/assets/Toaster-CcgCyzaU.js +0 -1
  330. package/dist/assets/activity-BA8C9ueU.js +0 -9
  331. package/dist/assets/activity-BYnOci5N.js +0 -9
  332. package/dist/assets/activity-COQ9xSFu.js +0 -9
  333. package/dist/assets/activity-CuJqhGz7.js +0 -9
  334. package/dist/assets/activity-D3ZccGOh.js +0 -9
  335. package/dist/assets/activity-YMES6OPI.js +0 -9
  336. package/dist/assets/activity-zlMMaNE1.js +0 -9
  337. package/dist/assets/chat-CzaGXz_W.js +0 -1
  338. package/dist/assets/chat-store-BiEXyguk.js +0 -17
  339. package/dist/assets/codemap-index-store-CDhApwWQ.js +0 -1
  340. package/dist/assets/i18n-BeHaHx3x.js +0 -2
  341. package/dist/assets/index-B8J_xxU5.css +0 -1
  342. package/dist/assets/index-BLI23QVE.js +0 -134
  343. package/dist/assets/session-store-CKpAwNIm.js +0 -1
  344. package/dist/assets/settings-BNbqEBSr.js +0 -1
  345. package/dist/assets/settings-BsZgLIo2.js +0 -1
  346. package/dist/assets/settings-C3OnmFrY.js +0 -1
  347. package/dist/assets/settings-C3bNf1Bx.js +0 -1
  348. package/dist/assets/settings-C9FOpDBt.js +0 -1
  349. package/dist/assets/settings-oeXlO4HA.js +0 -1
  350. package/dist/assets/stores-BskP1BVl.js +0 -7
  351. package/dist/assets/toasts-BCDGDcyq.js +0 -1
  352. package/dist/assets/toasts-BwQJwYLe.js +0 -1
  353. package/dist/assets/toasts-CFzweRH5.js +0 -1
  354. package/dist/assets/toasts-DDYQsJV8.js +0 -1
  355. package/dist/assets/toasts-DOfXc7Rt.js +0 -1
  356. package/dist/assets/toasts-Dm12Nq8t.js +0 -1
  357. package/dist/assets/toasts-frBt6fvE.js +0 -1
  358. package/dist/assets/ui-store-3HoYrTu5.js +0 -1
  359. package/dist/assets/useWebSocket-6jp275vG.js +0 -29
  360. package/dist/assets/utils-BecmXwgG.js +0 -1
  361. package/dist/assets/view-navigation-C1UDTk5R.js +0 -1
  362. package/dist/assets/ws-client-C6jAU4nL.js +0 -1
@@ -56,6 +56,44 @@ export interface LocalPrefs {
56
56
  parameters?: Record<string, unknown>;
57
57
  };
58
58
  }>;
59
+ /**
60
+ * Deterministic cost tiers. A level binds a fallback profile, a spend budget
61
+ * and runtime overrides under one name; `routing` maps a role/phase/`*` to a
62
+ * level; `leader` governs how much authority the leader has over its own tier.
63
+ */
64
+ modelTiers: {
65
+ enabled?: boolean;
66
+ default?: string;
67
+ levels?: Record<string, {
68
+ fallbackProfile?: string;
69
+ provider?: string;
70
+ model?: string;
71
+ maxCostUsd?: number;
72
+ maxIterations?: number;
73
+ maxToolCalls?: number;
74
+ maxTokens?: number;
75
+ timeoutMs?: number;
76
+ description?: string;
77
+ modelRuntime?: {
78
+ reasoning?: {
79
+ mode?: 'auto' | 'on' | 'off';
80
+ effort?: string;
81
+ preserve?: boolean;
82
+ };
83
+ cache?: {
84
+ ttl?: '5m' | '1h';
85
+ };
86
+ };
87
+ }>;
88
+ routing?: Record<string, string>;
89
+ leader?: {
90
+ mode?: 'off' | 'propose' | 'auto';
91
+ dwellTurns?: number;
92
+ minSavingsUsd?: number;
93
+ maxContextFillForSwitch?: number;
94
+ maxTier?: string;
95
+ };
96
+ };
59
97
  /** Auto-derive a fallback chain from keyed providers when the list is empty. */
60
98
  fallbackAuto: boolean;
61
99
  /** Recurring provider/model blackout windows for autonomous routing. */
@@ -205,9 +243,58 @@ export interface LocalPrefs {
205
243
  * Periodic probe targets `<wrongProxyUrl>/api/health`; 2xx → active.
206
244
  */
207
245
  wrongProxyUrl: string;
246
+ /** Master toggle for global keyboard shortcuts. Defaults to false. */
247
+ keyboardShortcuts: boolean;
248
+ /**
249
+ * Per-session overrides for the keys in `SESSION_SCOPED_PREF_KEYS`.
250
+ *
251
+ * The flat fields above are the EFFECTIVE view of the tab in front, so
252
+ * existing readers (`useLocalPrefs((s) => s.autonomy)`) keep working and
253
+ * automatically describe the right tab. This map is what makes them
254
+ * per-tab rather than one value the four tabs fight over.
255
+ */
256
+ bySession: Record<string, Partial<LocalPrefs>>;
257
+ /**
258
+ * What a NEWLY opened tab inherits for the session-scoped keys — the last
259
+ * value the user chose, mirroring the server, which persists the same keys
260
+ * to config as the default a new tab starts from.
261
+ */
262
+ sessionDefaults: Partial<LocalPrefs>;
263
+ /** Which session the flat fields currently describe. */
264
+ activeSessionId: string | null;
208
265
  set: (patch: Partial<LocalPrefs>) => void;
266
+ /** Point the flat fields at a tab, materialising its overrides. */
267
+ bindSession: (sessionId: string | null) => void;
268
+ /**
269
+ * Apply a server-sent patch. `sessionId` names the tab it belongs to; a
270
+ * patch for a BACKGROUND tab updates that tab's override and leaves the
271
+ * fields the UI is rendering alone.
272
+ */
273
+ applyRemote: (patch: Partial<LocalPrefs>, sessionId?: string | undefined) => void;
274
+ /** Forget a closed tab's overrides. */
275
+ forgetSession: (sessionId: string) => void;
209
276
  reset: () => void;
210
277
  }
278
+ /**
279
+ * Preferences that belong to ONE session rather than to the browser.
280
+ *
281
+ * Must stay in step with `SESSION_SCOPED_PREF_KEYS` on the server
282
+ * (`webui-server/src/server/prefs-handlers.ts`) — the server already keys
283
+ * these off the calling tab's context meta, and a client that treats them as
284
+ * global shows tab 1's autonomy while tab 3 is on screen. Parity is enforced
285
+ * by `tests/server/session-scoped-prefs-parity.test.ts`, not by memory.
286
+ */
287
+ export declare const SESSION_SCOPED_PREFS: readonly ["autonomy", "autonomyDelayMs", "autoProceedMaxIterations", "yolo", "maxIterations", "contextStrategy", "contextMode", "contextAutoCompact", "tokenSavingTier", "systemPromptVariant", "reasoningMode", "reasoningEffort", "reasoningPreserve", "nextPrediction", "nextStepsTool"];
288
+ /**
289
+ * The effective value of a session-scoped preference for ONE session.
290
+ *
291
+ * Reading the flat field answers for the tab IN FRONT, which is wrong whenever
292
+ * the question is about another tab. The dangerous instance was `yolo`: a
293
+ * background tab's tool-approval prompt was auto-approved because the tab the
294
+ * user happened to be looking at had YOLO on — approving a tool in a session
295
+ * the user never put in that mode.
296
+ */
297
+ export declare function sessionPref<K extends keyof LocalPrefs>(sessionId: string | null | undefined, key: K): LocalPrefs[K];
211
298
  export declare const useLocalPrefs: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<LocalPrefs>, "persist" | "setState"> & {
212
299
  setState(partial: LocalPrefs | Partial<LocalPrefs> | ((state: LocalPrefs) => LocalPrefs | Partial<LocalPrefs>), replace?: false | undefined): unknown;
213
300
  setState(state: LocalPrefs | ((state: LocalPrefs) => LocalPrefs), replace: true): unknown;
@@ -1,5 +1,5 @@
1
1
  /** Mirrors HQ/HqMailboxMessageScope. Derived server-side, but always revalidated client-side. */
2
- export type MailboxMessageScope = 'project' | 'session' | 'agent';
2
+ type MailboxMessageScope = 'project' | 'session' | 'agent';
3
3
  /**
4
4
  * Classify a mailbox recipient address for UI labeling. Mirrors the
5
5
  * server-side helper in `@wrongstack/core/hq/mailbox-mapper` so the
@@ -56,7 +56,7 @@ export interface MailboxAgent {
56
56
  /** Number of tool calls the agent has made in the current iteration. */
57
57
  toolCalls?: number;
58
58
  }
59
- export interface MailboxCompactionResult {
59
+ interface MailboxCompactionResult {
60
60
  readByAllRemoved: number;
61
61
  expiredRemoved: number;
62
62
  stalePurged: number;
@@ -49,7 +49,7 @@ export interface MemoryContextSnapshot {
49
49
  exitedMemoryIds: string[];
50
50
  sessionId?: string | undefined;
51
51
  }
52
- export interface ContextMemoryRecord extends MemoryInjectorTraceMemory {
52
+ interface ContextMemoryRecord extends MemoryInjectorTraceMemory {
53
53
  state: 'injected' | 'active' | 'exited';
54
54
  trigger: string;
55
55
  enteredAt: string;
@@ -76,6 +76,6 @@ interface MemoryInjectorTraceState {
76
76
  }
77
77
  /** UI preview budget; full text lives in SAGE SQLite, not the browser store. */
78
78
  export declare const MAX_MEMORY_DETAIL_TEXT_CHARS = 300;
79
- export declare const useMemoryInjectorTraceStore: import("zustand").UseBoundStore<import("zustand").StoreApi<MemoryInjectorTraceState>>;
79
+ export declare const useMemoryInjectorTraceStore: import("./session-scoped-store").SessionScopedStore<MemoryInjectorTraceState>;
80
80
  export {};
81
81
  //# sourceMappingURL=memory-injector-store.d.ts.map
@@ -1,5 +1,5 @@
1
1
  export type MemoryLifecycleAction = 'entered' | 'updated' | 'merged' | 'recovered' | 'exited' | 'related' | 'superseded' | 'archived' | 'staled' | 'contradicted';
2
- export interface MemoryLifecycleItem {
2
+ interface MemoryLifecycleItem {
3
3
  id: string;
4
4
  at: string;
5
5
  event: string;
@@ -18,6 +18,10 @@ interface MemoryLifecycleState {
18
18
  export declare function toMemoryLifecycleItem(payload: Record<string, unknown> & {
19
19
  event: string;
20
20
  }, now?: Date): MemoryLifecycleItem | null;
21
- export declare const useMemoryLifecycleStore: import("zustand").UseBoundStore<import("zustand").StoreApi<MemoryLifecycleState>>;
21
+ /**
22
+ * SAGE lifecycle events belong to the conversation whose run produced them,
23
+ * so each tab keeps its own trace.
24
+ */
25
+ export declare const useMemoryLifecycleStore: import("./session-scoped-store").SessionScopedStore<MemoryLifecycleState>;
22
26
  export {};
23
27
  //# sourceMappingURL=memory-lifecycle-store.d.ts.map
@@ -89,7 +89,7 @@ export interface LiveAgentActivity {
89
89
  linesRemoved: number;
90
90
  }
91
91
  /** Project-wide totals summed across every live session's agents. */
92
- export interface FleetAggregate {
92
+ interface FleetAggregate {
93
93
  toolCalls: number;
94
94
  costUsd: number;
95
95
  tokensIn: number;
@@ -141,7 +141,7 @@ export interface CurrentSessionStats {
141
141
  costUsd?: number;
142
142
  timestamp?: number;
143
143
  }
144
- export interface MonitorState {
144
+ interface MonitorState {
145
145
  /** Connected client counts by type */
146
146
  clientCounts: ClientCounts;
147
147
  /** Recent mail queue activity (last 50 events) */
@@ -174,4 +174,5 @@ export interface MonitorState {
174
174
  clear: () => void;
175
175
  }
176
176
  export declare const useMonitorStore: import("zustand").UseBoundStore<import("zustand").StoreApi<MonitorState>>;
177
+ export {};
177
178
  //# sourceMappingURL=monitor-store.d.ts.map
@@ -0,0 +1,141 @@
1
+ export type NotificationVariant = 'success' | 'error' | 'warn' | 'info';
2
+ export type ToastVariant = NotificationVariant;
3
+ export interface NotificationAction {
4
+ label: string;
5
+ onClick: () => void;
6
+ }
7
+ export type ToastAction = NotificationAction;
8
+ export interface AppNotification {
9
+ id: string;
10
+ message: string;
11
+ variant: NotificationVariant;
12
+ timestamp: number;
13
+ read: boolean;
14
+ ttl?: number | undefined;
15
+ action?: NotificationAction | undefined;
16
+ }
17
+ export interface ToastEntry {
18
+ id: string;
19
+ message: string;
20
+ variant: NotificationVariant;
21
+ ttl: number;
22
+ action?: NotificationAction | undefined;
23
+ }
24
+ export declare const MAX_NOTIFICATIONS = 100;
25
+ export declare const ACTION_TTL_MS = 8000;
26
+ export interface NotificationStoreState {
27
+ /** All recorded notifications in history, newest first */
28
+ notifications: AppNotification[];
29
+ /** Ephemeral toasts currently rendered on screen */
30
+ toasts: ToastEntry[];
31
+ /** Push a new toast + notification */
32
+ push: (entry: {
33
+ message: string;
34
+ variant: NotificationVariant;
35
+ ttl?: number | undefined;
36
+ action?: NotificationAction | undefined;
37
+ }) => string;
38
+ /** Dismiss active ephemeral toast from screen */
39
+ dismissToast: (id: string) => void;
40
+ /** Mark a single notification as read */
41
+ markAsRead: (id: string) => void;
42
+ /** Mark all notifications as read */
43
+ markAllAsRead: () => void;
44
+ /** Remove a notification from history */
45
+ removeNotification: (id: string) => void;
46
+ /** Clear all notification history */
47
+ clearAll: () => void;
48
+ }
49
+ export declare const useNotificationStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<NotificationStoreState>, "persist" | "setState"> & {
50
+ setState(partial: NotificationStoreState | Partial<NotificationStoreState> | ((state: NotificationStoreState) => NotificationStoreState | Partial<NotificationStoreState>), replace?: false | undefined): unknown;
51
+ setState(state: NotificationStoreState | ((state: NotificationStoreState) => NotificationStoreState), replace: true): unknown;
52
+ persist: {
53
+ setOptions: (options: Partial<import("zustand/middleware").PersistOptions<NotificationStoreState, {
54
+ notifications: {
55
+ id: string;
56
+ message: string;
57
+ variant: NotificationVariant;
58
+ timestamp: number;
59
+ read: boolean;
60
+ ttl?: number | undefined;
61
+ action?: {
62
+ label: string;
63
+ onClick: () => void;
64
+ } | undefined;
65
+ }[];
66
+ }, unknown>>) => void;
67
+ clearStorage: () => void;
68
+ rehydrate: () => Promise<void> | void;
69
+ hasHydrated: () => boolean;
70
+ onHydrate: (fn: (state: NotificationStoreState) => void) => () => void;
71
+ onFinishHydration: (fn: (state: NotificationStoreState) => void) => () => void;
72
+ getOptions: () => Partial<import("zustand/middleware").PersistOptions<NotificationStoreState, {
73
+ notifications: {
74
+ id: string;
75
+ message: string;
76
+ variant: NotificationVariant;
77
+ timestamp: number;
78
+ read: boolean;
79
+ ttl?: number | undefined;
80
+ action?: {
81
+ label: string;
82
+ onClick: () => void;
83
+ } | undefined;
84
+ }[];
85
+ }, unknown>>;
86
+ };
87
+ }>;
88
+ /** Imperative API. Pass plain strings or arrays of strings for multi-line. */
89
+ export declare const toast: {
90
+ success: (msg: string, ttl?: number) => string;
91
+ error: (msg: string, ttl?: number) => string;
92
+ warn: (msg: string, ttl?: number) => string;
93
+ info: (msg: string, ttl?: number) => string;
94
+ /**
95
+ * Fire a toast carrying an "Undo" action button. The toast lingers
96
+ * for {@link ACTION_TTL_MS} so the user has time to react; letting it
97
+ * expire is the same as not undoing.
98
+ */
99
+ undoable: (msg: string, onUndo: () => void, label?: string, ttl?: number) => string;
100
+ dismiss: (id: string) => void;
101
+ };
102
+ export declare const useToastStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<NotificationStoreState>, "persist" | "setState"> & {
103
+ setState(partial: NotificationStoreState | Partial<NotificationStoreState> | ((state: NotificationStoreState) => NotificationStoreState | Partial<NotificationStoreState>), replace?: false | undefined): unknown;
104
+ setState(state: NotificationStoreState | ((state: NotificationStoreState) => NotificationStoreState), replace: true): unknown;
105
+ persist: {
106
+ setOptions: (options: Partial<import("zustand/middleware").PersistOptions<NotificationStoreState, {
107
+ notifications: {
108
+ id: string;
109
+ message: string;
110
+ variant: NotificationVariant;
111
+ timestamp: number;
112
+ read: boolean;
113
+ ttl?: number | undefined;
114
+ action?: {
115
+ label: string;
116
+ onClick: () => void;
117
+ } | undefined;
118
+ }[];
119
+ }, unknown>>) => void;
120
+ clearStorage: () => void;
121
+ rehydrate: () => Promise<void> | void;
122
+ hasHydrated: () => boolean;
123
+ onHydrate: (fn: (state: NotificationStoreState) => void) => () => void;
124
+ onFinishHydration: (fn: (state: NotificationStoreState) => void) => () => void;
125
+ getOptions: () => Partial<import("zustand/middleware").PersistOptions<NotificationStoreState, {
126
+ notifications: {
127
+ id: string;
128
+ message: string;
129
+ variant: NotificationVariant;
130
+ timestamp: number;
131
+ read: boolean;
132
+ ttl?: number | undefined;
133
+ action?: {
134
+ label: string;
135
+ onClick: () => void;
136
+ } | undefined;
137
+ }[];
138
+ }, unknown>>;
139
+ };
140
+ }>;
141
+ //# sourceMappingURL=notification-store.d.ts.map
@@ -40,8 +40,26 @@ export interface ProviderHealthEntry {
40
40
  lastAgentId?: string | undefined;
41
41
  lastFailureAt?: number | null | undefined;
42
42
  }
43
+ export interface ProviderAuditEntry {
44
+ ts: number;
45
+ providerId: string;
46
+ model: string;
47
+ from: ProviderHealthState;
48
+ to: ProviderHealthState;
49
+ reason: string;
50
+ expiresAt: number | null;
51
+ error: {
52
+ kind: string;
53
+ status: number | null;
54
+ message: string;
55
+ sessionId: string | null;
56
+ agentId: string | null;
57
+ } | null;
58
+ }
43
59
  interface ProviderStatusStore {
44
60
  entries: Record<string, ProviderHealthEntry>;
61
+ /** Durable block/open audit trail tail (newest first), fed by provider.audit.get. */
62
+ audit: ProviderAuditEntry[];
45
63
  /** Summary counts from the last full snapshot (or null before first fetch). */
46
64
  summary: {
47
65
  totalPairs: number;
@@ -56,6 +74,7 @@ interface ProviderStatusStore {
56
74
  update: (entry: ProviderHealthEntry) => void;
57
75
  hydrate: (entries: ProviderHealthEntry[]) => void;
58
76
  applySnapshot: (snapshot: Record<string, unknown>) => void;
77
+ setAudit: (lines: ProviderAuditEntry[]) => void;
59
78
  setLoading: (loading: boolean) => void;
60
79
  setError: (error: string | null) => void;
61
80
  clear: () => void;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Tabs the boot reconciliation set aside for the user to decide about.
3
+ *
4
+ * The tab strip lives in `localStorage`, so it outlives the process that made
5
+ * it. Restoring it blindly meant a fresh `wstack --webui` came up wearing the
6
+ * previous run's tabs and paid for a full journal resume — todo board included
7
+ * — before the user had typed anything. Dropping it silently is the other
8
+ * extreme: work the user meant to come back to disappears without a word.
9
+ *
10
+ * So neither. A WebUI that starts fresh IS fresh — one new session, one tab —
11
+ * and the sessions that were in the strip are OFFERED. Resuming is then what it
12
+ * should always have been: an explicit act, on named sessions, that the user
13
+ * chose.
14
+ *
15
+ * The offer holds ids only. Titles come from `useHistoryStore`, which fills in
16
+ * from the `sessions.list` frame that arrives moments later; the modal renders
17
+ * with ids until it does rather than blocking on it.
18
+ */
19
+ interface RestoreTabsState {
20
+ /** Stale slots awaiting an answer. Empty means no offer is pending. */
21
+ candidates: string[];
22
+ /** Present the offer. A second offer replaces the first (boot happens once). */
23
+ offer: (sessionIds: readonly string[]) => void;
24
+ /** Dismiss without restoring anything. */
25
+ dismiss: () => void;
26
+ }
27
+ export declare const useRestoreTabsStore: import("zustand").UseBoundStore<import("zustand").StoreApi<RestoreTabsState>>;
28
+ export {};
29
+ //# sourceMappingURL=restore-tabs-store.d.ts.map
@@ -0,0 +1,58 @@
1
+ /**
2
+ * resume-progress-store.ts — which tabs are waiting for a transcript.
3
+ *
4
+ * A resume is not instant. The server has to replay the session's whole JSONL
5
+ * journal before it can answer, and a journal that has grown to a hundred-odd
6
+ * megabytes takes seconds on an idle machine and tens of seconds on one that
7
+ * is also running agents. Until this store existed the surface said nothing
8
+ * about that: the tab appeared immediately (the client opens the slot before
9
+ * asking), the lane was empty, and an empty lane renders the welcome screen —
10
+ * so a resume in progress was pixel-identical to a session with no messages in
11
+ * it. The honest reading of that screen is "the transcript is gone", which is
12
+ * what it was reported as.
13
+ *
14
+ * Deliberately NOT part of the chat lane. Lanes are persisted to localStorage,
15
+ * and a "waiting" flag must not survive the reload that ended the wait — a
16
+ * page that came back with a stale flag would spin forever. This is in-memory,
17
+ * per-session, and every exit is covered: the `session.start` that answers,
18
+ * the error frame that refuses, and a wall-clock ceiling for the answer that
19
+ * never comes at all.
20
+ */
21
+ /**
22
+ * Upper bound on a single wait, after which the tab stops claiming to be
23
+ * loading and falls back to whatever the lane holds.
24
+ *
25
+ * Generous on purpose: the point of the ceiling is that a dropped frame cannot
26
+ * strand the pane forever, not to guess how long a resume "should" take.
27
+ * Cutting a genuinely slow resume short would put the welcome screen back
28
+ * under a user who is about to be handed their transcript.
29
+ */
30
+ export declare const RESUME_PROGRESS_TIMEOUT_MS: number;
31
+ export interface ResumeProgressDetail {
32
+ stage: string;
33
+ loadedBytes: number;
34
+ totalBytes: number;
35
+ updatedAt: number;
36
+ }
37
+ interface ResumeProgressState {
38
+ /** sessionId -> ms epoch the resume request went out. */
39
+ startedAt: Record<string, number>;
40
+ /** sessionId -> latest server-reported journal load progress. */
41
+ progress: Record<string, ResumeProgressDetail>;
42
+ /** A resume request for this session is on the wire. */
43
+ begin: (sessionId: string) => void;
44
+ /** Update the visible progress for an in-flight resume. */
45
+ update: (sessionId: string, progress: Omit<ResumeProgressDetail, 'updatedAt'>) => void;
46
+ /** Its answer (or refusal) arrived. Safe to call for sessions never begun. */
47
+ end: (sessionId: string) => void;
48
+ /** Socket-level reset: nothing outstanding can still be answered. */
49
+ clear: () => void;
50
+ }
51
+ export declare const useResumeProgressStore: import("zustand").UseBoundStore<import("zustand").StoreApi<ResumeProgressState>>;
52
+ export declare function resumeStageLabel(stage: string | undefined): string;
53
+ export declare function resumeProgressPercent(progress: ResumeProgressDetail | undefined): number | null;
54
+ export declare function formatResumeBytes(bytes: number): string;
55
+ /** Selector-friendly read: is this tab still waiting for its transcript? */
56
+ export declare function isResuming(sessionId: string | null | undefined): boolean;
57
+ export {};
58
+ //# sourceMappingURL=resume-progress-store.d.ts.map
@@ -10,7 +10,7 @@ interface InspectFileEntry {
10
10
  toolName: string;
11
11
  ts: string;
12
12
  }
13
- export interface SessionInspectData {
13
+ interface SessionInspectData {
14
14
  id: string;
15
15
  title: string;
16
16
  name?: string | undefined;