@ottocode/web-sdk 0.1.226 → 0.1.227

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 (405) hide show
  1. package/dist/components/chat/FileMentionPopup.d.ts.map +1 -1
  2. package/dist/components/index.js +25148 -80
  3. package/dist/components/index.js.map +180 -1
  4. package/dist/components/messages/AssistantMessageGroup.d.ts.map +1 -1
  5. package/dist/components/messages/CompactActivityGroup.d.ts +10 -0
  6. package/dist/components/messages/CompactActivityGroup.d.ts.map +1 -0
  7. package/dist/components/messages/MessagePartItem.d.ts.map +1 -1
  8. package/dist/components/messages/MessageThread.d.ts +1 -0
  9. package/dist/components/messages/MessageThread.d.ts.map +1 -1
  10. package/dist/components/messages/MessageThreadContainer.d.ts.map +1 -1
  11. package/dist/components/messages/compactActivity.d.ts +34 -0
  12. package/dist/components/messages/compactActivity.d.ts.map +1 -0
  13. package/dist/components/messages/renderers/EditRenderer.d.ts +1 -1
  14. package/dist/components/messages/renderers/EditRenderer.d.ts.map +1 -1
  15. package/dist/components/messages/renderers/index.d.ts.map +1 -1
  16. package/dist/components/messages/renderers/types.d.ts +3 -1
  17. package/dist/components/messages/renderers/types.d.ts.map +1 -1
  18. package/dist/components/settings/SettingsSidebar.d.ts.map +1 -1
  19. package/dist/components/settings/SetuTopupModal.d.ts.map +1 -1
  20. package/dist/hooks/index.js +4812 -29
  21. package/dist/hooks/index.js.map +67 -1
  22. package/dist/hooks/useAuthStatus.d.ts.map +1 -1
  23. package/dist/hooks/useMCP.d.ts +9 -0
  24. package/dist/hooks/useMCP.d.ts.map +1 -1
  25. package/dist/hooks/usePreferences.d.ts +1 -0
  26. package/dist/hooks/usePreferences.d.ts.map +1 -1
  27. package/dist/hooks/useSessionStream.d.ts.map +1 -1
  28. package/dist/index.js +25918 -7
  29. package/dist/index.js.map +185 -1
  30. package/dist/lib/api-client/approval.d.ts.map +1 -1
  31. package/dist/lib/index.js +1007 -5
  32. package/dist/lib/index.js.map +22 -1
  33. package/dist/stores/index.js +693 -22
  34. package/dist/stores/index.js.map +30 -1
  35. package/dist/stores/toastStore.d.ts +1 -0
  36. package/dist/stores/toastStore.d.ts.map +1 -1
  37. package/dist/types/api.js +2 -2
  38. package/dist/types/api.js.map +9 -1
  39. package/package.json +4 -4
  40. package/dist/assets/provider-logos.js +0 -43
  41. package/dist/assets/provider-logos.js.map +0 -1
  42. package/dist/components/branch/BranchModal.js +0 -45
  43. package/dist/components/branch/BranchModal.js.map +0 -1
  44. package/dist/components/chat/ChatInput.js +0 -267
  45. package/dist/components/chat/ChatInput.js.map +0 -1
  46. package/dist/components/chat/ChatInputContainer.js +0 -295
  47. package/dist/components/chat/ChatInputContainer.js.map +0 -1
  48. package/dist/components/chat/ChatInputKeyHandler.js +0 -75
  49. package/dist/components/chat/ChatInputKeyHandler.js.map +0 -1
  50. package/dist/components/chat/CommandSuggestionsPopup.js +0 -45
  51. package/dist/components/chat/CommandSuggestionsPopup.js.map +0 -1
  52. package/dist/components/chat/ConfigModal.js +0 -46
  53. package/dist/components/chat/ConfigModal.js.map +0 -1
  54. package/dist/components/chat/ConfigSelector.js +0 -47
  55. package/dist/components/chat/ConfigSelector.js.map +0 -1
  56. package/dist/components/chat/FileMentionPopup.js +0 -138
  57. package/dist/components/chat/FileMentionPopup.js.map +0 -1
  58. package/dist/components/chat/ShortcutsModal.js +0 -275
  59. package/dist/components/chat/ShortcutsModal.js.map +0 -1
  60. package/dist/components/chat/StopButton.js +0 -25
  61. package/dist/components/chat/StopButton.js.map +0 -1
  62. package/dist/components/chat/UnifiedAgentSelector.js +0 -107
  63. package/dist/components/chat/UnifiedAgentSelector.js.map +0 -1
  64. package/dist/components/chat/UnifiedModelSelector.js +0 -209
  65. package/dist/components/chat/UnifiedModelSelector.js.map +0 -1
  66. package/dist/components/common/ProviderLogo.js +0 -30
  67. package/dist/components/common/ProviderLogo.js.map +0 -1
  68. package/dist/components/common/StatusIndicator.js +0 -54
  69. package/dist/components/common/StatusIndicator.js.map +0 -1
  70. package/dist/components/common/UsageModal.js +0 -55
  71. package/dist/components/common/UsageModal.js.map +0 -1
  72. package/dist/components/common/UsageRing.js +0 -22
  73. package/dist/components/common/UsageRing.js.map +0 -1
  74. package/dist/components/file-browser/FileBrowserSidebar.js +0 -50
  75. package/dist/components/file-browser/FileBrowserSidebar.js.map +0 -1
  76. package/dist/components/file-browser/FileBrowserSidebarToggle.js +0 -12
  77. package/dist/components/file-browser/FileBrowserSidebarToggle.js.map +0 -1
  78. package/dist/components/file-browser/FileViewerPanel.js +0 -85
  79. package/dist/components/file-browser/FileViewerPanel.js.map +0 -1
  80. package/dist/components/file-browser/QuickFilePicker.js +0 -118
  81. package/dist/components/file-browser/QuickFilePicker.js.map +0 -1
  82. package/dist/components/git/GitCommitModal.js +0 -70
  83. package/dist/components/git/GitCommitModal.js.map +0 -1
  84. package/dist/components/git/GitDiffPanel.js +0 -60
  85. package/dist/components/git/GitDiffPanel.js.map +0 -1
  86. package/dist/components/git/GitDiffViewer.js +0 -224
  87. package/dist/components/git/GitDiffViewer.js.map +0 -1
  88. package/dist/components/git/GitFileItem.js +0 -145
  89. package/dist/components/git/GitFileItem.js.map +0 -1
  90. package/dist/components/git/GitFileList.js +0 -108
  91. package/dist/components/git/GitFileList.js.map +0 -1
  92. package/dist/components/git/GitSidebar.js +0 -156
  93. package/dist/components/git/GitSidebar.js.map +0 -1
  94. package/dist/components/git/GitSidebarToggle.js +0 -18
  95. package/dist/components/git/GitSidebarToggle.js.map +0 -1
  96. package/dist/components/mcp/AddMCPServerModal.js +0 -166
  97. package/dist/components/mcp/AddMCPServerModal.js.map +0 -1
  98. package/dist/components/mcp/MCPSidebar.js +0 -192
  99. package/dist/components/mcp/MCPSidebar.js.map +0 -1
  100. package/dist/components/mcp/MCPSidebarToggle.js +0 -14
  101. package/dist/components/mcp/MCPSidebarToggle.js.map +0 -1
  102. package/dist/components/mcp/index.js +0 -4
  103. package/dist/components/mcp/index.js.map +0 -1
  104. package/dist/components/messages/AssistantMessageGroup.js +0 -176
  105. package/dist/components/messages/AssistantMessageGroup.js.map +0 -1
  106. package/dist/components/messages/MessagePartItem.js +0 -362
  107. package/dist/components/messages/MessagePartItem.js.map +0 -1
  108. package/dist/components/messages/MessageThread.js +0 -239
  109. package/dist/components/messages/MessageThread.js.map +0 -1
  110. package/dist/components/messages/MessageThreadContainer.js +0 -22
  111. package/dist/components/messages/MessageThreadContainer.js.map +0 -1
  112. package/dist/components/messages/ToolApprovalCard.js +0 -143
  113. package/dist/components/messages/ToolApprovalCard.js.map +0 -1
  114. package/dist/components/messages/TopupApprovalCard.js +0 -52
  115. package/dist/components/messages/TopupApprovalCard.js.map +0 -1
  116. package/dist/components/messages/UserMessageGroup.js +0 -132
  117. package/dist/components/messages/UserMessageGroup.js.map +0 -1
  118. package/dist/components/messages/renderers/ApplyPatchRenderer.js +0 -55
  119. package/dist/components/messages/renderers/ApplyPatchRenderer.js.map +0 -1
  120. package/dist/components/messages/renderers/BashRenderer.js +0 -55
  121. package/dist/components/messages/renderers/BashRenderer.js.map +0 -1
  122. package/dist/components/messages/renderers/DatabaseToolRenderer.js +0 -151
  123. package/dist/components/messages/renderers/DatabaseToolRenderer.js.map +0 -1
  124. package/dist/components/messages/renderers/DebugRenderer.js +0 -5
  125. package/dist/components/messages/renderers/DebugRenderer.js.map +0 -1
  126. package/dist/components/messages/renderers/DiffView.js +0 -206
  127. package/dist/components/messages/renderers/DiffView.js.map +0 -1
  128. package/dist/components/messages/renderers/EditRenderer.js +0 -25
  129. package/dist/components/messages/renderers/EditRenderer.js.map +0 -1
  130. package/dist/components/messages/renderers/ErrorRenderer.js +0 -162
  131. package/dist/components/messages/renderers/ErrorRenderer.js.map +0 -1
  132. package/dist/components/messages/renderers/FinishRenderer.js +0 -7
  133. package/dist/components/messages/renderers/FinishRenderer.js.map +0 -1
  134. package/dist/components/messages/renderers/GenericRenderer.js +0 -50
  135. package/dist/components/messages/renderers/GenericRenderer.js.map +0 -1
  136. package/dist/components/messages/renderers/GitCommitRenderer.js +0 -21
  137. package/dist/components/messages/renderers/GitCommitRenderer.js.map +0 -1
  138. package/dist/components/messages/renderers/GitDiffRenderer.js +0 -34
  139. package/dist/components/messages/renderers/GitDiffRenderer.js.map +0 -1
  140. package/dist/components/messages/renderers/GitStatusRenderer.js +0 -60
  141. package/dist/components/messages/renderers/GitStatusRenderer.js.map +0 -1
  142. package/dist/components/messages/renderers/ListRenderer.js +0 -28
  143. package/dist/components/messages/renderers/ListRenderer.js.map +0 -1
  144. package/dist/components/messages/renderers/LoadMcpToolsRenderer.js +0 -20
  145. package/dist/components/messages/renderers/LoadMcpToolsRenderer.js.map +0 -1
  146. package/dist/components/messages/renderers/McpToolRenderer.js +0 -68
  147. package/dist/components/messages/renderers/McpToolRenderer.js.map +0 -1
  148. package/dist/components/messages/renderers/ProgressUpdateRenderer.js +0 -9
  149. package/dist/components/messages/renderers/ProgressUpdateRenderer.js.map +0 -1
  150. package/dist/components/messages/renderers/ReadRenderer.js +0 -87
  151. package/dist/components/messages/renderers/ReadRenderer.js.map +0 -1
  152. package/dist/components/messages/renderers/ReasoningRenderer.js +0 -34
  153. package/dist/components/messages/renderers/ReasoningRenderer.js.map +0 -1
  154. package/dist/components/messages/renderers/SearchRenderer.js +0 -52
  155. package/dist/components/messages/renderers/SearchRenderer.js.map +0 -1
  156. package/dist/components/messages/renderers/SkillRenderer.js +0 -36
  157. package/dist/components/messages/renderers/SkillRenderer.js.map +0 -1
  158. package/dist/components/messages/renderers/TerminalRenderer.js +0 -84
  159. package/dist/components/messages/renderers/TerminalRenderer.js.map +0 -1
  160. package/dist/components/messages/renderers/TodosRenderer.js +0 -15
  161. package/dist/components/messages/renderers/TodosRenderer.js.map +0 -1
  162. package/dist/components/messages/renderers/ToolErrorDisplay.js +0 -10
  163. package/dist/components/messages/renderers/ToolErrorDisplay.js.map +0 -1
  164. package/dist/components/messages/renderers/TreeRenderer.js +0 -33
  165. package/dist/components/messages/renderers/TreeRenderer.js.map +0 -1
  166. package/dist/components/messages/renderers/WebSearchRenderer.js +0 -29
  167. package/dist/components/messages/renderers/WebSearchRenderer.js.map +0 -1
  168. package/dist/components/messages/renderers/WriteRenderer.js +0 -28
  169. package/dist/components/messages/renderers/WriteRenderer.js.map +0 -1
  170. package/dist/components/messages/renderers/index.js +0 -129
  171. package/dist/components/messages/renderers/index.js.map +0 -1
  172. package/dist/components/messages/renderers/shared/CopyButton.js +0 -27
  173. package/dist/components/messages/renderers/shared/CopyButton.js.map +0 -1
  174. package/dist/components/messages/renderers/shared/ImagePreview.js +0 -14
  175. package/dist/components/messages/renderers/shared/ImagePreview.js.map +0 -1
  176. package/dist/components/messages/renderers/shared/ToolContentBox.js +0 -9
  177. package/dist/components/messages/renderers/shared/ToolContentBox.js.map +0 -1
  178. package/dist/components/messages/renderers/shared/ToolHeader.js +0 -69
  179. package/dist/components/messages/renderers/shared/ToolHeader.js.map +0 -1
  180. package/dist/components/messages/renderers/shared/index.js +0 -5
  181. package/dist/components/messages/renderers/shared/index.js.map +0 -1
  182. package/dist/components/messages/renderers/types.js +0 -2
  183. package/dist/components/messages/renderers/types.js.map +0 -1
  184. package/dist/components/messages/renderers/utils.js +0 -60
  185. package/dist/components/messages/renderers/utils.js.map +0 -1
  186. package/dist/components/onboarding/OnboardingModal.js +0 -22
  187. package/dist/components/onboarding/OnboardingModal.js.map +0 -1
  188. package/dist/components/onboarding/index.js +0 -4
  189. package/dist/components/onboarding/index.js.map +0 -1
  190. package/dist/components/onboarding/steps/DefaultsStep.js +0 -104
  191. package/dist/components/onboarding/steps/DefaultsStep.js.map +0 -1
  192. package/dist/components/onboarding/steps/ProviderSetupStep.js +0 -398
  193. package/dist/components/onboarding/steps/ProviderSetupStep.js.map +0 -1
  194. package/dist/components/research/ResearchSidebar.js +0 -288
  195. package/dist/components/research/ResearchSidebar.js.map +0 -1
  196. package/dist/components/research/ResearchSidebarToggle.js +0 -15
  197. package/dist/components/research/ResearchSidebarToggle.js.map +0 -1
  198. package/dist/components/research/index.js +0 -3
  199. package/dist/components/research/index.js.map +0 -1
  200. package/dist/components/session-files/SessionFilesDiffPanel.js +0 -345
  201. package/dist/components/session-files/SessionFilesDiffPanel.js.map +0 -1
  202. package/dist/components/session-files/SessionFilesSidebar.js +0 -87
  203. package/dist/components/session-files/SessionFilesSidebar.js.map +0 -1
  204. package/dist/components/session-files/SessionFilesSidebarToggle.js +0 -15
  205. package/dist/components/session-files/SessionFilesSidebarToggle.js.map +0 -1
  206. package/dist/components/session-files/index.js +0 -4
  207. package/dist/components/session-files/index.js.map +0 -1
  208. package/dist/components/sessions/EditableTitle.js +0 -40
  209. package/dist/components/sessions/EditableTitle.js.map +0 -1
  210. package/dist/components/sessions/LeanHeader.js +0 -70
  211. package/dist/components/sessions/LeanHeader.js.map +0 -1
  212. package/dist/components/sessions/SessionHeader.js +0 -75
  213. package/dist/components/sessions/SessionHeader.js.map +0 -1
  214. package/dist/components/sessions/SessionItem.js +0 -28
  215. package/dist/components/sessions/SessionItem.js.map +0 -1
  216. package/dist/components/sessions/SessionListContainer.js +0 -86
  217. package/dist/components/sessions/SessionListContainer.js.map +0 -1
  218. package/dist/components/settings/SettingsSidebar.js +0 -212
  219. package/dist/components/settings/SettingsSidebar.js.map +0 -1
  220. package/dist/components/settings/SettingsSidebarToggle.js +0 -12
  221. package/dist/components/settings/SettingsSidebarToggle.js.map +0 -1
  222. package/dist/components/settings/SetuTopupModal.js +0 -306
  223. package/dist/components/settings/SetuTopupModal.js.map +0 -1
  224. package/dist/components/skills/SkillViewerPanel.js +0 -89
  225. package/dist/components/skills/SkillViewerPanel.js.map +0 -1
  226. package/dist/components/skills/SkillsSidebar.js +0 -59
  227. package/dist/components/skills/SkillsSidebar.js.map +0 -1
  228. package/dist/components/skills/SkillsSidebarToggle.js +0 -12
  229. package/dist/components/skills/SkillsSidebarToggle.js.map +0 -1
  230. package/dist/components/skills/index.js +0 -4
  231. package/dist/components/skills/index.js.map +0 -1
  232. package/dist/components/terminals/TerminalPanelToggle.js +0 -13
  233. package/dist/components/terminals/TerminalPanelToggle.js.map +0 -1
  234. package/dist/components/terminals/TerminalTabBar.js +0 -22
  235. package/dist/components/terminals/TerminalTabBar.js.map +0 -1
  236. package/dist/components/terminals/TerminalViewer.js +0 -371
  237. package/dist/components/terminals/TerminalViewer.js.map +0 -1
  238. package/dist/components/terminals/TerminalsPanel.js +0 -134
  239. package/dist/components/terminals/TerminalsPanel.js.map +0 -1
  240. package/dist/components/terminals/index.js +0 -11
  241. package/dist/components/terminals/index.js.map +0 -1
  242. package/dist/components/tunnel/TunnelSidebar.js +0 -55
  243. package/dist/components/tunnel/TunnelSidebar.js.map +0 -1
  244. package/dist/components/tunnel/TunnelSidebarToggle.js +0 -14
  245. package/dist/components/tunnel/TunnelSidebarToggle.js.map +0 -1
  246. package/dist/components/tunnel/index.js +0 -3
  247. package/dist/components/tunnel/index.js.map +0 -1
  248. package/dist/components/ui/Button.js +0 -19
  249. package/dist/components/ui/Button.js.map +0 -1
  250. package/dist/components/ui/Card.js +0 -7
  251. package/dist/components/ui/Card.js.map +0 -1
  252. package/dist/components/ui/ConfirmationDialog.js +0 -72
  253. package/dist/components/ui/ConfirmationDialog.js.map +0 -1
  254. package/dist/components/ui/Input.js +0 -7
  255. package/dist/components/ui/Input.js.map +0 -1
  256. package/dist/components/ui/Modal.js +0 -51
  257. package/dist/components/ui/Modal.js.map +0 -1
  258. package/dist/components/ui/ResizeHandle.js +0 -39
  259. package/dist/components/ui/ResizeHandle.js.map +0 -1
  260. package/dist/components/ui/Textarea.js +0 -7
  261. package/dist/components/ui/Textarea.js.map +0 -1
  262. package/dist/components/ui/Toaster.js +0 -41
  263. package/dist/components/ui/Toaster.js.map +0 -1
  264. package/dist/components/ui/ToolApprovalDialog.js +0 -57
  265. package/dist/components/ui/ToolApprovalDialog.js.map +0 -1
  266. package/dist/hooks/useAuthStatus.js +0 -287
  267. package/dist/hooks/useAuthStatus.js.map +0 -1
  268. package/dist/hooks/useBranch.js +0 -44
  269. package/dist/hooks/useBranch.js.map +0 -1
  270. package/dist/hooks/useCommandSuggestions.js +0 -86
  271. package/dist/hooks/useCommandSuggestions.js.map +0 -1
  272. package/dist/hooks/useConfig.js +0 -32
  273. package/dist/hooks/useConfig.js.map +0 -1
  274. package/dist/hooks/useFileBrowser.js +0 -30
  275. package/dist/hooks/useFileBrowser.js.map +0 -1
  276. package/dist/hooks/useFileMention.js +0 -56
  277. package/dist/hooks/useFileMention.js.map +0 -1
  278. package/dist/hooks/useFileUpload.js +0 -317
  279. package/dist/hooks/useFileUpload.js.map +0 -1
  280. package/dist/hooks/useFiles.js +0 -15
  281. package/dist/hooks/useFiles.js.map +0 -1
  282. package/dist/hooks/useGit.js +0 -149
  283. package/dist/hooks/useGit.js.map +0 -1
  284. package/dist/hooks/useImageUpload.js +0 -197
  285. package/dist/hooks/useImageUpload.js.map +0 -1
  286. package/dist/hooks/useKeyboardShortcuts.js +0 -249
  287. package/dist/hooks/useKeyboardShortcuts.js.map +0 -1
  288. package/dist/hooks/useMCP.js +0 -202
  289. package/dist/hooks/useMCP.js.map +0 -1
  290. package/dist/hooks/useMessages.js +0 -26
  291. package/dist/hooks/useMessages.js.map +0 -1
  292. package/dist/hooks/usePreferences.js +0 -61
  293. package/dist/hooks/usePreferences.js.map +0 -1
  294. package/dist/hooks/useProviderUsage.js +0 -44
  295. package/dist/hooks/useProviderUsage.js.map +0 -1
  296. package/dist/hooks/useQueueState.js +0 -31
  297. package/dist/hooks/useQueueState.js.map +0 -1
  298. package/dist/hooks/useResearch.js +0 -139
  299. package/dist/hooks/useResearch.js.map +0 -1
  300. package/dist/hooks/useSessionFiles.js +0 -15
  301. package/dist/hooks/useSessionFiles.js.map +0 -1
  302. package/dist/hooks/useSessionStream.js +0 -572
  303. package/dist/hooks/useSessionStream.js.map +0 -1
  304. package/dist/hooks/useSessions.js +0 -83
  305. package/dist/hooks/useSessions.js.map +0 -1
  306. package/dist/hooks/useSetuBalance.js +0 -71
  307. package/dist/hooks/useSetuBalance.js.map +0 -1
  308. package/dist/hooks/useSetuPayments.js +0 -171
  309. package/dist/hooks/useSetuPayments.js.map +0 -1
  310. package/dist/hooks/useShareStatus.js +0 -12
  311. package/dist/hooks/useShareStatus.js.map +0 -1
  312. package/dist/hooks/useSkills.js +0 -54
  313. package/dist/hooks/useSkills.js.map +0 -1
  314. package/dist/hooks/useTerminals.js +0 -67
  315. package/dist/hooks/useTerminals.js.map +0 -1
  316. package/dist/hooks/useTheme.js +0 -57
  317. package/dist/hooks/useTheme.js.map +0 -1
  318. package/dist/hooks/useToolApprovalShortcuts.js +0 -88
  319. package/dist/hooks/useToolApprovalShortcuts.js.map +0 -1
  320. package/dist/hooks/useTopupCallback.js +0 -74
  321. package/dist/hooks/useTopupCallback.js.map +0 -1
  322. package/dist/hooks/useTunnel.js +0 -158
  323. package/dist/hooks/useTunnel.js.map +0 -1
  324. package/dist/hooks/useVimMode.js +0 -298
  325. package/dist/hooks/useVimMode.js.map +0 -1
  326. package/dist/hooks/useWorkingDirectory.js +0 -34
  327. package/dist/hooks/useWorkingDirectory.js.map +0 -1
  328. package/dist/lib/api-client/approval.js +0 -25
  329. package/dist/lib/api-client/approval.js.map +0 -1
  330. package/dist/lib/api-client/auth.js +0 -139
  331. package/dist/lib/api-client/auth.js.map +0 -1
  332. package/dist/lib/api-client/branches.js +0 -45
  333. package/dist/lib/api-client/branches.js.map +0 -1
  334. package/dist/lib/api-client/config.js +0 -38
  335. package/dist/lib/api-client/config.js.map +0 -1
  336. package/dist/lib/api-client/files.js +0 -35
  337. package/dist/lib/api-client/files.js.map +0 -1
  338. package/dist/lib/api-client/git.js +0 -154
  339. package/dist/lib/api-client/git.js.map +0 -1
  340. package/dist/lib/api-client/index.js +0 -92
  341. package/dist/lib/api-client/index.js.map +0 -1
  342. package/dist/lib/api-client/sessions.js +0 -106
  343. package/dist/lib/api-client/sessions.js.map +0 -1
  344. package/dist/lib/api-client/setu.js +0 -144
  345. package/dist/lib/api-client/setu.js.map +0 -1
  346. package/dist/lib/api-client/skills.js +0 -31
  347. package/dist/lib/api-client/skills.js.map +0 -1
  348. package/dist/lib/api-client/utils.js +0 -65
  349. package/dist/lib/api-client/utils.js.map +0 -1
  350. package/dist/lib/commands.js +0 -124
  351. package/dist/lib/commands.js.map +0 -1
  352. package/dist/lib/config.js +0 -28
  353. package/dist/lib/config.js.map +0 -1
  354. package/dist/lib/nerd-font.js +0 -55
  355. package/dist/lib/nerd-font.js.map +0 -1
  356. package/dist/lib/open-url.js +0 -9
  357. package/dist/lib/open-url.js.map +0 -1
  358. package/dist/lib/parseResearchContext.js +0 -30
  359. package/dist/lib/parseResearchContext.js.map +0 -1
  360. package/dist/lib/sse-client.js +0 -113
  361. package/dist/lib/sse-client.js.map +0 -1
  362. package/dist/stores/confirmationStore.js +0 -27
  363. package/dist/stores/confirmationStore.js.map +0 -1
  364. package/dist/stores/fileBrowserStore.js +0 -63
  365. package/dist/stores/fileBrowserStore.js.map +0 -1
  366. package/dist/stores/filePickerStore.js +0 -8
  367. package/dist/stores/filePickerStore.js.map +0 -1
  368. package/dist/stores/focusStore.js +0 -12
  369. package/dist/stores/focusStore.js.map +0 -1
  370. package/dist/stores/gitStore.js +0 -63
  371. package/dist/stores/gitStore.js.map +0 -1
  372. package/dist/stores/mcpStore.js +0 -63
  373. package/dist/stores/mcpStore.js.map +0 -1
  374. package/dist/stores/onboardingStore.js +0 -38
  375. package/dist/stores/onboardingStore.js.map +0 -1
  376. package/dist/stores/panelWidthStore.js +0 -12
  377. package/dist/stores/panelWidthStore.js.map +0 -1
  378. package/dist/stores/pendingResearchStore.js +0 -38
  379. package/dist/stores/pendingResearchStore.js.map +0 -1
  380. package/dist/stores/queueStore.js +0 -11
  381. package/dist/stores/queueStore.js.map +0 -1
  382. package/dist/stores/researchStore.js +0 -54
  383. package/dist/stores/researchStore.js.map +0 -1
  384. package/dist/stores/sessionFilesStore.js +0 -62
  385. package/dist/stores/sessionFilesStore.js.map +0 -1
  386. package/dist/stores/settingsStore.js +0 -29
  387. package/dist/stores/settingsStore.js.map +0 -1
  388. package/dist/stores/setuStore.js +0 -29
  389. package/dist/stores/setuStore.js.map +0 -1
  390. package/dist/stores/sidebarStore.js +0 -10
  391. package/dist/stores/sidebarStore.js.map +0 -1
  392. package/dist/stores/skillsStore.js +0 -46
  393. package/dist/stores/skillsStore.js.map +0 -1
  394. package/dist/stores/terminalStore.js +0 -32
  395. package/dist/stores/terminalStore.js.map +0 -1
  396. package/dist/stores/toastStore.js +0 -46
  397. package/dist/stores/toastStore.js.map +0 -1
  398. package/dist/stores/toolApprovalStore.js +0 -16
  399. package/dist/stores/toolApprovalStore.js.map +0 -1
  400. package/dist/stores/topupApprovalStore.js +0 -11
  401. package/dist/stores/topupApprovalStore.js.map +0 -1
  402. package/dist/stores/tunnelStore.js +0 -55
  403. package/dist/stores/tunnelStore.js.map +0 -1
  404. package/dist/stores/usageStore.js +0 -14
  405. package/dist/stores/usageStore.js.map +0 -1
