@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
package/dist/lib/index.js CHANGED
@@ -1,5 +1,1007 @@
1
- // Export all library utilities
2
- export * from './api-client';
3
- export * from './sse-client';
4
- export * from './config';
5
- //# sourceMappingURL=index.js.map
1
+ // src/lib/api-client/sessions.ts
2
+ import {
3
+ createSession as apiCreateSession,
4
+ listSessions as apiListSessions,
5
+ listMessages as apiListMessages,
6
+ createMessage as apiCreateMessage,
7
+ abortSession as apiAbortSession,
8
+ deleteSession as apiDeleteSession,
9
+ updateSession as apiUpdateSession,
10
+ getSessionQueue as apiGetSessionQueue,
11
+ removeFromQueue as apiRemoveFromQueue,
12
+ retryMessage as apiRetryMessage
13
+ } from "@ottocode/api";
14
+
15
+ // src/lib/api-client/utils.ts
16
+ import { client } from "@ottocode/api";
17
+
18
+ // src/lib/config.ts
19
+ function computeApiBaseUrl() {
20
+ const envUrl = import.meta.env?.VITE_API_BASE_URL;
21
+ if (envUrl) {
22
+ return envUrl;
23
+ }
24
+ if (typeof window !== "undefined") {
25
+ const win = window;
26
+ if (win.OTTO_SERVER_URL) {
27
+ return win.OTTO_SERVER_URL;
28
+ }
29
+ if (win.__OTTO_API_URL__) {
30
+ return win.__OTTO_API_URL__;
31
+ }
32
+ }
33
+ return "http://localhost:9100";
34
+ }
35
+ function getRuntimeApiBaseUrl() {
36
+ return computeApiBaseUrl();
37
+ }
38
+ var API_BASE_URL = computeApiBaseUrl();
39
+ var config = {
40
+ apiBaseUrl: API_BASE_URL
41
+ };
42
+
43
+ // src/lib/api-client/utils.ts
44
+ function extractErrorMessage(error) {
45
+ if (!error)
46
+ return "Unknown error";
47
+ if (typeof error === "string")
48
+ return error;
49
+ if (error && typeof error === "object") {
50
+ const errObj = error;
51
+ if (errObj.error && typeof errObj.error === "object") {
52
+ const innerError = errObj.error;
53
+ if (typeof innerError.message === "string")
54
+ return innerError.message;
55
+ }
56
+ if (typeof errObj.error === "string")
57
+ return errObj.error;
58
+ if (typeof errObj.message === "string")
59
+ return errObj.message;
60
+ try {
61
+ return JSON.stringify(error);
62
+ } catch {
63
+ return "Error occurred (unable to parse)";
64
+ }
65
+ }
66
+ return "Unknown error";
67
+ }
68
+ function configureApiClient() {
69
+ const win = window;
70
+ const baseURL = win.OTTO_SERVER_URL || API_BASE_URL;
71
+ client.setConfig({ baseURL });
72
+ }
73
+ configureApiClient();
74
+ function getBaseUrl() {
75
+ const win = window;
76
+ if (win.OTTO_SERVER_URL)
77
+ return win.OTTO_SERVER_URL;
78
+ return API_BASE_URL;
79
+ }
80
+ function convertSession(apiSession) {
81
+ return {
82
+ ...apiSession,
83
+ title: apiSession.title ?? null,
84
+ createdAt: typeof apiSession.createdAt === "string" ? new Date(apiSession.createdAt).getTime() : apiSession.createdAt,
85
+ lastActiveAt: typeof apiSession.lastActiveAt === "string" ? new Date(apiSession.lastActiveAt).getTime() : apiSession.lastActiveAt
86
+ };
87
+ }
88
+ function convertMessage(apiMessage) {
89
+ return {
90
+ ...apiMessage,
91
+ createdAt: typeof apiMessage.createdAt === "string" ? new Date(apiMessage.createdAt).getTime() : apiMessage.createdAt,
92
+ completedAt: apiMessage.completedAt ? typeof apiMessage.completedAt === "string" ? new Date(apiMessage.completedAt).getTime() : apiMessage.completedAt : null
93
+ };
94
+ }
95
+
96
+ // src/lib/api-client/sessions.ts
97
+ var sessionsMixin = {
98
+ async getSessions() {
99
+ const page = await this.getSessionsPage({ limit: 200 });
100
+ return page.items;
101
+ },
102
+ async getSessionsPage(params = {}) {
103
+ const { limit = 50, offset = 0 } = params;
104
+ const response = await apiListSessions({
105
+ query: { limit, offset }
106
+ });
107
+ if (response.error)
108
+ throw new Error(extractErrorMessage(response.error));
109
+ const data = response.data;
110
+ return {
111
+ items: (data?.items ?? []).map((s) => convertSession(s)),
112
+ hasMore: data?.hasMore ?? false,
113
+ nextOffset: data?.nextOffset ?? null
114
+ };
115
+ },
116
+ async createSession(data) {
117
+ const response = await apiCreateSession({
118
+ body: data
119
+ });
120
+ if (response.error)
121
+ throw new Error(extractErrorMessage(response.error));
122
+ if (!response.data)
123
+ throw new Error("No data returned from create session");
124
+ return convertSession(response.data);
125
+ },
126
+ async updateSession(sessionId, data) {
127
+ const response = await apiUpdateSession({
128
+ path: { sessionId },
129
+ body: data
130
+ });
131
+ if (response.error)
132
+ throw new Error(extractErrorMessage(response.error));
133
+ return convertSession(response.data);
134
+ },
135
+ async deleteSession(sessionId) {
136
+ const response = await apiDeleteSession({ path: { sessionId } });
137
+ if (response.error)
138
+ throw new Error(extractErrorMessage(response.error));
139
+ return response.data;
140
+ },
141
+ async abortSession(sessionId) {
142
+ const response = await apiAbortSession({ path: { sessionId } });
143
+ if (response.error)
144
+ throw new Error(extractErrorMessage(response.error));
145
+ return response.data;
146
+ },
147
+ async abortMessage(sessionId, _messageId) {
148
+ const response = await apiAbortSession({
149
+ path: { sessionId }
150
+ });
151
+ if (response.error)
152
+ throw new Error("Failed to abort message");
153
+ return response.data;
154
+ },
155
+ async getQueueState(sessionId) {
156
+ const response = await apiGetSessionQueue({ path: { sessionId } });
157
+ if (response.error)
158
+ throw new Error("Failed to get queue state");
159
+ return response.data;
160
+ },
161
+ async removeFromQueue(sessionId, messageId) {
162
+ const response = await apiRemoveFromQueue({
163
+ path: { sessionId, messageId }
164
+ });
165
+ if (response.error)
166
+ throw new Error("Failed to remove from queue");
167
+ return response.data;
168
+ },
169
+ async getMessages(sessionId) {
170
+ const response = await apiListMessages({ path: { id: sessionId } });
171
+ if (response.error)
172
+ throw new Error(extractErrorMessage(response.error));
173
+ return (response.data || []).map(convertMessage);
174
+ },
175
+ async sendMessage(sessionId, data) {
176
+ const response = await apiCreateMessage({
177
+ path: { id: sessionId },
178
+ body: data
179
+ });
180
+ if (response.error)
181
+ throw new Error(extractErrorMessage(response.error));
182
+ return response.data;
183
+ },
184
+ getStreamUrl(sessionId) {
185
+ return `${getBaseUrl()}/v1/sessions/${sessionId}/stream`;
186
+ },
187
+ async retryMessage(sessionId, messageId) {
188
+ const response = await apiRetryMessage({
189
+ path: { sessionId, messageId }
190
+ });
191
+ if (response.error)
192
+ throw new Error(extractErrorMessage(response.error));
193
+ return response.data;
194
+ }
195
+ };
196
+
197
+ // src/lib/api-client/git.ts
198
+ import {
199
+ getGitStatus as apiGetGitStatus,
200
+ getGitDiff as apiGetGitDiff,
201
+ getGitBranch as apiGetGitBranch,
202
+ stageFiles as apiStageFiles,
203
+ unstageFiles as apiUnstageFiles,
204
+ restoreFiles as apiRestoreFiles,
205
+ deleteFiles as apiDeleteFiles,
206
+ commitChanges as apiCommitChanges,
207
+ generateCommitMessage as apiGenerateCommitMessage,
208
+ pushCommits as apiPushCommits,
209
+ pullChanges as apiPullChanges,
210
+ initGitRepo as apiInitGitRepo,
211
+ getGitRemotes as apiGetGitRemotes,
212
+ addGitRemote as apiAddGitRemote,
213
+ removeGitRemote as apiRemoveGitRemote
214
+ } from "@ottocode/api";
215
+ var gitMixin = {
216
+ async initGitRepo() {
217
+ const response = await apiInitGitRepo();
218
+ if (response.error)
219
+ throw new Error(extractErrorMessage(response.error));
220
+ return response.data?.data;
221
+ },
222
+ async getGitStatus() {
223
+ const response = await apiGetGitStatus();
224
+ if (response.error)
225
+ throw new Error(extractErrorMessage(response.error));
226
+ return response.data?.data;
227
+ },
228
+ async getGitDiff(file, staged = false) {
229
+ const response = await apiGetGitDiff({
230
+ query: { file, staged: staged ? "true" : "false" }
231
+ });
232
+ if (response.error)
233
+ throw new Error(extractErrorMessage(response.error));
234
+ return response.data?.data;
235
+ },
236
+ async getGitDiffFullFile(file, staged = false) {
237
+ const response = await apiGetGitDiff({
238
+ query: {
239
+ file,
240
+ staged: staged ? "true" : "false",
241
+ fullFile: "true"
242
+ }
243
+ });
244
+ if (response.error)
245
+ throw new Error(extractErrorMessage(response.error));
246
+ return response.data?.data;
247
+ },
248
+ async generateCommitMessage(sessionId) {
249
+ const response = await apiGenerateCommitMessage({
250
+ body: sessionId ? { sessionId } : {}
251
+ });
252
+ if (response.error)
253
+ throw new Error(extractErrorMessage(response.error));
254
+ return response.data?.data;
255
+ },
256
+ async stageFiles(files) {
257
+ const response = await apiStageFiles({
258
+ body: { files }
259
+ });
260
+ if (response.error)
261
+ throw new Error(extractErrorMessage(response.error));
262
+ return response.data?.data;
263
+ },
264
+ async unstageFiles(files) {
265
+ const response = await apiUnstageFiles({
266
+ body: { files }
267
+ });
268
+ if (response.error)
269
+ throw new Error(extractErrorMessage(response.error));
270
+ return response.data?.data;
271
+ },
272
+ async restoreFiles(files) {
273
+ const response = await apiRestoreFiles({
274
+ body: { files }
275
+ });
276
+ if (response.error)
277
+ throw new Error(extractErrorMessage(response.error));
278
+ return response.data?.data;
279
+ },
280
+ async deleteFiles(files) {
281
+ const response = await apiDeleteFiles({
282
+ body: { files }
283
+ });
284
+ if (response.error)
285
+ throw new Error(extractErrorMessage(response.error));
286
+ return response.data?.data;
287
+ },
288
+ async commitChanges(message) {
289
+ const response = await apiCommitChanges({
290
+ body: { message }
291
+ });
292
+ if (response.error)
293
+ throw new Error(extractErrorMessage(response.error));
294
+ return response.data?.data;
295
+ },
296
+ async getGitBranch() {
297
+ const response = await apiGetGitBranch();
298
+ if (response.error)
299
+ throw new Error(extractErrorMessage(response.error));
300
+ return response.data?.data;
301
+ },
302
+ async pushCommits() {
303
+ const response = await apiPushCommits({
304
+ body: {}
305
+ });
306
+ if (response.error)
307
+ throw new Error(extractErrorMessage(response.error));
308
+ return response.data?.data;
309
+ },
310
+ async pullChanges() {
311
+ const response = await apiPullChanges({
312
+ body: {}
313
+ });
314
+ if (response.error)
315
+ throw new Error(extractErrorMessage(response.error));
316
+ return response.data?.data;
317
+ },
318
+ async getRemotes() {
319
+ const response = await apiGetGitRemotes();
320
+ if (response.error)
321
+ throw new Error(extractErrorMessage(response.error));
322
+ return response.data?.data?.remotes;
323
+ },
324
+ async addRemote(name, url) {
325
+ const response = await apiAddGitRemote({
326
+ body: { name, url }
327
+ });
328
+ if (response.error)
329
+ throw new Error(extractErrorMessage(response.error));
330
+ return response.data?.data;
331
+ },
332
+ async removeRemote(name) {
333
+ const response = await apiRemoveGitRemote({
334
+ body: { name }
335
+ });
336
+ if (response.error)
337
+ throw new Error(extractErrorMessage(response.error));
338
+ return response.data?.data;
339
+ }
340
+ };
341
+
342
+ // src/lib/api-client/config.ts
343
+ import {
344
+ getConfig as apiGetConfig,
345
+ getProviderModels as apiGetProviderModels,
346
+ getAllModels as apiGetAllModels,
347
+ updateDefaults as apiUpdateDefaults
348
+ } from "@ottocode/api";
349
+ var configMixin = {
350
+ async getConfig() {
351
+ const response = await apiGetConfig();
352
+ if (response.error)
353
+ throw new Error(extractErrorMessage(response.error));
354
+ return response.data;
355
+ },
356
+ async getModels(providerId) {
357
+ const response = await apiGetProviderModels({
358
+ path: { provider: providerId }
359
+ });
360
+ if (response.error)
361
+ throw new Error(extractErrorMessage(response.error));
362
+ return response.data;
363
+ },
364
+ async getAllModels() {
365
+ const response = await apiGetAllModels();
366
+ if (response.error)
367
+ throw new Error(extractErrorMessage(response.error));
368
+ return response.data;
369
+ },
370
+ async updateDefaults(data) {
371
+ const response = await apiUpdateDefaults({
372
+ body: data
373
+ });
374
+ if (response.error)
375
+ throw new Error(extractErrorMessage(response.error));
376
+ return response.data;
377
+ }
378
+ };
379
+
380
+ // src/lib/api-client/files.ts
381
+ import {
382
+ listFiles as apiListFiles,
383
+ getFileTree as apiGetFileTree,
384
+ readFile as apiReadFile,
385
+ getSessionFiles as apiGetSessionFiles
386
+ } from "@ottocode/api";
387
+ var filesMixin = {
388
+ async listFiles() {
389
+ const response = await apiListFiles();
390
+ if (response.error)
391
+ throw new Error(extractErrorMessage(response.error));
392
+ return response.data;
393
+ },
394
+ async getFileTree(dirPath = ".") {
395
+ const response = await apiGetFileTree({
396
+ query: { path: dirPath }
397
+ });
398
+ if (response.error)
399
+ throw new Error(extractErrorMessage(response.error));
400
+ return response.data;
401
+ },
402
+ async readFileContent(filePath) {
403
+ const response = await apiReadFile({
404
+ query: { path: filePath }
405
+ });
406
+ if (response.error)
407
+ throw new Error(extractErrorMessage(response.error));
408
+ return response.data;
409
+ },
410
+ async getSessionFiles(sessionId) {
411
+ const response = await apiGetSessionFiles({ path: { sessionId } });
412
+ if (response.error)
413
+ throw new Error(extractErrorMessage(response.error));
414
+ return response.data;
415
+ }
416
+ };
417
+
418
+ // src/lib/api-client/branches.ts
419
+ import {
420
+ createBranch as apiCreateBranch,
421
+ listBranches as apiListBranches,
422
+ getParentSession as apiGetParentSession,
423
+ getShareStatus as apiGetShareStatus,
424
+ shareSession as apiShareSession,
425
+ syncShare as apiSyncShare
426
+ } from "@ottocode/api";
427
+ var branchesMixin = {
428
+ async createBranch(sessionId, data) {
429
+ const response = await apiCreateBranch({
430
+ path: { sessionId },
431
+ body: data
432
+ });
433
+ if (response.error)
434
+ throw new Error(extractErrorMessage(response.error));
435
+ return response.data;
436
+ },
437
+ async listBranches(sessionId) {
438
+ const response = await apiListBranches({ path: { sessionId } });
439
+ if (response.error)
440
+ throw new Error(extractErrorMessage(response.error));
441
+ return response.data;
442
+ },
443
+ async getParentSession(sessionId) {
444
+ const response = await apiGetParentSession({ path: { sessionId } });
445
+ if (response.error)
446
+ throw new Error(extractErrorMessage(response.error));
447
+ return response.data;
448
+ },
449
+ async getShareStatus(sessionId) {
450
+ const response = await apiGetShareStatus({ path: { sessionId } });
451
+ if (response.error)
452
+ return { shared: false };
453
+ return response.data;
454
+ },
455
+ async shareSession(sessionId) {
456
+ const response = await apiShareSession({ path: { sessionId } });
457
+ if (response.error)
458
+ throw new Error(extractErrorMessage(response.error));
459
+ return response.data;
460
+ },
461
+ async syncSession(sessionId) {
462
+ const response = await apiSyncShare({ path: { sessionId } });
463
+ if (response.error)
464
+ throw new Error(extractErrorMessage(response.error));
465
+ return response.data;
466
+ }
467
+ };
468
+
469
+ // src/lib/api-client/approval.ts
470
+ import {
471
+ resolveApproval as apiResolveApproval,
472
+ getPendingApprovals as apiGetPendingApprovals
473
+ } from "@ottocode/api";
474
+ var approvalMixin = {
475
+ async approveToolCall(sessionId, callId, approved) {
476
+ const response = await apiResolveApproval({
477
+ path: { id: sessionId },
478
+ body: { callId, approved, sessionId }
479
+ });
480
+ if (response.error)
481
+ throw new Error("Failed to send tool approval");
482
+ return response.data;
483
+ },
484
+ async getPendingApprovals(sessionId) {
485
+ const response = await apiGetPendingApprovals({
486
+ path: { id: sessionId }
487
+ });
488
+ if (response.error)
489
+ return { ok: false, pending: [] };
490
+ return response.data;
491
+ }
492
+ };
493
+
494
+ // src/lib/api-client/setu.ts
495
+ import {
496
+ getSetuBalance as apiGetSetuBalance,
497
+ getSetuWallet as apiGetSetuWallet,
498
+ getSetuUsdcBalance as apiGetSetuUsdcBalance,
499
+ createPolarCheckout as apiCreatePolarCheckout,
500
+ getPolarTopupEstimate as apiGetPolarTopupEstimate,
501
+ getPolarTopupStatus as apiGetPolarTopupStatus,
502
+ getRazorpayTopupEstimate as apiGetRazorpayTopupEstimate,
503
+ createRazorpayOrder as apiCreateRazorpayOrder,
504
+ verifyRazorpayPayment as apiVerifyRazorpayPayment,
505
+ selectTopupMethod as apiSelectTopupMethod,
506
+ cancelTopup as apiCancelTopup,
507
+ getPendingTopup as apiGetPendingTopup
508
+ } from "@ottocode/api";
509
+ var setuMixin = {
510
+ async getSetuBalance() {
511
+ try {
512
+ const response = await apiGetSetuBalance();
513
+ if (response.error)
514
+ return null;
515
+ return response.data;
516
+ } catch {
517
+ return null;
518
+ }
519
+ },
520
+ async getSetuWallet() {
521
+ try {
522
+ const response = await apiGetSetuWallet();
523
+ if (response.error)
524
+ return { configured: false };
525
+ return response.data;
526
+ } catch {
527
+ return { configured: false };
528
+ }
529
+ },
530
+ async getSetuUsdcBalance(network = "mainnet") {
531
+ try {
532
+ const response = await apiGetSetuUsdcBalance({
533
+ query: { network }
534
+ });
535
+ if (response.error)
536
+ return null;
537
+ return response.data;
538
+ } catch {
539
+ return null;
540
+ }
541
+ },
542
+ async getPolarTopupEstimate(amount) {
543
+ try {
544
+ const response = await apiGetPolarTopupEstimate({
545
+ query: { amount }
546
+ });
547
+ if (response.error)
548
+ return null;
549
+ return response.data;
550
+ } catch {
551
+ return null;
552
+ }
553
+ },
554
+ async createPolarCheckout(amount, successUrl) {
555
+ const response = await apiCreatePolarCheckout({
556
+ body: { amount, successUrl }
557
+ });
558
+ if (response.error)
559
+ throw new Error(extractErrorMessage(response.error));
560
+ return response.data;
561
+ },
562
+ async selectTopupMethod(sessionId, method) {
563
+ const response = await apiSelectTopupMethod({
564
+ body: { sessionId, method }
565
+ });
566
+ if (response.error)
567
+ throw new Error(extractErrorMessage(response.error));
568
+ return response.data;
569
+ },
570
+ async cancelTopup(sessionId, reason) {
571
+ const response = await apiCancelTopup({
572
+ body: { sessionId, reason }
573
+ });
574
+ if (response.error)
575
+ throw new Error(extractErrorMessage(response.error));
576
+ return response.data;
577
+ },
578
+ async getPendingTopup(sessionId) {
579
+ try {
580
+ const response = await apiGetPendingTopup({
581
+ query: { sessionId }
582
+ });
583
+ if (response.error)
584
+ return { hasPending: false };
585
+ return response.data;
586
+ } catch {
587
+ return { hasPending: false };
588
+ }
589
+ },
590
+ async getPolarTopupStatus(checkoutId) {
591
+ try {
592
+ const response = await apiGetPolarTopupStatus({
593
+ query: { checkoutId }
594
+ });
595
+ if (response.error)
596
+ return null;
597
+ return response.data;
598
+ } catch {
599
+ return null;
600
+ }
601
+ },
602
+ async getRazorpayTopupEstimate(amount) {
603
+ try {
604
+ const response = await apiGetRazorpayTopupEstimate({
605
+ query: { amount }
606
+ });
607
+ if (response.error)
608
+ return null;
609
+ return response.data;
610
+ } catch {
611
+ return null;
612
+ }
613
+ },
614
+ async createRazorpayOrder(amount) {
615
+ const response = await apiCreateRazorpayOrder({
616
+ body: { amount }
617
+ });
618
+ if (response.error)
619
+ throw new Error(extractErrorMessage(response.error));
620
+ return response.data;
621
+ },
622
+ async verifyRazorpayPayment(params) {
623
+ const response = await apiVerifyRazorpayPayment({
624
+ body: params
625
+ });
626
+ if (response.error)
627
+ throw new Error(extractErrorMessage(response.error));
628
+ return response.data;
629
+ }
630
+ };
631
+
632
+ // src/lib/api-client/auth.ts
633
+ import {
634
+ getAuthStatus as apiGetAuthStatus,
635
+ setupSetuWallet as apiSetupSetuWallet,
636
+ importSetuWallet as apiImportSetuWallet,
637
+ exportSetuWallet as apiExportSetuWallet,
638
+ addProviderApiKey as apiAddProviderApiKey,
639
+ removeProvider as apiRemoveProvider,
640
+ completeOnboarding as apiCompleteOnboarding,
641
+ getOAuthUrl as apiGetOAuthUrl,
642
+ exchangeOAuthCode as apiExchangeOAuthCode,
643
+ startCopilotDeviceFlow as apiStartCopilotDeviceFlow,
644
+ pollCopilotDeviceFlow as apiPollCopilotDeviceFlow,
645
+ getCopilotAuthMethods as apiGetCopilotAuthMethods,
646
+ saveCopilotToken as apiSaveCopilotToken,
647
+ importCopilotTokenFromGh as apiImportCopilotTokenFromGh,
648
+ getCopilotDiagnostics as apiGetCopilotDiagnostics,
649
+ getProviderUsage as apiGetProviderUsage
650
+ } from "@ottocode/api";
651
+ var authMixin = {
652
+ async getAuthStatus() {
653
+ const response = await apiGetAuthStatus();
654
+ if (response.error)
655
+ throw new Error(extractErrorMessage(response.error));
656
+ return response.data;
657
+ },
658
+ async setupSetuWallet() {
659
+ const response = await apiSetupSetuWallet();
660
+ if (response.error)
661
+ throw new Error(extractErrorMessage(response.error));
662
+ return response.data;
663
+ },
664
+ async importSetuWallet(privateKey) {
665
+ const response = await apiImportSetuWallet({
666
+ body: { privateKey }
667
+ });
668
+ if (response.error)
669
+ throw new Error(extractErrorMessage(response.error));
670
+ return response.data;
671
+ },
672
+ async exportSetuWallet() {
673
+ const response = await apiExportSetuWallet();
674
+ if (response.error)
675
+ throw new Error(extractErrorMessage(response.error));
676
+ return response.data;
677
+ },
678
+ async addProvider(provider, apiKey) {
679
+ const response = await apiAddProviderApiKey({
680
+ path: { provider },
681
+ body: { apiKey }
682
+ });
683
+ if (response.error)
684
+ throw new Error(extractErrorMessage(response.error));
685
+ return response.data;
686
+ },
687
+ async removeProvider(provider) {
688
+ const response = await apiRemoveProvider({ path: { provider } });
689
+ if (response.error)
690
+ throw new Error(extractErrorMessage(response.error));
691
+ return response.data;
692
+ },
693
+ async completeOnboarding() {
694
+ const response = await apiCompleteOnboarding();
695
+ if (response.error)
696
+ throw new Error(extractErrorMessage(response.error));
697
+ return response.data;
698
+ },
699
+ getOAuthStartUrl(provider, mode) {
700
+ const baseUrl = `${getBaseUrl()}/v1/auth/${provider}/oauth/start`;
701
+ if (mode)
702
+ return `${baseUrl}?mode=${mode}`;
703
+ return baseUrl;
704
+ },
705
+ async getOAuthUrl(provider, mode) {
706
+ const response = await apiGetOAuthUrl({
707
+ path: { provider },
708
+ body: { mode }
709
+ });
710
+ if (response.error)
711
+ throw new Error(extractErrorMessage(response.error));
712
+ return response.data;
713
+ },
714
+ async exchangeOAuthCode(provider, code, sessionId) {
715
+ const response = await apiExchangeOAuthCode({
716
+ path: { provider },
717
+ body: { code, sessionId }
718
+ });
719
+ if (response.error)
720
+ throw new Error(extractErrorMessage(response.error));
721
+ return response.data;
722
+ },
723
+ async startCopilotDeviceFlow() {
724
+ const response = await apiStartCopilotDeviceFlow();
725
+ if (response.error)
726
+ throw new Error(extractErrorMessage(response.error));
727
+ return response.data;
728
+ },
729
+ async pollCopilotDeviceFlow(sessionId) {
730
+ const response = await apiPollCopilotDeviceFlow({
731
+ body: { sessionId }
732
+ });
733
+ if (response.error)
734
+ throw new Error(extractErrorMessage(response.error));
735
+ return response.data;
736
+ },
737
+ async getCopilotAuthMethods() {
738
+ const response = await apiGetCopilotAuthMethods();
739
+ if (response.error)
740
+ throw new Error(extractErrorMessage(response.error));
741
+ return response.data;
742
+ },
743
+ async saveCopilotToken(token) {
744
+ const response = await apiSaveCopilotToken({ body: { token } });
745
+ if (response.error)
746
+ throw new Error(extractErrorMessage(response.error));
747
+ return response.data;
748
+ },
749
+ async importCopilotTokenFromGh() {
750
+ const response = await apiImportCopilotTokenFromGh();
751
+ if (response.error)
752
+ throw new Error(extractErrorMessage(response.error));
753
+ return response.data;
754
+ },
755
+ async getCopilotDiagnostics() {
756
+ const response = await apiGetCopilotDiagnostics();
757
+ if (response.error)
758
+ throw new Error(extractErrorMessage(response.error));
759
+ return response.data;
760
+ },
761
+ async getProviderUsage(provider) {
762
+ const response = await apiGetProviderUsage({
763
+ path: { provider }
764
+ });
765
+ if (response.error)
766
+ throw new Error(extractErrorMessage(response.error));
767
+ return response.data;
768
+ }
769
+ };
770
+
771
+ // src/lib/api-client/skills.ts
772
+ import {
773
+ listSkills as apiListSkills,
774
+ getSkill as apiGetSkill,
775
+ listSkillFiles as apiListSkillFiles,
776
+ getSkillFile as apiGetSkillFile
777
+ } from "@ottocode/api";
778
+ var skillsMixin = {
779
+ async listSkills() {
780
+ const response = await apiListSkills();
781
+ if (response.error)
782
+ throw new Error(extractErrorMessage(response.error));
783
+ return response.data;
784
+ },
785
+ async getSkill(name) {
786
+ const response = await apiGetSkill({ path: { name } });
787
+ if (response.error)
788
+ throw new Error(extractErrorMessage(response.error));
789
+ return response.data;
790
+ },
791
+ async getSkillFiles(name) {
792
+ const response = await apiListSkillFiles({ path: { name } });
793
+ if (response.error)
794
+ throw new Error(extractErrorMessage(response.error));
795
+ return response.data;
796
+ },
797
+ async getSkillFileContent(name, filePath) {
798
+ const response = await apiGetSkillFile({
799
+ path: { name, filePath }
800
+ });
801
+ if (response.error)
802
+ throw new Error(extractErrorMessage(response.error));
803
+ return response.data;
804
+ }
805
+ };
806
+
807
+ // src/lib/api-client/index.ts
808
+ class ApiClient {
809
+ getSessions = sessionsMixin.getSessions;
810
+ getSessionsPage = sessionsMixin.getSessionsPage;
811
+ createSession = sessionsMixin.createSession;
812
+ updateSession = sessionsMixin.updateSession;
813
+ deleteSession = sessionsMixin.deleteSession;
814
+ abortSession = sessionsMixin.abortSession;
815
+ abortMessage = sessionsMixin.abortMessage;
816
+ getQueueState = sessionsMixin.getQueueState;
817
+ removeFromQueue = sessionsMixin.removeFromQueue;
818
+ getMessages = sessionsMixin.getMessages;
819
+ sendMessage = sessionsMixin.sendMessage;
820
+ getStreamUrl = sessionsMixin.getStreamUrl;
821
+ retryMessage = sessionsMixin.retryMessage;
822
+ initGitRepo = gitMixin.initGitRepo;
823
+ getGitStatus = gitMixin.getGitStatus;
824
+ getGitDiff = gitMixin.getGitDiff;
825
+ getGitDiffFullFile = gitMixin.getGitDiffFullFile;
826
+ generateCommitMessage = gitMixin.generateCommitMessage;
827
+ stageFiles = gitMixin.stageFiles;
828
+ unstageFiles = gitMixin.unstageFiles;
829
+ restoreFiles = gitMixin.restoreFiles;
830
+ deleteFiles = gitMixin.deleteFiles;
831
+ commitChanges = gitMixin.commitChanges;
832
+ getGitBranch = gitMixin.getGitBranch;
833
+ pushCommits = gitMixin.pushCommits;
834
+ pullChanges = gitMixin.pullChanges;
835
+ getRemotes = gitMixin.getRemotes;
836
+ addRemote = gitMixin.addRemote;
837
+ removeRemote = gitMixin.removeRemote;
838
+ getConfig = configMixin.getConfig;
839
+ getModels = configMixin.getModels;
840
+ getAllModels = configMixin.getAllModels;
841
+ updateDefaults = configMixin.updateDefaults;
842
+ listFiles = filesMixin.listFiles;
843
+ getFileTree = filesMixin.getFileTree;
844
+ readFileContent = filesMixin.readFileContent;
845
+ getSessionFiles = filesMixin.getSessionFiles;
846
+ createBranch = branchesMixin.createBranch;
847
+ listBranches = branchesMixin.listBranches;
848
+ getParentSession = branchesMixin.getParentSession;
849
+ getShareStatus = branchesMixin.getShareStatus;
850
+ shareSession = branchesMixin.shareSession;
851
+ syncSession = branchesMixin.syncSession;
852
+ approveToolCall = approvalMixin.approveToolCall;
853
+ getPendingApprovals = approvalMixin.getPendingApprovals;
854
+ getSetuBalance = setuMixin.getSetuBalance;
855
+ getSetuWallet = setuMixin.getSetuWallet;
856
+ getSetuUsdcBalance = setuMixin.getSetuUsdcBalance;
857
+ getPolarTopupEstimate = setuMixin.getPolarTopupEstimate;
858
+ createPolarCheckout = setuMixin.createPolarCheckout;
859
+ selectTopupMethod = setuMixin.selectTopupMethod;
860
+ cancelTopup = setuMixin.cancelTopup;
861
+ getPendingTopup = setuMixin.getPendingTopup;
862
+ getPolarTopupStatus = setuMixin.getPolarTopupStatus;
863
+ getRazorpayTopupEstimate = setuMixin.getRazorpayTopupEstimate;
864
+ createRazorpayOrder = setuMixin.createRazorpayOrder;
865
+ verifyRazorpayPayment = setuMixin.verifyRazorpayPayment;
866
+ getAuthStatus = authMixin.getAuthStatus;
867
+ setupSetuWallet = authMixin.setupSetuWallet;
868
+ importSetuWallet = authMixin.importSetuWallet;
869
+ exportSetuWallet = authMixin.exportSetuWallet;
870
+ addProvider = authMixin.addProvider;
871
+ removeProvider = authMixin.removeProvider;
872
+ completeOnboarding = authMixin.completeOnboarding;
873
+ getOAuthStartUrl = authMixin.getOAuthStartUrl;
874
+ getOAuthUrl = authMixin.getOAuthUrl;
875
+ exchangeOAuthCode = authMixin.exchangeOAuthCode;
876
+ startCopilotDeviceFlow = authMixin.startCopilotDeviceFlow;
877
+ pollCopilotDeviceFlow = authMixin.pollCopilotDeviceFlow;
878
+ getCopilotAuthMethods = authMixin.getCopilotAuthMethods;
879
+ saveCopilotToken = authMixin.saveCopilotToken;
880
+ importCopilotTokenFromGh = authMixin.importCopilotTokenFromGh;
881
+ getCopilotDiagnostics = authMixin.getCopilotDiagnostics;
882
+ getProviderUsage = authMixin.getProviderUsage;
883
+ listSkills = skillsMixin.listSkills;
884
+ getSkill = skillsMixin.getSkill;
885
+ getSkillFiles = skillsMixin.getSkillFiles;
886
+ getSkillFileContent = skillsMixin.getSkillFileContent;
887
+ }
888
+ var apiClient = new ApiClient;
889
+ // src/lib/sse-client.ts
890
+ class SSEClient {
891
+ abortController = null;
892
+ handlers = new Map;
893
+ running = false;
894
+ async connect(url) {
895
+ if (this.abortController) {
896
+ this.abortController.abort();
897
+ }
898
+ this.abortController = new AbortController;
899
+ this.running = true;
900
+ try {
901
+ const response = await fetch(url, {
902
+ headers: { Accept: "text/event-stream" },
903
+ signal: this.abortController.signal
904
+ });
905
+ if (!response.ok) {
906
+ console.error("[SSE] Connection failed:", response.status);
907
+ return;
908
+ }
909
+ const reader = response.body?.getReader();
910
+ if (!reader) {
911
+ console.error("[SSE] No response body");
912
+ return;
913
+ }
914
+ const decoder = new TextDecoder;
915
+ let buffer = "";
916
+ while (this.running) {
917
+ const { done, value } = await reader.read();
918
+ if (done)
919
+ break;
920
+ buffer += decoder.decode(value, { stream: true });
921
+ let idx = buffer.indexOf(`
922
+
923
+ `);
924
+ while (idx !== -1) {
925
+ const raw = buffer.slice(0, idx);
926
+ buffer = buffer.slice(idx + 2);
927
+ const lines = raw.split(`
928
+ `);
929
+ let eventType = "message";
930
+ let data = "";
931
+ for (const line of lines) {
932
+ if (line.startsWith("event: ")) {
933
+ eventType = line.slice(7).trim();
934
+ } else if (line.startsWith("data: ")) {
935
+ data += (data ? `
936
+ ` : "") + line.slice(6);
937
+ } else if (line.startsWith(":")) {}
938
+ }
939
+ if (data) {
940
+ try {
941
+ const payload = JSON.parse(data);
942
+ this.emit({ type: eventType, payload });
943
+ } catch (error) {
944
+ console.error(`[SSE] Failed to parse ${eventType}:`, error);
945
+ }
946
+ }
947
+ idx = buffer.indexOf(`
948
+
949
+ `);
950
+ }
951
+ }
952
+ } catch (error) {
953
+ if (error instanceof Error && error.name === "AbortError") {} else if (error instanceof TypeError && error.message === "Load failed") {} else {
954
+ console.error("[SSE] Connection error:", error);
955
+ }
956
+ }
957
+ }
958
+ disconnect() {
959
+ this.running = false;
960
+ if (this.abortController) {
961
+ this.abortController.abort();
962
+ this.abortController = null;
963
+ }
964
+ }
965
+ on(eventType, handler) {
966
+ if (!this.handlers.has(eventType)) {
967
+ this.handlers.set(eventType, new Set);
968
+ }
969
+ this.handlers.get(eventType)?.add(handler);
970
+ return () => {
971
+ this.off(eventType, handler);
972
+ };
973
+ }
974
+ off(eventType, handler) {
975
+ const handlers = this.handlers.get(eventType);
976
+ if (handlers) {
977
+ handlers.delete(handler);
978
+ if (handlers.size === 0) {
979
+ this.handlers.delete(eventType);
980
+ }
981
+ }
982
+ }
983
+ emit(event) {
984
+ const handlers = this.handlers.get(event.type);
985
+ if (handlers) {
986
+ for (const handler of handlers) {
987
+ handler(event);
988
+ }
989
+ }
990
+ const allHandlers = this.handlers.get("*");
991
+ if (allHandlers) {
992
+ for (const handler of allHandlers) {
993
+ handler(event);
994
+ }
995
+ }
996
+ }
997
+ }
998
+ export {
999
+ getRuntimeApiBaseUrl,
1000
+ configureApiClient,
1001
+ config,
1002
+ apiClient,
1003
+ SSEClient,
1004
+ API_BASE_URL
1005
+ };
1006
+
1007
+ //# debugId=839B7D7A344723CC64756E2164756E21