@ottocode/web-sdk 0.1.226 → 0.1.228

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 (406) hide show
  1. package/dist/components/chat/FileMentionPopup.d.ts.map +1 -1
  2. package/dist/components/index.js +25158 -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 +4821 -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 +25928 -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/api-client/utils.d.ts.map +1 -1
  32. package/dist/lib/index.js +1016 -5
  33. package/dist/lib/index.js.map +22 -1
  34. package/dist/stores/index.js +693 -22
  35. package/dist/stores/index.js.map +30 -1
  36. package/dist/stores/toastStore.d.ts +1 -0
  37. package/dist/stores/toastStore.d.ts.map +1 -1
  38. package/dist/types/api.js +2 -2
  39. package/dist/types/api.js.map +9 -1
  40. package/package.json +4 -4
  41. package/dist/assets/provider-logos.js +0 -43
  42. package/dist/assets/provider-logos.js.map +0 -1
  43. package/dist/components/branch/BranchModal.js +0 -45
  44. package/dist/components/branch/BranchModal.js.map +0 -1
  45. package/dist/components/chat/ChatInput.js +0 -267
  46. package/dist/components/chat/ChatInput.js.map +0 -1
  47. package/dist/components/chat/ChatInputContainer.js +0 -295
  48. package/dist/components/chat/ChatInputContainer.js.map +0 -1
  49. package/dist/components/chat/ChatInputKeyHandler.js +0 -75
  50. package/dist/components/chat/ChatInputKeyHandler.js.map +0 -1
  51. package/dist/components/chat/CommandSuggestionsPopup.js +0 -45
  52. package/dist/components/chat/CommandSuggestionsPopup.js.map +0 -1
  53. package/dist/components/chat/ConfigModal.js +0 -46
  54. package/dist/components/chat/ConfigModal.js.map +0 -1
  55. package/dist/components/chat/ConfigSelector.js +0 -47
  56. package/dist/components/chat/ConfigSelector.js.map +0 -1
  57. package/dist/components/chat/FileMentionPopup.js +0 -138
  58. package/dist/components/chat/FileMentionPopup.js.map +0 -1
  59. package/dist/components/chat/ShortcutsModal.js +0 -275
  60. package/dist/components/chat/ShortcutsModal.js.map +0 -1
  61. package/dist/components/chat/StopButton.js +0 -25
  62. package/dist/components/chat/StopButton.js.map +0 -1
  63. package/dist/components/chat/UnifiedAgentSelector.js +0 -107
  64. package/dist/components/chat/UnifiedAgentSelector.js.map +0 -1
  65. package/dist/components/chat/UnifiedModelSelector.js +0 -209
  66. package/dist/components/chat/UnifiedModelSelector.js.map +0 -1
  67. package/dist/components/common/ProviderLogo.js +0 -30
  68. package/dist/components/common/ProviderLogo.js.map +0 -1
  69. package/dist/components/common/StatusIndicator.js +0 -54
  70. package/dist/components/common/StatusIndicator.js.map +0 -1
  71. package/dist/components/common/UsageModal.js +0 -55
  72. package/dist/components/common/UsageModal.js.map +0 -1
  73. package/dist/components/common/UsageRing.js +0 -22
  74. package/dist/components/common/UsageRing.js.map +0 -1
  75. package/dist/components/file-browser/FileBrowserSidebar.js +0 -50
  76. package/dist/components/file-browser/FileBrowserSidebar.js.map +0 -1
  77. package/dist/components/file-browser/FileBrowserSidebarToggle.js +0 -12
  78. package/dist/components/file-browser/FileBrowserSidebarToggle.js.map +0 -1
  79. package/dist/components/file-browser/FileViewerPanel.js +0 -85
  80. package/dist/components/file-browser/FileViewerPanel.js.map +0 -1
  81. package/dist/components/file-browser/QuickFilePicker.js +0 -118
  82. package/dist/components/file-browser/QuickFilePicker.js.map +0 -1
  83. package/dist/components/git/GitCommitModal.js +0 -70
  84. package/dist/components/git/GitCommitModal.js.map +0 -1
  85. package/dist/components/git/GitDiffPanel.js +0 -60
  86. package/dist/components/git/GitDiffPanel.js.map +0 -1
  87. package/dist/components/git/GitDiffViewer.js +0 -224
  88. package/dist/components/git/GitDiffViewer.js.map +0 -1
  89. package/dist/components/git/GitFileItem.js +0 -145
  90. package/dist/components/git/GitFileItem.js.map +0 -1
  91. package/dist/components/git/GitFileList.js +0 -108
  92. package/dist/components/git/GitFileList.js.map +0 -1
  93. package/dist/components/git/GitSidebar.js +0 -156
  94. package/dist/components/git/GitSidebar.js.map +0 -1
  95. package/dist/components/git/GitSidebarToggle.js +0 -18
  96. package/dist/components/git/GitSidebarToggle.js.map +0 -1
  97. package/dist/components/mcp/AddMCPServerModal.js +0 -166
  98. package/dist/components/mcp/AddMCPServerModal.js.map +0 -1
  99. package/dist/components/mcp/MCPSidebar.js +0 -192
  100. package/dist/components/mcp/MCPSidebar.js.map +0 -1
  101. package/dist/components/mcp/MCPSidebarToggle.js +0 -14
  102. package/dist/components/mcp/MCPSidebarToggle.js.map +0 -1
  103. package/dist/components/mcp/index.js +0 -4
  104. package/dist/components/mcp/index.js.map +0 -1
  105. package/dist/components/messages/AssistantMessageGroup.js +0 -176
  106. package/dist/components/messages/AssistantMessageGroup.js.map +0 -1
  107. package/dist/components/messages/MessagePartItem.js +0 -362
  108. package/dist/components/messages/MessagePartItem.js.map +0 -1
  109. package/dist/components/messages/MessageThread.js +0 -239
  110. package/dist/components/messages/MessageThread.js.map +0 -1
  111. package/dist/components/messages/MessageThreadContainer.js +0 -22
  112. package/dist/components/messages/MessageThreadContainer.js.map +0 -1
  113. package/dist/components/messages/ToolApprovalCard.js +0 -143
  114. package/dist/components/messages/ToolApprovalCard.js.map +0 -1
  115. package/dist/components/messages/TopupApprovalCard.js +0 -52
  116. package/dist/components/messages/TopupApprovalCard.js.map +0 -1
  117. package/dist/components/messages/UserMessageGroup.js +0 -132
  118. package/dist/components/messages/UserMessageGroup.js.map +0 -1
  119. package/dist/components/messages/renderers/ApplyPatchRenderer.js +0 -55
  120. package/dist/components/messages/renderers/ApplyPatchRenderer.js.map +0 -1
  121. package/dist/components/messages/renderers/BashRenderer.js +0 -55
  122. package/dist/components/messages/renderers/BashRenderer.js.map +0 -1
  123. package/dist/components/messages/renderers/DatabaseToolRenderer.js +0 -151
  124. package/dist/components/messages/renderers/DatabaseToolRenderer.js.map +0 -1
  125. package/dist/components/messages/renderers/DebugRenderer.js +0 -5
  126. package/dist/components/messages/renderers/DebugRenderer.js.map +0 -1
  127. package/dist/components/messages/renderers/DiffView.js +0 -206
  128. package/dist/components/messages/renderers/DiffView.js.map +0 -1
  129. package/dist/components/messages/renderers/EditRenderer.js +0 -25
  130. package/dist/components/messages/renderers/EditRenderer.js.map +0 -1
  131. package/dist/components/messages/renderers/ErrorRenderer.js +0 -162
  132. package/dist/components/messages/renderers/ErrorRenderer.js.map +0 -1
  133. package/dist/components/messages/renderers/FinishRenderer.js +0 -7
  134. package/dist/components/messages/renderers/FinishRenderer.js.map +0 -1
  135. package/dist/components/messages/renderers/GenericRenderer.js +0 -50
  136. package/dist/components/messages/renderers/GenericRenderer.js.map +0 -1
  137. package/dist/components/messages/renderers/GitCommitRenderer.js +0 -21
  138. package/dist/components/messages/renderers/GitCommitRenderer.js.map +0 -1
  139. package/dist/components/messages/renderers/GitDiffRenderer.js +0 -34
  140. package/dist/components/messages/renderers/GitDiffRenderer.js.map +0 -1
  141. package/dist/components/messages/renderers/GitStatusRenderer.js +0 -60
  142. package/dist/components/messages/renderers/GitStatusRenderer.js.map +0 -1
  143. package/dist/components/messages/renderers/ListRenderer.js +0 -28
  144. package/dist/components/messages/renderers/ListRenderer.js.map +0 -1
  145. package/dist/components/messages/renderers/LoadMcpToolsRenderer.js +0 -20
  146. package/dist/components/messages/renderers/LoadMcpToolsRenderer.js.map +0 -1
  147. package/dist/components/messages/renderers/McpToolRenderer.js +0 -68
  148. package/dist/components/messages/renderers/McpToolRenderer.js.map +0 -1
  149. package/dist/components/messages/renderers/ProgressUpdateRenderer.js +0 -9
  150. package/dist/components/messages/renderers/ProgressUpdateRenderer.js.map +0 -1
  151. package/dist/components/messages/renderers/ReadRenderer.js +0 -87
  152. package/dist/components/messages/renderers/ReadRenderer.js.map +0 -1
  153. package/dist/components/messages/renderers/ReasoningRenderer.js +0 -34
  154. package/dist/components/messages/renderers/ReasoningRenderer.js.map +0 -1
  155. package/dist/components/messages/renderers/SearchRenderer.js +0 -52
  156. package/dist/components/messages/renderers/SearchRenderer.js.map +0 -1
  157. package/dist/components/messages/renderers/SkillRenderer.js +0 -36
  158. package/dist/components/messages/renderers/SkillRenderer.js.map +0 -1
  159. package/dist/components/messages/renderers/TerminalRenderer.js +0 -84
  160. package/dist/components/messages/renderers/TerminalRenderer.js.map +0 -1
  161. package/dist/components/messages/renderers/TodosRenderer.js +0 -15
  162. package/dist/components/messages/renderers/TodosRenderer.js.map +0 -1
  163. package/dist/components/messages/renderers/ToolErrorDisplay.js +0 -10
  164. package/dist/components/messages/renderers/ToolErrorDisplay.js.map +0 -1
  165. package/dist/components/messages/renderers/TreeRenderer.js +0 -33
  166. package/dist/components/messages/renderers/TreeRenderer.js.map +0 -1
  167. package/dist/components/messages/renderers/WebSearchRenderer.js +0 -29
  168. package/dist/components/messages/renderers/WebSearchRenderer.js.map +0 -1
  169. package/dist/components/messages/renderers/WriteRenderer.js +0 -28
  170. package/dist/components/messages/renderers/WriteRenderer.js.map +0 -1
  171. package/dist/components/messages/renderers/index.js +0 -129
  172. package/dist/components/messages/renderers/index.js.map +0 -1
  173. package/dist/components/messages/renderers/shared/CopyButton.js +0 -27
  174. package/dist/components/messages/renderers/shared/CopyButton.js.map +0 -1
  175. package/dist/components/messages/renderers/shared/ImagePreview.js +0 -14
  176. package/dist/components/messages/renderers/shared/ImagePreview.js.map +0 -1
  177. package/dist/components/messages/renderers/shared/ToolContentBox.js +0 -9
  178. package/dist/components/messages/renderers/shared/ToolContentBox.js.map +0 -1
  179. package/dist/components/messages/renderers/shared/ToolHeader.js +0 -69
  180. package/dist/components/messages/renderers/shared/ToolHeader.js.map +0 -1
  181. package/dist/components/messages/renderers/shared/index.js +0 -5
  182. package/dist/components/messages/renderers/shared/index.js.map +0 -1
  183. package/dist/components/messages/renderers/types.js +0 -2
  184. package/dist/components/messages/renderers/types.js.map +0 -1
  185. package/dist/components/messages/renderers/utils.js +0 -60
  186. package/dist/components/messages/renderers/utils.js.map +0 -1
  187. package/dist/components/onboarding/OnboardingModal.js +0 -22
  188. package/dist/components/onboarding/OnboardingModal.js.map +0 -1
  189. package/dist/components/onboarding/index.js +0 -4
  190. package/dist/components/onboarding/index.js.map +0 -1
  191. package/dist/components/onboarding/steps/DefaultsStep.js +0 -104
  192. package/dist/components/onboarding/steps/DefaultsStep.js.map +0 -1
  193. package/dist/components/onboarding/steps/ProviderSetupStep.js +0 -398
  194. package/dist/components/onboarding/steps/ProviderSetupStep.js.map +0 -1
  195. package/dist/components/research/ResearchSidebar.js +0 -288
  196. package/dist/components/research/ResearchSidebar.js.map +0 -1
  197. package/dist/components/research/ResearchSidebarToggle.js +0 -15
  198. package/dist/components/research/ResearchSidebarToggle.js.map +0 -1
  199. package/dist/components/research/index.js +0 -3
  200. package/dist/components/research/index.js.map +0 -1
  201. package/dist/components/session-files/SessionFilesDiffPanel.js +0 -345
  202. package/dist/components/session-files/SessionFilesDiffPanel.js.map +0 -1
  203. package/dist/components/session-files/SessionFilesSidebar.js +0 -87
  204. package/dist/components/session-files/SessionFilesSidebar.js.map +0 -1
  205. package/dist/components/session-files/SessionFilesSidebarToggle.js +0 -15
  206. package/dist/components/session-files/SessionFilesSidebarToggle.js.map +0 -1
  207. package/dist/components/session-files/index.js +0 -4
  208. package/dist/components/session-files/index.js.map +0 -1
  209. package/dist/components/sessions/EditableTitle.js +0 -40
  210. package/dist/components/sessions/EditableTitle.js.map +0 -1
  211. package/dist/components/sessions/LeanHeader.js +0 -70
  212. package/dist/components/sessions/LeanHeader.js.map +0 -1
  213. package/dist/components/sessions/SessionHeader.js +0 -75
  214. package/dist/components/sessions/SessionHeader.js.map +0 -1
  215. package/dist/components/sessions/SessionItem.js +0 -28
  216. package/dist/components/sessions/SessionItem.js.map +0 -1
  217. package/dist/components/sessions/SessionListContainer.js +0 -86
  218. package/dist/components/sessions/SessionListContainer.js.map +0 -1
  219. package/dist/components/settings/SettingsSidebar.js +0 -212
  220. package/dist/components/settings/SettingsSidebar.js.map +0 -1
  221. package/dist/components/settings/SettingsSidebarToggle.js +0 -12
  222. package/dist/components/settings/SettingsSidebarToggle.js.map +0 -1
  223. package/dist/components/settings/SetuTopupModal.js +0 -306
  224. package/dist/components/settings/SetuTopupModal.js.map +0 -1
  225. package/dist/components/skills/SkillViewerPanel.js +0 -89
  226. package/dist/components/skills/SkillViewerPanel.js.map +0 -1
  227. package/dist/components/skills/SkillsSidebar.js +0 -59
  228. package/dist/components/skills/SkillsSidebar.js.map +0 -1
  229. package/dist/components/skills/SkillsSidebarToggle.js +0 -12
  230. package/dist/components/skills/SkillsSidebarToggle.js.map +0 -1
  231. package/dist/components/skills/index.js +0 -4
  232. package/dist/components/skills/index.js.map +0 -1
  233. package/dist/components/terminals/TerminalPanelToggle.js +0 -13
  234. package/dist/components/terminals/TerminalPanelToggle.js.map +0 -1
  235. package/dist/components/terminals/TerminalTabBar.js +0 -22
  236. package/dist/components/terminals/TerminalTabBar.js.map +0 -1
  237. package/dist/components/terminals/TerminalViewer.js +0 -371
  238. package/dist/components/terminals/TerminalViewer.js.map +0 -1
  239. package/dist/components/terminals/TerminalsPanel.js +0 -134
  240. package/dist/components/terminals/TerminalsPanel.js.map +0 -1
  241. package/dist/components/terminals/index.js +0 -11
  242. package/dist/components/terminals/index.js.map +0 -1
  243. package/dist/components/tunnel/TunnelSidebar.js +0 -55
  244. package/dist/components/tunnel/TunnelSidebar.js.map +0 -1
  245. package/dist/components/tunnel/TunnelSidebarToggle.js +0 -14
  246. package/dist/components/tunnel/TunnelSidebarToggle.js.map +0 -1
  247. package/dist/components/tunnel/index.js +0 -3
  248. package/dist/components/tunnel/index.js.map +0 -1
  249. package/dist/components/ui/Button.js +0 -19
  250. package/dist/components/ui/Button.js.map +0 -1
  251. package/dist/components/ui/Card.js +0 -7
  252. package/dist/components/ui/Card.js.map +0 -1
  253. package/dist/components/ui/ConfirmationDialog.js +0 -72
  254. package/dist/components/ui/ConfirmationDialog.js.map +0 -1
  255. package/dist/components/ui/Input.js +0 -7
  256. package/dist/components/ui/Input.js.map +0 -1
  257. package/dist/components/ui/Modal.js +0 -51
  258. package/dist/components/ui/Modal.js.map +0 -1
  259. package/dist/components/ui/ResizeHandle.js +0 -39
  260. package/dist/components/ui/ResizeHandle.js.map +0 -1
  261. package/dist/components/ui/Textarea.js +0 -7
  262. package/dist/components/ui/Textarea.js.map +0 -1
  263. package/dist/components/ui/Toaster.js +0 -41
  264. package/dist/components/ui/Toaster.js.map +0 -1
  265. package/dist/components/ui/ToolApprovalDialog.js +0 -57
  266. package/dist/components/ui/ToolApprovalDialog.js.map +0 -1
  267. package/dist/hooks/useAuthStatus.js +0 -287
  268. package/dist/hooks/useAuthStatus.js.map +0 -1
  269. package/dist/hooks/useBranch.js +0 -44
  270. package/dist/hooks/useBranch.js.map +0 -1
  271. package/dist/hooks/useCommandSuggestions.js +0 -86
  272. package/dist/hooks/useCommandSuggestions.js.map +0 -1
  273. package/dist/hooks/useConfig.js +0 -32
  274. package/dist/hooks/useConfig.js.map +0 -1
  275. package/dist/hooks/useFileBrowser.js +0 -30
  276. package/dist/hooks/useFileBrowser.js.map +0 -1
  277. package/dist/hooks/useFileMention.js +0 -56
  278. package/dist/hooks/useFileMention.js.map +0 -1
  279. package/dist/hooks/useFileUpload.js +0 -317
  280. package/dist/hooks/useFileUpload.js.map +0 -1
  281. package/dist/hooks/useFiles.js +0 -15
  282. package/dist/hooks/useFiles.js.map +0 -1
  283. package/dist/hooks/useGit.js +0 -149
  284. package/dist/hooks/useGit.js.map +0 -1
  285. package/dist/hooks/useImageUpload.js +0 -197
  286. package/dist/hooks/useImageUpload.js.map +0 -1
  287. package/dist/hooks/useKeyboardShortcuts.js +0 -249
  288. package/dist/hooks/useKeyboardShortcuts.js.map +0 -1
  289. package/dist/hooks/useMCP.js +0 -202
  290. package/dist/hooks/useMCP.js.map +0 -1
  291. package/dist/hooks/useMessages.js +0 -26
  292. package/dist/hooks/useMessages.js.map +0 -1
  293. package/dist/hooks/usePreferences.js +0 -61
  294. package/dist/hooks/usePreferences.js.map +0 -1
  295. package/dist/hooks/useProviderUsage.js +0 -44
  296. package/dist/hooks/useProviderUsage.js.map +0 -1
  297. package/dist/hooks/useQueueState.js +0 -31
  298. package/dist/hooks/useQueueState.js.map +0 -1
  299. package/dist/hooks/useResearch.js +0 -139
  300. package/dist/hooks/useResearch.js.map +0 -1
  301. package/dist/hooks/useSessionFiles.js +0 -15
  302. package/dist/hooks/useSessionFiles.js.map +0 -1
  303. package/dist/hooks/useSessionStream.js +0 -572
  304. package/dist/hooks/useSessionStream.js.map +0 -1
  305. package/dist/hooks/useSessions.js +0 -83
  306. package/dist/hooks/useSessions.js.map +0 -1
  307. package/dist/hooks/useSetuBalance.js +0 -71
  308. package/dist/hooks/useSetuBalance.js.map +0 -1
  309. package/dist/hooks/useSetuPayments.js +0 -171
  310. package/dist/hooks/useSetuPayments.js.map +0 -1
  311. package/dist/hooks/useShareStatus.js +0 -12
  312. package/dist/hooks/useShareStatus.js.map +0 -1
  313. package/dist/hooks/useSkills.js +0 -54
  314. package/dist/hooks/useSkills.js.map +0 -1
  315. package/dist/hooks/useTerminals.js +0 -67
  316. package/dist/hooks/useTerminals.js.map +0 -1
  317. package/dist/hooks/useTheme.js +0 -57
  318. package/dist/hooks/useTheme.js.map +0 -1
  319. package/dist/hooks/useToolApprovalShortcuts.js +0 -88
  320. package/dist/hooks/useToolApprovalShortcuts.js.map +0 -1
  321. package/dist/hooks/useTopupCallback.js +0 -74
  322. package/dist/hooks/useTopupCallback.js.map +0 -1
  323. package/dist/hooks/useTunnel.js +0 -158
  324. package/dist/hooks/useTunnel.js.map +0 -1
  325. package/dist/hooks/useVimMode.js +0 -298
  326. package/dist/hooks/useVimMode.js.map +0 -1
  327. package/dist/hooks/useWorkingDirectory.js +0 -34
  328. package/dist/hooks/useWorkingDirectory.js.map +0 -1
  329. package/dist/lib/api-client/approval.js +0 -25
  330. package/dist/lib/api-client/approval.js.map +0 -1
  331. package/dist/lib/api-client/auth.js +0 -139
  332. package/dist/lib/api-client/auth.js.map +0 -1
  333. package/dist/lib/api-client/branches.js +0 -45
  334. package/dist/lib/api-client/branches.js.map +0 -1
  335. package/dist/lib/api-client/config.js +0 -38
  336. package/dist/lib/api-client/config.js.map +0 -1
  337. package/dist/lib/api-client/files.js +0 -35
  338. package/dist/lib/api-client/files.js.map +0 -1
  339. package/dist/lib/api-client/git.js +0 -154
  340. package/dist/lib/api-client/git.js.map +0 -1
  341. package/dist/lib/api-client/index.js +0 -92
  342. package/dist/lib/api-client/index.js.map +0 -1
  343. package/dist/lib/api-client/sessions.js +0 -106
  344. package/dist/lib/api-client/sessions.js.map +0 -1
  345. package/dist/lib/api-client/setu.js +0 -144
  346. package/dist/lib/api-client/setu.js.map +0 -1
  347. package/dist/lib/api-client/skills.js +0 -31
  348. package/dist/lib/api-client/skills.js.map +0 -1
  349. package/dist/lib/api-client/utils.js +0 -65
  350. package/dist/lib/api-client/utils.js.map +0 -1
  351. package/dist/lib/commands.js +0 -124
  352. package/dist/lib/commands.js.map +0 -1
  353. package/dist/lib/config.js +0 -28
  354. package/dist/lib/config.js.map +0 -1
  355. package/dist/lib/nerd-font.js +0 -55
  356. package/dist/lib/nerd-font.js.map +0 -1
  357. package/dist/lib/open-url.js +0 -9
  358. package/dist/lib/open-url.js.map +0 -1
  359. package/dist/lib/parseResearchContext.js +0 -30
  360. package/dist/lib/parseResearchContext.js.map +0 -1
  361. package/dist/lib/sse-client.js +0 -113
  362. package/dist/lib/sse-client.js.map +0 -1
  363. package/dist/stores/confirmationStore.js +0 -27
  364. package/dist/stores/confirmationStore.js.map +0 -1
  365. package/dist/stores/fileBrowserStore.js +0 -63
  366. package/dist/stores/fileBrowserStore.js.map +0 -1
  367. package/dist/stores/filePickerStore.js +0 -8
  368. package/dist/stores/filePickerStore.js.map +0 -1
  369. package/dist/stores/focusStore.js +0 -12
  370. package/dist/stores/focusStore.js.map +0 -1
  371. package/dist/stores/gitStore.js +0 -63
  372. package/dist/stores/gitStore.js.map +0 -1
  373. package/dist/stores/mcpStore.js +0 -63
  374. package/dist/stores/mcpStore.js.map +0 -1
  375. package/dist/stores/onboardingStore.js +0 -38
  376. package/dist/stores/onboardingStore.js.map +0 -1
  377. package/dist/stores/panelWidthStore.js +0 -12
  378. package/dist/stores/panelWidthStore.js.map +0 -1
  379. package/dist/stores/pendingResearchStore.js +0 -38
  380. package/dist/stores/pendingResearchStore.js.map +0 -1
  381. package/dist/stores/queueStore.js +0 -11
  382. package/dist/stores/queueStore.js.map +0 -1
  383. package/dist/stores/researchStore.js +0 -54
  384. package/dist/stores/researchStore.js.map +0 -1
  385. package/dist/stores/sessionFilesStore.js +0 -62
  386. package/dist/stores/sessionFilesStore.js.map +0 -1
  387. package/dist/stores/settingsStore.js +0 -29
  388. package/dist/stores/settingsStore.js.map +0 -1
  389. package/dist/stores/setuStore.js +0 -29
  390. package/dist/stores/setuStore.js.map +0 -1
  391. package/dist/stores/sidebarStore.js +0 -10
  392. package/dist/stores/sidebarStore.js.map +0 -1
  393. package/dist/stores/skillsStore.js +0 -46
  394. package/dist/stores/skillsStore.js.map +0 -1
  395. package/dist/stores/terminalStore.js +0 -32
  396. package/dist/stores/terminalStore.js.map +0 -1
  397. package/dist/stores/toastStore.js +0 -46
  398. package/dist/stores/toastStore.js.map +0 -1
  399. package/dist/stores/toolApprovalStore.js +0 -16
  400. package/dist/stores/toolApprovalStore.js.map +0 -1
  401. package/dist/stores/topupApprovalStore.js +0 -11
  402. package/dist/stores/topupApprovalStore.js.map +0 -1
  403. package/dist/stores/tunnelStore.js +0 -55
  404. package/dist/stores/tunnelStore.js.map +0 -1
  405. package/dist/stores/usageStore.js +0 -14
  406. package/dist/stores/usageStore.js.map +0 -1
