@wrongstack/webui 0.309.1 → 0.310.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/assets/{AgentRosterView-CBiLW8dV.js → AgentRosterView-D65_58jj.js} +1 -1
  2. package/dist/assets/{AnalyticsDashboard-Grpp3QKX.js → AnalyticsDashboard-DOc43lwL.js} +1 -1
  3. package/dist/assets/{AudienceMemoryPanel-DU3hUuUl.js → AudienceMemoryPanel-BLpp2tHi.js} +1 -1
  4. package/dist/assets/{ChangesView-DOrw4udd.js → ChangesView-DgBKkM9W.js} +1 -1
  5. package/dist/assets/{ChronicleDashboard-DlCuQRB8.js → ChronicleDashboard-DTQBK3sz.js} +1 -1
  6. package/dist/assets/{CodeEditor-CU6zP0r8.js → CodeEditor-C_i1OpFY.js} +1 -1
  7. package/dist/assets/{CodeMap-BkJqVDg2.js → CodeMap-DAiZc6KR.js} +1 -1
  8. package/dist/assets/{ConfirmModal-BJOVE-JI.js → ConfirmModal-e_pAJNXI.js} +1 -1
  9. package/dist/assets/{CronJobsPanel-B3UJP0mn.js → CronJobsPanel-Bd9yYc54.js} +1 -1
  10. package/dist/assets/{DeadCodeScanPanel-_iUu5-90.js → DeadCodeScanPanel-DX6kTHMe.js} +1 -1
  11. package/dist/assets/{DebugDashboard-NTiN0je2.js → DebugDashboard-DzZ2VgUh.js} +1 -1
  12. package/dist/assets/{DesignGalleryView-BG2Nr8wy.js → DesignGalleryView-C6V81Ve6.js} +1 -1
  13. package/dist/assets/{GoalView-Dakf9ZR8.js → GoalView-D8IvL8gu.js} +1 -1
  14. package/dist/assets/{KanbanView-BR07PhbR.js → KanbanView-CgAYUWMt.js} +1 -1
  15. package/dist/assets/{MailboxDetailView-D31IhaK_.js → MailboxDetailView-DVhX5QJL.js} +1 -1
  16. package/dist/assets/{MemoryDrawer-6n0Etoz4.js → MemoryDrawer-8sFKIDFT.js} +1 -1
  17. package/dist/assets/{MemoryManager-7DSVhxZf.js → MemoryManager-UVJcZ8F1.js} +1 -1
  18. package/dist/assets/{ModelPicker-C72kprRH.js → ModelPicker-BX3TyLGh.js} +1 -1
  19. package/dist/assets/{OfficeMapPanel-Dc8-4CiU.js → OfficeMapPanel-CGquZdpA.js} +1 -1
  20. package/dist/assets/{ProcessMonitor-BGLc3yNM.js → ProcessMonitor-DWRyMBcK.js} +1 -1
  21. package/dist/assets/{PromptJournalView-CxDiqUkN.js → PromptJournalView-D7cxTV4b.js} +1 -1
  22. package/dist/assets/{QueuePanel-B2f1HbN0.js → QueuePanel-BHC0oZuW.js} +1 -1
  23. package/dist/assets/{RefreshDebugView-D8F95QxF.js → RefreshDebugView-CYtfPKpz.js} +1 -1
  24. package/dist/assets/{RequirementIntakeView-BRolSCpk.js → RequirementIntakeView-CqK3EO7I.js} +1 -1
  25. package/dist/assets/{SageTabs-DblSyqzB.js → SageTabs-twWj7FY5.js} +2 -2
  26. package/dist/assets/{SddFlowGraph-YOPsSaFc.js → SddFlowGraph-DRoJjwE7.js} +1 -1
  27. package/dist/assets/{SddHub-IusMUP2D.js → SddHub-GEtMx-VT.js} +1 -1
  28. package/dist/assets/{SessionInspectView-B633Bi0X.js → SessionInspectView-Bj3lSgGC.js} +1 -1
  29. package/dist/assets/{SessionList-BCE6NSCu.js → SessionList-Q2e5-_66.js} +1 -1
  30. package/dist/assets/{SessionsDashboard-N__p7_i5.js → SessionsDashboard-zMKgGHVE.js} +1 -1
  31. package/dist/assets/{SetupScreen-B06asuJC.js → SetupScreen-OTuQXHs_.js} +1 -1
  32. package/dist/assets/{SkillDetailView-BxpQcgfh.js → SkillDetailView-DOuDqdnT.js} +3 -3
  33. package/dist/assets/{SpecsView-Ddbow1sn.js → SpecsView-DCXc8NKW.js} +1 -1
  34. package/dist/assets/{TechStackView-HTZUTbuu.js → TechStackView-DBYyTF6H.js} +1 -1
  35. package/dist/assets/{TerminalPanel-Bi3CmRvI.js → TerminalPanel-D8ZfgplP.js} +1 -1
  36. package/dist/assets/{Toaster-COVFFUKo.js → Toaster-tBe1ZrKx.js} +1 -1
  37. package/dist/assets/{activity-Dt0RpmkN.js → activity-BA8C9ueU.js} +1 -1
  38. package/dist/assets/{activity-7Sj9fdO-.js → activity-BYnOci5N.js} +1 -1
  39. package/dist/assets/{activity-B7hiQ_IX.js → activity-COQ9xSFu.js} +1 -1
  40. package/dist/assets/{activity-B-LcgiXm.js → activity-CuJqhGz7.js} +1 -1
  41. package/dist/assets/{activity-JmCi-KcX.js → activity-D3ZccGOh.js} +1 -1
  42. package/dist/assets/{activity-Cq0Lqtgz.js → activity-YMES6OPI.js} +1 -1
  43. package/dist/assets/{activity-DVuAYnoi.js → activity-zlMMaNE1.js} +1 -1
  44. package/dist/assets/{button-DAT5OnLL.js → button-Dhmop_yM.js} +1 -1
  45. package/dist/assets/{chat-store-CtIMb3sU.js → chat-store-BiEXyguk.js} +1 -1
  46. package/dist/assets/{codemap-activity-store-CA_14DHd.js → codemap-activity-store-BWt_a7Gs.js} +1 -1
  47. package/dist/assets/codemap-index-store-CDhApwWQ.js +1 -0
  48. package/dist/assets/{dialog-BMrjwjA6.js → dialog-DPl7DolS.js} +1 -1
  49. package/dist/assets/{empty-state-Bf05Z1d2.js → empty-state-IT10GzRA.js} +1 -1
  50. package/dist/assets/{i18n-CYYBUSJB.js → i18n-dLvHUYek.js} +2 -2
  51. package/dist/assets/index-B8J_xxU5.css +1 -0
  52. package/dist/assets/{index-cUeJ0FkT.js → index-Cyhuj8ku.js} +55 -55
  53. package/dist/assets/{input-Ccsxvwz6.js → input-C3rIQ26u.js} +1 -1
  54. package/dist/assets/{mailbox-store-BWD7JeF9.js → mailbox-store-DhAVkVJQ.js} +1 -1
  55. package/dist/assets/{roster-ws-lMIf13ag.js → roster-ws-Vj_HH49O.js} +1 -1
  56. package/dist/assets/session-store-CKpAwNIm.js +1 -0
  57. package/dist/assets/{shared-Y6T3EEnd.js → shared-BUXBOqyO.js} +1 -1
  58. package/dist/assets/{stores-BUtRik4k.js → stores-D9Ng0JyF.js} +1 -1
  59. package/dist/assets/ui-store-3HoYrTu5.js +1 -0
  60. package/dist/assets/useWebSocket-B2jKc_G4.js +29 -0
  61. package/dist/assets/{utils-B5X3DKef.js → utils-BecmXwgG.js} +1 -1
  62. package/dist/assets/{vector-memory-panel-CnBqV6GK.js → vector-memory-panel-CBA4CK6N.js} +1 -1
  63. package/dist/assets/{vendor-DLS502Zs.js → vendor-DZ9_OO6N.js} +20 -20
  64. package/dist/assets/{view-navigation-Hd631M1W.js → view-navigation-C1UDTk5R.js} +1 -1
  65. package/dist/assets/ws-client-DXT4gi-N.js +1 -0
  66. package/dist/components/ChatView/AgentTabs.d.ts +16 -0
  67. package/dist/components/ChatView/SubagentTranscriptView.d.ts +16 -0
  68. package/dist/components/ChatView/useChatViewState.d.ts +7 -0
  69. package/dist/components/SettingsPanel/LogsSettingsTab.d.ts +1 -1
  70. package/dist/components/SettingsPanel/MCPSection.d.ts +2 -12
  71. package/dist/components/SettingsPanel/ModelSchemaEditor.d.ts +7 -0
  72. package/dist/components/SettingsPanel/contracts.d.ts +29 -0
  73. package/dist/components/SettingsPanel/official-servers.d.ts +1 -1
  74. package/dist/hooks/useLiveContextDebug.d.ts +97 -0
  75. package/dist/index.html +22 -22
  76. package/dist/index.js +10919 -10231
  77. package/dist/protocol-compatibility.d.ts +1 -1
  78. package/dist/stores/session-store.d.ts +9 -1
  79. package/dist/stores/ui-store.d.ts +12 -0
  80. package/dist/types/system.d.ts +12 -0
  81. package/package.json +12 -11
  82. package/dist/assets/codemap-index-store-BlPxA13l.js +0 -1
  83. package/dist/assets/index-D2tx76V0.css +0 -1
  84. package/dist/assets/session-store-D4PNeAGe.js +0 -1
  85. package/dist/assets/ui-store-DxMnhARg.js +0 -1
  86. package/dist/assets/useWebSocket-Ew1Bbjci.js +0 -29
  87. package/dist/assets/ws-client-DYrfK01f.js +0 -1
