@wrongstack/webui 0.284.0 → 0.285.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 (490) hide show
  1. package/dist/App.d.ts +2 -0
  2. package/dist/App.d.ts.map +1 -0
  3. package/dist/assets/{AnalyticsDashboard-BBoAzpgL.js → AnalyticsDashboard-Bn2wIgV0.js} +1 -1
  4. package/dist/assets/{AutoPhaseView-D053zOhN.js → AutoPhaseView-DWp3yHpI.js} +1 -1
  5. package/dist/assets/{ChangesView-4X9cQM4r.js → ChangesView-C_r4kccO.js} +1 -1
  6. package/dist/assets/{CodeEditor-C8hiA7LI.js → CodeEditor-DSpqZ-mS.js} +1 -1
  7. package/dist/assets/{DebugDashboard-DBPKvghW.js → DebugDashboard-DWKLI7lR.js} +1 -1
  8. package/dist/assets/{DesignGalleryView-CzF24Ppi.js → DesignGalleryView-Bk3HH3al.js} +1 -1
  9. package/dist/assets/KanbanView-CJqlvsbc.js +1 -0
  10. package/dist/assets/{MailboxDetailView-CCtq-c8u.js → MailboxDetailView-BwWagFay.js} +1 -1
  11. package/dist/assets/OfficeMapPanel-QFPaXTZ9.js +4 -0
  12. package/dist/assets/{ProcessMonitor-pm8Ih7-q.js → ProcessMonitor-dUyYv3Z4.js} +1 -1
  13. package/dist/assets/{QueuePanel-Lv54tvvk.js → QueuePanel-BdwvWRuB.js} +1 -1
  14. package/dist/assets/{RefreshDebugView-0VzJJqhZ.js → RefreshDebugView-eZwtZXgZ.js} +1 -1
  15. package/dist/assets/{SddBoardView-Q-k1UjLv.js → SddBoardView-OtKwEtAp.js} +1 -1
  16. package/dist/assets/{SddFlowGraph-BaWwH9Zc.js → SddFlowGraph-MVMUCMEy.js} +1 -1
  17. package/dist/assets/{SddWizard-C4wdyhYe.js → SddWizard-c7g68RFx.js} +1 -1
  18. package/dist/assets/SessionsDashboard-pMXfRTwN.js +1 -0
  19. package/dist/assets/{SkillDetailView-B4U0AtHj.js → SkillDetailView-CcdIF-85.js} +1 -1
  20. package/dist/assets/{SpecsView-QssXs9kF.js → SpecsView-yunV-Xfj.js} +1 -1
  21. package/dist/assets/{TerminalPanel-CSDEzJNZ.js → TerminalPanel-BIYT1IB3.js} +1 -1
  22. package/dist/assets/common-D8_r1x8x.js +1 -0
  23. package/dist/assets/common-suUxW9sA.js +1 -0
  24. package/dist/assets/{i18n-CkkVJCs9.js → i18n-BMePmaPJ.js} +2 -2
  25. package/dist/assets/index-CbrHWxbT.css +1 -0
  26. package/dist/assets/index-CyTNJHe8.js +154 -0
  27. package/dist/assets/local-prefs-BBMxai9I.js +1 -0
  28. package/dist/assets/settings-CKNx8p9I.js +1 -0
  29. package/dist/assets/settings-D-SHf0yS.js +1 -0
  30. package/dist/assets/ui-store-ComQYc5F.js +1 -0
  31. package/dist/assets/{ws-client-lDxBz-7w.js → ws-client-CwL51TNh.js} +1 -1
  32. package/dist/components/AgentTranscript.d.ts +13 -0
  33. package/dist/components/AgentTranscript.d.ts.map +1 -0
  34. package/dist/components/AgentsMonitor.d.ts +26 -0
  35. package/dist/components/AgentsMonitor.d.ts.map +1 -0
  36. package/dist/components/AgentsPage/format.d.ts +23 -0
  37. package/dist/components/AgentsPage/format.d.ts.map +1 -0
  38. package/dist/components/AgentsPage.d.ts +49 -0
  39. package/dist/components/AgentsPage.d.ts.map +1 -0
  40. package/dist/components/AnalyticsDashboard.d.ts +2 -0
  41. package/dist/components/AnalyticsDashboard.d.ts.map +1 -0
  42. package/dist/components/AutoPhaseView.d.ts +15 -0
  43. package/dist/components/AutoPhaseView.d.ts.map +1 -0
  44. package/dist/components/AutonomyPicker.d.ts +21 -0
  45. package/dist/components/AutonomyPicker.d.ts.map +1 -0
  46. package/dist/components/BoardView.d.ts +14 -0
  47. package/dist/components/BoardView.d.ts.map +1 -0
  48. package/dist/components/ChangesView.d.ts +10 -0
  49. package/dist/components/ChangesView.d.ts.map +1 -0
  50. package/dist/components/ChatInput/code-detect.d.ts +20 -0
  51. package/dist/components/ChatInput/code-detect.d.ts.map +1 -0
  52. package/dist/components/ChatInput/file-mention-picker.d.ts +15 -0
  53. package/dist/components/ChatInput/file-mention-picker.d.ts.map +1 -0
  54. package/dist/components/ChatInput/queued-messages.d.ts +9 -0
  55. package/dist/components/ChatInput/queued-messages.d.ts.map +1 -0
  56. package/dist/components/ChatInput/slash-commands.d.ts +17 -0
  57. package/dist/components/ChatInput/slash-commands.d.ts.map +1 -0
  58. package/dist/components/ChatInput/slash-routing.d.ts +79 -0
  59. package/dist/components/ChatInput/slash-routing.d.ts.map +1 -0
  60. package/dist/components/ChatInput/use-paste-drop.d.ts +29 -0
  61. package/dist/components/ChatInput/use-paste-drop.d.ts.map +1 -0
  62. package/dist/components/ChatInput.d.ts +5 -0
  63. package/dist/components/ChatInput.d.ts.map +1 -0
  64. package/dist/components/ChatView/ThinkingBubble.d.ts +8 -0
  65. package/dist/components/ChatView/ThinkingBubble.d.ts.map +1 -0
  66. package/dist/components/ChatView/index.d.ts +2 -0
  67. package/dist/components/ChatView/index.d.ts.map +1 -0
  68. package/dist/components/ChatView/utils.d.ts +44 -0
  69. package/dist/components/ChatView/utils.d.ts.map +1 -0
  70. package/dist/components/ChatView.d.ts +2 -0
  71. package/dist/components/ChatView.d.ts.map +1 -0
  72. package/dist/components/CheckpointTimeline.d.ts +7 -0
  73. package/dist/components/CheckpointTimeline.d.ts.map +1 -0
  74. package/dist/components/CodeEditor.d.ts +3 -0
  75. package/dist/components/CodeEditor.d.ts.map +1 -0
  76. package/dist/components/CollabPanel.d.ts +28 -0
  77. package/dist/components/CollabPanel.d.ts.map +1 -0
  78. package/dist/components/CommandPalette/export-utils.d.ts +10 -0
  79. package/dist/components/CommandPalette/export-utils.d.ts.map +1 -0
  80. package/dist/components/CommandPalette/index.d.ts +2 -0
  81. package/dist/components/CommandPalette/index.d.ts.map +1 -0
  82. package/dist/components/CommandPalette.d.ts +3 -0
  83. package/dist/components/CommandPalette.d.ts.map +1 -0
  84. package/dist/components/ConfirmDialog.d.ts +2 -0
  85. package/dist/components/ConfirmDialog.d.ts.map +1 -0
  86. package/dist/components/ConfirmModal.d.ts +59 -0
  87. package/dist/components/ConfirmModal.d.ts.map +1 -0
  88. package/dist/components/ConnectionBanner.d.ts +13 -0
  89. package/dist/components/ConnectionBanner.d.ts.map +1 -0
  90. package/dist/components/ContextBar.d.ts +35 -0
  91. package/dist/components/ContextBar.d.ts.map +1 -0
  92. package/dist/components/ContextBreakdownModal.d.ts +7 -0
  93. package/dist/components/ContextBreakdownModal.d.ts.map +1 -0
  94. package/dist/components/ContextModePicker.d.ts +2 -0
  95. package/dist/components/ContextModePicker.d.ts.map +1 -0
  96. package/dist/components/CostChip.d.ts +12 -0
  97. package/dist/components/CostChip.d.ts.map +1 -0
  98. package/dist/components/DebugDashboard.d.ts +2 -0
  99. package/dist/components/DebugDashboard.d.ts.map +1 -0
  100. package/dist/components/DependencyGraph.d.ts +13 -0
  101. package/dist/components/DependencyGraph.d.ts.map +1 -0
  102. package/dist/components/DesignGalleryView.d.ts +14 -0
  103. package/dist/components/DesignGalleryView.d.ts.map +1 -0
  104. package/dist/components/DiffView.d.ts +33 -0
  105. package/dist/components/DiffView.d.ts.map +1 -0
  106. package/dist/components/ErrorBoundary.d.ts +40 -0
  107. package/dist/components/ErrorBoundary.d.ts.map +1 -0
  108. package/dist/components/FallbackEditor.d.ts +15 -0
  109. package/dist/components/FallbackEditor.d.ts.map +1 -0
  110. package/dist/components/FileExplorer.d.ts +2 -0
  111. package/dist/components/FileExplorer.d.ts.map +1 -0
  112. package/dist/components/FilePicker.d.ts +16 -0
  113. package/dist/components/FilePicker.d.ts.map +1 -0
  114. package/dist/components/FileReferenceChip.d.ts +8 -0
  115. package/dist/components/FileReferenceChip.d.ts.map +1 -0
  116. package/dist/components/FleetMonitor.d.ts +27 -0
  117. package/dist/components/FleetMonitor.d.ts.map +1 -0
  118. package/dist/components/FleetPanel.d.ts +17 -0
  119. package/dist/components/FleetPanel.d.ts.map +1 -0
  120. package/dist/components/GoalPanel.d.ts +7 -0
  121. package/dist/components/GoalPanel.d.ts.map +1 -0
  122. package/dist/components/InspectorPanel.d.ts +14 -0
  123. package/dist/components/InspectorPanel.d.ts.map +1 -0
  124. package/dist/components/KanbanView.d.ts +4 -0
  125. package/dist/components/KanbanView.d.ts.map +1 -0
  126. package/dist/components/MailboxDetailView.d.ts +8 -0
  127. package/dist/components/MailboxDetailView.d.ts.map +1 -0
  128. package/dist/components/MailboxPanel.d.ts +4 -0
  129. package/dist/components/MailboxPanel.d.ts.map +1 -0
  130. package/dist/components/MessageBubble/CopyButton.d.ts +6 -0
  131. package/dist/components/MessageBubble/CopyButton.d.ts.map +1 -0
  132. package/dist/components/MessageBubble/ErrorBody.d.ts +4 -0
  133. package/dist/components/MessageBubble/ErrorBody.d.ts.map +1 -0
  134. package/dist/components/MessageBubble/StreamingMarkdown.d.ts +24 -0
  135. package/dist/components/MessageBubble/StreamingMarkdown.d.ts.map +1 -0
  136. package/dist/components/MessageBubble/ToolInputView.d.ts +4 -0
  137. package/dist/components/MessageBubble/ToolInputView.d.ts.map +1 -0
  138. package/dist/components/MessageBubble/index.d.ts +9 -0
  139. package/dist/components/MessageBubble/index.d.ts.map +1 -0
  140. package/dist/components/MessageBubble/utils.d.ts +17 -0
  141. package/dist/components/MessageBubble/utils.d.ts.map +1 -0
  142. package/dist/components/MessageBubble.d.ts +2 -0
  143. package/dist/components/MessageBubble.d.ts.map +1 -0
  144. package/dist/components/ModePicker.d.ts +9 -0
  145. package/dist/components/ModePicker.d.ts.map +1 -0
  146. package/dist/components/ModelPicker.d.ts +18 -0
  147. package/dist/components/ModelPicker.d.ts.map +1 -0
  148. package/dist/components/MonacoDiffView.d.ts +13 -0
  149. package/dist/components/MonacoDiffView.d.ts.map +1 -0
  150. package/dist/components/NextStepsBar.d.ts +39 -0
  151. package/dist/components/NextStepsBar.d.ts.map +1 -0
  152. package/dist/components/OfficeMapCanvas/resolve.d.ts +48 -0
  153. package/dist/components/OfficeMapCanvas/resolve.d.ts.map +1 -0
  154. package/dist/components/OfficeMapCanvas/utils.d.ts +57 -0
  155. package/dist/components/OfficeMapCanvas/utils.d.ts.map +1 -0
  156. package/dist/components/OfficeMapCanvas.d.ts +10 -0
  157. package/dist/components/OfficeMapCanvas.d.ts.map +1 -0
  158. package/dist/components/OfficeMapPanel.d.ts +6 -0
  159. package/dist/components/OfficeMapPanel.d.ts.map +1 -0
  160. package/dist/components/OfficeMapSettingsPanel.d.ts +10 -0
  161. package/dist/components/OfficeMapSettingsPanel.d.ts.map +1 -0
  162. package/dist/components/PhasePanel.d.ts +42 -0
  163. package/dist/components/PhasePanel.d.ts.map +1 -0
  164. package/dist/components/PlanPanel.d.ts +14 -0
  165. package/dist/components/PlanPanel.d.ts.map +1 -0
  166. package/dist/components/ProcessMonitor.d.ts +7 -0
  167. package/dist/components/ProcessMonitor.d.ts.map +1 -0
  168. package/dist/components/PromptLibraryModal.d.ts +7 -0
  169. package/dist/components/PromptLibraryModal.d.ts.map +1 -0
  170. package/dist/components/QueuePanel.d.ts +11 -0
  171. package/dist/components/QueuePanel.d.ts.map +1 -0
  172. package/dist/components/QuickModelSwitcher.d.ts +10 -0
  173. package/dist/components/QuickModelSwitcher.d.ts.map +1 -0
  174. package/dist/components/QuickModelSwitcher.filter.d.ts +33 -0
  175. package/dist/components/QuickModelSwitcher.filter.d.ts.map +1 -0
  176. package/dist/components/RefinePanel.d.ts +24 -0
  177. package/dist/components/RefinePanel.d.ts.map +1 -0
  178. package/dist/components/RefreshDebugView.d.ts +32 -0
  179. package/dist/components/RefreshDebugView.d.ts.map +1 -0
  180. package/dist/components/SddActivityFeed.d.ts +11 -0
  181. package/dist/components/SddActivityFeed.d.ts.map +1 -0
  182. package/dist/components/SddBoardView.d.ts +9 -0
  183. package/dist/components/SddBoardView.d.ts.map +1 -0
  184. package/dist/components/SddDestroyDialog.d.ts +16 -0
  185. package/dist/components/SddDestroyDialog.d.ts.map +1 -0
  186. package/dist/components/SddFlowGraph.d.ts +23 -0
  187. package/dist/components/SddFlowGraph.d.ts.map +1 -0
  188. package/dist/components/SddKanbanView.d.ts +12 -0
  189. package/dist/components/SddKanbanView.d.ts.map +1 -0
  190. package/dist/components/SddTaskDrawer.d.ts +28 -0
  191. package/dist/components/SddTaskDrawer.d.ts.map +1 -0
  192. package/dist/components/SddWizard.d.ts +10 -0
  193. package/dist/components/SddWizard.d.ts.map +1 -0
  194. package/dist/components/SearchOverlay.d.ts +12 -0
  195. package/dist/components/SearchOverlay.d.ts.map +1 -0
  196. package/dist/components/SendButton.d.ts +2 -0
  197. package/dist/components/SendButton.d.ts.map +1 -0
  198. package/dist/components/SessionWatchPanel.d.ts +17 -0
  199. package/dist/components/SessionWatchPanel.d.ts.map +1 -0
  200. package/dist/components/SessionsDashboard.d.ts +3 -0
  201. package/dist/components/SessionsDashboard.d.ts.map +1 -0
  202. package/dist/components/SettingsPanel/BrainSection.d.ts +3 -0
  203. package/dist/components/SettingsPanel/BrainSection.d.ts.map +1 -0
  204. package/dist/components/SettingsPanel/ClearAllowlistDialog.d.ts +19 -0
  205. package/dist/components/SettingsPanel/ClearAllowlistDialog.d.ts.map +1 -0
  206. package/dist/components/SettingsPanel/MCPSection.d.ts +27 -0
  207. package/dist/components/SettingsPanel/MCPSection.d.ts.map +1 -0
  208. package/dist/components/SettingsPanel/ModelSection.d.ts +31 -0
  209. package/dist/components/SettingsPanel/ModelSection.d.ts.map +1 -0
  210. package/dist/components/SettingsPanel/OAuthLoginSection.d.ts +14 -0
  211. package/dist/components/SettingsPanel/OAuthLoginSection.d.ts.map +1 -0
  212. package/dist/components/SettingsPanel/PreferenceControls.d.ts +23 -0
  213. package/dist/components/SettingsPanel/PreferenceControls.d.ts.map +1 -0
  214. package/dist/components/SettingsPanel/PreferenceToggle.d.ts +25 -0
  215. package/dist/components/SettingsPanel/PreferenceToggle.d.ts.map +1 -0
  216. package/dist/components/SettingsPanel/ProviderModelsPanel.d.ts +46 -0
  217. package/dist/components/SettingsPanel/ProviderModelsPanel.d.ts.map +1 -0
  218. package/dist/components/SettingsPanel/ProviderModelsPanel.filter.d.ts +110 -0
  219. package/dist/components/SettingsPanel/ProviderModelsPanel.filter.d.ts.map +1 -0
  220. package/dist/components/SettingsPanel/ProviderSection.d.ts +63 -0
  221. package/dist/components/SettingsPanel/ProviderSection.d.ts.map +1 -0
  222. package/dist/components/SettingsPanel/ShadowSection.d.ts +3 -0
  223. package/dist/components/SettingsPanel/ShadowSection.d.ts.map +1 -0
  224. package/dist/components/SettingsPanel/ToolsSection.d.ts +12 -0
  225. package/dist/components/SettingsPanel/ToolsSection.d.ts.map +1 -0
  226. package/dist/components/SettingsPanel/index.d.ts +2 -0
  227. package/dist/components/SettingsPanel/index.d.ts.map +1 -0
  228. package/dist/components/SettingsPanel/local-presets.d.ts +31 -0
  229. package/dist/components/SettingsPanel/local-presets.d.ts.map +1 -0
  230. package/dist/components/SettingsPanel/official-servers.d.ts +30 -0
  231. package/dist/components/SettingsPanel/official-servers.d.ts.map +1 -0
  232. package/dist/components/SettingsPanel/settings-panel-reducers.d.ts +40 -0
  233. package/dist/components/SettingsPanel/settings-panel-reducers.d.ts.map +1 -0
  234. package/dist/components/SettingsPanel/undo-send-decision.d.ts +42 -0
  235. package/dist/components/SettingsPanel/undo-send-decision.d.ts.map +1 -0
  236. package/dist/components/SettingsPanel.d.ts +3 -0
  237. package/dist/components/SettingsPanel.d.ts.map +1 -0
  238. package/dist/components/SetupScreen.d.ts +2 -0
  239. package/dist/components/SetupScreen.d.ts.map +1 -0
  240. package/dist/components/ShortcutsOverlay.d.ts +2 -0
  241. package/dist/components/ShortcutsOverlay.d.ts.map +1 -0
  242. package/dist/components/SideEffectTimeline.d.ts +11 -0
  243. package/dist/components/SideEffectTimeline.d.ts.map +1 -0
  244. package/dist/components/SidePanel/AgentsPanel.d.ts +8 -0
  245. package/dist/components/SidePanel/AgentsPanel.d.ts.map +1 -0
  246. package/dist/components/SidePanel/ChangesPanel.d.ts +8 -0
  247. package/dist/components/SidePanel/ChangesPanel.d.ts.map +1 -0
  248. package/dist/components/SidePanel/DesignStudioPanel.d.ts +12 -0
  249. package/dist/components/SidePanel/DesignStudioPanel.d.ts.map +1 -0
  250. package/dist/components/SidePanel/HistoryPanel.d.ts +7 -0
  251. package/dist/components/SidePanel/HistoryPanel.d.ts.map +1 -0
  252. package/dist/components/SidePanel/SessionList.d.ts +24 -0
  253. package/dist/components/SidePanel/SessionList.d.ts.map +1 -0
  254. package/dist/components/SidePanel/SessionPanel.d.ts +10 -0
  255. package/dist/components/SidePanel/SessionPanel.d.ts.map +1 -0
  256. package/dist/components/SidePanel/SkillsList.d.ts +8 -0
  257. package/dist/components/SidePanel/SkillsList.d.ts.map +1 -0
  258. package/dist/components/SidePanel/WorktreesPanel.d.ts +8 -0
  259. package/dist/components/SidePanel/WorktreesPanel.d.ts.map +1 -0
  260. package/dist/components/SidePanel/index.d.ts +11 -0
  261. package/dist/components/SidePanel/index.d.ts.map +1 -0
  262. package/dist/components/SkillDetailView.d.ts +8 -0
  263. package/dist/components/SkillDetailView.d.ts.map +1 -0
  264. package/dist/components/SpecsView.d.ts +9 -0
  265. package/dist/components/SpecsView.d.ts.map +1 -0
  266. package/dist/components/TaskBoard.d.ts +20 -0
  267. package/dist/components/TaskBoard.d.ts.map +1 -0
  268. package/dist/components/TaskCard.d.ts +43 -0
  269. package/dist/components/TaskCard.d.ts.map +1 -0
  270. package/dist/components/TasksPanel.d.ts +14 -0
  271. package/dist/components/TasksPanel.d.ts.map +1 -0
  272. package/dist/components/TerminalPanel.d.ts +12 -0
  273. package/dist/components/TerminalPanel.d.ts.map +1 -0
  274. package/dist/components/ThemeProvider.d.ts +15 -0
  275. package/dist/components/ThemeProvider.d.ts.map +1 -0
  276. package/dist/components/Toaster.d.ts +40 -0
  277. package/dist/components/Toaster.d.ts.map +1 -0
  278. package/dist/components/TodosPanel.d.ts +14 -0
  279. package/dist/components/TodosPanel.d.ts.map +1 -0
  280. package/dist/components/ToolGroup.d.ts +18 -0
  281. package/dist/components/ToolGroup.d.ts.map +1 -0
  282. package/dist/components/ToolResult.d.ts +33 -0
  283. package/dist/components/ToolResult.d.ts.map +1 -0
  284. package/dist/components/WatchMessageBubble.d.ts +30 -0
  285. package/dist/components/WatchMessageBubble.d.ts.map +1 -0
  286. package/dist/components/WelcomeScreen.d.ts +2 -0
  287. package/dist/components/WelcomeScreen.d.ts.map +1 -0
  288. package/dist/components/WorkDashboard.d.ts +11 -0
  289. package/dist/components/WorkDashboard.d.ts.map +1 -0
  290. package/dist/components/WorkspaceDock.d.ts +16 -0
  291. package/dist/components/WorkspaceDock.d.ts.map +1 -0
  292. package/dist/components/WorktreeGraph.d.ts +21 -0
  293. package/dist/components/WorktreeGraph.d.ts.map +1 -0
  294. package/dist/components/WorktreeLanes.d.ts +11 -0
  295. package/dist/components/WorktreeLanes.d.ts.map +1 -0
  296. package/dist/components/WorktreeOrphans.d.ts +9 -0
  297. package/dist/components/WorktreeOrphans.d.ts.map +1 -0
  298. package/dist/components/activity-bar/index.d.ts +14 -0
  299. package/dist/components/activity-bar/index.d.ts.map +1 -0
  300. package/dist/components/activity-bar/nav.d.ts +17 -0
  301. package/dist/components/activity-bar/nav.d.ts.map +1 -0
  302. package/dist/components/dashboard-primitives.d.ts +22 -0
  303. package/dist/components/dashboard-primitives.d.ts.map +1 -0
  304. package/dist/components/index.d.ts +32 -0
  305. package/dist/components/index.d.ts.map +1 -0
  306. package/dist/components/monaco-theme.d.ts +6 -0
  307. package/dist/components/monaco-theme.d.ts.map +1 -0
  308. package/dist/components/toaster-helpers.d.ts +34 -0
  309. package/dist/components/toaster-helpers.d.ts.map +1 -0
  310. package/dist/components/ui/badge.d.ts +10 -0
  311. package/dist/components/ui/badge.d.ts.map +1 -0
  312. package/dist/components/ui/button.d.ts +12 -0
  313. package/dist/components/ui/button.d.ts.map +1 -0
  314. package/dist/components/ui/concurrency-gauge.d.ts +18 -0
  315. package/dist/components/ui/concurrency-gauge.d.ts.map +1 -0
  316. package/dist/components/ui/dialog.d.ts +29 -0
  317. package/dist/components/ui/dialog.d.ts.map +1 -0
  318. package/dist/components/ui/dropdown-menu.d.ts +28 -0
  319. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  320. package/dist/components/ui/event-timeline.d.ts +15 -0
  321. package/dist/components/ui/event-timeline.d.ts.map +1 -0
  322. package/dist/components/ui/index.d.ts +11 -0
  323. package/dist/components/ui/index.d.ts.map +1 -0
  324. package/dist/components/ui/input.d.ts +6 -0
  325. package/dist/components/ui/input.d.ts.map +1 -0
  326. package/dist/components/ui/scroll-area.d.ts +6 -0
  327. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  328. package/dist/components/ui/sheet.d.ts +32 -0
  329. package/dist/components/ui/sheet.d.ts.map +1 -0
  330. package/dist/components/ui/sparkline.d.ts +16 -0
  331. package/dist/components/ui/sparkline.d.ts.map +1 -0
  332. package/dist/components/ui/tabs.d.ts +8 -0
  333. package/dist/components/ui/tabs.d.ts.map +1 -0
  334. package/dist/hooks/index.d.ts +2 -0
  335. package/dist/hooks/index.d.ts.map +1 -0
  336. package/dist/hooks/use-ws-handlers.d.ts +24 -0
  337. package/dist/hooks/use-ws-handlers.d.ts.map +1 -0
  338. package/dist/hooks/useGitInfo.d.ts +4 -0
  339. package/dist/hooks/useGitInfo.d.ts.map +1 -0
  340. package/dist/hooks/useProviderModels.d.ts +15 -0
  341. package/dist/hooks/useProviderModels.d.ts.map +1 -0
  342. package/dist/hooks/useWebSocket.d.ts +85 -0
  343. package/dist/hooks/useWebSocket.d.ts.map +1 -0
  344. package/dist/hooks/ws-handlers/chat-handlers.d.ts +21 -0
  345. package/dist/hooks/ws-handlers/chat-handlers.d.ts.map +1 -0
  346. package/dist/hooks/ws-handlers/coordinator-handlers.d.ts +3 -0
  347. package/dist/hooks/ws-handlers/coordinator-handlers.d.ts.map +1 -0
  348. package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts +15 -0
  349. package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts.map +1 -0
  350. package/dist/hooks/ws-handlers/fleet-handlers.d.ts +13 -0
  351. package/dist/hooks/ws-handlers/fleet-handlers.d.ts.map +1 -0
  352. package/dist/hooks/ws-handlers/misc-handlers.d.ts +21 -0
  353. package/dist/hooks/ws-handlers/misc-handlers.d.ts.map +1 -0
  354. package/dist/hooks/ws-handlers/session-handlers.d.ts +34 -0
  355. package/dist/hooks/ws-handlers/session-handlers.d.ts.map +1 -0
  356. package/dist/hooks/ws-handlers.d.ts +24 -0
  357. package/dist/hooks/ws-handlers.d.ts.map +1 -0
  358. package/dist/i18n/index.d.ts +12 -0
  359. package/dist/i18n/index.d.ts.map +1 -0
  360. package/dist/i18n/languages.d.ts +40 -0
  361. package/dist/i18n/languages.d.ts.map +1 -0
  362. package/dist/index.css +1 -1
  363. package/dist/index.css.map +7 -1
  364. package/dist/index.d.ts +1 -2
  365. package/dist/index.html +8 -8
  366. package/dist/index.js +2513 -2174
  367. package/dist/index.js.map +7 -1
  368. package/dist/lib/accent-colors.d.ts +136 -0
  369. package/dist/lib/accent-colors.d.ts.map +1 -0
  370. package/dist/lib/agent-status.d.ts +41 -0
  371. package/dist/lib/agent-status.d.ts.map +1 -0
  372. package/dist/lib/analytics.d.ts +36 -0
  373. package/dist/lib/analytics.d.ts.map +1 -0
  374. package/dist/lib/chime.d.ts +20 -0
  375. package/dist/lib/chime.d.ts.map +1 -0
  376. package/dist/lib/color.d.ts +15 -0
  377. package/dist/lib/color.d.ts.map +1 -0
  378. package/dist/lib/completion.d.ts +27 -0
  379. package/dist/lib/completion.d.ts.map +1 -0
  380. package/dist/lib/core-browser-shim.d.ts +22 -0
  381. package/dist/lib/core-browser-shim.d.ts.map +1 -0
  382. package/dist/lib/desktop-host.d.ts +24 -0
  383. package/dist/lib/desktop-host.d.ts.map +1 -0
  384. package/dist/lib/desktop-shell.d.ts +3 -0
  385. package/dist/lib/desktop-shell.d.ts.map +1 -0
  386. package/dist/lib/favicon.d.ts +21 -0
  387. package/dist/lib/favicon.d.ts.map +1 -0
  388. package/dist/lib/file-icons.d.ts +10 -0
  389. package/dist/lib/file-icons.d.ts.map +1 -0
  390. package/dist/lib/goal.d.ts +32 -0
  391. package/dist/lib/goal.d.ts.map +1 -0
  392. package/dist/lib/index.d.ts +4 -0
  393. package/dist/lib/index.d.ts.map +1 -0
  394. package/dist/lib/model-matrix-routes.d.ts +203 -0
  395. package/dist/lib/model-matrix-routes.d.ts.map +1 -0
  396. package/dist/lib/notify.d.ts +15 -0
  397. package/dist/lib/notify.d.ts.map +1 -0
  398. package/dist/lib/sdd-theme.d.ts +52 -0
  399. package/dist/lib/sdd-theme.d.ts.map +1 -0
  400. package/dist/lib/stream-coalescer.d.ts +46 -0
  401. package/dist/lib/stream-coalescer.d.ts.map +1 -0
  402. package/dist/lib/terminal-dock.d.ts +6 -0
  403. package/dist/lib/terminal-dock.d.ts.map +1 -0
  404. package/dist/lib/tool-icon.d.ts +19 -0
  405. package/dist/lib/tool-icon.d.ts.map +1 -0
  406. package/dist/lib/tool-summary.d.ts +2 -0
  407. package/dist/lib/tool-summary.d.ts.map +1 -0
  408. package/dist/lib/utils.d.ts +3 -0
  409. package/dist/lib/utils.d.ts.map +1 -0
  410. package/dist/lib/view-navigation.d.ts +15 -0
  411. package/dist/lib/view-navigation.d.ts.map +1 -0
  412. package/dist/lib/ws-client-helpers.d.ts +46 -0
  413. package/dist/lib/ws-client-helpers.d.ts.map +1 -0
  414. package/dist/lib/ws-client-utils.d.ts +87 -0
  415. package/dist/lib/ws-client-utils.d.ts.map +1 -0
  416. package/dist/lib/ws-client.d.ts +235 -0
  417. package/dist/lib/ws-client.d.ts.map +1 -0
  418. package/dist/main.d.ts +8 -0
  419. package/dist/main.d.ts.map +1 -0
  420. package/dist/server/index.d.ts.map +1 -0
  421. package/dist/stores/auto-submit-streak.d.ts +40 -0
  422. package/dist/stores/auto-submit-streak.d.ts.map +1 -0
  423. package/dist/stores/autophase-store.d.ts +50 -0
  424. package/dist/stores/autophase-store.d.ts.map +1 -0
  425. package/dist/stores/chat-store.d.ts +128 -0
  426. package/dist/stores/chat-store.d.ts.map +1 -0
  427. package/dist/stores/config-store.d.ts +67 -0
  428. package/dist/stores/config-store.d.ts.map +1 -0
  429. package/dist/stores/coordinator-monitor-store.d.ts +133 -0
  430. package/dist/stores/coordinator-monitor-store.d.ts.map +1 -0
  431. package/dist/stores/file-reference-store.d.ts +36 -0
  432. package/dist/stores/file-reference-store.d.ts.map +1 -0
  433. package/dist/stores/file-store.d.ts +40 -0
  434. package/dist/stores/file-store.d.ts.map +1 -0
  435. package/dist/stores/fleet-store.d.ts +29 -0
  436. package/dist/stores/fleet-store.d.ts.map +1 -0
  437. package/dist/stores/git-changes-store.d.ts +38 -0
  438. package/dist/stores/git-changes-store.d.ts.map +1 -0
  439. package/dist/stores/git-info-store.d.ts +18 -0
  440. package/dist/stores/git-info-store.d.ts.map +1 -0
  441. package/dist/stores/goal-store.d.ts +12 -0
  442. package/dist/stores/goal-store.d.ts.map +1 -0
  443. package/dist/stores/history-store.d.ts +15 -0
  444. package/dist/stores/history-store.d.ts.map +1 -0
  445. package/dist/stores/index.d.ts +36 -0
  446. package/dist/stores/index.d.ts.map +1 -0
  447. package/dist/stores/kanban-store.d.ts +22 -0
  448. package/dist/stores/kanban-store.d.ts.map +1 -0
  449. package/dist/stores/local-prefs.d.ts +117 -0
  450. package/dist/stores/local-prefs.d.ts.map +1 -0
  451. package/dist/stores/mailbox-store.d.ts +53 -0
  452. package/dist/stores/mailbox-store.d.ts.map +1 -0
  453. package/dist/stores/monitor-store.d.ts +116 -0
  454. package/dist/stores/monitor-store.d.ts.map +1 -0
  455. package/dist/stores/office-map-store.d.ts +47 -0
  456. package/dist/stores/office-map-store.d.ts.map +1 -0
  457. package/dist/stores/sdd-board-store.d.ts +88 -0
  458. package/dist/stores/sdd-board-store.d.ts.map +1 -0
  459. package/dist/stores/sdd-wizard-store.d.ts +64 -0
  460. package/dist/stores/sdd-wizard-store.d.ts.map +1 -0
  461. package/dist/stores/session-store.d.ts +125 -0
  462. package/dist/stores/session-store.d.ts.map +1 -0
  463. package/dist/stores/side-effect-store.d.ts +18 -0
  464. package/dist/stores/side-effect-store.d.ts.map +1 -0
  465. package/dist/stores/specs-store.d.ts +67 -0
  466. package/dist/stores/specs-store.d.ts.map +1 -0
  467. package/dist/stores/types.d.ts +240 -0
  468. package/dist/stores/types.d.ts.map +1 -0
  469. package/dist/stores/ui-store.d.ts +307 -0
  470. package/dist/stores/ui-store.d.ts.map +1 -0
  471. package/dist/stores/viz-store.d.ts +126 -0
  472. package/dist/stores/viz-store.d.ts.map +1 -0
  473. package/dist/stores/worktree-store.d.ts +47 -0
  474. package/dist/stores/worktree-store.d.ts.map +1 -0
  475. package/dist/types.d.ts +121 -118
  476. package/dist/types.d.ts.map +1 -0
  477. package/dist/types.js +1 -1
  478. package/dist/types.js.map +7 -1
  479. package/package.json +12 -13
  480. package/dist/assets/KanbanView-DWBGErwm.js +0 -1
  481. package/dist/assets/OfficeMapPanel-BBKsytG0.js +0 -4
  482. package/dist/assets/SessionsDashboard-CveBdrQJ.js +0 -1
  483. package/dist/assets/common-B28qhvZh.js +0 -1
  484. package/dist/assets/common-CeTsF3jX.js +0 -1
  485. package/dist/assets/index-BqAVsSCe.js +0 -154
  486. package/dist/assets/index-DTFjO9oF.css +0 -1
  487. package/dist/assets/local-prefs-C1YdbI5g.js +0 -1
  488. package/dist/assets/settings-Os0ifjjB.js +0 -1
  489. package/dist/assets/settings-UGa_oSYC.js +0 -1
  490. package/dist/assets/ui-store-FTgDlcX2.js +0 -1
