@wrongstack/webui 1.0.24 → 1.0.27

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 (239) hide show
  1. package/dist/assets/AgentRosterView-BJ-1SQOm.js +12 -0
  2. package/dist/assets/{AnalyticsDashboard-DgqJODVI.js → AnalyticsDashboard-FYrD8BFQ.js} +1 -1
  3. package/dist/assets/AudienceMemoryPanel-BghMZicW.js +3 -0
  4. package/dist/assets/ChangesView-B3uQtZGR.js +3 -0
  5. package/dist/assets/ChimeraReviewsView-CBRbTHGM.js +1 -0
  6. package/dist/assets/ChronicleDashboard-B1E-_u64.js +1 -0
  7. package/dist/assets/CodeEditor-CbcWuMGV.js +2 -0
  8. package/dist/assets/CodeMap-WOfveRTG.js +1 -0
  9. package/dist/assets/{CronJobsPanel-GTK038V9.js → CronJobsPanel-DOFA5WVq.js} +1 -1
  10. package/dist/assets/{DeadCodeScanPanel-DX4OEuyp.js → DeadCodeScanPanel-4ToPZX7e.js} +1 -1
  11. package/dist/assets/{DebugDashboard-CKp3sa_k.js → DebugDashboard-DAsNHSpG.js} +1 -1
  12. package/dist/assets/{DesignGalleryView-DVUTYaP6.js → DesignGalleryView-Dd5YnKhs.js} +1 -1
  13. package/dist/assets/GoalView-BaDGAXuQ.js +1 -0
  14. package/dist/assets/KanbanView-CG8bVhpR.js +3 -0
  15. package/dist/assets/{MailboxDetailView-CylnzTVc.js → MailboxDetailView-COxz-eEJ.js} +1 -1
  16. package/dist/assets/{MemoryDrawer-DJ0Y98Z8.js → MemoryDrawer-4lDXuHCi.js} +1 -1
  17. package/dist/assets/MemoryManager-DQlnpch1.js +1 -0
  18. package/dist/assets/{ProcessMonitor-BnQ3vJtn.js → ProcessMonitor-BUjfYqG3.js} +1 -1
  19. package/dist/assets/PromptJournalView-o2dmPrwg.js +1 -0
  20. package/dist/assets/ProviderTestView-5wNbI46L.js +1 -0
  21. package/dist/assets/QueuePanel-DP9D99DX.js +1 -0
  22. package/dist/assets/{RefreshDebugView-s6MyGpPq.js → RefreshDebugView-CB7_a_TI.js} +1 -1
  23. package/dist/assets/{RepositoryHistoryView-CWi_Zo3F.js → RepositoryHistoryView-C_zpYLY6.js} +2 -2
  24. package/dist/assets/RequirementIntakeView-CahKEHJn.js +1 -0
  25. package/dist/assets/{SageTabs-D6eTg3ix.js → SageTabs-5Z2PR11S.js} +2 -2
  26. package/dist/assets/{SddFlowGraph-B-ptkFX6.js → SddFlowGraph-DSoWnlIt.js} +1 -1
  27. package/dist/assets/SddHub-0q2EpwYz.js +2 -0
  28. package/dist/assets/{SessionInspectView-NSpj5WEN.js → SessionInspectView-CbDFR_tP.js} +1 -1
  29. package/dist/assets/SessionList-DhQK7JnP.js +1 -0
  30. package/dist/assets/{SessionsDashboard-mF4PzdKY.js → SessionsDashboard-DNLDczSd.js} +1 -1
  31. package/dist/assets/SetupScreen-C-hpHQQ9.js +1 -0
  32. package/dist/assets/{SkillDetailView-B9BFyB1i.js → SkillDetailView-Bir-Kdm4.js} +3 -3
  33. package/dist/assets/TechStackView-CJ3Abnwg.js +2 -0
  34. package/dist/assets/TerminalPanel-8WHNTeQK.js +1 -0
  35. package/dist/assets/activity-B9WjS_Cz.js +10 -0
  36. package/dist/assets/activity-BB7AHL0U.js +10 -0
  37. package/dist/assets/activity-Bd0XmdqX.js +10 -0
  38. package/dist/assets/activity-BvmJte2K.js +10 -0
  39. package/dist/assets/activity-DOEbDWqw.js +10 -0
  40. package/dist/assets/activity-beTxIN7V.js +10 -0
  41. package/dist/assets/activity-t-0KDhv5.js +10 -0
  42. package/dist/assets/{button-BbeB5Qm8.js → button-UuKTnoM-.js} +1 -1
  43. package/dist/assets/chat-9GLubejR.js +1 -0
  44. package/dist/assets/chat-B50ssTLh.js +1 -0
  45. package/dist/assets/chat-CDioiM1L.js +1 -0
  46. package/dist/assets/chat-Cll_3gXD.js +1 -0
  47. package/dist/assets/chat-Cqhc6jQa.js +1 -0
  48. package/dist/assets/chat-DN1MggWt.js +1 -0
  49. package/dist/assets/chat-fyvZyUZM.js +1 -0
  50. package/dist/assets/chat-store-BMwP_sS0.js +1 -0
  51. package/dist/assets/{codemap-activity-store-Ha7XbGgq.js → codemap-activity-store-WjfEZe4_.js} +1 -1
  52. package/dist/assets/{common-DvjdaRhB.js → common-2kj0c3pG.js} +1 -1
  53. package/dist/assets/{common-D0QL7rwb.js → common-BAvh8XBp.js} +1 -1
  54. package/dist/assets/{common-opV6EoLd.js → common-CKwGvEQD.js} +1 -1
  55. package/dist/assets/{common-DJRPtYAt.js → common-CUd7l34J.js} +1 -1
  56. package/dist/assets/{common-BtyQBZBN.js → common-DmS4Wp1i.js} +1 -1
  57. package/dist/assets/common-PC103akE.js +1 -0
  58. package/dist/assets/{common-Bjl7V12m.js → common-zatZ4s-Z.js} +1 -1
  59. package/dist/assets/config-store-Cb4iyhGv.js +21 -0
  60. package/dist/assets/{dialog-b-Ai37sa.js → dialog-BDUaV5gY.js} +1 -1
  61. package/dist/assets/{empty-state-pfuS5znr.js → empty-state-BzoEa04Q.js} +1 -1
  62. package/dist/assets/{fonts-DRGbd-AM.js → fonts-C303yVU_.js} +2 -2
  63. package/dist/assets/i18n-CzTjKT4L.js +3 -0
  64. package/dist/assets/index-Ci22AODp.js +182 -0
  65. package/dist/assets/index-DfU9PQg8.css +1 -0
  66. package/dist/assets/{input-BA6D2L3K.js → input-DMnC2O7-.js} +1 -1
  67. package/dist/assets/{mailbox-store-ZQO_Rv6E.js → mailbox-store-DyOOYbni.js} +1 -1
  68. package/dist/assets/{roster-ws-Cv_PHlEV.js → roster-ws-D-DCMdrg.js} +1 -1
  69. package/dist/assets/settings-7W0ofid0.js +1 -0
  70. package/dist/assets/settings-BAArGYGW.js +1 -0
  71. package/dist/assets/settings-Btyr_M2v.js +1 -0
  72. package/dist/assets/settings-BwL_DVmc.js +1 -0
  73. package/dist/assets/settings-C7ybAkyi.js +1 -0
  74. package/dist/assets/settings-CgtL8eYb.js +1 -0
  75. package/dist/assets/settings-D57Fd8Z8.js +1 -0
  76. package/dist/assets/{shared-BFJvAYzX.js → shared-CLNEiW00.js} +1 -1
  77. package/dist/assets/stores-Svlibwo5.js +7 -0
  78. package/dist/assets/toasts-3tM1krOo.js +1 -0
  79. package/dist/assets/toasts-BrHW33qA.js +1 -0
  80. package/dist/assets/toasts-Buww129h.js +1 -0
  81. package/dist/assets/toasts-CSN9Fy47.js +1 -0
  82. package/dist/assets/toasts-DOoYxbHd.js +1 -0
  83. package/dist/assets/toasts-DkDnbhs_.js +1 -0
  84. package/dist/assets/toasts-Jo4VH13n.js +1 -0
  85. package/dist/assets/ui-store-DI0iusYZ.js +1 -0
  86. package/dist/assets/{utils-CKsqCaP8.js → utils-B21Devim.js} +1 -1
  87. package/dist/assets/{vector-memory-panel-YWv6xcza.js → vector-memory-panel-DnX-ODHC.js} +1 -1
  88. package/dist/assets/{vendor-V3ydTHqN.js → vendor-BfBvt432.js} +28 -28
  89. package/dist/assets/{view-navigation-CpIPxhZp.js → view-navigation-Cvrp_uJm.js} +1 -1
  90. package/dist/components/BrowserLivePane.d.ts +2 -0
  91. package/dist/components/ChangesView.d.ts +3 -1
  92. package/dist/components/ChatInput/chat-input-bars.d.ts +1 -1
  93. package/dist/components/ChatInput/image-attachments.d.ts +19 -2
  94. package/dist/components/ChatInput/slash-routing.d.ts +18 -0
  95. package/dist/components/ChatInput/use-paste-drop.d.ts +3 -0
  96. package/dist/components/ChatInput/use-prompt-queue-view.d.ts +13 -0
  97. package/dist/components/ChatView/BackgroundShellStrip.d.ts +16 -0
  98. package/dist/components/ChatView/TerminalStrip.d.ts +8 -0
  99. package/dist/components/CodeMap.d.ts +0 -12
  100. package/dist/components/GoalPanel.d.ts +2 -1
  101. package/dist/components/ImageDiffView.d.ts +12 -0
  102. package/dist/components/KanbanTaskExecution.d.ts +64 -0
  103. package/dist/components/KanbanTaskInspector.d.ts +1 -1
  104. package/dist/components/MessageBubble/AttachmentGallery.d.ts +1 -1
  105. package/dist/components/MessageBubble/FailedRunContinue.d.ts +7 -3
  106. package/dist/components/MessageBubble/GeneratedImagePreview.d.ts +10 -0
  107. package/dist/components/SessionTabBar/summaries.d.ts +4 -0
  108. package/dist/components/SettingsPanel/LimitsSection.d.ts +7 -0
  109. package/dist/components/SettingsPanel/MCPSection.d.ts +1 -37
  110. package/dist/components/SettingsPanel/MCPServerCards.d.ts +67 -0
  111. package/dist/components/SettingsPanel/MCPServerDialog.d.ts +11 -0
  112. package/dist/components/SettingsPanel/PreferenceControls.d.ts +8 -0
  113. package/dist/components/SettingsPanel/ProviderSavedProfiles.d.ts +50 -0
  114. package/dist/components/SettingsPanel/ProviderSection.d.ts +2 -79
  115. package/dist/components/SettingsPanel/SettingsNavigation.d.ts +12 -0
  116. package/dist/components/SettingsPanel/brain-section-options.d.ts +1 -2
  117. package/dist/components/SettingsPanel/provider-section-types.d.ts +79 -0
  118. package/dist/components/SidePanel/SessionList.d.ts +1 -34
  119. package/dist/components/SidePanel/session-history.d.ts +61 -0
  120. package/dist/components/SystemPromptPresetEditor.d.ts +9 -0
  121. package/dist/components/TechStackView/AnalyzeControls.d.ts +25 -0
  122. package/dist/components/TechStackView/RemediationTab.d.ts +20 -0
  123. package/dist/components/TechStackView/TrendsTab.d.ts +17 -0
  124. package/dist/components/TerminalPanel.d.ts +8 -1
  125. package/dist/components/WorkspaceDock.d.ts +2 -2
  126. package/dist/components/review/ReviewDiff.d.ts +21 -0
  127. package/dist/components/review/ReviewTray.d.ts +15 -0
  128. package/dist/components/review/review-diff-model.d.ts +31 -0
  129. package/dist/components/use-code-map-flow.d.ts +25 -0
  130. package/dist/components/use-office-map-canvas.d.ts +1 -1
  131. package/dist/components/use-office-map-topology.d.ts +31 -0
  132. package/dist/hooks/use-live-browser.d.ts +7 -0
  133. package/dist/hooks/useWebSocket.d.ts +1 -2
  134. package/dist/hooks/ws-handlers/chat-handlers.d.ts +12 -0
  135. package/dist/hooks/ws-handlers/goal-handlers.d.ts +2 -0
  136. package/dist/hooks/ws-handlers/mcp-status-handlers.d.ts +6 -0
  137. package/dist/hooks/ws-handlers/prompt-queue-handlers.d.ts +18 -0
  138. package/dist/hooks/ws-handlers/techstack-handlers.d.ts +7 -0
  139. package/dist/index.css +3013 -3013
  140. package/dist/index.html +19 -19
  141. package/dist/index.js +53010 -47407
  142. package/dist/lib/compact-file-tree.d.ts +30 -0
  143. package/dist/lib/project-image.d.ts +26 -0
  144. package/dist/lib/provider-warm.d.ts +3 -0
  145. package/dist/lib/ws-client-session-methods.d.ts +2 -0
  146. package/dist/lib/ws-client.d.ts +3 -0
  147. package/dist/stores/chat-lane-data.d.ts +153 -0
  148. package/dist/stores/chat-lanes.d.ts +3 -174
  149. package/dist/stores/chat-queue-helpers.d.ts +9 -0
  150. package/dist/stores/chat-store-types.d.ts +3 -0
  151. package/dist/stores/chat-store.d.ts +1 -1
  152. package/dist/stores/context-editor-store.d.ts +1 -1
  153. package/dist/stores/fleet-transcript.d.ts +14 -0
  154. package/dist/stores/git-changes-store.d.ts +3 -0
  155. package/dist/stores/goal-run-store.d.ts +8 -0
  156. package/dist/stores/goal-state-store.d.ts +3 -0
  157. package/dist/stores/goal-store.d.ts +9 -11
  158. package/dist/stores/index.d.ts +1 -1
  159. package/dist/stores/local-prefs-defaults.d.ts +341 -0
  160. package/dist/stores/local-prefs.d.ts +2 -318
  161. package/dist/stores/notification-store.d.ts +9 -0
  162. package/dist/stores/provider-quota-store.d.ts +5 -0
  163. package/dist/stores/review-store.d.ts +54 -0
  164. package/dist/stores/session-activity.d.ts +33 -0
  165. package/dist/stores/session-tab-store.d.ts +1 -46
  166. package/dist/stores/techstack-store.d.ts +140 -1
  167. package/dist/stores/terminal-strip-store.d.ts +26 -0
  168. package/dist/stores/types.d.ts +5 -0
  169. package/dist/stores/ui-store-chrome.d.ts +1 -1
  170. package/dist/stores/ui-store-persist.d.ts +2 -2
  171. package/dist/stores/ui-store-types.d.ts +3 -3
  172. package/dist/stores/ui-store.d.ts +5 -5
  173. package/dist/types/brain.d.ts +4 -2
  174. package/dist/types/client-message.d.ts +122 -14
  175. package/dist/types/jev.d.ts +2 -0
  176. package/dist/types/prompt-queue.d.ts +55 -0
  177. package/dist/types/protocol-core.d.ts +4 -216
  178. package/dist/types/runtime.d.ts +3 -38
  179. package/dist/types/server-message-files.d.ts +22 -0
  180. package/dist/types/server-message-mcp.d.ts +32 -0
  181. package/dist/types/server-message-system.d.ts +121 -0
  182. package/dist/types/server-message.d.ts +4 -3
  183. package/dist/types/system.d.ts +2 -24
  184. package/package.json +11 -9
  185. package/dist/assets/AgentRosterView-Dq8Xa0WK.js +0 -12
  186. package/dist/assets/AudienceMemoryPanel-BVGdDVTT.js +0 -3
  187. package/dist/assets/ChangesView-BVyLENBb.js +0 -1
  188. package/dist/assets/ChimeraReviewsView-CTuxzgTC.js +0 -1
  189. package/dist/assets/ChronicleDashboard-BRP7D6RZ.js +0 -1
  190. package/dist/assets/CodeEditor-k3z3M0NG.js +0 -2
  191. package/dist/assets/CodeMap-CvHNQZEF.js +0 -1
  192. package/dist/assets/GoalView-D8G8e8YG.js +0 -1
  193. package/dist/assets/KanbanView-BMXGDqGo.js +0 -3
  194. package/dist/assets/MemoryManager-DfcsYPUB.js +0 -1
  195. package/dist/assets/PromptJournalView-D7k8Yh5a.js +0 -1
  196. package/dist/assets/ProviderTestView-DSd6kkWT.js +0 -1
  197. package/dist/assets/QueuePanel-79KiyZWD.js +0 -1
  198. package/dist/assets/RequirementIntakeView-D_Ea20fx.js +0 -1
  199. package/dist/assets/SddHub-CSVfLGpr.js +0 -2
  200. package/dist/assets/SessionList-BYRCs1AK.js +0 -1
  201. package/dist/assets/SetupScreen-BUZeJSZi.js +0 -1
  202. package/dist/assets/TechStackView-CXJilX0M.js +0 -2
  203. package/dist/assets/TerminalPanel-CAXevSAa.js +0 -1
  204. package/dist/assets/activity-B3wutYIE.js +0 -10
  205. package/dist/assets/activity-Be03cc7g.js +0 -10
  206. package/dist/assets/activity-CiYZ3y4e.js +0 -10
  207. package/dist/assets/activity-CmIA2MhR.js +0 -10
  208. package/dist/assets/activity-Cp5GhldB.js +0 -10
  209. package/dist/assets/activity-DFCf7l5d.js +0 -10
  210. package/dist/assets/activity-EbNUY7Ci.js +0 -10
  211. package/dist/assets/chat-6dE2AJNN.js +0 -1
  212. package/dist/assets/chat-B3AJmhGD.js +0 -1
  213. package/dist/assets/chat-BHsbpaVt.js +0 -1
  214. package/dist/assets/chat-BITJe8-v.js +0 -1
  215. package/dist/assets/chat-U-Jjb8_k.js +0 -1
  216. package/dist/assets/chat-_Xp5fDnj.js +0 -1
  217. package/dist/assets/chat-mSbSzPl5.js +0 -1
  218. package/dist/assets/chat-store-C7InoWAO.js +0 -1
  219. package/dist/assets/common-DPPTV3yw.js +0 -1
  220. package/dist/assets/config-store-BbL0WxLE.js +0 -21
  221. package/dist/assets/i18n-Dv97urcO.js +0 -3
  222. package/dist/assets/index-CON0Nbm4.css +0 -1
  223. package/dist/assets/index-DX6tHUzs.js +0 -177
  224. package/dist/assets/settings-BCvuzOJ6.js +0 -1
  225. package/dist/assets/settings-DMPKd-4K.js +0 -1
  226. package/dist/assets/settings-DxQ2452f.js +0 -1
  227. package/dist/assets/settings-Dz3StaVx.js +0 -1
  228. package/dist/assets/settings-EBW1mlXc.js +0 -1
  229. package/dist/assets/settings-Er2LHp9d.js +0 -1
  230. package/dist/assets/settings-EzznCDaX.js +0 -1
  231. package/dist/assets/stores-DXn5tdr7.js +0 -7
  232. package/dist/assets/toasts-BsmyGP95.js +0 -1
  233. package/dist/assets/toasts-CgXHu8ZB.js +0 -1
  234. package/dist/assets/toasts-DZ6HdKgG.js +0 -1
  235. package/dist/assets/toasts-DizCJjAR.js +0 -1
  236. package/dist/assets/toasts-NC2MT4uN.js +0 -1
  237. package/dist/assets/toasts-bPl097de.js +0 -1
  238. package/dist/assets/toasts-tCVo15mP.js +0 -1
  239. package/dist/assets/ui-store-DxDwFHNK.js +0 -1
