@ottocode/web-sdk 0.1.173
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.
- package/README.md +187 -0
- package/dist/assets/fonts/JetBrainsMonoNerdFontMono-Bold.woff2 +0 -0
- package/dist/assets/fonts/JetBrainsMonoNerdFontMono-BoldItalic.woff2 +0 -0
- package/dist/assets/fonts/JetBrainsMonoNerdFontMono-Italic.woff2 +0 -0
- package/dist/assets/fonts/JetBrainsMonoNerdFontMono-Regular.woff2 +0 -0
- package/dist/assets/provider-logos.d.ts +12 -0
- package/dist/assets/provider-logos.d.ts.map +1 -0
- package/dist/assets/provider-logos.js +40 -0
- package/dist/assets/provider-logos.js.map +1 -0
- package/dist/components/branch/BranchModal.d.ts +11 -0
- package/dist/components/branch/BranchModal.d.ts.map +1 -0
- package/dist/components/branch/BranchModal.js +45 -0
- package/dist/components/branch/BranchModal.js.map +1 -0
- package/dist/components/chat/ChatInput.d.ts +35 -0
- package/dist/components/chat/ChatInput.d.ts.map +1 -0
- package/dist/components/chat/ChatInput.js +210 -0
- package/dist/components/chat/ChatInput.js.map +1 -0
- package/dist/components/chat/ChatInputContainer.d.ts +12 -0
- package/dist/components/chat/ChatInputContainer.d.ts.map +1 -0
- package/dist/components/chat/ChatInputContainer.js +295 -0
- package/dist/components/chat/ChatInputContainer.js.map +1 -0
- package/dist/components/chat/ChatInputKeyHandler.d.ts +27 -0
- package/dist/components/chat/ChatInputKeyHandler.d.ts.map +1 -0
- package/dist/components/chat/ChatInputKeyHandler.js +75 -0
- package/dist/components/chat/ChatInputKeyHandler.js.map +1 -0
- package/dist/components/chat/CommandSuggestionsPopup.d.ts +11 -0
- package/dist/components/chat/CommandSuggestionsPopup.d.ts.map +1 -0
- package/dist/components/chat/CommandSuggestionsPopup.js +43 -0
- package/dist/components/chat/CommandSuggestionsPopup.js.map +1 -0
- package/dist/components/chat/ConfigModal.d.ts +19 -0
- package/dist/components/chat/ConfigModal.d.ts.map +1 -0
- package/dist/components/chat/ConfigModal.js +47 -0
- package/dist/components/chat/ConfigModal.js.map +1 -0
- package/dist/components/chat/ConfigSelector.d.ts +11 -0
- package/dist/components/chat/ConfigSelector.d.ts.map +1 -0
- package/dist/components/chat/ConfigSelector.js +47 -0
- package/dist/components/chat/ConfigSelector.js.map +1 -0
- package/dist/components/chat/FileMentionPopup.d.ts +15 -0
- package/dist/components/chat/FileMentionPopup.d.ts.map +1 -0
- package/dist/components/chat/FileMentionPopup.js +123 -0
- package/dist/components/chat/FileMentionPopup.js.map +1 -0
- package/dist/components/chat/ShortcutsModal.d.ts +7 -0
- package/dist/components/chat/ShortcutsModal.d.ts.map +1 -0
- package/dist/components/chat/ShortcutsModal.js +275 -0
- package/dist/components/chat/ShortcutsModal.js.map +1 -0
- package/dist/components/chat/StopButton.d.ts +8 -0
- package/dist/components/chat/StopButton.d.ts.map +1 -0
- package/dist/components/chat/StopButton.js +25 -0
- package/dist/components/chat/StopButton.js.map +1 -0
- package/dist/components/chat/UnifiedAgentSelector.d.ts +12 -0
- package/dist/components/chat/UnifiedAgentSelector.d.ts.map +1 -0
- package/dist/components/chat/UnifiedAgentSelector.js +107 -0
- package/dist/components/chat/UnifiedAgentSelector.js.map +1 -0
- package/dist/components/chat/UnifiedModelSelector.d.ts +12 -0
- package/dist/components/chat/UnifiedModelSelector.d.ts.map +1 -0
- package/dist/components/chat/UnifiedModelSelector.js +198 -0
- package/dist/components/chat/UnifiedModelSelector.js.map +1 -0
- package/dist/components/common/ProviderLogo.d.ts +8 -0
- package/dist/components/common/ProviderLogo.d.ts.map +1 -0
- package/dist/components/common/ProviderLogo.js +29 -0
- package/dist/components/common/ProviderLogo.js.map +1 -0
- package/dist/components/common/StatusIndicator.d.ts +10 -0
- package/dist/components/common/StatusIndicator.d.ts.map +1 -0
- package/dist/components/common/StatusIndicator.js +57 -0
- package/dist/components/common/StatusIndicator.js.map +1 -0
- package/dist/components/git/GitCommitModal.d.ts +2 -0
- package/dist/components/git/GitCommitModal.d.ts.map +1 -0
- package/dist/components/git/GitCommitModal.js +70 -0
- package/dist/components/git/GitCommitModal.js.map +1 -0
- package/dist/components/git/GitDiffPanel.d.ts +2 -0
- package/dist/components/git/GitDiffPanel.d.ts.map +1 -0
- package/dist/components/git/GitDiffPanel.js +54 -0
- package/dist/components/git/GitDiffPanel.js.map +1 -0
- package/dist/components/git/GitDiffViewer.d.ts +7 -0
- package/dist/components/git/GitDiffViewer.d.ts.map +1 -0
- package/dist/components/git/GitDiffViewer.js +203 -0
- package/dist/components/git/GitDiffViewer.js.map +1 -0
- package/dist/components/git/GitFileItem.d.ts +9 -0
- package/dist/components/git/GitFileItem.d.ts.map +1 -0
- package/dist/components/git/GitFileItem.js +145 -0
- package/dist/components/git/GitFileItem.js.map +1 -0
- package/dist/components/git/GitFileList.d.ts +7 -0
- package/dist/components/git/GitFileList.d.ts.map +1 -0
- package/dist/components/git/GitFileList.js +108 -0
- package/dist/components/git/GitFileList.js.map +1 -0
- package/dist/components/git/GitSidebar.d.ts +2 -0
- package/dist/components/git/GitSidebar.d.ts.map +1 -0
- package/dist/components/git/GitSidebar.js +52 -0
- package/dist/components/git/GitSidebar.js.map +1 -0
- package/dist/components/git/GitSidebarToggle.d.ts +2 -0
- package/dist/components/git/GitSidebarToggle.d.ts.map +1 -0
- package/dist/components/git/GitSidebarToggle.js +16 -0
- package/dist/components/git/GitSidebarToggle.js.map +1 -0
- package/dist/components/index.d.ts +47 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +60 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/messages/AssistantMessageGroup.d.ts +17 -0
- package/dist/components/messages/AssistantMessageGroup.d.ts.map +1 -0
- package/dist/components/messages/AssistantMessageGroup.js +176 -0
- package/dist/components/messages/AssistantMessageGroup.js.map +1 -0
- package/dist/components/messages/MessagePartItem.d.ts +20 -0
- package/dist/components/messages/MessagePartItem.d.ts.map +1 -0
- package/dist/components/messages/MessagePartItem.js +353 -0
- package/dist/components/messages/MessagePartItem.js.map +1 -0
- package/dist/components/messages/MessageThread.d.ts +12 -0
- package/dist/components/messages/MessageThread.d.ts.map +1 -0
- package/dist/components/messages/MessageThread.js +239 -0
- package/dist/components/messages/MessageThread.js.map +1 -0
- package/dist/components/messages/MessageThreadContainer.d.ts +7 -0
- package/dist/components/messages/MessageThreadContainer.d.ts.map +1 -0
- package/dist/components/messages/MessageThreadContainer.js +22 -0
- package/dist/components/messages/MessageThreadContainer.js.map +1 -0
- package/dist/components/messages/ToolApprovalCard.d.ts +11 -0
- package/dist/components/messages/ToolApprovalCard.d.ts.map +1 -0
- package/dist/components/messages/ToolApprovalCard.js +139 -0
- package/dist/components/messages/ToolApprovalCard.js.map +1 -0
- package/dist/components/messages/TopupApprovalCard.d.ts +9 -0
- package/dist/components/messages/TopupApprovalCard.d.ts.map +1 -0
- package/dist/components/messages/TopupApprovalCard.js +51 -0
- package/dist/components/messages/TopupApprovalCard.js.map +1 -0
- package/dist/components/messages/UserMessageGroup.d.ts +10 -0
- package/dist/components/messages/UserMessageGroup.d.ts.map +1 -0
- package/dist/components/messages/UserMessageGroup.js +132 -0
- package/dist/components/messages/UserMessageGroup.js.map +1 -0
- package/dist/components/messages/renderers/ApplyPatchRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/ApplyPatchRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/ApplyPatchRenderer.js +55 -0
- package/dist/components/messages/renderers/ApplyPatchRenderer.js.map +1 -0
- package/dist/components/messages/renderers/BashRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/BashRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/BashRenderer.js +55 -0
- package/dist/components/messages/renderers/BashRenderer.js.map +1 -0
- package/dist/components/messages/renderers/DatabaseToolRenderer.d.ts +8 -0
- package/dist/components/messages/renderers/DatabaseToolRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/DatabaseToolRenderer.js +151 -0
- package/dist/components/messages/renderers/DatabaseToolRenderer.js.map +1 -0
- package/dist/components/messages/renderers/DebugRenderer.d.ts +5 -0
- package/dist/components/messages/renderers/DebugRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/DebugRenderer.js +5 -0
- package/dist/components/messages/renderers/DebugRenderer.js.map +1 -0
- package/dist/components/messages/renderers/DiffView.d.ts +6 -0
- package/dist/components/messages/renderers/DiffView.d.ts.map +1 -0
- package/dist/components/messages/renderers/DiffView.js +206 -0
- package/dist/components/messages/renderers/DiffView.js.map +1 -0
- package/dist/components/messages/renderers/EditRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/EditRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/EditRenderer.js +25 -0
- package/dist/components/messages/renderers/EditRenderer.js.map +1 -0
- package/dist/components/messages/renderers/ErrorRenderer.d.ts +11 -0
- package/dist/components/messages/renderers/ErrorRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/ErrorRenderer.js +157 -0
- package/dist/components/messages/renderers/ErrorRenderer.js.map +1 -0
- package/dist/components/messages/renderers/FinishRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/FinishRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/FinishRenderer.js +7 -0
- package/dist/components/messages/renderers/FinishRenderer.js.map +1 -0
- package/dist/components/messages/renderers/GenericRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/GenericRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/GenericRenderer.js +45 -0
- package/dist/components/messages/renderers/GenericRenderer.js.map +1 -0
- package/dist/components/messages/renderers/GitCommitRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/GitCommitRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/GitCommitRenderer.js +21 -0
- package/dist/components/messages/renderers/GitCommitRenderer.js.map +1 -0
- package/dist/components/messages/renderers/GitDiffRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/GitDiffRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/GitDiffRenderer.js +34 -0
- package/dist/components/messages/renderers/GitDiffRenderer.js.map +1 -0
- package/dist/components/messages/renderers/GitStatusRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/GitStatusRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/GitStatusRenderer.js +60 -0
- package/dist/components/messages/renderers/GitStatusRenderer.js.map +1 -0
- package/dist/components/messages/renderers/ListRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/ListRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/ListRenderer.js +28 -0
- package/dist/components/messages/renderers/ListRenderer.js.map +1 -0
- package/dist/components/messages/renderers/ProgressUpdateRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/ProgressUpdateRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/ProgressUpdateRenderer.js +9 -0
- package/dist/components/messages/renderers/ProgressUpdateRenderer.js.map +1 -0
- package/dist/components/messages/renderers/ReadRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/ReadRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/ReadRenderer.js +87 -0
- package/dist/components/messages/renderers/ReadRenderer.js.map +1 -0
- package/dist/components/messages/renderers/ReasoningRenderer.d.ts +7 -0
- package/dist/components/messages/renderers/ReasoningRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/ReasoningRenderer.js +34 -0
- package/dist/components/messages/renderers/ReasoningRenderer.js.map +1 -0
- package/dist/components/messages/renderers/SearchRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/SearchRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/SearchRenderer.js +52 -0
- package/dist/components/messages/renderers/SearchRenderer.js.map +1 -0
- package/dist/components/messages/renderers/TodosRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/TodosRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/TodosRenderer.js +15 -0
- package/dist/components/messages/renderers/TodosRenderer.js.map +1 -0
- package/dist/components/messages/renderers/ToolErrorDisplay.d.ts +12 -0
- package/dist/components/messages/renderers/ToolErrorDisplay.d.ts.map +1 -0
- package/dist/components/messages/renderers/ToolErrorDisplay.js +10 -0
- package/dist/components/messages/renderers/ToolErrorDisplay.js.map +1 -0
- package/dist/components/messages/renderers/TreeRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/TreeRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/TreeRenderer.js +33 -0
- package/dist/components/messages/renderers/TreeRenderer.js.map +1 -0
- package/dist/components/messages/renderers/WebSearchRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/WebSearchRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/WebSearchRenderer.js +29 -0
- package/dist/components/messages/renderers/WebSearchRenderer.js.map +1 -0
- package/dist/components/messages/renderers/WriteRenderer.d.ts +3 -0
- package/dist/components/messages/renderers/WriteRenderer.d.ts.map +1 -0
- package/dist/components/messages/renderers/WriteRenderer.js +28 -0
- package/dist/components/messages/renderers/WriteRenderer.js.map +1 -0
- package/dist/components/messages/renderers/index.d.ts +16 -0
- package/dist/components/messages/renderers/index.d.ts.map +1 -0
- package/dist/components/messages/renderers/index.js +114 -0
- package/dist/components/messages/renderers/index.js.map +1 -0
- package/dist/components/messages/renderers/shared/CopyButton.d.ts +8 -0
- package/dist/components/messages/renderers/shared/CopyButton.d.ts.map +1 -0
- package/dist/components/messages/renderers/shared/CopyButton.js +27 -0
- package/dist/components/messages/renderers/shared/CopyButton.js.map +1 -0
- package/dist/components/messages/renderers/shared/ToolContentBox.d.ts +13 -0
- package/dist/components/messages/renderers/shared/ToolContentBox.d.ts.map +1 -0
- package/dist/components/messages/renderers/shared/ToolContentBox.js +9 -0
- package/dist/components/messages/renderers/shared/ToolContentBox.js.map +1 -0
- package/dist/components/messages/renderers/shared/ToolHeader.d.ts +29 -0
- package/dist/components/messages/renderers/shared/ToolHeader.d.ts.map +1 -0
- package/dist/components/messages/renderers/shared/ToolHeader.js +69 -0
- package/dist/components/messages/renderers/shared/ToolHeader.js.map +1 -0
- package/dist/components/messages/renderers/shared/index.d.ts +4 -0
- package/dist/components/messages/renderers/shared/index.d.ts.map +1 -0
- package/dist/components/messages/renderers/shared/index.js +4 -0
- package/dist/components/messages/renderers/shared/index.js.map +1 -0
- package/dist/components/messages/renderers/types.d.ts +118 -0
- package/dist/components/messages/renderers/types.d.ts.map +1 -0
- package/dist/components/messages/renderers/types.js +2 -0
- package/dist/components/messages/renderers/types.js.map +1 -0
- package/dist/components/messages/renderers/utils.d.ts +26 -0
- package/dist/components/messages/renderers/utils.d.ts.map +1 -0
- package/dist/components/messages/renderers/utils.js +60 -0
- package/dist/components/messages/renderers/utils.js.map +1 -0
- package/dist/components/onboarding/OnboardingModal.d.ts +6 -0
- package/dist/components/onboarding/OnboardingModal.d.ts.map +1 -0
- package/dist/components/onboarding/OnboardingModal.js +22 -0
- package/dist/components/onboarding/OnboardingModal.js.map +1 -0
- package/dist/components/onboarding/index.d.ts +4 -0
- package/dist/components/onboarding/index.d.ts.map +1 -0
- package/dist/components/onboarding/index.js +4 -0
- package/dist/components/onboarding/index.js.map +1 -0
- package/dist/components/onboarding/steps/DefaultsStep.d.ts +10 -0
- package/dist/components/onboarding/steps/DefaultsStep.d.ts.map +1 -0
- package/dist/components/onboarding/steps/DefaultsStep.js +99 -0
- package/dist/components/onboarding/steps/DefaultsStep.js.map +1 -0
- package/dist/components/onboarding/steps/ProviderSetupStep.d.ts +31 -0
- package/dist/components/onboarding/steps/ProviderSetupStep.d.ts.map +1 -0
- package/dist/components/onboarding/steps/ProviderSetupStep.js +253 -0
- package/dist/components/onboarding/steps/ProviderSetupStep.js.map +1 -0
- package/dist/components/research/ResearchSidebar.d.ts +7 -0
- package/dist/components/research/ResearchSidebar.d.ts.map +1 -0
- package/dist/components/research/ResearchSidebar.js +271 -0
- package/dist/components/research/ResearchSidebar.js.map +1 -0
- package/dist/components/research/ResearchSidebarToggle.d.ts +6 -0
- package/dist/components/research/ResearchSidebarToggle.d.ts.map +1 -0
- package/dist/components/research/ResearchSidebarToggle.js +13 -0
- package/dist/components/research/ResearchSidebarToggle.js.map +1 -0
- package/dist/components/research/index.d.ts +3 -0
- package/dist/components/research/index.d.ts.map +1 -0
- package/dist/components/research/index.js +3 -0
- package/dist/components/research/index.js.map +1 -0
- package/dist/components/session-files/SessionFilesDiffPanel.d.ts +2 -0
- package/dist/components/session-files/SessionFilesDiffPanel.d.ts.map +1 -0
- package/dist/components/session-files/SessionFilesDiffPanel.js +345 -0
- package/dist/components/session-files/SessionFilesDiffPanel.js.map +1 -0
- package/dist/components/session-files/SessionFilesSidebar.d.ts +6 -0
- package/dist/components/session-files/SessionFilesSidebar.d.ts.map +1 -0
- package/dist/components/session-files/SessionFilesSidebar.js +80 -0
- package/dist/components/session-files/SessionFilesSidebar.js.map +1 -0
- package/dist/components/session-files/SessionFilesSidebarToggle.d.ts +6 -0
- package/dist/components/session-files/SessionFilesSidebarToggle.d.ts.map +1 -0
- package/dist/components/session-files/SessionFilesSidebarToggle.js +15 -0
- package/dist/components/session-files/SessionFilesSidebarToggle.js.map +1 -0
- package/dist/components/session-files/index.d.ts +4 -0
- package/dist/components/session-files/index.d.ts.map +1 -0
- package/dist/components/session-files/index.js +4 -0
- package/dist/components/session-files/index.js.map +1 -0
- package/dist/components/sessions/LeanHeader.d.ts +10 -0
- package/dist/components/sessions/LeanHeader.d.ts.map +1 -0
- package/dist/components/sessions/LeanHeader.js +62 -0
- package/dist/components/sessions/LeanHeader.js.map +1 -0
- package/dist/components/sessions/SessionHeader.d.ts +8 -0
- package/dist/components/sessions/SessionHeader.d.ts.map +1 -0
- package/dist/components/sessions/SessionHeader.js +74 -0
- package/dist/components/sessions/SessionHeader.js.map +1 -0
- package/dist/components/sessions/SessionItem.d.ts +9 -0
- package/dist/components/sessions/SessionItem.d.ts.map +1 -0
- package/dist/components/sessions/SessionItem.js +28 -0
- package/dist/components/sessions/SessionItem.js.map +1 -0
- package/dist/components/sessions/SessionListContainer.d.ts +7 -0
- package/dist/components/sessions/SessionListContainer.d.ts.map +1 -0
- package/dist/components/sessions/SessionListContainer.js +47 -0
- package/dist/components/sessions/SessionListContainer.js.map +1 -0
- package/dist/components/settings/SettingsSidebar.d.ts +2 -0
- package/dist/components/settings/SettingsSidebar.d.ts.map +1 -0
- package/dist/components/settings/SettingsSidebar.js +134 -0
- package/dist/components/settings/SettingsSidebar.js.map +1 -0
- package/dist/components/settings/SettingsSidebarToggle.d.ts +2 -0
- package/dist/components/settings/SettingsSidebarToggle.d.ts.map +1 -0
- package/dist/components/settings/SettingsSidebarToggle.js +10 -0
- package/dist/components/settings/SettingsSidebarToggle.js.map +1 -0
- package/dist/components/settings/SetuTopupModal.d.ts +2 -0
- package/dist/components/settings/SetuTopupModal.d.ts.map +1 -0
- package/dist/components/settings/SetuTopupModal.js +196 -0
- package/dist/components/settings/SetuTopupModal.js.map +1 -0
- package/dist/components/terminals/TerminalList.d.ts +8 -0
- package/dist/components/terminals/TerminalList.d.ts.map +1 -0
- package/dist/components/terminals/TerminalList.js +32 -0
- package/dist/components/terminals/TerminalList.js.map +1 -0
- package/dist/components/terminals/TerminalViewer.d.ts +6 -0
- package/dist/components/terminals/TerminalViewer.d.ts.map +1 -0
- package/dist/components/terminals/TerminalViewer.js +263 -0
- package/dist/components/terminals/TerminalViewer.js.map +1 -0
- package/dist/components/terminals/TerminalsSidebar.d.ts +2 -0
- package/dist/components/terminals/TerminalsSidebar.d.ts.map +1 -0
- package/dist/components/terminals/TerminalsSidebar.js +34 -0
- package/dist/components/terminals/TerminalsSidebar.js.map +1 -0
- package/dist/components/terminals/TerminalsSidebarToggle.d.ts +2 -0
- package/dist/components/terminals/TerminalsSidebarToggle.d.ts.map +1 -0
- package/dist/components/terminals/TerminalsSidebarToggle.js +13 -0
- package/dist/components/terminals/TerminalsSidebarToggle.js.map +1 -0
- package/dist/components/terminals/index.d.ts +5 -0
- package/dist/components/terminals/index.d.ts.map +1 -0
- package/dist/components/terminals/index.js +5 -0
- package/dist/components/terminals/index.js.map +1 -0
- package/dist/components/ui/Button.d.ts +8 -0
- package/dist/components/ui/Button.d.ts.map +1 -0
- package/dist/components/ui/Button.js +19 -0
- package/dist/components/ui/Button.js.map +1 -0
- package/dist/components/ui/Card.d.ts +6 -0
- package/dist/components/ui/Card.d.ts.map +1 -0
- package/dist/components/ui/Card.js +7 -0
- package/dist/components/ui/Card.js.map +1 -0
- package/dist/components/ui/ConfirmationDialog.d.ts +2 -0
- package/dist/components/ui/ConfirmationDialog.d.ts.map +1 -0
- package/dist/components/ui/ConfirmationDialog.js +72 -0
- package/dist/components/ui/ConfirmationDialog.js.map +1 -0
- package/dist/components/ui/Input.d.ts +6 -0
- package/dist/components/ui/Input.d.ts.map +1 -0
- package/dist/components/ui/Input.js +7 -0
- package/dist/components/ui/Input.js.map +1 -0
- package/dist/components/ui/Modal.d.ts +14 -0
- package/dist/components/ui/Modal.d.ts.map +1 -0
- package/dist/components/ui/Modal.js +51 -0
- package/dist/components/ui/Modal.js.map +1 -0
- package/dist/components/ui/Textarea.d.ts +6 -0
- package/dist/components/ui/Textarea.d.ts.map +1 -0
- package/dist/components/ui/Textarea.js +7 -0
- package/dist/components/ui/Textarea.js.map +1 -0
- package/dist/components/ui/Toaster.d.ts +2 -0
- package/dist/components/ui/Toaster.d.ts.map +1 -0
- package/dist/components/ui/Toaster.js +41 -0
- package/dist/components/ui/Toaster.js.map +1 -0
- package/dist/components/ui/ToolApprovalDialog.d.ts +7 -0
- package/dist/components/ui/ToolApprovalDialog.d.ts.map +1 -0
- package/dist/components/ui/ToolApprovalDialog.js +57 -0
- package/dist/components/ui/ToolApprovalDialog.js.map +1 -0
- package/dist/hooks/index.d.ts +23 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +24 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useAuthStatus.d.ts +60 -0
- package/dist/hooks/useAuthStatus.d.ts.map +1 -0
- package/dist/hooks/useAuthStatus.js +247 -0
- package/dist/hooks/useAuthStatus.js.map +1 -0
- package/dist/hooks/useBranch.d.ts +5 -0
- package/dist/hooks/useBranch.d.ts.map +1 -0
- package/dist/hooks/useBranch.js +43 -0
- package/dist/hooks/useBranch.js.map +1 -0
- package/dist/hooks/useCommandSuggestions.d.ts +29 -0
- package/dist/hooks/useCommandSuggestions.d.ts.map +1 -0
- package/dist/hooks/useCommandSuggestions.js +85 -0
- package/dist/hooks/useCommandSuggestions.js.map +1 -0
- package/dist/hooks/useConfig.d.ts +35 -0
- package/dist/hooks/useConfig.d.ts.map +1 -0
- package/dist/hooks/useConfig.js +32 -0
- package/dist/hooks/useConfig.js.map +1 -0
- package/dist/hooks/useFileMention.d.ts +16 -0
- package/dist/hooks/useFileMention.d.ts.map +1 -0
- package/dist/hooks/useFileMention.js +56 -0
- package/dist/hooks/useFileMention.js.map +1 -0
- package/dist/hooks/useFileUpload.d.ts +34 -0
- package/dist/hooks/useFileUpload.d.ts.map +1 -0
- package/dist/hooks/useFileUpload.js +258 -0
- package/dist/hooks/useFileUpload.js.map +1 -0
- package/dist/hooks/useFiles.d.ts +9 -0
- package/dist/hooks/useFiles.d.ts.map +1 -0
- package/dist/hooks/useFiles.js +15 -0
- package/dist/hooks/useFiles.js.map +1 -0
- package/dist/hooks/useGit.d.ts +15 -0
- package/dist/hooks/useGit.d.ts.map +1 -0
- package/dist/hooks/useGit.js +99 -0
- package/dist/hooks/useGit.js.map +1 -0
- package/dist/hooks/useImageUpload.d.ts +28 -0
- package/dist/hooks/useImageUpload.d.ts.map +1 -0
- package/dist/hooks/useImageUpload.js +197 -0
- package/dist/hooks/useImageUpload.js.map +1 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts +27 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/hooks/useKeyboardShortcuts.js +242 -0
- package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/hooks/useMessages.d.ts +4 -0
- package/dist/hooks/useMessages.d.ts.map +1 -0
- package/dist/hooks/useMessages.js +25 -0
- package/dist/hooks/useMessages.js.map +1 -0
- package/dist/hooks/usePreferences.d.ts +10 -0
- package/dist/hooks/usePreferences.d.ts.map +1 -0
- package/dist/hooks/usePreferences.js +62 -0
- package/dist/hooks/usePreferences.js.map +1 -0
- package/dist/hooks/useQueueState.d.ts +15 -0
- package/dist/hooks/useQueueState.d.ts.map +1 -0
- package/dist/hooks/useQueueState.js +30 -0
- package/dist/hooks/useQueueState.js.map +1 -0
- package/dist/hooks/useResearch.d.ts +59 -0
- package/dist/hooks/useResearch.d.ts.map +1 -0
- package/dist/hooks/useResearch.js +138 -0
- package/dist/hooks/useResearch.js.map +1 -0
- package/dist/hooks/useSessionFiles.d.ts +2 -0
- package/dist/hooks/useSessionFiles.d.ts.map +1 -0
- package/dist/hooks/useSessionFiles.js +15 -0
- package/dist/hooks/useSessionFiles.js.map +1 -0
- package/dist/hooks/useSessionStream.d.ts +2 -0
- package/dist/hooks/useSessionStream.d.ts.map +1 -0
- package/dist/hooks/useSessionStream.js +455 -0
- package/dist/hooks/useSessionStream.js.map +1 -0
- package/dist/hooks/useSessions.d.ts +9 -0
- package/dist/hooks/useSessions.d.ts.map +1 -0
- package/dist/hooks/useSessions.js +43 -0
- package/dist/hooks/useSessions.js.map +1 -0
- package/dist/hooks/useSetuBalance.d.ts +4 -0
- package/dist/hooks/useSetuBalance.d.ts.map +1 -0
- package/dist/hooks/useSetuBalance.js +59 -0
- package/dist/hooks/useSetuBalance.js.map +1 -0
- package/dist/hooks/useSetuPayments.d.ts +2 -0
- package/dist/hooks/useSetuPayments.d.ts.map +1 -0
- package/dist/hooks/useSetuPayments.js +159 -0
- package/dist/hooks/useSetuPayments.js.map +1 -0
- package/dist/hooks/useShareStatus.d.ts +7 -0
- package/dist/hooks/useShareStatus.d.ts.map +1 -0
- package/dist/hooks/useShareStatus.js +12 -0
- package/dist/hooks/useShareStatus.js.map +1 -0
- package/dist/hooks/useTerminals.d.ts +37 -0
- package/dist/hooks/useTerminals.d.ts.map +1 -0
- package/dist/hooks/useTerminals.js +67 -0
- package/dist/hooks/useTerminals.js.map +1 -0
- package/dist/hooks/useTheme.d.ts +8 -0
- package/dist/hooks/useTheme.d.ts.map +1 -0
- package/dist/hooks/useTheme.js +57 -0
- package/dist/hooks/useTheme.js.map +1 -0
- package/dist/hooks/useToolApprovalShortcuts.d.ts +11 -0
- package/dist/hooks/useToolApprovalShortcuts.d.ts.map +1 -0
- package/dist/hooks/useToolApprovalShortcuts.js +88 -0
- package/dist/hooks/useToolApprovalShortcuts.js.map +1 -0
- package/dist/hooks/useTopupCallback.d.ts +2 -0
- package/dist/hooks/useTopupCallback.d.ts.map +1 -0
- package/dist/hooks/useTopupCallback.js +74 -0
- package/dist/hooks/useTopupCallback.js.map +1 -0
- package/dist/hooks/useVimMode.d.ts +16 -0
- package/dist/hooks/useVimMode.d.ts.map +1 -0
- package/dist/hooks/useVimMode.js +298 -0
- package/dist/hooks/useVimMode.js.map +1 -0
- package/dist/hooks/useWorkingDirectory.d.ts +2 -0
- package/dist/hooks/useWorkingDirectory.d.ts.map +1 -0
- package/dist/hooks/useWorkingDirectory.js +34 -0
- package/dist/hooks/useWorkingDirectory.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-client.d.ts +245 -0
- package/dist/lib/api-client.d.ts.map +1 -0
- package/dist/lib/api-client.js +783 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/commands.d.ts +16 -0
- package/dist/lib/commands.d.ts.map +1 -0
- package/dist/lib/commands.js +124 -0
- package/dist/lib/commands.js.map +1 -0
- package/dist/lib/config.d.ts +6 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +28 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +5 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/open-url.d.ts +2 -0
- package/dist/lib/open-url.d.ts.map +1 -0
- package/dist/lib/open-url.js +9 -0
- package/dist/lib/open-url.js.map +1 -0
- package/dist/lib/parseResearchContext.d.ts +17 -0
- package/dist/lib/parseResearchContext.d.ts.map +1 -0
- package/dist/lib/parseResearchContext.js +30 -0
- package/dist/lib/parseResearchContext.js.map +1 -0
- package/dist/lib/sse-client.d.ts +13 -0
- package/dist/lib/sse-client.d.ts.map +1 -0
- package/dist/lib/sse-client.js +111 -0
- package/dist/lib/sse-client.js.map +1 -0
- package/dist/stores/confirmationStore.d.ts +23 -0
- package/dist/stores/confirmationStore.d.ts.map +1 -0
- package/dist/stores/confirmationStore.js +27 -0
- package/dist/stores/confirmationStore.js.map +1 -0
- package/dist/stores/focusStore.d.ts +14 -0
- package/dist/stores/focusStore.d.ts.map +1 -0
- package/dist/stores/focusStore.js +12 -0
- package/dist/stores/focusStore.js.map +1 -0
- package/dist/stores/gitStore.d.ts +24 -0
- package/dist/stores/gitStore.d.ts.map +1 -0
- package/dist/stores/gitStore.js +57 -0
- package/dist/stores/gitStore.js.map +1 -0
- package/dist/stores/index.d.ts +15 -0
- package/dist/stores/index.d.ts.map +1 -0
- package/dist/stores/index.js +15 -0
- package/dist/stores/index.js.map +1 -0
- package/dist/stores/onboardingStore.d.ts +46 -0
- package/dist/stores/onboardingStore.d.ts.map +1 -0
- package/dist/stores/onboardingStore.js +38 -0
- package/dist/stores/onboardingStore.js.map +1 -0
- package/dist/stores/pendingResearchStore.d.ts +17 -0
- package/dist/stores/pendingResearchStore.d.ts.map +1 -0
- package/dist/stores/pendingResearchStore.js +38 -0
- package/dist/stores/pendingResearchStore.js.map +1 -0
- package/dist/stores/queueStore.d.ts +8 -0
- package/dist/stores/queueStore.d.ts.map +1 -0
- package/dist/stores/queueStore.js +11 -0
- package/dist/stores/queueStore.js.map +1 -0
- package/dist/stores/researchStore.d.ts +14 -0
- package/dist/stores/researchStore.d.ts.map +1 -0
- package/dist/stores/researchStore.js +45 -0
- package/dist/stores/researchStore.js.map +1 -0
- package/dist/stores/sessionFilesStore.d.ts +17 -0
- package/dist/stores/sessionFilesStore.d.ts.map +1 -0
- package/dist/stores/sessionFilesStore.js +53 -0
- package/dist/stores/sessionFilesStore.js.map +1 -0
- package/dist/stores/settingsStore.d.ts +9 -0
- package/dist/stores/settingsStore.d.ts.map +1 -0
- package/dist/stores/settingsStore.js +23 -0
- package/dist/stores/settingsStore.js.map +1 -0
- package/dist/stores/setuStore.d.ts +22 -0
- package/dist/stores/setuStore.d.ts.map +1 -0
- package/dist/stores/setuStore.js +21 -0
- package/dist/stores/setuStore.js.map +1 -0
- package/dist/stores/sidebarStore.d.ts +20 -0
- package/dist/stores/sidebarStore.d.ts.map +1 -0
- package/dist/stores/sidebarStore.js +10 -0
- package/dist/stores/sidebarStore.js.map +1 -0
- package/dist/stores/terminalStore.d.ts +11 -0
- package/dist/stores/terminalStore.d.ts.map +1 -0
- package/dist/stores/terminalStore.js +25 -0
- package/dist/stores/terminalStore.js.map +1 -0
- package/dist/stores/toastStore.d.ts +32 -0
- package/dist/stores/toastStore.d.ts.map +1 -0
- package/dist/stores/toastStore.js +46 -0
- package/dist/stores/toastStore.js.map +1 -0
- package/dist/stores/toolApprovalStore.d.ts +18 -0
- package/dist/stores/toolApprovalStore.d.ts.map +1 -0
- package/dist/stores/toolApprovalStore.js +16 -0
- package/dist/stores/toolApprovalStore.js.map +1 -0
- package/dist/stores/topupApprovalStore.d.ts +20 -0
- package/dist/stores/topupApprovalStore.d.ts.map +1 -0
- package/dist/stores/topupApprovalStore.js +11 -0
- package/dist/stores/topupApprovalStore.js.map +1 -0
- package/dist/types/api.d.ts +269 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +2 -0
- package/dist/types/api.js.map +1 -0
- package/package.json +94 -0
|
@@ -0,0 +1,783 @@
|
|
|
1
|
+
import { client, listSessions as apiListSessions, createSession as apiCreateSession, listMessages as apiListMessages, createMessage as apiCreateMessage, abortSession as apiAbortSession, getConfig as apiGetConfig, getProviderModels as apiGetProviderModels, listFiles as apiListFiles, getGitStatus as apiGetGitStatus, getGitDiff as apiGetGitDiff, getGitBranch as apiGetGitBranch, stageFiles as apiStageFiles, unstageFiles as apiUnstageFiles, restoreFiles as apiRestoreFiles, deleteFiles as apiDeleteFiles, commitChanges as apiCommitChanges, generateCommitMessage as apiGenerateCommitMessage, pushCommits as apiPushCommits, } from '@ottocode/api';
|
|
2
|
+
import { API_BASE_URL } from './config';
|
|
3
|
+
/**
|
|
4
|
+
* Extract error message from API error response
|
|
5
|
+
* Handles both string errors and structured error objects
|
|
6
|
+
*/
|
|
7
|
+
function extractErrorMessage(error) {
|
|
8
|
+
if (!error) {
|
|
9
|
+
return 'Unknown error';
|
|
10
|
+
}
|
|
11
|
+
// If it's a string, return it
|
|
12
|
+
if (typeof error === 'string') {
|
|
13
|
+
return error;
|
|
14
|
+
}
|
|
15
|
+
// If it's an error object with our standardized structure
|
|
16
|
+
if (error && typeof error === 'object') {
|
|
17
|
+
const errObj = error;
|
|
18
|
+
// New standardized format: { error: { message, type, ... } }
|
|
19
|
+
if (errObj.error && typeof errObj.error === 'object') {
|
|
20
|
+
const innerError = errObj.error;
|
|
21
|
+
if (typeof innerError.message === 'string') {
|
|
22
|
+
return innerError.message;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// Legacy format: { error: "message" }
|
|
26
|
+
if (typeof errObj.error === 'string') {
|
|
27
|
+
return errObj.error;
|
|
28
|
+
}
|
|
29
|
+
// Direct message property
|
|
30
|
+
if (typeof errObj.message === 'string') {
|
|
31
|
+
return errObj.message;
|
|
32
|
+
}
|
|
33
|
+
// Try to JSON stringify if it's a complex object
|
|
34
|
+
try {
|
|
35
|
+
return JSON.stringify(error);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return 'Error occurred (unable to parse)';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return 'Unknown error';
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Configure the API client with the correct base URL
|
|
45
|
+
* This should be called once at application startup
|
|
46
|
+
*/
|
|
47
|
+
export function configureApiClient() {
|
|
48
|
+
const win = window;
|
|
49
|
+
const baseURL = win.OTTO_SERVER_URL || API_BASE_URL;
|
|
50
|
+
client.setConfig({
|
|
51
|
+
baseURL,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
// Configure the client immediately when this module is imported
|
|
55
|
+
configureApiClient();
|
|
56
|
+
// Type conversion helpers
|
|
57
|
+
function convertSession(apiSession) {
|
|
58
|
+
return {
|
|
59
|
+
...apiSession,
|
|
60
|
+
title: apiSession.title ?? null,
|
|
61
|
+
createdAt: typeof apiSession.createdAt === 'string'
|
|
62
|
+
? new Date(apiSession.createdAt).getTime()
|
|
63
|
+
: apiSession.createdAt,
|
|
64
|
+
lastActiveAt: typeof apiSession.lastActiveAt === 'string'
|
|
65
|
+
? new Date(apiSession.lastActiveAt).getTime()
|
|
66
|
+
: apiSession.lastActiveAt,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function convertMessage(apiMessage) {
|
|
70
|
+
return {
|
|
71
|
+
...apiMessage,
|
|
72
|
+
createdAt: typeof apiMessage.createdAt === 'string'
|
|
73
|
+
? new Date(apiMessage.createdAt).getTime()
|
|
74
|
+
: apiMessage.createdAt,
|
|
75
|
+
completedAt: apiMessage.completedAt
|
|
76
|
+
? typeof apiMessage.completedAt === 'string'
|
|
77
|
+
? new Date(apiMessage.completedAt).getTime()
|
|
78
|
+
: apiMessage.completedAt
|
|
79
|
+
: null,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
class ApiClient {
|
|
83
|
+
get baseUrl() {
|
|
84
|
+
// Always check for injected URL at runtime
|
|
85
|
+
const win = window;
|
|
86
|
+
if (win.OTTO_SERVER_URL) {
|
|
87
|
+
return win.OTTO_SERVER_URL;
|
|
88
|
+
}
|
|
89
|
+
return API_BASE_URL;
|
|
90
|
+
}
|
|
91
|
+
// Session methods using new API
|
|
92
|
+
async getSessions() {
|
|
93
|
+
const response = await apiListSessions();
|
|
94
|
+
if (response.error) {
|
|
95
|
+
throw new Error(extractErrorMessage(response.error));
|
|
96
|
+
}
|
|
97
|
+
return (response.data || []).map(convertSession);
|
|
98
|
+
}
|
|
99
|
+
async createSession(data) {
|
|
100
|
+
const response = await apiCreateSession({
|
|
101
|
+
body: data,
|
|
102
|
+
});
|
|
103
|
+
if (response.error) {
|
|
104
|
+
throw new Error(extractErrorMessage(response.error));
|
|
105
|
+
}
|
|
106
|
+
if (!response.data) {
|
|
107
|
+
throw new Error('No data returned from create session');
|
|
108
|
+
}
|
|
109
|
+
return convertSession(response.data);
|
|
110
|
+
}
|
|
111
|
+
async updateSession(sessionId, data) {
|
|
112
|
+
const response = await fetch(`${this.baseUrl}/v1/sessions/${sessionId}`, {
|
|
113
|
+
method: 'PATCH',
|
|
114
|
+
headers: {
|
|
115
|
+
'Content-Type': 'application/json',
|
|
116
|
+
},
|
|
117
|
+
body: JSON.stringify(data),
|
|
118
|
+
});
|
|
119
|
+
if (!response.ok) {
|
|
120
|
+
const errorData = await response
|
|
121
|
+
.json()
|
|
122
|
+
.catch(() => ({ error: 'Failed to update session' }));
|
|
123
|
+
throw new Error(extractErrorMessage(errorData));
|
|
124
|
+
}
|
|
125
|
+
const sessionData = await response.json();
|
|
126
|
+
return convertSession(sessionData);
|
|
127
|
+
}
|
|
128
|
+
async deleteSession(sessionId) {
|
|
129
|
+
const response = await fetch(`${this.baseUrl}/v1/sessions/${sessionId}`, {
|
|
130
|
+
method: 'DELETE',
|
|
131
|
+
headers: {
|
|
132
|
+
'Content-Type': 'application/json',
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
if (!response.ok) {
|
|
136
|
+
const errorData = await response
|
|
137
|
+
.json()
|
|
138
|
+
.catch(() => ({ error: 'Failed to delete session' }));
|
|
139
|
+
throw new Error(extractErrorMessage(errorData));
|
|
140
|
+
}
|
|
141
|
+
return await response.json();
|
|
142
|
+
}
|
|
143
|
+
async abortSession(sessionId) {
|
|
144
|
+
const response = await apiAbortSession({
|
|
145
|
+
path: { sessionId },
|
|
146
|
+
});
|
|
147
|
+
if (response.error) {
|
|
148
|
+
throw new Error(extractErrorMessage(response.error));
|
|
149
|
+
}
|
|
150
|
+
return response.data;
|
|
151
|
+
}
|
|
152
|
+
async abortMessage(sessionId, messageId) {
|
|
153
|
+
const baseUrl = this.baseUrl;
|
|
154
|
+
const response = await fetch(`${baseUrl}/v1/sessions/${sessionId}/abort`, {
|
|
155
|
+
method: 'DELETE',
|
|
156
|
+
headers: { 'Content-Type': 'application/json' },
|
|
157
|
+
body: JSON.stringify({ messageId }),
|
|
158
|
+
});
|
|
159
|
+
if (!response.ok) {
|
|
160
|
+
throw new Error('Failed to abort message');
|
|
161
|
+
}
|
|
162
|
+
return response.json();
|
|
163
|
+
}
|
|
164
|
+
async getQueueState(sessionId) {
|
|
165
|
+
const baseUrl = this.baseUrl;
|
|
166
|
+
const response = await fetch(`${baseUrl}/v1/sessions/${sessionId}/queue`);
|
|
167
|
+
if (!response.ok) {
|
|
168
|
+
throw new Error('Failed to get queue state');
|
|
169
|
+
}
|
|
170
|
+
return response.json();
|
|
171
|
+
}
|
|
172
|
+
async removeFromQueue(sessionId, messageId) {
|
|
173
|
+
const baseUrl = this.baseUrl;
|
|
174
|
+
const response = await fetch(`${baseUrl}/v1/sessions/${sessionId}/queue/${messageId}`, { method: 'DELETE' });
|
|
175
|
+
if (!response.ok) {
|
|
176
|
+
throw new Error('Failed to remove from queue');
|
|
177
|
+
}
|
|
178
|
+
return response.json();
|
|
179
|
+
}
|
|
180
|
+
async getMessages(sessionId) {
|
|
181
|
+
const response = await apiListMessages({
|
|
182
|
+
path: { id: sessionId },
|
|
183
|
+
});
|
|
184
|
+
if (response.error) {
|
|
185
|
+
throw new Error(extractErrorMessage(response.error));
|
|
186
|
+
}
|
|
187
|
+
return (response.data || []).map(convertMessage);
|
|
188
|
+
}
|
|
189
|
+
async sendMessage(sessionId, data) {
|
|
190
|
+
const response = await apiCreateMessage({
|
|
191
|
+
path: { id: sessionId },
|
|
192
|
+
body: data,
|
|
193
|
+
});
|
|
194
|
+
if (response.error) {
|
|
195
|
+
throw new Error(extractErrorMessage(response.error));
|
|
196
|
+
}
|
|
197
|
+
return response.data;
|
|
198
|
+
}
|
|
199
|
+
getStreamUrl(sessionId) {
|
|
200
|
+
return `${this.baseUrl}/v1/sessions/${sessionId}/stream`;
|
|
201
|
+
}
|
|
202
|
+
// Config methods using new API
|
|
203
|
+
async getConfig() {
|
|
204
|
+
const response = await apiGetConfig();
|
|
205
|
+
if (response.error) {
|
|
206
|
+
throw new Error(extractErrorMessage(response.error));
|
|
207
|
+
}
|
|
208
|
+
return response.data;
|
|
209
|
+
}
|
|
210
|
+
async getModels(providerId) {
|
|
211
|
+
const response = await apiGetProviderModels({
|
|
212
|
+
// biome-ignore lint/suspicious/noExplicitAny: API type mismatch between client and server
|
|
213
|
+
path: { provider: providerId },
|
|
214
|
+
});
|
|
215
|
+
if (response.error) {
|
|
216
|
+
throw new Error(extractErrorMessage(response.error));
|
|
217
|
+
}
|
|
218
|
+
return response.data;
|
|
219
|
+
}
|
|
220
|
+
async getAllModels() {
|
|
221
|
+
const response = await fetch(`${this.baseUrl}/v1/config/models`, {
|
|
222
|
+
method: 'GET',
|
|
223
|
+
headers: {
|
|
224
|
+
'Content-Type': 'application/json',
|
|
225
|
+
},
|
|
226
|
+
});
|
|
227
|
+
if (!response.ok) {
|
|
228
|
+
const errorData = await response
|
|
229
|
+
.json()
|
|
230
|
+
.catch(() => ({ error: 'Failed to fetch models' }));
|
|
231
|
+
throw new Error(extractErrorMessage(errorData));
|
|
232
|
+
}
|
|
233
|
+
return await response.json();
|
|
234
|
+
}
|
|
235
|
+
async updateDefaults(data) {
|
|
236
|
+
const response = await fetch(`${this.baseUrl}/v1/config/defaults`, {
|
|
237
|
+
method: 'PATCH',
|
|
238
|
+
headers: {
|
|
239
|
+
'Content-Type': 'application/json',
|
|
240
|
+
},
|
|
241
|
+
body: JSON.stringify(data),
|
|
242
|
+
});
|
|
243
|
+
if (!response.ok) {
|
|
244
|
+
const errorData = await response
|
|
245
|
+
.json()
|
|
246
|
+
.catch(() => ({ error: 'Failed to update defaults' }));
|
|
247
|
+
throw new Error(extractErrorMessage(errorData));
|
|
248
|
+
}
|
|
249
|
+
return await response.json();
|
|
250
|
+
}
|
|
251
|
+
// Git methods using new API
|
|
252
|
+
async getGitStatus() {
|
|
253
|
+
const response = await apiGetGitStatus();
|
|
254
|
+
if (response.error) {
|
|
255
|
+
throw new Error(extractErrorMessage(response.error));
|
|
256
|
+
}
|
|
257
|
+
// biome-ignore lint/suspicious/noExplicitAny: API response structure mismatch
|
|
258
|
+
return response.data?.data;
|
|
259
|
+
}
|
|
260
|
+
async getGitDiff(file, staged = false) {
|
|
261
|
+
const response = await apiGetGitDiff({
|
|
262
|
+
query: {
|
|
263
|
+
file,
|
|
264
|
+
staged: staged ? 'true' : 'false',
|
|
265
|
+
},
|
|
266
|
+
});
|
|
267
|
+
if (response.error) {
|
|
268
|
+
throw new Error(extractErrorMessage(response.error));
|
|
269
|
+
}
|
|
270
|
+
// biome-ignore lint/suspicious/noExplicitAny: API response structure mismatch
|
|
271
|
+
return response.data?.data;
|
|
272
|
+
}
|
|
273
|
+
async generateCommitMessage(sessionId) {
|
|
274
|
+
const response = await apiGenerateCommitMessage({
|
|
275
|
+
body: sessionId ? { sessionId } : {},
|
|
276
|
+
});
|
|
277
|
+
if (response.error) {
|
|
278
|
+
throw new Error(extractErrorMessage(response.error));
|
|
279
|
+
}
|
|
280
|
+
// biome-ignore lint/suspicious/noExplicitAny: API response structure mismatch
|
|
281
|
+
return response.data?.data;
|
|
282
|
+
}
|
|
283
|
+
async stageFiles(files) {
|
|
284
|
+
const response = await apiStageFiles({
|
|
285
|
+
// biome-ignore lint/suspicious/noExplicitAny: API type mismatch between client and server
|
|
286
|
+
body: { files },
|
|
287
|
+
});
|
|
288
|
+
if (response.error) {
|
|
289
|
+
throw new Error(extractErrorMessage(response.error));
|
|
290
|
+
}
|
|
291
|
+
// biome-ignore lint/suspicious/noExplicitAny: API response structure mismatch
|
|
292
|
+
return response.data?.data;
|
|
293
|
+
}
|
|
294
|
+
async unstageFiles(files) {
|
|
295
|
+
const response = await apiUnstageFiles({
|
|
296
|
+
// biome-ignore lint/suspicious/noExplicitAny: API type mismatch between client and server
|
|
297
|
+
body: { files },
|
|
298
|
+
});
|
|
299
|
+
if (response.error) {
|
|
300
|
+
throw new Error(extractErrorMessage(response.error));
|
|
301
|
+
}
|
|
302
|
+
// biome-ignore lint/suspicious/noExplicitAny: API response structure mismatch
|
|
303
|
+
return response.data?.data;
|
|
304
|
+
}
|
|
305
|
+
async restoreFiles(files) {
|
|
306
|
+
const response = await apiRestoreFiles({
|
|
307
|
+
// biome-ignore lint/suspicious/noExplicitAny: API type mismatch between client and server
|
|
308
|
+
body: { files },
|
|
309
|
+
});
|
|
310
|
+
if (response.error) {
|
|
311
|
+
throw new Error(extractErrorMessage(response.error));
|
|
312
|
+
}
|
|
313
|
+
// biome-ignore lint/suspicious/noExplicitAny: API response structure mismatch
|
|
314
|
+
return response.data?.data;
|
|
315
|
+
}
|
|
316
|
+
async deleteFiles(files) {
|
|
317
|
+
const response = await apiDeleteFiles({
|
|
318
|
+
// biome-ignore lint/suspicious/noExplicitAny: API type mismatch between client and server
|
|
319
|
+
body: { files },
|
|
320
|
+
});
|
|
321
|
+
if (response.error) {
|
|
322
|
+
throw new Error(extractErrorMessage(response.error));
|
|
323
|
+
}
|
|
324
|
+
// biome-ignore lint/suspicious/noExplicitAny: API response structure mismatch
|
|
325
|
+
return response.data?.data;
|
|
326
|
+
}
|
|
327
|
+
async commitChanges(message) {
|
|
328
|
+
const response = await apiCommitChanges({
|
|
329
|
+
// biome-ignore lint/suspicious/noExplicitAny: API type mismatch between client and server
|
|
330
|
+
body: { message },
|
|
331
|
+
});
|
|
332
|
+
if (response.error) {
|
|
333
|
+
throw new Error(extractErrorMessage(response.error));
|
|
334
|
+
}
|
|
335
|
+
// biome-ignore lint/suspicious/noExplicitAny: API response structure mismatch
|
|
336
|
+
return response.data?.data;
|
|
337
|
+
}
|
|
338
|
+
async getGitBranch() {
|
|
339
|
+
const response = await apiGetGitBranch();
|
|
340
|
+
if (response.error) {
|
|
341
|
+
throw new Error(extractErrorMessage(response.error));
|
|
342
|
+
}
|
|
343
|
+
// biome-ignore lint/suspicious/noExplicitAny: API response structure mismatch
|
|
344
|
+
return response.data?.data;
|
|
345
|
+
}
|
|
346
|
+
async pushCommits() {
|
|
347
|
+
const response = await apiPushCommits({
|
|
348
|
+
// biome-ignore lint/suspicious/noExplicitAny: API type mismatch between client and server
|
|
349
|
+
body: {},
|
|
350
|
+
});
|
|
351
|
+
if (response.error) {
|
|
352
|
+
throw new Error(extractErrorMessage(response.error));
|
|
353
|
+
}
|
|
354
|
+
// biome-ignore lint/suspicious/noExplicitAny: API response structure mismatch
|
|
355
|
+
return response.data?.data;
|
|
356
|
+
}
|
|
357
|
+
async listFiles() {
|
|
358
|
+
const response = await apiListFiles();
|
|
359
|
+
if (response.error) {
|
|
360
|
+
throw new Error(extractErrorMessage(response.error));
|
|
361
|
+
}
|
|
362
|
+
return response.data;
|
|
363
|
+
}
|
|
364
|
+
async getSessionFiles(sessionId) {
|
|
365
|
+
const response = await fetch(`${this.baseUrl}/v1/sessions/${sessionId}/files`, {
|
|
366
|
+
method: 'GET',
|
|
367
|
+
headers: {
|
|
368
|
+
'Content-Type': 'application/json',
|
|
369
|
+
},
|
|
370
|
+
});
|
|
371
|
+
if (!response.ok) {
|
|
372
|
+
const errorData = await response
|
|
373
|
+
.json()
|
|
374
|
+
.catch(() => ({ error: 'Failed to fetch session files' }));
|
|
375
|
+
throw new Error(extractErrorMessage(errorData));
|
|
376
|
+
}
|
|
377
|
+
return await response.json();
|
|
378
|
+
}
|
|
379
|
+
async createBranch(sessionId, data) {
|
|
380
|
+
const response = await fetch(`${this.baseUrl}/v1/sessions/${sessionId}/branch`, {
|
|
381
|
+
method: 'POST',
|
|
382
|
+
headers: {
|
|
383
|
+
'Content-Type': 'application/json',
|
|
384
|
+
},
|
|
385
|
+
body: JSON.stringify(data),
|
|
386
|
+
});
|
|
387
|
+
if (!response.ok) {
|
|
388
|
+
const errorData = await response
|
|
389
|
+
.json()
|
|
390
|
+
.catch(() => ({ error: 'Failed to create branch' }));
|
|
391
|
+
throw new Error(extractErrorMessage(errorData));
|
|
392
|
+
}
|
|
393
|
+
return await response.json();
|
|
394
|
+
}
|
|
395
|
+
async listBranches(sessionId) {
|
|
396
|
+
const response = await fetch(`${this.baseUrl}/v1/sessions/${sessionId}/branches`, {
|
|
397
|
+
method: 'GET',
|
|
398
|
+
headers: {
|
|
399
|
+
'Content-Type': 'application/json',
|
|
400
|
+
},
|
|
401
|
+
});
|
|
402
|
+
if (!response.ok) {
|
|
403
|
+
const errorData = await response
|
|
404
|
+
.json()
|
|
405
|
+
.catch(() => ({ error: 'Failed to list branches' }));
|
|
406
|
+
throw new Error(extractErrorMessage(errorData));
|
|
407
|
+
}
|
|
408
|
+
return await response.json();
|
|
409
|
+
}
|
|
410
|
+
async getParentSession(sessionId) {
|
|
411
|
+
const response = await fetch(`${this.baseUrl}/v1/sessions/${sessionId}/parent`, {
|
|
412
|
+
method: 'GET',
|
|
413
|
+
headers: {
|
|
414
|
+
'Content-Type': 'application/json',
|
|
415
|
+
},
|
|
416
|
+
});
|
|
417
|
+
if (!response.ok) {
|
|
418
|
+
const errorData = await response
|
|
419
|
+
.json()
|
|
420
|
+
.catch(() => ({ error: 'Failed to get parent session' }));
|
|
421
|
+
throw new Error(extractErrorMessage(errorData));
|
|
422
|
+
}
|
|
423
|
+
return await response.json();
|
|
424
|
+
}
|
|
425
|
+
async getSetuBalance() {
|
|
426
|
+
try {
|
|
427
|
+
const response = await fetch(`${this.baseUrl}/v1/setu/balance`, {
|
|
428
|
+
method: 'GET',
|
|
429
|
+
headers: {
|
|
430
|
+
'Content-Type': 'application/json',
|
|
431
|
+
},
|
|
432
|
+
});
|
|
433
|
+
if (!response.ok) {
|
|
434
|
+
return null;
|
|
435
|
+
}
|
|
436
|
+
return await response.json();
|
|
437
|
+
}
|
|
438
|
+
catch {
|
|
439
|
+
return null;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
async getSetuWallet() {
|
|
443
|
+
try {
|
|
444
|
+
const response = await fetch(`${this.baseUrl}/v1/setu/wallet`, {
|
|
445
|
+
method: 'GET',
|
|
446
|
+
headers: {
|
|
447
|
+
'Content-Type': 'application/json',
|
|
448
|
+
},
|
|
449
|
+
});
|
|
450
|
+
if (!response.ok) {
|
|
451
|
+
return { configured: false };
|
|
452
|
+
}
|
|
453
|
+
return await response.json();
|
|
454
|
+
}
|
|
455
|
+
catch {
|
|
456
|
+
return { configured: false };
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
async getSetuUsdcBalance(network = 'mainnet') {
|
|
460
|
+
try {
|
|
461
|
+
const response = await fetch(`${this.baseUrl}/v1/setu/usdc-balance?network=${network}`, {
|
|
462
|
+
method: 'GET',
|
|
463
|
+
headers: {
|
|
464
|
+
'Content-Type': 'application/json',
|
|
465
|
+
},
|
|
466
|
+
});
|
|
467
|
+
if (!response.ok) {
|
|
468
|
+
return null;
|
|
469
|
+
}
|
|
470
|
+
return await response.json();
|
|
471
|
+
}
|
|
472
|
+
catch {
|
|
473
|
+
return null;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
async getShareStatus(sessionId) {
|
|
477
|
+
const response = await fetch(`${this.baseUrl}/v1/sessions/${sessionId}/share`, {
|
|
478
|
+
method: 'GET',
|
|
479
|
+
headers: {
|
|
480
|
+
'Content-Type': 'application/json',
|
|
481
|
+
},
|
|
482
|
+
});
|
|
483
|
+
if (!response.ok) {
|
|
484
|
+
return { shared: false };
|
|
485
|
+
}
|
|
486
|
+
return await response.json();
|
|
487
|
+
}
|
|
488
|
+
async shareSession(sessionId) {
|
|
489
|
+
const response = await fetch(`${this.baseUrl}/v1/sessions/${sessionId}/share`, {
|
|
490
|
+
method: 'POST',
|
|
491
|
+
headers: {
|
|
492
|
+
'Content-Type': 'application/json',
|
|
493
|
+
},
|
|
494
|
+
});
|
|
495
|
+
if (!response.ok) {
|
|
496
|
+
const errorData = await response
|
|
497
|
+
.json()
|
|
498
|
+
.catch(() => ({ error: 'Failed to share session' }));
|
|
499
|
+
throw new Error(extractErrorMessage(errorData));
|
|
500
|
+
}
|
|
501
|
+
return await response.json();
|
|
502
|
+
}
|
|
503
|
+
async syncSession(sessionId) {
|
|
504
|
+
const response = await fetch(`${this.baseUrl}/v1/sessions/${sessionId}/share`, {
|
|
505
|
+
method: 'PUT',
|
|
506
|
+
headers: {
|
|
507
|
+
'Content-Type': 'application/json',
|
|
508
|
+
},
|
|
509
|
+
});
|
|
510
|
+
if (!response.ok) {
|
|
511
|
+
const errorData = await response
|
|
512
|
+
.json()
|
|
513
|
+
.catch(() => ({ error: 'Failed to sync session' }));
|
|
514
|
+
throw new Error(extractErrorMessage(errorData));
|
|
515
|
+
}
|
|
516
|
+
return await response.json();
|
|
517
|
+
}
|
|
518
|
+
async approveToolCall(sessionId, callId, approved) {
|
|
519
|
+
const response = await fetch(`${this.baseUrl}/v1/sessions/${sessionId}/approval`, {
|
|
520
|
+
method: 'POST',
|
|
521
|
+
headers: { 'Content-Type': 'application/json' },
|
|
522
|
+
body: JSON.stringify({ callId, approved }),
|
|
523
|
+
});
|
|
524
|
+
if (!response.ok) {
|
|
525
|
+
throw new Error('Failed to send tool approval');
|
|
526
|
+
}
|
|
527
|
+
return await response.json();
|
|
528
|
+
}
|
|
529
|
+
async getPendingApprovals(sessionId) {
|
|
530
|
+
const response = await fetch(`${this.baseUrl}/v1/sessions/${sessionId}/approval/pending`, {
|
|
531
|
+
method: 'GET',
|
|
532
|
+
headers: { 'Content-Type': 'application/json' },
|
|
533
|
+
});
|
|
534
|
+
if (!response.ok) {
|
|
535
|
+
return { ok: false, pending: [] };
|
|
536
|
+
}
|
|
537
|
+
return await response.json();
|
|
538
|
+
}
|
|
539
|
+
async getPolarTopupEstimate(amount) {
|
|
540
|
+
try {
|
|
541
|
+
const response = await fetch(`${this.baseUrl}/v1/setu/topup/polar/estimate?amount=${amount}`, {
|
|
542
|
+
method: 'GET',
|
|
543
|
+
headers: { 'Content-Type': 'application/json' },
|
|
544
|
+
});
|
|
545
|
+
if (!response.ok) {
|
|
546
|
+
return null;
|
|
547
|
+
}
|
|
548
|
+
return await response.json();
|
|
549
|
+
}
|
|
550
|
+
catch {
|
|
551
|
+
return null;
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
async createPolarCheckout(amount, successUrl) {
|
|
555
|
+
const response = await fetch(`${this.baseUrl}/v1/setu/topup/polar`, {
|
|
556
|
+
method: 'POST',
|
|
557
|
+
headers: { 'Content-Type': 'application/json' },
|
|
558
|
+
body: JSON.stringify({ amount, successUrl }),
|
|
559
|
+
});
|
|
560
|
+
if (!response.ok) {
|
|
561
|
+
const errorData = await response
|
|
562
|
+
.json()
|
|
563
|
+
.catch(() => ({ error: 'Failed to create checkout' }));
|
|
564
|
+
throw new Error(extractErrorMessage(errorData));
|
|
565
|
+
}
|
|
566
|
+
return await response.json();
|
|
567
|
+
}
|
|
568
|
+
async selectTopupMethod(sessionId, method) {
|
|
569
|
+
const response = await fetch(`${this.baseUrl}/v1/setu/topup/select`, {
|
|
570
|
+
method: 'POST',
|
|
571
|
+
headers: { 'Content-Type': 'application/json' },
|
|
572
|
+
body: JSON.stringify({ sessionId, method }),
|
|
573
|
+
});
|
|
574
|
+
if (!response.ok) {
|
|
575
|
+
const errorData = await response
|
|
576
|
+
.json()
|
|
577
|
+
.catch(() => ({ error: 'Failed to select topup method' }));
|
|
578
|
+
throw new Error(extractErrorMessage(errorData));
|
|
579
|
+
}
|
|
580
|
+
return await response.json();
|
|
581
|
+
}
|
|
582
|
+
async cancelTopup(sessionId, reason) {
|
|
583
|
+
const response = await fetch(`${this.baseUrl}/v1/setu/topup/cancel`, {
|
|
584
|
+
method: 'POST',
|
|
585
|
+
headers: { 'Content-Type': 'application/json' },
|
|
586
|
+
body: JSON.stringify({ sessionId, reason }),
|
|
587
|
+
});
|
|
588
|
+
if (!response.ok) {
|
|
589
|
+
const errorData = await response
|
|
590
|
+
.json()
|
|
591
|
+
.catch(() => ({ error: 'Failed to cancel topup' }));
|
|
592
|
+
throw new Error(extractErrorMessage(errorData));
|
|
593
|
+
}
|
|
594
|
+
return await response.json();
|
|
595
|
+
}
|
|
596
|
+
async getPendingTopup(sessionId) {
|
|
597
|
+
try {
|
|
598
|
+
const response = await fetch(`${this.baseUrl}/v1/setu/topup/pending?sessionId=${sessionId}`, {
|
|
599
|
+
method: 'GET',
|
|
600
|
+
headers: { 'Content-Type': 'application/json' },
|
|
601
|
+
});
|
|
602
|
+
if (!response.ok) {
|
|
603
|
+
return { hasPending: false };
|
|
604
|
+
}
|
|
605
|
+
return await response.json();
|
|
606
|
+
}
|
|
607
|
+
catch {
|
|
608
|
+
return { hasPending: false };
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
async getPolarTopupStatus(checkoutId) {
|
|
612
|
+
try {
|
|
613
|
+
const response = await fetch(`${this.baseUrl}/v1/setu/topup/polar/status?checkoutId=${checkoutId}`, {
|
|
614
|
+
method: 'GET',
|
|
615
|
+
headers: { 'Content-Type': 'application/json' },
|
|
616
|
+
});
|
|
617
|
+
if (!response.ok) {
|
|
618
|
+
return null;
|
|
619
|
+
}
|
|
620
|
+
return await response.json();
|
|
621
|
+
}
|
|
622
|
+
catch {
|
|
623
|
+
return null;
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
async retryMessage(sessionId, messageId) {
|
|
627
|
+
const response = await fetch(`${this.baseUrl}/v1/sessions/${sessionId}/messages/${messageId}/retry`, {
|
|
628
|
+
method: 'POST',
|
|
629
|
+
headers: { 'Content-Type': 'application/json' },
|
|
630
|
+
});
|
|
631
|
+
if (!response.ok) {
|
|
632
|
+
const errorData = await response
|
|
633
|
+
.json()
|
|
634
|
+
.catch(() => ({ error: 'Failed to retry message' }));
|
|
635
|
+
throw new Error(extractErrorMessage(errorData));
|
|
636
|
+
}
|
|
637
|
+
return await response.json();
|
|
638
|
+
}
|
|
639
|
+
async getAuthStatus() {
|
|
640
|
+
const response = await fetch(`${this.baseUrl}/v1/auth/status`, {
|
|
641
|
+
method: 'GET',
|
|
642
|
+
headers: { 'Content-Type': 'application/json' },
|
|
643
|
+
});
|
|
644
|
+
if (!response.ok) {
|
|
645
|
+
const errorData = await response
|
|
646
|
+
.json()
|
|
647
|
+
.catch(() => ({ error: 'Failed to get auth status' }));
|
|
648
|
+
throw new Error(extractErrorMessage(errorData));
|
|
649
|
+
}
|
|
650
|
+
return await response.json();
|
|
651
|
+
}
|
|
652
|
+
async setupSetuWallet() {
|
|
653
|
+
const response = await fetch(`${this.baseUrl}/v1/auth/setu/setup`, {
|
|
654
|
+
method: 'POST',
|
|
655
|
+
headers: { 'Content-Type': 'application/json' },
|
|
656
|
+
});
|
|
657
|
+
if (!response.ok) {
|
|
658
|
+
const errorData = await response
|
|
659
|
+
.json()
|
|
660
|
+
.catch(() => ({ error: 'Failed to setup wallet' }));
|
|
661
|
+
throw new Error(extractErrorMessage(errorData));
|
|
662
|
+
}
|
|
663
|
+
return await response.json();
|
|
664
|
+
}
|
|
665
|
+
async importSetuWallet(privateKey) {
|
|
666
|
+
const response = await fetch(`${this.baseUrl}/v1/auth/setu/import`, {
|
|
667
|
+
method: 'POST',
|
|
668
|
+
headers: { 'Content-Type': 'application/json' },
|
|
669
|
+
body: JSON.stringify({ privateKey }),
|
|
670
|
+
});
|
|
671
|
+
if (!response.ok) {
|
|
672
|
+
const errorData = await response
|
|
673
|
+
.json()
|
|
674
|
+
.catch(() => ({ error: 'Failed to import wallet' }));
|
|
675
|
+
throw new Error(extractErrorMessage(errorData));
|
|
676
|
+
}
|
|
677
|
+
return await response.json();
|
|
678
|
+
}
|
|
679
|
+
async addProvider(provider, apiKey) {
|
|
680
|
+
const response = await fetch(`${this.baseUrl}/v1/auth/${provider}`, {
|
|
681
|
+
method: 'POST',
|
|
682
|
+
headers: { 'Content-Type': 'application/json' },
|
|
683
|
+
body: JSON.stringify({ apiKey }),
|
|
684
|
+
});
|
|
685
|
+
if (!response.ok) {
|
|
686
|
+
const errorData = await response
|
|
687
|
+
.json()
|
|
688
|
+
.catch(() => ({ error: 'Failed to add provider' }));
|
|
689
|
+
throw new Error(extractErrorMessage(errorData));
|
|
690
|
+
}
|
|
691
|
+
return await response.json();
|
|
692
|
+
}
|
|
693
|
+
async removeProvider(provider) {
|
|
694
|
+
const response = await fetch(`${this.baseUrl}/v1/auth/${provider}`, {
|
|
695
|
+
method: 'DELETE',
|
|
696
|
+
headers: { 'Content-Type': 'application/json' },
|
|
697
|
+
});
|
|
698
|
+
if (!response.ok) {
|
|
699
|
+
const errorData = await response
|
|
700
|
+
.json()
|
|
701
|
+
.catch(() => ({ error: 'Failed to remove provider' }));
|
|
702
|
+
throw new Error(extractErrorMessage(errorData));
|
|
703
|
+
}
|
|
704
|
+
return await response.json();
|
|
705
|
+
}
|
|
706
|
+
async completeOnboarding() {
|
|
707
|
+
const response = await fetch(`${this.baseUrl}/v1/auth/onboarding/complete`, {
|
|
708
|
+
method: 'POST',
|
|
709
|
+
headers: { 'Content-Type': 'application/json' },
|
|
710
|
+
});
|
|
711
|
+
if (!response.ok) {
|
|
712
|
+
const errorData = await response
|
|
713
|
+
.json()
|
|
714
|
+
.catch(() => ({ error: 'Failed to complete onboarding' }));
|
|
715
|
+
throw new Error(extractErrorMessage(errorData));
|
|
716
|
+
}
|
|
717
|
+
return await response.json();
|
|
718
|
+
}
|
|
719
|
+
getOAuthStartUrl(provider, mode) {
|
|
720
|
+
const baseUrl = `${this.baseUrl}/v1/auth/${provider}/oauth/start`;
|
|
721
|
+
if (mode) {
|
|
722
|
+
return `${baseUrl}?mode=${mode}`;
|
|
723
|
+
}
|
|
724
|
+
return baseUrl;
|
|
725
|
+
}
|
|
726
|
+
async getOAuthUrl(provider, mode) {
|
|
727
|
+
const response = await fetch(`${this.baseUrl}/v1/auth/${provider}/oauth/url`, {
|
|
728
|
+
method: 'POST',
|
|
729
|
+
headers: { 'Content-Type': 'application/json' },
|
|
730
|
+
body: JSON.stringify({ mode }),
|
|
731
|
+
});
|
|
732
|
+
if (!response.ok) {
|
|
733
|
+
const errorData = await response
|
|
734
|
+
.json()
|
|
735
|
+
.catch(() => ({ error: 'Failed to get OAuth URL' }));
|
|
736
|
+
throw new Error(extractErrorMessage(errorData));
|
|
737
|
+
}
|
|
738
|
+
return await response.json();
|
|
739
|
+
}
|
|
740
|
+
async exchangeOAuthCode(provider, code, sessionId) {
|
|
741
|
+
const response = await fetch(`${this.baseUrl}/v1/auth/${provider}/oauth/exchange`, {
|
|
742
|
+
method: 'POST',
|
|
743
|
+
headers: { 'Content-Type': 'application/json' },
|
|
744
|
+
body: JSON.stringify({ code, sessionId }),
|
|
745
|
+
});
|
|
746
|
+
if (!response.ok) {
|
|
747
|
+
const errorData = await response
|
|
748
|
+
.json()
|
|
749
|
+
.catch(() => ({ error: 'Failed to exchange OAuth code' }));
|
|
750
|
+
throw new Error(extractErrorMessage(errorData));
|
|
751
|
+
}
|
|
752
|
+
return await response.json();
|
|
753
|
+
}
|
|
754
|
+
async startCopilotDeviceFlow() {
|
|
755
|
+
const response = await fetch(`${this.baseUrl}/v1/auth/copilot/device/start`, {
|
|
756
|
+
method: 'POST',
|
|
757
|
+
headers: { 'Content-Type': 'application/json' },
|
|
758
|
+
});
|
|
759
|
+
if (!response.ok) {
|
|
760
|
+
const errorData = await response
|
|
761
|
+
.json()
|
|
762
|
+
.catch(() => ({ error: 'Failed to start Copilot device flow' }));
|
|
763
|
+
throw new Error(extractErrorMessage(errorData));
|
|
764
|
+
}
|
|
765
|
+
return await response.json();
|
|
766
|
+
}
|
|
767
|
+
async pollCopilotDeviceFlow(sessionId) {
|
|
768
|
+
const response = await fetch(`${this.baseUrl}/v1/auth/copilot/device/poll`, {
|
|
769
|
+
method: 'POST',
|
|
770
|
+
headers: { 'Content-Type': 'application/json' },
|
|
771
|
+
body: JSON.stringify({ sessionId }),
|
|
772
|
+
});
|
|
773
|
+
if (!response.ok) {
|
|
774
|
+
const errorData = await response
|
|
775
|
+
.json()
|
|
776
|
+
.catch(() => ({ error: 'Poll failed' }));
|
|
777
|
+
throw new Error(extractErrorMessage(errorData));
|
|
778
|
+
}
|
|
779
|
+
return await response.json();
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
export const apiClient = new ApiClient();
|
|
783
|
+
//# sourceMappingURL=api-client.js.map
|