@@ -0,0 +1 @@
1
+ import{di as e,ui as t}from"./vendor-CyLvG8N0.js";var n=[`en`,`tr`,`de`,`fr`,`it`,`es`,`pt-BR`],r=[{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)`}],i=new Set(n);function a(){return typeof navigator>`u`||!navigator.language?`en`:s(navigator.language)}function o(e){return!e||typeof e!=`string`?a():s(e)}function s(e){let t=e.trim().toLowerCase();if(!t)return`en`;if(i.has(t))return t;let n=t.split(`-`)[0];return n&&i.has(n)?n:n===`pt`?`pt-BR`:`en`}var c={autonomy:`auto`,autonomyDelayMs:45e3,autoProceedMaxIterations:50,yolo:!0,maxIterations:500,chime:!1,confirmExit:!0,streamFleet:!0,nextPrediction:!1,fallbackModels:[],fallbackProfiles:{},favoriteModels:[],favoriteModelsOnly:!1,modelMatrix:{},fallbackAuto:!0,featureMcp:!0,featurePlugins:!0,featureMemory:!0,featureSkills:!0,featureModelsRegistry:!0,indexOnStart:!0,contextAutoCompact:!0,contextStrategy:`hybrid`,contextMode:`balanced`,tokenSavingTier:`off`,maxConcurrent:10,titleAnimation:!0,logLevel:`info`,auditLevel:`standard`,enhanceEnabled:!0,enhanceDelayMs:6e4,enhanceLanguage:`original`,showThinkingLogs:!0,groupToolCalls:!0,reasoningMode:`auto`,reasoningEffort:`high`,reasoningPreserve:!1,cacheTtl:`default`,hqEnabled:!1,hqUrl:``,hqToken:``,hqRawContent:!1,tgConfigured:!1,tgSessionEnd:!1,tgDelegate:!0,tgLongToolMs:3e4,uiLocale:a()},l=e()(t(e=>({...c,set:t=>e(t),reset:()=>e(c)}),{name:`wrongstack-local-prefs`,version:6,migrate:e=>{let t=e??{};return[`hybrid`,`intelligent`,`selective`].includes(t.contextStrategy)||(t.contextStrategy=`hybrid`),t.auditLevel===`verbose`&&(t.auditLevel=`full`),[`minimal`,`standard`,`full`].includes(t.auditLevel)||(t.auditLevel=`standard`),typeof t.autoProceedMaxIterations!=`number`&&(t.autoProceedMaxIterations=50),(!t.fallbackProfiles||typeof t.fallbackProfiles!=`object`||Array.isArray(t.fallbackProfiles))&&(t.fallbackProfiles={}),Array.isArray(t.favoriteModels)||(t.favoriteModels=[]),typeof t.favoriteModelsOnly!=`boolean`&&(t.favoriteModelsOnly=!1),(!t.modelMatrix||typeof t.modelMatrix!=`object`||Array.isArray(t.modelMatrix))&&(t.modelMatrix={}),(typeof t.uiLocale!=`string`||!t.uiLocale)&&(t.uiLocale=a()),t}}));export{o as i,r as n,n as r,l as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-QTnfLwEv.js";var t=e({agent:()=>d,allowlist:()=>l,appearance:()=>i,connection:()=>o,default:()=>m,features:()=>f,mcp:()=>c,model:()=>a,oauth:()=>u,provider:()=>s,tabs:()=>r,title:()=>n,toast:()=>p}),n=`Settings`,r={provider:`Provider`,connection:`Connection`,appearance:`Appearance`,agent:`Agent`,features:`Features`,tools:`Tools`,mcp:`MCP`,brain:`Brain`,shadow:`Shadow`},i={themeHeading:`Theme`,themeLight:`Light`,themeDark:`Dark`,themeSystem:`System`,themeSystemHint:`System follows your OS-level light/dark preference.`,preferencesHeading:`Preferences`,compactDensity:`Compact density`,compactDensityHint:`Tighter spacing throughout the chat.`,soundOnComplete:`Sound on completion`,soundOnCompleteHint:`Play a soft chime when a run finishes.`,titleAnimation:`Title animation`,titleAnimationHint:`Show animated terminal title in the CLI.`,showThinkingLabel:`Show thinking logs`,showThinkingHint:`Display completed reasoning blocks in the chat history.`,groupToolCallsLabel:`Group tool calls`,groupToolCallsHint:`Collapse consecutive tool calls into a single chip.`,languageHeading:`Language`,languageLabel:`Interface language`,languageHint:`Changes only the interface text. Prompts, skills, and model output are not affected.`},a={heading:`Model`,loading:`Loading models...`,notFound:`No models found for this provider. The catalog might be empty or still loading.`,selectProviderFirst:`Select a provider first`,context:`{{count}}k context`},o={wsUrlLabel:`WebSocket Server URL`,wsUrlPlaceholder:`ws://localhost:3457`,wsUrlHint:`URL of the agent WebSocket server. The server runs alongside the CLI.`,startingHeading:`Starting the WebSocket Server`,startingBody:`Standalone: run ./dev.ps1 from the repo root, or set WS_HOST/WS_PORT before launching wstackui. Or alongside the CLI: wstack --webui.`},s={subscriptionHeading:`Subscription login`,apiKeysHeading:`API key providers`,apiKeysBody:`Pick a provider from the catalog and add an API key, or manage saved providers.`,tabCatalog:`Catalog`,tabSaved:`Saved ({{count}})`,searchPlaceholder:`Search {{count}} providers (name / id / family)…`,loadingCatalog:`Loading catalog...`,noMatch:`No providers match "{{query}}".`,configured:`Configured`,reachable:`Reachable`,envVar:`ENV: {{var}}`,modelCount_one:`{{count}} model`,modelCount_other:`{{count}} models`,keyPlaceholder:`{{name}} API key`,orEnv:`Or set {{env}} in the environment instead.`,addApiKey:`Add API key`,manageKeys:`Manage your API keys and provider configurations`,addProvider:`Add Provider`,addCustomHeading:`Add Custom Provider`,localServers:`Local servers — click to pre-fill:`,providerIdPlaceholder:`Provider ID (e.g. my-llm-server)`,apiKeyOptionalPlaceholder:`API Key (optional)`,noSaved:`No saved providers yet`,noSavedHint:`Add a provider to get started`,apiKeysLabel:`API Keys`,savedProviderCount_one:`{{count}} provider`,savedProviderCount_other:`{{count}} providers`,keyCount_one:`{{count}} key configured`,keyCount_other:`{{count}} keys configured`,activeKeyCount_one:`{{count}} active key`,activeKeyCount_other:`{{count}} active keys`,addKey:`Add Key`,noKeys:`No keys configured`,active:`Active`,setActive:`Set Active`,keyLabelPlaceholder:`Key label (e.g. default, production)`,apiKeyPlaceholder:`API key`,saveKey:`Save Key`,savedToast:`Saved key for {{name}}`},c={status:{connected:`Connected`,connecting:`Connecting`,sleeping:`Sleeping`,discovering:`Discovering`,error:`Error`,stopped:`Stopped`,unknown:`Unknown`},disabled:`MCP servers are disabled.`,wakeTitle:`Wake server`,sleepTitle:`Sleep server`,discoverTitle:`Discover tools`,editTitle:`Edit`,removeTitle:`Remove`,statusLabel:`Status:`,enabledLabel:`Enabled:`,yes:`Yes`,no:`No`,descriptionLabel:`Description:`,pidLabel:`PID:`,errorLabel:`Error:`,toolsLabel:`Tools ({{count}}):`,noTools:`No tools discovered yet`,serverNameRequired:`Server name is required`,dialogTitleEdit:`Edit MCP Server`,dialogTitleAdd:`Add MCP Server`,dialogTitleAddCustom:`Add Custom MCP Server`,fieldName:`Name`,fieldNamePlaceholder:`e.g., github, filesystem`,fieldTransport:`Transport`,fieldUrl:`URL`,fieldCommand:`Command`,fieldCommandPlaceholder:`e.g., npx`,fieldArgs:`Args`,fieldArgsHint:`(space-separated)`,fieldArgsPlaceholder:`e.g., -y @modelcontextprotocol/server-github`,fieldEnv:`Env vars`,fieldEnvHint:`(KEY=value, one per line)`,fieldDescription:`Description`,fieldDescriptionPlaceholder:`GitHub MCP server for repository access`,enableServer:`Enable server`,lazyConnect:`Lazy connect`,lazyConnectHint:`(don't start until first tool call; auto-sleeps when idle)`,saveChanges:`Save Changes`,addServer:`Add Server`,requires:`Requires: {{vars}}`,added:`Added`,heading:`MCP Servers`,summary:`{{connected}} connected · {{sleeping}} sleeping · {{total}} total`,addCustom:`Add Custom`,tabRecommended:`Recommended`,tabServers:`Servers`,tabAddCustom:`Add Custom`,recommendedBody:`One-click add for popular MCP servers. Click Add to pre-fill the configuration, then confirm. Servers requiring credentials will need their env vars set before use.`,loadingServers:`Loading servers...`,noServers:`No MCP servers configured`,noServersHint:`Switch to the Recommended tab to add popular servers, or Add Custom for your own.`,addCustomBody:`Configure a custom MCP server with stdio, SSE, or HTTP transport.`,addCustomBodyHint:`For popular servers, use the Recommended tab instead — everything is pre-configured for you.`,removeConfirmTitle:`Remove server "{{name}}"?`,removeConfirmBody:`This removes the MCP server from your configuration.`,toastAdded:`Server "{{name}}" added`,toastRemoved:`Server "{{name}}" removed`,toastDiscovered:`Discovered {{count}} tools from "{{name}}"`,toastSleeping:`Server "{{name}}" is now sleeping`,toastConnected:`Server "{{name}}" connected`,toastReconnected:`Server "{{name}}" reconnected`,toastDisconnected:`Server "{{name}}" disconnected: {{reason}}`,toastError:`Server "{{name}}" error: {{error}}`,disabledHint:`Enable the "MCP servers" feature flag in the Features tab to use this section.`},l={title:`Clear saved allowlist?`,body_one:`This will remove the pinned model for {{provider}}. The model picker will fall back to the models.dev catalog.`,body_other:`This will remove the {{count}} pinned models for {{provider}}. The model picker will fall back to the models.dev catalog.`,undoHint:`You can undo this for 8 seconds after confirming.`,keepTitle:`Keep the allowlist (Esc)`,clearTitle:`Clear the allowlist (Enter)`,clear:`Clear allowlist`},u={termsWarning:`Sign in with a subscription instead of an API key. Using a subscription outside its official client may violate the provider's Terms — your account could be rate-limited or banned. An API key is the sanctioned path for programmatic use.`,signIn:`Sign in`,waitingBrowser:`Waiting for you to sign in…`,openSignIn:`Open sign-in page`,pasteLoopbackBusy:`Loopback port busy — paste the redirect URL`,pasteCantReach:`Browser can't reach this server? Paste the redirect URL`,submit:`Submit`,enterCode:`Enter this code at the verification page:`,openVerification:`Open verification page`,waitingCode:`Waiting for authorization…`,exchanging:`Exchanging tokens…`,fetchingModels:`Fetching models…`,signedIn:`Signed in.`,signedInToast:`Signed in — {{provider}}`,signInFailed:`Sign-in failed`},d={modelHeading:`Model`,autonomyHeading:`Autonomy & Behavior`,autonomyModeLabel:`Autonomy mode`,autonomyModeHint:`How independently the agent proceeds between turns.`,autonomyModeOff:`Off — full manual control`,autonomyModeSuggest:`Suggest — suggests next steps`,autonomyModeAuto:`Auto — brief confirmation delay`,autonomyModeEternal:`Eternal — autonomous until goal done`,autonomyModeEternalParallel:`Eternal Parallel — multi-agent fleet`,autoProceedDelayLabel:`Auto-proceed delay`,autoProceedDelayHint:`Milliseconds before the agent auto-proceeds in Auto mode. 0 = immediate.`,yoloLabel:`YOLO mode`,yoloHint:`Bypass tool confirmation prompts — the agent runs without asking.`,refineHeading:`Prompt Refinement`,enableRefineLabel:`Enable refine`,enableRefineHint:`Rewrite prompts before sending — clearer instructions, better results.`,refineDelayLabel:`Refine delay`,refineDelayHint:`Countdown before the refined prompt auto-sends.`,refineLanguageLabel:`Refine language`,refineLanguageHint:`Keep your language or translate to English for the model.`,refineLanguageOriginal:`Original — keep your language`,refineLanguageEnglish:`English — translate to English`,reasoningHeading:`Reasoning & Cache`,reasoningModeLabel:`Reasoning mode`,reasoningModeHint:`Control how the model uses extended thinking. Auto = provider default.`,reasoningModeAuto:`Auto — provider default`,reasoningModeOn:`On — force thinking on`,reasoningModeOff:`Off — force thinking off`,reasoningEffortLabel:`Reasoning effort`,reasoningEffortHint:`How much compute the model spends thinking. Only sent when the model supports it.`,reasoningEffortNone:`None`,reasoningEffortMinimal:`Minimal`,reasoningEffortLow:`Low`,reasoningEffortMedium:`Medium`,reasoningEffortHigh:`High`,reasoningEffortXhigh:`Extra High`,reasoningEffortMax:`Max`,preserveThinkingLabel:`Preserve thinking`,preserveThinkingHint:`Keep reasoning blocks across turns for context continuity.`,cacheTtlLabel:`Cache TTL`,cacheTtlHint:`Prompt cache time-to-live. 1h costs more on write but saves on repeat reads (Anthropic).`,cacheTtlDefault:`Default — provider default`,cacheTtl5m:`5 minutes`,cacheTtl1h:`1 hour`,capsHint:`Use wstack models caps to check what the current model supports. Unsupported settings are silently omitted per-request.`,fallbackHeading:`Model Fallbacks`,fallbackBody:`When the active model rate-limits (429/529), 5xx-errors, or stalls — after its own retries — the agent rotates to the next model in this chain. Also used as the default for SDD worker subagents.`,autoFallbackLabel:`Auto fallback`,autoFallbackHint:`When the chain above is empty, auto-derive one from your keyed providers.`,favoritesOnlyLabel:`Favorites only`,favoritesOnlyHint:`When auto fallback derives a chain, restrict it to your favorite models.`,profilesHeading:`Fallback Profiles`,addProfile:`Add`,noProfiles:`No named fallback profiles yet.`,createDefault:`Create default from active model`,useChain:`Use chain`,setLeader:`Set leader`,profileEmpty:`Profile is empty.`,favoritesHeading:`Favorite Models`,favoritesEmpty:`Favorites are shown first and can constrain auto fallback.`,routingHeading:`Model Routing`,routingRouteKey:`Model route key`,routingPhasesGroup:`Phases`,routingRolesGroup:`{{label}} roles`,routingCustomGroup:`Custom existing routes`,routingTargetPlaceholder:`fallback1, provider/model, or blank`,routingSet:`Set`,routingReasoningModeAria:`New route reasoning mode`,routingReasoningEffortAria:`New route reasoning effort`,routingReasoningPreserveAria:`New route reasoning preserve`,routingReasoningModeFor:`Reasoning mode for {{key}}`,routingReasoningEffortFor:`Reasoning effort for {{key}}`,routingReasoningPreserveFor:`Reasoning preserve for {{key}}`,noRoutes:`No model routes yet.`,leaderModel:`leader model`,hqHeading:`HQ Client`,hqPublishingLabel:`HQ publishing`,hqPublishingHint:`Publish this WebUI/client session to WrongStack HQ. Same-machine clients can auto-discover local HQ auth; remote clients use the URL/token below.`,hqUrlLabel:`HQ URL`,hqUrlHint:`Leave empty for same-machine auto-discovery.`,hqTokenLabel:`HQ client token`,executionHeading:`Execution`,maxIterationsLabel:`Max iterations per run`,maxIterationsHint:`Hard cap on LLM turns per agent.run().`,autoProceedMaxIterationsLabel:`Auto-proceed max iterations`,autoProceedMaxIterationsHint:`Stop auto-proceed after N iterations. 0 = unlimited.`,confirmExitLabel:`Confirm before exit`,confirmExitHint:`First Ctrl+C aborts work, second confirms exit.`,chimeLabel:`Chime on completion`,chimeHint:`Terminal bell when an agent run finishes.`,fleetHeading:`Fleet & Streaming`,streamFleetLabel:`Stream fleet events`,streamFleetHint:`Show live subagent activity in the fleet panel.`,maxConcurrentLabel:`Max concurrent subagents`,maxConcurrentHint:`Maximum number of subagents that can run simultaneously.`,nextPredictionLabel:`Next-step prediction`,nextPredictionHint:`After a turn completes, predict likely next steps.`,telegramHeading:`Telegram Notifications`,telegramSessionEndLabel:`Session end`,telegramSessionEndHint:`Send a summary when a session ends.`,telegramDelegateLabel:`Delegate finished`,telegramDelegateHint:`Send a humanized note when a subagent completes.`,telegramLongToolLabel:`Long-running tools`,telegramLongToolHint:`Notify when a tool exceeds {{ms}}ms. Set 0 to disable.`,telegramChangesApply:`Changes apply immediately.`,telegramNotConfigured:`Telegram is not configured. Run /telegram-setup in the CLI to connect a bot first.`,addModelToProfile:`Add model to profile…`,addFavoriteModel:`Add favorite model…`,hqRawContentLabel:`Raw HQ content`,hqRawContentHint:`Send raw content previews to HQ instead of redacted previews.`},f={flagsHeading:`Feature Flags`,mcpLabel:`MCP servers`,mcpHint:`Enable Model Context Protocol integrations.`,pluginsLabel:`Plugins`,pluginsHint:`Load and run user-installed plugins.`,memoryLabel:`Memory`,memoryHint:`Persist and recall facts across sessions.`,skillsLabel:`Skills`,skillsHint:`Load domain-specific skill prompts.`,modelsRegistryLabel:`Models registry`,modelsRegistryHint:`Use the models.dev catalog for provider discovery.`,indexOnStartLabel:`Index on start`,indexOnStartHint:`Build the codebase symbol index at session start.`,contextHeading:`Context & Debug`,autoCompactLabel:`Auto-compact context`,autoCompactHint:`Automatically trim the context window when near limits.`,compactorStrategyLabel:`Compactor strategy`,compactorStrategyHint:`How the context is compacted when it grows too large.`,compactorStrategyHybrid:`Hybrid — fast rules (default)`,compactorStrategyIntelligent:`Intelligent — LLM summarization`,compactorStrategySelective:`Selective — LLM-driven selection`,contextModeLabel:`Context mode`,contextModeHint:`Context window policy — balanced is the default.`,contextModeBalanced:`Balanced — normal context usage`,contextModeFrugal:`Frugal — conservative token use`,contextModeDeep:`Deep — larger context for complex tasks`,contextModeArchival:`Archival — maximize context retention`,tokenSavingLabel:`Token-saving mode`,tokenSavingHint:`How aggressively to reduce token usage.`,tokenSavingOff:`Off — no token saving`,tokenSavingMinimal:`Minimal — basic optimization`,tokenSavingLight:`Light — moderate reduction`,tokenSavingMedium:`Medium — significant savings`,tokenSavingAggressive:`Aggressive — maximum compression`,logLevelLabel:`Log level`,logLevelHint:`Minimum severity for server-side logging.`,logLevelDebug:`Debug — everything`,logLevelInfo:`Info — normal flow`,logLevelWarn:`Warn — problems only`,logLevelError:`Error — failures only`,auditLevelLabel:`Audit level`,auditLevelHint:`Detail level for session audit logs.`,auditLevelMinimal:`Minimal — errors only`,auditLevelStandard:`Standard — tool calls + errors`,auditLevelFull:`Full — every event (large logs)`},p={switchingTo:`Switching to {{provider}} / {{model}}…`,fallbackExists:`Fallback profile "{{name}}" already exists`,selectProviderModelFirst:`Select a provider and model first`,defaultProfileCreated:`Default fallback profile created`,profileEmpty:`Fallback profile "{{name}}" is empty`,leaderSetFrom:`Leader set from {{name}}`},m={title:n,tabs:r,appearance:i,model:a,connection:o,provider:s,mcp:c,allowlist:l,oauth:u,agent:d,features:f,toast:p};export{t as n,m as t};
@@ -0,0 +1 @@
1
+ var e=`Ayarlar`,t={provider:`Sağlayıcı`,connection:`Bağlan`,appearance:`Görünüm`,agent:`Vekil`,features:`Özellikler`,mcp:`MCP`},n={themeHeading:`Tema`,themeLight:`Açık`,themeDark:`Koyu`,themeSystem:`Sistem`,themeSystemHint:`Sistem, işletim sistemi düzeyindeki açık/koyu tercihinizi izler.`,preferencesHeading:`Tercihler`,compactDensity:`Sıkışık yoğunluk`,compactDensityHint:`Sohbet boyunca daha dar aralıklar.`,soundOnComplete:`Tamamlanınca ses çal`,soundOnCompleteHint:`Bir çalışma bitince hafif bir çan sesi çal.`,titleAnimation:`Başlık animasyonu`,titleAnimationHint:`CLI'da animasyonlu terminal başlığını göster.`,showThinkingLabel:`Düşünme kayıtlarını göster`,showThinkingHint:`Tamamlanan akıl yürütme bloklarını sohbet geçmişinde görüntüle.`,groupToolCallsLabel:`Araç çağrılarını grupla`,groupToolCallsHint:`Ardışık araç çağrılarını tek bir çipte topla.`,languageHeading:`Dil`,languageLabel:`Arayüz dili`,languageHint:`Yalnızca arayüz metnini değiştirir. Promptlar, beceriler ve model çıktısı etkilenmez.`},r={heading:`Model`,loading:`Modeller yükleniyor...`,notFound:`Bu sağlayıcı için model bulunamadı. Katalog boş olabilir veya hâlâ yükleniyor olabilir.`,selectProviderFirst:`Önce bir sağlayıcı seçin`,context:`{{count}}k bağlam`},i={wsUrlLabel:`WebSocket Sunucu URL'si`,wsUrlPlaceholder:`ws://localhost:3457`,wsUrlHint:`Vekil WebSocket sunucusunun URL'si. Sunucu CLI ile birlikte çalışır.`,startingHeading:`WebSocket Sunucusunu Başlatma`,startingBody:`Bağımsız: repo kökünden ./dev.ps1 çalıştırın veya wstackui başlatmadan önce WS_HOST/WS_PORT ayarlayın. Veya CLI ile birlikte: wstack --webui.`},a={subscriptionHeading:`Abonelik girişi`,apiKeysHeading:`API anahtarı sağlayıcıları`,apiKeysBody:`Katalogdan bir sağlayıcı seçip API anahtarı ekleyin veya kayıtlı sağlayıcıları yönetin.`,tabCatalog:`Katalog`,tabSaved:`Kayıtlı ({{count}})`,searchPlaceholder:`{{count}} sağlayıcıda ara (ad / kimlik / aile)…`,loadingCatalog:`Katalog yükleniyor...`,noMatch:`"{{query}}" ile eşleşen sağlayıcı yok.`,configured:`Yapılandırıldı`,reachable:`Erişilebilir`,envVar:`ENV: {{var}}`,modelCount_one:`{{count}} model`,modelCount_other:`{{count}} model`,keyPlaceholder:`{{name}} API anahtarı`,orEnv:`Veya bunun yerine ortamda {{env}} ayarlayın.`,addApiKey:`API anahtarı ekle`,manageKeys:`API anahtarlarınızı ve sağlayıcı yapılandırmalarınızı yönetin`,addProvider:`Sağlayıcı Ekle`,addCustomHeading:`Özel Sağlayıcı Ekle`,localServers:`Yerel sunucular — doldurmak için tıklayın:`,providerIdPlaceholder:`Sağlayıcı kimliği (örn. my-llm-server)`,apiKeyOptionalPlaceholder:`API Anahtarı (isteğe bağlı)`,noSaved:`Henüz kayıtlı sağlayıcı yok`,noSavedHint:`Başlamak için bir sağlayıcı ekleyin`,apiKeysLabel:`API Anahtarları`,savedProviderCount_one:`{{count}} sağlayıcı`,savedProviderCount_other:`{{count}} sağlayıcı`,keyCount_one:`{{count}} anahtar yapılandırıldı`,keyCount_other:`{{count}} anahtar yapılandırıldı`,activeKeyCount_one:`{{count}} etkin anahtar`,activeKeyCount_other:`{{count}} etkin anahtar`,addKey:`Anahtar Ekle`,noKeys:`Yapılandırılmış anahtar yok`,active:`Etkin`,setActive:`Etkin Yap`,keyLabelPlaceholder:`Anahtar etiketi (örn. default, production)`,apiKeyPlaceholder:`API anahtarı`,saveKey:`Anahtarı Kaydet`,savedToast:`{{name}} için anahtar kaydedildi`},o={status:{connected:`Bağlandı`,connecting:`Bağlanıyor`,sleeping:`Uyuyor`,discovering:`Keşfediliyor`,error:`Hata`,stopped:`Durduruldu`,unknown:`Bilinmiyor`},disabled:`MCP sunucuları devre dışı.`,wakeTitle:`Sunucuyu uyandır`,sleepTitle:`Sunucuyu uyut`,discoverTitle:`Araçları keşfet`,editTitle:`Düzenle`,removeTitle:`Kaldır`,statusLabel:`Durum:`,enabledLabel:`Etkin:`,yes:`Evet`,no:`Hayır`,descriptionLabel:`Açıklama:`,pidLabel:`PID:`,errorLabel:`Hata:`,toolsLabel:`Araçlar ({{count}}):`,noTools:`Henüz araç keşfedilmedi`,serverNameRequired:`Sunucu adı zorunludur`,dialogTitleEdit:`MCP Sunucusunu Düzenle`,dialogTitleAdd:`MCP Sunucusu Ekle`,dialogTitleAddCustom:`Özel MCP Sunucusu Ekle`,fieldName:`Ad`,fieldNamePlaceholder:`örn., github, filesystem`,fieldTransport:`Aktarım`,fieldUrl:`URL`,fieldCommand:`Komut`,fieldCommandPlaceholder:`örn., npx`,fieldArgs:`Argümanlar`,fieldArgsHint:`(boşlukla ayrılmış)`,fieldArgsPlaceholder:`örn., -y @modelcontextprotocol/server-github`,fieldEnv:`Ortam değişkenleri`,fieldEnvHint:`(KEY=değer, satır başına bir tane)`,fieldDescription:`Açıklama`,fieldDescriptionPlaceholder:`Depo erişimi için GitHub MCP sunucusu`,enableServer:`Sunucuyu etkinleştir`,lazyConnect:`Tembel bağlan`,lazyConnectHint:`(ilk araç çağrısına kadar başlatma; boştayken otomatik uyur)`,saveChanges:`Değişiklikleri Kaydet`,addServer:`Sunucu Ekle`,requires:`Gerektirir: {{vars}}`,added:`Eklendi`,heading:`MCP Sunucuları`,summary:`{{connected}} bağlı · {{sleeping}} uyuyor · {{total}} toplam`,addCustom:`Özel Ekle`,tabRecommended:`Önerilen`,tabServers:`Sunucular`,tabAddCustom:`Özel Ekle`,recommendedBody:`Popüler MCP sunucularını tek tıkla ekleyin. Yapılandırmayı öndoldurmak için Ekle'ye tıklayın, sonra onaylayın. Kimlik bilgisi gerektiren sunucuların kullanımdan önce ortam değişkenleri ayarlanmalıdır.`,loadingServers:`Sunucular yükleniyor...`,noServers:`Yapılandırılmış MCP sunucusu yok`,noServersHint:`Popüler sunucular eklemek için Önerilen sekmesine, kendi sunucunuz için Özel Ekle'ye geçin.`,addCustomBody:`stdio, SSE veya HTTP aktarımıyla özel bir MCP sunucusu yapılandırın.`,addCustomBodyHint:`Popüler sunucular için bunun yerine Önerilen sekmesini kullanın — her şey sizin için önceden yapılandırılmıştır.`,removeConfirmTitle:`"{{name}}" sunucusu kaldırılsın mı?`,removeConfirmBody:`Bu, MCP sunucusunu yapılandırmanızdan kaldırır.`,toastAdded:`"{{name}}" sunucusu eklendi`,toastRemoved:`"{{name}}" sunucusu kaldırıldı`,toastDiscovered:`"{{name}}" sunucusundan {{count}} araç keşfedildi`,toastSleeping:`"{{name}}" sunucusu artık uyuyor`,toastConnected:`"{{name}}" sunucusu bağlandı`,toastReconnected:`"{{name}}" sunucusu yeniden bağlandı`,toastDisconnected:`"{{name}}" sunucusu bağlantısı koptu: {{reason}}`,toastError:`"{{name}}" sunucusu hatası: {{error}}`,disabledHint:`Bu bölümü kullanmak için Özellikler sekmesindeki "MCP sunucuları" özellik bayrağını etkinleştirin.`},s={title:`Kayıtlı izin listesi temizlensin mi?`,body_one:`Sabitlenen model {{provider}} için kaldırılacak. Model seçici models.dev kataloğuna geri dönecek.`,body_other:`{{count}} sabitlenen model {{provider}} için kaldırılacak. Model seçici models.dev kataloğuna geri dönecek.`,undoHint:`Onayladıktan sonra 8 saniye boyunca geri alabilirsiniz.`,keepTitle:`İzin listesini tut (Esc)`,clearTitle:`İzin listesini temizle (Enter)`,clear:`İzin listesini temizle`},c={termsWarning:`Bir API anahtarı yerine abonelikle oturum açın. Aboneliği resmi istemcisi dışında kullanmak sağlayıcının Şartlarını ihlal edebilir — hesabınız hız sınırına takılabilir veya yasaklanabilir. API anahtarı programatik kullanım için onaylı yoldur.`,signIn:`Oturum aç`,waitingBrowser:`Oturum açmanız bekleniyor…`,openSignIn:`Oturum açma sayfasını aç`,pasteLoopbackBusy:`Loopback portu meşgul — yönlendirme URL'sini yapıştırın`,pasteCantReach:`Tarayıcı bu sunucuya ulaşamıyor mu? Yönlendirme URL'sini yapıştırın`,submit:`Gönder`,enterCode:`Bu kodu doğrulama sayfasına girin:`,openVerification:`Doğrulama sayfasını aç`,waitingCode:`Yetkilendirme bekleniyor…`,exchanging:`Tokenlar değiştiriliyor…`,fetchingModels:`Modeller getiriliyor…`,signedIn:`Oturum açıldı.`,signedInToast:`Oturum açıldı — {{provider}}`,signInFailed:`Oturum açma başarısız`},l={modelHeading:`Model`,autonomyHeading:`Otonomi ve Davranış`,autonomyModeLabel:`Otonomi modu`,autonomyModeHint:`Ajanın turlar arasında ne kadar bağımsız ilerlediği.`,autonomyModeOff:`Kapalı — tam manuel kontrol`,autonomyModeSuggest:`Öner — sonraki adımları önerir`,autonomyModeAuto:`Otomatik — kısa onay gecikmesi`,autonomyModeEternal:`Sonsuz — hedef bitene kadar otonom`,autonomyModeEternalParallel:`Sonsuz Paralel — çok-ajanlı filo`,autoProceedDelayLabel:`Otomatik ilerleme gecikmesi`,autoProceedDelayHint:`Otomatik modda ajan otomatik ilerlemeden önceki milisaniye. 0 = anında.`,yoloLabel:`YOLO modu`,yoloHint:`Araç onay istemlerini atla — ajan sormadan çalışır.`,refineHeading:`İstem İyileştirme`,enableRefineLabel:`İyileştirmeyi etkinleştir`,enableRefineHint:`Göndermeden önce istemleri yeniden yazar — daha net talimatlar, daha iyi sonuçlar.`,refineDelayLabel:`İyileştirme gecikmesi`,refineDelayHint:`İyileştirilmiş istem otomatik gönderilmeden önceki geri sayım.`,refineLanguageLabel:`İyileştirme dili`,refineLanguageHint:`Dilinizi koruyun veya model için İngilizceye çevirin.`,refineLanguageOriginal:`Orijinal — dilinizi koruyun`,refineLanguageEnglish:`İngilizce — İngilizceye çevir`,reasoningHeading:`Akıl Yürütme ve Önbellek`,reasoningModeLabel:`Akıl yürütme modu`,reasoningModeHint:`Modelin genişletilmiş düşünmeyi nasıl kullandığını kontrol edin. Otomatik = sağlayıcı varsayılanı.`,reasoningModeAuto:`Otomatik — sağlayıcı varsayılanı`,reasoningModeOn:`Açık — düşünmeyi zorla`,reasoningModeOff:`Kapalı — düşünmeyi kapat`,reasoningEffortLabel:`Akıl yürütme çabası`,reasoningEffortHint:`Modelin düşünmeye harcadığı işlem gücü. Yalnızca model desteklediğinde gönderilir.`,reasoningEffortNone:`Yok`,reasoningEffortMinimal:`Minimal`,reasoningEffortLow:`Düşük`,reasoningEffortMedium:`Orta`,reasoningEffortHigh:`Yüksek`,reasoningEffortXhigh:`Çok Yüksek`,reasoningEffortMax:`Maks`,preserveThinkingLabel:`Düşünmeyi koru`,preserveThinkingHint:`Bağlam sürekliliği için akıl yürütme bloklarını turlar arasında tut.`,cacheTtlLabel:`Önbellek TTL`,cacheTtlHint:`İstem önbelleği yaşam süresi. 1h yazmada pahalıdır ama tekrarlanan okumalarda tasarruf sağlar (Anthropic).`,cacheTtlDefault:`Varsayılan — sağlayıcı varsayılanı`,cacheTtl5m:`5 dakika`,cacheTtl1h:`1 saat`,capsHint:`Mevcut modelin ne desteklediğini kontrol etmek için wstack models caps kullanın. Desteklenmeyen ayarlar istek başına sessizce atlanır.`,fallbackHeading:`Model Yedekleri`,fallbackBody:`Aktif model hız sınırlarsa (429/529), 5xx hatası verirse veya takılırsa — kendi yeniden denemelerinden sonra — ajan bu zincirdeki bir sonraki modele geçer. Ayrıca SDD işçi alt-ajanları için varsayılan olarak kullanılır.`,autoFallbackLabel:`Otomatik yedek`,autoFallbackHint:`Yukarıdaki zincir boşsa, anahtarlı sağlayıcılarınızdan otomatik türet.`,favoritesOnlyLabel:`Sadece favoriler`,favoritesOnlyHint:`Otomatik yedek bir zincir türettiğinde, onu favori modellerinizle sınırlandır.`,profilesHeading:`Yedek Profilleri`,addProfile:`Ekle`,noProfiles:`Henüz adlandırılmış yedek profili yok.`,createDefault:`Aktif modelden varsayılan oluştur`,useChain:`Zinciri kullan`,setLeader:`Lideri ayarla`,profileEmpty:`Profil boş.`,favoritesHeading:`Favori Modeller`,favoritesEmpty:`Favoriler önce gösterilir ve otomatik yedeği kısıtlayabilir.`,routingHeading:`Model Yönlendirme`,routingRouteKey:`Model rotası anahtarı`,routingPhasesGroup:`Aşamalar`,routingRolesGroup:`{{label}} rolleri`,routingCustomGroup:`Özel mevcut rotalar`,routingTargetPlaceholder:`fallback1, provider/model veya boş`,routingSet:`Ayarla`,routingReasoningModeAria:`Yeni rota akıl yürütme modu`,routingReasoningEffortAria:`Yeni rota akıl yürütme çabası`,routingReasoningPreserveAria:`Yeni rota akıl yürütme koruması`,routingReasoningModeFor:`{{key}} için akıl yürütme modu`,routingReasoningEffortFor:`{{key}} için akıl yürütme çabası`,routingReasoningPreserveFor:`{{key}} için akıl yürütme koruması`,noRoutes:`Henüz model rotası yok.`,leaderModel:`lider model`,hqHeading:`HQ İstemcisi`,hqPublishingLabel:`HQ yayınlama`,hqPublishingHint:`Bu WebUI/istemci oturumunu WrongStack HQ'ya yayınlayın. Aynı makine istemcileri yerel HQ kimlik doğrulamasını otomatik keşfedebilir; uzak istemciler aşağıdaki URL/tokenı kullanır.`,hqUrlLabel:`HQ URL`,hqUrlHint:`Aynı makine otomatik keşfi için boş bırakın.`,hqTokenLabel:`HQ istemci tokenı`,executionHeading:`Yürütme`,maxIterationsLabel:`Çalışma başına maks iterasyon`,maxIterationsHint:`agent.run() başına LLM turu için sabit sınır.`,autoProceedMaxIterationsLabel:`Otomatik ilerleme maks iterasyon`,autoProceedMaxIterationsHint:`N iterasyondan sonra otomatik ilerlemeyi durdur. 0 = sınırsız.`,confirmExitLabel:`Çıkıştan önce onayla`,confirmExitHint:`İlk Ctrl+C işi iptal eder, ikincisi çıkışı onaylar.`,chimeLabel:`Tamamlanmada ses`,chimeHint:`Bir ajan çalışması bittiğinde terminal zili.`,fleetHeading:`Filo ve Akış`,streamFleetLabel:`Filo olaylarını akıt`,streamFleetHint:`Filo panelinde canlı alt-ajan etkinliğini göster.`,maxConcurrentLabel:`Maks eşzamanlı alt-ajan`,maxConcurrentHint:`Aynı anda çalışabilecek maks alt-ajan sayısı.`,nextPredictionLabel:`Sonraki adım tahmini`,nextPredictionHint:`Bir tur tamamlandıktan sonra olası sonraki adımları tahmin et.`,telegramHeading:`Telegram Bildirimleri`,telegramSessionEndLabel:`Oturum sonu`,telegramSessionEndHint:`Bir oturum bittiğinde özet gönder.`,telegramDelegateLabel:`Temsilci tamamlandı`,telegramDelegateHint:`Bir alt-ajan tamamlandığında insanlaştırılmış not gönder.`,telegramLongToolLabel:`Uzun süren araçlar`,telegramLongToolHint:`Bir araç {{ms}}ms aşarsa bildir. Devre dışı bırakmak için 0 ayarla.`,telegramChangesApply:`Değişiklikler hemen uygulanır.`,telegramNotConfigured:`Telegram yapılandırılmamış. Önce bir bot bağlamak için CLI'da /telegram-setup çalıştırın.`,addModelToProfile:`Profile modele ekle…`,addFavoriteModel:`Favori modele ekle…`,hqRawContentLabel:`Ham HQ içeriği`,hqRawContentHint:`HQ'ya sansürlenmiş önizlemeler yerine ham içerik önizlemeleri gönder.`},u={flagsHeading:`Özellik Bayrakları`,mcpLabel:`MCP sunucuları`,mcpHint:`Model Context Protocol entegrasyonlarını etkinleştir.`,pluginsLabel:`Eklentiler`,pluginsHint:`Kullanıcı tarafından yüklenen eklentileri yükle ve çalıştır.`,memoryLabel:`Bellek`,memoryHint:`Oturumlar arasında bilgileri kalıcı kıl ve hatırla.`,skillsLabel:`Beceriler`,skillsHint:`Alan özelinde beceri istemlerini yükle.`,modelsRegistryLabel:`Model kayıt defteri`,modelsRegistryHint:`Salayıcı keşfi için models.dev kataloğunu kullan.`,indexOnStartLabel:`Başlangıçta dizine ekle`,indexOnStartHint:`Oturum başlangıcında kod tabanı sembol dizinini oluştur.`,contextHeading:`Bağlam ve Hata Ayıklama`,autoCompactLabel:`Bağlamı otomatik sıkıştır`,autoCompactHint:`Sınırlara yakınken bağlam penceresini otomatik kırp.`,compactorStrategyLabel:`Sıkıştırma stratejisi`,compactorStrategyHint:`Bağlam çok büyüdüğünde nasıl sıkıştırılacağı.`,compactorStrategyHybrid:`Karma — hızlı kurallar (varsayılan)`,compactorStrategyIntelligent:`Akıllı — LLM özetleme`,compactorStrategySelective:`Seçici — LLM odaklı seçim`,contextModeLabel:`Bağlam modu`,contextModeHint:`Bağlam penceresi ilkesi — dengeli varsayılandır.`,contextModeBalanced:`Dengeli — normal bağlam kullanımı`,contextModeFrugal:`Tasarruflu — muhafazakar token kullanımı`,contextModeDeep:`Derin — karmaşık görevler için daha büyük bağlam`,contextModeArchival:`Arşiv — bağlam tutmayı maksimize et`,tokenSavingLabel:`Token tasarrufu modu`,tokenSavingHint:`Token kullanımını ne kadar agresif azaltacağı.`,tokenSavingOff:`Kapalı — token tasarrufu yok`,tokenSavingMinimal:`Minimal — temel optimizasyon`,tokenSavingLight:`Hafif — orta derecede azaltma`,tokenSavingMedium:`Orta — önemli tasarruflar`,tokenSavingAggressive:`Agresif — maksimum sıkıştırma`,logLevelLabel:`Günlük seviyesi`,logLevelHint:`Sunucu tarafı günlükleme için minimum şiddet.`,logLevelDebug:`Hata ayıkla — her şey`,logLevelInfo:`Bilgi — normal akış`,logLevelWarn:`Uyarı — sadece sorunlar`,logLevelError:`Hata — sadece başarısızlıklar`,auditLevelLabel:`Denetim seviyesi`,auditLevelHint:`Oturum denetim günlükleri için ayrıntı seviyesi.`,auditLevelMinimal:`Minimal — sadece hatalar`,auditLevelStandard:`Standart — araç çağrıları + hatalar`,auditLevelFull:`Tam — her olay (büyük günlükler)`},d={switchingTo:`{{provider}} / {{model}} modeline geçiliyor…`,fallbackExists:`"{{name}}" yedek profili zaten var`,selectProviderModelFirst:`Önce bir sağlayıcı ve model seçin`,defaultProfileCreated:`Varsayılan yedek profili oluşturuldu`,profileEmpty:`"{{name}}" yedek profili boş`,leaderSetFrom:`Lider {{name}} adından ayarlandı`},f={title:e,tabs:t,appearance:n,model:r,connection:i,provider:a,mcp:o,allowlist:s,oauth:c,agent:l,features:u,toast:d};export{l as agent,s as allowlist,n as appearance,i as connection,f as default,u as features,o as mcp,r as model,c as oauth,a as provider,t as tabs,e as title,d as toast};
@@ -0,0 +1 @@
1
+ import{di as e,ui as t}from"./vendor-CyLvG8N0.js";var n=[`chat`,`agents`,`history`,`files`,`changes`,`mailbox`,`skills`,`design`,`worktrees`,`officemap`];function r(e){return n.includes(e)?e:e===`context`?`chat`:e===`sessions`?`history`:e===`projects`?`chat`:e===`officemap`?`officemap`:`chat`}var i=[`chat`,`settings`,`autophase`,`specs`,`kanban`,`sddboard`,`sddwizard`,`files`,`changes`,`sessions`,`setup`,`skill`,`officemap`,`mailbox`,`debug`,`design-gallery`,`refresh-debug`,`analytics`];function a(e){return i.includes(e)?e:`chat`}var o=[`autophase`,`goal`,`fleet`,`work`,`worktrees`,`collab`];function s(e){return e==null||!o.includes(e)?null:e}function c(){if(typeof window>`u`)return!1;if(window.wrongstackDesktopHost)return!0;try{return new URLSearchParams(window.location.search).get(`shell`)===`desktop`}catch{return!1}}function l(e={}){return{currentView:`chat`,activeActivity:`chat`,sidebarOpen:e.sidebarOpen??!1,dockSection:null,dockCustomizeOpen:!1,fleetMonitorOpen:!1,agentsMonitorOpen:!1,processMonitorOpen:!1,queuePanelOpen:!1,agentDetailModalId:null,sideContextBreakdownOpen:!1,inspectorOpen:!1,terminalOpen:!1,paletteOpen:!1,shortcutsOpen:!1,searchOpen:!1,searchQuery:``,searchActiveMessageId:null,modelSwitcherOpen:!1,promptLibraryOpen:!1,selectedMailMessage:null,refinePanel:null}}var u=e()(t(e=>({sidebarOpen:!0,activeActivity:`chat`,settingsOpen:!1,currentView:`chat`,showConfirmDialog:!1,confirmInfo:null,paletteOpen:!1,shortcutsOpen:!1,searchOpen:!1,searchQuery:``,searchActiveMessageId:null,scrollTarget:null,promptHistory:[],sidebarWidth:304,pinnedIds:[],compactMode:!1,modelSwitcherOpen:!1,favoriteSessionIds:[],sessionNicknames:{},fileExplorerWidth:220,refineEnabled:!0,refinePanel:null,promptLibraryOpen:!1,promptInsertRequest:null,dockSection:null,workDashboardTab:`todos`,hiddenChips:[],dockCustomizeOpen:!1,fleetMonitorOpen:!1,agentsMonitorOpen:!1,inspectorOpen:!1,inspectorTab:`fleet`,processMonitorOpen:!1,queuePanelOpen:!1,terminalOpen:!1,terminalCreateNonce:0,agentDetailModalId:null,sideContextBreakdownOpen:!1,selectedMailMessage:null,skillsState:{selectedSkill:null,navHistory:[],historyIndex:-1,detailOpen:!1,knownRefs:{},updateAvailableCount:0},selectActivity:t=>e({activeActivity:t}),toggleSidebar:()=>e(e=>({sidebarOpen:!e.sidebarOpen})),setSidebarOpen:t=>e({sidebarOpen:t}),setSettingsOpen:t=>e({settingsOpen:t}),setCurrentView:t=>e({currentView:a(t)}),showConfirm:t=>e({showConfirmDialog:!0,confirmInfo:t}),hideConfirm:()=>e({showConfirmDialog:!1,confirmInfo:null}),setPaletteOpen:t=>e({paletteOpen:t}),setShortcutsOpen:t=>e({shortcutsOpen:t}),setSearchOpen:t=>e({searchOpen:t,searchQuery:``,searchActiveMessageId:null}),setSearchQuery:t=>e({searchQuery:t}),setSearchActiveMessageId:t=>e({searchActiveMessageId:t}),requestScrollToMessage:t=>e(e=>({scrollTarget:{id:t,nonce:(e.scrollTarget?.nonce??0)+1}})),pushPrompt:t=>e(e=>{let n=t.trim();return n?{promptHistory:[n,...e.promptHistory.filter(e=>e!==n)].slice(0,50)}:e}),setSidebarWidth:t=>e({sidebarWidth:Math.max(240,Math.min(560,Math.round(t)))}),togglePin:t=>e(e=>({pinnedIds:e.pinnedIds.includes(t)?e.pinnedIds.filter(e=>e!==t):[...e.pinnedIds,t]})),unpinAll:()=>e({pinnedIds:[]}),toggleCompactMode:()=>e(e=>({compactMode:!e.compactMode})),setModelSwitcherOpen:t=>e({modelSwitcherOpen:t}),toggleFavoriteSession:t=>e(e=>({favoriteSessionIds:e.favoriteSessionIds.includes(t)?e.favoriteSessionIds.filter(e=>e!==t):[...e.favoriteSessionIds,t]})),setSessionNickname:(t,n)=>e(e=>{let r=n.trim(),i={...e.sessionNicknames};return r?i[t]=r:delete i[t],{sessionNicknames:i}}),setFileExplorerWidth:t=>e({fileExplorerWidth:Math.max(160,Math.min(400,Math.round(t)))}),toggleRefineEnabled:()=>e(e=>({refineEnabled:!e.refineEnabled})),setRefinePanel:t=>e({refinePanel:t}),setPromptLibraryOpen:t=>e({promptLibraryOpen:t}),requestPromptInsert:t=>e({promptInsertRequest:t,promptLibraryOpen:!1}),clearPromptInsert:()=>e({promptInsertRequest:null}),setDockSection:t=>e({dockSection:t}),setWorkDashboardTab:t=>e({workDashboardTab:t}),toggleDockSection:t=>e(e=>({dockSection:e.dockSection===t?null:t})),toggleChipHidden:t=>e(e=>{let n=e.hiddenChips.includes(t);return{hiddenChips:n?e.hiddenChips.filter(e=>e!==t):[...e.hiddenChips,t],dockSection:!n&&e.dockSection===t?null:e.dockSection}}),showDockChip:t=>e(e=>({hiddenChips:e.hiddenChips.filter(e=>e!==t)})),setDockCustomizeOpen:t=>e({dockCustomizeOpen:t}),setFleetMonitorOpen:t=>e({fleetMonitorOpen:t}),setAgentsMonitorOpen:t=>e({agentsMonitorOpen:t}),setInspectorOpen:t=>e({inspectorOpen:t}),setInspectorTab:t=>e({inspectorTab:t}),toggleInspector:()=>e(e=>({inspectorOpen:!e.inspectorOpen})),setProcessMonitorOpen:t=>e({processMonitorOpen:t}),setQueuePanelOpen:t=>e({queuePanelOpen:t}),setTerminalOpen:t=>e({terminalOpen:t}),toggleTerminal:()=>e(e=>({terminalOpen:!e.terminalOpen})),requestTerminalCreate:()=>e(e=>({terminalCreateNonce:e.terminalCreateNonce+1})),setAgentDetailModalId:t=>e({agentDetailModalId:t}),setSideContextBreakdownOpen:t=>e({sideContextBreakdownOpen:t}),setSkillsState:t=>e({skillsState:t}),setSelectedMailMessage:t=>e({selectedMailMessage:t})}),{name:`wrongstack-ui`,version:5,migrate:(e,t)=>{let n=e??{};return n.activeActivity=r(n.activeActivity),typeof n.sidebarWidth==`number`&&(n.sidebarWidth=Math.max(240,Math.min(560,n.sidebarWidth))),t<2&&(delete n.fleetDrawerOpen,delete n.agentsDrawerOpen),`currentView`in n&&(n.currentView=a(n.currentView)),`dockSection`in n&&(n.dockSection=s(n.dockSection)),n},merge:(e,t)=>{let n={...t,...e??{}};return n.activeActivity=r(n.activeActivity),n.currentView=a(n.currentView),n.dockSection=s(n.dockSection),n.sidebarWidth=Math.max(240,Math.min(560,n.sidebarWidth)),c()?{...n,...l({sidebarOpen:!1})}:n},partialize:e=>({sidebarOpen:e.sidebarOpen,activeActivity:e.activeActivity,sidebarWidth:e.sidebarWidth,promptHistory:e.promptHistory,pinnedIds:e.pinnedIds,compactMode:e.compactMode,favoriteSessionIds:e.favoriteSessionIds,sessionNicknames:e.sessionNicknames,fileExplorerWidth:e.fileExplorerWidth,refineEnabled:e.refineEnabled,hiddenChips:e.hiddenChips,workDashboardTab:e.workDashboardTab,inspectorOpen:e.inspectorOpen,inspectorTab:e.inspectorTab,skillsState:e.skillsState,currentView:e.currentView,dockSection:e.dockSection})}));function d(e={}){u.setState(l(e))}export{u as n,d as t};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-QTnfLwEv.js";import{di as t}from"./vendor-CyLvG8N0.js";import{t as n}from"./session-store-P-JnaPPK.js";function r(e){typeof requestAnimationFrame==`function`?requestAnimationFrame(e):queueMicrotask(e)}var i=new class{pending=new Map;scheduled=!1;push(e,t,n){if(!t)return;let r=this.pending.get(e);r?(r.buffer+=t,r.flush=n):this.pending.set(e,{buffer:t,flush:n}),this.schedule()}schedule(){this.scheduled||(this.scheduled=!0,r(()=>{this.scheduled=!1,this.drain()}))}drain(){if(this.pending.size===0)return;let e=Array.from(this.pending.entries());this.pending.clear();for(let[t,n]of e)n.buffer&&n.flush(t,n.buffer)}drop(e){this.pending.delete(e)}dropAll(){this.pending.clear()}flush(e){let t=this.pending.get(e);t&&(this.pending.delete(e),t.buffer&&t.flush(e,t.buffer))}flushAll(){this.drain()}};function a(e){return{type:`provider.clear_models`,payload:{providerId:e}}}function o(e,t){return{type:`provider.undo_clear`,payload:{providerId:e,previousModels:[...t]}}}function s(e){return{type:`provider.update`,payload:e}}function c(e){return Math.max(0,Math.min(100,Math.round((typeof e==`number`&&Number.isFinite(e)?e:0)*100)))}function l(e,t=!1){if(t&&e.target){if(e.kind===`agent:tool`||e.kind===`tool:executed`||e.kind===`tool:started`)return`tool`;if(e.source===`leader`||e.source===`coordinator`)return`coordinator`;if(e.kind.startsWith(`provider:`))return`provider`;if(e.kind.startsWith(`mailbox:`))return`mailbox`}switch(e.kind){case`provider:call`:case`provider:delta`:case`provider:response`:return`provider`;case`agent:spawned`:case`agent:tool`:case`agent:status`:case`agent:text`:case`agent:ctx`:case`budget:warning`:case`budget:extended`:return`agent`;case`tool:started`:case`tool:executed`:case`tool:progress`:return`tool`;case`mailbox:send`:case`mailbox:deliver`:return`mailbox`;case`collab:event`:return`system`;case`session:start`:case`session:end`:case`iteration:start`:case`iteration:end`:case`eternal:iteration`:case`fleet:snapshot`:return`session`;case`context:compacted`:case`context:repaired`:case`cost:update`:return`system`;case`error`:return`error`;default:return`system`}}function u(e){switch(e){case`provider:call`:case`provider:delta`:case`agent:tool`:case`tool:started`:case`tool:progress`:case`iteration:start`:case`agent:text`:return`streaming`;case`agent:status`:case`iteration:end`:return`completed`;case`error`:return`error`;case`tool:executed`:return`completed`;case`session:end`:return`idle`;default:return`active`}}var d=0;function f(){return`viz_${Date.now()}_${++d}`}function p(e,t){if(e===t)return!0;if(!e||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n){let n=e[r],i=t[r];if(n!==i){if(n==null||i==null||typeof n!=typeof i)return!1;if(typeof n==`object`){if(Array.isArray(n)||Array.isArray(i)||!p(n,i))return!1;continue}return!1}}return!0}var m={provider:`hsl(var(--info))`,agent:`hsl(var(--primary))`,tool:`hsl(var(--warning))`,mailbox:`hsl(var(--success))`,session:`hsl(var(--primary))`,system:`hsl(var(--muted-foreground))`,success:`hsl(var(--success))`,error:`hsl(var(--destructive))`},h={"provider:call":`hsl(var(--info))`,"provider:delta":`hsl(var(--primary))`,"agent:tool":`hsl(var(--warning))`,"mailbox:send":`hsl(var(--success))`,default:`hsl(var(--muted-foreground))`},g=t()((e,t)=>({events:[],nodes:new Map,edges:new Map,isActive:!1,maxEvents:2e3,counters:{totalTokens:0,totalCost:0,totalToolCalls:0,activeAgents:0,completedTasks:0,errors:0,mailboxMessages:0},pushEvent:t=>e(e=>{let n=[{...t,id:t.id??f(),timestamp:t.timestamp||Date.now()},...e.events];n.length>e.maxEvents&&(n.length=e.maxEvents);let r=Date.now(),i=t.source,a={id:i,kind:l(t),label:t.label,status:u(t.kind),activity:1,color:t.color??m[l(t)],lastSeenAt:r},o=e.nodes.get(i),s=o?{...o,...a}:a,c=!p(o,s),d,h=!1,g;if(t.target){g=t.target;let n={id:g,kind:l(t,!0),label:g,status:u(t.kind),activity:.8,color:t.color??m[l(t,!0)],lastSeenAt:r},i=e.nodes.get(g);d=i?{...i,...n}:n,h=!p(i,d)}let _,v=!1,y;if(t.target&&i){y=`${i}->${t.target}`;let n=e.edges.get(y),a={id:y,source:i,target:t.target,kind:t.kind,label:t.label,intensity:n?Math.min(1,n.intensity+.3):.7,color:t.color??m[l(t)]??m.agent,lastActiveAt:r,totalMagnitude:(n?.totalMagnitude??0)+(t.magnitude??0)};_=n?{...n,...a}:a,v=!p(n,_)}let b=e.nodes,x=e.edges;return(c||h)&&(b=new Map(e.nodes),c&&b.set(i,s),h&&d&&g&&b.set(g,d)),v&&_&&y&&(x=new Map(e.edges),x.set(y,_)),{events:n,nodes:b,edges:x}}),upsertNode:t=>e(e=>{let n=new Map(e.nodes),r=n.get(t.id);return n.set(t.id,{...r,...t,lastSeenAt:t.lastSeenAt===void 0?Date.now():t.lastSeenAt}),{nodes:n}}),removeNode:t=>e(e=>{let n=new Map(e.nodes);n.delete(t);let r=new Map(e.edges);for(let[e,n]of r)(n.source===t||n.target===t)&&r.delete(e);return{nodes:n,edges:r}}),upsertEdge:t=>e(e=>{let n=new Map(e.edges),r=n.get(t.id);return n.set(t.id,{...r,...t,lastActiveAt:t.lastActiveAt===void 0?Date.now():t.lastActiveAt,intensity:t.intensity??r?.intensity??.5,color:t.color??h[t.kind]??h.default,totalMagnitude:(r?.totalMagnitude??0)+(t.totalMagnitude??0)}),{edges:n}}),removeEdge:t=>e(e=>{let n=new Map(e.edges);return n.delete(t),{edges:n}}),clear:()=>e({events:[],nodes:new Map,edges:new Map,counters:{totalTokens:0,totalCost:0,totalToolCalls:0,activeAgents:0,completedTasks:0,errors:0,mailboxMessages:0}}),setActive:t=>e({isActive:t}),decayActivity:()=>e(e=>{let t=new Map(e.nodes);for(let[e,n]of t)if(n.activity>=.01){let r=n.activity*.92;t.set(e,{...n,activity:r<.01?0:r})}let n=new Map(e.edges);for(let[e,t]of n)if(t.intensity>=.01){let r=t.intensity*.9;n.set(e,{...t,intensity:r<.01?0:r})}return{nodes:t,edges:n}}),prunesStale:t=>e(e=>{let n=Date.now()-t,r=new Map(e.nodes);for(let[e,t]of r)t.lastSeenAt<n&&t.status!==void 0&&t.status!==`active`&&r.delete(e);let i=new Map(e.edges);for(let[e,t]of i)t.lastActiveAt<n&&i.delete(e);return{nodes:r,edges:i,events:e.events.filter(e=>e.timestamp>n)}})}));function _(e,t){switch(e){case`provider.text_delta`:{let e=t.text??``;return{id:f(),kind:`provider:delta`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,60),magnitude:e.length,data:{text:e},color:m.provider,flowGroup:`provider`}}case`provider.response`:{let e=t.usage,n=(e?.input??0)+(e?.output??0);return{id:f(),kind:`provider:response`,timestamp:Date.now(),source:`provider`,target:`leader`,label:`${(e?.input??0).toLocaleString(`en-US`)} in / ${(e?.output??0).toLocaleString(`en-US`)} out`,magnitude:n,data:t,color:m.provider,flowGroup:`provider`}}case`provider.stream_error`:{let e=t.message??`Provider stream error`;return{id:f(),kind:`error`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,80),magnitude:1,data:t,color:m.error,flowGroup:`provider`}}case`tool.started`:{let e=t.name??`tool`;return{id:f(),kind:`tool:started`,timestamp:Date.now(),source:e,target:`filesystem`,label:e,magnitude:1,data:t,color:m.tool,flowGroup:`tool:${e}`}}case`tool.executed`:{let e=t.name??`tool`,n=t.ok??!0;return{id:f(),kind:`tool:executed`,timestamp:Date.now(),source:e,target:`leader`,label:`${e} ${n?`✓`:`✗`} (${t.durationMs??0}ms)`,magnitude:t.durationMs??0,data:t,color:n?m.tool:m.error,flowGroup:`tool:${e}`}}case`tool.progress`:{let e=t.name??`tool`,n=t.event?.text??``;return{id:f(),kind:`tool:progress`,timestamp:Date.now(),source:e,target:`leader`,label:n.slice(0,60)||e,magnitude:n.length,data:t,color:m.tool,flowGroup:`tool:${e}`}}case`tool.loop_detected`:{let e=t.tools??``,n=t.kind??`loop`;return{id:f(),kind:`error`,timestamp:Date.now(),source:e||n,target:`leader`,label:`${n} loop x${t.repeatCount??0}`,magnitude:t.repeatCount??1,data:t,color:m.error,flowGroup:`tool`}}case`delegate.started`:{let e=t.target??`delegate`,n=t.task??``;return{id:f(),kind:`agent:status`,timestamp:Date.now(),source:`leader`,target:e,label:n.slice(0,80)||`Delegating to ${e}`,magnitude:1,data:t,color:m.agent,flowGroup:`delegate:${e}`}}case`delegate.completed`:{let e=t.subagentId??t.target??`delegate`,n=t.ok??!1;return{id:f(),kind:n?`agent:status`:`error`,timestamp:Date.now(),source:e,target:`leader`,label:(t.summary??t.status??`delegate completed`).slice(0,80),magnitude:t.durationMs??1,data:t,color:n?m.agent:m.error,flowGroup:`delegate:${e}`}}case`subagent.event`:{let e=t.kind,n=t.subagentId??`unknown`,r=t.name??n;switch(e){case`spawned`:return{id:f(),kind:`agent:spawned`,timestamp:Date.now(),source:n,target:`session`,label:`${r} spawned`,magnitude:1,data:t,color:m.agent,flowGroup:`agent:${n}`};case`tool_executed`:{let e=t.toolName??`tool`,r=t.ok??!0;return{id:f(),kind:`agent:tool`,timestamp:Date.now(),source:n,target:e,label:e,magnitude:t.durationMs??0,data:t,color:r?m.tool:m.error,flowGroup:`agent:${n}`}}case`task_completed`:{let e=t.status??`completed`;return{id:f(),kind:`agent:status`,timestamp:Date.now(),source:n,target:`session`,label:`${r} ${e}`,magnitude:1,data:t,color:e===`success`?m.success:m.error,flowGroup:`agent:${n}`}}case`ctx_pct`:return{id:f(),kind:`agent:ctx`,timestamp:Date.now(),source:n,target:`session`,label:`ctx ${c(t.load)}%`,magnitude:t.tokens??0,data:t,color:m.agent,flowGroup:`agent:${n}`};case`iteration_summary`:return{id:f(),kind:`agent:text`,timestamp:Date.now(),source:n,target:`session`,label:(t.partialText??``).slice(0,80)||`iter ${t.iteration??0}`,magnitude:t.costUsd??0,data:t,color:m.agent,flowGroup:`agent:${n}`};case`budget_extended`:return{id:f(),kind:`budget:extended`,timestamp:Date.now(),source:n,target:`session`,label:`${r} extended budget`,magnitude:t.totalExtensions??1,data:t,color:m.tool,flowGroup:`agent:${n}`};case`budget_warning`:return{id:f(),kind:`budget:warning`,timestamp:Date.now(),source:n,target:`session`,label:`${r} hit ${t.budgetKind??`budget`} ${t.used??0}/${t.limit??0}`,magnitude:t.used??1,data:t,color:m.error,flowGroup:`agent:${n}`}}return null}case`mailbox.event`:{let e=t.event,n=t.from??`?`,r=t.to??`?`,i=t.subject??``,a=e===`mailbox.sent`;return{id:f(),kind:a?`mailbox:send`:`mailbox:deliver`,timestamp:Date.now(),source:n,target:r,label:i||(a?`→ ${r}`:`← ${n}`),magnitude:1,data:t,color:m.mailbox,flowGroup:`mailbox`}}case`iteration.started`:{let e=t.index??0;return{id:f(),kind:`iteration:start`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e}`,magnitude:e,data:t,color:m.agent,flowGroup:`iteration`}}case`iteration.completed`:{let e=t.index??0;return{id:f(),kind:`iteration:end`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e} done`,magnitude:e,data:t,color:m.session,flowGroup:`iteration`}}case`ctx.pct`:{let e=t.tokens??0;return{id:f(),kind:`agent:ctx`,timestamp:Date.now(),source:`leader`,target:`session`,label:`ctx ${c(t.load)}%`,magnitude:e,data:t,color:m.agent,flowGroup:`leader`}}case`error`:{let e=t.message??`Error`;return{id:f(),kind:`error`,timestamp:Date.now(),source:t.phase??`system`,target:`session`,label:e,magnitude:1,data:t,color:m.error,flowGroup:`error`}}case`context.compacted`:return{id:f(),kind:`context:compacted`,timestamp:Date.now(),source:`system`,target:`session`,label:`Compacted: ${(t.saved??0).toLocaleString(`en-US`)} tokens`,magnitude:t.saved??0,data:t,color:`hsl(220, 60%, 50%)`,flowGroup:`context`};case`compaction.failed`:{let e=t.message??`Compaction failed`;return{id:f(),kind:`error`,timestamp:Date.now(),source:`compactor`,target:`session`,label:e.slice(0,80),magnitude:t.tokens??1,data:t,color:m.error,flowGroup:`context`}}case`context.repaired`:return{id:f(),kind:`context:repaired`,timestamp:Date.now(),source:`system`,target:`session`,label:`Repaired: ${t.removedMessages??0} msgs`,magnitude:t.removedMessages??0,data:t,color:`hsl(220, 60%, 50%)`,flowGroup:`context`};case`session.start`:{let e=t.sessionId??`?`,n=t.projectName??``;return{id:f(),kind:`session:start`,timestamp:Date.now(),source:`session`,target:`leader`,label:n||e.slice(0,12),magnitude:1,data:t,color:m.session,flowGroup:`session`}}case`sessions.status_update`:{let e=t.sessions??[];return{id:f(),kind:`fleet:snapshot`,timestamp:Date.now(),source:`system`,target:`session`,label:`${e.length} session(s)`,magnitude:e.length,data:t,color:m.system,flowGroup:`fleet`}}default:return null}}function v(e){let t=e.payload?.sessionId,r=n.getState().session?.id;return!t||!r||t===r}function y(e){let t=_(e.type,e.payload);t&&(g.getState().pushEvent(t),g.getState().setActive(!0))}function b(e,t,n){let r=e.payload??{};for(let[e,n]of Object.entries(t)){let t=r[e];if(!x(t,n))return null}if(n)for(let[e,t]of Object.entries(n)){let n=r[e];if(n!=null&&!x(n,t))return null}return r}function x(e,t){switch(t){case`string`:return typeof e==`string`;case`number`:return typeof e==`number`;case`boolean`:return typeof e==`boolean`;case`object`:return typeof e==`object`&&!!e&&!Array.isArray(e);case`array`:return Array.isArray(e);default:return!1}}function S(e){try{return new URL(e).searchParams.get(`token`)}catch{return null}}function C(){if(typeof window>`u`||!window.location)return null;try{let e=window.location.search??``;return new URLSearchParams(e).get(`token`)}catch{return null}}function w(e){try{let t=new URL(e);return t.searchParams.delete(`token`),t.toString()}catch{return e}}function T(){if(!(typeof window>`u`||!window.location||!window.history?.replaceState))try{let e=window.location.href;if(!e)return;let t=new URL(e);if(!t.searchParams.has(`token`))return;t.searchParams.delete(`token`),window.history.replaceState(window.history.state,document.title,t.toString())}catch{}}var E=3457;function D(){if(typeof document>`u`)return E;let e=document.querySelector(`meta[name="wrongstack-ws-port"]`)?.getAttribute(`content`),t=e?Number.parseInt(e,10):NaN;return Number.isFinite(t)&&t>0&&t<65536?t:E}function O(){if(typeof document>`u`)return null;let e=document.querySelector(`meta[name="wrongstack-ws-url"]`)?.getAttribute(`content`)?.trim();if(!e)return null;try{let t=new URL(e);if(t.protocol!==`ws:`&&t.protocol!==`wss:`)return null;let n=C();return n&&!t.searchParams.has(`token`)&&t.searchParams.set(`token`,n),t.toString()}catch{return null}}function k(){let e=O();if(e)return e;let t=D();if(typeof window>`u`||!window.location?.hostname)return`ws://127.0.0.1:${t}`;let n=window.location.protocol===`https:`?`wss`:`ws`,r=window.location.hostname.toLowerCase(),i=C(),a=i?`?token=${encodeURIComponent(i)}`:``;return r===`localhost`||r===`127.0.0.1`||r===`[::1]`||r===`::1`?`${n}://127.0.0.1:${t}${a}`:`${n}://${window.location.hostname}:${t}${a}`}function A(){if(typeof window>`u`||!window.location?.hostname)return`http://127.0.0.1:3456`;let e=window.location.protocol===`https:`?`https`:`http`,t=window.location.hostname.toLowerCase(),n=window.location.port?`:${window.location.port}`:``;return t===`localhost`||t===`127.0.0.1`||t===`[::1]`||t===`::1`?`${e}://127.0.0.1${n}`:`${e}://${window.location.hostname}${n}`}var j=e({WrongStackWebSocketClient:()=>N,getWSClient:()=>F});function M(e){try{let t=new URL(e),n=new URL(A());return t.hostname===n.hostname}catch{return!0}}var N=class e{ws=null;url;handlers=new Map;reconnectAttempts=0;maxReconnectAttempts=10;reconnectDelay=1e3;shouldReconnect=!0;reconnectTimer=null;connectPromise=null;socketGeneration=0;messageQueue=[];static MAX_QUEUED_MESSAGES=1e3;pendingConfirms=new Map;sessionId=null;lastErrorText;statusListeners=new Set;currentStatus={state:`connecting`};onStatus(e){return this.statusListeners.add(e),e(this.currentStatus),()=>this.statusListeners.delete(e)}get status(){return this.currentStatus}setStatus(e){this.currentStatus=e;for(let t of this.statusListeners)try{t(e)}catch{}}constructor(e){this.url=e??k()}withSession(e){return this.sessionId?{...e,sessionId:this.sessionId}:e}async ensureAuthCookie(){if(typeof window>`u`)return;if(document.cookie.split(`;`).some(e=>e.trim().startsWith(`ws_token=`))){M(this.url)&&(this.url=w(this.url)),T();return}let e=S(this.url)??C();if(!e)return;let t=A()+`/ws-auth?token=${encodeURIComponent(e)}`;try{let e=await fetch(t,{method:`GET`,credentials:`same-origin`,cache:`no-store`});e.ok?(M(this.url)&&(this.url=w(this.url)),T()):console.warn(JSON.stringify({level:`warn`,event:`ws_client.ws_auth_failed`,status:e.status,timestamp:new Date().toISOString()}))}catch(e){console.warn(JSON.stringify({level:`warn`,event:`ws_client.ws_auth_error`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}}connect(){return this.ws?.readyState===WebSocket.OPEN?Promise.resolve():(this.connectPromise||=this.openSocket().finally(()=>{this.connectPromise=null}),this.connectPromise)}async openSocket(){return await this.ensureAuthCookie(),new Promise((e,t)=>{if(this.ws?.readyState===WebSocket.OPEN){e();return}this.setStatus({state:`connecting`});let n=++this.socketGeneration;try{let r=new WebSocket(this.url);this.ws=r,r.binaryType=`arraybuffer`;let i=setTimeout(()=>{if(this.ws===r){try{r.onopen=null,r.onmessage=null,r.onerror=null,r.onclose=null,r.close()}catch{}this.ws===r&&(this.ws=null)}t(Error(`Connection timeout`))},1e4),a=!1;r.onopen=()=>{this.socketGeneration===n&&(clearTimeout(i),a=!0,this.reconnectAttempts=0,this.lastErrorText=void 0,this.setStatus({state:`open`}),this.flushMessageQueue(),e())},r.onmessage=e=>{if(this.socketGeneration===n)try{let t=JSON.parse(e.data);this.handleMessage(t)}catch(e){console.error(JSON.stringify({level:`error`,event:`ws_client.message_parse_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}},r.onerror=e=>{this.socketGeneration===n&&(console.error(JSON.stringify({level:`error`,event:`ws_client.error`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()})),this.lastErrorText=`Connection error (see browser devtools)`,a||(clearTimeout(i),t(Error(this.lastErrorText)),this.attemptReconnect()))},r.onclose=e=>{if(this.socketGeneration===n){if(!a){clearTimeout(i);let n=e.reason||`Closed with code ${e.code}`;this.lastErrorText=n,t(Error(n)),this.attemptReconnect();return}e.reason&&!this.lastErrorText?this.lastErrorText=`${e.reason} (code ${e.code})`:!this.lastErrorText&&e.code!==1e3&&(this.lastErrorText=`Closed with code ${e.code}`),this.attemptReconnect()}}}catch(e){if(this.socketGeneration!==n)return;this.lastErrorText=e instanceof Error?e.message:String(e),this.setStatus({state:`closed`,error:this.lastErrorText}),t(e)}})}attemptReconnect(){if(!this.shouldReconnect||this.reconnectAttempts>=this.maxReconnectAttempts){this.reconnectTimer=null,this.setStatus({state:`closed`,error:this.lastErrorText??`Disconnected`});return}this.reconnectAttempts++;let e=Math.min(this.reconnectDelay*2**(this.reconnectAttempts-1),3e4),t=Date.now()+e;this.setStatus({state:`reconnecting`,attempt:this.reconnectAttempts,nextRetryAt:t,lastError:this.lastErrorText}),this.reconnectTimer=setTimeout(async()=>{if(this.reconnectTimer=null,this.shouldReconnect)try{await this.connect()}catch(e){console.error(JSON.stringify({level:`error`,event:`ws_client.reconnect_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}},e)}retryNow(){this.currentStatus.state!==`open`&&(this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.reconnectAttempts=0,this.connect().catch(e=>console.warn(JSON.stringify({level:`warn`,event:`ws_client.reconnect_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))))}flushMessageQueue(){for(;this.messageQueue.length>0;){let e=this.messageQueue.shift();e&&this.send(e)}}handleMessage(e){if(e.type===`tool.confirm_needed`){let t=e.payload;this.pendingConfirms.set(t.id,{}),this.emit(e);return}if(e.type===`session.start`){let t=e.payload;this.sessionId=t.sessionId}this.emit(e)}emit(e){let t=this.handlers.get(e.type);if(t)for(let n of t)try{n(e)}catch(t){console.error(JSON.stringify({level:`error`,event:`ws_client.handler_error`,messageType:e.type,message:t instanceof Error?t.message:String(t),timestamp:new Date().toISOString()}))}}send(t){if((t.type===`context.clear`||t.type===`session.new`||t.type===`session.resume`)&&i.dropAll(),this.ws?.readyState===WebSocket.OPEN)this.ws.send(JSON.stringify(t));else{if(this.messageQueue.length>=e.MAX_QUEUED_MESSAGES){let t=this.messageQueue.shift();t&&console.warn(JSON.stringify({level:`warn`,event:`ws_client.message_queue_full`,cap:e.MAX_QUEUED_MESSAGES,droppedType:t.type,timestamp:new Date().toISOString()}))}this.messageQueue.push(t)}}on(e,t){let n=this.handlers.get(e);return n||(n=new Set,this.handlers.set(e,n)),n.add(t),()=>n?.delete(t)}off(e,t){this.handlers.get(e)?.delete(t)}sendMessage(e,t){let n=`msg_${Date.now()}_${crypto.randomUUID().slice(0,8)}`;return this.send({type:`user_message`,payload:this.withSession({id:n,content:e,timestamp:Date.now(),...t?{imageBase64:t}:{}})}),n}sendAbort(){this.send({type:`abort`,payload:this.withSession({})})}getGitInfo(){this.send({type:`git.info`})}getGitChanges(){this.send({type:`git.changes`})}getGitDiff(e){this.send({type:`git.diff`,payload:{path:e}})}sendConfirm(e,t){this.pendingConfirms.has(e)&&this.pendingConfirms.delete(e),this.send({type:`tool.confirm_result`,payload:this.withSession({id:e,decision:t})})}switchModel(e,t){this.send({type:`model.switch`,payload:{provider:e,model:t}})}newSession(){this.send({type:`session.new`,payload:this.withSession({})})}listProviders(){this.send({type:`providers.list`})}listProviderModels(e){this.send({type:`provider.models`,payload:{providerId:e}})}listSavedProviders(){this.send({type:`providers.saved`})}addKey(e,t,n){this.send({type:`key.add`,payload:{providerId:e,label:t,apiKey:n}})}updateKey(e,t,n){this.send({type:`key.update`,payload:{providerId:e,label:t,apiKey:n}})}deleteKey(e,t){this.send({type:`key.delete`,payload:{providerId:e,label:t}})}setActiveKey(e,t){this.send({type:`key.set_active`,payload:{providerId:e,label:t}})}addProvider(e,t,n,r){this.send({type:`provider.add`,payload:{id:e,family:t,baseUrl:n,apiKey:r}})}removeProvider(e){this.send({type:`provider.remove`,payload:{providerId:e}})}startOAuth(e){this.send({type:`auth.oauth.start`,payload:{kind:e}})}submitOAuthCode(e,t){this.send({type:`auth.oauth.code`,payload:{kind:e,input:t}})}cancelOAuth(e){this.send({type:`auth.oauth.cancel`,payload:{kind:e}})}probeProvider(e,t){this.send({type:`provider.probe`,payload:t===void 0?{providerId:e}:{providerId:e,timeoutMs:t}})}clearProviderModels(e){this.send(a(e))}undoProviderClear(e,t){this.send(o(e,t))}updateProvider(e){this.send(s(e))}clearContext(){this.send({type:`context.clear`,payload:this.withSession({})})}compactContext(e=!1){this.send({type:`context.compact`,payload:this.withSession({aggressive:e})})}repairContext(){this.send({type:`context.repair`,payload:this.withSession({})})}debugContext(){this.send({type:`context.debug`,payload:this.withSession({})})}listContextModes(){this.send({type:`context.modes.list`,payload:this.withSession({})})}switchContextMode(e){this.send({type:`context.mode.switch`,payload:this.withSession({id:e})})}createContextMode(e){this.send({type:`context.mode.create`,payload:this.withSession(e)})}updateContextMode(e,t){this.send({type:`context.mode.update`,payload:this.withSession({id:e,...t})})}deleteContextMode(e){this.send({type:`context.mode.delete`,payload:this.withSession({id:e})})}switchAutonomy(e){this.send({type:`autonomy.switch`,payload:{mode:e}})}updatePrefs(e){this.send({type:`prefs.update`,payload:e})}getPrefs(){this.send({type:`prefs.get`})}listTools(){this.send({type:`tools.list`})}listMemory(){this.send({type:`memory.list`})}remember(e,t){this.send({type:`memory.remember`,payload:{text:e,scope:t}})}forget(e,t){this.send({type:`memory.forget`,payload:{text:e,scope:t}})}listMcpServers(){this.send({type:`mcp.list`})}addMcpServer(e){this.send({type:`mcp.add`,payload:e})}removeMcpServer(e){this.send({type:`mcp.remove`,payload:{name:e}})}updateMcpServer(e){this.send({type:`mcp.update`,payload:e})}wakeMcpServer(e){this.send({type:`mcp.wake`,payload:{name:e}})}sleepMcpServer(e){this.send({type:`mcp.sleep`,payload:{name:e}})}discoverMcpServer(e){this.send({type:`mcp.discover`,payload:{name:e}})}enableMcpServer(e){this.send({type:`mcp.enable`,payload:{name:e}})}disableMcpServer(e){this.send({type:`mcp.disable`,payload:{name:e}})}restartMcpServer(e){this.send({type:`mcp.restart`,payload:{name:e}})}listSkills(){this.send({type:`skills.list`})}getSkillContent(e,t){this.send({type:`skills.content`,payload:{name:e,source:t}})}installSkill(e,t){this.send({type:`skills.install`,payload:{ref:e,global:t}})}uninstallSkill(e,t){this.send({type:`skills.uninstall`,payload:{name:e,global:t}})}checkForUpdates(e,t){this.send({type:`skills.update`,payload:{name:e,global:t}})}createSkill(e,t,n){this.send({type:`skills.create`,payload:{name:e,description:t,scope:n}})}editSkill(e,t){this.send({type:`skills.edit`,payload:{name:e,body:t}})}exportAllSkills(){this.send({type:`skills.export`})}getDiag(){this.send({type:`diag.get`,payload:this.withSession({})})}getStats(){this.send({type:`stats.get`,payload:this.withSession({})})}saveSession(){this.send({type:`session.save`,payload:this.withSession({})})}resumeSessionById(e){this.send({type:`session.resume`,payload:this.withSession({id:e})})}listModes(){this.send({type:`modes.list`})}switchMode(e){this.send({type:`mode.switch`,payload:{id:e}})}listFiles(e,t,n){this.send({type:`files.list`,payload:{query:e,limit:t,path:n}})}requestCompletion(e){this.send({type:`completion.request`,payload:e})}getTodos(){this.send({type:`todos.get`,payload:this.withSession({})})}clearTodos(){this.send({type:`todos.clear`,payload:this.withSession({})})}removeTodo(e){let t=typeof e==`number`?{index:e}:{id:e};this.send({type:`todos.remove`,payload:this.withSession(t)})}updateTodoStatus(e,t){this.send({type:`todo.update`,payload:this.withSession({id:e,status:t})})}getTasks(){this.send({type:`tasks.get`,payload:this.withSession({})})}updateTaskStatus(e,t){this.send({type:`task.update`,payload:this.withSession({id:e,status:t})})}getPlan(){this.send({type:`plan.get`,payload:this.withSession({})})}updatePlanItem(e,t){this.send({type:`plan.item.update`,payload:this.withSession({target:e,status:t})})}listSessions(e=50){this.send({type:`sessions.list`,payload:this.withSession({limit:e})})}deleteSession(e){this.send({type:`session.delete`,payload:{id:e}})}renameSession(e,t){this.send({type:`session.rename`,payload:{id:e,name:t}})}setWorkingDir(e){this.send({type:`working_dir.set`,payload:{path:e}})}resumeSession(e){this.send({type:`session.resume`,payload:this.withSession({id:e})})}ping(){this.send({type:`ping`})}refineModel(e){this.send({type:`model.refine`,payload:{text:e}})}disconnect(){this.shouldReconnect=!1,this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.messageQueue.length=0,this.ws?.close(),this.ws=null}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}get currentSessionId(){return this.sessionId}},P=null;function F(e){return P||=new N(e),P}export{y as a,_ as c,v as i,i as l,j as n,b as o,k as r,g as s,F as t};
1
+ import{n as e}from"./rolldown-runtime-QTnfLwEv.js";import{di as t}from"./vendor-CyLvG8N0.js";import{t as n}from"./session-store-P-JnaPPK.js";function r(e){typeof requestAnimationFrame==`function`?requestAnimationFrame(e):queueMicrotask(e)}var i=new class{pending=new Map;scheduled=!1;push(e,t,n){if(!t)return;let r=this.pending.get(e);r?(r.buffer+=t,r.flush=n):this.pending.set(e,{buffer:t,flush:n}),this.schedule()}schedule(){this.scheduled||(this.scheduled=!0,r(()=>{this.scheduled=!1,this.drain()}))}drain(){if(this.pending.size===0)return;let e=Array.from(this.pending.entries());this.pending.clear();for(let[t,n]of e)n.buffer&&n.flush(t,n.buffer)}drop(e){this.pending.delete(e)}dropAll(){this.pending.clear()}flush(e){let t=this.pending.get(e);t&&(this.pending.delete(e),t.buffer&&t.flush(e,t.buffer))}flushAll(){this.drain()}};function a(e){return{type:`provider.clear_models`,payload:{providerId:e}}}function o(e,t){return{type:`provider.undo_clear`,payload:{providerId:e,previousModels:[...t]}}}function s(e){return{type:`provider.update`,payload:e}}function c(e){return Math.max(0,Math.min(100,Math.round((typeof e==`number`&&Number.isFinite(e)?e:0)*100)))}function l(e,t=!1){if(t&&e.target){if(e.kind===`agent:tool`||e.kind===`tool:executed`||e.kind===`tool:started`)return`tool`;if(e.source===`leader`||e.source===`coordinator`)return`coordinator`;if(e.kind.startsWith(`provider:`))return`provider`;if(e.kind.startsWith(`mailbox:`))return`mailbox`}switch(e.kind){case`provider:call`:case`provider:delta`:case`provider:response`:return`provider`;case`agent:spawned`:case`agent:tool`:case`agent:status`:case`agent:text`:case`agent:ctx`:case`budget:warning`:case`budget:extended`:return`agent`;case`tool:started`:case`tool:executed`:case`tool:progress`:return`tool`;case`mailbox:send`:case`mailbox:deliver`:return`mailbox`;case`collab:event`:return`system`;case`session:start`:case`session:end`:case`iteration:start`:case`iteration:end`:case`eternal:iteration`:case`fleet:snapshot`:return`session`;case`context:compacted`:case`context:repaired`:case`cost:update`:return`system`;case`error`:return`error`;default:return`system`}}function u(e){switch(e){case`provider:call`:case`provider:delta`:case`agent:tool`:case`tool:started`:case`tool:progress`:case`iteration:start`:case`agent:text`:return`streaming`;case`agent:status`:case`iteration:end`:return`completed`;case`error`:return`error`;case`tool:executed`:return`completed`;case`session:end`:return`idle`;default:return`active`}}var d=0;function f(){return`viz_${Date.now()}_${++d}`}function p(e,t){if(e===t)return!0;if(!e||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n){let n=e[r],i=t[r];if(n!==i){if(n==null||i==null||typeof n!=typeof i)return!1;if(typeof n==`object`){if(Array.isArray(n)||Array.isArray(i)||!p(n,i))return!1;continue}return!1}}return!0}var m={provider:`hsl(var(--info))`,agent:`hsl(var(--primary))`,tool:`hsl(var(--warning))`,mailbox:`hsl(var(--success))`,session:`hsl(var(--primary))`,system:`hsl(var(--muted-foreground))`,success:`hsl(var(--success))`,error:`hsl(var(--destructive))`},h={"provider:call":`hsl(var(--info))`,"provider:delta":`hsl(var(--primary))`,"agent:tool":`hsl(var(--warning))`,"mailbox:send":`hsl(var(--success))`,default:`hsl(var(--muted-foreground))`},g=t()((e,t)=>({events:[],nodes:new Map,edges:new Map,isActive:!1,maxEvents:2e3,counters:{totalTokens:0,totalCost:0,totalToolCalls:0,activeAgents:0,completedTasks:0,errors:0,mailboxMessages:0},pushEvent:t=>e(e=>{let n=[{...t,id:t.id??f(),timestamp:t.timestamp||Date.now()},...e.events];n.length>e.maxEvents&&(n.length=e.maxEvents);let r=Date.now(),i=t.source,a={id:i,kind:l(t),label:t.label,status:u(t.kind),activity:1,color:t.color??m[l(t)],lastSeenAt:r},o=e.nodes.get(i),s=o?{...o,...a}:a,c=!p(o,s),d,h=!1,g;if(t.target){g=t.target;let n={id:g,kind:l(t,!0),label:g,status:u(t.kind),activity:.8,color:t.color??m[l(t,!0)],lastSeenAt:r},i=e.nodes.get(g);d=i?{...i,...n}:n,h=!p(i,d)}let _,v=!1,y;if(t.target&&i){y=`${i}->${t.target}`;let n=e.edges.get(y),a={id:y,source:i,target:t.target,kind:t.kind,label:t.label,intensity:n?Math.min(1,n.intensity+.3):.7,color:t.color??m[l(t)]??m.agent,lastActiveAt:r,totalMagnitude:(n?.totalMagnitude??0)+(t.magnitude??0)};_=n?{...n,...a}:a,v=!p(n,_)}let b=e.nodes,x=e.edges;return(c||h)&&(b=new Map(e.nodes),c&&b.set(i,s),h&&d&&g&&b.set(g,d)),v&&_&&y&&(x=new Map(e.edges),x.set(y,_)),{events:n,nodes:b,edges:x}}),upsertNode:t=>e(e=>{let n=new Map(e.nodes),r=n.get(t.id);return n.set(t.id,{...r,...t,lastSeenAt:t.lastSeenAt===void 0?Date.now():t.lastSeenAt}),{nodes:n}}),removeNode:t=>e(e=>{let n=new Map(e.nodes);n.delete(t);let r=new Map(e.edges);for(let[e,n]of r)(n.source===t||n.target===t)&&r.delete(e);return{nodes:n,edges:r}}),upsertEdge:t=>e(e=>{let n=new Map(e.edges),r=n.get(t.id);return n.set(t.id,{...r,...t,lastActiveAt:t.lastActiveAt===void 0?Date.now():t.lastActiveAt,intensity:t.intensity??r?.intensity??.5,color:t.color??h[t.kind]??h.default,totalMagnitude:(r?.totalMagnitude??0)+(t.totalMagnitude??0)}),{edges:n}}),removeEdge:t=>e(e=>{let n=new Map(e.edges);return n.delete(t),{edges:n}}),clear:()=>e({events:[],nodes:new Map,edges:new Map,counters:{totalTokens:0,totalCost:0,totalToolCalls:0,activeAgents:0,completedTasks:0,errors:0,mailboxMessages:0}}),setActive:t=>e({isActive:t}),decayActivity:()=>e(e=>{let t=new Map(e.nodes);for(let[e,n]of t)if(n.activity>=.01){let r=n.activity*.92;t.set(e,{...n,activity:r<.01?0:r})}let n=new Map(e.edges);for(let[e,t]of n)if(t.intensity>=.01){let r=t.intensity*.9;n.set(e,{...t,intensity:r<.01?0:r})}return{nodes:t,edges:n}}),prunesStale:t=>e(e=>{let n=Date.now()-t,r=new Map(e.nodes);for(let[e,t]of r)t.lastSeenAt<n&&t.status!==void 0&&t.status!==`active`&&r.delete(e);let i=new Map(e.edges);for(let[e,t]of i)t.lastActiveAt<n&&i.delete(e);return{nodes:r,edges:i,events:e.events.filter(e=>e.timestamp>n)}})}));function _(e,t){switch(e){case`provider.text_delta`:{let e=t.text??``;return{id:f(),kind:`provider:delta`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,60),magnitude:e.length,data:{text:e},color:m.provider,flowGroup:`provider`}}case`provider.response`:{let e=t.usage,n=(e?.input??0)+(e?.output??0);return{id:f(),kind:`provider:response`,timestamp:Date.now(),source:`provider`,target:`leader`,label:`${(e?.input??0).toLocaleString(`en-US`)} in / ${(e?.output??0).toLocaleString(`en-US`)} out`,magnitude:n,data:t,color:m.provider,flowGroup:`provider`}}case`provider.stream_error`:{let e=t.message??`Provider stream error`;return{id:f(),kind:`error`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,80),magnitude:1,data:t,color:m.error,flowGroup:`provider`}}case`tool.started`:{let e=t.name??`tool`;return{id:f(),kind:`tool:started`,timestamp:Date.now(),source:e,target:`filesystem`,label:e,magnitude:1,data:t,color:m.tool,flowGroup:`tool:${e}`}}case`tool.executed`:{let e=t.name??`tool`,n=t.ok??!0;return{id:f(),kind:`tool:executed`,timestamp:Date.now(),source:e,target:`leader`,label:`${e} ${n?`✓`:`✗`} (${t.durationMs??0}ms)`,magnitude:t.durationMs??0,data:t,color:n?m.tool:m.error,flowGroup:`tool:${e}`}}case`tool.progress`:{let e=t.name??`tool`,n=t.event?.text??``;return{id:f(),kind:`tool:progress`,timestamp:Date.now(),source:e,target:`leader`,label:n.slice(0,60)||e,magnitude:n.length,data:t,color:m.tool,flowGroup:`tool:${e}`}}case`tool.loop_detected`:{let e=t.tools??``,n=t.kind??`loop`;return{id:f(),kind:`error`,timestamp:Date.now(),source:e||n,target:`leader`,label:`${n} loop x${t.repeatCount??0}`,magnitude:t.repeatCount??1,data:t,color:m.error,flowGroup:`tool`}}case`delegate.started`:{let e=t.target??`delegate`,n=t.task??``;return{id:f(),kind:`agent:status`,timestamp:Date.now(),source:`leader`,target:e,label:n.slice(0,80)||`Delegating to ${e}`,magnitude:1,data:t,color:m.agent,flowGroup:`delegate:${e}`}}case`delegate.completed`:{let e=t.subagentId??t.target??`delegate`,n=t.ok??!1;return{id:f(),kind:n?`agent:status`:`error`,timestamp:Date.now(),source:e,target:`leader`,label:(t.summary??t.status??`delegate completed`).slice(0,80),magnitude:t.durationMs??1,data:t,color:n?m.agent:m.error,flowGroup:`delegate:${e}`}}case`subagent.event`:{let e=t.kind,n=t.subagentId??`unknown`,r=t.name??n;switch(e){case`spawned`:return{id:f(),kind:`agent:spawned`,timestamp:Date.now(),source:n,target:`session`,label:`${r} spawned`,magnitude:1,data:t,color:m.agent,flowGroup:`agent:${n}`};case`tool_executed`:{let e=t.toolName??`tool`,r=t.ok??!0;return{id:f(),kind:`agent:tool`,timestamp:Date.now(),source:n,target:e,label:e,magnitude:t.durationMs??0,data:t,color:r?m.tool:m.error,flowGroup:`agent:${n}`}}case`task_completed`:{let e=t.status??`completed`;return{id:f(),kind:`agent:status`,timestamp:Date.now(),source:n,target:`session`,label:`${r} ${e}`,magnitude:1,data:t,color:e===`success`?m.success:m.error,flowGroup:`agent:${n}`}}case`ctx_pct`:return{id:f(),kind:`agent:ctx`,timestamp:Date.now(),source:n,target:`session`,label:`ctx ${c(t.load)}%`,magnitude:t.tokens??0,data:t,color:m.agent,flowGroup:`agent:${n}`};case`iteration_summary`:return{id:f(),kind:`agent:text`,timestamp:Date.now(),source:n,target:`session`,label:(t.partialText??``).slice(0,80)||`iter ${t.iteration??0}`,magnitude:t.costUsd??0,data:t,color:m.agent,flowGroup:`agent:${n}`};case`budget_extended`:return{id:f(),kind:`budget:extended`,timestamp:Date.now(),source:n,target:`session`,label:`${r} extended budget`,magnitude:t.totalExtensions??1,data:t,color:m.tool,flowGroup:`agent:${n}`};case`budget_warning`:return{id:f(),kind:`budget:warning`,timestamp:Date.now(),source:n,target:`session`,label:`${r} hit ${t.budgetKind??`budget`} ${t.used??0}/${t.limit??0}`,magnitude:t.used??1,data:t,color:m.error,flowGroup:`agent:${n}`}}return null}case`mailbox.event`:{let e=t.event,n=t.from??`?`,r=t.to??`?`,i=t.subject??``,a=e===`mailbox.sent`;return{id:f(),kind:a?`mailbox:send`:`mailbox:deliver`,timestamp:Date.now(),source:n,target:r,label:i||(a?`→ ${r}`:`← ${n}`),magnitude:1,data:t,color:m.mailbox,flowGroup:`mailbox`}}case`iteration.started`:{let e=t.index??0;return{id:f(),kind:`iteration:start`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e}`,magnitude:e,data:t,color:m.agent,flowGroup:`iteration`}}case`iteration.completed`:{let e=t.index??0;return{id:f(),kind:`iteration:end`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e} done`,magnitude:e,data:t,color:m.session,flowGroup:`iteration`}}case`ctx.pct`:{let e=t.tokens??0;return{id:f(),kind:`agent:ctx`,timestamp:Date.now(),source:`leader`,target:`session`,label:`ctx ${c(t.load)}%`,magnitude:e,data:t,color:m.agent,flowGroup:`leader`}}case`error`:{let e=t.message??`Error`;return{id:f(),kind:`error`,timestamp:Date.now(),source:t.phase??`system`,target:`session`,label:e,magnitude:1,data:t,color:m.error,flowGroup:`error`}}case`context.compacted`:return{id:f(),kind:`context:compacted`,timestamp:Date.now(),source:`system`,target:`session`,label:`Compacted: ${(t.saved??0).toLocaleString(`en-US`)} tokens`,magnitude:t.saved??0,data:t,color:`hsl(220, 60%, 50%)`,flowGroup:`context`};case`compaction.failed`:{let e=t.message??`Compaction failed`;return{id:f(),kind:`error`,timestamp:Date.now(),source:`compactor`,target:`session`,label:e.slice(0,80),magnitude:t.tokens??1,data:t,color:m.error,flowGroup:`context`}}case`context.repaired`:return{id:f(),kind:`context:repaired`,timestamp:Date.now(),source:`system`,target:`session`,label:`Repaired: ${t.removedMessages??0} msgs`,magnitude:t.removedMessages??0,data:t,color:`hsl(220, 60%, 50%)`,flowGroup:`context`};case`session.start`:{let e=t.sessionId??`?`,n=t.projectName??``;return{id:f(),kind:`session:start`,timestamp:Date.now(),source:`session`,target:`leader`,label:n||e.slice(0,12),magnitude:1,data:t,color:m.session,flowGroup:`session`}}case`sessions.status_update`:{let e=t.sessions??[];return{id:f(),kind:`fleet:snapshot`,timestamp:Date.now(),source:`system`,target:`session`,label:`${e.length} session(s)`,magnitude:e.length,data:t,color:m.system,flowGroup:`fleet`}}default:return null}}function v(e){let t=e.payload?.sessionId,r=n.getState().session?.id;return!t||!r||t===r}function y(e){let t=_(e.type,e.payload);t&&(g.getState().pushEvent(t),g.getState().setActive(!0))}function b(e,t,n){let r=e.payload??{};for(let[e,n]of Object.entries(t)){let t=r[e];if(!x(t,n))return null}if(n)for(let[e,t]of Object.entries(n)){let n=r[e];if(n!=null&&!x(n,t))return null}return r}function x(e,t){switch(t){case`string`:return typeof e==`string`;case`number`:return typeof e==`number`;case`boolean`:return typeof e==`boolean`;case`object`:return typeof e==`object`&&!!e&&!Array.isArray(e);case`array`:return Array.isArray(e);default:return!1}}function S(e){try{return new URL(e).searchParams.get(`token`)}catch{return null}}function C(){if(typeof window>`u`||!window.location)return null;try{let e=window.location.search??``;return new URLSearchParams(e).get(`token`)}catch{return null}}function w(e){try{let t=new URL(e);return t.searchParams.delete(`token`),t.toString()}catch{return e}}function T(){if(!(typeof window>`u`||!window.location||!window.history?.replaceState))try{let e=window.location.href;if(!e)return;let t=new URL(e);if(!t.searchParams.has(`token`))return;t.searchParams.delete(`token`),window.history.replaceState(window.history.state,document.title,t.toString())}catch{}}var E=3457;function D(){if(typeof document>`u`)return E;let e=document.querySelector(`meta[name="wrongstack-ws-port"]`)?.getAttribute(`content`),t=e?Number.parseInt(e,10):NaN;return Number.isFinite(t)&&t>0&&t<65536?t:E}function O(){if(typeof document>`u`)return null;let e=document.querySelector(`meta[name="wrongstack-ws-url"]`)?.getAttribute(`content`)?.trim();if(!e)return null;try{let t=new URL(e);if(t.protocol!==`ws:`&&t.protocol!==`wss:`)return null;let n=C();return n&&!t.searchParams.has(`token`)&&t.searchParams.set(`token`,n),t.toString()}catch{return null}}function k(){let e=O();if(e)return e;let t=D();if(typeof window>`u`||!window.location?.hostname)return`ws://127.0.0.1:${t}`;let n=window.location.protocol===`https:`?`wss`:`ws`,r=window.location.hostname.toLowerCase(),i=C(),a=i?`?token=${encodeURIComponent(i)}`:``;return r===`localhost`||r===`127.0.0.1`||r===`[::1]`||r===`::1`?`${n}://127.0.0.1:${t}${a}`:`${n}://${window.location.hostname}:${t}${a}`}function A(){if(typeof window>`u`||!window.location?.hostname)return`http://127.0.0.1:3456`;let e=window.location.protocol===`https:`?`https`:`http`,t=window.location.hostname.toLowerCase(),n=window.location.port?`:${window.location.port}`:``;return t===`localhost`||t===`127.0.0.1`||t===`[::1]`||t===`::1`?`${e}://127.0.0.1${n}`:`${e}://${window.location.hostname}${n}`}var j=e({WrongStackWebSocketClient:()=>N,getWSClient:()=>F});function M(e){try{let t=new URL(e),n=new URL(A());return t.hostname===n.hostname}catch{return!0}}var N=class e{ws=null;url;handlers=new Map;reconnectAttempts=0;maxReconnectAttempts=10;reconnectDelay=1e3;shouldReconnect=!0;reconnectTimer=null;connectPromise=null;socketGeneration=0;messageQueue=[];static MAX_QUEUED_MESSAGES=1e3;pendingConfirms=new Map;sessionId=null;lastErrorText;statusListeners=new Set;currentStatus={state:`connecting`};onStatus(e){return this.statusListeners.add(e),e(this.currentStatus),()=>this.statusListeners.delete(e)}get status(){return this.currentStatus}setStatus(e){this.currentStatus=e;for(let t of this.statusListeners)try{t(e)}catch{}}constructor(e){this.url=e??k()}withSession(e){return this.sessionId?{...e,sessionId:this.sessionId}:e}async ensureAuthCookie(){if(typeof window>`u`)return;if(document.cookie.split(`;`).some(e=>e.trim().startsWith(`ws_token=`))){M(this.url)&&(this.url=w(this.url)),T();return}let e=S(this.url)??C();if(!e)return;let t=A()+`/ws-auth?token=${encodeURIComponent(e)}`;try{let e=await fetch(t,{method:`GET`,credentials:`same-origin`,cache:`no-store`});e.ok?(M(this.url)&&(this.url=w(this.url)),T()):console.warn(JSON.stringify({level:`warn`,event:`ws_client.ws_auth_failed`,status:e.status,timestamp:new Date().toISOString()}))}catch(e){console.warn(JSON.stringify({level:`warn`,event:`ws_client.ws_auth_error`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}}connect(){return this.ws?.readyState===WebSocket.OPEN?Promise.resolve():(this.connectPromise||=this.openSocket().finally(()=>{this.connectPromise=null}),this.connectPromise)}async openSocket(){return await this.ensureAuthCookie(),new Promise((e,t)=>{if(this.ws?.readyState===WebSocket.OPEN){e();return}this.setStatus({state:`connecting`});let n=++this.socketGeneration;try{let r=new WebSocket(this.url);this.ws=r,r.binaryType=`arraybuffer`;let i=setTimeout(()=>{if(this.ws===r){try{r.onopen=null,r.onmessage=null,r.onerror=null,r.onclose=null,r.close()}catch{}this.ws===r&&(this.ws=null)}t(Error(`Connection timeout`))},3e4),a=!1;r.onopen=()=>{this.socketGeneration===n&&(clearTimeout(i),a=!0,this.reconnectAttempts=0,this.lastErrorText=void 0,this.setStatus({state:`open`}),this.flushMessageQueue(),e())},r.onmessage=e=>{if(this.socketGeneration===n)try{let t=JSON.parse(e.data);this.handleMessage(t)}catch(e){console.error(JSON.stringify({level:`error`,event:`ws_client.message_parse_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}},r.onerror=e=>{this.socketGeneration===n&&(console.error(JSON.stringify({level:`error`,event:`ws_client.error`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()})),this.lastErrorText=`Connection error (see browser devtools)`,a||(clearTimeout(i),t(Error(this.lastErrorText)),this.attemptReconnect()))},r.onclose=e=>{if(this.socketGeneration===n){if(!a){clearTimeout(i);let n=e.reason||`Closed with code ${e.code}`;this.lastErrorText=n,t(Error(n)),this.attemptReconnect();return}e.reason&&!this.lastErrorText?this.lastErrorText=`${e.reason} (code ${e.code})`:!this.lastErrorText&&e.code!==1e3&&(this.lastErrorText=`Closed with code ${e.code}`),this.attemptReconnect()}}}catch(e){if(this.socketGeneration!==n)return;this.lastErrorText=e instanceof Error?e.message:String(e),this.setStatus({state:`closed`,error:this.lastErrorText}),t(e)}})}attemptReconnect(){if(!this.shouldReconnect||this.reconnectAttempts>=this.maxReconnectAttempts){this.reconnectTimer=null,this.setStatus({state:`closed`,error:this.lastErrorText??`Disconnected`});return}this.reconnectAttempts++;let e=Math.min(this.reconnectDelay*2**(this.reconnectAttempts-1),3e4),t=Date.now()+e;this.setStatus({state:`reconnecting`,attempt:this.reconnectAttempts,nextRetryAt:t,lastError:this.lastErrorText}),this.reconnectTimer=setTimeout(async()=>{if(this.reconnectTimer=null,this.shouldReconnect)try{await this.connect()}catch(e){console.error(JSON.stringify({level:`error`,event:`ws_client.reconnect_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}},e)}retryNow(){this.currentStatus.state!==`open`&&(this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.reconnectAttempts=0,this.connect().catch(e=>console.warn(JSON.stringify({level:`warn`,event:`ws_client.reconnect_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))))}flushMessageQueue(){for(;this.messageQueue.length>0;){let e=this.messageQueue.shift();e&&this.send(e)}}handleMessage(e){if(e.type===`tool.confirm_needed`){let t=e.payload;this.pendingConfirms.set(t.id,{}),this.emit(e);return}if(e.type===`session.start`){let t=e.payload;this.sessionId=t.sessionId}this.emit(e)}emit(e){let t=this.handlers.get(e.type);if(t)for(let n of t)try{n(e)}catch(t){console.error(JSON.stringify({level:`error`,event:`ws_client.handler_error`,messageType:e.type,message:t instanceof Error?t.message:String(t),timestamp:new Date().toISOString()}))}}send(t){if((t.type===`context.clear`||t.type===`session.new`||t.type===`session.resume`)&&i.dropAll(),this.ws?.readyState===WebSocket.OPEN)this.ws.send(JSON.stringify(t));else{if(this.messageQueue.length>=e.MAX_QUEUED_MESSAGES){let t=this.messageQueue.shift();t&&console.warn(JSON.stringify({level:`warn`,event:`ws_client.message_queue_full`,cap:e.MAX_QUEUED_MESSAGES,droppedType:t.type,timestamp:new Date().toISOString()}))}this.messageQueue.push(t)}}on(e,t){let n=this.handlers.get(e);return n||(n=new Set,this.handlers.set(e,n)),n.add(t),()=>n?.delete(t)}off(e,t){this.handlers.get(e)?.delete(t)}sendMessage(e,t){let n=`msg_${Date.now()}_${crypto.randomUUID().slice(0,8)}`;return this.send({type:`user_message`,payload:this.withSession({id:n,content:e,timestamp:Date.now(),...t?{imageBase64:t}:{}})}),n}sendAbort(){this.send({type:`abort`,payload:this.withSession({})})}getGitInfo(){this.send({type:`git.info`})}getGitChanges(){this.send({type:`git.changes`})}getGitDiff(e){this.send({type:`git.diff`,payload:{path:e}})}sendConfirm(e,t){this.pendingConfirms.has(e)&&this.pendingConfirms.delete(e),this.send({type:`tool.confirm_result`,payload:this.withSession({id:e,decision:t})})}switchModel(e,t){this.send({type:`model.switch`,payload:{provider:e,model:t}})}newSession(){this.send({type:`session.new`,payload:this.withSession({})})}listProviders(){this.send({type:`providers.list`})}listProviderModels(e){this.send({type:`provider.models`,payload:{providerId:e}})}listSavedProviders(){this.send({type:`providers.saved`})}addKey(e,t,n){this.send({type:`key.add`,payload:{providerId:e,label:t,apiKey:n}})}updateKey(e,t,n){this.send({type:`key.update`,payload:{providerId:e,label:t,apiKey:n}})}deleteKey(e,t){this.send({type:`key.delete`,payload:{providerId:e,label:t}})}setActiveKey(e,t){this.send({type:`key.set_active`,payload:{providerId:e,label:t}})}addProvider(e,t,n,r){this.send({type:`provider.add`,payload:{id:e,family:t,baseUrl:n,apiKey:r}})}removeProvider(e){this.send({type:`provider.remove`,payload:{providerId:e}})}startOAuth(e){this.send({type:`auth.oauth.start`,payload:{kind:e}})}submitOAuthCode(e,t){this.send({type:`auth.oauth.code`,payload:{kind:e,input:t}})}cancelOAuth(e){this.send({type:`auth.oauth.cancel`,payload:{kind:e}})}probeProvider(e,t){this.send({type:`provider.probe`,payload:t===void 0?{providerId:e}:{providerId:e,timeoutMs:t}})}clearProviderModels(e){this.send(a(e))}undoProviderClear(e,t){this.send(o(e,t))}updateProvider(e){this.send(s(e))}clearContext(){this.send({type:`context.clear`,payload:this.withSession({})})}compactContext(e=!1){this.send({type:`context.compact`,payload:this.withSession({aggressive:e})})}repairContext(){this.send({type:`context.repair`,payload:this.withSession({})})}debugContext(){this.send({type:`context.debug`,payload:this.withSession({})})}listContextModes(){this.send({type:`context.modes.list`,payload:this.withSession({})})}switchContextMode(e){this.send({type:`context.mode.switch`,payload:this.withSession({id:e})})}createContextMode(e){this.send({type:`context.mode.create`,payload:this.withSession(e)})}updateContextMode(e,t){this.send({type:`context.mode.update`,payload:this.withSession({id:e,...t})})}deleteContextMode(e){this.send({type:`context.mode.delete`,payload:this.withSession({id:e})})}switchAutonomy(e){this.send({type:`autonomy.switch`,payload:{mode:e}})}updatePrefs(e){this.send({type:`prefs.update`,payload:e})}getPrefs(){this.send({type:`prefs.get`})}listTools(){this.send({type:`tools.list`})}listMemory(){this.send({type:`memory.list`})}remember(e,t){this.send({type:`memory.remember`,payload:{text:e,scope:t}})}forget(e,t){this.send({type:`memory.forget`,payload:{text:e,scope:t}})}listMcpServers(){this.send({type:`mcp.list`})}addMcpServer(e){this.send({type:`mcp.add`,payload:e})}removeMcpServer(e){this.send({type:`mcp.remove`,payload:{name:e}})}updateMcpServer(e){this.send({type:`mcp.update`,payload:e})}wakeMcpServer(e){this.send({type:`mcp.wake`,payload:{name:e}})}sleepMcpServer(e){this.send({type:`mcp.sleep`,payload:{name:e}})}discoverMcpServer(e){this.send({type:`mcp.discover`,payload:{name:e}})}enableMcpServer(e){this.send({type:`mcp.enable`,payload:{name:e}})}disableMcpServer(e){this.send({type:`mcp.disable`,payload:{name:e}})}restartMcpServer(e){this.send({type:`mcp.restart`,payload:{name:e}})}listSkills(){this.send({type:`skills.list`})}getSkillContent(e,t){this.send({type:`skills.content`,payload:{name:e,source:t}})}installSkill(e,t){this.send({type:`skills.install`,payload:{ref:e,global:t}})}uninstallSkill(e,t){this.send({type:`skills.uninstall`,payload:{name:e,global:t}})}checkForUpdates(e,t){this.send({type:`skills.update`,payload:{name:e,global:t}})}createSkill(e,t,n){this.send({type:`skills.create`,payload:{name:e,description:t,scope:n}})}editSkill(e,t){this.send({type:`skills.edit`,payload:{name:e,body:t}})}exportAllSkills(){this.send({type:`skills.export`})}getDiag(){this.send({type:`diag.get`,payload:this.withSession({})})}getStats(){this.send({type:`stats.get`,payload:this.withSession({})})}saveSession(){this.send({type:`session.save`,payload:this.withSession({})})}resumeSessionById(e){this.send({type:`session.resume`,payload:this.withSession({id:e})})}listModes(){this.send({type:`modes.list`})}switchMode(e){this.send({type:`mode.switch`,payload:{id:e}})}listFiles(e,t,n){this.send({type:`files.list`,payload:{query:e,limit:t,path:n}})}requestCompletion(e){this.send({type:`completion.request`,payload:e})}getTodos(){this.send({type:`todos.get`,payload:this.withSession({})})}clearTodos(){this.send({type:`todos.clear`,payload:this.withSession({})})}removeTodo(e){let t=typeof e==`number`?{index:e}:{id:e};this.send({type:`todos.remove`,payload:this.withSession(t)})}updateTodoStatus(e,t){this.send({type:`todo.update`,payload:this.withSession({id:e,status:t})})}getTasks(){this.send({type:`tasks.get`,payload:this.withSession({})})}updateTaskStatus(e,t){this.send({type:`task.update`,payload:this.withSession({id:e,status:t})})}getPlan(){this.send({type:`plan.get`,payload:this.withSession({})})}updatePlanItem(e,t){this.send({type:`plan.item.update`,payload:this.withSession({target:e,status:t})})}listSessions(e=50){this.send({type:`sessions.list`,payload:this.withSession({limit:e})})}deleteSession(e){this.send({type:`session.delete`,payload:{id:e}})}renameSession(e,t){this.send({type:`session.rename`,payload:{id:e,name:t}})}setWorkingDir(e){this.send({type:`working_dir.set`,payload:{path:e}})}resumeSession(e){this.send({type:`session.resume`,payload:this.withSession({id:e})})}ping(){this.send({type:`ping`})}refineModel(e){this.send({type:`model.refine`,payload:{text:e}})}disconnect(){this.shouldReconnect=!1,this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.messageQueue.length=0,this.ws?.close(),this.ws=null}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}get currentSessionId(){return this.sessionId}},P=null;function F(e){return P||=new N(e),P}export{y as a,_ as c,v as i,i as l,j as n,b as o,k as r,g as s,F as t};
@@ -0,0 +1,13 @@
1
+ import type { AgentTranscriptEntry } from '@/stores';
2
+ interface AgentTranscriptProps {
3
+ entries: AgentTranscriptEntry[];
4
+ agentName?: string | undefined;
5
+ className?: string | undefined;
6
+ compact?: boolean | undefined;
7
+ maxHeightClassName?: string | undefined;
8
+ title?: string | undefined;
9
+ showHeader?: boolean | undefined;
10
+ }
11
+ export declare function AgentTranscript({ entries, agentName, className, compact, maxHeightClassName, title, showHeader, }: AgentTranscriptProps): React.ReactElement;
12
+ export {};
13
+ //# sourceMappingURL=AgentTranscript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentTranscript.d.ts","sourceRoot":"","sources":["../../src/components/AgentTranscript.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAuB,MAAM,UAAU,CAAC;AAE1E,UAAU,oBAAoB;IAC5B,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAClC;AAwED,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,SAAS,EACT,SAAS,EACT,OAAe,EACf,kBAAkB,EAClB,KAAK,EACL,UAAiB,GAClB,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CA4F3C"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * AgentsMonitor — right-side sliding sidebar per-agent monitor.
3
+ *
4
+ * Shows every agent in a card view with:
5
+ * - Activity sparkline
6
+ * - Context fill bar with token count
7
+ * - Budget warning indicators
8
+ * - Failure reasons
9
+ * - Streaming output tail (partialText)
10
+ * - Tool execution log
11
+ *
12
+ * Slides in from the right as a non-intrusive overlay, preserving the
13
+ * main chat interface underneath. Dismisses on Escape / backdrop click.
14
+ *
15
+ * Keyboard: ↑↓ navigate agents, ←→ flip pages per agent, Esc close.
16
+ */
17
+ import type { SubagentView } from '@/stores';
18
+ export interface AgentsMonitorProps {
19
+ onClose: () => void;
20
+ }
21
+ export declare function AgentCard({ agent, isLeader }: {
22
+ agent: SubagentView;
23
+ isLeader: boolean;
24
+ }): import("react").JSX.Element;
25
+ export declare function AgentsMonitor({ onClose }: AgentsMonitorProps): import("react").JSX.Element;
26
+ //# sourceMappingURL=AgentsMonitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentsMonitor.d.ts","sourceRoot":"","sources":["../../src/components/AgentsMonitor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAI7C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA0CD,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,+BA2MxF;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,+BA+J5D"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Pure presentation helpers for AgentsPage — extracted so the giant page
3
+ * component stays focused on rendering/state. AgentsPage.tsx re-exports these
4
+ * for backward compatibility (existing imports from '../AgentsPage' keep
5
+ * working). No React, no stores — trivially unit-testable.
6
+ */
7
+ /** AgentsPage-local compact cost formatter. '$0' for non-positive, otherwise
8
+ * 3-decimal precision (or 5 decimals for sub-cent values). Differs from the
9
+ * shared dashboard-primitives fmtCost which always pads to 4 decimals. */
10
+ export declare function fmtCost(n?: number): string;
11
+ /** AgentsPage-local duration formatter. Returns "Xs" for sub-minute, "Xm Ys"
12
+ * for ≥1min. Always shows the seconds component when minutes are present. */
13
+ export declare function fmtDuration(ms?: number): string;
14
+ /** AgentsPage-local elapsed formatter. "MM:SS" (zero-padded) for sub-hour,
15
+ * "H:MM:SS" otherwise. Differs from dashboard-primitives' "Xs/Xm/Xh" form. */
16
+ export declare function fmtElapsed(ms?: number): string;
17
+ /** AgentsPage-local sparkline. Uses ceil(v/max * 8) clamped to [1, 8] so that
18
+ * 0 → ▁ (not blank) and max → █. Differs from dashboard-primitives which uses
19
+ * round(v/max * 4) over a 5-char palette. */
20
+ export declare function sparkline(values: number[], width?: number): string;
21
+ /** Bucket recent tool timestamps into N bins of binMs each. */
22
+ export declare function bucketActivity(timestamps: number[], now: number, bins?: number, binMs?: number): number[];
23
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/components/AgentsPage/format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;2EAE2E;AAC3E,wBAAgB,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1C;AAED;8EAC8E;AAC9E,wBAAgB,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED;+EAC+E;AAC/E,wBAAgB,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ9C;AAID;;8CAE8C;AAC9C,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,SAAK,GAAG,MAAM,CAc9D;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAAE,EACpB,GAAG,EAAE,MAAM,EACX,IAAI,SAAK,EACT,KAAK,SAAO,GACX,MAAM,EAAE,CAWV"}
@@ -0,0 +1,49 @@
1
+ import type { SubagentView } from '@/stores';
2
+ import { bucketActivity, fmtCost, fmtDuration, fmtElapsed, sparkline } from './AgentsPage/format';
3
+ export { bucketActivity, fmtCost, fmtDuration, fmtElapsed, sparkline };
4
+ interface LeaderEntry {
5
+ id: 'leader';
6
+ name: string;
7
+ /** Session this leader belongs to. */
8
+ sessionId?: string | undefined;
9
+ provider?: string | undefined;
10
+ model?: string | undefined;
11
+ status: 'running' | 'idle';
12
+ iterations: number;
13
+ toolCalls: number;
14
+ costUsd: number;
15
+ ctxPct: number;
16
+ ctxTokens: number;
17
+ maxContext: number;
18
+ startedAt: number;
19
+ lastEventAt: number;
20
+ extensions: number;
21
+ currentTool?: string | undefined;
22
+ toolLog: SubagentView['toolLog'];
23
+ partialText?: string | undefined;
24
+ finalText?: string | undefined;
25
+ error?: {
26
+ kind: string | undefined;
27
+ message: string;
28
+ } | undefined;
29
+ /** Human-readable description of the current task. */
30
+ description?: string | undefined;
31
+ /** Budget warning if hitting a soft limit. */
32
+ budgetWarning?: {
33
+ kind: string;
34
+ used: number;
35
+ limit: number;
36
+ } | undefined;
37
+ /** Per-agent token usage. */
38
+ tokensIn?: number | undefined;
39
+ tokensOut?: number | undefined;
40
+ /** Sparkline bins for activity visualization. */
41
+ sparklineBins?: number[];
42
+ }
43
+ type AgentView = SubagentView | LeaderEntry;
44
+ export declare function getLastEventAt(a: AgentView): number;
45
+ export declare function getIterations(a: AgentView): number;
46
+ export declare function AgentsPage({ className, }: {
47
+ className?: string | undefined;
48
+ }): React.ReactElement;
49
+ //# sourceMappingURL=AgentsPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentsPage.d.ts","sourceRoot":"","sources":["../../src/components/AgentsPage.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAyB7C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIlG,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AA+DvE,UAAU,WAAW;IACnB,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAClE,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,8CAA8C;IAC9C,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC1E,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,KAAK,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;AAgc5C,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAGnD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAGlD;AAED,wBAAgB,UAAU,CAAC,EACzB,SAAS,GACV,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,GAAG,KAAK,CAAC,YAAY,CAmYrB"}
@@ -0,0 +1,2 @@
1
+ export declare function AnalyticsDashboard(): import("react").JSX.Element;
2
+ //# sourceMappingURL=AnalyticsDashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsDashboard.d.ts","sourceRoot":"","sources":["../../src/components/AnalyticsDashboard.tsx"],"names":[],"mappings":"AAmJA,wBAAgB,kBAAkB,gCAkYjC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * AutoPhaseView — Full-screen phase view.
3
+ *
4
+ * Start screen (no phases) → goal form. Once phases exist, the interactive
5
+ * kanban BoardView fills the area (phase columns / status swimlanes, drag-drop,
6
+ * manual assignment, live worker per task). Worktree visualization docks at the
7
+ * bottom while worktrees are active.
8
+ *
9
+ * Uses the shared useAutoPhaseStore (synced via autophase.state WS events) so
10
+ * board data stays consistent with the chat-area PhasePanel.
11
+ */
12
+ export declare function AutoPhaseView({ onClose }: {
13
+ onClose: () => void;
14
+ }): React.ReactElement;
15
+ //# sourceMappingURL=AutoPhaseView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoPhaseView.d.ts","sourceRoot":"","sources":["../../src/components/AutoPhaseView.tsx"],"names":[],"mappings":"AAaA;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CAoYtF"}
@@ -0,0 +1,21 @@
1
+ export type AutonomyMode = 'off' | 'suggest' | 'auto' | 'eternal' | 'eternal-parallel';
2
+ export interface AutonomyOption {
3
+ mode: AutonomyMode;
4
+ /** Display label — left verbatim (autonomy mode names are domain terms). */
5
+ label: string;
6
+ /** i18n key under activity:autonomy.* for the description. */
7
+ descKey: string;
8
+ icon: React.ReactNode;
9
+ }
10
+ export interface AutonomyPickerProps {
11
+ /** Current autonomy mode. */
12
+ value: AutonomyMode;
13
+ /** Called when the user picks a new mode. */
14
+ onChange: (mode: AutonomyMode) => void;
15
+ /** Extra class for the trigger button. */
16
+ className?: string | undefined;
17
+ /** If true, render as a compact chip instead of full button. */
18
+ compact?: boolean | undefined;
19
+ }
20
+ export declare function AutonomyPicker({ value, onChange, className, compact, }: AutonomyPickerProps): React.ReactElement;
21
+ //# sourceMappingURL=AutonomyPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutonomyPicker.d.ts","sourceRoot":"","sources":["../../src/components/AutonomyPicker.tsx"],"names":[],"mappings":"AAaA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,kBAAkB,CAAC;AAEvF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;CACvB;AAqCD,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,6CAA6C;IAC7C,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,SAAS,EACT,OAAe,GAChB,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAuF1C"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * BoardView — the interactive kanban over the live AutoPhase graph.
3
+ *
4
+ * Two toggleable layouts:
5
+ * • "phase" — one column per phase, cards are tasks; drag a card to another
6
+ * phase column to move it (autophase.moveTask).
7
+ * • "status" — Pending/In-Progress/Review/Failed/Done columns with one swimlane
8
+ * per phase; drag a card to another status column to change it.
9
+ *
10
+ * Cards expose manual agent assignment + retry; in-progress cards show the live
11
+ * worker. Drag-drop uses the native HTML5 DnD API (no extra dependency).
12
+ */
13
+ export declare function BoardView(): React.ReactElement;
14
+ //# sourceMappingURL=BoardView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoardView.d.ts","sourceRoot":"","sources":["../../src/components/BoardView.tsx"],"names":[],"mappings":"AAgCA;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,IAAI,KAAK,CAAC,YAAY,CA6O9C"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * ChangesView — the main-pane diff surface for the Changes (source-control)
3
+ * activity. The file list lives in the SidePanel (ChangesPanel); selecting a
4
+ * row populates the git-changes store, and this view renders the resolved
5
+ * before/after content through the shared DiffView.
6
+ */
7
+ export declare function ChangesView({ className }: {
8
+ className?: string;
9
+ }): import("react").JSX.Element;
10
+ //# sourceMappingURL=ChangesView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangesView.d.ts","sourceRoot":"","sources":["../../src/components/ChangesView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BA8IhE"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Detect the programming language of a code snippet.
3
+ * Returns the language identifier string (e.g. "typescript"), or null if
4
+ * the text doesn't match any known language above the threshold.
5
+ */
6
+ export declare function detectLanguage(text: string): string | null;
7
+ /**
8
+ * Auto-fence pasted code in markdown code blocks.
9
+ * Returns the fenced text and detected language, or null if no action needed.
10
+ */
11
+ export declare function autoFenceCode(text: string): {
12
+ fenced: string;
13
+ lang: string;
14
+ } | null;
15
+ /**
16
+ * Attempt to unfence: strip surrounding ``` fences if present.
17
+ * Returns unfenced text if fences were found, null otherwise.
18
+ */
19
+ export declare function unfenceCode(text: string): string | null;
20
+ //# sourceMappingURL=code-detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-detect.d.ts","sourceRoot":"","sources":["../../../src/components/ChatInput/code-detect.ts"],"names":[],"mappings":"AA2KA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkC1D;AAUD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQnF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIvD"}
@@ -0,0 +1,15 @@
1
+ import type React from 'react';
2
+ export interface FileMentionState {
3
+ start: number;
4
+ query: string;
5
+ }
6
+ interface FileMentionPickerProps {
7
+ atMention: FileMentionState | null;
8
+ input: string;
9
+ textareaRef: React.RefObject<HTMLTextAreaElement | null>;
10
+ setInput: (value: string) => void;
11
+ setAtMention: (value: FileMentionState | null) => void;
12
+ }
13
+ export declare function FileMentionPicker({ atMention, input, textareaRef, setInput, setAtMention, }: FileMentionPickerProps): React.JSX.Element | null;
14
+ export {};
15
+ //# sourceMappingURL=file-mention-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-mention-picker.d.ts","sourceRoot":"","sources":["../../../src/components/ChatInput/file-mention-picker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,sBAAsB;IAC9B,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACzD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,YAAY,EAAE,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;CACxD;AAED,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,KAAK,EACL,WAAW,EACX,QAAQ,EACR,YAAY,GACb,EAAE,sBAAsB,4BA+BxB"}
@@ -0,0 +1,9 @@
1
+ import type { QueuedItem } from '@/stores/chat-store';
2
+ interface QueuedMessagesProps {
3
+ queue: readonly QueuedItem[];
4
+ onClear: () => void;
5
+ onRemove: (index: number) => void;
6
+ }
7
+ export declare function QueuedMessages({ queue, onClear, onRemove }: QueuedMessagesProps): import("react").JSX.Element | null;
8
+ export {};
9
+ //# sourceMappingURL=queued-messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queued-messages.d.ts","sourceRoot":"","sources":["../../../src/components/ChatInput/queued-messages.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,qBAAqB,CAAC;AAsBjE,UAAU,mBAAmB;IAC3B,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,mBAAmB,sCAgG/E"}
@@ -0,0 +1,17 @@
1
+ export type SlashCategory = 'Run' | 'Session' | 'Inspect' | 'Agent' | 'Config' | 'App';
2
+ export interface SlashCommandDef {
3
+ name: string;
4
+ aliases?: string[] | undefined;
5
+ description: string;
6
+ category: SlashCategory;
7
+ /** Hidden commands don't appear in the picker when query is empty. */
8
+ hidden?: boolean | undefined;
9
+ }
10
+ export declare const SLASH_COMMANDS: SlashCommandDef[];
11
+ export declare const SLASH_CATEGORY_ORDER: SlashCategory[];
12
+ export declare function matchSlash(query: string): SlashCommandDef[];
13
+ export declare function detectAtMention(value: string, cursor: number): {
14
+ start: number;
15
+ query: string;
16
+ } | null;
17
+ //# sourceMappingURL=slash-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slash-commands.d.ts","sourceRoot":"","sources":["../../../src/components/ChatInput/slash-commands.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEvF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B;AAED,eAAO,MAAM,cAAc,EAAE,eAAe,EAiE3C,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,aAAa,EAA4D,CAAC;AAE7G,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAAE,CAS3D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAetG"}