@wrongstack/webui 0.293.0 → 0.295.1

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 (256) hide show
  1. package/dist/App.d.ts.map +1 -1
  2. package/dist/assets/AgentRosterView-C7u9H5Jp.js +11 -0
  3. package/dist/assets/AnalyticsDashboard-CZ8KAg7h.js +1 -0
  4. package/dist/assets/AudienceMemoryPanel-N6ErXDAb.js +3 -0
  5. package/dist/assets/ChangesView-fVxtWQ07.js +1 -0
  6. package/dist/assets/ChronicleDashboard-C-NQsArq.js +1 -0
  7. package/dist/assets/CodeEditor-B9k1HwTM.js +1 -0
  8. package/dist/assets/CodeMap-CZ7wFa8f.js +1 -0
  9. package/dist/assets/ConfirmModal-BvW6_eIc.js +1 -0
  10. package/dist/assets/{CronJobsPanel-ByJqIjCv.js → CronJobsPanel-C4zvyecc.js} +1 -1
  11. package/dist/assets/{DebugDashboard-B0pikasm.js → DebugDashboard-Z7ZFkSFX.js} +1 -1
  12. package/dist/assets/DesignGalleryView-DIsg05FX.js +1 -0
  13. package/dist/assets/{GoalView-DXO9txQs.js → GoalView-pBKJcLBt.js} +1 -1
  14. package/dist/assets/KanbanView-qzKvGeMx.js +3 -0
  15. package/dist/assets/{LazyMarkdown-BHoUIDge.js → LazyMarkdown-Cpjlf6IL.js} +3 -3
  16. package/dist/assets/MailboxDetailView-BKxA4wf_.js +1 -0
  17. package/dist/assets/MemoryManager-DO_Z8Scl.js +1 -0
  18. package/dist/assets/{ModelPicker-CEZN673P.js → ModelPicker-DOXb0iz4.js} +1 -1
  19. package/dist/assets/{OfficeMapPanel-B0j4e2O1.css → OfficeMapPanel-BFIF-EMt.css} +1 -1
  20. package/dist/assets/OfficeMapPanel-BVDeIWuD.js +4 -0
  21. package/dist/assets/ProcessMonitor-Ci000o1n.js +1 -0
  22. package/dist/assets/{QueuePanel-DMXksqFS.js → QueuePanel-63vvbJOy.js} +1 -1
  23. package/dist/assets/{RefreshDebugView-D08bCHA4.js → RefreshDebugView-8Sivo34V.js} +1 -1
  24. package/dist/assets/SddHub-DW97GpcS.js +2 -0
  25. package/dist/assets/{SessionsDashboard-BY77vax1.js → SessionsDashboard-DhNaepDJ.js} +1 -1
  26. package/dist/assets/SetupScreen-BewutFxF.js +1 -0
  27. package/dist/assets/SkillDetailView-d39kknmg.js +3 -0
  28. package/dist/assets/{SpecsView-CZg7e2ml.js → SpecsView-BOp0sUME.js} +1 -1
  29. package/dist/assets/TechStackView-DfFfTJVR.js +1 -0
  30. package/dist/assets/{TerminalPanel-SnRvUh6N.js → TerminalPanel-663hC2Jc.js} +1 -1
  31. package/dist/assets/{Toaster-BNdKxZ1U.js → Toaster-YMBi0Ssd.js} +1 -1
  32. package/dist/assets/activity-3HtRx2SK.js +5 -0
  33. package/dist/assets/activity-BGlYr63p.js +5 -0
  34. package/dist/assets/activity-BolwRvqr.js +5 -0
  35. package/dist/assets/activity-C8BMSvRx.js +5 -0
  36. package/dist/assets/{activity-Dyikq8Zm.js → activity-CM8z-okz.js} +4 -4
  37. package/dist/assets/activity-HfL12UVp.js +5 -0
  38. package/dist/assets/activity-Xd77MZv_.js +5 -0
  39. package/dist/assets/{button-Dy0bAtEY.js → button-5TIs9T5p.js} +1 -1
  40. package/dist/assets/{chat-store-CUODHW6c.js → chat-store-fBghgjNK.js} +7 -7
  41. package/dist/assets/{codemap-activity-store-CgtLR4PV.js → codemap-activity-store-C5DyqUoZ.js} +1 -1
  42. package/dist/assets/codemap-index-store-p2tz1Laz.js +1 -0
  43. package/dist/assets/{dialog-CBgO-uqz.js → dialog-BkCs93Vo.js} +1 -1
  44. package/dist/assets/empty-state-DrJ4uVh8.js +1 -0
  45. package/dist/assets/{i18n-Dk35g-uV.js → i18n-Cjk0Ya0G.js} +2 -2
  46. package/dist/assets/index-D0zt9ziw.css +1 -0
  47. package/dist/assets/index-HYvJnpTs.js +126 -0
  48. package/dist/assets/{input-B6FY_vtB.js → input-dEFwkTqb.js} +1 -1
  49. package/dist/assets/{mailbox-store-BY2SVw-s.js → mailbox-store-DC7x_eml.js} +1 -1
  50. package/dist/assets/progress-ring-CGN0o9DE.js +1 -0
  51. package/dist/assets/roster-ws-GsDcHg-w.js +1 -0
  52. package/dist/assets/{session-store-Coiik-Ib.js → session-store-DGtTSpPv.js} +1 -1
  53. package/dist/assets/{settings-C65WW7Jn.js → settings-24NUQrlz.js} +1 -1
  54. package/dist/assets/{settings-Dp5NIt-h.js → settings-BcyGqyX3.js} +1 -1
  55. package/dist/assets/{settings-B9dVH8oJ.js → settings-BhEHLxqK.js} +1 -1
  56. package/dist/assets/{settings-BBR9xBqW.js → settings-C67tfoiy.js} +1 -1
  57. package/dist/assets/{settings-BaZcBGA7.js → settings-CvkIXOQE.js} +1 -1
  58. package/dist/assets/{settings-BXWyZpz5.js → settings-DGTQ4aKo.js} +1 -1
  59. package/dist/assets/{settings-BK1-R1dO.js → settings-i7lxRYZu.js} +1 -1
  60. package/dist/assets/shared-C_yjayIp.js +1 -0
  61. package/dist/assets/stores-BSWgxKNz.js +6 -0
  62. package/dist/assets/ui-store-DPNSalc-.js +1 -0
  63. package/dist/assets/useWebSocket-BBOEYTRy.js +28 -0
  64. package/dist/assets/{utils-DEzFewqr.js → utils-YTsIExHc.js} +1 -1
  65. package/dist/assets/{vendor-DffL_bim.js → vendor-B8C0AAAG.js} +30 -30
  66. package/dist/assets/{view-navigation-BjlXpDXc.js → view-navigation-CV5XT76I.js} +1 -1
  67. package/dist/assets/ws-client-Cc6w_0zh.js +1 -0
  68. package/dist/components/AgentOfficeView.d.ts.map +1 -1
  69. package/dist/components/AgentRosterView.d.ts +16 -0
  70. package/dist/components/AgentRosterView.d.ts.map +1 -0
  71. package/dist/components/AgentRuntimePolicyEditor.d.ts +8 -0
  72. package/dist/components/AgentRuntimePolicyEditor.d.ts.map +1 -0
  73. package/dist/components/AvailabilityCalendarEditor.d.ts +1 -1
  74. package/dist/components/AvailabilityCalendarEditor.d.ts.map +1 -1
  75. package/dist/components/ChangesView.d.ts.map +1 -1
  76. package/dist/components/ChatInput/slash-commands.d.ts.map +1 -1
  77. package/dist/components/ChatInput/slash-routing.d.ts +2 -0
  78. package/dist/components/ChatInput/slash-routing.d.ts.map +1 -1
  79. package/dist/components/ChatInput.d.ts.map +1 -1
  80. package/dist/components/ChatView/index.d.ts.map +1 -1
  81. package/dist/components/ChronicleDashboard.d.ts.map +1 -1
  82. package/dist/components/CodeEditor.d.ts.map +1 -1
  83. package/dist/components/CodeMap.d.ts +6 -0
  84. package/dist/components/CodeMap.d.ts.map +1 -1
  85. package/dist/components/ContextDashboard.d.ts.map +1 -1
  86. package/dist/components/CronTrigger.d.ts +1 -1
  87. package/dist/components/CronTrigger.d.ts.map +1 -1
  88. package/dist/components/CustomRosterPanel.d.ts +38 -0
  89. package/dist/components/CustomRosterPanel.d.ts.map +1 -0
  90. package/dist/components/DesignGalleryView.d.ts.map +1 -1
  91. package/dist/components/FileActivityDrawer.d.ts +14 -0
  92. package/dist/components/FileActivityDrawer.d.ts.map +1 -1
  93. package/dist/components/FleetMonitor.d.ts.map +1 -1
  94. package/dist/components/KanbanDecompositionPanel.d.ts +28 -0
  95. package/dist/components/KanbanDecompositionPanel.d.ts.map +1 -0
  96. package/dist/components/KanbanTaskTree.d.ts +13 -0
  97. package/dist/components/KanbanTaskTree.d.ts.map +1 -0
  98. package/dist/components/KanbanVerificationDashboard.d.ts +12 -0
  99. package/dist/components/KanbanVerificationDashboard.d.ts.map +1 -0
  100. package/dist/components/KanbanView.d.ts +17 -1
  101. package/dist/components/KanbanView.d.ts.map +1 -1
  102. package/dist/components/MailboxDetailView.d.ts.map +1 -1
  103. package/dist/components/MailboxPanel.d.ts.map +1 -1
  104. package/dist/components/MemoryManager/MemoryDetail.d.ts +4 -4
  105. package/dist/components/MemoryManager/MemoryDetail.d.ts.map +1 -1
  106. package/dist/components/MemoryManager/MemoryEditor.d.ts.map +1 -1
  107. package/dist/components/MemoryManager/MemoryFilters.d.ts +4 -4
  108. package/dist/components/MemoryManager/MemoryFilters.d.ts.map +1 -1
  109. package/dist/components/MemoryManager/MemoryGraph.d.ts +4 -4
  110. package/dist/components/MemoryManager/MemoryGraph.d.ts.map +1 -1
  111. package/dist/components/MemoryManager/MemoryList.d.ts +3 -3
  112. package/dist/components/MemoryManager/MemoryList.d.ts.map +1 -1
  113. package/dist/components/MemoryManager/index.d.ts.map +1 -1
  114. package/dist/components/MemoryManager/shared.d.ts +15 -15
  115. package/dist/components/MemoryManager/shared.d.ts.map +1 -1
  116. package/dist/components/MessageBubble/index.d.ts.map +1 -1
  117. package/dist/components/OfficeMapCanvas/resolve.d.ts +17 -1
  118. package/dist/components/OfficeMapCanvas/resolve.d.ts.map +1 -1
  119. package/dist/components/OfficeMapCanvas/use-recently-finished.d.ts +21 -0
  120. package/dist/components/OfficeMapCanvas/use-recently-finished.d.ts.map +1 -0
  121. package/dist/components/OfficeMapCanvas.d.ts.map +1 -1
  122. package/dist/components/ProcessMonitor.d.ts.map +1 -1
  123. package/dist/components/QueuePanel.d.ts.map +1 -1
  124. package/dist/components/RefinePanel.d.ts +10 -3
  125. package/dist/components/RefinePanel.d.ts.map +1 -1
  126. package/dist/components/SddBoardView.d.ts.map +1 -1
  127. package/dist/components/SddTaskDrawer.d.ts.map +1 -1
  128. package/dist/components/SearchOverlay.d.ts.map +1 -1
  129. package/dist/components/SettingsPanel/BrainSection.d.ts.map +1 -1
  130. package/dist/components/SettingsPanel/ChimeraSettingsPanel.d.ts.map +1 -1
  131. package/dist/components/SettingsPanel/MCPSection.d.ts +4 -0
  132. package/dist/components/SettingsPanel/MCPSection.d.ts.map +1 -1
  133. package/dist/components/SettingsPanel/PluginToggleList.d.ts.map +1 -1
  134. package/dist/components/SettingsPanel/PreferenceControls.d.ts +3 -1
  135. package/dist/components/SettingsPanel/PreferenceControls.d.ts.map +1 -1
  136. package/dist/components/SettingsPanel/PreferenceToggle.d.ts +3 -1
  137. package/dist/components/SettingsPanel/PreferenceToggle.d.ts.map +1 -1
  138. package/dist/components/SettingsPanel/ProviderModelsPanel.d.ts.map +1 -1
  139. package/dist/components/SettingsPanel/ProviderSection.d.ts.map +1 -1
  140. package/dist/components/SettingsPanel/index.d.ts.map +1 -1
  141. package/dist/components/SettingsPanel/local-presets.d.ts +2 -29
  142. package/dist/components/SettingsPanel/local-presets.d.ts.map +1 -1
  143. package/dist/components/SetupScreen.d.ts.map +1 -1
  144. package/dist/components/ShortcutsOverlay.d.ts.map +1 -1
  145. package/dist/components/SidePanel/AgentsPanel.d.ts.map +1 -1
  146. package/dist/components/SidePanel/SessionPanel.d.ts.map +1 -1
  147. package/dist/components/SidePanel/SkillsList.d.ts.map +1 -1
  148. package/dist/components/SkillDetailView.d.ts.map +1 -1
  149. package/dist/components/TaskVerificationSection.d.ts +15 -0
  150. package/dist/components/TaskVerificationSection.d.ts.map +1 -0
  151. package/dist/components/TechStackView/DependencyDetail.d.ts +2 -1
  152. package/dist/components/TechStackView/DependencyDetail.d.ts.map +1 -1
  153. package/dist/components/TechStackView/DependencyTable.d.ts +2 -1
  154. package/dist/components/TechStackView/DependencyTable.d.ts.map +1 -1
  155. package/dist/components/TechStackView/index.d.ts.map +1 -1
  156. package/dist/components/TechStackView/shared.d.ts +37 -4
  157. package/dist/components/TechStackView/shared.d.ts.map +1 -1
  158. package/dist/components/VerificationReportPanel.d.ts +15 -0
  159. package/dist/components/VerificationReportPanel.d.ts.map +1 -0
  160. package/dist/components/activity-bar/index.d.ts.map +1 -1
  161. package/dist/components/agents/AgentDetailSection.d.ts.map +1 -1
  162. package/dist/components/agents/AgentRosterCard.d.ts.map +1 -1
  163. package/dist/components/agents/FleetSummaryBar.d.ts.map +1 -1
  164. package/dist/components/codemap-model.d.ts +9 -0
  165. package/dist/components/codemap-model.d.ts.map +1 -1
  166. package/dist/components/ui/api-key-display.d.ts +14 -0
  167. package/dist/components/ui/api-key-display.d.ts.map +1 -0
  168. package/dist/components/ui/empty-state.d.ts +29 -0
  169. package/dist/components/ui/empty-state.d.ts.map +1 -0
  170. package/dist/components/ui/progress-ring.d.ts +10 -0
  171. package/dist/components/ui/progress-ring.d.ts.map +1 -0
  172. package/dist/hooks/useGlobalKeyboardShortcuts.d.ts +1 -1
  173. package/dist/hooks/useGlobalKeyboardShortcuts.d.ts.map +1 -1
  174. package/dist/hooks/useWebSocket.d.ts +13 -13
  175. package/dist/hooks/useWebSocket.d.ts.map +1 -1
  176. package/dist/hooks/ws-handlers/chat-handlers.d.ts.map +1 -1
  177. package/dist/hooks/ws-handlers/fleet-handlers.d.ts.map +1 -1
  178. package/dist/hooks/ws-handlers/session-handlers.d.ts.map +1 -1
  179. package/dist/hooks/ws-handlers.d.ts +8 -7
  180. package/dist/hooks/ws-handlers.d.ts.map +1 -1
  181. package/dist/index.css +258 -7
  182. package/dist/index.css.map +2 -2
  183. package/dist/index.html +24 -23
  184. package/dist/index.js +14600 -8873
  185. package/dist/index.js.map +4 -4
  186. package/dist/lib/agent-office.d.ts +22 -0
  187. package/dist/lib/agent-office.d.ts.map +1 -1
  188. package/dist/lib/kanban-verification.d.ts +52 -0
  189. package/dist/lib/kanban-verification.d.ts.map +1 -0
  190. package/dist/lib/model-calendar.d.ts +1 -1
  191. package/dist/lib/model-calendar.d.ts.map +1 -1
  192. package/dist/lib/model-matrix-routes.d.ts +2 -191
  193. package/dist/lib/model-matrix-routes.d.ts.map +1 -1
  194. package/dist/lib/plugin-enablement.d.ts +1 -1
  195. package/dist/lib/plugin-enablement.d.ts.map +1 -1
  196. package/dist/lib/roster-ws.d.ts +48 -0
  197. package/dist/lib/roster-ws.d.ts.map +1 -0
  198. package/dist/lib/view-navigation.d.ts +1 -1
  199. package/dist/lib/view-navigation.d.ts.map +1 -1
  200. package/dist/lib/ws-client-utils.d.ts +1 -2
  201. package/dist/lib/ws-client-utils.d.ts.map +1 -1
  202. package/dist/lib/ws-client.d.ts +30 -22
  203. package/dist/lib/ws-client.d.ts.map +1 -1
  204. package/dist/protocol-compatibility.d.ts +12 -0
  205. package/dist/protocol-compatibility.d.ts.map +1 -0
  206. package/dist/providers.json +105 -85
  207. package/dist/stores/codemap-index-store.d.ts +9 -0
  208. package/dist/stores/codemap-index-store.d.ts.map +1 -0
  209. package/dist/stores/kanban-store.d.ts +4 -0
  210. package/dist/stores/kanban-store.d.ts.map +1 -1
  211. package/dist/stores/local-prefs.d.ts +2 -2
  212. package/dist/stores/local-prefs.d.ts.map +1 -1
  213. package/dist/stores/mailbox-store.d.ts +2 -0
  214. package/dist/stores/mailbox-store.d.ts.map +1 -1
  215. package/dist/stores/session-store.d.ts +1 -1
  216. package/dist/stores/session-store.d.ts.map +1 -1
  217. package/dist/stores/specs-store.d.ts +4 -0
  218. package/dist/stores/specs-store.d.ts.map +1 -1
  219. package/dist/stores/types.d.ts +1 -1
  220. package/dist/stores/types.d.ts.map +1 -1
  221. package/dist/stores/ui-store.d.ts +6 -4
  222. package/dist/stores/ui-store.d.ts.map +1 -1
  223. package/dist/stores/viz-store.d.ts.map +1 -1
  224. package/dist/types.d.ts +482 -68
  225. package/dist/types.d.ts.map +1 -1
  226. package/package.json +7 -6
  227. package/dist/assets/AnalyticsDashboard--x-f8QI-.js +0 -1
  228. package/dist/assets/AudienceMemoryPanel-j9I0RvhP.js +0 -3
  229. package/dist/assets/ChangesView-Bb5LXWiI.js +0 -1
  230. package/dist/assets/ChronicleDashboard-D34oKMQ_.js +0 -1
  231. package/dist/assets/CodeEditor-BkIIR8EU.js +0 -1
  232. package/dist/assets/CodeMap-Ej4UNFUm.js +0 -1
  233. package/dist/assets/ConfirmModal-4l0Tyazp.js +0 -1
  234. package/dist/assets/DesignGalleryView-CgLsdzTx.js +0 -1
  235. package/dist/assets/KanbanView--bFrj9Xa.js +0 -2
  236. package/dist/assets/MailboxDetailView-C-Vf3h1d.js +0 -1
  237. package/dist/assets/MemoryManager-DoHNBnKd.js +0 -1
  238. package/dist/assets/OfficeMapPanel-BMf4PTWo.js +0 -4
  239. package/dist/assets/ProcessMonitor-BtfARuHq.js +0 -1
  240. package/dist/assets/SddHub-QgMFn_rC.js +0 -2
  241. package/dist/assets/SetupScreen-CU7Mq-5T.js +0 -1
  242. package/dist/assets/SkillDetailView-6ZIVx1BG.js +0 -3
  243. package/dist/assets/TechStackView-9hfnNKx-.js +0 -1
  244. package/dist/assets/activity-AfUMXtSI.js +0 -5
  245. package/dist/assets/activity-Bd_pRifE.js +0 -5
  246. package/dist/assets/activity-Ct_QOdtL.js +0 -5
  247. package/dist/assets/activity-Cyx4UukM.js +0 -5
  248. package/dist/assets/activity-Ukyu3lON.js +0 -5
  249. package/dist/assets/activity-gaWDc806.js +0 -5
  250. package/dist/assets/index-DGX8tPCe.css +0 -1
  251. package/dist/assets/index-OmSX-BAb.js +0 -124
  252. package/dist/assets/shared-CpXz-tzA.js +0 -1
  253. package/dist/assets/stores-CUp_ut8r.js +0 -6
  254. package/dist/assets/ui-store-CwOvhFZG.js +0 -1
  255. package/dist/assets/useWebSocket-BJorYmOi.js +0 -27
  256. package/dist/assets/ws-client-Fnmzo7vN.js +0 -1
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Usage } from '@wrongstack/core';
1
+ import type { SessionMarker, Usage } from '@wrongstack/core/types';
2
2
  import type { KanbanBoard, KanbanBoardPresence, KanbanBoardSummary, KanbanEvent, KanbanTask } from '@wrongstack/kanban';
