@myrialabs/clopen 0.0.1
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/.env.example +6 -0
- package/.github/workflows/release.yml +60 -0
- package/.github/workflows/test.yml +40 -0
- package/CONTRIBUTING.md +499 -0
- package/LICENSE +21 -0
- package/README.md +209 -0
- package/backend/index.ts +156 -0
- package/backend/lib/chat/helpers.ts +42 -0
- package/backend/lib/chat/index.ts +2 -0
- package/backend/lib/chat/stream-manager.ts +1126 -0
- package/backend/lib/database/README.md +77 -0
- package/backend/lib/database/index.ts +119 -0
- package/backend/lib/database/migrations/001_create_projects_table.ts +31 -0
- package/backend/lib/database/migrations/002_create_chat_sessions_table.ts +33 -0
- package/backend/lib/database/migrations/003_create_messages_table.ts +32 -0
- package/backend/lib/database/migrations/004_create_prompt_templates_table.ts +34 -0
- package/backend/lib/database/migrations/005_create_settings_table.ts +24 -0
- package/backend/lib/database/migrations/006_add_user_to_messages.ts +58 -0
- package/backend/lib/database/migrations/007_create_stream_states_table.ts +41 -0
- package/backend/lib/database/migrations/008_create_message_snapshots_table.ts +62 -0
- package/backend/lib/database/migrations/009_add_delta_snapshot_fields.ts +41 -0
- package/backend/lib/database/migrations/010_add_soft_delete_and_branch_support.ts +70 -0
- package/backend/lib/database/migrations/011_git_like_commit_graph.ts +156 -0
- package/backend/lib/database/migrations/012_add_file_change_statistics.ts +41 -0
- package/backend/lib/database/migrations/013_checkpoint_tree_state.ts +118 -0
- package/backend/lib/database/migrations/014_add_engine_to_sessions.ts +18 -0
- package/backend/lib/database/migrations/015_add_model_to_sessions.ts +18 -0
- package/backend/lib/database/migrations/016_create_user_projects_table.ts +34 -0
- package/backend/lib/database/migrations/017_add_current_session_to_user_projects.ts +32 -0
- package/backend/lib/database/migrations/018_create_claude_accounts_table.ts +24 -0
- package/backend/lib/database/migrations/019_add_claude_account_to_sessions.ts +18 -0
- package/backend/lib/database/migrations/020_add_snapshot_tree_hash.ts +32 -0
- package/backend/lib/database/migrations/021_drop_prompt_templates_table.ts +33 -0
- package/backend/lib/database/migrations/index.ts +154 -0
- package/backend/lib/database/queries/checkpoint-queries.ts +87 -0
- package/backend/lib/database/queries/engine-queries.ts +75 -0
- package/backend/lib/database/queries/index.ts +9 -0
- package/backend/lib/database/queries/message-queries.ts +472 -0
- package/backend/lib/database/queries/project-queries.ts +117 -0
- package/backend/lib/database/queries/session-queries.ts +271 -0
- package/backend/lib/database/queries/settings-queries.ts +34 -0
- package/backend/lib/database/queries/snapshot-queries.ts +326 -0
- package/backend/lib/database/queries/utils-queries.ts +59 -0
- package/backend/lib/database/seeders/index.ts +13 -0
- package/backend/lib/database/seeders/settings_seeder.ts +84 -0
- package/backend/lib/database/utils/connection.ts +174 -0
- package/backend/lib/database/utils/index.ts +4 -0
- package/backend/lib/database/utils/migration-runner.ts +118 -0
- package/backend/lib/database/utils/seeder-runner.ts +121 -0
- package/backend/lib/engine/adapters/claude/environment.ts +164 -0
- package/backend/lib/engine/adapters/claude/error-handler.ts +60 -0
- package/backend/lib/engine/adapters/claude/index.ts +1 -0
- package/backend/lib/engine/adapters/claude/path-utils.ts +38 -0
- package/backend/lib/engine/adapters/claude/stream.ts +177 -0
- package/backend/lib/engine/adapters/opencode/index.ts +2 -0
- package/backend/lib/engine/adapters/opencode/message-converter.ts +862 -0
- package/backend/lib/engine/adapters/opencode/server.ts +104 -0
- package/backend/lib/engine/adapters/opencode/stream.ts +755 -0
- package/backend/lib/engine/index.ts +196 -0
- package/backend/lib/engine/types.ts +58 -0
- package/backend/lib/files/file-operations.ts +478 -0
- package/backend/lib/files/file-reading.ts +308 -0
- package/backend/lib/files/file-watcher.ts +383 -0
- package/backend/lib/files/path-browsing.ts +382 -0
- package/backend/lib/git/git-executor.ts +88 -0
- package/backend/lib/git/git-parser.ts +411 -0
- package/backend/lib/git/git-service.ts +505 -0
- package/backend/lib/mcp/README.md +1144 -0
- package/backend/lib/mcp/config.ts +316 -0
- package/backend/lib/mcp/index.ts +35 -0
- package/backend/lib/mcp/project-context.ts +236 -0
- package/backend/lib/mcp/servers/browser-automation/actions.ts +156 -0
- package/backend/lib/mcp/servers/browser-automation/browser.ts +419 -0
- package/backend/lib/mcp/servers/browser-automation/index.ts +791 -0
- package/backend/lib/mcp/servers/browser-automation/inspection.ts +501 -0
- package/backend/lib/mcp/servers/helper.ts +143 -0
- package/backend/lib/mcp/servers/index.ts +45 -0
- package/backend/lib/mcp/servers/weather/get-temperature.ts +56 -0
- package/backend/lib/mcp/servers/weather/index.ts +31 -0
- package/backend/lib/mcp/stdio-server.ts +103 -0
- package/backend/lib/mcp/types.ts +65 -0
- package/backend/lib/preview/browser/browser-audio-capture.ts +86 -0
- package/backend/lib/preview/browser/browser-console-manager.ts +263 -0
- package/backend/lib/preview/browser/browser-dialog-handler.ts +222 -0
- package/backend/lib/preview/browser/browser-interaction-handler.ts +421 -0
- package/backend/lib/preview/browser/browser-mcp-control.ts +415 -0
- package/backend/lib/preview/browser/browser-native-ui-handler.ts +512 -0
- package/backend/lib/preview/browser/browser-navigation-tracker.ts +104 -0
- package/backend/lib/preview/browser/browser-pool.ts +357 -0
- package/backend/lib/preview/browser/browser-preview-service.ts +882 -0
- package/backend/lib/preview/browser/browser-tab-manager.ts +935 -0
- package/backend/lib/preview/browser/browser-video-capture.ts +695 -0
- package/backend/lib/preview/browser/scripts/audio-stream.ts +292 -0
- package/backend/lib/preview/browser/scripts/cursor-tracking.ts +85 -0
- package/backend/lib/preview/browser/scripts/video-stream.ts +438 -0
- package/backend/lib/preview/browser/types.ts +359 -0
- package/backend/lib/preview/index.ts +24 -0
- package/backend/lib/project/index.ts +2 -0
- package/backend/lib/project/status-manager.ts +182 -0
- package/backend/lib/shared/index.ts +2 -0
- package/backend/lib/shared/port-utils.ts +25 -0
- package/backend/lib/shared/process-manager.ts +281 -0
- package/backend/lib/snapshot/blob-store.ts +227 -0
- package/backend/lib/snapshot/gitignore.ts +307 -0
- package/backend/lib/snapshot/helpers.ts +397 -0
- package/backend/lib/snapshot/snapshot-service.ts +483 -0
- package/backend/lib/terminal/helpers.ts +14 -0
- package/backend/lib/terminal/index.ts +8 -0
- package/backend/lib/terminal/pty-manager.ts +4 -0
- package/backend/lib/terminal/pty-session-manager.ts +387 -0
- package/backend/lib/terminal/shell-utils.ts +313 -0
- package/backend/lib/terminal/stream-manager.ts +293 -0
- package/backend/lib/tunnel/global-tunnel-manager.ts +243 -0
- package/backend/lib/tunnel/project-tunnel-manager.ts +311 -0
- package/backend/lib/user/helpers.ts +87 -0
- package/backend/lib/utils/ws.ts +944 -0
- package/backend/lib/vite-dev.ts +353 -0
- package/backend/middleware/cors.ts +15 -0
- package/backend/middleware/error-handler.ts +49 -0
- package/backend/middleware/logger.ts +9 -0
- package/backend/types/api.ts +24 -0
- package/backend/ws/README.md +1505 -0
- package/backend/ws/chat/background.ts +198 -0
- package/backend/ws/chat/index.ts +21 -0
- package/backend/ws/chat/stream.ts +707 -0
- package/backend/ws/engine/claude/accounts.ts +401 -0
- package/backend/ws/engine/claude/index.ts +13 -0
- package/backend/ws/engine/claude/status.ts +43 -0
- package/backend/ws/engine/index.ts +14 -0
- package/backend/ws/engine/opencode/index.ts +11 -0
- package/backend/ws/engine/opencode/status.ts +30 -0
- package/backend/ws/engine/utils.ts +36 -0
- package/backend/ws/files/index.ts +30 -0
- package/backend/ws/files/read.ts +189 -0
- package/backend/ws/files/search.ts +453 -0
- package/backend/ws/files/watch.ts +124 -0
- package/backend/ws/files/write.ts +143 -0
- package/backend/ws/git/branch.ts +106 -0
- package/backend/ws/git/commit.ts +39 -0
- package/backend/ws/git/conflict.ts +68 -0
- package/backend/ws/git/diff.ts +69 -0
- package/backend/ws/git/index.ts +24 -0
- package/backend/ws/git/log.ts +41 -0
- package/backend/ws/git/remote.ts +214 -0
- package/backend/ws/git/staging.ts +84 -0
- package/backend/ws/git/status.ts +90 -0
- package/backend/ws/index.ts +69 -0
- package/backend/ws/mcp/index.ts +61 -0
- package/backend/ws/messages/crud.ts +74 -0
- package/backend/ws/messages/index.ts +14 -0
- package/backend/ws/preview/browser/cleanup.ts +129 -0
- package/backend/ws/preview/browser/console.ts +114 -0
- package/backend/ws/preview/browser/interact.ts +513 -0
- package/backend/ws/preview/browser/mcp.ts +129 -0
- package/backend/ws/preview/browser/native-ui.ts +235 -0
- package/backend/ws/preview/browser/stats.ts +55 -0
- package/backend/ws/preview/browser/tab-info.ts +126 -0
- package/backend/ws/preview/browser/tab.ts +166 -0
- package/backend/ws/preview/browser/webcodecs.ts +293 -0
- package/backend/ws/preview/index.ts +146 -0
- package/backend/ws/projects/crud.ts +113 -0
- package/backend/ws/projects/index.ts +25 -0
- package/backend/ws/projects/presence.ts +46 -0
- package/backend/ws/projects/status.ts +116 -0
- package/backend/ws/sessions/crud.ts +327 -0
- package/backend/ws/sessions/index.ts +33 -0
- package/backend/ws/settings/crud.ts +112 -0
- package/backend/ws/settings/index.ts +14 -0
- package/backend/ws/snapshot/index.ts +17 -0
- package/backend/ws/snapshot/restore.ts +173 -0
- package/backend/ws/snapshot/timeline.ts +141 -0
- package/backend/ws/system/index.ts +14 -0
- package/backend/ws/system/operations.ts +49 -0
- package/backend/ws/terminal/index.ts +40 -0
- package/backend/ws/terminal/persistence.ts +153 -0
- package/backend/ws/terminal/session.ts +382 -0
- package/backend/ws/terminal/stream.ts +79 -0
- package/backend/ws/tunnel/index.ts +14 -0
- package/backend/ws/tunnel/operations.ts +91 -0
- package/backend/ws/types.ts +20 -0
- package/backend/ws/user/crud.ts +156 -0
- package/backend/ws/user/index.ts +14 -0
- package/bin/clopen.ts +307 -0
- package/bun.lock +1352 -0
- package/frontend/App.svelte +34 -0
- package/frontend/app.css +313 -0
- package/frontend/lib/app-environment.ts +10 -0
- package/frontend/lib/components/chat/ChatInterface.svelte +407 -0
- package/frontend/lib/components/chat/formatters/ErrorMessage.svelte +57 -0
- package/frontend/lib/components/chat/formatters/MessageFormatter.svelte +224 -0
- package/frontend/lib/components/chat/formatters/TextMessage.svelte +395 -0
- package/frontend/lib/components/chat/formatters/Tools.svelte +70 -0
- package/frontend/lib/components/chat/formatters/index.ts +3 -0
- package/frontend/lib/components/chat/input/ChatInput.svelte +421 -0
- package/frontend/lib/components/chat/input/components/ChatInputActions.svelte +78 -0
- package/frontend/lib/components/chat/input/components/DragDropOverlay.svelte +30 -0
- package/frontend/lib/components/chat/input/components/EditModeIndicator.svelte +33 -0
- package/frontend/lib/components/chat/input/components/EngineModelPicker.svelte +619 -0
- package/frontend/lib/components/chat/input/components/FileAttachmentPreview.svelte +48 -0
- package/frontend/lib/components/chat/input/components/LoadingIndicator.svelte +31 -0
- package/frontend/lib/components/chat/input/composables/use-animations.svelte.ts +201 -0
- package/frontend/lib/components/chat/input/composables/use-chat-actions.svelte.ts +148 -0
- package/frontend/lib/components/chat/input/composables/use-file-handling.svelte.ts +216 -0
- package/frontend/lib/components/chat/input/composables/use-input-state.svelte.ts +357 -0
- package/frontend/lib/components/chat/input/composables/use-textarea-resize.svelte.ts +57 -0
- package/frontend/lib/components/chat/message/ChatMessage.svelte +478 -0
- package/frontend/lib/components/chat/message/ChatMessages.svelte +541 -0
- package/frontend/lib/components/chat/message/DateSeparator.svelte +86 -0
- package/frontend/lib/components/chat/message/MessageBubble.svelte +86 -0
- package/frontend/lib/components/chat/message/MessageHeader.svelte +157 -0
- package/frontend/lib/components/chat/modal/DebugModal.svelte +59 -0
- package/frontend/lib/components/chat/modal/TokenUsageModal.svelte +124 -0
- package/frontend/lib/components/chat/shared/index.ts +2 -0
- package/frontend/lib/components/chat/shared/utils.ts +116 -0
- package/frontend/lib/components/chat/tools/BashOutputTool.svelte +35 -0
- package/frontend/lib/components/chat/tools/BashTool.svelte +46 -0
- package/frontend/lib/components/chat/tools/CustomMcpTool.svelte +139 -0
- package/frontend/lib/components/chat/tools/EditTool.svelte +48 -0
- package/frontend/lib/components/chat/tools/ExitPlanModeTool.svelte +32 -0
- package/frontend/lib/components/chat/tools/GlobTool.svelte +51 -0
- package/frontend/lib/components/chat/tools/GrepTool.svelte +90 -0
- package/frontend/lib/components/chat/tools/KillShellTool.svelte +26 -0
- package/frontend/lib/components/chat/tools/ListMcpResourcesTool.svelte +31 -0
- package/frontend/lib/components/chat/tools/NotebookEditTool.svelte +38 -0
- package/frontend/lib/components/chat/tools/ReadMcpResourceTool.svelte +34 -0
- package/frontend/lib/components/chat/tools/ReadTool.svelte +41 -0
- package/frontend/lib/components/chat/tools/TaskTool.svelte +64 -0
- package/frontend/lib/components/chat/tools/TodoWriteTool.svelte +75 -0
- package/frontend/lib/components/chat/tools/WebFetchTool.svelte +35 -0
- package/frontend/lib/components/chat/tools/WebSearchTool.svelte +84 -0
- package/frontend/lib/components/chat/tools/WriteTool.svelte +33 -0
- package/frontend/lib/components/chat/tools/components/CodeBlock.svelte +79 -0
- package/frontend/lib/components/chat/tools/components/DiffBlock.svelte +408 -0
- package/frontend/lib/components/chat/tools/components/FileHeader.svelte +45 -0
- package/frontend/lib/components/chat/tools/components/InfoLine.svelte +19 -0
- package/frontend/lib/components/chat/tools/components/StatsBadges.svelte +27 -0
- package/frontend/lib/components/chat/tools/components/TerminalCommand.svelte +54 -0
- package/frontend/lib/components/chat/tools/components/index.ts +7 -0
- package/frontend/lib/components/chat/tools/index.ts +26 -0
- package/frontend/lib/components/chat/widgets/FloatingTodoList.svelte +249 -0
- package/frontend/lib/components/chat/widgets/TokenUsage.svelte +78 -0
- package/frontend/lib/components/checkpoint/TimelineModal.svelte +391 -0
- package/frontend/lib/components/checkpoint/timeline/TimelineEdge.svelte +26 -0
- package/frontend/lib/components/checkpoint/timeline/TimelineGraph.svelte +87 -0
- package/frontend/lib/components/checkpoint/timeline/TimelineNode.svelte +108 -0
- package/frontend/lib/components/checkpoint/timeline/TimelineVersionGroup.svelte +59 -0
- package/frontend/lib/components/checkpoint/timeline/animation.ts +168 -0
- package/frontend/lib/components/checkpoint/timeline/config.ts +44 -0
- package/frontend/lib/components/checkpoint/timeline/graph-builder.ts +304 -0
- package/frontend/lib/components/checkpoint/timeline/types.ts +65 -0
- package/frontend/lib/components/checkpoint/timeline/utils.ts +53 -0
- package/frontend/lib/components/common/Alert.svelte +139 -0
- package/frontend/lib/components/common/AvatarBubble.svelte +56 -0
- package/frontend/lib/components/common/Button.svelte +71 -0
- package/frontend/lib/components/common/Card.svelte +102 -0
- package/frontend/lib/components/common/Checkbox.svelte +48 -0
- package/frontend/lib/components/common/Dialog.svelte +249 -0
- package/frontend/lib/components/common/FolderBrowser.svelte +843 -0
- package/frontend/lib/components/common/Icon.svelte +58 -0
- package/frontend/lib/components/common/Input.svelte +72 -0
- package/frontend/lib/components/common/Lightbox.svelte +233 -0
- package/frontend/lib/components/common/LoadingScreen.svelte +52 -0
- package/frontend/lib/components/common/LoadingSpinner.svelte +48 -0
- package/frontend/lib/components/common/Modal.svelte +177 -0
- package/frontend/lib/components/common/ModalProvider.svelte +28 -0
- package/frontend/lib/components/common/ModelSelector.svelte +110 -0
- package/frontend/lib/components/common/MonacoEditor.svelte +569 -0
- package/frontend/lib/components/common/NotificationToast.svelte +113 -0
- package/frontend/lib/components/common/PageTemplate.svelte +76 -0
- package/frontend/lib/components/common/ProjectUserAvatars.svelte +79 -0
- package/frontend/lib/components/common/Select.svelte +98 -0
- package/frontend/lib/components/common/Textarea.svelte +80 -0
- package/frontend/lib/components/common/ThemeToggle.svelte +44 -0
- package/frontend/lib/components/common/lucide-icons.ts +1642 -0
- package/frontend/lib/components/common/material-icons.ts +1082 -0
- package/frontend/lib/components/common/xterm/XTerm.svelte +796 -0
- package/frontend/lib/components/common/xterm/index.ts +16 -0
- package/frontend/lib/components/common/xterm/terminal-config.ts +68 -0
- package/frontend/lib/components/common/xterm/types.ts +31 -0
- package/frontend/lib/components/common/xterm/xterm-service.ts +353 -0
- package/frontend/lib/components/files/FileNode.svelte +384 -0
- package/frontend/lib/components/files/FileTree.svelte +681 -0
- package/frontend/lib/components/files/FileViewer.svelte +728 -0
- package/frontend/lib/components/files/SearchResults.svelte +303 -0
- package/frontend/lib/components/git/BranchManager.svelte +458 -0
- package/frontend/lib/components/git/ChangesSection.svelte +107 -0
- package/frontend/lib/components/git/CommitForm.svelte +76 -0
- package/frontend/lib/components/git/ConflictResolver.svelte +158 -0
- package/frontend/lib/components/git/DiffViewer.svelte +364 -0
- package/frontend/lib/components/git/FileChangeItem.svelte +97 -0
- package/frontend/lib/components/git/GitButton.svelte +33 -0
- package/frontend/lib/components/git/GitLog.svelte +361 -0
- package/frontend/lib/components/git/GitModal.svelte +80 -0
- package/frontend/lib/components/history/HistoryModal.svelte +563 -0
- package/frontend/lib/components/history/HistoryView.svelte +615 -0
- package/frontend/lib/components/index.ts +34 -0
- package/frontend/lib/components/preview/browser/BrowserPreview.svelte +549 -0
- package/frontend/lib/components/preview/browser/components/Canvas.svelte +1058 -0
- package/frontend/lib/components/preview/browser/components/ConsolePanel.svelte +757 -0
- package/frontend/lib/components/preview/browser/components/Container.svelte +450 -0
- package/frontend/lib/components/preview/browser/components/ContextMenu.svelte +236 -0
- package/frontend/lib/components/preview/browser/components/SelectDropdown.svelte +224 -0
- package/frontend/lib/components/preview/browser/components/Toolbar.svelte +339 -0
- package/frontend/lib/components/preview/browser/components/VirtualCursor.svelte +36 -0
- package/frontend/lib/components/preview/browser/core/cleanup.svelte.ts +155 -0
- package/frontend/lib/components/preview/browser/core/coordinator.svelte.ts +837 -0
- package/frontend/lib/components/preview/browser/core/interactions.svelte.ts +113 -0
- package/frontend/lib/components/preview/browser/core/mcp-handlers.svelte.ts +296 -0
- package/frontend/lib/components/preview/browser/core/native-ui-handlers.svelte.ts +391 -0
- package/frontend/lib/components/preview/browser/core/stream-handler.svelte.ts +231 -0
- package/frontend/lib/components/preview/browser/core/tab-manager.svelte.ts +210 -0
- package/frontend/lib/components/preview/browser/core/tab-operations.svelte.ts +239 -0
- package/frontend/lib/components/preview/index.ts +2 -0
- package/frontend/lib/components/settings/SettingsModal.svelte +235 -0
- package/frontend/lib/components/settings/SettingsView.svelte +36 -0
- package/frontend/lib/components/settings/appearance/AppearanceSettings.svelte +51 -0
- package/frontend/lib/components/settings/appearance/LayoutPresetSettings.svelte +160 -0
- package/frontend/lib/components/settings/appearance/LayoutPreview.svelte +76 -0
- package/frontend/lib/components/settings/engines/AIEnginesSettings.svelte +917 -0
- package/frontend/lib/components/settings/general/AdvancedSettings.svelte +187 -0
- package/frontend/lib/components/settings/general/DataManagementSettings.svelte +203 -0
- package/frontend/lib/components/settings/general/GeneralSettings.svelte +10 -0
- package/frontend/lib/components/settings/model/ModelSettings.svelte +357 -0
- package/frontend/lib/components/settings/notifications/NotificationSettings.svelte +205 -0
- package/frontend/lib/components/settings/user/UserSettings.svelte +197 -0
- package/frontend/lib/components/terminal/Terminal.svelte +368 -0
- package/frontend/lib/components/terminal/TerminalTabs.svelte +87 -0
- package/frontend/lib/components/terminal/TerminalView.svelte +55 -0
- package/frontend/lib/components/tunnel/TunnelActive.svelte +142 -0
- package/frontend/lib/components/tunnel/TunnelButton.svelte +54 -0
- package/frontend/lib/components/tunnel/TunnelInactive.svelte +284 -0
- package/frontend/lib/components/tunnel/TunnelModal.svelte +47 -0
- package/frontend/lib/components/tunnel/TunnelQRCode.svelte +49 -0
- package/frontend/lib/components/workspace/DesktopNavigator.svelte +382 -0
- package/frontend/lib/components/workspace/MobileNavigator.svelte +403 -0
- package/frontend/lib/components/workspace/PanelContainer.svelte +100 -0
- package/frontend/lib/components/workspace/PanelHeader.svelte +505 -0
- package/frontend/lib/components/workspace/ViewMenu.svelte +162 -0
- package/frontend/lib/components/workspace/WorkspaceLayout.svelte +169 -0
- package/frontend/lib/components/workspace/layout/DesktopLayout.svelte +15 -0
- package/frontend/lib/components/workspace/layout/MobileLayout.svelte +17 -0
- package/frontend/lib/components/workspace/layout/split-pane/Container.svelte +42 -0
- package/frontend/lib/components/workspace/layout/split-pane/Handle.svelte +85 -0
- package/frontend/lib/components/workspace/layout/split-pane/Layout.svelte +37 -0
- package/frontend/lib/components/workspace/panels/ChatPanel.svelte +274 -0
- package/frontend/lib/components/workspace/panels/FilesPanel.svelte +1261 -0
- package/frontend/lib/components/workspace/panels/GitPanel.svelte +1560 -0
- package/frontend/lib/components/workspace/panels/PreviewPanel.svelte +150 -0
- package/frontend/lib/components/workspace/panels/TerminalPanel.svelte +73 -0
- package/frontend/lib/constants/preview.ts +45 -0
- package/frontend/lib/services/chat/chat.service.ts +704 -0
- package/frontend/lib/services/chat/index.ts +7 -0
- package/frontend/lib/services/notification/global-stream-monitor.ts +86 -0
- package/frontend/lib/services/notification/index.ts +8 -0
- package/frontend/lib/services/notification/push.service.ts +144 -0
- package/frontend/lib/services/notification/sound.service.ts +127 -0
- package/frontend/lib/services/preview/browser/browser-console.service.ts +61 -0
- package/frontend/lib/services/preview/browser/browser-webcodecs.service.ts +1499 -0
- package/frontend/lib/services/preview/browser/mcp-integration.svelte.ts +67 -0
- package/frontend/lib/services/preview/index.ts +23 -0
- package/frontend/lib/services/project/index.ts +8 -0
- package/frontend/lib/services/project/status.service.ts +159 -0
- package/frontend/lib/services/snapshot/snapshot.service.ts +47 -0
- package/frontend/lib/services/terminal/background/index.ts +130 -0
- package/frontend/lib/services/terminal/background/session-restore.ts +274 -0
- package/frontend/lib/services/terminal/background/stream-manager.ts +286 -0
- package/frontend/lib/services/terminal/index.ts +14 -0
- package/frontend/lib/services/terminal/persistence.service.ts +260 -0
- package/frontend/lib/services/terminal/project.service.ts +953 -0
- package/frontend/lib/services/terminal/session.service.ts +364 -0
- package/frontend/lib/services/terminal/terminal.service.ts +369 -0
- package/frontend/lib/stores/core/app.svelte.ts +117 -0
- package/frontend/lib/stores/core/files.svelte.ts +73 -0
- package/frontend/lib/stores/core/presence.svelte.ts +48 -0
- package/frontend/lib/stores/core/projects.svelte.ts +317 -0
- package/frontend/lib/stores/core/sessions.svelte.ts +383 -0
- package/frontend/lib/stores/features/claude-accounts.svelte.ts +58 -0
- package/frontend/lib/stores/features/models.svelte.ts +89 -0
- package/frontend/lib/stores/features/settings.svelte.ts +87 -0
- package/frontend/lib/stores/features/terminal.svelte.ts +701 -0
- package/frontend/lib/stores/features/tunnel.svelte.ts +161 -0
- package/frontend/lib/stores/features/user.svelte.ts +96 -0
- package/frontend/lib/stores/ui/chat-input.svelte.ts +57 -0
- package/frontend/lib/stores/ui/chat-model.svelte.ts +61 -0
- package/frontend/lib/stores/ui/dialog.svelte.ts +59 -0
- package/frontend/lib/stores/ui/edit-mode.svelte.ts +214 -0
- package/frontend/lib/stores/ui/notification.svelte.ts +166 -0
- package/frontend/lib/stores/ui/settings-modal.svelte.ts +88 -0
- package/frontend/lib/stores/ui/theme.svelte.ts +179 -0
- package/frontend/lib/stores/ui/workspace.svelte.ts +754 -0
- package/frontend/lib/types/native-ui.ts +73 -0
- package/frontend/lib/utils/chat/date-separator.ts +39 -0
- package/frontend/lib/utils/chat/message-grouper.ts +219 -0
- package/frontend/lib/utils/chat/message-processor.ts +135 -0
- package/frontend/lib/utils/chat/tool-handler.ts +161 -0
- package/frontend/lib/utils/chat/virtual-scroll.svelte.ts +142 -0
- package/frontend/lib/utils/click-outside.ts +20 -0
- package/frontend/lib/utils/context-manager.ts +257 -0
- package/frontend/lib/utils/file-icon-mappings.ts +769 -0
- package/frontend/lib/utils/folder-icon-mappings.ts +1030 -0
- package/frontend/lib/utils/git-status.ts +68 -0
- package/frontend/lib/utils/platform.ts +113 -0
- package/frontend/lib/utils/port-check.ts +65 -0
- package/frontend/lib/utils/terminalFormatter.ts +207 -0
- package/frontend/lib/utils/theme.ts +6 -0
- package/frontend/lib/utils/tree-visualizer.ts +320 -0
- package/frontend/lib/utils/ws.ts +44 -0
- package/frontend/main.ts +13 -0
- package/index.html +70 -0
- package/package.json +111 -0
- package/scripts/generate-icons.ts +87 -0
- package/scripts/pre-publish-check.sh +142 -0
- package/scripts/setup-hooks.sh +134 -0
- package/scripts/validate-branch-name.sh +47 -0
- package/scripts/validate-commit-msg.sh +42 -0
- package/shared/constants/engines.ts +134 -0
- package/shared/types/database/connection.ts +16 -0
- package/shared/types/database/index.ts +6 -0
- package/shared/types/database/schema.ts +141 -0
- package/shared/types/engine/index.ts +45 -0
- package/shared/types/filesystem/index.ts +22 -0
- package/shared/types/git.ts +171 -0
- package/shared/types/messaging/index.ts +239 -0
- package/shared/types/messaging/tool.ts +526 -0
- package/shared/types/network/api.ts +18 -0
- package/shared/types/network/index.ts +5 -0
- package/shared/types/stores/app.ts +23 -0
- package/shared/types/stores/dialog.ts +21 -0
- package/shared/types/stores/index.ts +3 -0
- package/shared/types/stores/settings.ts +15 -0
- package/shared/types/terminal/index.ts +44 -0
- package/shared/types/ui/components.ts +61 -0
- package/shared/types/ui/icons.ts +23 -0
- package/shared/types/ui/index.ts +22 -0
- package/shared/types/ui/notifications.ts +14 -0
- package/shared/types/ui/theme.ts +12 -0
- package/shared/types/websocket/index.ts +43 -0
- package/shared/types/window.d.ts +13 -0
- package/shared/utils/anonymous-user.ts +168 -0
- package/shared/utils/async.ts +10 -0
- package/shared/utils/diff-calculator.ts +184 -0
- package/shared/utils/file-type-detection.ts +166 -0
- package/shared/utils/logger.ts +158 -0
- package/shared/utils/message-formatter.ts +79 -0
- package/shared/utils/path.ts +47 -0
- package/shared/utils/ws-client.ts +768 -0
- package/shared/utils/ws-server.ts +660 -0
- package/static/audio/notification.ogg +0 -0
- package/static/favicon.svg +8 -0
- package/static/fonts/dm-sans/dm-sans-italic-latin-ext.woff2 +0 -0
- package/static/fonts/dm-sans/dm-sans-italic-latin.woff2 +0 -0
- package/static/fonts/dm-sans/dm-sans-normal-latin-ext.woff2 +0 -0
- package/static/fonts/dm-sans/dm-sans-normal-latin.woff2 +0 -0
- package/static/fonts/dm-sans.css +96 -0
- package/svelte.config.js +20 -0
- package/vite.config.ts +33 -0
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Input Types
|
|
3
|
+
*
|
|
4
|
+
* Defines all tool input interfaces for UI components
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Import tool input types statically
|
|
8
|
+
import type {
|
|
9
|
+
BashInput,
|
|
10
|
+
TaskOutputInput,
|
|
11
|
+
FileEditInput,
|
|
12
|
+
ExitPlanModeInput,
|
|
13
|
+
GlobInput,
|
|
14
|
+
GrepInput,
|
|
15
|
+
KillShellInput,
|
|
16
|
+
ListMcpResourcesInput,
|
|
17
|
+
NotebookEditInput,
|
|
18
|
+
ReadMcpResourceInput,
|
|
19
|
+
FileReadInput,
|
|
20
|
+
AgentInput,
|
|
21
|
+
TodoWriteInput,
|
|
22
|
+
WebFetchInput,
|
|
23
|
+
WebSearchInput,
|
|
24
|
+
FileWriteInput
|
|
25
|
+
} from '@anthropic-ai/claude-agent-sdk/sdk-tools';
|
|
26
|
+
|
|
27
|
+
// Tool output types based on Claude Code SDK
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Output from Task tool execution
|
|
31
|
+
*/
|
|
32
|
+
export interface TaskOutput {
|
|
33
|
+
/** Final result message from the subagent */
|
|
34
|
+
result: string;
|
|
35
|
+
/** Token usage statistics */
|
|
36
|
+
usage?: {
|
|
37
|
+
/** Number of input tokens consumed */
|
|
38
|
+
input_tokens: number;
|
|
39
|
+
/** Number of output tokens generated */
|
|
40
|
+
output_tokens: number;
|
|
41
|
+
/** Number of cache creation input tokens */
|
|
42
|
+
cache_creation_input_tokens?: number;
|
|
43
|
+
/** Number of cache read input tokens */
|
|
44
|
+
cache_read_input_tokens?: number;
|
|
45
|
+
};
|
|
46
|
+
/** Total cost in USD for this task execution */
|
|
47
|
+
total_cost_usd?: number;
|
|
48
|
+
/** Execution duration in milliseconds */
|
|
49
|
+
duration_ms?: number;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Output from Bash tool execution
|
|
54
|
+
*/
|
|
55
|
+
export interface BashOutput {
|
|
56
|
+
/** Combined stdout and stderr output */
|
|
57
|
+
output: string;
|
|
58
|
+
/** Exit code of the command */
|
|
59
|
+
exitCode: number;
|
|
60
|
+
/** Whether the command was killed due to timeout */
|
|
61
|
+
killed?: boolean;
|
|
62
|
+
/** Shell ID for background processes */
|
|
63
|
+
shellId?: string;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Output from BashOutput tool for monitoring background processes
|
|
68
|
+
*/
|
|
69
|
+
export interface BashOutputToolOutput {
|
|
70
|
+
/** Output from the background process */
|
|
71
|
+
output: string;
|
|
72
|
+
/** Current status of the background process */
|
|
73
|
+
status: 'running' | 'completed' | 'failed';
|
|
74
|
+
/** Exit code if the process has completed */
|
|
75
|
+
exitCode?: number;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Output from Edit tool for file modifications
|
|
80
|
+
*/
|
|
81
|
+
export interface EditOutput {
|
|
82
|
+
/** Confirmation message about the edit operation */
|
|
83
|
+
message: string;
|
|
84
|
+
/** Number of replacements made */
|
|
85
|
+
replacements: number;
|
|
86
|
+
/** Path to the edited file */
|
|
87
|
+
file_path: string;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Output when reading a text file
|
|
92
|
+
*/
|
|
93
|
+
export interface TextFileOutput {
|
|
94
|
+
/** Text content of the file */
|
|
95
|
+
content: string;
|
|
96
|
+
/** Total number of lines in the file */
|
|
97
|
+
total_lines: number;
|
|
98
|
+
/** Number of lines returned (may be limited by offset/limit) */
|
|
99
|
+
lines_returned: number;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Output when reading an image file
|
|
104
|
+
*/
|
|
105
|
+
export interface ImageFileOutput {
|
|
106
|
+
/** Base64-encoded image data */
|
|
107
|
+
image: string;
|
|
108
|
+
/** MIME type of the image */
|
|
109
|
+
mime_type: string;
|
|
110
|
+
/** File size in bytes */
|
|
111
|
+
file_size: number;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Output when reading a PDF file
|
|
116
|
+
*/
|
|
117
|
+
export interface PDFFileOutput {
|
|
118
|
+
/** Array of pages with text and images */
|
|
119
|
+
pages: Array<{
|
|
120
|
+
/** Page number (1-indexed) */
|
|
121
|
+
page_number: number;
|
|
122
|
+
/** Extracted text from the page */
|
|
123
|
+
text?: string;
|
|
124
|
+
/** Images found on the page */
|
|
125
|
+
images?: Array<{
|
|
126
|
+
/** Base64-encoded image data */
|
|
127
|
+
image: string;
|
|
128
|
+
/** MIME type of the image */
|
|
129
|
+
mime_type: string;
|
|
130
|
+
}>;
|
|
131
|
+
}>;
|
|
132
|
+
/** Total number of pages in the PDF */
|
|
133
|
+
total_pages: number;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Output when reading a Jupyter notebook file
|
|
138
|
+
*/
|
|
139
|
+
export interface NotebookFileOutput {
|
|
140
|
+
/** Array of notebook cells */
|
|
141
|
+
cells: Array<{
|
|
142
|
+
/** Type of the cell */
|
|
143
|
+
cell_type: 'code' | 'markdown';
|
|
144
|
+
/** Source code or markdown content */
|
|
145
|
+
source: string;
|
|
146
|
+
/** Cell outputs (for code cells) */
|
|
147
|
+
outputs?: any[];
|
|
148
|
+
/** Execution count (for code cells) */
|
|
149
|
+
execution_count?: number;
|
|
150
|
+
}>;
|
|
151
|
+
/** Notebook metadata */
|
|
152
|
+
metadata?: Record<string, any>;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Union type for all possible Read tool outputs
|
|
157
|
+
*/
|
|
158
|
+
export type ReadOutput =
|
|
159
|
+
| TextFileOutput
|
|
160
|
+
| ImageFileOutput
|
|
161
|
+
| PDFFileOutput
|
|
162
|
+
| NotebookFileOutput;
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Output from Glob tool for file pattern matching
|
|
166
|
+
*/
|
|
167
|
+
export interface GlobOutput {
|
|
168
|
+
/** Array of file paths matching the pattern */
|
|
169
|
+
matches: string[];
|
|
170
|
+
/** Number of matches found */
|
|
171
|
+
count: number;
|
|
172
|
+
/** Search directory used */
|
|
173
|
+
search_path: string;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Output from Grep tool for content searching (content mode)
|
|
178
|
+
*/
|
|
179
|
+
export interface GrepContentOutput {
|
|
180
|
+
/** Matching lines with context */
|
|
181
|
+
matches: Array<{
|
|
182
|
+
/** File path where the match was found */
|
|
183
|
+
file: string;
|
|
184
|
+
/** Line number of the match (if available) */
|
|
185
|
+
line_number?: number;
|
|
186
|
+
/** Content of the matching line */
|
|
187
|
+
line: string;
|
|
188
|
+
/** Lines before the match (if -B or -C was used) */
|
|
189
|
+
before_context?: string[];
|
|
190
|
+
/** Lines after the match (if -A or -C was used) */
|
|
191
|
+
after_context?: string[];
|
|
192
|
+
}>;
|
|
193
|
+
/** Total number of matches found */
|
|
194
|
+
total_matches: number;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Output from Grep tool for files mode
|
|
199
|
+
*/
|
|
200
|
+
export interface GrepFilesOutput {
|
|
201
|
+
/** Files containing matches */
|
|
202
|
+
files: string[];
|
|
203
|
+
/** Number of files with matches */
|
|
204
|
+
count: number;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Output from Grep tool for count mode
|
|
209
|
+
*/
|
|
210
|
+
export interface GrepCountOutput {
|
|
211
|
+
/** Match counts per file */
|
|
212
|
+
counts: Array<{
|
|
213
|
+
/** File path */
|
|
214
|
+
file: string;
|
|
215
|
+
/** Number of matches in this file */
|
|
216
|
+
count: number;
|
|
217
|
+
}>;
|
|
218
|
+
/** Total matches across all files */
|
|
219
|
+
total: number;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Union type for all possible Grep outputs based on output_mode
|
|
224
|
+
*/
|
|
225
|
+
export type GrepOutput =
|
|
226
|
+
| GrepContentOutput
|
|
227
|
+
| GrepFilesOutput
|
|
228
|
+
| GrepCountOutput;
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Output from WebFetch tool for web content retrieval
|
|
232
|
+
*/
|
|
233
|
+
export interface WebFetchOutput {
|
|
234
|
+
/** AI model's response to the prompt */
|
|
235
|
+
response: string;
|
|
236
|
+
/** URL that was fetched */
|
|
237
|
+
url: string;
|
|
238
|
+
/** Final URL after redirects */
|
|
239
|
+
final_url?: string;
|
|
240
|
+
/** HTTP status code */
|
|
241
|
+
status_code?: number;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Output from WebSearch tool for web searching
|
|
246
|
+
*/
|
|
247
|
+
export interface WebSearchOutput {
|
|
248
|
+
/** Array of search results */
|
|
249
|
+
results: Array<{
|
|
250
|
+
/** Title of the search result */
|
|
251
|
+
title: string;
|
|
252
|
+
/** URL of the search result */
|
|
253
|
+
url: string;
|
|
254
|
+
/** Snippet/description of the search result */
|
|
255
|
+
snippet: string;
|
|
256
|
+
}>;
|
|
257
|
+
/** Total number of results found */
|
|
258
|
+
total_results: number;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Output from Write tool for file creation
|
|
263
|
+
*/
|
|
264
|
+
export interface WriteOutput {
|
|
265
|
+
/** Confirmation message about the write operation */
|
|
266
|
+
message: string;
|
|
267
|
+
/** Path to the written file */
|
|
268
|
+
file_path: string;
|
|
269
|
+
/** Number of bytes written */
|
|
270
|
+
bytes_written: number;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Output from NotebookEdit tool for Jupyter notebook modifications
|
|
275
|
+
*/
|
|
276
|
+
export interface NotebookEditOutput {
|
|
277
|
+
/** Confirmation message about the notebook edit */
|
|
278
|
+
message: string;
|
|
279
|
+
/** Type of edit performed */
|
|
280
|
+
edit_type: 'replaced' | 'inserted' | 'deleted';
|
|
281
|
+
/** ID of the edited cell (if applicable) */
|
|
282
|
+
cell_id?: string;
|
|
283
|
+
/** Total cells in notebook after edit */
|
|
284
|
+
total_cells: number;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Output from TodoWrite tool for task management
|
|
289
|
+
*/
|
|
290
|
+
export interface TodoWriteOutput {
|
|
291
|
+
/** Confirmation message about the todo operation */
|
|
292
|
+
message: string;
|
|
293
|
+
/** Current todo statistics */
|
|
294
|
+
stats: {
|
|
295
|
+
/** Total number of todos */
|
|
296
|
+
total: number;
|
|
297
|
+
/** Number of pending todos */
|
|
298
|
+
pending: number;
|
|
299
|
+
/** Number of in-progress todos */
|
|
300
|
+
in_progress: number;
|
|
301
|
+
/** Number of completed todos */
|
|
302
|
+
completed: number;
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Output from ExitPlanMode tool
|
|
308
|
+
*/
|
|
309
|
+
export interface ExitPlanModeOutput {
|
|
310
|
+
/** Confirmation message about exiting plan mode */
|
|
311
|
+
message: string;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Output from KillShell tool for terminating background processes
|
|
316
|
+
*/
|
|
317
|
+
export interface KillShellOutput {
|
|
318
|
+
/** Confirmation message about killing the shell */
|
|
319
|
+
message: string;
|
|
320
|
+
/** ID of the killed shell */
|
|
321
|
+
shell_id: string;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* Output from ListMcpResources tool for MCP resource listing
|
|
326
|
+
*/
|
|
327
|
+
export interface ListMcpResourcesOutput {
|
|
328
|
+
/** Array of available MCP resources */
|
|
329
|
+
resources: Array<{
|
|
330
|
+
/** URI of the resource */
|
|
331
|
+
uri: string;
|
|
332
|
+
/** Name of the resource */
|
|
333
|
+
name: string;
|
|
334
|
+
/** Description of the resource */
|
|
335
|
+
description?: string;
|
|
336
|
+
/** MIME type of the resource */
|
|
337
|
+
mimeType?: string;
|
|
338
|
+
/** Server that provides this resource */
|
|
339
|
+
server: string;
|
|
340
|
+
}>;
|
|
341
|
+
/** Total number of resources */
|
|
342
|
+
total: number;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Output from ReadMcpResource tool for MCP resource reading
|
|
347
|
+
*/
|
|
348
|
+
export interface ReadMcpResourceOutput {
|
|
349
|
+
/** Resource contents (can be multiple if resource has multiple parts) */
|
|
350
|
+
contents: Array<{
|
|
351
|
+
/** URI of the resource */
|
|
352
|
+
uri: string;
|
|
353
|
+
/** MIME type of the resource */
|
|
354
|
+
mimeType?: string;
|
|
355
|
+
/** Text content (for text resources) */
|
|
356
|
+
text?: string;
|
|
357
|
+
/** Base64-encoded blob (for binary resources) */
|
|
358
|
+
blob?: string;
|
|
359
|
+
}>;
|
|
360
|
+
/** Server that provided the resource */
|
|
361
|
+
server: string;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Union type for all possible tool outputs
|
|
366
|
+
*/
|
|
367
|
+
export type ToolOutput =
|
|
368
|
+
| TaskOutput
|
|
369
|
+
| BashOutput
|
|
370
|
+
| BashOutputToolOutput
|
|
371
|
+
| EditOutput
|
|
372
|
+
| ReadOutput
|
|
373
|
+
| GlobOutput
|
|
374
|
+
| GrepOutput
|
|
375
|
+
| WebFetchOutput
|
|
376
|
+
| WebSearchOutput
|
|
377
|
+
| WriteOutput
|
|
378
|
+
| NotebookEditOutput
|
|
379
|
+
| TodoWriteOutput
|
|
380
|
+
| ExitPlanModeOutput
|
|
381
|
+
| KillShellOutput
|
|
382
|
+
| ListMcpResourcesOutput
|
|
383
|
+
| ReadMcpResourceOutput;
|
|
384
|
+
|
|
385
|
+
// Tool result type for embedding in tool_use
|
|
386
|
+
export interface ToolResult {
|
|
387
|
+
type: 'tool_result';
|
|
388
|
+
tool_use_id: string;
|
|
389
|
+
content: string;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
// Tool input types for UI components
|
|
393
|
+
export interface BashToolInput {
|
|
394
|
+
type: 'tool_use';
|
|
395
|
+
id: string;
|
|
396
|
+
name: 'Bash';
|
|
397
|
+
input: BashInput;
|
|
398
|
+
$result?: ToolResult;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
export interface BashOutputToolInput {
|
|
402
|
+
type: 'tool_use';
|
|
403
|
+
id: string;
|
|
404
|
+
name: 'TaskOutput';
|
|
405
|
+
input: TaskOutputInput;
|
|
406
|
+
$result?: ToolResult;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
export interface EditToolInput {
|
|
410
|
+
type: 'tool_use';
|
|
411
|
+
id: string;
|
|
412
|
+
name: 'Edit';
|
|
413
|
+
input: FileEditInput;
|
|
414
|
+
$result?: ToolResult;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
export interface ExitPlanModeToolInput {
|
|
418
|
+
type: 'tool_use';
|
|
419
|
+
id: string;
|
|
420
|
+
name: 'ExitPlanMode';
|
|
421
|
+
input: ExitPlanModeInput;
|
|
422
|
+
$result?: ToolResult;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
export interface GlobToolInput {
|
|
426
|
+
type: 'tool_use';
|
|
427
|
+
id: string;
|
|
428
|
+
name: 'Glob';
|
|
429
|
+
input: GlobInput;
|
|
430
|
+
$result?: ToolResult;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
export interface GrepToolInput {
|
|
434
|
+
type: 'tool_use';
|
|
435
|
+
id: string;
|
|
436
|
+
name: 'Grep';
|
|
437
|
+
input: GrepInput;
|
|
438
|
+
$result?: ToolResult;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
export interface KillShellToolInput {
|
|
442
|
+
type: 'tool_use';
|
|
443
|
+
id: string;
|
|
444
|
+
name: 'KillShell';
|
|
445
|
+
input: KillShellInput;
|
|
446
|
+
$result?: ToolResult;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
export interface ListMcpResourcesToolInput {
|
|
450
|
+
type: 'tool_use';
|
|
451
|
+
id: string;
|
|
452
|
+
name: 'ListMcpResources';
|
|
453
|
+
input: ListMcpResourcesInput;
|
|
454
|
+
$result?: ToolResult;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
export interface NotebookEditToolInput {
|
|
458
|
+
type: 'tool_use';
|
|
459
|
+
id: string;
|
|
460
|
+
name: 'NotebookEdit';
|
|
461
|
+
input: NotebookEditInput;
|
|
462
|
+
$result?: ToolResult;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
export interface ReadMcpResourceToolInput {
|
|
466
|
+
type: 'tool_use';
|
|
467
|
+
id: string;
|
|
468
|
+
name: 'ReadMcpResource';
|
|
469
|
+
input: ReadMcpResourceInput;
|
|
470
|
+
$result?: ToolResult;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
export interface ReadToolInput {
|
|
474
|
+
type: 'tool_use';
|
|
475
|
+
id: string;
|
|
476
|
+
name: 'Read';
|
|
477
|
+
input: FileReadInput;
|
|
478
|
+
$result?: ToolResult;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
export interface TaskToolInput {
|
|
482
|
+
type: 'tool_use';
|
|
483
|
+
id: string;
|
|
484
|
+
name: 'Task';
|
|
485
|
+
input: AgentInput;
|
|
486
|
+
$result?: ToolResult;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
export interface TodoWriteToolInput {
|
|
490
|
+
type: 'tool_use';
|
|
491
|
+
id: string;
|
|
492
|
+
name: 'TodoWrite';
|
|
493
|
+
input: TodoWriteInput;
|
|
494
|
+
$result?: ToolResult;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
export interface WebFetchToolInput {
|
|
498
|
+
type: 'tool_use';
|
|
499
|
+
id: string;
|
|
500
|
+
name: 'WebFetch';
|
|
501
|
+
input: WebFetchInput;
|
|
502
|
+
$result?: ToolResult;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
export interface WebSearchToolInput {
|
|
506
|
+
type: 'tool_use';
|
|
507
|
+
id: string;
|
|
508
|
+
name: 'WebSearch';
|
|
509
|
+
input: WebSearchInput;
|
|
510
|
+
$result?: ToolResult;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
export interface WriteToolInput {
|
|
514
|
+
type: 'tool_use';
|
|
515
|
+
id: string;
|
|
516
|
+
name: 'Write';
|
|
517
|
+
input: FileWriteInput;
|
|
518
|
+
$result?: ToolResult;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
export type ToolInput =
|
|
522
|
+
| BashToolInput | BashOutputToolInput | EditToolInput | ExitPlanModeToolInput
|
|
523
|
+
| GlobToolInput | GrepToolInput | KillShellToolInput | ListMcpResourcesToolInput
|
|
524
|
+
| NotebookEditToolInput
|
|
525
|
+
| ReadMcpResourceToolInput | ReadToolInput | TaskToolInput | TodoWriteToolInput
|
|
526
|
+
| WebFetchToolInput | WebSearchToolInput | WriteToolInput;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API response and request types
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export interface APIResponse<T = unknown> {
|
|
6
|
+
success: boolean;
|
|
7
|
+
data?: T;
|
|
8
|
+
error?: string;
|
|
9
|
+
message?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface PaginatedResponse<T> {
|
|
13
|
+
data: T[];
|
|
14
|
+
total: number;
|
|
15
|
+
page: number;
|
|
16
|
+
per_page: number;
|
|
17
|
+
total_pages: number;
|
|
18
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application state types
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { Project, ChatSession } from '../database/schema';
|
|
6
|
+
import type { FileNode } from '../filesystem';
|
|
7
|
+
import type { ToastNotification } from '../ui/notifications';
|
|
8
|
+
|
|
9
|
+
export interface PageInfo {
|
|
10
|
+
title: string;
|
|
11
|
+
description: string;
|
|
12
|
+
actions?: import('svelte').Snippet;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface AppState {
|
|
16
|
+
currentProject: Project | null;
|
|
17
|
+
currentSession: ChatSession | null;
|
|
18
|
+
currentView: string;
|
|
19
|
+
files: FileNode[];
|
|
20
|
+
isLoading: boolean;
|
|
21
|
+
notifications: ToastNotification[];
|
|
22
|
+
pageInfo: PageInfo;
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { BaseDialogOptions } from '../ui';
|
|
2
|
+
|
|
3
|
+
export interface AlertOptions extends BaseDialogOptions {}
|
|
4
|
+
|
|
5
|
+
export interface ConfirmOptions extends BaseDialogOptions {
|
|
6
|
+
confirmText?: string;
|
|
7
|
+
cancelText?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface DialogState {
|
|
11
|
+
alert: {
|
|
12
|
+
isOpen: boolean;
|
|
13
|
+
options: AlertOptions;
|
|
14
|
+
resolve?: () => void;
|
|
15
|
+
};
|
|
16
|
+
confirm: {
|
|
17
|
+
isOpen: boolean;
|
|
18
|
+
options: ConfirmOptions;
|
|
19
|
+
resolve?: (value: boolean) => void;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { EngineType } from '$shared/types/engine';
|
|
2
|
+
|
|
3
|
+
export interface AppSettings {
|
|
4
|
+
selectedEngine: EngineType;
|
|
5
|
+
selectedModel: string;
|
|
6
|
+
/** Remembers the last selected model per engine so switching engines preserves choices */
|
|
7
|
+
engineModelMemory: Record<string, string>;
|
|
8
|
+
autoSave: boolean;
|
|
9
|
+
theme: 'light' | 'dark' | 'system';
|
|
10
|
+
soundNotifications: boolean;
|
|
11
|
+
pushNotifications: boolean;
|
|
12
|
+
layoutPresetVisibility: Record<string, boolean>;
|
|
13
|
+
/** Restrict folder browser to only these base paths. Empty = no restriction. */
|
|
14
|
+
allowedBasePaths: string[];
|
|
15
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal and command execution types
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export interface TerminalLine {
|
|
6
|
+
id?: string;
|
|
7
|
+
content: string;
|
|
8
|
+
type: 'input' | 'output' | 'error' | 'warning' | 'success' | 'info' | 'exit' | 'prompt-trigger' | 'clear-screen' | 'system';
|
|
9
|
+
timestamp: Date;
|
|
10
|
+
directory?: string; // Directory context when this line was created (for input commands)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface TerminalCommand {
|
|
14
|
+
id: string;
|
|
15
|
+
command: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
timestamp: Date;
|
|
18
|
+
duration?: number;
|
|
19
|
+
exitCode?: number;
|
|
20
|
+
directory?: string;
|
|
21
|
+
output?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface TerminalBuffer {
|
|
25
|
+
lines: string[];
|
|
26
|
+
cursorY: number;
|
|
27
|
+
cursorX: number;
|
|
28
|
+
viewportY: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface TerminalSession {
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
directory: string;
|
|
35
|
+
lines: TerminalLine[];
|
|
36
|
+
commandHistory: string[];
|
|
37
|
+
isActive: boolean;
|
|
38
|
+
createdAt: Date;
|
|
39
|
+
lastUsedAt: Date;
|
|
40
|
+
shellType?: string; // Terminal type: PowerShell, Bash, etc.
|
|
41
|
+
terminalBuffer?: TerminalBuffer; // Store terminal buffer state
|
|
42
|
+
projectId?: string; // Associated project ID for multi-project support
|
|
43
|
+
projectPath?: string; // Associated project path
|
|
44
|
+
}
|