@@ -1,4 +1,4 @@
1
- import type { CanonicalClientMessageType, CanonicalServerMessageType } from '@wrongstack/webui-server/protocol';
1
+ import type { CanonicalClientMessageType, CanonicalServerMessageType } from '@wrongstack/webui-protocol';
2
2
  import type { WSClientMessageCore, WSServerMessage } from './types.js';
3
3
  type AssertNever<T extends never> = T;
4
4
  /**
@@ -29,6 +29,14 @@ interface SessionState {
29
29
  readTokens: number;
30
30
  writeTokens: number;
31
31
  hitRatio: number;
32
+ /** Session cache telemetry split by routed provider (fallback/model switches included). */
33
+ providers?: Array<{
34
+ provider: string;
35
+ input: number;
36
+ cacheRead: number;
37
+ cacheWrite: number;
38
+ hitRatio: number;
39
+ }>;
32
40
  /**
33
41
  * Cached prefix of the most recent prompt, capped at `lastInputTokens`
34
42
  * so the coverage figure never overshoots the live request size.
@@ -108,7 +116,7 @@ interface SessionState {
108
116
  /** Number of tools dropped from provider requests due to maxTools limit (0 = no limit or within limit). */
109
117
  droppedTools: number;
110
118
  setSession: (session: SessionInfo | null) => void;