@@ -1,22 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { memo, useMemo } from 'react';
3
- import { useMessages } from '../../hooks/useMessages';
4
- import { useSessionStream } from '../../hooks/useSessionStream';
5
- import { useSessions } from '../../hooks/useSessions';
6
- import { MessageThread } from './MessageThread';
7
- import { useToolApprovalShortcuts } from '../../hooks/useToolApprovalShortcuts';
8
- import { SetuTopupModal } from '../settings/SetuTopupModal';
9
- export const MessageThreadContainer = memo(function MessageThreadContainer({ sessionId, onSelectSession, }) {
10
- const { data: messages = [], isLoading } = useMessages(sessionId);
11
- const { data: sessions = [] } = useSessions();
12
- useSessionStream(sessionId);
13
- // Enable keyboard shortcuts (Y/N/A) for tool approval in this session
14
- useToolApprovalShortcuts(sessionId);
15
- const session = useMemo(() => sessions.find((s) => s.id === sessionId), [sessions, sessionId]);
16
- const isGenerating = useMemo(() => messages.some((m) => m.role === 'assistant' && m.status === 'pending'), [messages]);
17
- if (isLoading) {
18
- return (_jsx("div", { className: "flex-1 flex items-center justify-center text-muted-foreground", children: "Loading messages..." }));
19
- }
20
- return (_jsxs(_Fragment, { children: [_jsx(MessageThread, { messages: messages, sessionId: sessionId, session: session, isGenerating: isGenerating, onSelectSession: onSelectSession }), _jsx(SetuTopupModal, {})] }));
21
- });
22
- //# sourceMappingURL=MessageThreadContainer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MessageThreadContainer.js","sourceRoot":"","sources":["../../../src/components/messages/MessageThreadContainer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAO5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,sBAAsB,CAAC,EAC1E,SAAS,EACT,eAAe,GACc;IAC7B,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;IAE9C,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE5B,sEAAsE;IACtE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAEpC,MAAM,OAAO,GAAG,OAAO,CACtB,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,EAC9C,CAAC,QAAQ,EAAE,SAAS,CAAC,CACrB,CAAC;IAEF,MAAM,YAAY,GAAG,OAAO,CAC3B,GAAG,EAAE,CACJ,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,EACvE,CAAC,QAAQ,CAAC,CACV,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACf,OAAO,CACN,cAAK,SAAS,EAAC,+DAA+D,oCAExE,CACN,CAAC;IACH,CAAC;IAED,OAAO,CACN,8BACC,KAAC,aAAa,IACb,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,GAC/B,EACF,KAAC,cAAc,KAAG,IAChB,CACH,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,143 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { memo, useState } from 'react';
3
- import { Shield, Check, X } from 'lucide-react';
4
- import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
5
- import { prism, vscDarkPlus, } from 'react-syntax-highlighter/dist/esm/styles/prism';
6
- import { DiffView } from './renderers/DiffView';
7
- function getLanguageFromPath(path) {
8
- const ext = path.split('.').pop()?.toLowerCase();
9
- const langMap = {
10
- js: 'javascript',
11
- jsx: 'jsx',
12
- ts: 'typescript',
13
- tsx: 'tsx',
14
- py: 'python',
15
- rb: 'ruby',
16
- go: 'go',
17
- rs: 'rust',
18
- java: 'java',
19
- c: 'c',
20
- cpp: 'cpp',
21
- h: 'c',
22
- hpp: 'cpp',
23
- cs: 'csharp',
24
- php: 'php',
25
- sh: 'bash',
26
- bash: 'bash',
27
- zsh: 'bash',
28
- sql: 'sql',
29
- json: 'json',
30
- yaml: 'yaml',
31
- yml: 'yaml',
32
- xml: 'xml',
33
- html: 'html',
34
- css: 'css',
35
- scss: 'scss',
36
- md: 'markdown',
37
- txt: 'text',
38
- svelte: 'svelte',
39
- };
40
- return langMap[ext || ''] || 'javascript';
41
- }
42
- function normalizeToolTarget(toolName, args) {
43
- if (!args)
44
- return null;
45
- const keyMap = {
46
- read: ['path'],
47
- write: ['path'],
48
- edit: ['path'],
49
- apply_patch: ['path'],
50
- glob: ['pattern'],
51
- grep: ['query', 'pattern'],
52
- ripgrep: ['query', 'pattern'],
53
- bash: ['cmd', 'command'],
54
- terminal: ['command'],
55
- git_commit: ['message'],
56
- git_diff: ['file'],
57
- tree: ['path'],
58
- ls: ['path'],
59
- web_search: ['query', 'url'],
60
- skill: ['name'],
61
- };
62
- const keys = keyMap[toolName];
63
- if (!keys) {
64
- for (const [key, value] of Object.entries(args)) {
65
- if (typeof value === 'string' && value.length > 0 && value.length < 200) {
66
- return { key, value };
67
- }
68
- }
69
- return null;
70
- }
71
- for (const key of keys) {
72
- const value = args[key];
73
- if (typeof value === 'string' && value.length > 0) {
74
- return { key, value };
75
- }
76
- }
77
- return null;
78
- }
79
- function getPrimaryCommand(args) {
80
- if (!args)
81
- return null;
82
- const cmd = args.cmd ?? args.command;
83
- if (typeof cmd === 'string' && cmd.length > 0) {
84
- return cmd;
85
- }
86
- return null;
87
- }
88
- export const ToolApprovalCard = memo(function ToolApprovalCard({ toolName, args, pendingApproval, onApprove, onReject, }) {
89
- const [isProcessing, setIsProcessing] = useState(false);
90
- const toolLabel = toolName.replace(/_/g, ' ');
91
- const primary = normalizeToolTarget(toolName, args);
92
- const command = toolName === 'bash' ? getPrimaryCommand(args) : null;
93
- const approvalTarget = command || primary?.value;
94
- const filePath = typeof args?.path === 'string' ? args.path : '';
95
- const language = getLanguageFromPath(filePath);
96
- const syntaxTheme = document?.documentElement.classList.contains('dark')
97
- ? vscDarkPlus
98
- : prism;
99
- const handleApprove = () => {
100
- setIsProcessing(true);
101
- Promise.resolve(onApprove(pendingApproval.callId)).catch(() => {
102
- setIsProcessing(false);
103
- });
104
- };
105
- const handleReject = () => {
106
- setIsProcessing(true);
107
- Promise.resolve(onReject(pendingApproval.callId)).catch(() => {
108
- setIsProcessing(false);
109
- });
110
- };
111
- const renderContent = () => {
112
- if (toolName === 'apply_patch' && args?.patch) {
113
- return (_jsx("div", { className: "ml-6 max-w-full overflow-hidden", children: _jsx(DiffView, { patch: String(args.patch) }) }));
114
- }
115
- if (toolName === 'write' && args?.content) {
116
- const content = String(args.content);
117
- return (_jsx("div", { className: "ml-6 max-w-full overflow-hidden", children: _jsx("div", { className: "bg-emerald-500/10 border border-emerald-500/30 rounded-lg overflow-hidden max-h-96", children: _jsx("div", { className: "overflow-x-auto overflow-y-auto max-h-96 text-xs", children: _jsx(SyntaxHighlighter, { language: language, style: syntaxTheme, customStyle: {
118
- margin: 0,
119
- padding: '0.75rem',
120
- background: 'transparent',
121
- fontSize: 'inherit',
122
- }, showLineNumbers: true, lineNumberStyle: {
123
- minWidth: '2.5em',
124
- paddingRight: '1em',
125
- color: 'var(--muted-foreground)',
126
- opacity: 0.4,
127
- userSelect: 'none',
128
- }, children: content }) }) }) }));
129
- }
130
- if (toolName === 'bash' && args?.cmd) {
131
- const cmd = String(args.cmd);
132
- return (_jsx("div", { className: "ml-6 max-w-full overflow-hidden", children: _jsx("div", { className: "bg-card/60 border border-border rounded-lg overflow-hidden", children: _jsx("div", { className: "overflow-x-auto text-xs", children: _jsx(SyntaxHighlighter, { language: "bash", style: syntaxTheme, customStyle: {
133
- margin: 0,
134
- padding: '0.75rem',
135
- background: 'transparent',
136
- fontSize: 'inherit',
137
- }, children: cmd }) }) }) }));
138
- }
139
- return null;
140
- };
141
- return (_jsxs("div", { className: "flex flex-col gap-2 py-1", children: [_jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [_jsx(Shield, { className: "h-4 w-4 text-amber-500 flex-shrink-0" }), _jsx("span", { className: "font-medium text-foreground text-sm", children: toolLabel }), approvalTarget && toolName !== 'bash' && (_jsx("code", { className: "text-xs font-mono text-foreground/80 bg-muted/50 px-1.5 py-0.5 rounded truncate max-w-xs", children: approvalTarget })), _jsx("span", { className: "text-amber-600 dark:text-amber-400 font-medium text-sm", children: "requires approval" })] }), renderContent(), _jsxs("div", { className: "flex items-center gap-2 ml-6", children: [_jsxs("button", { type: "button", onClick: handleReject, disabled: isProcessing, title: "Reject (N or Esc)", className: "flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded border border-border bg-background hover:bg-muted transition-colors disabled:opacity-50", children: [_jsx(X, { className: "w-3 h-3" }), "Reject", _jsx("kbd", { className: "ml-1 text-[10px] text-muted-foreground opacity-70", children: "N" })] }), _jsxs("button", { type: "button", onClick: handleApprove, disabled: isProcessing, title: "Approve (Y)", 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 disabled:opacity-50", children: [_jsx(Check, { className: "w-3 h-3" }), isProcessing ? 'Approving...' : 'Approve', !isProcessing && (_jsx("kbd", { className: "ml-1 text-[10px] opacity-70", children: "Y" }))] })] })] }));
142
- });
143
- //# sourceMappingURL=ToolApprovalCard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolApprovalCard.js","sourceRoot":"","sources":["../../../src/components/messages/ToolApprovalCard.tsx"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { memo, useState } from 'react';
3
- import { Wallet, CreditCard, AlertCircle, Loader2, X } from 'lucide-react';
4
- import { apiClient } from '../../lib/api-client';
5
- import { toast } from '../../stores/toastStore';
6
- import { useSetuStore } from '../../stores/setuStore';
7
- export const TopupApprovalCard = memo(function TopupApprovalCard({ pendingTopup, onMethodSelected, onCancel, }) {
8
- const [isProcessing, setIsProcessing] = useState(false);
9
- const [selectedMethod, setSelectedMethod] = useState(null);
10
- const openTopupModal = useSetuStore((s) => s.openTopupModal);
11
- const hasGoPlan = useSetuStore((s) => !!s.subscription?.active);
12
- const handleSelectCrypto = async () => {
13
- setSelectedMethod('crypto');
14
- setIsProcessing(true);
15
- try {
16
- await apiClient.selectTopupMethod(pendingTopup.sessionId, 'crypto');
17
- onMethodSelected('crypto');
18
- }
19
- catch (error) {
20
- toast.error(error instanceof Error ? error.message : 'Failed to process payment');
21
- setIsProcessing(false);
22
- setSelectedMethod(null);
23
- }
24
- };
25
- const handleSelectFiat = async () => {
26
- setSelectedMethod('fiat');
27
- // Open modal immediately - don't wait for API
28
- openTopupModal();
29
- // Tell server fiat was selected (this will gracefully pause the request)
30
- apiClient.selectTopupMethod(pendingTopup.sessionId, 'fiat').catch(() => {
31
- // Ignore errors - the server handles fiat selection gracefully
32
- });
33
- onMethodSelected('fiat');
34
- };
35
- const handleCancel = async () => {
36
- setIsProcessing(true);
37
- try {
38
- await apiClient.cancelTopup(pendingTopup.sessionId);
39
- onCancel();
40
- }
41
- catch (error) {
42
- toast.error(error instanceof Error ? error.message : 'Failed to cancel');
43
- setIsProcessing(false);
44
- }
45
- };
46
- return (_jsxs("div", { className: "flex flex-col gap-3 py-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(AlertCircle, { className: "h-4 w-4 text-amber-500 flex-shrink-0" }), _jsx("span", { className: "font-medium text-foreground text-sm", children: "Insufficient Balance" }), _jsx("span", { className: "text-amber-600 dark:text-amber-400 font-medium text-sm", children: "payment required" })] }), hasGoPlan && (_jsx("p", { className: "ml-6 text-xs text-muted-foreground", children: "GO credits may not apply to this request. Add balance to continue." })), _jsxs("div", { className: "ml-6 bg-muted/30 rounded-lg p-3 space-y-2 text-sm", children: [_jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-muted-foreground", children: "Request cost" }), _jsxs("span", { className: "font-mono", children: ["~$", pendingTopup.amountUsd.toFixed(4)] })] }), _jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "text-muted-foreground", children: "Current balance" }), _jsxs("span", { className: "font-mono", children: ["$", pendingTopup.currentBalance.toFixed(4)] })] })] }), _jsxs("div", { className: "ml-6 flex flex-wrap items-center gap-2", children: [_jsxs("button", { type: "button", onClick: handleCancel, disabled: isProcessing, title: "Cancel request", className: "flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded border border-border bg-background hover:bg-muted transition-colors disabled:opacity-50", children: [_jsx(X, { className: "w-3 h-3" }), "Cancel"] }), _jsxs("button", { type: "button", onClick: handleSelectCrypto, disabled: isProcessing, title: "Pay with USDC from your wallet", className: "flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded bg-violet-600 text-white hover:bg-violet-700 transition-colors disabled:opacity-50", children: [selectedMethod === 'crypto' && isProcessing ? (_jsx(Loader2, { className: "w-3 h-3 animate-spin" })) : (_jsx(Wallet, { className: "w-3 h-3" })), "Pay with USDC"] }), _jsxs("button", { type: "button", onClick: handleSelectFiat, disabled: isProcessing, title: "Top up with card (min $5)", className: "flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded border border-violet-500 text-violet-600 dark:text-violet-400 hover:bg-violet-500/10 transition-colors disabled:opacity-50", children: [selectedMethod === 'fiat' && isProcessing ? (_jsx(Loader2, { className: "w-3 h-3 animate-spin" })) : (_jsx(CreditCard, { className: "w-3 h-3" })), "Top up with Card", _jsx("span", { className: "text-[10px] opacity-70", children: "(min $5)" })] })] }), _jsx("p", { className: "ml-6 text-xs text-muted-foreground", children: selectedMethod === 'crypto'
47
- ? 'Processing USDC payment from your wallet...'
48
- : selectedMethod === 'fiat'
49
- ? 'Opening checkout...'
50
- : 'Select a payment method to continue your request.' })] }));
51
- });
52
- //# sourceMappingURL=TopupApprovalCard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TopupApprovalCard.js","sourceRoot":"","sources":["../../../src/components/messages/TopupApprovalCard.tsx"],"names":[],"mappings":"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"}
@@ -1,132 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { memo, useState } from 'react';
3
- import { useQueryClient } from '@tanstack/react-query';
4
- import { User, X, FileText, FileIcon, Clock, Trash2, RotateCcw, FlaskConical, } from 'lucide-react';
5
- import ReactMarkdown from 'react-markdown';
6
- import remarkGfm from 'remark-gfm';
7
- import { useMessageQueuePosition } from '../../hooks/useQueueState';
8
- import { useQueueStore } from '../../stores/queueStore';
9
- import { apiClient } from '../../lib/api-client';
10
- import { parseResearchContext } from '../../lib/parseResearchContext';
11
- export const UserMessageGroup = memo(function UserMessageGroup({ sessionId, message, nextAssistantMessageId, }) {
12
- const [expandedImage, setExpandedImage] = useState(null);
13
- const parts = message.parts || [];
14
- const queryClient = useQueryClient();
15
- const { isQueued, position } = useMessageQueuePosition(sessionId, nextAssistantMessageId ?? '');
16
- const setPendingRestoreText = useQueueStore((state) => state.setPendingRestoreText);
17
- const textParts = parts.filter((p) => p.type === 'text');
18
- const imageParts = parts.filter((p) => p.type === 'image');
19
- const fileParts = parts.filter((p) => p.type === 'file');
20
- const firstTextPart = textParts[0];
21
- let rawContent = '';
22
- if (firstTextPart) {
23
- const data = firstTextPart.contentJson || firstTextPart.content;
24
- if (data && typeof data === 'object' && 'text' in data) {
25
- rawContent = String(data.text);
26
- }
27
- else if (typeof data === 'string') {
28
- rawContent = data;
29
- }
30
- else if (data) {
31
- rawContent = JSON.stringify(data, null, 2);
32
- }
33
- }
34
- const { researchContexts: parsedResearchContexts, cleanContent: content } = parseResearchContext(rawContent);
35
- const images = [];
36
- for (const part of imageParts) {
37
- try {
38
- const data = part.contentJson || JSON.parse(part.content || '{}');
39
- if (data && typeof data === 'object' && 'data' in data) {
40
- const imgData = data;
41
- const src = `data:${imgData.mediaType};base64,${imgData.data}`;
42
- images.push({ id: part.id, src });
43
- }
44
- }
45
- catch { }
46
- }
47
- const files = [];
48
- for (const part of fileParts) {
49
- try {
50
- const data = part.contentJson || JSON.parse(part.content || '{}');
51
- if (data && typeof data === 'object' && 'type' in data) {
52
- const fileData = data;
53
- if (fileData.type === 'image' && fileData.data) {
54
- const src = `data:${fileData.mediaType};base64,${fileData.data}`;
55
- images.push({ id: part.id, src });
56
- }
57
- else {
58
- files.push({
59
- id: part.id,
60
- type: fileData.type,
61
- name: fileData.name,
62
- });
63
- }
64
- }
65
- }
66
- catch { }
67
- }
68
- const formatTime = (ts) => {
69
- if (!ts)
70
- return '';
71
- const date = new Date(ts);
72
- return date.toLocaleTimeString([], {
73
- hour: '2-digit',
74
- minute: '2-digit',
75
- });
76
- };
77
- const hasContent = content.trim().length > 0;
78
- const hasImages = images.length > 0;
79
- const hasFiles = files.length > 0;
80
- const hasResearchContexts = parsedResearchContexts.length > 0;
81
- if (!hasContent && !hasImages && !hasFiles && !hasResearchContexts)
82
- return null;
83
- const handleCancel = async () => {
84
- if (!sessionId || !nextAssistantMessageId)
85
- return;
86
- setPendingRestoreText(content);
87
- try {
88
- await apiClient.removeFromQueue(sessionId, nextAssistantMessageId);
89
- // Invalidate messages to refresh UI
90
- queryClient.invalidateQueries({ queryKey: ['messages', sessionId] });
91
- }
92
- catch (err) {
93
- console.error('Failed to cancel queued message:', err);
94
- }
95
- };
96
- const handleDelete = async () => {
97
- if (!sessionId || !nextAssistantMessageId)
98
- return;
99
- try {
100
- await apiClient.removeFromQueue(sessionId, nextAssistantMessageId);
101
- // Invalidate messages to refresh UI
102
- queryClient.invalidateQueries({ queryKey: ['messages', sessionId] });
103
- }
104
- catch (err) {
105
- console.error('Failed to delete queued message:', err);
106
- }
107
- };
108
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: "relative pb-8 pt-6", children: _jsxs("div", { className: "flex gap-3 md:gap-4 justify-end", children: [_jsxs("div", { className: "flex flex-col items-end min-w-0 flex-1 max-w-[calc(100%-3rem)] md:max-w-2xl", children: [_jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground pb-2 justify-end", children: [_jsx("span", { className: "font-medium text-emerald-700 dark:text-emerald-300", children: "You" }), message.createdAt && _jsx("span", { children: "\u00B7" }), message.createdAt && (_jsx("span", { children: formatTime(message.createdAt) })), isQueued && (_jsxs(_Fragment, { children: [_jsx("span", { children: "\u00B7" }), _jsxs("span", { className: "inline-flex items-center gap-1 text-amber-600 dark:text-amber-400", children: [_jsx(Clock, { className: "h-3 w-3" }), "Queued", position !== null && position > 0
109
- ? ` #${position + 1}`
110
- : ''] })] }))] }), _jsxs("div", { className: "inline-block max-w-full text-sm text-foreground leading-relaxed bg-emerald-500/5 border border-emerald-500/20 rounded-xl px-4 py-3 [word-break:break-word] overflow-hidden", children: [hasImages && (_jsx("div", { className: "flex flex-wrap gap-2 mb-2", children: images.map((img) => (_jsx("button", { type: "button", onClick: () => setExpandedImage(img.src), className: "w-16 h-16 rounded-lg overflow-hidden bg-muted hover:ring-2 hover:ring-primary/50 transition-all", children: _jsx("img", { src: img.src, alt: "Attachment", className: "w-full h-full object-cover" }) }, img.id))) })), hasFiles && (_jsx("div", { className: "flex flex-wrap gap-2 mb-2", children: files.map((file) => (_jsxs("div", { className: "flex items-center gap-2 px-3 py-2 rounded-lg bg-muted/50 border border-border", children: [file.type === 'pdf' ? (_jsx(FileIcon, { className: "w-4 h-4 text-red-500 flex-shrink-0" })) : (_jsx(FileText, { className: "w-4 h-4 text-blue-500 flex-shrink-0" })), _jsx("span", { className: "text-xs truncate max-w-[150px]", children: file.name })] }, file.id))) })), hasResearchContexts && (_jsx("div", { className: "flex flex-wrap gap-2 mb-2", children: parsedResearchContexts.map((ctx) => (_jsxs("div", { className: "flex items-center gap-2 px-3 py-2 rounded-lg bg-teal-500/10 border border-teal-500/30", children: [_jsx(FlaskConical, { className: "w-4 h-4 text-teal-500 flex-shrink-0" }), _jsx("span", { className: "text-xs text-teal-600 dark:text-teal-400", children: ctx.label })] }, ctx.id))) })), hasContent && (_jsx("div", { className: "prose prose-invert prose-sm [&>*:first-child]:mt-0 [&>*:last-child]:mb-0 [&_*]:[word-break:break-word] [&_*]:overflow-wrap-anywhere whitespace-pre-wrap", children: _jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], components: {
111
- a: ({ href, children, ...props }) => (_jsx("a", { href: href, target: "_blank", rel: "noopener noreferrer", onClick: (e) => {
112
- if (window.self !== window.top && href) {
113
- e.preventDefault();
114
- window.parent.postMessage({
115
- type: 'otto-open-url',
116
- url: href,
117
- }, '*');
118
- }
119
- }, ...props, children: children })),
120
- }, children: content.replace(/\n/g, ' \n') }) }))] }), isQueued && (_jsxs("div", { className: "flex items-center gap-2 mt-2", children: [_jsxs("button", { type: "button", onClick: handleCancel, className: "inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-md bg-muted hover:bg-muted/80 text-muted-foreground hover:text-foreground transition-colors", title: "Cancel and restore to input", children: [_jsx(RotateCcw, { className: "h-3 w-3" }), "Cancel"] }), _jsxs("button", { type: "button", onClick: handleDelete, className: "inline-flex items-center gap-1.5 px-2.5 py-1 text-xs rounded-md bg-destructive/10 hover:bg-destructive/20 text-destructive transition-colors", title: "Delete from queue", children: [_jsx(Trash2, { className: "h-3 w-3" }), "Delete"] })] }))] }), _jsx("div", { className: "flex-shrink-0 w-8 flex items-start justify-center", children: _jsx("div", { className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 border-emerald-500/50 bg-emerald-500/20 dark:bg-emerald-500/10 relative bg-background", children: _jsx(User, { className: "h-4 w-4 text-emerald-700 dark:text-emerald-300" }) }) })] }) }), expandedImage && (_jsxs("div", { role: "dialog", "aria-modal": "true", className: "fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4", onClick: () => setExpandedImage(null), onKeyDown: (e) => e.key === 'Escape' && setExpandedImage(null), tabIndex: -1, children: [_jsx("button", { type: "button", onClick: () => setExpandedImage(null), className: "absolute top-4 right-4 p-2 rounded-full bg-white/10 hover:bg-white/20 transition-colors", children: _jsx(X, { className: "w-6 h-6 text-white" }) }), _jsx("img", { src: expandedImage, alt: "Expanded attachment", className: "max-w-full max-h-full object-contain rounded-lg", onClick: (e) => e.stopPropagation(), onKeyDown: (e) => e.key === 'Enter' && e.stopPropagation() })] }))] }));
121
- }, (prevProps, nextProps) => {
122
- const prevFirstPart = prevProps.message.parts?.[0];
123
- const nextFirstPart = nextProps.message.parts?.[0];
124
- return (prevProps.message.id === nextProps.message.id &&
125
- prevFirstPart?.content === nextFirstPart?.content &&
126
- prevFirstPart?.contentJson === nextFirstPart?.contentJson &&
127
- prevProps.message.createdAt === nextProps.message.createdAt &&
128
- prevProps.message.parts?.length === nextProps.message.parts?.length &&
129
- prevProps.sessionId === nextProps.sessionId &&
130
- prevProps.nextAssistantMessageId === nextProps.nextAssistantMessageId);
131
- });
132
- //# sourceMappingURL=UserMessageGroup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UserMessageGroup.js","sourceRoot":"","sources":["../../../src/components/messages/UserMessageGroup.tsx"],"names":[],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ChevronRight } from 'lucide-react';
3
- import { DiffView } from './DiffView';
4
- import { formatDuration } from './utils';
5
- import { ToolErrorDisplay } from './ToolErrorDisplay';
6
- export function ApplyPatchRenderer({ contentJson, toolDurationMs, isExpanded, onToggle, }) {
7
- const artifact = contentJson.artifact;
8
- const timeStr = formatDuration(toolDurationMs);
9
- const formatSpan = (start, count) => {
10
- if (count <= 1)
11
- return `${start}`;
12
- return `${start}-${start + count - 1}`;
13
- };
14
- const formatHunkLabel = (hunk) => {
15
- const left = `-${formatSpan(hunk.oldStart, hunk.oldLines)}`;
16
- const right = `+${formatSpan(hunk.newStart, hunk.newLines)}`;
17
- const deltaParts = [];
18
- if (hunk.additions > 0)
19
- deltaParts.push(`+${hunk.additions}`);
20
- if (hunk.deletions > 0)
21
- deltaParts.push(`-${hunk.deletions}`);
22
- const delta = deltaParts.length > 0 ? ` (${deltaParts.join(', ')})` : '';
23
- return `${left} ${right}${delta}`;
24
- };
25
- const summary = artifact?.summary || {};
26
- const files = Number(summary.files || 0);
27
- const additions = Number(summary.additions || 0);
28
- const deletions = Number(summary.deletions || 0);
29
- const patch = artifact?.patch ? String(artifact.patch) : '';
30
- const changes = Array.isArray(contentJson.result?.changes)
31
- ? contentJson.result?.changes
32
- : [];
33
- const singleFilePath = files === 1 && changes.length > 0 ? changes[0].filePath : null;
34
- const hasError = contentJson.error ||
35
- (contentJson.result &&
36
- 'ok' in contentJson.result &&
37
- contentJson.result.ok === false);
38
- const errorMessage = typeof contentJson.error === 'string'
39
- ? contentJson.error
40
- : contentJson.result &&
41
- 'error' in contentJson.result &&
42
- typeof contentJson.result.error === 'string'
43
- ? contentJson.result.error
44
- : null;
45
- const errorStack = contentJson.result &&
46
- typeof contentJson.result === 'object' &&
47
- 'stack' in contentJson.result &&
48
- typeof contentJson.result.stack === 'string'
49
- ? contentJson.result.stack
50
- : undefined;
51
- return (_jsxs("div", { className: "text-xs", children: [_jsxs("button", { type: "button", onClick: onToggle, className: `flex items-center gap-2 transition-colors w-full ${hasError
52
- ? 'text-red-700 dark:text-red-300 hover:text-red-600 dark:hover:text-red-200'
53
- : 'text-purple-700 dark:text-purple-300 hover:text-purple-600 dark:hover:text-purple-200'}`, children: [_jsx(ChevronRight, { className: `h-3 w-3 flex-shrink-0 transition-transform ${isExpanded ? 'rotate-90' : ''}` }), _jsxs("span", { className: "font-medium flex-shrink-0", children: ["apply patch", hasError ? ' error' : ''] }), _jsx("span", { className: "text-muted-foreground/70 flex-shrink-0", children: "\u00B7" }), singleFilePath ? (_jsx("span", { className: "text-foreground/70 min-w-0 flex-shrink overflow-hidden text-ellipsis whitespace-nowrap", dir: "rtl", title: singleFilePath, children: `\u2066${singleFilePath}\u2069` })) : (_jsxs("span", { className: "text-foreground/70 flex-shrink-0", children: [files, " ", files === 1 ? 'file' : 'files'] })), _jsxs("span", { className: "text-emerald-600 dark:text-emerald-400 flex-shrink-0", children: ["+", additions] }), _jsxs("span", { className: "text-red-600 dark:text-red-400 flex-shrink-0", children: ["-", deletions] }), _jsxs("span", { className: "text-muted-foreground/80 flex-shrink-0", children: ["\u00B7 ", timeStr] })] }), isExpanded && hasError && errorMessage && (_jsxs("div", { children: [_jsx(ToolErrorDisplay, { error: errorMessage, stack: errorStack, showStack: true }), patch && (_jsx("div", { className: "mt-2 ml-5", children: _jsxs("details", { children: [_jsx("summary", { className: "cursor-pointer text-xs text-red-700 dark:text-red-300 hover:text-red-600 dark:hover:text-red-200", children: "Show patch that failed" }), _jsx("div", { className: "mt-2", children: _jsx(DiffView, { patch: patch }) })] }) }))] })), isExpanded && !hasError && changes.length > 0 && (_jsx("div", { className: "mt-2 ml-5 space-y-2", children: changes.map((change) => (_jsxs("div", { className: "space-y-1", children: [_jsx("div", { className: "font-mono text-foreground/80", children: change.filePath }), _jsx("div", { className: "flex flex-wrap gap-2", children: change.hunks.map((hunk, index) => (_jsx("span", { className: "rounded bg-muted px-2 py-0.5 text-[0.65rem] font-mono text-muted-foreground", children: formatHunkLabel(hunk) }, `apply-patch-${change.filePath}-hunk-${index}`))) })] }, `apply-patch-${change.filePath}-${change.kind}`))) })), isExpanded && !hasError && patch && (_jsx("div", { className: "mt-2 ml-5", children: _jsx(DiffView, { patch: patch }) }))] }));
54
- }
55
- //# sourceMappingURL=ApplyPatchRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ApplyPatchRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/ApplyPatchRenderer.tsx"],"names":[],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Terminal } from 'lucide-react';
3
- import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
4
- import { prism, vscDarkPlus, } from 'react-syntax-highlighter/dist/esm/styles/prism';
5
- import { formatDuration } from './utils';
6
- import { ToolErrorDisplay } from './ToolErrorDisplay';
7
- import { ToolHeader, ToolHeaderSeparator, ToolHeaderMeta, ToolHeaderSuccess, ToolHeaderError, ToolContentBox, } from './shared';
8
- export function BashRenderer({ contentJson, toolDurationMs, isExpanded, onToggle, compact, }) {
9
- const result = contentJson.result || {};
10
- const args = contentJson.args || {};
11
- const hasToolError = typeof result === 'object' && 'ok' in result && result.ok === false;
12
- const errorMessage = hasToolError && 'error' in result && typeof result.error === 'string'
13
- ? result.error
14
- : null;
15
- const errorStack = hasToolError && 'stack' in result && typeof result.stack === 'string'
16
- ? result.stack
17
- : undefined;
18
- const stdout = String(result.stdout || '');
19
- const stderr = String(result.stderr || '');
20
- const exitCode = Number(result.exitCode ?? 0);
21
- const cmd = String(args.cmd || '');
22
- const cwd = args.cwd ? String(args.cwd) : undefined;
23
- const timeStr = formatDuration(toolDurationMs);
24
- const syntaxTheme = document?.documentElement.classList.contains('dark')
25
- ? vscDarkPlus
26
- : prism;
27
- const hasOutput = stdout.length > 0 || stderr.length > 0;
28
- const isError = hasToolError || exitCode !== 0;
29
- const hasStderr = stderr.length > 0;
30
- const combinedOutput = stdout + (stdout && stderr ? '\n' : '') + stderr;
31
- return (_jsxs("div", { className: "text-xs", children: [_jsxs(ToolHeader, { toolName: "bash", isExpanded: isExpanded, onToggle: onToggle, isError: isError, colorVariant: "default", canExpand: true, children: [!compact && (_jsxs(_Fragment, { children: [_jsx(ToolHeaderSeparator, {}), _jsx("span", { className: "text-foreground/70 min-w-0 truncate font-mono text-[11px]", title: cmd, children: cmd })] })), !hasToolError && !compact && (_jsxs(_Fragment, { children: [_jsx(ToolHeaderSeparator, {}), exitCode === 0 ? (_jsxs(ToolHeaderSuccess, { children: ["exit ", exitCode] })) : (_jsxs(ToolHeaderError, { children: ["exit ", exitCode] })), _jsx(ToolHeaderSeparator, {}), _jsx(ToolHeaderMeta, { children: timeStr })] })), hasToolError && !compact && (_jsxs(ToolHeaderMeta, { children: ["\u00B7 ", timeStr] }))] }), isExpanded && hasToolError && errorMessage && (_jsx(ToolErrorDisplay, { error: errorMessage, stack: errorStack, showStack: true })), isExpanded && !hasToolError && (_jsxs("div", { className: "mt-2 ml-5 flex flex-col gap-2 max-w-full", children: [_jsx(ToolContentBox, { title: "command", icon: _jsx(Terminal, { className: "h-3 w-3" }), subtitle: cwd && cwd !== '.' ? `in ${cwd}` : undefined, copyText: cmd, maxHeight: "", children: _jsx("div", { className: "px-3 py-2 font-mono text-xs bg-muted/10 break-all", children: cmd }) }), hasOutput &&
32
- (exitCode === 0 ? (_jsx(ToolContentBox, { title: "output", copyText: combinedOutput, maxHeight: "max-h-[30rem]", children: _jsx(SyntaxHighlighter, { language: "bash", style: syntaxTheme, customStyle: {
33
- margin: 0,
34
- padding: '0.75rem',
35
- fontSize: '0.75rem',
36
- lineHeight: '1.5',
37
- background: 'transparent',
38
- maxWidth: '100%',
39
- }, wrapLines: true, wrapLongLines: true, children: combinedOutput }) })) : (_jsxs(_Fragment, { children: [stdout && (_jsx(ToolContentBox, { title: "stdout", copyText: stdout, maxHeight: "max-h-60", children: _jsx(SyntaxHighlighter, { language: "bash", style: syntaxTheme, customStyle: {
40
- margin: 0,
41
- padding: '0.75rem',
42
- fontSize: '0.75rem',
43
- lineHeight: '1.5',
44
- background: 'transparent',
45
- maxWidth: '100%',
46
- }, wrapLines: true, wrapLongLines: true, children: stdout }) })), hasStderr && (_jsx(ToolContentBox, { title: "stderr", copyText: stderr, variant: "error", maxHeight: "max-h-60", children: _jsx(SyntaxHighlighter, { language: "bash", style: syntaxTheme, customStyle: {
47
- margin: 0,
48
- padding: '0.75rem',
49
- fontSize: '0.75rem',
50
- lineHeight: '1.5',
51
- background: 'transparent',
52
- maxWidth: '100%',
53
- }, wrapLines: true, wrapLongLines: true, children: stderr }) }))] })))] }))] }));
54
- }
55
- //# sourceMappingURL=BashRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BashRenderer.js","sourceRoot":"","sources":["../../../../src/components/messages/renderers/BashRenderer.tsx"],"names":[],"mappings":"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"}