@@ -1,6 +1,7 @@
1
1
  import type { BrainConfigPatchWire } from './brain.js';
2
2
  import type { ChronicleFacet, ChronicleMetricsView, ChronicleQuery } from './chronicle.js';
3
3
  import type { WSCollabAnnotate, WSCollabGrantControl, WSCollabInjectTool, WSCollabJoin, WSCollabLeave, WSCollabRequestPause, WSCollabResolve, WSCollabResume } from './collab.js';
4
+ import type { WSPromptQueueClientMessage } from './prompt-queue.js';
4
5
  import type { SessionScopedPayload, WSUserMessage } from './protocol-core.js';
5
6
  import type { ContextEditorMessage, ContextEditorRemoval, WSModelSwitch, WSToolConfirmResult, WSUserInputSubmit } from './runtime.js';
6
7
  import type { SageAnchor, SageScope, SageStatus, WSMemorySageForFileRequest } from './sage.js';
@@ -25,7 +26,12 @@ export interface ProviderCustomModelWire {
25
26
  */
26
27
  modelsDev?: Record<string, unknown> | undefined;
27
28
  }
28
- export type WSClientMessageCore = WSUserMessage | {
29
+ export type WSClientMessageCore = WSUserMessage | WSPromptQueueClientMessage
30
+ /** The user is typing; open the provider connection (`session.provider-warm`). */
31
+ | {
32
+ type: 'composer.warm';
33
+ payload: SessionScopedPayload;
34
+ } | {
29
35
  type: 'topic.advice';
30
36
  payload: SessionScopedPayload & {
31
37
  requestId: string;
@@ -100,7 +106,9 @@ export type WSClientMessageCore = WSUserMessage | {
100
106
  payload: Record<string, never>;
101
107
  } | {
102
108
  type: 'goal.resume';
103
- payload: Record<string, never>;
109
+ payload: {
110
+ graphId?: string | undefined;
111
+ };
104
112
  } | {
105
113
  type: 'goal.stop';
106
114
  payload: Record<string, never>;
@@ -113,9 +121,6 @@ export type WSClientMessageCore = WSUserMessage | {
113
121
  } | {
114
122
  type: 'goal.status';
115
123
  payload?: Record<string, never>;
116
- } | {
117
- type: 'goal.state';
118
- payload?: Record<string, never>;
119
124
  } | {
120
125
  type: 'goal.save';
121
126
  payload?: Record<string, never>;
@@ -125,12 +130,9 @@ export type WSClientMessageCore = WSUserMessage | {
125
130
  } | {
126
131
  type: 'goal.load';
127
132
  payload: {
128
- graphId: string;
129
- };
130
- } | {
131
- type: 'goal.toggleAutonomous';
132
- payload: {
133
- autonomous?: boolean | undefined;
133
+ graphId?: string | undefined;
134
+ query?: string | undefined;
135
+ resume?: boolean | undefined;
134
136
  };
135
137
  } | {
136
138
  type: 'goal.selectPhase';
@@ -351,7 +353,7 @@ export type WSClientMessageCore = WSUserMessage | {
351
353
  worktrees?: boolean | undefined;
352
354
  /** Split non-atomic tasks before dispatch (planning-time decompose). */
353
355
  planDecompose?: boolean | undefined;
354
- };
356
+ } & SessionScopedPayload;
355
357
  } | {
356
358
  type: 'sdd.run.from_graph';
357
359
  payload: {
@@ -362,7 +364,7 @@ export type WSClientMessageCore = WSUserMessage | {
362
364
  fallbackModels?: string[] | undefined;
363
365
  worktrees?: boolean | undefined;
364
366
  planDecompose?: boolean | undefined;
365
- };
367
+ } & SessionScopedPayload;
366
368
  } | {
367
369
  type: 'sdd.run.from_spec';
368
370
  payload: {
@@ -373,7 +375,7 @@ export type WSClientMessageCore = WSUserMessage | {
373
375
  fallbackModels?: string[] | undefined;
374
376
  worktrees?: boolean | undefined;
375
377
  planDecompose?: boolean | undefined;
376
- };
378
+ } & SessionScopedPayload;
377
379
  } | {
378
380
  type: 'abort';
379
381
  payload: SessionScopedPayload;
@@ -444,6 +446,13 @@ export type WSClientMessageCore = WSUserMessage | {
444
446
  * what a live lane already has.
445
447
  */
446
448
  replayFor?: string[];
449
+ /**
450
+ * Reconnect catch-up: the last numbered frame (`seq`) this page applied
451
+ * per tab, valid for the server process that issued `eventEpoch`. The
452
+ * server sends back the frames after it, then `session.frames_resumed`.
453
+ */
454
+ cursors?: Record<string, number>;
455
+ eventEpoch?: string;
447
456
  } & SessionScopedPayload;
448
457
  } | {
449
458
  type: 'context.clear';
@@ -939,6 +948,11 @@ export type WSClientMessageCore = WSUserMessage | {
939
948
  payload: {
940
949
  filePath: string;
941
950
  } & SessionScopedPayload;
951
+ } | {
952
+ type: 'files.image';
953
+ payload: {
954
+ filePath: string;
955
+ } & SessionScopedPayload;
942
956
  } | {
943
957
  type: 'files.skeleton';
944
958
  payload: {
@@ -1022,6 +1036,23 @@ export type WSClientMessageCore = WSUserMessage | {
1022
1036
  } | {
1023
1037
  type: 'process.list';
1024
1038
  payload?: SessionScopedPayload;
1039
+ } | {
1040
+ type: 'process.output';
1041
+ payload: {
1042
+ pid: number;
1043
+ lines?: number;
1044
+ } & SessionScopedPayload;
1045
+ } | {
1046
+ type: 'browser.live.list';
1047
+ payload?: SessionScopedPayload;
1048
+ } | {
1049
+ type: 'browser.live.watch';
1050
+ payload: {
1051
+ id: string;
1052
+ } & SessionScopedPayload;
1053
+ } | {
1054
+ type: 'browser.live.unwatch';
1055
+ payload?: SessionScopedPayload;
1025
1056
  } | {
1026
1057
  type: 'process.kill';
1027
1058
  payload: {
@@ -1086,6 +1117,23 @@ export type WSClientMessageCore = WSUserMessage | {
1086
1117
  type: 'goal.get';
1087
1118
  } | {
1088
1119
  type: 'goal-state.get';
1120
+ } | {
1121
+ type: 'goal-state.set';
1122
+ payload: {
1123
+ goal: string;
1124
+ } & SessionScopedPayload;
1125
+ } | {
1126
+ type: 'goal-state.refine';
1127
+ payload?: SessionScopedPayload;
1128
+ } | {
1129
+ type: 'goal-state.pause';
1130
+ payload?: Record<string, never>;
1131
+ } | {
1132
+ type: 'goal-state.resume';
1133
+ payload?: Record<string, never>;
1134
+ } | {
1135
+ type: 'goal-state.clear';
1136
+ payload?: Record<string, never>;
1089
1137
  } | {
1090
1138
  type: 'autonomy.switch';
1091
1139
  payload: {
@@ -1100,6 +1148,49 @@ export type WSClientMessageCore = WSUserMessage | {
1100
1148
  } | {
1101
1149
  type: 'system_prompt.get';
1102
1150
  payload?: SessionScopedPayload;
1151
+ } | {
1152
+ type: 'system_prompt.presets.get';
1153
+ payload?: SessionScopedPayload;
1154
+ } | {
1155
+ type: 'system_prompt.presets.create';
1156
+ payload: {
1157
+ name: string;
1158
+ baseVariant: 'lite' | 'default' | 'pro';
1159
+ };
1160
+ } | {
1161
+ type: 'system_prompt.presets.save';
1162
+ payload: {
1163
+ id: string;
1164
+ revision: number;
1165
+ name: string;
1166
+ text: string;
1167
+ reviewedCurrentSource?: boolean;
1168
+ };
1169
+ } | {
1170
+ type: 'system_prompt.presets.activate';
1171
+ payload: {
1172
+ baseVariant: 'lite' | 'default' | 'pro';
1173
+ id?: string;
1174
+ sessionId?: string;
1175
+ scope: 'profile' | 'project';
1176
+ };
1177
+ } | {
1178
+ type: 'system_prompt.presets.delete';
1179
+ payload: {
1180
+ id: string;
1181
+ };
1182
+ } | {
1183
+ type: 'system_prompt.presets.validate';
1184
+ payload: {
1185
+ text: string;
1186
+ };
1187
+ } | {
1188
+ type: 'system_prompt.presets.preview';
1189
+ payload: {
1190
+ text: string;
1191
+ sessionId?: string;
1192
+ requestId: number;
1193
+ };
1103
1194
  } | {
1104
1195
  type: 'projects.list';
1105
1196
  } | {
@@ -1392,6 +1483,23 @@ export type WSClientMessageCore = WSUserMessage | {
1392
1483
  prompt: string;
1393
1484
  arguments?: Record<string, string>;
1394
1485
  };
1486
+ } | {
1487
+ type: 'mcp.auth.status';
1488
+ payload: {
1489
+ name: string;
1490
+ };
1491
+ } | {
1492
+ type: 'mcp.auth.login';
1493
+ payload: {
1494
+ name: string;
1495
+ clientId?: string;
1496
+ scopes?: string[];
1497
+ };
1498
+ } | {
1499
+ type: 'mcp.auth.logout';
1500
+ payload: {
1501
+ name: string;
1502
+ };
1395
1503
  } | {
1396
1504
  type: 'terminal.create';
1397
1505
  payload: {
@@ -7,6 +7,8 @@ export interface JevSettings {
7
7
  requestTimeoutMs: number;
8
8
  keySource: string;
9
9
  features: Record<string, boolean>;
10
+ /** Full request/response recording in the log file. Never sent to this view. */
11
+ logContent?: boolean;
10
12
  contextStrategy?: 'hybrid' | 'intelligent' | 'selective';
11
13
  recallTurnContext?: boolean;
12
14
  readiness?: Record<string, {
@@ -0,0 +1,55 @@
1
+ import type { SessionScopedPayload, WSUserMessageImage } from './protocol-core.js';
2
+ /**
3
+ * The host-owned prompt queue (`session.prompt-queue` capability): prompts
4
+ * queued for a session live on the server, which runs them one after another
5
+ * as the session's turns end — whether or not this page is still open.
6
+ */
7
+ /** One queued prompt as the server lists it (image bytes stay on the server). */
8
+ export interface WSQueuedPromptView {
9
+ id: string;
10
+ text: string;
11
+ addedAt: number;
12
+ imageCount: number;
13
+ }
14
+ export type WSPromptQueueClientMessage = {
15
+ type: 'queue.add';
16
+ payload: SessionScopedPayload & {
17
+ text: string;
18
+ images?: WSUserMessageImage[] | undefined;
19
+ };
20
+ } | {
21
+ type: 'queue.remove';
22
+ payload: SessionScopedPayload & {
23
+ id: string;
24
+ };
25
+ } | {
26
+ type: 'queue.clear';
27
+ payload?: SessionScopedPayload;
28
+ } | {
29
+ type: 'queue.get';
30
+ payload?: SessionScopedPayload;
31
+ };
32
+ /** The session's whole queue, after every change. */
33
+ export interface WSQueueState {
34
+ type: 'queue.state';
35
+ payload: SessionScopedPayload & {
36
+ items: WSQueuedPromptView[];
37
+ };
38
+ }
39
+ /** A queued prompt just started its turn: render it as the user's message. */
40
+ export interface WSQueueDrained {
41
+ type: 'queue.drained';
42
+ payload: SessionScopedPayload & {
43
+ item: {
44
+ id: string;
45
+ text: string;
46
+ addedAt: number;
47
+ images?: Array<{
48
+ data: string;
49
+ mediaType?: string | undefined;
50
+ name?: string | undefined;
51
+ }>;
52
+ };
53
+ };
54
+ }
55
+ //# sourceMappingURL=prompt-queue.d.ts.map
@@ -1,155 +1,7 @@
1
- import type { SessionMarker, SessionToolMeta, Usage } from '@wrongstack/core/types';
2
- export interface WSSessionStart {
3
- type: 'session.start';
4
- payload: {
5
- sessionId: string;
6
- /** Original session start timestamp; resume must not reset uptime. */
7
- startedAt?: string | undefined;
8
- model: string;
9
- provider: string;
10
- maxContext?: number | undefined;
11
- projectName?: string | undefined;
12
- cwd?: string | undefined;
13
- mode?: string | undefined;
14
- contextMode?: string | undefined;
15
- inputCost?: number | undefined;
16
- outputCost?: number | undefined;
17
- cacheReadCost?: number | undefined;
18
- reset?: boolean | undefined;
19
- replayMessages?: Array<{
20
- role: string | undefined;
21
- content: unknown;
22
- ts?: string | undefined;
23
- }>;
24
- /** Audit markers (compaction, mode/skill switches, subagent lifecycle,
25
- * provider retries, truncation) projected server-side. Replayed alongside
26
- * the conversation so a reconnect shows what the live stream showed. */
27
- replayMarkers?: SessionMarker[] | undefined;
28
- /** Per-tool timing/output metadata projected from `tool_call_end`, so a
29
- * replayed tool card shows the same duration and size chips it showed
30
- * live. */
31
- replayToolMeta?: SessionToolMeta[] | undefined;
32
- replayUsage?: Usage | undefined;
33
- /** True when no provider+model is configured yet — show the setup screen. */
34
- needsSetup?: boolean | undefined;
35
- /** Feature negotiation prevents a newer WebUI from sending messages to an older backend. */
36
- protocolCapabilities?: string[] | undefined;
37
- /** Effort levels the ACTIVE model advertises (models.dev reasoningConfig).
38
- * Absent when the model has no explicit effort list — the UI then shows
39
- * the full canonical set, matching the resolver's conservative gate. */
40
- reasoningEffortLevels?: string[] | undefined;
41
- };
42
- }
43
- export interface WSSessionEnd {
44
- type: 'session.end';
45
- payload: {
46
- sessionId: string;
47
- usage: Usage;
48
- totalCost: number;
49
- };
50
- }
51
- export interface SessionScopedPayload {
52
- sessionId?: string | undefined;
53
- }
54
- /** One image attached to a user message. `data` is bare base64 (no data-URL
55
- * prefix); `mediaType` travels separately. */
56
- export interface WSUserMessageImage {
57
- data: string;
58
- mediaType: string;
59
- /** Original filename when the image came from a picker or drop. */
60
- name?: string;
61
- }
62
- export interface WSUserMessage {
63
- type: 'user_message';
64
- payload: SessionScopedPayload & {
65
- id: string;
66
- content: string;
67
- timestamp: number;
68
- /** Atomically replace only the provider-bound conversation before this run. */
69
- freshContext?: boolean | undefined;
70
- /** Images attached in the composer (paste / drop / file picker). The
71
- * server converts these to canonical ImageBlocks ahead of the text. */
72
- images?: WSUserMessageImage[];
73
- /** @deprecated Legacy single-image field (a full data-URL). Servers
74
- * still accept it; new clients send `images` instead. */
75
- imageBase64?: string;
76
- };
77
- }
78
- export interface WSTextDelta {
79
- type: 'provider.text_delta';
80
- payload: SessionScopedPayload & {
81
- text: string;
82
- messageId: string;
83
- };
84
- }
85
- export interface WSThinkingDelta {
86
- type: 'provider.thinking_delta';
87
- payload: SessionScopedPayload & {
88
- text: string;
89
- };
90
- }
91
- export interface WSCodeMapFileTarget {
92
- filePath: string;
93
- operation: 'read' | 'write' | 'edit' | 'delete' | 'search';
94
- line?: number | undefined;
95
- endLine?: number | undefined;
96
- }
97
- export interface WSToolUseStart {
98
- type: 'tool.started';
99
- payload: SessionScopedPayload & {
100
- id: string;
101
- name: string;
102
- traceId?: string | undefined;
103
- agentId?: string | undefined;
104
- agentName?: string | undefined;
105
- input?: unknown | undefined;
106
- fileTargets?: WSCodeMapFileTarget[] | undefined;
107
- messageId: string;
108
- };
109
- }
110
- export interface WSToolProgress {
111
- type: 'tool.progress';
112
- payload: SessionScopedPayload & {
113
- name: string;
114
- id: string;
115
- traceId?: string | undefined;
116
- agentId?: string | undefined;
117
- agentName?: string | undefined;
118
- event: {
119
- type: 'log' | 'warning' | 'metric' | 'file_changed' | 'partial_output';
120
- text?: string | undefined;
121
- data?: Record<string, unknown>;
122
- path?: string | undefined;
123
- operation?: 'write' | 'edit' | 'delete' | 'rename' | undefined;
124
- line?: number | undefined;
125
- endLine?: number | undefined;
126
- };
127
- };
128
- }
129
- export interface WSToolExecuted {
130
- type: 'tool.executed';
131
- payload: SessionScopedPayload & {
132
- id: string;
133
- name: string;
134
- traceId?: string | undefined;
135
- agentId?: string | undefined;
136
- agentName?: string | undefined;
137
- durationMs: number;
138
- ok: boolean;
139
- input?: unknown | undefined;
140
- fileTargets?: WSCodeMapFileTarget[] | undefined;
141
- output?: string | undefined;
142
- /**
143
- * SAGE Memory Injector block (`--- SAGE: … ---` header first, then one line
144
- * per memory) split off `output` by the backend before its preview cap.
145
- * Rendered as a memory card — never appended back onto the tool body.
146
- */
147
- sage?: string[] | undefined;
148
- outputBytes?: number | undefined;
149
- outputTokens?: number | undefined;
150
- outputLines?: number | undefined;
151
- };
152
- }
1
+ import type { Usage } from '@wrongstack/core/types';
2
+ import type { SessionScopedPayload, WSCodeMapFileTarget } from '@wrongstack/webui-protocol';
3
+ /** Moved to webui-protocol (conversation-core.ts), the single source the SDK shares. */
4
+ export type { SessionScopedPayload, WSCodeMapFileTarget, WSIterationCompleted, WSIterationStarted, WSProviderError, WSProviderRetry, WSRunResult, WSSessionEnd, WSSessionFramesResumed, WSSessionRunState, WSSessionStart, WSTextDelta, WSThinkingDelta, WSToolExecuted, WSToolProgress, WSToolUseStart, WSUserMessage, WSUserMessageImage, } from '@wrongstack/webui-protocol';
153
5
  /** Subagent tool lifecycle dedicated to CodeMap; intentionally does not create chat bubbles. */
154
6
  export interface WSCodeMapToolStarted {
155
7
  type: 'codemap.tool_started';
@@ -183,20 +35,6 @@ export interface WSCodeMapToolExecuted {
183
35
  fileTargets?: WSCodeMapFileTarget[] | undefined;
184
36
  };
185
37
  }
186
- export interface WSIterationStarted {
187
- type: 'iteration.started';
188
- payload: SessionScopedPayload & {
189
- index: number;
190
- maxIterations?: number | undefined;
191
- };
192
- }
193
- export interface WSIterationCompleted {
194
- type: 'iteration.completed';
195
- payload: SessionScopedPayload & {
196
- index: number;
197
- totalIterations: number;
198
- };
199
- }
200
38
  export interface WSIterationLimitReached {
201
39
  type: 'iteration.limit_reached';
202
40
  payload: SessionScopedPayload & {
@@ -213,25 +51,6 @@ export interface WSProviderResponse {
213
51
  messageId: string;
214
52
  };
215
53
  }
216
- export interface WSProviderRetry {
217
- type: 'provider.retry';
218
- payload: SessionScopedPayload & {
219
- providerId: string;
220
- attempt: number;
221
- delayMs: number;
222
- status: number;
223
- description: string;
224
- };
225
- }
226
- export interface WSProviderError {
227
- type: 'provider.error';
228
- payload: SessionScopedPayload & {
229
- providerId: string;
230
- status: number;
231
- description: string;
232
- retryable: boolean;
233
- };
234
- }
235
54
  export interface WSProviderFallback {
236
55
  type: 'provider.fallback';
237
56
  payload: SessionScopedPayload & {
@@ -344,21 +163,6 @@ export interface WSProviderStreamError {
344
163
  message: string;
345
164
  };
346
165
  }
347
- /**
348
- * Whether one session's run is live, answered per declared tab.
349
- *
350
- * A reconnect is the hole this closes. `run.result` is what clears a lane's
351
- * spinner, and it is broadcast once — a tab whose run finished while the
352
- * socket was down never hears it, so it spins forever, counts as busy, refuses
353
- * to be recycled and asks to abort a run that ended long ago. Only the tab in
354
- * front gets a `session.start` on reconnect; this answers for all four.
355
- */
356
- export interface WSSessionRunState {
357
- type: 'session.run_state';
358
- payload: SessionScopedPayload & {
359
- isRunning: boolean;
360
- };
361
- }
362
166
  export interface WSSessionResumeProgress {
363
167
  type: 'session.resume_progress';
364
168
  payload: SessionScopedPayload & {
@@ -367,20 +171,4 @@ export interface WSSessionResumeProgress {
367
171
  totalBytes: number;
368
172
  };
369
173
  }
370
- export interface WSRunResult {
371
- type: 'run.result';
372
- payload: SessionScopedPayload & {
373
- /** Id of the user_message that initiated this run. */
374
- requestId?: string | undefined;
375
- status: 'done' | 'failed' | 'max_iterations' | 'aborted';
376
- iterations: number;
377
- finalText?: string | undefined;
378
- error?: {
379
- code: string;
380
- message: string;
381
- recoverable: boolean;
382
- };
383
- };
384
- }
385
- export {};
386
174
  //# sourceMappingURL=protocol-core.d.ts.map
@@ -1,5 +1,7 @@
1
1
  import type { UserInputRequest, UserInputResponse } from '@wrongstack/core/types';
2
2
  import type { SessionScopedPayload } from './protocol-core.js';
3
+ /** Moved to webui-protocol (conversation-core.ts), the single source the SDK shares. */
4
+ export type { WSError, WSToolConfirmNeeded, WSToolConfirmResolved, WSToolConfirmResult, } from '@wrongstack/webui-protocol';
3
5
  export interface WSUserInputRequested {
4
6
  type: 'user.input_requested';
5
7
  payload: SessionScopedPayload & {
@@ -11,7 +13,7 @@ export interface WSUserInputResolved {
11
13
  payload: SessionScopedPayload & {
12
14
  requestId: string;
13
15
  response: UserInputResponse;
14
- source: 'user' | 'abort';
16
+ source: 'user' | 'abort' | 'unattended';
15
17
  };
16
18
  }
17
19
  export interface WSUserInputSubmit {
@@ -31,43 +33,6 @@ export interface WSSessionStats {
31
33
  duration: number;
32
34
  };
33
35
  }
34
- export interface WSError {
35
- type: 'error';
36
- payload: SessionScopedPayload & {
37
- phase: string;
38
- message: string;
39
- };
40
- }
41
- export interface WSToolConfirmNeeded {
42
- type: 'tool.confirm_needed';
43
- payload: SessionScopedPayload & {
44
- id: string;
45
- toolName: string;
46
- input: unknown;
47
- suggestedPattern: string;
48
- decisionSource?: string | undefined;
49
- riskTier?: 'safe' | 'standard' | 'destructive' | undefined;
50
- boundaryReason?: string | undefined;
51
- deadlineAt?: number | undefined;
52
- };
53
- }
54
- export interface WSToolConfirmResolved {
55
- type: 'tool.confirm_resolved';
56
- payload: SessionScopedPayload & {
57
- id: string;
58
- toolName: string;
59
- decision: 'yes' | 'no' | 'always' | 'always-exact' | 'always-command' | 'always-tool' | 'deny' | 'abort';
60
- source: 'brain_timeout' | 'abort';
61
- rationale?: string | undefined;
62
- };
63
- }
64
- export interface WSToolConfirmResult {
65
- type: 'tool.confirm_result';
66
- payload: SessionScopedPayload & {
67
- id: string;
68
- decision: 'yes' | 'no' | 'always' | 'always-exact' | 'always-command' | 'always-tool' | 'deny';
69
- };
70
- }
71
36
  export interface WSTrustPersisted {
72
37
  type: 'trust.persisted';
73
38
  payload: SessionScopedPayload & {
@@ -1,4 +1,11 @@
1
1
  import type { SessionScopedPayload } from './protocol-core.js';
2
+ /** Both sides of a changed image; a side is absent when the file was added or deleted. */
3
+ export interface GitImageDiff {
4
+ old?: string | undefined;
5
+ new?: string | undefined;
6
+ oldBytes?: number | undefined;
7
+ newBytes?: number | undefined;
8
+ }
2
9
  export type WSFilesGitServerMessage = {
3
10
  type: 'codebase.index.server.shutdown_result';
4
11
  payload: {
@@ -27,6 +34,19 @@ export type WSFilesGitServerMessage = {
27
34
  error?: string | undefined;
28
35
  sessionId?: string | undefined;
29
36
  };
37
+ } | {
38
+ /** A project image as a data URL (see `lib/project-image.ts`). */
39
+ type: 'files.image';
40
+ payload: {
41
+ filePath: string;
42
+ dataUrl?: string | undefined;
43
+ bytes?: number | undefined;
44
+ /** The bytes are not a raster image the browser should show. */
45
+ notImage?: boolean | undefined;
46
+ tooLarge?: boolean | undefined;
47
+ error?: string | undefined;
48
+ sessionId?: string | undefined;
49
+ };
30
50
  } | {
31
51
  type: 'files.skeleton_result';
32
52
  payload: {
@@ -188,6 +208,8 @@ export type WSFilesGitServerMessage = {
188
208
  binary?: boolean | undefined;
189
209
  tooLarge?: boolean | undefined;
190
210
  error?: string | undefined;
211
+ /** A changed image: HEAD and working-tree versions as data URLs. */
212
+ image?: GitImageDiff | undefined;
191
213
  };
192
214
  } | {
193
215
  type: 'projects.list';
@@ -122,9 +122,11 @@ export type WSMcpServerMessage = {
122
122
  };
123
123
  } | {
124
124
  type: 'mcp.server.disconnected';
125
+ /** `terminal`: connect/reconnect exhausted; only `/mcp restart` brings it back. */
125
126
  payload: {
126
127
  name: string;
127
128
  reason: string;
129
+ terminal?: boolean | undefined;
128
130
  };
129
131
  } | {
130
132
  type: 'mcp.server.error';
@@ -138,6 +140,36 @@ export type WSMcpServerMessage = {
138
140
  success: boolean;
139
141
  message: string;
140
142
  };
143
+ } | {
144
+ type: 'mcp.auth.status';
145
+ payload: {
146
+ serverName: string;
147
+ resource: string;
148
+ state: 'not_authorized' | 'pending' | 'authorized' | 'expired';
149
+ expiresAt?: number;
150
+ scopes: string[];
151
+ canRefresh: boolean;
152
+ };
153
+ } | {
154
+ type: 'mcp.auth.pending';
155
+ payload: {
156
+ name: string;
157
+ authorizationUrl: string;
158
+ redirectUri: string;
159
+ scopes: string[];
160
+ expiresAt: number;
161
+ clientIdSource: 'explicit' | 'stored' | 'registered';
162
+ };
163
+ } | {
164
+ type: 'mcp.server.auth_state';
165
+ payload: {
166
+ name: string;
167
+ state: 'authorized' | 'refreshed' | 'reauth_required' | 'removed' | 'failed';
168
+ resource: string;
169
+ expiresAt?: number;
170
+ scopes?: string[];
171
+ message?: string;
172
+ };
141
173
  } | {
142
174
  type: 'mcp.resources';
143
175
  payload: {