111
- updateUsage: (usage: Usage) => void;
119
+ updateUsage: (usage: Usage, providerId?: string) => void;
112
120
  addCost: (cost: number) => void;
113
121
  startSession: (session: SessionInfo) => void;
114
122
  endSession: () => void;
@@ -1,5 +1,6 @@
1
1
  import type { QueuedItem, QueueMode } from './chat-store';
2
2
  import type { MailboxMessage } from './mailbox-store';
3
+ import type { ImageAttachment } from '../components/ChatInput/image-attachments.js';
3
4
  export type Activity = 'chat' | 'agents' | 'files' | 'changes' | 'mailbox' | 'skills' | 'design' | 'worktrees' | 'officemap';
4
5
  /** Map any persisted (possibly legacy) activity value onto the current set. */
5
6
  export declare function coerceActivity(value: unknown): Activity;
@@ -85,6 +86,11 @@ interface UIState {
85
86
  inspectorTab: InspectorTab;
86
87
  /** Agent ID to focus when opening the inspector on the agents tab. Cleared on read. */
87
88
  inspectorFocusedAgentId: string | null;
89
+ /** Subagent whose full transcript currently replaces the main chat pane
90
+ * (agent tabs above the transcript). Null = leader chat. Transient — never
91
+ * persisted; ChatView auto-clears it when the focused agent leaves the
92
+ * fleet roster (removed, cleared, session stop). */
93
+ subagentChatFocusId: string | null;
88
94
  /** Process Monitor overlay — triggered by /kill slash command. */
89
95
  processMonitorOpen: boolean;
90
96
  /** Queue Panel overlay — triggered by /queue slash command. */
@@ -106,7 +112,12 @@ interface UIState {
106
112
  * is intentionally NOT persisted to localStorage, so it does not reappear on a
107
113
  * fresh page load or when starting a new session. */
108
114
  draftInput: string;
115
+ /** Pending image attachments mirroring the input draft (see draftInput):
116
+ * survives view navigation into a subagent transcript, never persisted,
117
+ * cleared on submit via clearPendingImages → setDraftImages([]). */
118
+ draftImages: ImageAttachment[];
109
119
  setDraftInput: (text: string) => void;
120
+ setDraftImages: (images: ImageAttachment[]) => void;
110
121
  setProcessMonitorOpen: (open: boolean) => void;
111
122
  setQueuePanelOpen: (open: boolean) => void;
112
123
  setCronJobsOpen: (open: boolean) => void;
@@ -242,6 +253,7 @@ interface UIState {
242
253
  setInspectorOpen: (open: boolean) => void;
243
254
  setInspectorTab: (tab: InspectorTab) => void;
244
255
  setInspectorFocusedAgentId: (id: string | null) => void;
256
+ setSubagentChatFocus: (id: string | null) => void;
245
257
  toggleInspector: () => void;
246
258
  }
247
259
  export declare const useUIStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<UIState>, "persist" | "setState"> & {
@@ -45,7 +45,19 @@ export interface WSStatsGet {
45
45
  readTokens: number;
46
46
  writeTokens: number;
47
47
  hitRatio: number;
48
+ providers?: Array<{
49
+ provider: string;
50
+ input: number;
51
+ cacheRead: number;
52
+ cacheWrite: number;
53
+ hitRatio: number;
54
+ }>;
48
55
  } | null;
56
+ currentRequest?: {
57
+ input: number;
58
+ cacheRead: number;
59
+ cacheWrite: number;
60
+ } | undefined;
49
61
  cost: number;
50
62
  messages: number;
51
63
  readFiles: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/webui",
3
- "version": "0.309.1",
3
+ "version": "0.310.0",
4
4
  "license": "MIT",
5
5
  "description": "Browser-based WebUI for WrongStack — React + Vite frontend. The WebSocket backend lives in the separate @wrongstack/webui-server package (extracted in PR #018b to remove the CLI -> @wrongstack/webui/server cross-package edge).",
6
6
  "keywords": [
@@ -62,26 +62,27 @@
62
62
  "@xyflow/react": "^12.11.3",
63
63
  "class-variance-authority": "^0.7.1",
64
64
  "clsx": "^2.1.1",
65
- "i18next": "^26.3.6",
65
+ "i18next": "^26.4.0",
66
66
  "i18next-resources-to-backend": "^1.2.3",
67
67
  "lucide-react": "^1.33.0",
68
68
  "monaco-editor": "^0.56.0",
69
69
  "qrcode": "^1.5.4",
70
70
  "react": "^19.2.8",
71
71
  "react-dom": "^19.2.8",
72
- "react-i18next": "^17.0.11",
72
+ "react-i18next": "^17.0.12",
73
73
  "react-markdown": "^10.1.0",
74
74
  "rehype-highlight": "^7.0.2",
75
75
  "remark-gfm": "^4.0.1",
76
76
  "tailwind-merge": "^3.6.0",
77
- "virtua": "^0.50.2",
77
+ "virtua": "^0.50.4",
78
78
  "zustand": "^5.0.15",
79
- "@wrongstack/providers": "0.309.1",
80
- "@wrongstack/webui-server": "0.309.1",
81
- "@wrongstack/plugins": "0.309.1",
82
- "@wrongstack/core": "0.309.1",
83
- "@wrongstack/kanban": "0.309.1",
84
- "@wrongstack/tools": "0.309.1"
79
+ "@wrongstack/core": "0.310.0",
80
+ "@wrongstack/kanban": "0.310.0",
81
+ "@wrongstack/tools": "0.310.0",
82
+ "@wrongstack/providers": "0.310.0",
83
+ "@wrongstack/plugins": "0.310.0",
84
+ "@wrongstack/webui-protocol": "0.310.0",
85
+ "@wrongstack/webui-server": "0.310.0"
85
86
  },
86
87
  "optionalDependencies": {
87
88
  "node-pty": "1.2.0-beta.14"
@@ -103,7 +104,7 @@
103
104
  "typescript": "^7.0.2",
104
105
  "vite": "^8.2.2",
105
106
  "vitest": "^4.1.11",
106
- "@wrongstack/sdd": "0.309.1"
107
+ "@wrongstack/sdd": "0.310.0"
107
108
  },
108
109
  "scripts": {
109
110
  "dev": "vite",
@@ -1 +0,0 @@
1
- import{za as e}from"./vendor-DLS502Zs.js";var t=e(e=>({generation:0,lastUpdatedAt:null,notifyIndexUpdated(t=Date.now()){e(e=>({generation:e.generation+1,lastUpdatedAt:t}))}}));export{t};