@wrongstack/webui 0.309.1 → 0.310.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 (102) hide show
  1. package/dist/assets/{AgentRosterView-CBiLW8dV.js → AgentRosterView-DAci8zSJ.js} +1 -1
  2. package/dist/assets/{AnalyticsDashboard-Grpp3QKX.js → AnalyticsDashboard-BltY_7sZ.js} +1 -1
  3. package/dist/assets/{AudienceMemoryPanel-DU3hUuUl.js → AudienceMemoryPanel-uMGOcvUl.js} +1 -1
  4. package/dist/assets/{ChangesView-DOrw4udd.js → ChangesView-QgbkAV21.js} +1 -1
  5. package/dist/assets/{ChronicleDashboard-DlCuQRB8.js → ChronicleDashboard-CjC3Tpdp.js} +1 -1
  6. package/dist/assets/{CodeEditor-CU6zP0r8.js → CodeEditor-BjIBUPk8.js} +1 -1
  7. package/dist/assets/{CodeMap-BkJqVDg2.js → CodeMap-BpOQHHcp.js} +1 -1
  8. package/dist/assets/{ConfirmModal-BJOVE-JI.js → ConfirmModal-DNp4NzCY.js} +1 -1
  9. package/dist/assets/{CronJobsPanel-B3UJP0mn.js → CronJobsPanel-DyxLGNzd.js} +1 -1
  10. package/dist/assets/{DeadCodeScanPanel-_iUu5-90.js → DeadCodeScanPanel-Qf3HU4hj.js} +1 -1
  11. package/dist/assets/{DebugDashboard-NTiN0je2.js → DebugDashboard-D0nD5Mi-.js} +1 -1
  12. package/dist/assets/{DesignGalleryView-BG2Nr8wy.js → DesignGalleryView-CzSTqD9U.js} +1 -1
  13. package/dist/assets/{GoalView-Dakf9ZR8.js → GoalView-CZHQeAKT.js} +1 -1
  14. package/dist/assets/{KanbanView-BR07PhbR.js → KanbanView-DRox56Vn.js} +1 -1
  15. package/dist/assets/{MailboxDetailView-D31IhaK_.js → MailboxDetailView-D6Ywy9n_.js} +1 -1
  16. package/dist/assets/{MemoryDrawer-6n0Etoz4.js → MemoryDrawer--0NW-5zb.js} +1 -1
  17. package/dist/assets/{MemoryManager-7DSVhxZf.js → MemoryManager-Dpsvz_n_.js} +1 -1
  18. package/dist/assets/{ModelPicker-C72kprRH.js → ModelPicker-CBQqO9xG.js} +1 -1
  19. package/dist/assets/{OfficeMapPanel-Dc8-4CiU.js → OfficeMapPanel-D1oaHb4z.js} +1 -1
  20. package/dist/assets/{ProcessMonitor-BGLc3yNM.js → ProcessMonitor-Bhu8vdfD.js} +1 -1
  21. package/dist/assets/{PromptJournalView-CxDiqUkN.js → PromptJournalView-C1-hyXix.js} +1 -1
  22. package/dist/assets/{QueuePanel-B2f1HbN0.js → QueuePanel-CuDxuazR.js} +1 -1
  23. package/dist/assets/{RefreshDebugView-D8F95QxF.js → RefreshDebugView-BxVmfUp2.js} +1 -1
  24. package/dist/assets/{RequirementIntakeView-BRolSCpk.js → RequirementIntakeView-BiEvDV41.js} +1 -1
  25. package/dist/assets/{SageTabs-DblSyqzB.js → SageTabs-BE4m8VUY.js} +2 -2
  26. package/dist/assets/{SddFlowGraph-YOPsSaFc.js → SddFlowGraph-_8Xuc_cU.js} +1 -1
  27. package/dist/assets/{SddHub-IusMUP2D.js → SddHub-B2kE8AiT.js} +1 -1
  28. package/dist/assets/{SessionInspectView-B633Bi0X.js → SessionInspectView-DOLLUo3T.js} +1 -1
  29. package/dist/assets/{SessionList-BCE6NSCu.js → SessionList-BhXjS40z.js} +1 -1
  30. package/dist/assets/{SessionsDashboard-N__p7_i5.js → SessionsDashboard-tfMU0z-y.js} +1 -1
  31. package/dist/assets/{SetupScreen-B06asuJC.js → SetupScreen-CXE-RhNU.js} +1 -1
  32. package/dist/assets/{SkillDetailView-BxpQcgfh.js → SkillDetailView-DCkPQZ5H.js} +3 -3
  33. package/dist/assets/{SpecsView-Ddbow1sn.js → SpecsView-DKAxgGNr.js} +1 -1
  34. package/dist/assets/{TechStackView-HTZUTbuu.js → TechStackView-99ogOMkD.js} +1 -1
  35. package/dist/assets/{TerminalPanel-Bi3CmRvI.js → TerminalPanel-CUwCc0Hv.js} +1 -1
  36. package/dist/assets/{Toaster-COVFFUKo.js → Toaster-AH2vaxrX.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-n_1tBMdC.js +2 -0
  51. package/dist/assets/index-B8J_xxU5.css +1 -0
  52. package/dist/assets/{index-cUeJ0FkT.js → index-gKjRx1pQ.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/{settings-DfID_cS9.js → settings-BhmwkYVs.js} +1 -1
  58. package/dist/assets/settings-BpSRCuSL.js +1 -0
  59. package/dist/assets/settings-BvbMvXxL.js +1 -0
  60. package/dist/assets/settings-Dk78XWnd.js +1 -0
  61. package/dist/assets/settings-Mh81dlWD.js +1 -0
  62. package/dist/assets/settings-_V6PolUx.js +1 -0
  63. package/dist/assets/settings-koX3yNr7.js +1 -0
  64. package/dist/assets/{shared-Y6T3EEnd.js → shared-BUXBOqyO.js} +1 -1
  65. package/dist/assets/{stores-BUtRik4k.js → stores-d8rhzRAc.js} +1 -1
  66. package/dist/assets/ui-store-3HoYrTu5.js +1 -0
  67. package/dist/assets/useWebSocket-Co9oG6EI.js +29 -0
  68. package/dist/assets/{utils-B5X3DKef.js → utils-BecmXwgG.js} +1 -1
  69. package/dist/assets/{vector-memory-panel-CnBqV6GK.js → vector-memory-panel-CBA4CK6N.js} +1 -1
  70. package/dist/assets/{vendor-DLS502Zs.js → vendor-DZ9_OO6N.js} +20 -20
  71. package/dist/assets/{view-navigation-Hd631M1W.js → view-navigation-C1UDTk5R.js} +1 -1
  72. package/dist/assets/ws-client-DXT4gi-N.js +1 -0
  73. package/dist/components/ChatView/AgentTabs.d.ts +16 -0
  74. package/dist/components/ChatView/SubagentTranscriptView.d.ts +16 -0
  75. package/dist/components/ChatView/useChatViewState.d.ts +7 -0
  76. package/dist/components/SettingsPanel/LogsSettingsTab.d.ts +1 -1
  77. package/dist/components/SettingsPanel/MCPSection.d.ts +2 -12
  78. package/dist/components/SettingsPanel/ModelSchemaEditor.d.ts +7 -0
  79. package/dist/components/SettingsPanel/contracts.d.ts +29 -0
  80. package/dist/components/SettingsPanel/official-servers.d.ts +1 -1
  81. package/dist/hooks/useLiveContextDebug.d.ts +97 -0
  82. package/dist/index.html +23 -23
  83. package/dist/index.js +11010 -10233
  84. package/dist/protocol-compatibility.d.ts +1 -1
  85. package/dist/stores/local-prefs.d.ts +13 -0
  86. package/dist/stores/session-store.d.ts +9 -1
  87. package/dist/stores/ui-store.d.ts +12 -0
  88. package/dist/types/system.d.ts +12 -0
  89. package/package.json +12 -11
  90. package/dist/assets/codemap-index-store-BlPxA13l.js +0 -1
  91. package/dist/assets/i18n-CYYBUSJB.js +0 -2
  92. package/dist/assets/index-D2tx76V0.css +0 -1
  93. package/dist/assets/session-store-D4PNeAGe.js +0 -1
  94. package/dist/assets/settings-B36QpLU8.js +0 -1
  95. package/dist/assets/settings-B8Hgh9_X.js +0 -1
  96. package/dist/assets/settings-B8uABeWU.js +0 -1
  97. package/dist/assets/settings-CSwU_zzD.js +0 -1
  98. package/dist/assets/settings-FXJ8SsEh.js +0 -1
  99. package/dist/assets/settings-RQKnX4dA.js +0 -1
  100. package/dist/assets/ui-store-DxMnhARg.js +0 -1
  101. package/dist/assets/useWebSocket-Ew1Bbjci.js +0 -29
  102. 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
  /**
@@ -192,6 +192,19 @@ export interface LocalPrefs {
192
192
  autoReviewMaxConcurrentReviews: number;
193
193
  /** Cascade severity threshold: when a review finds findings at or above this level, spawn follow-up agents. */
194
194
  autoReviewCascadeOn: 'off' | 'critical' | 'high';
195
+ /**
196
+ * Master switch. When true AND the daemon at `wrongProxyUrl` is
197
+ * reachable, every provider's base URL flows through
198
+ * `${wrongProxyUrl}/proxy/<host><path>`. Excluded providers
199
+ * (openai-codex) flow through unchanged.
200
+ */
201
+ wrongProxyEnabled: boolean;
202
+ /**
203
+ * Where the local proxy daemon listens. Default `http://localhost:8000`.
204
+ * User-editable via WebUI `IntegrationsSection` and TUI SettingsPicker.
205
+ * Periodic probe targets `<wrongProxyUrl>/api/health`; 2xx → active.
206
+ */
207
+ wrongProxyUrl: string;
195
208
  set: (patch: Partial<LocalPrefs>) => void;
196
209
  reset: () => void;
197
210
  }
@@ -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.1",
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.1",
80
+ "@wrongstack/providers": "0.310.1",
81
+ "@wrongstack/tools": "0.310.1",
82
+ "@wrongstack/webui-protocol": "0.310.1",
83
+ "@wrongstack/webui-server": "0.310.1",
84
+ "@wrongstack/kanban": "0.310.1",
85
+ "@wrongstack/plugins": "0.310.1"
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.1"
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};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/activity-B7hiQ_IX.js","assets/rolldown-runtime-hePW80VL.js","assets/chat-CzaGXz_W.js","assets/commandPalette-BovBiPec.js","assets/common-BBHmIHQW.js","assets/settings-DfID_cS9.js","assets/setup-DfcCCvUO.js","assets/toasts-DOfXc7Rt.js"])))=>i.map(i=>d[i]);
2
- import{Ha as e,Ra as t,Ua as n,Va as r,za as i}from"./vendor-DLS502Zs.js";import{t as a}from"./activity-B7hiQ_IX.js";import{t as o}from"./chat-CzaGXz_W.js";import{t as s}from"./commandPalette-BovBiPec.js";import{t as c}from"./common-BBHmIHQW.js";import{t as l}from"./settings-DfID_cS9.js";import{t as u}from"./setup-DfcCCvUO.js";import{t as d}from"./toasts-DOfXc7Rt.js";import{s as f}from"./monaco-BCqJp2xW.js";var p=(e,t,n)=>{let r=t.lastIndexOf(`?`),i=e[r===-1||r<t.lastIndexOf(`/`)?t:t.slice(0,r)];return i?typeof i==`function`?i():Promise.resolve(i):new Promise((e,r)=>{(typeof queueMicrotask==`function`?queueMicrotask:setTimeout)(r.bind(null,Error(`Unknown variable dynamic import: `+t+(t.split(`/`).length===n?``:`. Note that variables only represent file names one level deep.`))))})},m=[`en`,`tr`,`de`,`fr`,`it`,`es`,`pt-BR`],h=[{code:`en`,name:`English`},{code:`tr`,name:`Türkçe`},{code:`de`,name:`Deutsch`},{code:`fr`,name:`Français`},{code:`it`,name:`Italiano`},{code:`es`,name:`Español`},{code:`pt-BR`,name:`Português (Brasil)`}],g=new Set(m);function _(){return typeof navigator>`u`||!navigator.language?`en`:y(navigator.language)}function v(e){return!e||typeof e!=`string`?_():y(e)}function y(e){let t=e.trim().toLowerCase();if(!t)return`en`;if(g.has(t))return t;let n=t.split(`-`)[0];return n&&g.has(n)?n:n===`pt`?`pt-BR`:`en`}var b={autonomy:`auto`,autonomyDelayMs:45e3,autoProceedMaxIterations:50,yolo:!0,maxIterations:500,chime:!1,confirmExit:!0,fleetChatVerbosity:`off`,nextPrediction:!1,nextStepsTool:!1,fallbackModels:[],fallbackProfiles:{},favoriteModels:[],favoriteModelsOnly:!1,modelMatrix:{},fallbackAuto:!0,modelAvailabilitySchedule:[],featureMcp:!0,featurePlugins:!0,featureMemory:!0,featureSkills:!0,featureModelsRegistry:!0,indexOnStart:!0,contextAutoCompact:!0,contextStrategy:`hybrid`,contextMode:`balanced`,tokenSavingTier:`auto`,maxConcurrent:10,titleAnimation:!0,logLevel:`info`,auditLevel:`standard`,enhanceEnabled:!0,enhanceDelayMs:6e4,enhanceCountdownMs:3e3,enhanceLanguage:`original`,refinerProvider:``,refinerModel:``,refinerFallbackProfile:``,thinkingWord:`thinking`,statuslineMode:`minimum`,animationStyle:`rainbow`,showThinkingLogs:!0,groupToolCalls:!0,autoCollapseInput:!1,showModelReasoning:!0,showAgentSwarmPanel:`bottom`,allowOutsideProjectRoot:!0,reasoningMode:`auto`,reasoningEffort:`high`,reasoningPreserve:!1,cacheTtl:`default`,breakerEnabled:!1,breakerAutoKillResetMs:6e4,fsAccess:`unrestricted`,debugStream:!1,hqEnabled:!1,hqUrl:``,hqToken:``,hqRawContent:!1,tgConfigured:!1,tgSessionEnd:!1,tgDelegate:!0,tgLongToolMs:3e4,uiLocale:_(),chimeraAutoFix:`off`,readSymbols:!1,showSageMemoryInject:!1,sageMemoryInjectThreshold:.85,preRefineSeconds:3,multiDiffSummaryThreshold:5,chimeraEnabled:!0,chimeraProvider:``,chimeraModel:``,chimeraMaxFiles:15,autoReviewEnabled:!1,autoReviewProvider:``,autoReviewModel:``,autoReviewFallbackProfile:``,autoReviewModelSelection:`round-robin`,autoReviewFallbackModels:[],autoReviewDebounceMs:15e3,autoReviewMaxFilesPerBatch:15,autoReviewMaxConcurrentReviews:2,autoReviewCascadeOn:`off`,pluginsEnabled:{}},x=i()(t(e=>({...b,set:t=>e(t),reset:()=>e(b)}),{name:`wrongstack-local-prefs`,version:15,migrate:(e,t)=>{let n=e??{};return t<12&&n.autoReviewDebounceMs===5e3&&(n.autoReviewDebounceMs=15e3),typeof n.fleetChatVerbosity!=`string`&&(n.fleetChatVerbosity=n.streamFleet===!0?`full`:(n.streamFleet,`off`),delete n.streamFleet),n.fleetChatVerbosity!==`off`&&n.fleetChatVerbosity!==`full`&&(n.fleetChatVerbosity=`off`),[`hybrid`,`intelligent`,`selective`].includes(n.contextStrategy)||(n.contextStrategy=`hybrid`),n.auditLevel===`verbose`&&(n.auditLevel=`full`),[`minimal`,`standard`,`full`].includes(n.auditLevel)||(n.auditLevel=`standard`),typeof n.autoProceedMaxIterations!=`number`&&(n.autoProceedMaxIterations=50),(!n.fallbackProfiles||typeof n.fallbackProfiles!=`object`||Array.isArray(n.fallbackProfiles))&&(n.fallbackProfiles={}),Array.isArray(n.favoriteModels)||(n.favoriteModels=[]),typeof n.favoriteModelsOnly!=`boolean`&&(n.favoriteModelsOnly=!1),Array.isArray(n.modelAvailabilitySchedule)||(n.modelAvailabilitySchedule=[]),(!n.modelMatrix||typeof n.modelMatrix!=`object`||Array.isArray(n.modelMatrix))&&(n.modelMatrix={}),(typeof n.uiLocale!=`string`||!n.uiLocale)&&(n.uiLocale=_()),typeof n.breakerEnabled!=`boolean`&&(n.breakerEnabled=!1),typeof n.breakerAutoKillResetMs!=`number`&&(n.breakerAutoKillResetMs=6e4),n.fsAccess!==`unrestricted`&&n.fsAccess!==`project`&&(n.fsAccess=`unrestricted`),typeof n.debugStream!=`boolean`&&(n.debugStream=!1),typeof n.chimeraEnabled!=`boolean`&&(n.chimeraEnabled=!0),typeof n.chimeraProvider!=`string`&&(n.chimeraProvider=``),typeof n.chimeraModel!=`string`&&(n.chimeraModel=``),n.chimeraAutoFix!==`off`&&n.chimeraAutoFix!==`ask`&&n.chimeraAutoFix!==`auto`&&(n.chimeraAutoFix=`off`),(typeof n.chimeraMaxFiles!=`number`||!Number.isFinite(n.chimeraMaxFiles)||n.chimeraMaxFiles<1)&&(n.chimeraMaxFiles=15),typeof n.autoReviewEnabled!=`boolean`&&(n.autoReviewEnabled=!1),typeof n.autoReviewProvider!=`string`&&(n.autoReviewProvider=``),typeof n.autoReviewModel!=`string`&&(n.autoReviewModel=``),typeof n.autoReviewFallbackProfile!=`string`&&(n.autoReviewFallbackProfile=``),n.autoReviewModelSelection!==`round-robin`&&n.autoReviewModelSelection!==`random`&&(n.autoReviewModelSelection=`round-robin`),Array.isArray(n.autoReviewFallbackModels)||(n.autoReviewFallbackModels=[]),(typeof n.autoReviewDebounceMs!=`number`||!Number.isFinite(n.autoReviewDebounceMs)||n.autoReviewDebounceMs<0)&&(n.autoReviewDebounceMs=15e3),(typeof n.autoReviewMaxFilesPerBatch!=`number`||!Number.isFinite(n.autoReviewMaxFilesPerBatch)||n.autoReviewMaxFilesPerBatch<1)&&(n.autoReviewMaxFilesPerBatch=15),(typeof n.autoReviewMaxConcurrentReviews!=`number`||!Number.isFinite(n.autoReviewMaxConcurrentReviews)||n.autoReviewMaxConcurrentReviews<1)&&(n.autoReviewMaxConcurrentReviews=2),n.autoReviewCascadeOn!==`off`&&n.autoReviewCascadeOn!==`critical`&&n.autoReviewCascadeOn!==`high`&&(n.autoReviewCascadeOn=`off`),typeof n.showModelReasoning!=`boolean`&&(n.showModelReasoning=!0),typeof n.autoCollapseInput!=`boolean`&&(n.autoCollapseInput=!1),typeof n.showAgentSwarmPanel==`boolean`?n.showAgentSwarmPanel=n.showAgentSwarmPanel?`bottom`:`off`:(typeof n.showAgentSwarmPanel!=`string`||![`bottom`,`sidebar`,`off`].includes(n.showAgentSwarmPanel))&&(n.showAgentSwarmPanel=`bottom`),typeof n.allowOutsideProjectRoot!=`boolean`&&(n.allowOutsideProjectRoot=!0),typeof n.readSymbols!=`boolean`&&(n.readSymbols=!1),typeof n.showSageMemoryInject!=`boolean`&&(n.showSageMemoryInject=!1),(typeof n.sageMemoryInjectThreshold!=`number`||!Number.isFinite(n.sageMemoryInjectThreshold)||n.sageMemoryInjectThreshold<0||n.sageMemoryInjectThreshold>1)&&(n.sageMemoryInjectThreshold=.85),(typeof n.preRefineSeconds!=`number`||!Number.isFinite(n.preRefineSeconds)||n.preRefineSeconds<0)&&(n.preRefineSeconds=3),(typeof n.multiDiffSummaryThreshold!=`number`||!Number.isFinite(n.multiDiffSummaryThreshold)||n.multiDiffSummaryThreshold<0)&&(n.multiDiffSummaryThreshold=5),n},partialize:e=>{let{hqToken:t,...n}=e;return n},merge:(e,t)=>{let{hqToken:n,...r}=e??{};return{...t,...r,hqToken:``}}})),S=[`common`,`activity`,`chat`,`commandPalette`,`settings`,`setup`,`toasts`];function C(){try{return v(x.getState().uiLocale)}catch{return`en`}}n.use(r).use(e((e,t)=>p(Object.assign({"./locales/de/activity.json":()=>f(()=>import(`./activity-JmCi-KcX.js`),[]),"./locales/de/chat.json":()=>f(()=>import(`./chat-BnkVCZ3Q.js`),[]),"./locales/de/commandPalette.json":()=>f(()=>import(`./commandPalette-aaAou3Tl.js`),[]),"./locales/de/common.json":()=>f(()=>import(`./common-C3PzxyXg.js`),[]),"./locales/de/settings.json":()=>f(()=>import(`./settings-B36QpLU8.js`),[]),"./locales/de/setup.json":()=>f(()=>import(`./setup-DD8rKpQU.js`),[]),"./locales/de/toasts.json":()=>f(()=>import(`./toasts-CFzweRH5.js`),[]),"./locales/en/activity.json":()=>f(()=>import(`./activity-B7hiQ_IX.js`).then(e=>e.n),__vite__mapDeps([0,1])),"./locales/en/chat.json":()=>f(()=>import(`./chat-CzaGXz_W.js`).then(e=>e.n),__vite__mapDeps([2,1])),"./locales/en/commandPalette.json":()=>f(()=>import(`./commandPalette-BovBiPec.js`).then(e=>e.n),__vite__mapDeps([3,1])),"./locales/en/common.json":()=>f(()=>import(`./common-BBHmIHQW.js`).then(e=>e.n),__vite__mapDeps([4,1])),"./locales/en/settings.json":()=>f(()=>import(`./settings-DfID_cS9.js`).then(e=>e.n),__vite__mapDeps([5,1])),"./locales/en/setup.json":()=>f(()=>import(`./setup-DfcCCvUO.js`).then(e=>e.n),__vite__mapDeps([6,1])),"./locales/en/toasts.json":()=>f(()=>import(`./toasts-DOfXc7Rt.js`).then(e=>e.n),__vite__mapDeps([7,1])),"./locales/es/activity.json":()=>f(()=>import(`./activity-Cq0Lqtgz.js`),[]),"./locales/es/chat.json":()=>f(()=>import(`./chat-BPuAsrkF.js`),[]),"./locales/es/commandPalette.json":()=>f(()=>import(`./commandPalette-Nlxs0V7J.js`),[]),"./locales/es/common.json":()=>f(()=>import(`./common-CUWL8eNX.js`),[]),"./locales/es/settings.json":()=>f(()=>import(`./settings-B8uABeWU.js`),[]),"./locales/es/setup.json":()=>f(()=>import(`./setup-COxU-AT_.js`),[]),"./locales/es/toasts.json":()=>f(()=>import(`./toasts-BwQJwYLe.js`),[]),"./locales/fr/activity.json":()=>f(()=>import(`./activity-DVuAYnoi.js`),[]),"./locales/fr/chat.json":()=>f(()=>import(`./chat-BfQBSiII.js`),[]),"./locales/fr/commandPalette.json":()=>f(()=>import(`./commandPalette-Dfk74u87.js`),[]),"./locales/fr/common.json":()=>f(()=>import(`./common-xPePelft.js`),[]),"./locales/fr/settings.json":()=>f(()=>import(`./settings-RQKnX4dA.js`),[]),"./locales/fr/setup.json":()=>f(()=>import(`./setup-CMteRkTs.js`),[]),"./locales/fr/toasts.json":()=>f(()=>import(`./toasts-BCDGDcyq.js`),[]),"./locales/it/activity.json":()=>f(()=>import(`./activity-Dt0RpmkN.js`),[]),"./locales/it/chat.json":()=>f(()=>import(`./chat-CR2B97dj.js`),[]),"./locales/it/commandPalette.json":()=>f(()=>import(`./commandPalette-CUh_kgfp.js`),[]),"./locales/it/common.json":()=>f(()=>import(`./common-DuR5FTPN.js`),[]),"./locales/it/settings.json":()=>f(()=>import(`./settings-CSwU_zzD.js`),[]),"./locales/it/setup.json":()=>f(()=>import(`./setup-pPW1kVR_.js`),[]),"./locales/it/toasts.json":()=>f(()=>import(`./toasts-Dm12Nq8t.js`),[]),"./locales/pt-BR/activity.json":()=>f(()=>import(`./activity-B-LcgiXm.js`),[]),"./locales/pt-BR/chat.json":()=>f(()=>import(`./chat-DResBrkV.js`),[]),"./locales/pt-BR/commandPalette.json":()=>f(()=>import(`./commandPalette-tFxIIhvU.js`),[]),"./locales/pt-BR/common.json":()=>f(()=>import(`./common-CvSB5NM3.js`),[]),"./locales/pt-BR/settings.json":()=>f(()=>import(`./settings-B8Hgh9_X.js`),[]),"./locales/pt-BR/setup.json":()=>f(()=>import(`./setup-BOYK0I6-.js`),[]),"./locales/pt-BR/toasts.json":()=>f(()=>import(`./toasts-frBt6fvE.js`),[]),"./locales/tr/activity.json":()=>f(()=>import(`./activity-7Sj9fdO-.js`),[]),"./locales/tr/chat.json":()=>f(()=>import(`./chat-Di8o0wDz.js`),[]),"./locales/tr/commandPalette.json":()=>f(()=>import(`./commandPalette-CGMq-qlP.js`),[]),"./locales/tr/common.json":()=>f(()=>import(`./common-DT2FL9xN.js`),[]),"./locales/tr/settings.json":()=>f(()=>import(`./settings-FXJ8SsEh.js`),[]),"./locales/tr/setup.json":()=>f(()=>import(`./setup-Bd23KLtt.js`),[]),"./locales/tr/toasts.json":()=>f(()=>import(`./toasts-DDYQsJV8.js`),[])}),`./locales/${e}/${t}.json`,4))).init({lng:C(),fallbackLng:`en`,supportedLngs:[...m],ns:[...S],defaultNS:`common`,partialBundledLanguages:!0,resources:{en:{common:c,activity:a,chat:o,commandPalette:s,settings:l,setup:u,toasts:d}},interpolation:{escapeValue:!1},react:{useSuspense:!1},returnNull:!1});function w(e){typeof document<`u`&&(document.documentElement.lang=e)}w(n.language||`en`),x.subscribe((e,t)=>{let r=e.uiLocale;r&&r!==t.uiLocale&&r!==n.language&&n.changeLanguage(r).then(()=>w(r))});function T(){window.wrongstackDesktopHost?.onLocaleChanged?.(e=>{if(!e)return;let t=v(e);if(t===n.language)return;let r=x.getState();r.uiLocale!==t&&r.set({uiLocale:t}),n.changeLanguage(t).then(()=>w(t))})}try{T()}catch{}export{h as n,x as t};