@@ -1,192 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { memo, useState, useCallback, useMemo, useEffect, useRef } from 'react';
3
- import { ChevronDown, ChevronRight, ClipboardCopy, ExternalLink, FolderDot, Globe, Laptop, Loader2, Lock, Plug, Plus, Trash2, Wrench, } from 'lucide-react';
4
- import { Button } from '../ui/Button';
5
- import { Modal } from '../ui/Modal';
6
- import { useMCPStore } from '../../stores/mcpStore';
7
- import { useQueryClient } from '@tanstack/react-query';
8
- import { useMCPServers, useStartMCPServer, useStopMCPServer, useRemoveMCPServer, useAuthenticateMCPServer, useMCPAuthStatus, useCopilotDevicePoller, } from '../../hooks/useMCP';
9
- import { openUrl } from '../../lib/open-url';
10
- import { AddMCPServerModal } from './AddMCPServerModal';
11
- const ToggleSwitch = memo(function ToggleSwitch({ checked, loading, onChange, disabled, }) {
12
- return (_jsx("button", { type: "button", role: "switch", "aria-checked": checked, disabled: disabled || loading, onClick: (e) => {
13
- e.stopPropagation();
14
- onChange();
15
- }, className: `relative inline-flex h-5 w-9 flex-shrink-0 items-center rounded-full transition-colors duration-200 focus-visible:outline-none disabled:opacity-50 disabled:cursor-not-allowed ${checked ? 'bg-green-500' : 'bg-muted-foreground/30'}`, children: _jsx("span", { className: `inline-block h-3.5 w-3.5 rounded-full transition-transform duration-200 ${checked ? 'translate-x-[18px]' : 'translate-x-[3px]'} ${loading ? 'bg-transparent' : 'bg-white'}`, children: loading && _jsx(Loader2, { className: "w-3.5 h-3.5 animate-spin text-white" }) }) }));
16
- });
17
- const CopilotDeviceAuth = memo(function CopilotDeviceAuth({ userCode, verificationUri, }) {
18
- const [copied, setCopied] = useState(false);
19
- const handleCopy = useCallback(() => {
20
- navigator.clipboard.writeText(userCode).then(() => {
21
- setCopied(true);
22
- setTimeout(() => setCopied(false), 2000);
23
- });
24
- }, [userCode]);
25
- return (_jsx("div", { className: "px-3 pb-2.5 pt-0", children: _jsxs("div", { className: "rounded-md bg-yellow-500/10 border border-yellow-500/20 p-2 space-y-1.5", children: [_jsxs("div", { className: "flex items-center gap-1.5 text-xs", children: [_jsx(Loader2, { className: "w-3 h-3 animate-spin text-yellow-500 flex-shrink-0" }), _jsx("span", { className: "text-yellow-500/80", children: "Enter code at GitHub:" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("code", { className: "text-sm font-mono font-bold text-yellow-400 tracking-wider", children: userCode }), _jsx("button", { type: "button", onClick: handleCopy, className: "text-yellow-500/60 hover:text-yellow-400 transition-colors", title: "Copy code", children: _jsx(ClipboardCopy, { className: "w-3.5 h-3.5" }) }), copied && _jsx("span", { className: "text-xs text-green-400", children: "Copied!" })] }), _jsxs("a", { href: verificationUri, target: "_blank", rel: "noopener noreferrer", onClick: (e) => {
26
- e.preventDefault();
27
- openUrl(verificationUri);
28
- }, className: "inline-flex items-center gap-1 text-xs text-yellow-400 hover:text-yellow-300 underline underline-offset-2", children: ["Open GitHub login", _jsx(ExternalLink, { className: "w-3 h-3" })] })] }) }));
29
- });
30
- const MCPServerCard = memo(function MCPServerCard({ server, isLoading, authUrl, copilotDevice, onStart, onStop, onRemove, onAuth, }) {
31
- const [showTools, setShowTools] = useState(false);
32
- const hasTools = server.connected && server.tools.length > 0;
33
- const isRemote = server.transport === 'http' || server.transport === 'sse';
34
- const isAwaitingAuth = (!!authUrl || !!copilotDevice) && !server.connected;
35
- const handleToggle = useCallback(() => {
36
- if (server.authRequired && !server.connected) {
37
- onAuth();
38
- }
39
- else if (server.connected) {
40
- onStop();
41
- }
42
- else {
43
- onStart();
44
- }
45
- }, [server.connected, server.authRequired, onAuth, onStop, onStart]);
46
- const toggleTools = useCallback(() => {
47
- if (hasTools)
48
- setShowTools((prev) => !prev);
49
- }, [hasTools]);
50
- return (_jsxs("div", { className: `rounded-lg border transition-colors duration-200 group ${server.connected
51
- ? 'border-green-500/30 bg-green-500/5'
52
- : isAwaitingAuth
53
- ? 'border-yellow-500/30 bg-yellow-500/5'
54
- : 'border-border bg-transparent'}`, children: [_jsxs("div", { className: "flex items-center gap-3 px-3 py-2.5", children: [_jsx(ToggleSwitch, { checked: server.connected, loading: isLoading || isAwaitingAuth, onChange: handleToggle }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: "text-sm font-medium truncate", children: server.name }), isRemote && (_jsx(Globe, { className: "w-3 h-3 text-muted-foreground flex-shrink-0" })), server.authRequired && !server.connected && (_jsx(Lock, { className: "w-3 h-3 text-yellow-500 flex-shrink-0" }))] }), _jsxs("div", { className: "flex items-center gap-1.5 mt-0.5", children: [_jsx("span", { className: "text-xs text-muted-foreground truncate", children: isRemote
55
- ? server.url
56
- : `${server.command ?? ''} ${server.args.join(' ')}` }), _jsx("span", { className: "flex items-center flex-shrink-0 opacity-50", title: server.scope === 'project' ? 'Project-local' : 'Global', children: server.scope === 'project' ? (_jsx(FolderDot, { className: "w-3 h-3" })) : (_jsx(Laptop, { className: "w-3 h-3" })) })] })] }), _jsxs("div", { className: "flex items-center gap-0.5 flex-shrink-0", children: [hasTools && (_jsxs("button", { type: "button", onClick: toggleTools, className: "flex items-center gap-0.5 text-xs text-muted-foreground hover:text-foreground px-1.5 py-1 rounded transition-colors", children: [_jsx(Wrench, { className: "w-3 h-3" }), server.tools.length, showTools ? (_jsx(ChevronDown, { className: "w-3 h-3" })) : (_jsx(ChevronRight, { className: "w-3 h-3" }))] })), _jsx(Button, { variant: "ghost", size: "icon", onClick: onRemove, title: "Remove server", className: "h-6 w-6 opacity-0 group-hover:opacity-100 transition-opacity", children: _jsx(Trash2, { className: "w-3 h-3 text-muted-foreground hover:text-red-400" }) })] })] }), copilotDevice && !server.connected && (_jsx(CopilotDeviceAuth, { userCode: copilotDevice.userCode, verificationUri: copilotDevice.verificationUri })), !copilotDevice && isAwaitingAuth && authUrl && (_jsx("div", { className: "px-3 pb-2.5 pt-0", children: _jsxs("div", { className: "flex items-center gap-1.5 text-xs", children: [_jsx(Loader2, { className: "w-3 h-3 animate-spin text-yellow-500 flex-shrink-0" }), _jsx("span", { className: "text-yellow-500/80", children: "Waiting for auth..." }), _jsxs("a", { href: authUrl, target: "_blank", rel: "noopener noreferrer", onClick: (e) => {
57
- e.preventDefault();
58
- openUrl(authUrl);
59
- }, className: "inline-flex items-center gap-0.5 text-yellow-400 hover:text-yellow-300 underline underline-offset-2", children: ["Open login", _jsx(ExternalLink, { className: "w-3 h-3" })] })] }) })), hasTools && showTools && (_jsx("div", { className: "px-3 pb-2.5 pt-0", children: _jsx("div", { className: "flex flex-wrap gap-1", children: server.tools.map((tool) => (_jsx("span", { className: "text-xs bg-muted px-1.5 py-0.5 rounded", title: tool, children: tool.split('__').pop() }, tool))) }) }))] }));
60
- });
61
- function useAuthPoller(name, onAuthenticated) {
62
- const { data } = useMCPAuthStatus(name);
63
- const prevAuth = useRef(false);
64
- useEffect(() => {
65
- if (data?.authenticated && !prevAuth.current) {
66
- onAuthenticated();
67
- }
68
- prevAuth.current = data?.authenticated ?? false;
69
- }, [data?.authenticated, onAuthenticated]);
70
- }
71
- export const MCPSidebar = memo(function MCPSidebar() {
72
- const isExpanded = useMCPStore((s) => s.isExpanded);
73
- const collapseSidebar = useMCPStore((s) => s.collapseSidebar);
74
- const servers = useMCPStore((s) => s.servers);
75
- const loading = useMCPStore((s) => s.loading);
76
- const authUrls = useMCPStore((s) => s.authUrls);
77
- const setAuthUrl = useMCPStore((s) => s.setAuthUrl);
78
- const setLoading = useMCPStore((s) => s.setLoading);
79
- const setCopilotDevice = useMCPStore((s) => s.setCopilotDevice);
80
- const { isLoading: isFetching } = useMCPServers();
81
- const startServer = useStartMCPServer();
82
- const stopServer = useStopMCPServer();
83
- const removeServer = useRemoveMCPServer();
84
- const authServer = useAuthenticateMCPServer();
85
- const copilotDevice = useCopilotDevicePoller();
86
- const [isAddModalOpen, setIsAddModalOpen] = useState(false);
87
- const [pollingServer, setPollingServer] = useState(null);
88
- const [deleteTarget, setDeleteTarget] = useState(null);
89
- const queryClient = useQueryClient();
90
- const handleAuthCompleted = useCallback(() => {
91
- if (pollingServer) {
92
- setAuthUrl(pollingServer, null);
93
- setPollingServer(null);
94
- queryClient.invalidateQueries({ queryKey: ['mcp', 'servers'] });
95
- }
96
- }, [pollingServer, setAuthUrl, queryClient]);
97
- useAuthPoller(pollingServer, handleAuthCompleted);
98
- useEffect(() => {
99
- for (const name of loading) {
100
- const server = servers.find((s) => s.name === name);
101
- if (server?.connected) {
102
- setLoading(name, false);
103
- }
104
- }
105
- }, [servers, loading, setLoading]);
106
- const handleCopilotDeviceResponse = useCallback((name, result) => {
107
- if (result.sessionId && result.userCode && result.verificationUri) {
108
- setCopilotDevice({
109
- sessionId: result.sessionId,
110
- userCode: result.userCode,
111
- verificationUri: result.verificationUri,
112
- interval: result.interval ?? 5,
113
- serverName: name,
114
- });
115
- openUrl(result.verificationUri);
116
- }
117
- }, [setCopilotDevice]);
118
- const handleAuth = useCallback(async (name) => {
119
- try {
120
- setLoading(name, true);
121
- const result = await authServer.mutateAsync(name);
122
- if (result.authType === 'copilot-device') {
123
- if (result.authenticated) {
124
- setLoading(name, false);
125
- queryClient.invalidateQueries({ queryKey: ['mcp', 'servers'] });
126
- return;
127
- }
128
- handleCopilotDeviceResponse(name, result);
129
- }
130
- else if (result.authUrl) {
131
- setAuthUrl(name, result.authUrl);
132
- setPollingServer(name);
133
- openUrl(result.authUrl);
134
- }
135
- else {
136
- setLoading(name, false);
137
- }
138
- }
139
- catch {
140
- setLoading(name, false);
141
- setAuthUrl(name, null);
142
- }
143
- }, [
144
- authServer,
145
- setAuthUrl,
146
- setLoading,
147
- handleCopilotDeviceResponse,
148
- queryClient,
149
- ]);
150
- const handleStart = useCallback(async (name) => {
151
- try {
152
- setLoading(name, true);
153
- const result = await startServer.mutateAsync(name);
154
- if (result.authType === 'copilot-device' && !result.connected) {
155
- handleCopilotDeviceResponse(name, result);
156
- }
157
- else if (result.authRequired && result.authUrl) {
158
- setAuthUrl(name, result.authUrl);
159
- setPollingServer(name);
160
- openUrl(result.authUrl);
161
- }
162
- else {
163
- setLoading(name, false);
164
- }
165
- }
166
- catch {
167
- setLoading(name, false);
168
- setAuthUrl(name, null);
169
- }
170
- }, [startServer, setAuthUrl, setLoading, handleCopilotDeviceResponse]);
171
- const sortedServers = useMemo(() => {
172
- return [...servers].sort((a, b) => {
173
- if (a.connected && !b.connected)
174
- return -1;
175
- if (!a.connected && b.connected)
176
- return 1;
177
- return a.name.localeCompare(b.name);
178
- });
179
- }, [servers]);
180
- if (!isExpanded)
181
- return null;
182
- const connectedCount = servers.filter((s) => s.connected).length;
183
- return (_jsxs("div", { className: "w-80 border-l border-border bg-background flex flex-col h-full", children: [_jsxs("div", { className: "h-14 flex items-center justify-between px-3 border-b border-border", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Plug, { className: "w-4 h-4 text-muted-foreground" }), _jsx("span", { className: "font-medium text-sm", children: "MCP Servers" }), connectedCount > 0 && (_jsxs("span", { className: "text-xs bg-green-500/20 text-green-400 px-1.5 py-0.5 rounded-full", children: [connectedCount, " active"] }))] }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx(Button, { variant: "ghost", size: "icon", onClick: () => setIsAddModalOpen(true), title: "Add MCP server", className: "h-7 w-7", children: _jsx(Plus, { className: "w-4 h-4" }) }), _jsx(Button, { variant: "ghost", size: "icon", onClick: collapseSidebar, title: "Close sidebar", children: _jsx(ChevronRight, { className: "w-4 h-4" }) })] })] }), _jsx("div", { className: "flex-1 overflow-y-auto", children: isFetching && servers.length === 0 ? (_jsxs("div", { className: "flex items-center justify-center h-32 text-muted-foreground", children: [_jsx(Loader2, { className: "w-4 h-4 animate-spin mr-2" }), "Loading..."] })) : servers.length === 0 ? (_jsxs("div", { className: "p-4 text-sm text-muted-foreground space-y-3", children: [_jsx("p", { children: "No MCP servers configured." }), _jsxs(Button, { variant: "primary", size: "sm", onClick: () => setIsAddModalOpen(true), className: "w-full", children: [_jsx(Plus, { className: "w-3 h-3 mr-1" }), "Add MCP Server"] }), _jsxs("p", { className: "text-xs", children: ["Or add servers to", ' ', _jsx("code", { className: "bg-muted px-1 py-0.5 rounded text-xs", children: ".otto/config.json" })] })] })) : (_jsx("div", { className: "p-2 space-y-1.5", children: sortedServers.map((server) => (_jsx(MCPServerCard, { server: server, isLoading: loading.has(server.name), authUrl: authUrls.get(server.name), copilotDevice: copilotDevice?.serverName === server.name
184
- ? copilotDevice
185
- : null, onStart: () => handleStart(server.name), onStop: () => stopServer.mutate(server.name), onRemove: () => setDeleteTarget(server.name), onAuth: () => handleAuth(server.name) }, server.name))) })) }), _jsx(AddMCPServerModal, { isOpen: isAddModalOpen, onClose: () => setIsAddModalOpen(false) }), _jsxs(Modal, { isOpen: !!deleteTarget, onClose: () => setDeleteTarget(null), title: "Remove MCP Server", maxWidth: "sm", showCloseButton: false, children: [_jsxs("p", { className: "text-sm text-muted-foreground mb-4", children: ["Are you sure you want to remove", ' ', _jsx("span", { className: "font-medium text-foreground", children: deleteTarget }), "? This will stop the server and remove its configuration."] }), _jsxs("div", { className: "flex justify-end gap-2", children: [_jsx(Button, { variant: "secondary", size: "sm", onClick: () => setDeleteTarget(null), children: "Cancel" }), _jsx(Button, { variant: "primary", size: "sm", className: "bg-red-500 hover:bg-red-600 text-white", onClick: () => {
186
- if (deleteTarget) {
187
- removeServer.mutate(deleteTarget);
188
- }
189
- setDeleteTarget(null);
190
- }, children: "Remove" })] })] })] }));
191
- });
192
- //# sourceMappingURL=MCPSidebar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MCPSidebar.js","sourceRoot":"","sources":["../../../src/components/mcp/MCPSidebar.tsx"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { memo } from 'react';
3
- import { Plug } from 'lucide-react';
4
- import { useMCPStore } from '../../stores/mcpStore';
5
- export const MCPSidebarToggle = memo(function MCPSidebarToggle() {
6
- const isExpanded = useMCPStore((state) => state.isExpanded);
7
- const toggleSidebar = useMCPStore((state) => state.toggleSidebar);
8
- const servers = useMCPStore((state) => state.servers);
9
- const connectedCount = servers.filter((s) => s.connected).length;
10
- return (_jsxs("button", { type: "button", onClick: toggleSidebar, className: `relative h-14 w-full transition-colors touch-manipulation flex items-center justify-center border-r-2 ${isExpanded
11
- ? 'bg-muted border-primary'
12
- : 'border-transparent hover:bg-muted/50'}`, title: "MCP Servers", children: [_jsx(Plug, { className: "w-5 h-5 text-muted-foreground mx-auto" }), connectedCount > 0 && (_jsx("span", { className: "absolute top-2 right-2 w-2 h-2 bg-green-500 rounded-full" }))] }));
13
- });
14
- //# sourceMappingURL=MCPSidebarToggle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MCPSidebarToggle.js","sourceRoot":"","sources":["../../../src/components/mcp/MCPSidebarToggle.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,gBAAgB;IAC7D,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;IAEjE,OAAO,CACN,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,yGACV,UAAU;YACT,CAAC,CAAC,yBAAyB;YAC3B,CAAC,CAAC,sCACJ,EAAE,EACF,KAAK,EAAC,aAAa,aAEnB,KAAC,IAAI,IAAC,SAAS,EAAC,uCAAuC,GAAG,EACzD,cAAc,GAAG,CAAC,IAAI,CACtB,eAAM,SAAS,EAAC,0DAA0D,GAAG,CAC7E,IACO,CACT,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,4 +0,0 @@
1
- export { MCPSidebar } from './MCPSidebar';
2
- export { MCPSidebarToggle } from './MCPSidebarToggle';
3
- export { AddMCPServerModal } from './AddMCPServerModal';
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,176 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { memo, useState, useCallback, useMemo } from 'react';
3
- import { Sparkles, GitBranch, Copy, Check, Shield, CheckCheck, } from 'lucide-react';
4
- import { MessagePartItem } from './MessagePartItem';
5
- import { useMessageQueuePosition } from '../../hooks/useQueueState';
6
- import { BranchModal } from '../branch/BranchModal';
7
- import { ProviderLogo } from '../common/ProviderLogo';
8
- import { useToolApprovalStore } from '../../stores/toolApprovalStore';
9
- import { apiClient } from '../../lib/api-client';
10
- const loadingMessages = [
11
- 'Generating...',
12
- 'Cooking up something...',
13
- 'Thinking...',
14
- 'Processing...',
15
- 'Working on it...',
16
- 'Crafting response...',
17
- 'Brewing magic...',
18
- 'Computing...',
19
- ];
20
- function getLoadingMessage(messageId) {
21
- const hash = messageId
22
- .split('')
23
- .reduce((acc, char) => acc + char.charCodeAt(0), 0);
24
- return loadingMessages[hash % loadingMessages.length];
25
- }
26
- export const AssistantMessageGroup = memo(function AssistantMessageGroup({ sessionId, message, showHeader, hasNextAssistantMessage, onBranchCreated, compact, showBranchButton = true, onNavigateToSession, onRetry, onCompact, }) {
27
- const { isQueued } = useMessageQueuePosition(sessionId, message.id);
28
- const [isHovered, setIsHovered] = useState(false);
29
- const [showBranchModal, setShowBranchModal] = useState(false);
30
- const [copied, setCopied] = useState(false);
31
- // Tool approval handling
32
- const { pendingApprovals, removePendingApproval } = useToolApprovalStore();
33
- const handleApprove = useCallback(async (callId) => {
34
- if (!sessionId)
35
- return;
36
- try {
37
- await apiClient.approveToolCall(sessionId, callId, true);
38
- removePendingApproval(callId);
39
- }
40
- catch (error) {
41
- console.error('Failed to approve tool call:', error);
42
- }
43
- }, [sessionId, removePendingApproval]);
44
- const handleReject = useCallback(async (callId) => {
45
- if (!sessionId)
46
- return;
47
- try {
48
- await apiClient.approveToolCall(sessionId, callId, false);
49
- removePendingApproval(callId);
50
- }
51
- catch (error) {
52
- console.error('Failed to reject tool call:', error);
53
- }
54
- }, [sessionId, removePendingApproval]);
55
- // Handle approving all pending approvals for this message
56
- const messagePendingApprovals = useMemo(() => {
57
- return pendingApprovals.filter((a) => a.messageId === message.id);
58
- }, [pendingApprovals, message.id]);
59
- const handleApproveAll = useCallback(async () => {
60
- if (!sessionId)
61
- return;
62
- try {
63
- await Promise.all(messagePendingApprovals.map((a) => apiClient.approveToolCall(sessionId, a.callId, true)));
64
- for (const a of messagePendingApprovals) {
65
- removePendingApproval(a.callId);
66
- }
67
- }
68
- catch (error) {
69
- console.error('Failed to approve all tool calls:', error);
70
- }
71
- }, [sessionId, messagePendingApprovals, removePendingApproval]);
72
- // Sort parts by index to maintain correct order when tool results come in
73
- const parts = useMemo(() => {
74
- const rawParts = message.parts || [];
75
- return [...rawParts].sort((a, b) => {
76
- const indexDiff = (a.index ?? 0) - (b.index ?? 0);
77
- if (indexDiff !== 0)
78
- return indexDiff;
79
- // Secondary sort by startedAt for parts with same index
80
- return (a.startedAt ?? 0) - (b.startedAt ?? 0);
81
- });
82
- }, [message.parts]);
83
- const hasFinish = parts.some((part) => part.toolName === 'finish');
84
- const latestProgressUpdateIndex = parts.reduce((lastIndex, part, index) => part.type === 'tool_result' && part.toolName === 'progress_update'
85
- ? index
86
- : lastIndex, -1);
87
- const latestProgressUpdatePart = latestProgressUpdateIndex >= 0 ? parts[latestProgressUpdateIndex] : null;
88
- const hasVisibleNonProgressParts = parts.some((part) => !(part.type === 'tool_result' && part.toolName === 'progress_update'));
89
- const firstVisiblePartIndex = parts.findIndex((part) => !(part.type === 'tool_result' && part.toolName === 'progress_update'));
90
- const shouldShowProgressUpdate = message.status === 'pending' &&
91
- !hasFinish &&
92
- Boolean(latestProgressUpdatePart);
93
- const shouldShowLoadingFallback = message.status === 'pending' &&
94
- !hasFinish &&
95
- !latestProgressUpdatePart &&
96
- !isQueued;
97
- const formatTime = (ts) => {
98
- if (!ts)
99
- return '';
100
- const date = new Date(ts);
101
- return date.toLocaleTimeString([], {
102
- hour: '2-digit',
103
- minute: '2-digit',
104
- });
105
- };
106
- const isComplete = message.status === 'complete';
107
- const handleCopy = useCallback(() => {
108
- const textParts = parts
109
- .filter((p) => p.type === 'text')
110
- .map((p) => {
111
- try {
112
- const parsed = JSON.parse(p.content || '{}');
113
- return parsed?.text || '';
114
- }
115
- catch {
116
- return p.content || '';
117
- }
118
- })
119
- .join('\n');
120
- navigator.clipboard.writeText(textParts);
121
- setCopied(true);
122
- setTimeout(() => setCopied(false), 2000);
123
- }, [parts]);
124
- const handleBranchClick = useCallback(() => {
125
- setShowBranchModal(true);
126
- }, []);
127
- if (isQueued) {
128
- return null;
129
- }
130
- return (
131
- // biome-ignore lint/a11y/noStaticElementInteractions: hover state for showing actions
132
- _jsxs("div", { className: "relative group", onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: [showHeader && (_jsxs("div", { className: "pb-2 flex items-center justify-between", children: [_jsxs("div", { className: "inline-flex items-center bg-violet-500/10 border border-violet-500/30 dark:bg-violet-500/5 dark:border-violet-500/20 rounded-full pr-3 md:pr-4 flex-shrink min-w-0", children: [_jsx("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full border border-violet-500/50 bg-violet-500/20 dark:bg-violet-500/10", children: _jsx(Sparkles, { className: "h-3.5 w-3.5 text-violet-700 dark:text-violet-300" }) }), _jsxs("div", { className: "flex items-center gap-x-1.5 md:gap-x-2 text-xs md:text-sm text-muted-foreground pl-2 md:pl-3 min-w-0", children: [message.agent && !compact && (_jsx("span", { className: "font-medium text-violet-700 dark:text-violet-300 whitespace-nowrap", children: message.agent })), message.provider && (_jsxs(_Fragment, { children: [!compact && message.agent && (_jsx("span", { className: "text-muted-foreground/50", children: "\u00B7" })), _jsx(ProviderLogo, { provider: message.provider, size: 14, className: "opacity-70" })] })), message.model && (_jsxs(_Fragment, { children: [_jsx("span", { className: "hidden md:inline text-muted-foreground/50", children: "\u00B7" }), _jsx("span", { className: `hidden md:inline text-muted-foreground ${compact ? 'truncate max-w-[120px]' : ''}`, title: message.model, children: message.model })] })), message.createdAt && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-muted-foreground/50", children: "\u00B7" }), _jsx("span", { className: "text-muted-foreground whitespace-nowrap", children: formatTime(message.createdAt) })] }))] })] }), isHovered && isComplete && sessionId && showBranchButton && (_jsx("button", { type: "button", onClick: handleBranchClick, className: "ml-4 p-1.5 text-muted-foreground hover:text-primary transition-colors flex-shrink-0", title: "Branch from this message", children: _jsx(GitBranch, { className: "h-4 w-4" }) }))] })), _jsxs("div", { className: "relative ml-1", children: [parts.map((part, index) => {
133
- const isLastPart = index === parts.length - 1;
134
- // Find pending approval for this part's tool call
135
- const pendingApproval = part.type === 'tool_call' && part.toolCallId
136
- ? (pendingApprovals.find((a) => a.callId === part.toolCallId) ??
137
- null)
138
- : null;
139
- const isFinishTool = part.type === 'tool_result' && part.toolName === 'finish';
140
- const showLine = (!isLastPart || hasNextAssistantMessage) && !isFinishTool;
141
- const isLastToolCall = part.type === 'tool_call' && isLastPart;
142
- const isProgressUpdate = part.type === 'tool_result' &&
143
- part.toolName === 'progress_update';
144
- if (isProgressUpdate) {
145
- return null;
146
- }
147
- return (_jsx(MessagePartItem, { part: part, showLine: showLine, isFirstPart: index === firstVisiblePartIndex && !showHeader, isLastToolCall: isLastToolCall, onNavigateToSession: onNavigateToSession, compact: compact, pendingApproval: pendingApproval, onApprove: handleApprove, onReject: handleReject, sessionId: sessionId, onRetry: onRetry, onCompact: onCompact }, part.id));
148
- }), messagePendingApprovals.length > 1 && (_jsxs("div", { className: "flex items-center gap-3 py-2 px-3 my-2 bg-amber-50 dark:bg-amber-950/30 border border-amber-200 dark:border-amber-800 rounded-lg", children: [_jsx(Shield, { className: "h-4 w-4 text-amber-600 dark:text-amber-400 flex-shrink-0" }), _jsxs("span", { className: "text-sm text-amber-800 dark:text-amber-200 flex-1", children: [messagePendingApprovals.length, " tools waiting for approval"] }), _jsxs("button", { type: "button", onClick: handleApproveAll, title: "Approve All (A)", className: "flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded bg-amber-600 text-white hover:bg-amber-700 transition-colors", children: [_jsx(CheckCheck, { className: "w-3.5 h-3.5" }), "Approve All", _jsx("kbd", { className: "ml-1 text-[10px] opacity-70", children: "A" })] })] })), shouldShowProgressUpdate && latestProgressUpdatePart && (_jsx(MessagePartItem, { part: latestProgressUpdatePart, showLine: hasNextAssistantMessage, isFirstPart: !hasVisibleNonProgressParts && !showHeader, isLastProgressUpdate: true, compact: compact }, latestProgressUpdatePart.id)), shouldShowLoadingFallback && (_jsxs("div", { className: "flex gap-3 pb-2 relative", children: [_jsx("div", { className: "flex-shrink-0 w-6 flex items-start justify-center relative pt-0.5", children: _jsx("div", { className: "flex h-5 w-5 shrink-0 items-center justify-center rounded-full relative bg-card text-violet-700 dark:bg-background dark:text-violet-300", children: _jsx(Sparkles, { className: "h-4 w-4" }) }) }), _jsx("div", { className: "flex-1 pt-0.5", children: _jsx("div", { className: "text-base text-foreground animate-pulse", children: getLoadingMessage(message.id) }) })] }))] }), isComplete && sessionId && (_jsx("div", { className: "grid ml-7 transition-[grid-template-rows] duration-200 ease-out", style: { gridTemplateRows: isHovered ? '1fr' : '0fr' }, children: _jsx("div", { className: "overflow-hidden", children: _jsxs("div", { className: "flex gap-2 mt-2", children: [showBranchButton && (_jsxs("button", { type: "button", onClick: handleBranchClick, className: "flex items-center gap-1.5 px-2 py-1 text-xs text-muted-foreground hover:text-foreground hover:bg-muted/50 rounded transition-colors", children: [_jsx(GitBranch, { className: "h-3 w-3" }), "Branch"] })), _jsx("button", { type: "button", onClick: handleCopy, className: "flex items-center gap-1.5 px-2 py-1 text-xs text-muted-foreground hover:text-foreground hover:bg-muted/50 rounded transition-colors", children: copied ? (_jsxs(_Fragment, { children: [_jsx(Check, { className: "h-3 w-3 text-green-500" }), "Copied"] })) : (_jsxs(_Fragment, { children: [_jsx(Copy, { className: "h-3 w-3" }), "Copy"] })) })] }) }) })), showBranchModal && sessionId && (_jsx(BranchModal, { isOpen: showBranchModal, onClose: () => setShowBranchModal(false), sessionId: sessionId, message: message, onBranchCreated: onBranchCreated }))] }));
149
- }, (prevProps, nextProps) => {
150
- const prevParts = prevProps.message.parts || [];
151
- const nextParts = nextProps.message.parts || [];
152
- if (prevParts.length !== nextParts.length) {
153
- return false;
154
- }
155
- for (let i = 0; i < prevParts.length; i++) {
156
- const prevPart = prevParts[i];
157
- const nextPart = nextParts[i];
158
- if (prevPart.id !== nextPart.id ||
159
- prevPart.content !== nextPart.content ||
160
- prevPart.contentJson !== nextPart.contentJson ||
161
- prevPart.ephemeral !== nextPart.ephemeral ||
162
- prevPart.completedAt !== nextPart.completedAt) {
163
- return false;
164
- }
165
- }
166
- return (prevProps.message.id === nextProps.message.id &&
167
- prevProps.message.status === nextProps.message.status &&
168
- prevProps.message.completedAt === nextProps.message.completedAt &&
169
- prevProps.showHeader === nextProps.showHeader &&
170
- prevProps.hasNextAssistantMessage === nextProps.hasNextAssistantMessage &&
171
- prevProps.isLastMessage === nextProps.isLastMessage &&
172
- prevProps.sessionId === nextProps.sessionId &&
173
- prevProps.compact === nextProps.compact &&
174
- prevProps.onNavigateToSession === nextProps.onNavigateToSession);
175
- });
176
- //# sourceMappingURL=AssistantMessageGroup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AssistantMessageGroup.js","sourceRoot":"","sources":["../../../src/components/messages/AssistantMessageGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EACN,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,KAAK,EACL,MAAM,EACN,UAAU,GACV,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAgBjD,MAAM,eAAe,GAAG;IACvB,eAAe;IACf,yBAAyB;IACzB,aAAa;IACb,eAAe;IACf,kBAAkB;IAClB,sBAAsB;IACtB,kBAAkB;IAClB,cAAc;CACd,CAAC;AAEF,SAAS,iBAAiB,CAAC,SAAiB;IAC3C,MAAM,IAAI,GAAG,SAAS;SACpB,KAAK,CAAC,EAAE,CAAC;SACT,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,eAAe,CAAC,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CACxC,SAAS,qBAAqB,CAAC,EAC9B,SAAS,EACT,OAAO,EACP,UAAU,EACV,uBAAuB,EACvB,eAAe,EACf,OAAO,EACP,gBAAgB,GAAG,IAAI,EACvB,mBAAmB,EACnB,OAAO,EACP,SAAS,GACmB;IAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACpE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5C,yBAAyB;IACzB,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAE3E,MAAM,aAAa,GAAG,WAAW,CAChC,KAAK,EAAE,MAAc,EAAE,EAAE;QACxB,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,IAAI,CAAC;YACJ,MAAM,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACzD,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;IACF,CAAC,EACD,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAClC,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC/B,KAAK,EAAE,MAAc,EAAE,EAAE;QACxB,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,IAAI,CAAC;YACJ,MAAM,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1D,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;IACF,CAAC,EACD,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAClC,CAAC;IAEF,0DAA0D;IAC1D,MAAM,uBAAuB,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5C,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC,EAAE,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnC,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC/C,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,IAAI,CAAC;YACJ,MAAM,OAAO,CAAC,GAAG,CAChB,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACjC,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CACpD,CACD,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,uBAAuB,EAAE,CAAC;gBACzC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;IACF,CAAC,EAAE,CAAC,SAAS,EAAE,uBAAuB,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAEhE,0EAA0E;IAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YAClD,IAAI,SAAS,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YACtC,wDAAwD;YACxD,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IACnE,MAAM,yBAAyB,GAAG,KAAK,CAAC,MAAM,CAC7C,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAC1B,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,KAAK,iBAAiB;QACjE,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,EACb,CAAC,CAAC,CACF,CAAC;IACF,MAAM,wBAAwB,GAC7B,yBAAyB,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,MAAM,0BAA0B,GAAG,KAAK,CAAC,IAAI,CAC5C,CAAC,IAAI,EAAE,EAAE,CACR,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,KAAK,iBAAiB,CAAC,CACtE,CAAC;IACF,MAAM,qBAAqB,GAAG,KAAK,CAAC,SAAS,CAC5C,CAAC,IAAI,EAAE,EAAE,CACR,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,KAAK,iBAAiB,CAAC,CACtE,CAAC;IACF,MAAM,wBAAwB,GAC7B,OAAO,CAAC,MAAM,KAAK,SAAS;QAC5B,CAAC,SAAS;QACV,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACnC,MAAM,yBAAyB,GAC9B,OAAO,CAAC,MAAM,KAAK,SAAS;QAC5B,CAAC,SAAS;QACV,CAAC,wBAAwB;QACzB,CAAC,QAAQ,CAAC;IACX,MAAM,UAAU,GAAG,CAAC,EAAW,EAAE,EAAE;QAClC,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE;YAClC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;SACjB,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC;IAEjD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,MAAM,SAAS,GAAG,KAAK;aACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;gBAC7C,OAAO,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACR,OAAO,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;YACxB,CAAC;QACF,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACzC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1C,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO;IACN,sFAAsF;IACtF,eACC,SAAS,EAAC,gBAAgB,EAC1B,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EACtC,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,aAEtC,UAAU,IAAI,CACd,eAAK,SAAS,EAAC,wCAAwC,aACtD,eAAK,SAAS,EAAC,oKAAoK,aAClL,cAAK,SAAS,EAAC,mIAAmI,YACjJ,KAAC,QAAQ,IAAC,SAAS,EAAC,kDAAkD,GAAG,GACpE,EACN,eAAK,SAAS,EAAC,sGAAsG,aACnH,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,CAC7B,eAAM,SAAS,EAAC,oEAAoE,YAClF,OAAO,CAAC,KAAK,GACR,CACP,EACA,OAAO,CAAC,QAAQ,IAAI,CACpB,8BACE,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,CAC7B,eAAM,SAAS,EAAC,0BAA0B,uBAAS,CACnD,EACD,KAAC,YAAY,IACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,YAAY,GACrB,IACA,CACH,EACA,OAAO,CAAC,KAAK,IAAI,CACjB,8BACC,eAAM,SAAS,EAAC,2CAA2C,uBAEpD,EACP,eACC,SAAS,EAAE,0CAA0C,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,EAC9F,KAAK,EAAE,OAAO,CAAC,KAAK,YAEnB,OAAO,CAAC,KAAK,GACR,IACL,CACH,EACA,OAAO,CAAC,SAAS,IAAI,CACrB,8BACC,eAAM,SAAS,EAAC,0BAA0B,uBAAS,EACnD,eAAM,SAAS,EAAC,yCAAyC,YACvD,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,GACxB,IACL,CACH,IACI,IACD,EACL,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,gBAAgB,IAAI,CAC5D,iBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAC,qFAAqF,EAC/F,KAAK,EAAC,0BAA0B,YAEhC,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,GAAG,GACzB,CACT,IACI,CACN,EAED,eAAK,SAAS,EAAC,eAAe,aAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;wBAC1B,MAAM,UAAU,GAAG,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;wBAC9C,kDAAkD;wBAClD,MAAM,eAAe,GACpB,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU;4BAC3C,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC;gCAC5D,IAAI,CAAC;4BACN,CAAC,CAAC,IAAI,CAAC;wBACT,MAAM,YAAY,GACjB,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC;wBAC3D,MAAM,QAAQ,GACb,CAAC,CAAC,UAAU,IAAI,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC;wBAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,UAAU,CAAC;wBAC/D,MAAM,gBAAgB,GACrB,IAAI,CAAC,IAAI,KAAK,aAAa;4BAC3B,IAAI,CAAC,QAAQ,KAAK,iBAAiB,CAAC;wBAErC,IAAI,gBAAgB,EAAE,CAAC;4BACtB,OAAO,IAAI,CAAC;wBACb,CAAC;wBAED,OAAO,CACN,KAAC,eAAe,IAEf,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,KAAK,KAAK,qBAAqB,IAAI,CAAC,UAAU,EAC3D,cAAc,EAAE,cAAc,EAC9B,mBAAmB,EAAE,mBAAmB,EACxC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,IAZf,IAAI,CAAC,EAAE,CAaX,CACF,CAAC;oBACH,CAAC,CAAC,EAGD,uBAAuB,CAAC,MAAM,GAAG,CAAC,IAAI,CACtC,eAAK,SAAS,EAAC,kIAAkI,aAChJ,KAAC,MAAM,IAAC,SAAS,EAAC,0DAA0D,GAAG,EAC/E,gBAAM,SAAS,EAAC,mDAAmD,aACjE,uBAAuB,CAAC,MAAM,mCACzB,EACP,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAC,iBAAiB,EACvB,SAAS,EAAC,gIAAgI,aAE1I,KAAC,UAAU,IAAC,SAAS,EAAC,aAAa,GAAG,iBAEtC,cAAK,SAAS,EAAC,6BAA6B,kBAAQ,IAC5C,IACJ,CACN,EAEA,wBAAwB,IAAI,wBAAwB,IAAI,CACxD,KAAC,eAAe,IAEf,IAAI,EAAE,wBAAwB,EAC9B,QAAQ,EAAE,uBAAuB,EACjC,WAAW,EAAE,CAAC,0BAA0B,IAAI,CAAC,UAAU,EACvD,oBAAoB,QACpB,OAAO,EAAE,OAAO,IALX,wBAAwB,CAAC,EAAE,CAM/B,CACF,EAEA,yBAAyB,IAAI,CAC7B,eAAK,SAAS,EAAC,0BAA0B,aACxC,cAAK,SAAS,EAAC,mEAAmE,YACjF,cAAK,SAAS,EAAC,yIAAyI,YACvJ,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,GAAG,GAC3B,GACD,EACN,cAAK,SAAS,EAAC,eAAe,YAC7B,cAAK,SAAS,EAAC,yCAAyC,YACtD,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,GACzB,GACD,IACD,CACN,IACI,EAEL,UAAU,IAAI,SAAS,IAAI,CAC3B,cACC,SAAS,EAAC,iEAAiE,EAC3E,KAAK,EAAE,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,YAEtD,cAAK,SAAS,EAAC,iBAAiB,YAC/B,eAAK,SAAS,EAAC,iBAAiB,aAC9B,gBAAgB,IAAI,CACpB,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAC,qIAAqI,aAE/I,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,GAAG,cAEzB,CACT,EACD,iBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,UAAU,EACnB,SAAS,EAAC,qIAAqI,YAE9I,MAAM,CAAC,CAAC,CAAC,CACT,8BACC,KAAC,KAAK,IAAC,SAAS,EAAC,wBAAwB,GAAG,cAE1C,CACH,CAAC,CAAC,CAAC,CACH,8BACC,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,YAE1B,CACH,GACO,IACJ,GACD,GACD,CACN,EAEA,eAAe,IAAI,SAAS,IAAI,CAChC,KAAC,WAAW,IACX,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,EACxC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,GAC/B,CACF,IACI,CACN,CAAC;AACH,CAAC,EACD,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;IACxB,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAEhD,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,IACC,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE;YAC3B,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO;YACrC,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW;YAC7C,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;YACzC,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,EAC5C,CAAC;YACF,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED,OAAO,CACN,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,OAAO,CAAC,EAAE;QAC7C,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,OAAO,CAAC,MAAM;QACrD,SAAS,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,OAAO,CAAC,WAAW;QAC/D,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU;QAC7C,SAAS,CAAC,uBAAuB,KAAK,SAAS,CAAC,uBAAuB;QACvE,SAAS,CAAC,aAAa,KAAK,SAAS,CAAC,aAAa;QACnD,SAAS,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;QAC3C,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO;QACvC,SAAS,CAAC,mBAAmB,KAAK,SAAS,CAAC,mBAAmB,CAC/D,CAAC;AACH,CAAC,CACD,CAAC"}