3
3
  export interface WSMessage {
4
4
  type: string;
@@ -24,6 +24,10 @@ export interface WSSessionStart {
24
24
  content: unknown;
25
25
  ts?: string | undefined;
26
26
  }>;
27
+ /** Audit markers (compaction, mode/skill switches, subagent lifecycle,
28
+ * provider retries, truncation) projected server-side. Replayed alongside
29
+ * the conversation so a reconnect shows what the live stream showed. */
30
+ replayMarkers?: SessionMarker[] | undefined;
27
31
  replayUsage?: Usage | undefined;
28
32
  /** True when no provider+model is configured yet — show the setup screen. */
29
33
  needsSetup?: boolean | undefined;
@@ -389,6 +393,90 @@ export interface ChronicleGraphResult {
389
393
  }>;
390
394
  truncated: boolean;
391
395
  }
396
+ /** Derived aggregates served from the server-side Chronicle metrics store
397
+ * (metrics.db) — no raw journal scan on the request path. */
398
+ export type ChronicleMetricsView = 'summary' | 'providers' | 'tasks' | 'files';
399
+ export interface ChronicleMetricsRefresh {
400
+ ingestedEvents: number;
401
+ ingestedBytes: number;
402
+ sourceFiles: number;
403
+ invalidLines: number;
404
+ }
405
+ export interface ChronicleProviderDailyRow {
406
+ day: string;
407
+ providerId: string;
408
+ modelId: string;
409
+ attempts: number;
410
+ completed: number;
411
+ failed: number;
412
+ retries: number;
413
+ fallbacks: number;
414
+ inputTokens: number;
415
+ outputTokens: number;
416
+ cacheReadTokens: number;
417
+ cacheWriteTokens: number;
418
+ avgDurationMs: number;
419
+ maxDurationMs: number;
420
+ }
421
+ export interface ChronicleTaskOutcomeRow {
422
+ taskId: string;
423
+ runId: string;
424
+ boardId: string;
425
+ sessionId: string;
426
+ agentId: string;
427
+ status: string;
428
+ startedAt: string | null;
429
+ endedAt: string | null;
430
+ durationMs: number | null;
431
+ retries: number;
432
+ verificationFailures: number;
433
+ filesTouched: number;
434
+ }
435
+ export interface ChronicleFileLineageRow {
436
+ path: string;
437
+ operation: string;
438
+ occurredAt: string;
439
+ sessionId: string;
440
+ agentId: string;
441
+ taskId: string;
442
+ boardId: string;
443
+ runId: string;
444
+ toolName: string;
445
+ providerId: string;
446
+ modelId: string;
447
+ source: string;
448
+ }
449
+ export interface ChronicleMetricsSummaryView {
450
+ providers: {
451
+ attempts: number;
452
+ completed: number;
453
+ failed: number;
454
+ successRate: number;
455
+ };
456
+ tasks: Record<string, number>;
457
+ files: {
458
+ mutations: number;
459
+ uniquePaths: number;
460
+ };
461
+ estimatedCostUsd: number;
462
+ }
463
+ export type ChronicleMetricsResultPayload = {
464
+ view: 'summary';
465
+ refreshed: ChronicleMetricsRefresh;
466
+ data: ChronicleMetricsSummaryView;
467
+ } | {
468
+ view: 'providers';
469
+ refreshed: ChronicleMetricsRefresh;
470
+ data: ChronicleProviderDailyRow[];
471
+ } | {
472
+ view: 'tasks';
473
+ refreshed: ChronicleMetricsRefresh;
474
+ data: ChronicleTaskOutcomeRow[];
475
+ } | {
476
+ view: 'files';
477
+ refreshed: ChronicleMetricsRefresh;
478
+ data: ChronicleFileLineageRow[];
479
+ };
392
480
  export interface WSSessionStats {
393
481
  type: 'session.stats';
394
482
  payload: {
@@ -441,6 +529,8 @@ export interface WSToolLoopDetected {
441
529
  repeatCount: number;
442
530
  iteration: number;
443
531
  kind?: 'tool' | 'message' | 'mixed' | undefined;
532
+ action?: 'steer' | 'cut' | undefined;
533
+ scope?: 'iteration' | 'call' | undefined;
444
534
  };
445
535
  }
446
536
  export interface WSDelegateStarted {
@@ -617,22 +707,23 @@ export interface WSMemoryList {
617
707
  error?: string | undefined;
618
708
  };
619
709
  }
620
- export type SuperMemoryScope = 'project' | 'user' | 'session' | 'file' | 'symbol';
621
- export type SuperMemoryStatus = 'active' | 'stale' | 'superseded' | 'contradicted' | 'archived' | 'deleted';
622
- export interface SuperMemoryAnchor {
623
- type: 'file' | 'directory' | 'symbol' | 'package' | 'command' | 'test' | 'git';
710
+ export type SageScope = 'project' | 'user' | 'session' | 'file' | 'symbol';
711
+ export type SageStatus = 'active' | 'stale' | 'superseded' | 'contradicted' | 'archived' | 'deleted';
712
+ export interface SageAnchor {
713
+ type: 'file' | 'directory' | 'symbol' | 'package' | 'command' | 'test' | 'git' | 'agent';
624
714
  path?: string | undefined;
625
715
  symbol?: string | undefined;
626
716
  command?: string | undefined;
717
+ role?: string | undefined;
627
718
  lineStart?: number | undefined;
628
719
  lineEnd?: number | undefined;
629
720
  }
630
- export interface SuperMemoryEntry {
721
+ export interface SageEntry {
631
722
  id: string;
632
723
  revision: number;
633
- scope: SuperMemoryScope;
724
+ scope: SageScope;
634
725
  kind: string;
635
- status: SuperMemoryStatus;
726
+ status: SageStatus;
636
727
  contextPolicy?: 'eligible' | 'never' | undefined;
637
728
  text: string;
638
729
  summary?: string | undefined;
@@ -640,7 +731,7 @@ export interface SuperMemoryEntry {
640
731
  confidence: number;
641
732
  freshness: number;
642
733
  tags: string[];
643
- anchors: SuperMemoryAnchor[];
734
+ anchors: SageAnchor[];
644
735
  audience?: {
645
736
  roles?: string[];
646
737
  taskTypes?: string[];
@@ -655,13 +746,13 @@ export interface SuperMemoryEntry {
655
746
  lastVerifiedAt?: string | undefined;
656
747
  expiresAt?: string | undefined;
657
748
  }
658
- export interface SuperMemoryStats {
749
+ export interface SageStats {
659
750
  total: number;
660
751
  byStatus: Record<string, number>;
661
752
  byKind: Record<string, number>;
662
753
  edges: number;
663
754
  }
664
- export interface SuperMemoryGraphEdge {
755
+ export interface SageGraphEdge {
665
756
  id: string;
666
757
  from: string;
667
758
  to: string;
@@ -670,57 +761,57 @@ export interface SuperMemoryGraphEdge {
670
761
  evidence?: string[] | undefined;
671
762
  createdAt: string;
672
763
  }
673
- export interface WSMemorySuperList {
674
- type: 'memory.super.list';
764
+ export interface WSMemorySageList {
765
+ type: 'memory.sage.list';
675
766
  payload: {
676
- memories?: SuperMemoryEntry[] | undefined;
677
- stats?: SuperMemoryStats | undefined;
767
+ memories?: SageEntry[] | undefined;
768
+ stats?: SageStats | undefined;
678
769
  error?: string | undefined;
679
770
  };
680
771
  }
681
- export interface WSMemorySuperListPage {
682
- type: 'memory.super.listPage';
772
+ export interface WSMemorySageListPage {
773
+ type: 'memory.sage.listPage';
683
774
  payload: {
684
- memories?: SuperMemoryEntry[] | undefined;
775
+ memories?: SageEntry[] | undefined;
685
776
  nextCursor?: string | null | undefined;
686
777
  total?: number | undefined;
687
778
  statusCounts?: Record<string, number> | undefined;
688
- stats?: SuperMemoryStats | undefined;
779
+ stats?: SageStats | undefined;
689
780
  error?: string | undefined;
690
781
  };
691
782
  }
692
- export interface WSMemorySuperGet {
693
- type: 'memory.super.get';
783
+ export interface WSMemorySageGet {
784
+ type: 'memory.sage.get';
694
785
  payload: {
695
- memory?: SuperMemoryEntry | undefined;
786
+ memory?: SageEntry | undefined;
696
787
  error?: string | undefined;
697
788
  };
698
789
  }
699
- export interface WSMemorySuperGraph {
700
- type: 'memory.super.graph';
790
+ export interface WSMemorySageGraph {
791
+ type: 'memory.sage.graph';
701
792
  payload: {
702
793
  query: string;
703
- edges?: SuperMemoryGraphEdge[] | undefined;
704
- memories?: SuperMemoryEntry[] | undefined;
794
+ edges?: SageGraphEdge[] | undefined;
795
+ memories?: SageEntry[] | undefined;
705
796
  error?: string | undefined;
706
797
  };
707
798
  }
708
- export interface WSMemorySuperUpdate {
709
- type: 'memory.super.update';
799
+ export interface WSMemorySageUpdate {
800
+ type: 'memory.sage.update';
710
801
  payload: {
711
- memory?: SuperMemoryEntry | undefined;
802
+ memory?: SageEntry | undefined;
712
803
  error?: string | undefined;
713
804
  };
714
805
  }
715
- export interface WSMemorySuperRemember {
716
- type: 'memory.super.remember';
806
+ export interface WSMemorySageRemember {
807
+ type: 'memory.sage.remember';
717
808
  payload: {
718
- memory?: SuperMemoryEntry | undefined;
809
+ memory?: SageEntry | undefined;
719
810
  error?: string | undefined;
720
811
  };
721
812
  }
722
- export interface WSMemorySuperDelete {
723
- type: 'memory.super.delete';
813
+ export interface WSMemorySageDelete {
814
+ type: 'memory.sage.delete';
724
815
  payload: {
725
816
  success: boolean;
726
817
  message: string;
@@ -728,9 +819,9 @@ export interface WSMemorySuperDelete {
728
819
  }
729
820
  /**
730
821
  * Why a memory matched the file/drawer query. Mirrors
731
- * `MemoryMatchVia` from `@wrongstack/super-memory` (see PR #4 backend).
822
+ * `MemoryMatchVia` from `@wrongstack/sage` (see PR #4 backend).
732
823
  * Kept as a local re-declaration so the webui types module doesn't have to
733
- * import from super-memory directly.
824
+ * import from sage directly.
734
825
  */
735
826
  export type MemoryMatchVia = 'scope_file' | 'scope_symbol' | 'anchor_file' | 'anchor_symbol' | 'anchor_directory' | 'mention';
736
827
  export interface MemoryPendingReview {
@@ -741,7 +832,7 @@ export interface MemoryPendingReview {
741
832
  }
742
833
  /** Web-side mirror of `MemoryForFileMatch` — superset kept local for layering. */
743
834
  export interface MemoryForFileMatch {
744
- memory: SuperMemoryEntry;
835
+ memory: SageEntry;
745
836
  matchedVia: MemoryMatchVia;
746
837
  /** 0..1; higher = stronger match signal. */
747
838
  matchStrength: number;
@@ -761,11 +852,11 @@ export interface MemoryForFileResponse {
761
852
  reviewPendingCount: number;
762
853
  }
763
854
  /**
764
- * Request payload for `memory.super.forFile`. Cursor fields are optional —
855
+ * Request payload for `memory.sage.forFile`. Cursor fields are optional —
765
856
  * when both are provided, symbol-anchored memories overlapping the cursor
766
857
  * range surface first (cursor-aware boost).
767
858
  */
768
- export interface WSMemorySuperForFileRequest {
859
+ export interface WSMemorySageForFileRequest {
769
860
  /** Project-relative file path. */
770
861
  filePath: string;
771
862
  /** Optional caret line (1-indexed). */
@@ -779,18 +870,18 @@ export interface WSMemorySuperForFileRequest {
779
870
  /** Default false. Show recoverable deleted memories for one-click recovery. */
780
871
  showDeleted?: boolean;
781
872
  }
782
- export interface WSMemorySuperForFile {
783
- type: 'memory.super.forFile';
873
+ export interface WSMemorySageForFile {
874
+ type: 'memory.sage.forFile';
784
875
  payload: {
785
876
  response?: MemoryForFileResponse | undefined;
786
877
  error?: string | undefined;
787
878
  };
788
879
  }
789
- export interface WSMemorySuperRecover {
790
- type: 'memory.super.recover';
880
+ export interface WSMemorySageRecover {
881
+ type: 'memory.sage.recover';
791
882
  payload: {
792
883
  /** The restored memory (active status). */
793
- memory?: SuperMemoryEntry | undefined;
884
+ memory?: SageEntry | undefined;
794
885
  /** True when the requested id was already active/superseded (no-op write). */
795
886
  noop?: boolean | undefined;
796
887
  /** Head-of-chain id when the requested id was superseded. */
@@ -798,8 +889,8 @@ export interface WSMemorySuperRecover {
798
889
  error?: string | undefined;
799
890
  };
800
891
  }
801
- export interface WSMemorySuperCandidateResolve {
802
- type: 'memory.super.candidateResolve';
892
+ export interface WSMemorySageCandidateResolve {
893
+ type: 'memory.sage.candidateResolve';
803
894
  payload: {
804
895
  /** The resolved candidate (with updated status). */
805
896
  candidate?: MemoryCandidateEntry | undefined;
@@ -808,7 +899,7 @@ export interface WSMemorySuperCandidateResolve {
808
899
  error?: string | undefined;
809
900
  };
810
901
  }
811
- /** Local mirror of super-memory's `MemoryCandidate`. */
902
+ /** Local mirror of sage's `MemoryCandidate`. */
812
903
  export interface MemoryCandidateEntry {
813
904
  schemaVersion: 1;
814
905
  id: string;
@@ -818,7 +909,7 @@ export interface MemoryCandidateEntry {
818
909
  confidence: number;
819
910
  importance: number;
820
911
  tags: string[];
821
- anchors: SuperMemoryAnchor[];
912
+ anchors: SageAnchor[];
822
913
  sources: Array<{
823
914
  type: 'user' | 'session' | 'tool_result' | 'project_instruction' | 'file' | 'test' | 'command' | 'legacy_memory';
824
915
  sessionId?: string;
@@ -830,8 +921,8 @@ export interface MemoryCandidateEntry {
830
921
  createdAt: string;
831
922
  updatedAt: string;
832
923
  }
833
- export interface WSMemorySuperBackfillRecoverable {
834
- type: 'memory.super.backfillRecoverable';
924
+ export interface WSMemorySageBackfillRecoverable {
925
+ type: 'memory.sage.backfillRecoverable';
835
926
  payload: {
836
927
  /** Records that were backfilled into a fresh active version (dryRun=false). */
837
928
  recoveredRecords?: Array<{
@@ -934,6 +1025,31 @@ export interface WSDesignSet {
934
1025
  error?: string | undefined;
935
1026
  };
936
1027
  }
1028
+ export interface WSDesignTune {
1029
+ type: 'design.tune';
1030
+ payload: {
1031
+ ok: boolean;
1032
+ /** The concrete token overrides the knobs resolved to. */
1033
+ resolved?: Record<string, string> | undefined;
1034
+ overrides?: Record<string, string> | undefined;
1035
+ error?: string | undefined;
1036
+ };
1037
+ }
1038
+ export interface WSDesignSwap {
1039
+ type: 'design.swap';
1040
+ payload: {
1041
+ ok: boolean;
1042
+ kit?: string | undefined;
1043
+ name?: string | undefined;
1044
+ aesthetic?: string | undefined;
1045
+ stack?: string | undefined;
1046
+ body?: string | undefined;
1047
+ overrides?: Record<string, string> | undefined;
1048
+ light?: Record<string, string> | undefined;
1049
+ dark?: Record<string, string> | undefined;
1050
+ error?: string | undefined;
1051
+ };
1052
+ }
937
1053
  export interface WSDesignMaterialize {
938
1054
  type: 'design.materialize';
939
1055
  payload: {
@@ -1464,6 +1580,134 @@ export interface BrainCouncilVoterWire extends BrainModelEntryWire {
1464
1580
  weight?: number | undefined;
1465
1581
  veto?: boolean | undefined;
1466
1582
  }
1583
+ /** Predicate half of a deterministic Brain rule on the wire (mirrors BrainRuleMatch). */
1584
+ export interface BrainRuleMatchWire {
1585
+ source?: string | string[] | undefined;
1586
+ risk?: string | string[] | undefined;
1587
+ minRisk?: string | undefined;
1588
+ maxRisk?: string | undefined;
1589
+ fallback?: string | string[] | undefined;
1590
+ hasOptions?: boolean | undefined;
1591
+ offersOption?: string | undefined;
1592
+ question?: string | undefined;
1593
+ context?: string | undefined;
1594
+ notQuestion?: string | undefined;
1595
+ notContext?: string | undefined;
1596
+ }
1597
+ /** Action half of a deterministic Brain rule on the wire (mirrors BrainRuleAction). */
1598
+ export type BrainRuleActionWire = {
1599
+ action: 'answer';
1600
+ optionId?: string | undefined;
1601
+ text?: string | undefined;
1602
+ rationale?: string | undefined;
1603
+ } | {
1604
+ action: 'deny';
1605
+ reason?: string | undefined;
1606
+ } | {
1607
+ action: 'escalate';
1608
+ prompt?: string | undefined;
1609
+ } | {
1610
+ action: 'defer';
1611
+ };
1612
+ /** One deterministic Brain rule on the wire (mirrors core's BrainRule). */
1613
+ export interface BrainRuleWire {
1614
+ id: string;
1615
+ enabled?: boolean | undefined;
1616
+ description?: string | undefined;
1617
+ when: BrainRuleMatchWire;
1618
+ then: BrainRuleActionWire;
1619
+ }
1620
+ /** Built-in pattern-heuristic toggles on the wire (mirrors BrainHeuristicsConfig). */
1621
+ export interface BrainHeuristicsWire {
1622
+ lowRiskAutoAnswer: boolean;
1623
+ blockedResolved: boolean;
1624
+ deadlockSkip: boolean;
1625
+ retryExhausted: boolean;
1626
+ continuePing: boolean;
1627
+ blockedResolvedMarkers?: string[] | undefined;
1628
+ }
1629
+ /** Writable form of the heuristic toggles (every field optional, `null` clears the block). */
1630
+ export interface BrainHeuristicsPatchWire {
1631
+ lowRiskAutoAnswer?: boolean | undefined;
1632
+ blockedResolved?: boolean | undefined;
1633
+ deadlockSkip?: boolean | undefined;
1634
+ retryExhausted?: boolean | undefined;
1635
+ continuePing?: boolean | undefined;
1636
+ blockedResolvedMarkers?: string[] | undefined;
1637
+ }
1638
+ /** Effective single-LLM tier quality gate. */
1639
+ export interface BrainLlmWire {
1640
+ maxTokens: number;
1641
+ rejectUncertain: boolean;
1642
+ minConfidence: number;
1643
+ denyIsTerminal: 'never' | 'when-decided' | 'always';
1644
+ }
1645
+ /** Writable single-LLM tier quality gate. */
1646
+ export interface BrainLlmPatchWire {
1647
+ maxTokens?: number | undefined;
1648
+ rejectUncertain?: boolean | undefined;
1649
+ minConfidence?: number | undefined;
1650
+ denyIsTerminal?: 'never' | 'when-decided' | 'always' | undefined;
1651
+ circuitBreaker?: {
1652
+ failureThreshold?: number | undefined;
1653
+ cooldownMs?: number | undefined;
1654
+ } | undefined;
1655
+ }
1656
+ /** Effective replay-trace settings. */
1657
+ export interface BrainTraceWire {
1658
+ enabled: boolean;
1659
+ content: 'none' | 'redacted' | 'full';
1660
+ path?: string | undefined;
1661
+ }
1662
+ /** Writable replay-trace settings. */
1663
+ export interface BrainTracePatchWire {
1664
+ enabled?: boolean | undefined;
1665
+ content?: 'none' | 'redacted' | 'full' | undefined;
1666
+ path?: string | undefined;
1667
+ maxOpenRecords?: number | undefined;
1668
+ }
1669
+ /** BrainMonitor distress-signal settings (same shape read + written). */
1670
+ export interface BrainMonitorWire {
1671
+ enabled?: boolean | undefined;
1672
+ policy?: 'llm' | 'steer' | 'observe' | undefined;
1673
+ signals?: {
1674
+ toolFailureStreak?: boolean | undefined;
1675
+ errorStorm?: boolean | undefined;
1676
+ agentStall?: boolean | undefined;
1677
+ fileChurn?: boolean | undefined;
1678
+ } | undefined;
1679
+ toolFailureStreak?: number | undefined;
1680
+ errorStormCount?: number | undefined;
1681
+ errorStormWindowMs?: number | undefined;
1682
+ stallMs?: number | undefined;
1683
+ stallCheckIntervalMs?: number | undefined;
1684
+ fileChurnThreshold?: number | undefined;
1685
+ fileChurnWindowMs?: number | undefined;
1686
+ fileEditTools?: string[] | undefined;
1687
+ cooldownMs?: number | undefined;
1688
+ }
1689
+ /** Effective decision-cache settings plus live counters (`hits`/`misses`/`size` are read-only). */
1690
+ export interface BrainCacheWire {
1691
+ enabled: boolean;
1692
+ ttlMs: number;
1693
+ maxEntries: number;
1694
+ hits: number;
1695
+ misses: number;
1696
+ size: number;
1697
+ }
1698
+ /** Writable decision-cache settings. */
1699
+ export interface BrainCachePatchWire {
1700
+ enabled?: boolean | undefined;
1701
+ ttlMs?: number | undefined;
1702
+ maxEntries?: number | undefined;
1703
+ }
1704
+ /** One council seat template on the wire. */
1705
+ export interface BrainCouncilSeatWire {
1706
+ persona: string;
1707
+ veto?: boolean | undefined;
1708
+ }
1709
+ /** Headless escalation variant. */
1710
+ export type BrainTerminalPolicyWire = 'conservative' | 'deny-all' | 'continue-on-recommended';
1467
1711
  /** JSON-safe snapshot of the live Brain config (mirrors core's BrainConfigSnapshot). */
1468
1712
  export interface BrainConfigWire {
1469
1713
  mode: 'headless' | 'interactive';
@@ -1481,14 +1725,44 @@ export interface BrainConfigWire {
1481
1725
  quorum?: number | undefined;
1482
1726
  approval?: number | undefined;
1483
1727
  judge?: BrainModelEntryWire | undefined;
1728
+ perCallTimeoutMs?: number | undefined;
1729
+ maxConcurrency?: number | undefined;
1730
+ distinctness: 'none' | 'model' | 'provider';
1731
+ judgeMaxTokens?: number | undefined;
1732
+ seats: BrainCouncilSeatWire[];
1484
1733
  };
1485
1734
  ledger: {
1486
1735
  enabled: boolean;
1487
1736
  autoDenyAfterFailures?: number | undefined;
1488
1737
  path?: string | undefined;
1489
- };
1738
+ /** Writable via the patch; core's snapshot does not echo these back yet. */
1739
+ maxMemoryEntries?: number | undefined;
1740
+ interventionRetryWindowMs?: number | undefined;
1741
+ };
1742
+ /** Configured deterministic rules, in evaluation order (read-only here). */
1743
+ rules: BrainRuleWire[];
1744
+ /** Compile diagnostics from the last assembly — one per dropped rule. */
1745
+ ruleErrors: string[];
1746
+ heuristics: BrainHeuristicsWire;
1747
+ llm: BrainLlmWire;
1748
+ trace: BrainTraceWire;
1749
+ monitor: BrainMonitorWire;
1750
+ terminalPolicy: BrainTerminalPolicyWire;
1751
+ decisionLogMaxEntries: number;
1752
+ /** Live LLM circuit-breaker state, when a breaker is wired (read-only). */
1753
+ circuit?: {
1754
+ state: string;
1755
+ consecutiveFailures: number;
1756
+ } | undefined;
1757
+ cache: BrainCacheWire;
1490
1758
  poolLabels: string[];
1491
1759
  councilLabels: string[];
1760
+ /**
1761
+ * EFFECTIVE council judge, undefined when no council is wired. Distinct from
1762
+ * `council.judge` (the CONFIGURED one, usually absent): the derived judge is
1763
+ * the one that can silently also be a seated voter.
1764
+ */
1765
+ judgeLabel?: string | undefined;
1492
1766
  usingSessionModel: boolean;
1493
1767
  }
1494
1768
  /** Partial Brain config update: omitted = untouched, null = clear, arrays replace. */
@@ -1506,11 +1780,28 @@ export interface BrainConfigPatchWire {
1506
1780
  quorum?: number | null | undefined;
1507
1781
  approval?: number | null | undefined;
1508
1782
  judge?: string | BrainModelEntryWire | null | undefined;
1783
+ perCallTimeoutMs?: number | null | undefined;
1784
+ maxConcurrency?: number | null | undefined;
1785
+ distinctness?: 'none' | 'model' | 'provider' | null | undefined;
1786
+ judgeMaxTokens?: number | null | undefined;
1787
+ seats?: BrainCouncilSeatWire[] | null | undefined;
1509
1788
  } | null | undefined;
1510
1789
  ledger?: {
1511
1790
  enabled?: boolean | undefined;
1512
1791
  autoDenyAfterFailures?: number | null | undefined;
1792
+ maxMemoryEntries?: number | null | undefined;
1793
+ interventionRetryWindowMs?: number | null | undefined;
1513
1794
  } | null | undefined;
1795
+ /** Replaces the whole rule table; `null` clears it. */
1796
+ rules?: BrainRuleWire[] | null | undefined;
1797
+ /** Merged field-by-field; `null` clears the block back to all-defaults. */
1798
+ heuristics?: BrainHeuristicsPatchWire | null | undefined;
1799
+ llm?: BrainLlmPatchWire | null | undefined;
1800
+ trace?: BrainTracePatchWire | null | undefined;
1801
+ monitor?: BrainMonitorWire | null | undefined;
1802
+ terminalPolicy?: BrainTerminalPolicyWire | null | undefined;
1803
+ decisionLogMaxEntries?: number | null | undefined;
1804
+ cache?: BrainCachePatchWire | null | undefined;
1514
1805
  }
1515
1806
  export type WSClientMessageCore = WSUserMessage | WSToolConfirmResult | {
1516
1807
  type: 'side_effects.list';
@@ -1939,9 +2230,12 @@ export type WSClientMessageCore = WSUserMessage | WSToolConfirmResult | {
1939
2230
  } | {
1940
2231
  type: 'memory.list';
1941
2232
  } | {
1942
- type: 'memory.super.list';
2233
+ type: `agent-roster.${string}`;
2234
+ payload?: Record<string, unknown> | undefined;
2235
+ } | {
2236
+ type: 'memory.sage.list';
1943
2237
  } | {
1944
- type: 'memory.super.listPage';
2238
+ type: 'memory.sage.listPage';
1945
2239
  payload: {
1946
2240
  statuses?: string[] | undefined;
1947
2241
  kind?: string | undefined;
@@ -1950,29 +2244,29 @@ export type WSClientMessageCore = WSUserMessage | WSToolConfirmResult | {
1950
2244
  cursor?: string | undefined;
1951
2245
  };
1952
2246
  } | {
1953
- type: 'memory.super.get';
2247
+ type: 'memory.sage.get';
1954
2248
  payload: {
1955
2249
  id: string;
1956
2250
  };
1957
2251
  } | {
1958
- type: 'memory.super.graph';
2252
+ type: 'memory.sage.graph';
1959
2253
  payload: {
1960
2254
  query: string;
1961
2255
  maxDepth?: number;
1962
2256
  limit?: number;
1963
2257
  };
1964
2258
  } | {
1965
- type: 'memory.super.update';
2259
+ type: 'memory.sage.update';
1966
2260
  payload: {
1967
2261
  id: string;
1968
2262
  text?: string | undefined;
1969
2263
  tags?: string[] | undefined;
1970
2264
  kind?: string | undefined;
1971
- status?: SuperMemoryStatus | undefined;
2265
+ status?: SageStatus | undefined;
1972
2266
  importance?: number | undefined;
1973
2267
  confidence?: number | undefined;
1974
2268
  freshness?: number | undefined;
1975
- anchors?: SuperMemoryAnchor[] | undefined;
2269
+ anchors?: SageAnchor[] | undefined;
1976
2270
  audience?: {
1977
2271
  roles?: string[];
1978
2272
  taskTypes?: string[];
@@ -1982,27 +2276,27 @@ export type WSClientMessageCore = WSUserMessage | WSToolConfirmResult | {
1982
2276
  contradicts?: string[] | undefined;
1983
2277
  };
1984
2278
  } | {
1985
- type: 'memory.super.delete';
2279
+ type: 'memory.sage.delete';
1986
2280
  payload: {
1987
2281
  id: string;
1988
2282
  reason?: string | undefined;
1989
2283
  neverInject?: boolean | undefined;
1990
2284
  };
1991
2285
  } | {
1992
- type: 'memory.super.recover';
2286
+ type: 'memory.sage.recover';
1993
2287
  payload: {
1994
2288
  id: string;
1995
2289
  reason?: string | undefined;
1996
2290
  };
1997
2291
  } | {
1998
- type: 'memory.super.candidateResolve';
2292
+ type: 'memory.sage.candidateResolve';
1999
2293
  payload: {
2000
2294
  candidateId: string;
2001
2295
  action: 'accept' | 'reject';
2002
2296
  reason?: string | undefined;
2003
2297
  };
2004
2298
  } | {
2005
- type: 'memory.super.backfillRecoverable';
2299
+ type: 'memory.sage.backfillRecoverable';
2006
2300
  payload: {
2007
2301
  apply: boolean;
2008
2302
  kinds?: string[] | undefined;
@@ -2011,19 +2305,19 @@ export type WSClientMessageCore = WSUserMessage | WSToolConfirmResult | {
2011
2305
  updatedBefore?: string | undefined;
2012
2306
  };
2013
2307
  } | {
2014
- type: 'memory.super.forFile';
2015
- payload: WSMemorySuperForFileRequest;
2308
+ type: 'memory.sage.forFile';
2309
+ payload: WSMemorySageForFileRequest;
2016
2310
  } | {
2017
- type: 'memory.super.remember';
2311
+ type: 'memory.sage.remember';
2018
2312
  payload: {
2019
2313
  text: string;
2020
2314
  kind?: string | undefined;
2021
- scope?: SuperMemoryScope | undefined;
2315
+ scope?: SageScope | undefined;
2022
2316
  tags?: string[] | undefined;
2023
2317
  importance?: number | undefined;
2024
2318
  confidence?: number | undefined;
2025
2319
  freshness?: number | undefined;
2026
- anchors?: SuperMemoryAnchor[] | undefined;
2320
+ anchors?: SageAnchor[] | undefined;
2027
2321
  audience?: {
2028
2322
  roles?: string[];
2029
2323
  taskTypes?: string[];
@@ -2100,6 +2394,13 @@ export type WSClientMessageCore = WSUserMessage | WSToolConfirmResult | {
2100
2394
  query?: ChronicleQuery | undefined;
2101
2395
  limit?: number | undefined;
2102
2396
  };
2397
+ } | {
2398
+ type: 'chronicle.facets';
2399
+ payload: {
2400
+ fields: ChronicleFacet[];
2401
+ query?: ChronicleQuery | undefined;
2402
+ limit?: number | undefined;
2403
+ };
2103
2404
  } | {
2104
2405
  type: 'chronicle.graph';
2105
2406
  payload: {
@@ -2107,6 +2408,19 @@ export type WSClientMessageCore = WSUserMessage | WSToolConfirmResult | {
2107
2408
  hops?: number;
2108
2409
  maxNodes?: number;
2109
2410
  };
2411
+ } | {
2412
+ type: 'chronicle.metrics';
2413
+ payload: {
2414
+ view?: ChronicleMetricsView | undefined;
2415
+ from?: string | undefined;
2416
+ to?: string | undefined;
2417
+ path?: string | undefined;
2418
+ taskId?: string | undefined;
2419
+ boardId?: string | undefined;
2420
+ sessionId?: string | undefined;
2421
+ status?: string | undefined;
2422
+ limit?: number | undefined;
2423
+ };
2110
2424
  } | {
2111
2425
  type: 'session.save';
2112
2426
  payload?: SessionScopedPayload;
@@ -2253,6 +2567,18 @@ export type WSClientMessageCore = WSUserMessage | WSToolConfirmResult | {
2253
2567
  target: 'terminal' | 'file-manager';
2254
2568
  };
2255
2569
  } | WSCollabJoin | WSCollabLeave | WSCollabAnnotate | WSCollabResolve | WSCollabRequestPause | WSCollabResume | WSCollabGrantControl | WSCollabInjectTool | {
2570
+ type: 'mailbox.send';
2571
+ payload: {
2572
+ requestId: string;
2573
+ to: string;
2574
+ type: 'note' | 'ask' | 'assign' | 'steer' | 'btw' | 'broadcast' | 'status' | 'result' | 'review';
2575
+ audience: 'all' | 'leaders';
2576
+ subject: string;
2577
+ body: string;
2578
+ priority: 'low' | 'normal' | 'high';
2579
+ replyTo?: string | undefined;
2580
+ };
2581
+ } | {
2256
2582
  type: 'mailbox.messages';
2257
2583
  payload: {
2258
2584
  limit?: number | undefined;
@@ -2370,6 +2696,22 @@ export type WSClientMessageCore = WSUserMessage | WSToolConfirmResult | {
2370
2696
  payload: {
2371
2697
  overrides: Record<string, string>;
2372
2698
  };
2699
+ } | {
2700
+ type: 'design.tune';
2701
+ payload: {
2702
+ tune: {
2703
+ radius?: string | undefined;
2704
+ density?: string | undefined;
2705
+ font?: string | undefined;
2706
+ motion?: string | undefined;
2707
+ };
2708
+ };
2709
+ } | {
2710
+ type: 'design.swap';
2711
+ payload: {
2712
+ kit: string;
2713
+ stack?: string | undefined;
2714
+ };
2373
2715
  } | {
2374
2716
  type: 'design.materialize';
2375
2717
  payload?: {
@@ -2378,6 +2720,11 @@ export type WSClientMessageCore = WSUserMessage | WSToolConfirmResult | {
2378
2720
  } | undefined;
2379
2721
  } | {
2380
2722
  type: 'design.verify';
2723
+ } | {
2724
+ type: 'config.doctor';
2725
+ payload?: {
2726
+ apply?: boolean;
2727
+ } | undefined;
2381
2728
  } | {
2382
2729
  type: 'mcp.list';
2383
2730
  } | {
@@ -2391,6 +2738,9 @@ export type WSClientMessageCore = WSUserMessage | WSToolConfirmResult | {
2391
2738
  args?: string[];
2392
2739
  env?: Record<string, string>;
2393
2740
  allowedTools?: string[];
2741
+ url?: string;
2742
+ headers?: Record<string, string>;
2743
+ lazy?: boolean;
2394
2744
  };
2395
2745
  } | {
2396
2746
  type: 'mcp.remove';
@@ -2408,6 +2758,9 @@ export type WSClientMessageCore = WSUserMessage | WSToolConfirmResult | {
2408
2758
  args?: string[];
2409
2759
  env?: Record<string, string>;
2410
2760
  allowedTools?: string[];
2761
+ url?: string;
2762
+ headers?: Record<string, string>;
2763
+ lazy?: boolean;
2411
2764
  };
2412
2765
  } | {
2413
2766
  type: 'mcp.wake';
@@ -2513,7 +2866,7 @@ export type WSClientMessageCore = WSUserMessage | WSToolConfirmResult | {
2513
2866
  type: 'webui.shutdown';
2514
2867
  };
2515
2868
  export type WSClientMessage = WSClientMessageCore;
2516
- export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingDelta | WSToolUseStart | WSToolProgress | WSToolExecuted | WSCodeMapToolStarted | WSCodeMapToolExecuted | WSIterationStarted | WSIterationCompleted | WSIterationLimitReached | WSProviderResponse | WSProviderRetry | WSProviderError | WSProviderFallback | WSProviderStatusChanged | WSProviderActiveBlocked | WSProviderStreamError | WSRunResult | WSSessionStats | WSError | WSToolConfirmNeeded | WSTrustPersisted | WSToolLoopDetected | WSDelegateStarted | WSDelegateCompleted | WSContextDebug | WSContextCompacted | WSCompactionFailed | WSContextRepaired | WSContextPct | WSContextMaxContext | WSTokenThreshold | WSTokenCostEstimateUnavailable | WSContextModesList | WSContextModeChanged | WSToolsList | WSMemoryList | WSMemorySuperList | WSMemorySuperListPage | WSMemorySuperGet | WSMemorySuperGraph | WSMemorySuperUpdate | WSMemorySuperRemember | WSMemorySuperDelete | WSMemorySuperRecover | WSMemorySuperCandidateResolve | WSMemorySuperBackfillRecoverable | WSMemorySuperForFile | WSSkillsList | WSSkillContent | WSDesignList | WSDesignUse | WSDesignState | WSDesignSet | WSDesignMaterialize | WSDesignVerify | WSSkillsInstalled | WSSkillsUninstalled | WSSkillsUpdated | WSSkillsCreated | WSSkillsEdited | WSSkillsExported | WSDiagGet | WSStatsGet | {
2869
+ export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingDelta | WSToolUseStart | WSToolProgress | WSToolExecuted | WSCodeMapToolStarted | WSCodeMapToolExecuted | WSIterationStarted | WSIterationCompleted | WSIterationLimitReached | WSProviderResponse | WSProviderRetry | WSProviderError | WSProviderFallback | WSProviderStatusChanged | WSProviderActiveBlocked | WSProviderStreamError | WSRunResult | WSSessionStats | WSError | WSToolConfirmNeeded | WSTrustPersisted | WSToolLoopDetected | WSDelegateStarted | WSDelegateCompleted | WSContextDebug | WSContextCompacted | WSCompactionFailed | WSContextRepaired | WSContextPct | WSContextMaxContext | WSTokenThreshold | WSTokenCostEstimateUnavailable | WSContextModesList | WSContextModeChanged | WSToolsList | WSMemoryList | WSMemorySageList | WSMemorySageListPage | WSMemorySageGet | WSMemorySageGraph | WSMemorySageUpdate | WSMemorySageRemember | WSMemorySageDelete | WSMemorySageRecover | WSMemorySageCandidateResolve | WSMemorySageBackfillRecoverable | WSMemorySageForFile | WSSkillsList | WSSkillContent | WSDesignList | WSDesignUse | WSDesignState | WSDesignSet | WSDesignTune | WSDesignSwap | WSDesignMaterialize | WSDesignVerify | WSSkillsInstalled | WSSkillsUninstalled | WSSkillsUpdated | WSSkillsCreated | WSSkillsEdited | WSSkillsExported | WSDiagGet | WSStatsGet | {
2517
2870
  type: 'chronicle.query_result';
2518
2871
  payload: ChronicleQueryResult;
2519
2872
  } | {
@@ -2526,9 +2879,21 @@ export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSTh
2526
2879
  invalidLines: number;
2527
2880
  };
2528
2881
  };
2882
+ } | {
2883
+ type: 'chronicle.facets_result';
2884
+ payload: {
2885
+ values: Partial<Record<ChronicleFacet, ChronicleFacetValue[]>>;
2886
+ diagnostics: {
2887
+ sourceFiles: number;
2888
+ invalidLines: number;
2889
+ };
2890
+ };
2529
2891
  } | {
2530
2892
  type: 'chronicle.graph_result';
2531
2893
  payload: ChronicleGraphResult;
2894
+ } | {
2895
+ type: 'chronicle.metrics_result';
2896
+ payload: ChronicleMetricsResultPayload;
2532
2897
  } | {
2533
2898
  type: 'chronicle.error';
2534
2899
  payload: {
@@ -2716,6 +3081,16 @@ export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSTh
2716
3081
  agents: Array<Record<string, unknown>>;
2717
3082
  error?: string | undefined;
2718
3083
  };
3084
+ } | {
3085
+ type: 'mailbox.sent';
3086
+ payload: {
3087
+ requestId: string;
3088
+ success: boolean;
3089
+ messageId?: string | undefined;
3090
+ to?: string | undefined;
3091
+ audience?: 'all' | 'leaders' | undefined;
3092
+ error?: string | undefined;
3093
+ };
2719
3094
  } | {
2720
3095
  type: 'pong';
2721
3096
  payload?: Record<string, unknown> | undefined;
@@ -2729,6 +3104,7 @@ export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSTh
2729
3104
  startedAt: number;
2730
3105
  status: 'running' | 'exited' | 'killed';
2731
3106
  protected?: boolean | undefined;
3107
+ background?: boolean | undefined;
2732
3108
  }>;
2733
3109
  };
2734
3110
  } | WSSideEffects | {
@@ -2808,6 +3184,8 @@ export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSTh
2808
3184
  mode?: 'headless' | 'interactive' | undefined;
2809
3185
  poolLabels?: string[] | undefined;
2810
3186
  councilLabels?: string[] | undefined;
3187
+ /** EFFECTIVE council judge — undefined when no council is wired. */
3188
+ judgeLabel?: string | undefined;
2811
3189
  ledgerPath?: string | undefined;
2812
3190
  };
2813
3191
  } | {
@@ -2861,6 +3239,13 @@ export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSTh
2861
3239
  line?: number | undefined;
2862
3240
  endLine?: number | undefined;
2863
3241
  };
3242
+ } | {
3243
+ type: 'codemap.index_updated';
3244
+ payload: {
3245
+ at: number;
3246
+ ready: boolean;
3247
+ reason: 'index_complete';
3248
+ };
2864
3249
  } | {
2865
3250
  type: 'session.damaged';
2866
3251
  payload: {
@@ -3044,6 +3429,20 @@ export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSTh
3044
3429
  name: string;
3045
3430
  ok: boolean;
3046
3431
  };
3432
+ } | {
3433
+ type: 'config.doctor.result';
3434
+ payload: {
3435
+ success: boolean;
3436
+ applied: boolean;
3437
+ changed: boolean;
3438
+ changes: Array<{
3439
+ path: string;
3440
+ action: 'added' | 'replaced';
3441
+ }>;
3442
+ configPath: string;
3443
+ backupPath?: string;
3444
+ error?: string;
3445
+ };
3047
3446
  } | {
3048
3447
  type: 'mcp.list';
3049
3448
  payload: {
@@ -3056,6 +3455,11 @@ export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSTh
3056
3455
  tools?: string[];
3057
3456
  error?: string;
3058
3457
  pid?: number;
3458
+ lazy?: boolean;
3459
+ command?: string;
3460
+ args?: string[];
3461
+ env?: Record<string, string>;
3462
+ url?: string;
3059
3463
  health?: {
3060
3464
  healthState: 'disabled' | 'dormant' | 'connecting' | 'healthy' | 'degraded' | 'failed';
3061
3465
  consecutiveFailures: number;
@@ -3089,6 +3493,11 @@ export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSTh
3089
3493
  enabled: boolean;
3090
3494
  description?: string;
3091
3495
  tools?: string[];
3496
+ lazy?: boolean;
3497
+ command?: string;
3498
+ args?: string[];
3499
+ env?: Record<string, string>;
3500
+ url?: string;
3092
3501
  };
3093
3502
  };
3094
3503
  } | {
@@ -3106,6 +3515,11 @@ export type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSTh
3106
3515
  enabled: boolean;
3107
3516
  description?: string;
3108
3517
  tools?: string[];
3518
+ lazy?: boolean;
3519
+ command?: string;
3520
+ args?: string[];
3521
+ env?: Record<string, string>;
3522
+ url?: string;
3109
3523
  };
3110
3524
  };
3111
3525
  } | {