@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,345 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, memo, useRef } from 'react';
|
|
3
|
+
import { X, ChevronLeft, ChevronRight } from 'lucide-react';
|
|
4
|
+
import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
|
|
5
|
+
import { prism, vscDarkPlus, } from 'react-syntax-highlighter/dist/esm/styles/prism';
|
|
6
|
+
import { useSessionFilesStore } from '../../stores/sessionFilesStore';
|
|
7
|
+
import { useSidebarStore } from '../../stores/sidebarStore';
|
|
8
|
+
import { Button } from '../ui/Button';
|
|
9
|
+
function transformToUnifiedDiff(patch) {
|
|
10
|
+
const lines = patch.split('\n');
|
|
11
|
+
const result = [];
|
|
12
|
+
let addCount = 0;
|
|
13
|
+
let removeCount = 0;
|
|
14
|
+
const diffLines = [];
|
|
15
|
+
for (const line of lines) {
|
|
16
|
+
if (line.startsWith('*** Begin Patch') ||
|
|
17
|
+
line.startsWith('*** End Patch') ||
|
|
18
|
+
line.startsWith('*** Update File:') ||
|
|
19
|
+
line.startsWith('*** Add File:') ||
|
|
20
|
+
line.startsWith('*** Delete File:')) {
|
|
21
|
+
if (diffLines.length > 0) {
|
|
22
|
+
result.push(`@@ -1,${removeCount} +1,${addCount} @@`);
|
|
23
|
+
result.push(...diffLines);
|
|
24
|
+
diffLines.length = 0;
|
|
25
|
+
addCount = 0;
|
|
26
|
+
removeCount = 0;
|
|
27
|
+
}
|
|
28
|
+
result.push(line);
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (line.match(/^@@ -\d+(?:,\d+)? \+\d+(?:,\d+)? @@/)) {
|
|
32
|
+
if (diffLines.length > 0) {
|
|
33
|
+
result.push(`@@ -1,${removeCount} +1,${addCount} @@`);
|
|
34
|
+
result.push(...diffLines);
|
|
35
|
+
diffLines.length = 0;
|
|
36
|
+
addCount = 0;
|
|
37
|
+
removeCount = 0;
|
|
38
|
+
}
|
|
39
|
+
result.push(line);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (line.startsWith('@@')) {
|
|
43
|
+
result.push(line);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (line.startsWith('+')) {
|
|
47
|
+
addCount++;
|
|
48
|
+
diffLines.push(line);
|
|
49
|
+
}
|
|
50
|
+
else if (line.startsWith('-')) {
|
|
51
|
+
removeCount++;
|
|
52
|
+
diffLines.push(line);
|
|
53
|
+
}
|
|
54
|
+
else if (line.startsWith(' ') || line.startsWith('\t')) {
|
|
55
|
+
addCount++;
|
|
56
|
+
removeCount++;
|
|
57
|
+
diffLines.push(line.startsWith('\t') ? ` ${line}` : line);
|
|
58
|
+
}
|
|
59
|
+
else if (line.trim() === '') {
|
|
60
|
+
diffLines.push(' ');
|
|
61
|
+
addCount++;
|
|
62
|
+
removeCount++;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
addCount++;
|
|
66
|
+
removeCount++;
|
|
67
|
+
diffLines.push(` ${line}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (diffLines.length > 0) {
|
|
71
|
+
result.push(`@@ -1,${removeCount} +1,${addCount} @@`);
|
|
72
|
+
result.push(...diffLines);
|
|
73
|
+
}
|
|
74
|
+
return result.join('\n');
|
|
75
|
+
}
|
|
76
|
+
function getLanguageFromPath(path) {
|
|
77
|
+
const ext = path.split('.').pop()?.toLowerCase();
|
|
78
|
+
const langMap = {
|
|
79
|
+
js: 'javascript',
|
|
80
|
+
jsx: 'jsx',
|
|
81
|
+
ts: 'typescript',
|
|
82
|
+
tsx: 'tsx',
|
|
83
|
+
py: 'python',
|
|
84
|
+
rb: 'ruby',
|
|
85
|
+
go: 'go',
|
|
86
|
+
rs: 'rust',
|
|
87
|
+
java: 'java',
|
|
88
|
+
c: 'c',
|
|
89
|
+
cpp: 'cpp',
|
|
90
|
+
h: 'c',
|
|
91
|
+
hpp: 'cpp',
|
|
92
|
+
cs: 'csharp',
|
|
93
|
+
php: 'php',
|
|
94
|
+
sh: 'bash',
|
|
95
|
+
bash: 'bash',
|
|
96
|
+
zsh: 'bash',
|
|
97
|
+
sql: 'sql',
|
|
98
|
+
json: 'json',
|
|
99
|
+
yaml: 'yaml',
|
|
100
|
+
yml: 'yaml',
|
|
101
|
+
xml: 'xml',
|
|
102
|
+
html: 'html',
|
|
103
|
+
css: 'css',
|
|
104
|
+
scss: 'scss',
|
|
105
|
+
md: 'markdown',
|
|
106
|
+
txt: 'text',
|
|
107
|
+
svelte: 'svelte',
|
|
108
|
+
};
|
|
109
|
+
return langMap[ext || ''] || 'javascript';
|
|
110
|
+
}
|
|
111
|
+
function parseDiff(patch) {
|
|
112
|
+
const lines = patch.split('\n');
|
|
113
|
+
const result = [];
|
|
114
|
+
let oldLineNum = 0;
|
|
115
|
+
let newLineNum = 0;
|
|
116
|
+
let inHunk = false;
|
|
117
|
+
let filePath = '';
|
|
118
|
+
for (const line of lines) {
|
|
119
|
+
if (line.startsWith('+++') || line.startsWith('*** Update File:')) {
|
|
120
|
+
const match = line.match(/\+\+\+ b\/(.+)/) || line.match(/\*\*\* Update File: (.+)/);
|
|
121
|
+
if (match)
|
|
122
|
+
filePath = match[1];
|
|
123
|
+
}
|
|
124
|
+
if (line.startsWith('*** Add File:')) {
|
|
125
|
+
const match = line.match(/\*\*\* Add File: (.+)/);
|
|
126
|
+
if (match)
|
|
127
|
+
filePath = match[1];
|
|
128
|
+
}
|
|
129
|
+
const hunkMatch = line.match(/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
|
|
130
|
+
if (hunkMatch) {
|
|
131
|
+
oldLineNum = Number.parseInt(hunkMatch[1], 10);
|
|
132
|
+
newLineNum = Number.parseInt(hunkMatch[2], 10);
|
|
133
|
+
inHunk = true;
|
|
134
|
+
result.push({
|
|
135
|
+
content: line,
|
|
136
|
+
codeContent: line,
|
|
137
|
+
type: 'header',
|
|
138
|
+
});
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (line.startsWith('***') ||
|
|
142
|
+
line.startsWith('diff ') ||
|
|
143
|
+
line.startsWith('index ') ||
|
|
144
|
+
line.startsWith('---') ||
|
|
145
|
+
line.startsWith('+++') ||
|
|
146
|
+
(line.startsWith('@@') && !inHunk)) {
|
|
147
|
+
result.push({
|
|
148
|
+
content: line,
|
|
149
|
+
codeContent: line,
|
|
150
|
+
type: 'meta',
|
|
151
|
+
});
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
if (inHunk) {
|
|
155
|
+
if (line.startsWith('+')) {
|
|
156
|
+
result.push({
|
|
157
|
+
content: line,
|
|
158
|
+
codeContent: line.slice(1),
|
|
159
|
+
type: 'add',
|
|
160
|
+
newLineNum: newLineNum++,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
else if (line.startsWith('-')) {
|
|
164
|
+
result.push({
|
|
165
|
+
content: line,
|
|
166
|
+
codeContent: line.slice(1),
|
|
167
|
+
type: 'remove',
|
|
168
|
+
oldLineNum: oldLineNum++,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
else if (line.startsWith(' ') || line === '') {
|
|
172
|
+
result.push({
|
|
173
|
+
content: line,
|
|
174
|
+
codeContent: line.startsWith(' ') ? line.slice(1) : line,
|
|
175
|
+
type: 'context',
|
|
176
|
+
oldLineNum: oldLineNum++,
|
|
177
|
+
newLineNum: newLineNum++,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
result.push({
|
|
182
|
+
content: line,
|
|
183
|
+
codeContent: line,
|
|
184
|
+
type: 'context',
|
|
185
|
+
oldLineNum: oldLineNum++,
|
|
186
|
+
newLineNum: newLineNum++,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
result.push({
|
|
192
|
+
content: line,
|
|
193
|
+
codeContent: line,
|
|
194
|
+
type: 'meta',
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return { lines: result, filePath };
|
|
199
|
+
}
|
|
200
|
+
function FullHeightDiffView({ patch }) {
|
|
201
|
+
const { lines: diffLines, filePath } = parseDiff(patch);
|
|
202
|
+
const language = getLanguageFromPath(filePath);
|
|
203
|
+
const syntaxTheme = document?.documentElement.classList.contains('dark')
|
|
204
|
+
? vscDarkPlus
|
|
205
|
+
: prism;
|
|
206
|
+
return (_jsx("div", { className: "bg-card/60 border border-border rounded-lg overflow-hidden h-full", children: _jsx("div", { className: "overflow-x-auto overflow-y-auto h-full text-xs font-mono", children: diffLines.map((line, i) => {
|
|
207
|
+
const key = `line-${i}-${line.content.slice(0, 20)}`;
|
|
208
|
+
if (line.type === 'meta' || line.type === 'header') {
|
|
209
|
+
return (_jsx("div", { className: `px-3 py-0.5 whitespace-pre-wrap break-all ${line.type === 'header'
|
|
210
|
+
? 'text-muted-foreground/80 bg-muted/20'
|
|
211
|
+
: 'text-muted-foreground/80'}`, children: line.content }, key));
|
|
212
|
+
}
|
|
213
|
+
let lineClass = '';
|
|
214
|
+
let bgClass = '';
|
|
215
|
+
switch (line.type) {
|
|
216
|
+
case 'add':
|
|
217
|
+
lineClass = 'text-emerald-700 dark:text-emerald-300';
|
|
218
|
+
bgClass = 'bg-emerald-500/10';
|
|
219
|
+
break;
|
|
220
|
+
case 'remove':
|
|
221
|
+
lineClass = 'text-red-600 dark:text-red-300';
|
|
222
|
+
bgClass = 'bg-red-500/10';
|
|
223
|
+
break;
|
|
224
|
+
default:
|
|
225
|
+
lineClass = 'text-foreground/80';
|
|
226
|
+
}
|
|
227
|
+
let renderedContent = line.content;
|
|
228
|
+
if (line.codeContent.trim() && language !== 'text') {
|
|
229
|
+
renderedContent = (_jsx(SyntaxHighlighter, { language: language, style: syntaxTheme, customStyle: {
|
|
230
|
+
margin: 0,
|
|
231
|
+
padding: 0,
|
|
232
|
+
background: 'transparent',
|
|
233
|
+
display: 'inline',
|
|
234
|
+
fontSize: 'inherit',
|
|
235
|
+
lineHeight: 'inherit',
|
|
236
|
+
}, codeTagProps: {
|
|
237
|
+
style: {
|
|
238
|
+
fontFamily: 'inherit',
|
|
239
|
+
background: 'transparent',
|
|
240
|
+
},
|
|
241
|
+
}, PreTag: "span", children: line.codeContent }));
|
|
242
|
+
if (line.type === 'add') {
|
|
243
|
+
renderedContent = (_jsxs(_Fragment, { children: [_jsx("span", { className: "select-none", children: "+" }), renderedContent] }));
|
|
244
|
+
}
|
|
245
|
+
else if (line.type === 'remove') {
|
|
246
|
+
renderedContent = (_jsxs(_Fragment, { children: [_jsx("span", { className: "select-none", children: "-" }), renderedContent] }));
|
|
247
|
+
}
|
|
248
|
+
else if (line.type === 'context') {
|
|
249
|
+
renderedContent = (_jsxs(_Fragment, { children: [_jsx("span", { className: "select-none", children: " " }), renderedContent] }));
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return (_jsxs("div", { className: `flex ${bgClass}`, children: [_jsx("div", { className: "px-2 py-0.5 text-right text-muted-foreground/40 select-none w-12 flex-shrink-0", children: line.oldLineNum || '' }), _jsx("div", { className: "px-2 py-0.5 text-right text-muted-foreground/40 select-none w-12 flex-shrink-0 border-r border-border/50", children: line.newLineNum || '' }), _jsx("div", { className: `px-3 py-0.5 flex-1 min-w-0 whitespace-pre-wrap break-all ${lineClass}`, children: renderedContent })] }, key));
|
|
253
|
+
}) }) }));
|
|
254
|
+
}
|
|
255
|
+
function formatTimestamp(timestamp) {
|
|
256
|
+
const date = new Date(timestamp);
|
|
257
|
+
return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
|
|
258
|
+
}
|
|
259
|
+
export const SessionFilesDiffPanel = memo(function SessionFilesDiffPanel() {
|
|
260
|
+
const isDiffOpen = useSessionFilesStore((state) => state.isDiffOpen);
|
|
261
|
+
const selectedFile = useSessionFilesStore((state) => state.selectedFile);
|
|
262
|
+
const allOperations = useSessionFilesStore((state) => state.allOperations);
|
|
263
|
+
const selectedOperationIndex = useSessionFilesStore((state) => state.selectedOperationIndex);
|
|
264
|
+
const selectOperation = useSessionFilesStore((state) => state.selectOperation);
|
|
265
|
+
const closeDiff = useSessionFilesStore((state) => state.closeDiff);
|
|
266
|
+
const setCollapsed = useSidebarStore((state) => state.setCollapsed);
|
|
267
|
+
const wasCollapsedRef = useRef(null);
|
|
268
|
+
const prevDiffOpenRef = useRef(false);
|
|
269
|
+
const selectedOperation = allOperations[selectedOperationIndex];
|
|
270
|
+
const patchContent = useMemo(() => {
|
|
271
|
+
if (!selectedOperation || !selectedFile)
|
|
272
|
+
return null;
|
|
273
|
+
let rawPatch = null;
|
|
274
|
+
if (selectedOperation.artifact?.patch) {
|
|
275
|
+
rawPatch = selectedOperation.artifact.patch;
|
|
276
|
+
}
|
|
277
|
+
else if (selectedOperation.patch) {
|
|
278
|
+
rawPatch = selectedOperation.patch;
|
|
279
|
+
}
|
|
280
|
+
else if (selectedOperation.content) {
|
|
281
|
+
const contentLines = selectedOperation.content.split('\n');
|
|
282
|
+
rawPatch = `*** Add File: ${selectedFile}\n${contentLines.map((line) => `+${line}`).join('\n')}`;
|
|
283
|
+
}
|
|
284
|
+
if (!rawPatch)
|
|
285
|
+
return null;
|
|
286
|
+
const hasProperHunkHeader = /@@ -\d+(?:,\d+)? \+\d+(?:,\d+)? @@/.test(rawPatch);
|
|
287
|
+
if (!hasProperHunkHeader) {
|
|
288
|
+
return transformToUnifiedDiff(rawPatch);
|
|
289
|
+
}
|
|
290
|
+
return rawPatch;
|
|
291
|
+
}, [selectedOperation, selectedFile]);
|
|
292
|
+
useEffect(() => {
|
|
293
|
+
// Only act on transitions
|
|
294
|
+
if (isDiffOpen && !prevDiffOpenRef.current) {
|
|
295
|
+
// Diff just opened - save current state and collapse
|
|
296
|
+
const { isCollapsed } = useSidebarStore.getState();
|
|
297
|
+
wasCollapsedRef.current = isCollapsed;
|
|
298
|
+
setCollapsed(true);
|
|
299
|
+
}
|
|
300
|
+
else if (!isDiffOpen && prevDiffOpenRef.current) {
|
|
301
|
+
// Diff just closed - restore previous state
|
|
302
|
+
if (wasCollapsedRef.current !== null) {
|
|
303
|
+
setCollapsed(wasCollapsedRef.current);
|
|
304
|
+
wasCollapsedRef.current = null;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
prevDiffOpenRef.current = isDiffOpen;
|
|
308
|
+
}, [isDiffOpen, setCollapsed]);
|
|
309
|
+
useEffect(() => {
|
|
310
|
+
const handleKeyDown = (e) => {
|
|
311
|
+
const target = e.target;
|
|
312
|
+
const isInInput = target.tagName === 'INPUT' ||
|
|
313
|
+
target.tagName === 'TEXTAREA' ||
|
|
314
|
+
target.isContentEditable;
|
|
315
|
+
if ((e.key === 'Escape' || (e.key === 'q' && !isInInput)) && isDiffOpen) {
|
|
316
|
+
closeDiff();
|
|
317
|
+
}
|
|
318
|
+
if (!isInInput && isDiffOpen && allOperations.length > 1) {
|
|
319
|
+
if (e.key === 'ArrowLeft' || e.key === '[') {
|
|
320
|
+
e.preventDefault();
|
|
321
|
+
selectOperation(Math.max(0, selectedOperationIndex - 1));
|
|
322
|
+
}
|
|
323
|
+
else if (e.key === 'ArrowRight' || e.key === ']') {
|
|
324
|
+
e.preventDefault();
|
|
325
|
+
selectOperation(Math.min(allOperations.length - 1, selectedOperationIndex + 1));
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
document.addEventListener('keydown', handleKeyDown);
|
|
330
|
+
return () => document.removeEventListener('keydown', handleKeyDown);
|
|
331
|
+
}, [
|
|
332
|
+
isDiffOpen,
|
|
333
|
+
closeDiff,
|
|
334
|
+
allOperations.length,
|
|
335
|
+
selectedOperationIndex,
|
|
336
|
+
selectOperation,
|
|
337
|
+
]);
|
|
338
|
+
if (!isDiffOpen || !selectedFile || !selectedOperation)
|
|
339
|
+
return null;
|
|
340
|
+
const hasMultipleOps = allOperations.length > 1;
|
|
341
|
+
return (_jsxs("div", { className: "absolute inset-0 bg-background z-50 flex flex-col animate-in slide-in-from-left duration-300", children: [_jsxs("div", { className: "h-14 border-b border-border px-4 flex items-center gap-3 shrink-0", children: [_jsx(Button, { variant: "ghost", size: "icon", onClick: closeDiff, title: "Close diff viewer (ESC)", children: _jsx(X, { className: "w-4 h-4" }) }), _jsxs("div", { className: "flex-1 flex items-center gap-2 min-w-0", children: [_jsx("span", { className: "text-sm font-medium text-foreground font-mono truncate", title: selectedFile, children: selectedFile }), _jsx("span", { className: "text-xs px-2 py-0.5 rounded bg-primary/10 text-primary flex-shrink-0 capitalize", children: selectedOperation.operation }), selectedOperation.artifact?.summary && (_jsxs("div", { className: "flex items-center gap-1 text-xs flex-shrink-0", children: [_jsxs("span", { className: "text-green-500", children: ["+", selectedOperation.artifact.summary.additions] }), _jsxs("span", { className: "text-red-500", children: ["-", selectedOperation.artifact.summary.deletions] })] }))] }), hasMultipleOps && (_jsxs("div", { className: "flex items-center gap-2 shrink-0", children: [_jsx(Button, { variant: "ghost", size: "icon", onClick: () => selectOperation(Math.max(0, selectedOperationIndex - 1)), disabled: selectedOperationIndex === 0, title: "Previous operation (\u2190)", children: _jsx(ChevronLeft, { className: "w-4 h-4" }) }), _jsxs("span", { className: "text-xs text-muted-foreground min-w-[60px] text-center", children: [selectedOperationIndex + 1, " / ", allOperations.length] }), _jsx(Button, { variant: "ghost", size: "icon", onClick: () => selectOperation(Math.min(allOperations.length - 1, selectedOperationIndex + 1)), disabled: selectedOperationIndex === allOperations.length - 1, title: "Next operation (\u2192)", children: _jsx(ChevronRight, { className: "w-4 h-4" }) })] }))] }), hasMultipleOps && (_jsx("div", { className: "border-b border-border px-4 py-2 flex gap-2 overflow-x-auto shrink-0", children: allOperations.map((op, idx) => (_jsxs("button", { type: "button", onClick: () => selectOperation(idx), className: `px-3 py-1.5 text-xs rounded-md flex items-center gap-2 shrink-0 transition-colors ${idx === selectedOperationIndex
|
|
342
|
+
? 'bg-primary text-primary-foreground'
|
|
343
|
+
: 'bg-muted hover:bg-muted/80 text-muted-foreground'}`, children: [_jsx("span", { className: "capitalize", children: op.operation }), _jsx("span", { className: "opacity-70", children: formatTimestamp(op.timestamp) }), op.artifact?.summary && (_jsxs("span", { className: "opacity-70", children: ["+", op.artifact.summary.additions, "/-", op.artifact.summary.deletions] }))] }, op.toolCallId))) })), _jsx("div", { className: "flex-1 overflow-hidden p-4", children: patchContent ? (_jsx(FullHeightDiffView, { patch: patchContent })) : (_jsx("div", { className: "h-full flex items-center justify-center text-muted-foreground", children: "No diff content available" })) })] }));
|
|
344
|
+
});
|
|
345
|
+
//# sourceMappingURL=SessionFilesDiffPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionFilesDiffPanel.js","sourceRoot":"","sources":["../../../src/components/session-files/SessionFilesDiffPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionFilesSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/session-files/SessionFilesSidebar.tsx"],"names":[],"mappings":"AAcA,UAAU,wBAAwB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AA0GD,eAAO,MAAM,mBAAmB,gEA+E9B,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useMemo } from 'react';
|
|
3
|
+
import { ChevronRight, FilePen, FileCode, FilePlus, FileEdit, RefreshCw, } from 'lucide-react';
|
|
4
|
+
import { useSessionFilesStore } from '../../stores/sessionFilesStore';
|
|
5
|
+
import { useSessionFiles } from '../../hooks/useSessionFiles';
|
|
6
|
+
import { Button } from '../ui/Button';
|
|
7
|
+
function getOperationIcon(operation) {
|
|
8
|
+
switch (operation) {
|
|
9
|
+
case 'write':
|
|
10
|
+
return _jsx(FilePlus, { className: "w-3 h-3 text-green-500" });
|
|
11
|
+
case 'patch':
|
|
12
|
+
return _jsx(FileEdit, { className: "w-3 h-3 text-blue-500" });
|
|
13
|
+
case 'edit':
|
|
14
|
+
return _jsx(FileCode, { className: "w-3 h-3 text-yellow-500" });
|
|
15
|
+
default:
|
|
16
|
+
return _jsx(FilePen, { className: "w-3 h-3 text-muted-foreground" });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function getFileName(path) {
|
|
20
|
+
return path.split('/').pop() || path;
|
|
21
|
+
}
|
|
22
|
+
function countLinesFromPatch(op) {
|
|
23
|
+
if (op.artifact?.summary) {
|
|
24
|
+
return {
|
|
25
|
+
additions: op.artifact.summary.additions,
|
|
26
|
+
deletions: op.artifact.summary.deletions,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const patch = op.artifact?.patch || op.patch;
|
|
30
|
+
if (patch) {
|
|
31
|
+
let additions = 0;
|
|
32
|
+
let deletions = 0;
|
|
33
|
+
const lines = patch.split('\n');
|
|
34
|
+
for (const line of lines) {
|
|
35
|
+
if (line.startsWith('+') && !line.startsWith('+++')) {
|
|
36
|
+
additions++;
|
|
37
|
+
}
|
|
38
|
+
else if (line.startsWith('-') && !line.startsWith('---')) {
|
|
39
|
+
deletions++;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return { additions, deletions };
|
|
43
|
+
}
|
|
44
|
+
if (op.content) {
|
|
45
|
+
const lineCount = op.content.split('\n').length;
|
|
46
|
+
return { additions: lineCount, deletions: 0 };
|
|
47
|
+
}
|
|
48
|
+
return { additions: 0, deletions: 0 };
|
|
49
|
+
}
|
|
50
|
+
function SessionFileItem({ file }) {
|
|
51
|
+
const openDiff = useSessionFilesStore((state) => state.openDiff);
|
|
52
|
+
const selectedFile = useSessionFilesStore((state) => state.selectedFile);
|
|
53
|
+
const isSelected = selectedFile === file.path;
|
|
54
|
+
const lastOp = file.operations[file.operations.length - 1];
|
|
55
|
+
const { totalAdditions, totalDeletions } = useMemo(() => {
|
|
56
|
+
let additions = 0;
|
|
57
|
+
let deletions = 0;
|
|
58
|
+
for (const op of file.operations) {
|
|
59
|
+
const stats = countLinesFromPatch(op);
|
|
60
|
+
additions += stats.additions;
|
|
61
|
+
deletions += stats.deletions;
|
|
62
|
+
}
|
|
63
|
+
return { totalAdditions: additions, totalDeletions: deletions };
|
|
64
|
+
}, [file.operations]);
|
|
65
|
+
const handleClick = () => {
|
|
66
|
+
if (file.operations.length > 0) {
|
|
67
|
+
openDiff(file.path, file.operations);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
return (_jsx("button", { type: "button", onClick: handleClick, className: `w-full text-left px-3 py-2 hover:bg-muted/50 transition-colors ${isSelected ? 'bg-muted' : ''}`, children: _jsxs("div", { className: "flex items-center gap-2", children: [getOperationIcon(lastOp?.operation || 'write'), _jsx("div", { className: "flex-1 min-w-0", children: _jsx("div", { className: "text-sm font-medium truncate", children: getFileName(file.path) }) }), _jsxs("div", { className: "flex items-center gap-1 text-xs shrink-0", children: [file.operationCount > 1 && (_jsxs("span", { className: "bg-muted text-muted-foreground px-1 rounded mr-1", children: [file.operationCount, "x"] })), _jsxs("span", { className: "text-green-500", children: ["+", totalAdditions] }), _jsxs("span", { className: "text-red-500", children: ["-", totalDeletions] })] })] }) }));
|
|
71
|
+
}
|
|
72
|
+
export const SessionFilesSidebar = memo(function SessionFilesSidebar({ sessionId, }) {
|
|
73
|
+
const isExpanded = useSessionFilesStore((state) => state.isExpanded);
|
|
74
|
+
const collapseSidebar = useSessionFilesStore((state) => state.collapseSidebar);
|
|
75
|
+
const { data, isLoading, error, refetch } = useSessionFiles(sessionId);
|
|
76
|
+
if (!isExpanded)
|
|
77
|
+
return null;
|
|
78
|
+
return (_jsxs("div", { className: "w-80 border-l border-border bg-background flex flex-col h-full", children: [_jsxs("div", { className: "h-14 border-b border-border px-4 flex items-center justify-between shrink-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(FilePen, { className: "w-4 h-4 text-muted-foreground" }), _jsx("span", { className: "font-medium", children: "Session Files" }), data && data.totalFiles > 0 && (_jsxs("span", { className: "text-xs text-muted-foreground", children: ["(", data.totalFiles, ")"] }))] }), _jsx(Button, { variant: "ghost", size: "icon", onClick: collapseSidebar, children: _jsx(ChevronRight, { className: "w-4 h-4" }) })] }), _jsx("div", { className: "flex-1 overflow-y-auto", children: isLoading ? (_jsx("div", { className: "p-4 text-sm text-muted-foreground", children: "Loading session files..." })) : error ? (_jsx("div", { className: "p-4 text-sm text-orange-500", children: error instanceof Error ? error.message : 'Failed to load files' })) : !data || data.totalFiles === 0 ? (_jsx("div", { className: "p-4 text-sm text-muted-foreground", children: "No files modified in this session" })) : (_jsx("div", { className: "divide-y divide-border", children: data.files.map((file) => (_jsx(SessionFileItem, { file: file }, file.path))) })) }), _jsxs("div", { className: "h-12 px-4 border-t border-border text-xs text-muted-foreground flex items-center justify-between gap-2", children: [_jsxs("div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [_jsx(FilePen, { className: "w-3 h-3 flex-shrink-0" }), data && data.totalOperations > 0 ? (_jsxs("span", { className: "truncate", children: [data.totalFiles, " file", data.totalFiles !== 1 ? 's' : '', " \u2022", ' ', data.totalOperations, " op", data.totalOperations !== 1 ? 's' : ''] })) : (_jsx("span", { className: "truncate", children: "No changes" }))] }), _jsx("div", { className: "flex items-center gap-1 flex-shrink-0", children: _jsx(Button, { variant: "ghost", size: "icon", onClick: () => refetch(), title: "Refresh session files", className: "h-6 w-6 transition-transform duration-200 hover:scale-110", disabled: isLoading, children: _jsx(RefreshCw, { className: `w-3 h-3 ${isLoading ? 'animate-spin' : ''}` }) }) })] })] }));
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=SessionFilesSidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionFilesSidebar.js","sourceRoot":"","sources":["../../../src/components/session-files/SessionFilesSidebar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionFilesSidebarToggle.d.ts","sourceRoot":"","sources":["../../../src/components/session-files/SessionFilesSidebarToggle.tsx"],"names":[],"mappings":"AAKA,UAAU,8BAA8B;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,yBAAyB,sEA8BrC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { memo } from 'react';
|
|
3
|
+
import { FilePen } from 'lucide-react';
|
|
4
|
+
import { useSessionFilesStore } from '../../stores/sessionFilesStore';
|
|
5
|
+
import { useSessionFiles } from '../../hooks/useSessionFiles';
|
|
6
|
+
export const SessionFilesSidebarToggle = memo(function SessionFilesSidebarToggle({ sessionId, }) {
|
|
7
|
+
const isExpanded = useSessionFilesStore((state) => state.isExpanded);
|
|
8
|
+
const toggleSidebar = useSessionFilesStore((state) => state.toggleSidebar);
|
|
9
|
+
const { data } = useSessionFiles(sessionId);
|
|
10
|
+
const fileCount = data?.totalFiles ?? 0;
|
|
11
|
+
return (_jsxs("button", { type: "button", onClick: toggleSidebar, className: `relative p-3 w-full transition-colors touch-manipulation ${isExpanded
|
|
12
|
+
? 'bg-muted border-r-2 border-primary'
|
|
13
|
+
: 'hover:bg-muted/50'}`, title: "Session Files", children: [_jsx(FilePen, { className: "w-5 h-5 text-muted-foreground mx-auto" }), fileCount > 0 && (_jsx("span", { className: "absolute top-1 right-1 w-5 h-5 bg-primary text-primary-foreground text-xs rounded-full flex items-center justify-center font-semibold", children: fileCount > 9 ? '9+' : fileCount }))] }));
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=SessionFilesSidebarToggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionFilesSidebarToggle.js","sourceRoot":"","sources":["../../../src/components/session-files/SessionFilesSidebarToggle.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAM9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAC5C,SAAS,yBAAyB,CAAC,EAClC,SAAS,GACuB;IAChC,MAAM,UAAU,GAAG,oBAAoB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3E,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC;IAExC,OAAO,CACN,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,4DACV,UAAU;YACT,CAAC,CAAC,oCAAoC;YACtC,CAAC,CAAC,mBACJ,EAAE,EACF,KAAK,EAAC,eAAe,aAErB,KAAC,OAAO,IAAC,SAAS,EAAC,uCAAuC,GAAG,EAC5D,SAAS,GAAG,CAAC,IAAI,CACjB,eAAM,SAAS,EAAC,uIAAuI,YACrJ,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,GAC3B,CACP,IACO,CACT,CAAC;AACH,CAAC,CACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/session-files/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/session-files/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Session } from '../../types/api';
|
|
2
|
+
interface LeanHeaderProps {
|
|
3
|
+
session: Session;
|
|
4
|
+
isVisible: boolean;
|
|
5
|
+
isGenerating?: boolean;
|
|
6
|
+
onNavigateToSession?: (sessionId: string) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function LeanHeader({ session, isVisible, isGenerating, onNavigateToSession, }: LeanHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=LeanHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeanHeader.d.ts","sourceRoot":"","sources":["../../../src/components/sessions/LeanHeader.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAgB/C,UAAU,eAAe;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,UAAU,CAAC,EAC1B,OAAO,EACP,SAAS,EACT,YAAY,EACZ,mBAAmB,GACnB,EAAE,eAAe,2CAmJjB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { estimateModelCostUsd, getModelInfo, } from '@ottocode/sdk/browser';
|
|
4
|
+
import { DollarSign, MessageSquare, GitBranch, ArrowUpRight, Share2, ExternalLink, RefreshCw, } from 'lucide-react';
|
|
5
|
+
import { StopButton } from '../chat/StopButton';
|
|
6
|
+
import { useParentSession } from '../../hooks/useBranch';
|
|
7
|
+
import { useShareStatus } from '../../hooks/useShareStatus';
|
|
8
|
+
import { ProviderLogo } from '../common/ProviderLogo';
|
|
9
|
+
import { openUrl } from '../../lib/open-url';
|
|
10
|
+
export function LeanHeader({ session, isVisible, isGenerating, onNavigateToSession, }) {
|
|
11
|
+
const { data: parentData } = useParentSession(session.sessionType === 'branch' ? session.id : undefined);
|
|
12
|
+
const { data: shareStatus } = useShareStatus(session.id);
|
|
13
|
+
const estimatedCost = useMemo(() => {
|
|
14
|
+
const inputTokens = session.totalInputTokens || 0;
|
|
15
|
+
const outputTokens = session.totalOutputTokens || 0;
|
|
16
|
+
const cachedInputTokens = session.totalCachedTokens || 0;
|
|
17
|
+
const cacheCreationInputTokens = session.totalCacheCreationTokens || 0;
|
|
18
|
+
return (estimateModelCostUsd(session.provider, session.model, {
|
|
19
|
+
inputTokens,
|
|
20
|
+
outputTokens,
|
|
21
|
+
cachedInputTokens,
|
|
22
|
+
cacheCreationInputTokens,
|
|
23
|
+
}) ?? 0);
|
|
24
|
+
}, [
|
|
25
|
+
session.provider,
|
|
26
|
+
session.model,
|
|
27
|
+
session.totalInputTokens,
|
|
28
|
+
session.totalOutputTokens,
|
|
29
|
+
session.totalCachedTokens,
|
|
30
|
+
session.totalCacheCreationTokens,
|
|
31
|
+
]);
|
|
32
|
+
const formatCompactNumber = (num) => {
|
|
33
|
+
if (num >= 1000000)
|
|
34
|
+
return `${(num / 1000000).toFixed(1)}M`;
|
|
35
|
+
if (num >= 1000)
|
|
36
|
+
return `${(num / 1000).toFixed(1)}K`;
|
|
37
|
+
return num.toString();
|
|
38
|
+
};
|
|
39
|
+
const contextTokens = session.currentContextTokens || 0;
|
|
40
|
+
const isBranch = session.sessionType === 'branch';
|
|
41
|
+
const parentSession = parentData?.parent;
|
|
42
|
+
// Calculate context usage for color indication
|
|
43
|
+
const contextLimit = useMemo(() => {
|
|
44
|
+
const info = getModelInfo(session.provider, session.model);
|
|
45
|
+
return info?.limit?.context;
|
|
46
|
+
}, [session.provider, session.model]);
|
|
47
|
+
const contextUsagePercent = contextLimit
|
|
48
|
+
? (contextTokens / contextLimit) * 100
|
|
49
|
+
: 0;
|
|
50
|
+
const getContextColorClass = () => {
|
|
51
|
+
if (contextUsagePercent >= 90)
|
|
52
|
+
return 'text-red-600 dark:text-red-400';
|
|
53
|
+
if (contextUsagePercent >= 70)
|
|
54
|
+
return 'text-amber-600 dark:text-amber-400';
|
|
55
|
+
return 'text-foreground';
|
|
56
|
+
};
|
|
57
|
+
return (_jsx("div", { className: `absolute top-0 left-0 right-0 h-14 border-b border-border bg-background/95 backdrop-blur-sm z-10 transition-transform duration-200 ${isVisible ? 'translate-y-0' : '-translate-y-full'}`, children: _jsxs("div", { className: "h-full px-6 flex items-center justify-between gap-4 text-sm", children: [_jsxs("div", { className: "flex-1 min-w-0 flex items-center gap-2 text-muted-foreground", children: [isBranch ? (_jsx(GitBranch, { className: "w-4 h-4 flex-shrink-0 text-violet-500" })) : (_jsx(MessageSquare, { className: "w-4 h-4 flex-shrink-0" })), _jsx("span", { className: "text-foreground font-medium truncate", children: session.title || 'Untitled Session' }), shareStatus?.shared && (_jsxs("button", { type: "button", onClick: () => openUrl(shareStatus.url), className: "flex items-center gap-1 px-1.5 py-0.5 rounded bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 hover:bg-emerald-500/20 transition-colors text-xs font-medium flex-shrink-0", children: [_jsx(Share2, { className: "h-3 w-3" }), shareStatus.pendingMessages &&
|
|
58
|
+
shareStatus.pendingMessages > 0 ? (_jsxs("span", { className: "flex items-center gap-0.5 text-amber-600 dark:text-amber-400", children: [_jsx(RefreshCw, { className: "h-2.5 w-2.5" }), shareStatus.pendingMessages] })) : (_jsx(ExternalLink, { className: "h-2.5 w-2.5 opacity-60" }))] })), isBranch && parentSession && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-muted-foreground hidden sm:inline", children: "from" }), _jsxs("button", { type: "button", onClick: () => onNavigateToSession?.(parentSession.id), className: "text-primary hover:underline flex items-center gap-0.5 truncate max-w-32", title: parentSession.title ||
|
|
59
|
+
`Session ${parentSession.id.slice(0, 8)}`, children: [_jsx("span", { className: "truncate", children: parentSession.title ||
|
|
60
|
+
`Session ${parentSession.id.slice(0, 8)}` }), _jsx(ArrowUpRight, { className: "h-3 w-3 flex-shrink-0" })] })] }))] }), _jsxs("div", { className: "flex-shrink-0 flex items-center gap-5 text-muted-foreground", children: [isGenerating && _jsx(StopButton, { sessionId: session.id }), _jsx("div", { className: "flex items-center gap-3", children: _jsxs("div", { className: "flex items-center gap-1", title: `Current context window: ${contextTokens.toLocaleString()} tokens`, children: [_jsx("span", { className: "text-xs opacity-70", children: "ctx" }), _jsx("span", { className: `font-medium ${getContextColorClass()}`, children: formatCompactNumber(contextTokens) })] }) }), estimatedCost > 0 && (_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(DollarSign, { className: "w-4 h-4" }), _jsx("span", { className: "text-foreground font-medium", children: estimatedCost.toFixed(4) })] })), _jsxs("div", { className: "hidden sm:flex items-center gap-2", children: [_jsx(ProviderLogo, { provider: session.provider, size: 16 }), _jsx("span", { className: "font-medium text-foreground truncate max-w-40", children: session.model })] })] })] }) }));
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=LeanHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LeanHeader.js","sourceRoot":"","sources":["../../../src/components/sessions/LeanHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EACN,oBAAoB,EAEpB,YAAY,GACZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACN,UAAU,EACV,aAAa,EACb,SAAS,EACT,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,SAAS,GACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAS7C,MAAM,UAAU,UAAU,CAAC,EAC1B,OAAO,EACP,SAAS,EACT,YAAY,EACZ,mBAAmB,GACF;IACjB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,gBAAgB,CAC5C,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CACzD,CAAC;IACF,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEzD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QACpD,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QACzD,MAAM,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,IAAI,CAAC,CAAC;QACvE,OAAO,CACN,oBAAoB,CAAC,OAAO,CAAC,QAAsB,EAAE,OAAO,CAAC,KAAK,EAAE;YACnE,WAAW;YACX,YAAY;YACZ,iBAAiB;YACjB,wBAAwB;SACxB,CAAC,IAAI,CAAC,CACP,CAAC;IACH,CAAC,EAAE;QACF,OAAO,CAAC,QAAQ;QAChB,OAAO,CAAC,KAAK;QACb,OAAO,CAAC,gBAAgB;QACxB,OAAO,CAAC,iBAAiB;QACzB,OAAO,CAAC,iBAAiB;QACzB,OAAO,CAAC,wBAAwB;KAChC,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,EAAE;QAC3C,IAAI,GAAG,IAAI,OAAO;YAAE,OAAO,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5D,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QACtD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,oBAAoB,IAAI,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC;IAClD,MAAM,aAAa,GAAG,UAAU,EAAE,MAAM,CAAC;IAEzC,+CAA+C;IAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,QAAsB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACzE,OAAO,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;IAC7B,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAEtC,MAAM,mBAAmB,GAAG,YAAY;QACvC,CAAC,CAAC,CAAC,aAAa,GAAG,YAAY,CAAC,GAAG,GAAG;QACtC,CAAC,CAAC,CAAC,CAAC;IAEL,MAAM,oBAAoB,GAAG,GAAG,EAAE;QACjC,IAAI,mBAAmB,IAAI,EAAE;YAAE,OAAO,gCAAgC,CAAC;QACvE,IAAI,mBAAmB,IAAI,EAAE;YAAE,OAAO,oCAAoC,CAAC;QAC3E,OAAO,iBAAiB,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,CACN,cACC,SAAS,EAAE,sIACV,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAC/B,EAAE,YAEF,eAAK,SAAS,EAAC,6DAA6D,aAC3E,eAAK,SAAS,EAAC,8DAA8D,aAC3E,QAAQ,CAAC,CAAC,CAAC,CACX,KAAC,SAAS,IAAC,SAAS,EAAC,uCAAuC,GAAG,CAC/D,CAAC,CAAC,CAAC,CACH,KAAC,aAAa,IAAC,SAAS,EAAC,uBAAuB,GAAG,CACnD,EACD,eAAM,SAAS,EAAC,sCAAsC,YACpD,OAAO,CAAC,KAAK,IAAI,kBAAkB,GAC9B,EACN,WAAW,EAAE,MAAM,IAAI,CACvB,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,EACvC,SAAS,EAAC,oLAAoL,aAE9L,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,GAAG,EAC7B,WAAW,CAAC,eAAe;oCAC5B,WAAW,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CACjC,gBAAM,SAAS,EAAC,8DAA8D,aAC7E,KAAC,SAAS,IAAC,SAAS,EAAC,aAAa,GAAG,EACpC,WAAW,CAAC,eAAe,IACtB,CACP,CAAC,CAAC,CAAC,CACH,KAAC,YAAY,IAAC,SAAS,EAAC,wBAAwB,GAAG,CACnD,IACO,CACT,EACA,QAAQ,IAAI,aAAa,IAAI,CAC7B,8BACC,eAAM,SAAS,EAAC,wCAAwC,qBAEjD,EACP,kBACC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,EACtD,SAAS,EAAC,0EAA0E,EACpF,KAAK,EACJ,aAAa,CAAC,KAAK;wCACnB,WAAW,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAG1C,eAAM,SAAS,EAAC,UAAU,YACxB,aAAa,CAAC,KAAK;gDACnB,WAAW,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GACpC,EACP,KAAC,YAAY,IAAC,SAAS,EAAC,uBAAuB,GAAG,IAC1C,IACP,CACH,IACI,EAEN,eAAK,SAAS,EAAC,6DAA6D,aAC1E,YAAY,IAAI,KAAC,UAAU,IAAC,SAAS,EAAE,OAAO,CAAC,EAAE,GAAI,EAEtD,cAAK,SAAS,EAAC,yBAAyB,YACvC,eACC,SAAS,EAAC,yBAAyB,EACnC,KAAK,EAAE,2BAA2B,aAAa,CAAC,cAAc,EAAE,SAAS,aAEzE,eAAM,SAAS,EAAC,oBAAoB,oBAAW,EAC/C,eAAM,SAAS,EAAE,eAAe,oBAAoB,EAAE,EAAE,YACtD,mBAAmB,CAAC,aAAa,CAAC,GAC7B,IACF,GACD,EAEL,aAAa,GAAG,CAAC,IAAI,CACrB,eAAK,SAAS,EAAC,2BAA2B,aACzC,KAAC,UAAU,IAAC,SAAS,EAAC,SAAS,GAAG,EAClC,eAAM,SAAS,EAAC,6BAA6B,YAC3C,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GACnB,IACF,CACN,EAED,eAAK,SAAS,EAAC,mCAAmC,aACjD,KAAC,YAAY,IAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAI,EACtD,eAAM,SAAS,EAAC,+CAA+C,YAC7D,OAAO,CAAC,KAAK,GACR,IACF,IACD,IACD,GACD,CACN,CAAC;AACH,CAAC"}
|