@myrialabs/clopen 0.0.5 → 0.0.6
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 +5 -5
- package/.github/workflows/ci.yml +86 -86
- package/CONTRIBUTING.md +499 -499
- package/LICENSE +21 -21
- package/README.md +209 -209
- package/backend/index.ts +168 -165
- package/backend/lib/chat/helpers.ts +42 -42
- package/backend/lib/chat/index.ts +1 -1
- package/backend/lib/chat/stream-manager.ts +1126 -1126
- package/backend/lib/database/README.md +76 -76
- package/backend/lib/database/index.ts +118 -118
- package/backend/lib/database/migrations/001_create_projects_table.ts +30 -30
- package/backend/lib/database/migrations/002_create_chat_sessions_table.ts +32 -32
- package/backend/lib/database/migrations/003_create_messages_table.ts +31 -31
- package/backend/lib/database/migrations/004_create_prompt_templates_table.ts +34 -34
- package/backend/lib/database/migrations/005_create_settings_table.ts +23 -23
- package/backend/lib/database/migrations/006_add_user_to_messages.ts +57 -57
- package/backend/lib/database/migrations/007_create_stream_states_table.ts +40 -40
- package/backend/lib/database/migrations/008_create_message_snapshots_table.ts +61 -61
- package/backend/lib/database/migrations/009_add_delta_snapshot_fields.ts +41 -41
- package/backend/lib/database/migrations/010_add_soft_delete_and_branch_support.ts +70 -70
- package/backend/lib/database/migrations/011_git_like_commit_graph.ts +156 -156
- package/backend/lib/database/migrations/012_add_file_change_statistics.ts +41 -41
- package/backend/lib/database/migrations/013_checkpoint_tree_state.ts +118 -118
- package/backend/lib/database/migrations/014_add_engine_to_sessions.ts +18 -18
- package/backend/lib/database/migrations/015_add_model_to_sessions.ts +18 -18
- package/backend/lib/database/migrations/016_create_user_projects_table.ts +34 -34
- package/backend/lib/database/migrations/017_add_current_session_to_user_projects.ts +32 -32
- package/backend/lib/database/migrations/018_create_claude_accounts_table.ts +24 -24
- package/backend/lib/database/migrations/019_add_claude_account_to_sessions.ts +18 -18
- package/backend/lib/database/migrations/020_add_snapshot_tree_hash.ts +32 -32
- package/backend/lib/database/migrations/021_drop_prompt_templates_table.ts +33 -33
- package/backend/lib/database/migrations/index.ts +153 -153
- package/backend/lib/database/queries/checkpoint-queries.ts +87 -87
- package/backend/lib/database/queries/engine-queries.ts +75 -75
- package/backend/lib/database/queries/index.ts +8 -8
- package/backend/lib/database/queries/message-queries.ts +471 -471
- package/backend/lib/database/queries/project-queries.ts +117 -117
- package/backend/lib/database/queries/session-queries.ts +270 -270
- package/backend/lib/database/queries/settings-queries.ts +33 -33
- package/backend/lib/database/queries/snapshot-queries.ts +325 -325
- package/backend/lib/database/queries/utils-queries.ts +58 -58
- package/backend/lib/database/seeders/index.ts +12 -12
- package/backend/lib/database/seeders/settings_seeder.ts +83 -83
- package/backend/lib/database/utils/connection.ts +173 -173
- package/backend/lib/database/utils/index.ts +3 -3
- package/backend/lib/database/utils/migration-runner.ts +117 -117
- package/backend/lib/database/utils/seeder-runner.ts +120 -120
- package/backend/lib/engine/adapters/claude/environment.ts +160 -164
- package/backend/lib/engine/adapters/claude/error-handler.ts +60 -60
- package/backend/lib/engine/adapters/claude/index.ts +1 -1
- package/backend/lib/engine/adapters/claude/path-utils.ts +38 -38
- package/backend/lib/engine/adapters/claude/stream.ts +177 -177
- package/backend/lib/engine/adapters/opencode/index.ts +2 -2
- package/backend/lib/engine/adapters/opencode/message-converter.ts +862 -862
- package/backend/lib/engine/adapters/opencode/server.ts +104 -104
- package/backend/lib/engine/adapters/opencode/stream.ts +755 -755
- package/backend/lib/engine/index.ts +196 -196
- package/backend/lib/engine/types.ts +58 -58
- package/backend/lib/files/file-operations.ts +478 -478
- package/backend/lib/files/file-reading.ts +308 -308
- package/backend/lib/files/file-watcher.ts +383 -383
- package/backend/lib/files/path-browsing.ts +382 -382
- package/backend/lib/git/git-executor.ts +89 -88
- package/backend/lib/git/git-parser.ts +411 -411
- package/backend/lib/git/git-service.ts +505 -505
- package/backend/lib/mcp/README.md +1144 -1144
- package/backend/lib/mcp/config.ts +317 -316
- package/backend/lib/mcp/index.ts +35 -35
- package/backend/lib/mcp/project-context.ts +236 -236
- package/backend/lib/mcp/servers/browser-automation/actions.ts +156 -156
- package/backend/lib/mcp/servers/browser-automation/browser.ts +419 -419
- package/backend/lib/mcp/servers/browser-automation/index.ts +791 -791
- package/backend/lib/mcp/servers/browser-automation/inspection.ts +501 -501
- package/backend/lib/mcp/servers/helper.ts +143 -143
- package/backend/lib/mcp/servers/index.ts +44 -44
- package/backend/lib/mcp/servers/weather/get-temperature.ts +56 -56
- package/backend/lib/mcp/servers/weather/index.ts +31 -31
- package/backend/lib/mcp/stdio-server.ts +103 -103
- package/backend/lib/mcp/types.ts +65 -65
- package/backend/lib/preview/browser/browser-audio-capture.ts +86 -86
- package/backend/lib/preview/browser/browser-console-manager.ts +262 -262
- package/backend/lib/preview/browser/browser-dialog-handler.ts +222 -222
- package/backend/lib/preview/browser/browser-interaction-handler.ts +421 -421
- package/backend/lib/preview/browser/browser-mcp-control.ts +415 -415
- package/backend/lib/preview/browser/browser-native-ui-handler.ts +512 -512
- package/backend/lib/preview/browser/browser-navigation-tracker.ts +103 -103
- package/backend/lib/preview/browser/browser-pool.ts +357 -357
- package/backend/lib/preview/browser/browser-preview-service.ts +882 -882
- package/backend/lib/preview/browser/browser-tab-manager.ts +935 -935
- package/backend/lib/preview/browser/browser-video-capture.ts +695 -695
- package/backend/lib/preview/browser/scripts/audio-stream.ts +292 -292
- package/backend/lib/preview/browser/scripts/cursor-tracking.ts +85 -85
- package/backend/lib/preview/browser/scripts/video-stream.ts +438 -438
- package/backend/lib/preview/browser/types.ts +359 -359
- package/backend/lib/preview/index.ts +23 -23
- package/backend/lib/project/index.ts +1 -1
- package/backend/lib/project/status-manager.ts +181 -181
- package/backend/lib/shared/env.ts +117 -0
- package/backend/lib/shared/index.ts +5 -2
- package/backend/lib/shared/port-utils.ts +25 -25
- package/backend/lib/shared/process-manager.ts +280 -280
- package/backend/lib/snapshot/blob-store.ts +227 -227
- package/backend/lib/snapshot/gitignore.ts +307 -307
- package/backend/lib/snapshot/helpers.ts +397 -397
- package/backend/lib/snapshot/snapshot-service.ts +483 -483
- package/backend/lib/terminal/helpers.ts +14 -14
- package/backend/lib/terminal/index.ts +7 -7
- package/backend/lib/terminal/pty-manager.ts +3 -3
- package/backend/lib/terminal/pty-session-manager.ts +370 -387
- package/backend/lib/terminal/shell-utils.ts +315 -312
- package/backend/lib/terminal/stream-manager.ts +292 -292
- package/backend/lib/tunnel/global-tunnel-manager.ts +266 -243
- package/backend/lib/tunnel/project-tunnel-manager.ts +311 -311
- package/backend/lib/user/helpers.ts +87 -87
- package/backend/lib/utils/ws.ts +944 -944
- package/backend/lib/vite-dev.ts +295 -295
- package/backend/middleware/cors.ts +16 -15
- package/backend/middleware/error-handler.ts +50 -49
- package/backend/middleware/logger.ts +9 -9
- package/backend/types/api.ts +24 -24
- package/backend/ws/README.md +1505 -1505
- package/backend/ws/chat/background.ts +198 -198
- package/backend/ws/chat/index.ts +21 -21
- package/backend/ws/chat/stream.ts +707 -707
- package/backend/ws/engine/claude/accounts.ts +399 -401
- package/backend/ws/engine/claude/index.ts +13 -13
- package/backend/ws/engine/claude/status.ts +43 -43
- package/backend/ws/engine/index.ts +14 -14
- package/backend/ws/engine/opencode/index.ts +11 -11
- package/backend/ws/engine/opencode/status.ts +30 -30
- package/backend/ws/engine/utils.ts +36 -36
- package/backend/ws/files/index.ts +30 -30
- package/backend/ws/files/read.ts +189 -189
- package/backend/ws/files/search.ts +453 -453
- package/backend/ws/files/watch.ts +124 -124
- package/backend/ws/files/write.ts +143 -143
- package/backend/ws/git/branch.ts +106 -106
- package/backend/ws/git/commit.ts +39 -39
- package/backend/ws/git/conflict.ts +68 -68
- package/backend/ws/git/diff.ts +69 -69
- package/backend/ws/git/index.ts +24 -24
- package/backend/ws/git/log.ts +41 -41
- package/backend/ws/git/remote.ts +214 -214
- package/backend/ws/git/staging.ts +84 -84
- package/backend/ws/git/status.ts +90 -90
- package/backend/ws/index.ts +69 -69
- package/backend/ws/mcp/index.ts +61 -61
- package/backend/ws/messages/crud.ts +74 -74
- package/backend/ws/messages/index.ts +14 -14
- package/backend/ws/preview/browser/cleanup.ts +129 -129
- package/backend/ws/preview/browser/console.ts +114 -114
- package/backend/ws/preview/browser/interact.ts +513 -513
- package/backend/ws/preview/browser/mcp.ts +129 -129
- package/backend/ws/preview/browser/native-ui.ts +235 -235
- package/backend/ws/preview/browser/stats.ts +55 -55
- package/backend/ws/preview/browser/tab-info.ts +126 -126
- package/backend/ws/preview/browser/tab.ts +166 -166
- package/backend/ws/preview/browser/webcodecs.ts +293 -293
- package/backend/ws/preview/index.ts +146 -146
- package/backend/ws/projects/crud.ts +113 -113
- package/backend/ws/projects/index.ts +25 -25
- package/backend/ws/projects/presence.ts +46 -46
- package/backend/ws/projects/status.ts +116 -116
- package/backend/ws/sessions/crud.ts +327 -327
- package/backend/ws/sessions/index.ts +33 -33
- package/backend/ws/settings/crud.ts +112 -112
- package/backend/ws/settings/index.ts +14 -14
- package/backend/ws/snapshot/index.ts +17 -17
- package/backend/ws/snapshot/restore.ts +173 -173
- package/backend/ws/snapshot/timeline.ts +141 -141
- package/backend/ws/system/index.ts +14 -14
- package/backend/ws/system/operations.ts +49 -49
- package/backend/ws/terminal/index.ts +40 -40
- package/backend/ws/terminal/persistence.ts +153 -153
- package/backend/ws/terminal/session.ts +382 -382
- package/backend/ws/terminal/stream.ts +79 -79
- package/backend/ws/tunnel/index.ts +14 -14
- package/backend/ws/tunnel/operations.ts +91 -91
- package/backend/ws/types.ts +20 -20
- package/backend/ws/user/crud.ts +156 -156
- package/backend/ws/user/index.ts +14 -14
- package/bin/clopen.ts +307 -307
- package/bun.lock +1353 -1352
- package/frontend/App.svelte +38 -34
- package/frontend/app.css +313 -313
- package/frontend/lib/app-environment.ts +10 -10
- package/frontend/lib/components/chat/ChatInterface.svelte +406 -406
- package/frontend/lib/components/chat/formatters/ErrorMessage.svelte +56 -56
- package/frontend/lib/components/chat/formatters/MessageFormatter.svelte +223 -223
- package/frontend/lib/components/chat/formatters/TextMessage.svelte +394 -394
- package/frontend/lib/components/chat/formatters/Tools.svelte +69 -69
- package/frontend/lib/components/chat/formatters/index.ts +2 -2
- package/frontend/lib/components/chat/input/ChatInput.svelte +421 -421
- package/frontend/lib/components/chat/input/components/ChatInputActions.svelte +78 -78
- package/frontend/lib/components/chat/input/components/DragDropOverlay.svelte +30 -30
- package/frontend/lib/components/chat/input/components/EditModeIndicator.svelte +33 -33
- package/frontend/lib/components/chat/input/components/EngineModelPicker.svelte +619 -619
- package/frontend/lib/components/chat/input/components/FileAttachmentPreview.svelte +48 -48
- package/frontend/lib/components/chat/input/components/LoadingIndicator.svelte +31 -31
- package/frontend/lib/components/chat/input/composables/use-animations.svelte.ts +201 -201
- package/frontend/lib/components/chat/input/composables/use-chat-actions.svelte.ts +148 -148
- package/frontend/lib/components/chat/input/composables/use-file-handling.svelte.ts +216 -216
- package/frontend/lib/components/chat/input/composables/use-input-state.svelte.ts +357 -357
- package/frontend/lib/components/chat/input/composables/use-textarea-resize.svelte.ts +57 -57
- package/frontend/lib/components/chat/message/ChatMessage.svelte +478 -478
- package/frontend/lib/components/chat/message/ChatMessages.svelte +541 -541
- package/frontend/lib/components/chat/message/DateSeparator.svelte +86 -86
- package/frontend/lib/components/chat/message/MessageBubble.svelte +86 -86
- package/frontend/lib/components/chat/message/MessageHeader.svelte +157 -157
- package/frontend/lib/components/chat/modal/DebugModal.svelte +59 -59
- package/frontend/lib/components/chat/modal/TokenUsageModal.svelte +124 -124
- package/frontend/lib/components/chat/shared/index.ts +1 -1
- package/frontend/lib/components/chat/shared/utils.ts +115 -115
- package/frontend/lib/components/chat/tools/BashOutputTool.svelte +35 -35
- package/frontend/lib/components/chat/tools/BashTool.svelte +45 -45
- package/frontend/lib/components/chat/tools/CustomMcpTool.svelte +139 -139
- package/frontend/lib/components/chat/tools/EditTool.svelte +47 -47
- package/frontend/lib/components/chat/tools/ExitPlanModeTool.svelte +31 -31
- package/frontend/lib/components/chat/tools/GlobTool.svelte +50 -50
- package/frontend/lib/components/chat/tools/GrepTool.svelte +89 -89
- package/frontend/lib/components/chat/tools/KillShellTool.svelte +25 -25
- package/frontend/lib/components/chat/tools/ListMcpResourcesTool.svelte +30 -30
- package/frontend/lib/components/chat/tools/NotebookEditTool.svelte +37 -37
- package/frontend/lib/components/chat/tools/ReadMcpResourceTool.svelte +33 -33
- package/frontend/lib/components/chat/tools/ReadTool.svelte +40 -40
- package/frontend/lib/components/chat/tools/TaskTool.svelte +63 -63
- package/frontend/lib/components/chat/tools/TodoWriteTool.svelte +74 -74
- package/frontend/lib/components/chat/tools/WebFetchTool.svelte +34 -34
- package/frontend/lib/components/chat/tools/WebSearchTool.svelte +83 -83
- package/frontend/lib/components/chat/tools/WriteTool.svelte +32 -32
- package/frontend/lib/components/chat/tools/components/CodeBlock.svelte +78 -78
- package/frontend/lib/components/chat/tools/components/DiffBlock.svelte +407 -407
- package/frontend/lib/components/chat/tools/components/FileHeader.svelte +45 -45
- package/frontend/lib/components/chat/tools/components/InfoLine.svelte +18 -18
- package/frontend/lib/components/chat/tools/components/StatsBadges.svelte +26 -26
- package/frontend/lib/components/chat/tools/components/TerminalCommand.svelte +53 -53
- package/frontend/lib/components/chat/tools/components/index.ts +7 -7
- package/frontend/lib/components/chat/tools/index.ts +25 -25
- package/frontend/lib/components/chat/widgets/FloatingTodoList.svelte +248 -248
- package/frontend/lib/components/chat/widgets/TokenUsage.svelte +78 -78
- package/frontend/lib/components/checkpoint/TimelineModal.svelte +391 -391
- package/frontend/lib/components/checkpoint/timeline/TimelineEdge.svelte +26 -26
- package/frontend/lib/components/checkpoint/timeline/TimelineGraph.svelte +86 -86
- package/frontend/lib/components/checkpoint/timeline/TimelineNode.svelte +108 -108
- package/frontend/lib/components/checkpoint/timeline/TimelineVersionGroup.svelte +59 -59
- package/frontend/lib/components/checkpoint/timeline/animation.ts +168 -168
- package/frontend/lib/components/checkpoint/timeline/config.ts +44 -44
- package/frontend/lib/components/checkpoint/timeline/graph-builder.ts +304 -304
- package/frontend/lib/components/checkpoint/timeline/types.ts +65 -65
- package/frontend/lib/components/checkpoint/timeline/utils.ts +53 -53
- package/frontend/lib/components/common/Alert.svelte +138 -138
- package/frontend/lib/components/common/AvatarBubble.svelte +55 -55
- package/frontend/lib/components/common/Button.svelte +71 -71
- package/frontend/lib/components/common/Card.svelte +102 -102
- package/frontend/lib/components/common/Checkbox.svelte +48 -48
- package/frontend/lib/components/common/Dialog.svelte +248 -248
- package/frontend/lib/components/common/FolderBrowser.svelte +842 -842
- package/frontend/lib/components/common/Icon.svelte +57 -57
- package/frontend/lib/components/common/Input.svelte +72 -72
- package/frontend/lib/components/common/Lightbox.svelte +232 -232
- package/frontend/lib/components/common/LoadingScreen.svelte +52 -52
- package/frontend/lib/components/common/LoadingSpinner.svelte +48 -48
- package/frontend/lib/components/common/Modal.svelte +177 -177
- package/frontend/lib/components/common/ModalProvider.svelte +27 -27
- package/frontend/lib/components/common/ModelSelector.svelte +110 -110
- package/frontend/lib/components/common/MonacoEditor.svelte +568 -568
- package/frontend/lib/components/common/NotificationToast.svelte +113 -113
- package/frontend/lib/components/common/PageTemplate.svelte +75 -75
- package/frontend/lib/components/common/ProjectUserAvatars.svelte +79 -79
- package/frontend/lib/components/common/Select.svelte +97 -97
- package/frontend/lib/components/common/Textarea.svelte +79 -79
- package/frontend/lib/components/common/ThemeToggle.svelte +44 -44
- package/frontend/lib/components/common/lucide-icons.ts +1642 -1642
- package/frontend/lib/components/common/material-icons.ts +1082 -1082
- package/frontend/lib/components/common/xterm/XTerm.svelte +809 -795
- package/frontend/lib/components/common/xterm/index.ts +15 -15
- package/frontend/lib/components/common/xterm/terminal-config.ts +67 -67
- package/frontend/lib/components/common/xterm/types.ts +30 -30
- package/frontend/lib/components/common/xterm/xterm-service.ts +379 -353
- package/frontend/lib/components/files/FileNode.svelte +383 -383
- package/frontend/lib/components/files/FileTree.svelte +681 -681
- package/frontend/lib/components/files/FileViewer.svelte +728 -728
- package/frontend/lib/components/files/SearchResults.svelte +303 -303
- package/frontend/lib/components/git/BranchManager.svelte +458 -458
- package/frontend/lib/components/git/ChangesSection.svelte +107 -107
- package/frontend/lib/components/git/CommitForm.svelte +76 -76
- package/frontend/lib/components/git/ConflictResolver.svelte +158 -158
- package/frontend/lib/components/git/DiffViewer.svelte +364 -364
- package/frontend/lib/components/git/FileChangeItem.svelte +97 -97
- package/frontend/lib/components/git/GitButton.svelte +33 -33
- package/frontend/lib/components/git/GitLog.svelte +361 -361
- package/frontend/lib/components/git/GitModal.svelte +80 -80
- package/frontend/lib/components/history/HistoryModal.svelte +563 -563
- package/frontend/lib/components/history/HistoryView.svelte +614 -614
- package/frontend/lib/components/index.ts +34 -34
- package/frontend/lib/components/preview/browser/BrowserPreview.svelte +549 -549
- package/frontend/lib/components/preview/browser/components/Canvas.svelte +1058 -1058
- package/frontend/lib/components/preview/browser/components/ConsolePanel.svelte +756 -756
- package/frontend/lib/components/preview/browser/components/Container.svelte +450 -450
- package/frontend/lib/components/preview/browser/components/ContextMenu.svelte +236 -236
- package/frontend/lib/components/preview/browser/components/SelectDropdown.svelte +224 -224
- package/frontend/lib/components/preview/browser/components/Toolbar.svelte +338 -338
- package/frontend/lib/components/preview/browser/components/VirtualCursor.svelte +35 -35
- package/frontend/lib/components/preview/browser/core/cleanup.svelte.ts +155 -155
- package/frontend/lib/components/preview/browser/core/coordinator.svelte.ts +837 -837
- package/frontend/lib/components/preview/browser/core/interactions.svelte.ts +113 -113
- package/frontend/lib/components/preview/browser/core/mcp-handlers.svelte.ts +296 -296
- package/frontend/lib/components/preview/browser/core/native-ui-handlers.svelte.ts +391 -391
- package/frontend/lib/components/preview/browser/core/stream-handler.svelte.ts +231 -231
- package/frontend/lib/components/preview/browser/core/tab-manager.svelte.ts +210 -210
- package/frontend/lib/components/preview/browser/core/tab-operations.svelte.ts +239 -239
- package/frontend/lib/components/preview/index.ts +1 -1
- package/frontend/lib/components/settings/SettingsModal.svelte +235 -235
- package/frontend/lib/components/settings/SettingsView.svelte +36 -36
- package/frontend/lib/components/settings/appearance/AppearanceSettings.svelte +51 -51
- package/frontend/lib/components/settings/appearance/LayoutPresetSettings.svelte +160 -160
- package/frontend/lib/components/settings/appearance/LayoutPreview.svelte +76 -76
- package/frontend/lib/components/settings/engines/AIEnginesSettings.svelte +917 -917
- package/frontend/lib/components/settings/general/AdvancedSettings.svelte +187 -187
- package/frontend/lib/components/settings/general/DataManagementSettings.svelte +203 -203
- package/frontend/lib/components/settings/general/GeneralSettings.svelte +10 -10
- package/frontend/lib/components/settings/model/ModelSettings.svelte +357 -357
- package/frontend/lib/components/settings/notifications/NotificationSettings.svelte +205 -205
- package/frontend/lib/components/settings/user/UserSettings.svelte +197 -197
- package/frontend/lib/components/terminal/Terminal.svelte +367 -367
- package/frontend/lib/components/terminal/TerminalTabs.svelte +87 -87
- package/frontend/lib/components/terminal/TerminalView.svelte +54 -54
- package/frontend/lib/components/tunnel/TunnelActive.svelte +157 -142
- package/frontend/lib/components/tunnel/TunnelButton.svelte +60 -54
- package/frontend/lib/components/tunnel/TunnelInactive.svelte +285 -284
- package/frontend/lib/components/tunnel/TunnelModal.svelte +48 -47
- package/frontend/lib/components/tunnel/TunnelQRCode.svelte +49 -49
- package/frontend/lib/components/workspace/DesktopNavigator.svelte +382 -382
- package/frontend/lib/components/workspace/MobileNavigator.svelte +394 -403
- package/frontend/lib/components/workspace/PanelContainer.svelte +100 -100
- package/frontend/lib/components/workspace/PanelHeader.svelte +505 -505
- package/frontend/lib/components/workspace/ViewMenu.svelte +162 -162
- package/frontend/lib/components/workspace/WorkspaceLayout.svelte +169 -169
- package/frontend/lib/components/workspace/layout/DesktopLayout.svelte +15 -15
- package/frontend/lib/components/workspace/layout/MobileLayout.svelte +17 -17
- package/frontend/lib/components/workspace/layout/split-pane/Container.svelte +42 -42
- package/frontend/lib/components/workspace/layout/split-pane/Handle.svelte +84 -84
- package/frontend/lib/components/workspace/layout/split-pane/Layout.svelte +37 -37
- package/frontend/lib/components/workspace/panels/ChatPanel.svelte +274 -274
- package/frontend/lib/components/workspace/panels/FilesPanel.svelte +1261 -1261
- package/frontend/lib/components/workspace/panels/GitPanel.svelte +1560 -1560
- package/frontend/lib/components/workspace/panels/PreviewPanel.svelte +150 -150
- package/frontend/lib/components/workspace/panels/TerminalPanel.svelte +73 -73
- package/frontend/lib/constants/preview.ts +44 -44
- package/frontend/lib/services/chat/chat.service.ts +704 -704
- package/frontend/lib/services/chat/index.ts +6 -6
- package/frontend/lib/services/notification/global-stream-monitor.ts +86 -86
- package/frontend/lib/services/notification/index.ts +7 -7
- package/frontend/lib/services/notification/push.service.ts +143 -143
- package/frontend/lib/services/notification/sound.service.ts +126 -126
- package/frontend/lib/services/preview/browser/browser-console.service.ts +61 -61
- package/frontend/lib/services/preview/browser/browser-webcodecs.service.ts +1499 -1499
- package/frontend/lib/services/preview/browser/mcp-integration.svelte.ts +67 -67
- package/frontend/lib/services/preview/index.ts +22 -22
- package/frontend/lib/services/project/index.ts +7 -7
- package/frontend/lib/services/project/status.service.ts +159 -159
- package/frontend/lib/services/snapshot/snapshot.service.ts +47 -47
- package/frontend/lib/services/terminal/background/index.ts +129 -129
- package/frontend/lib/services/terminal/background/session-restore.ts +273 -273
- package/frontend/lib/services/terminal/background/stream-manager.ts +285 -285
- package/frontend/lib/services/terminal/index.ts +13 -13
- package/frontend/lib/services/terminal/persistence.service.ts +260 -260
- package/frontend/lib/services/terminal/project.service.ts +952 -952
- package/frontend/lib/services/terminal/session.service.ts +363 -363
- package/frontend/lib/services/terminal/terminal.service.ts +369 -369
- package/frontend/lib/stores/core/app.svelte.ts +117 -117
- package/frontend/lib/stores/core/files.svelte.ts +72 -72
- package/frontend/lib/stores/core/presence.svelte.ts +48 -48
- package/frontend/lib/stores/core/projects.svelte.ts +317 -317
- package/frontend/lib/stores/core/sessions.svelte.ts +383 -383
- package/frontend/lib/stores/features/claude-accounts.svelte.ts +58 -58
- package/frontend/lib/stores/features/models.svelte.ts +89 -89
- package/frontend/lib/stores/features/settings.svelte.ts +87 -87
- package/frontend/lib/stores/features/terminal.svelte.ts +700 -700
- package/frontend/lib/stores/features/tunnel.svelte.ts +163 -161
- package/frontend/lib/stores/features/user.svelte.ts +95 -95
- package/frontend/lib/stores/ui/chat-input.svelte.ts +56 -56
- package/frontend/lib/stores/ui/chat-model.svelte.ts +61 -61
- package/frontend/lib/stores/ui/dialog.svelte.ts +58 -58
- package/frontend/lib/stores/ui/edit-mode.svelte.ts +214 -214
- package/frontend/lib/stores/ui/notification.svelte.ts +166 -166
- package/frontend/lib/stores/ui/settings-modal.svelte.ts +88 -88
- package/frontend/lib/stores/ui/theme.svelte.ts +179 -179
- package/frontend/lib/stores/ui/workspace.svelte.ts +754 -754
- package/frontend/lib/types/native-ui.ts +73 -73
- package/frontend/lib/utils/chat/date-separator.ts +38 -38
- package/frontend/lib/utils/chat/message-grouper.ts +218 -218
- package/frontend/lib/utils/chat/message-processor.ts +134 -134
- package/frontend/lib/utils/chat/tool-handler.ts +160 -160
- package/frontend/lib/utils/chat/virtual-scroll.svelte.ts +142 -142
- package/frontend/lib/utils/click-outside.ts +20 -20
- package/frontend/lib/utils/context-manager.ts +256 -256
- package/frontend/lib/utils/file-icon-mappings.ts +768 -768
- package/frontend/lib/utils/folder-icon-mappings.ts +1029 -1029
- package/frontend/lib/utils/git-status.ts +68 -68
- package/frontend/lib/utils/platform.ts +112 -112
- package/frontend/lib/utils/port-check.ts +64 -64
- package/frontend/lib/utils/terminalFormatter.ts +206 -206
- package/frontend/lib/utils/theme.ts +6 -6
- package/frontend/lib/utils/tree-visualizer.ts +320 -320
- package/frontend/lib/utils/ws.ts +44 -44
- package/frontend/main.ts +13 -13
- package/index.html +70 -70
- package/package.json +111 -111
- package/scripts/generate-icons.ts +86 -86
- package/scripts/pre-publish-check.sh +142 -142
- package/scripts/setup-hooks.sh +134 -134
- package/scripts/validate-branch-name.sh +47 -47
- package/scripts/validate-commit-msg.sh +42 -42
- package/shared/constants/engines.ts +134 -134
- package/shared/types/database/connection.ts +15 -15
- package/shared/types/database/index.ts +5 -5
- package/shared/types/database/schema.ts +140 -140
- package/shared/types/engine/index.ts +45 -45
- package/shared/types/filesystem/index.ts +21 -21
- package/shared/types/git.ts +171 -171
- package/shared/types/messaging/index.ts +238 -238
- package/shared/types/messaging/tool.ts +525 -525
- package/shared/types/network/api.ts +17 -17
- package/shared/types/network/index.ts +4 -4
- package/shared/types/stores/app.ts +22 -22
- package/shared/types/stores/dialog.ts +20 -20
- package/shared/types/stores/index.ts +2 -2
- package/shared/types/stores/settings.ts +15 -15
- package/shared/types/terminal/index.ts +43 -43
- package/shared/types/ui/components.ts +60 -60
- package/shared/types/ui/icons.ts +22 -22
- package/shared/types/ui/index.ts +21 -21
- package/shared/types/ui/notifications.ts +13 -13
- package/shared/types/ui/theme.ts +11 -11
- package/shared/types/websocket/index.ts +43 -43
- package/shared/types/window.d.ts +12 -12
- package/shared/utils/anonymous-user.ts +167 -167
- package/shared/utils/async.ts +10 -10
- package/shared/utils/diff-calculator.ts +184 -184
- package/shared/utils/file-type-detection.ts +165 -165
- package/shared/utils/logger.ts +144 -144
- package/shared/utils/message-formatter.ts +79 -79
- package/shared/utils/path.ts +47 -47
- package/shared/utils/ws-client.ts +768 -768
- package/shared/utils/ws-server.ts +660 -660
- package/static/favicon.svg +7 -7
- package/static/fonts/dm-sans.css +96 -96
- package/svelte.config.js +20 -20
- package/tsconfig.json +41 -41
- package/vite.config.ts +33 -33
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
# Database System
|
|
2
|
-
|
|
3
|
-
## ➕ Adding New Migration
|
|
4
|
-
|
|
5
|
-
1. Create file: `migrations/006_description.ts`
|
|
6
|
-
```typescript
|
|
7
|
-
export const description = 'Create new table';
|
|
8
|
-
|
|
9
|
-
export function up(db) {
|
|
10
|
-
db.exec('CREATE TABLE ...');
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export function down(db) {
|
|
14
|
-
db.exec('DROP TABLE ...');
|
|
15
|
-
}
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
2. Add to `migrations/index.ts`:
|
|
19
|
-
```typescript
|
|
20
|
-
import * as migration006 from './006_description';
|
|
21
|
-
|
|
22
|
-
export const migrations = [
|
|
23
|
-
// ... existing migrations
|
|
24
|
-
{
|
|
25
|
-
id: '006',
|
|
26
|
-
description: migration006.description,
|
|
27
|
-
up: migration006.up,
|
|
28
|
-
down: migration006.down
|
|
29
|
-
}
|
|
30
|
-
];
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
3. **Restart app** → Migration runs automatically ✅
|
|
34
|
-
|
|
35
|
-
## ➕ Adding New Seeder
|
|
36
|
-
|
|
37
|
-
1. Create file: `seeders/new_seeder.ts`
|
|
38
|
-
```typescript
|
|
39
|
-
export const description = 'Seed default data';
|
|
40
|
-
|
|
41
|
-
export function seed(db) {
|
|
42
|
-
// Insert default data
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
2. Add to `seeders/index.ts`:
|
|
47
|
-
```typescript
|
|
48
|
-
import * as newSeeder from './new_seeder';
|
|
49
|
-
|
|
50
|
-
export const seeders = [
|
|
51
|
-
// ... existing seeders
|
|
52
|
-
{
|
|
53
|
-
name: 'new_seeder',
|
|
54
|
-
description: newSeeder.description,
|
|
55
|
-
seed: newSeeder.seed
|
|
56
|
-
}
|
|
57
|
-
];
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
3. **Restart app** → Seeder runs automatically ✅
|
|
61
|
-
|
|
62
|
-
## 🔧 Important Info
|
|
63
|
-
|
|
64
|
-
- **Automatic**: Migrations/seeders run on app startup
|
|
65
|
-
- **Safe**: Only new migrations/seeders execute
|
|
66
|
-
- **Tracked**: System remembers what's already done
|
|
67
|
-
- **Order**: Migrations run by ID (001, 002, 003...)
|
|
68
|
-
|
|
69
|
-
## 🛠️ Development Commands
|
|
70
|
-
|
|
71
|
-
```typescript
|
|
72
|
-
// Reset database (dev only)
|
|
73
|
-
await resetDatabase();
|
|
74
|
-
|
|
75
|
-
// Check status
|
|
76
|
-
const pending = migrationRunner.getPendingMigrations();
|
|
1
|
+
# Database System
|
|
2
|
+
|
|
3
|
+
## ➕ Adding New Migration
|
|
4
|
+
|
|
5
|
+
1. Create file: `migrations/006_description.ts`
|
|
6
|
+
```typescript
|
|
7
|
+
export const description = 'Create new table';
|
|
8
|
+
|
|
9
|
+
export function up(db) {
|
|
10
|
+
db.exec('CREATE TABLE ...');
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function down(db) {
|
|
14
|
+
db.exec('DROP TABLE ...');
|
|
15
|
+
}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
2. Add to `migrations/index.ts`:
|
|
19
|
+
```typescript
|
|
20
|
+
import * as migration006 from './006_description';
|
|
21
|
+
|
|
22
|
+
export const migrations = [
|
|
23
|
+
// ... existing migrations
|
|
24
|
+
{
|
|
25
|
+
id: '006',
|
|
26
|
+
description: migration006.description,
|
|
27
|
+
up: migration006.up,
|
|
28
|
+
down: migration006.down
|
|
29
|
+
}
|
|
30
|
+
];
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
3. **Restart app** → Migration runs automatically ✅
|
|
34
|
+
|
|
35
|
+
## ➕ Adding New Seeder
|
|
36
|
+
|
|
37
|
+
1. Create file: `seeders/new_seeder.ts`
|
|
38
|
+
```typescript
|
|
39
|
+
export const description = 'Seed default data';
|
|
40
|
+
|
|
41
|
+
export function seed(db) {
|
|
42
|
+
// Insert default data
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
2. Add to `seeders/index.ts`:
|
|
47
|
+
```typescript
|
|
48
|
+
import * as newSeeder from './new_seeder';
|
|
49
|
+
|
|
50
|
+
export const seeders = [
|
|
51
|
+
// ... existing seeders
|
|
52
|
+
{
|
|
53
|
+
name: 'new_seeder',
|
|
54
|
+
description: newSeeder.description,
|
|
55
|
+
seed: newSeeder.seed
|
|
56
|
+
}
|
|
57
|
+
];
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
3. **Restart app** → Seeder runs automatically ✅
|
|
61
|
+
|
|
62
|
+
## 🔧 Important Info
|
|
63
|
+
|
|
64
|
+
- **Automatic**: Migrations/seeders run on app startup
|
|
65
|
+
- **Safe**: Only new migrations/seeders execute
|
|
66
|
+
- **Tracked**: System remembers what's already done
|
|
67
|
+
- **Order**: Migrations run by ID (001, 002, 003...)
|
|
68
|
+
|
|
69
|
+
## 🛠️ Development Commands
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
// Reset database (dev only)
|
|
73
|
+
await resetDatabase();
|
|
74
|
+
|
|
75
|
+
// Check status
|
|
76
|
+
const pending = migrationRunner.getPendingMigrations();
|
|
77
77
|
```
|
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
import type { DatabaseConnection } from '$shared/types/database/connection';
|
|
2
|
-
import { DatabaseManager, MigrationRunner, SeederRunner } from './utils';
|
|
3
|
-
import { migrations } from './migrations';
|
|
4
|
-
import { seeders } from './seeders';
|
|
5
|
-
import { debug } from '$shared/utils/logger';
|
|
6
|
-
|
|
7
|
-
// Database manager instance
|
|
8
|
-
let dbManager: DatabaseManager | null = null;
|
|
9
|
-
|
|
10
|
-
export async function initializeDatabase(): Promise<DatabaseConnection> {
|
|
11
|
-
debug.log('database', '🔧 Initializing database system...');
|
|
12
|
-
|
|
13
|
-
try {
|
|
14
|
-
// Get database manager instance
|
|
15
|
-
dbManager = DatabaseManager.getInstance();
|
|
16
|
-
|
|
17
|
-
// Connect to database
|
|
18
|
-
const db = await dbManager.connect();
|
|
19
|
-
|
|
20
|
-
// Run migrations
|
|
21
|
-
await runMigrations(db);
|
|
22
|
-
|
|
23
|
-
// Run seeders
|
|
24
|
-
await runSeeders(db);
|
|
25
|
-
|
|
26
|
-
debug.log('database', '✅ Database system initialized successfully');
|
|
27
|
-
return db;
|
|
28
|
-
|
|
29
|
-
} catch (error) {
|
|
30
|
-
debug.error('database', '❌ Failed to initialize database:', error);
|
|
31
|
-
throw error;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
async function runMigrations(db: DatabaseConnection): Promise<void> {
|
|
36
|
-
debug.log('database', '📋 Setting up migrations...');
|
|
37
|
-
|
|
38
|
-
const migrationRunner = new MigrationRunner(db);
|
|
39
|
-
|
|
40
|
-
// Add all migrations
|
|
41
|
-
for (const migration of migrations) {
|
|
42
|
-
migrationRunner.addMigration(migration);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Run migrations
|
|
46
|
-
await migrationRunner.runMigrations();
|
|
47
|
-
|
|
48
|
-
debug.log('database', '✅ Migrations completed');
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
async function runSeeders(db: DatabaseConnection): Promise<void> {
|
|
52
|
-
debug.log('database', '🌱 Setting up seeders...');
|
|
53
|
-
|
|
54
|
-
const seederRunner = new SeederRunner(db);
|
|
55
|
-
|
|
56
|
-
// Add all seeders
|
|
57
|
-
for (const seeder of seeders) {
|
|
58
|
-
seederRunner.addSeeder(seeder);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Run seeders (only if not already executed)
|
|
62
|
-
await seederRunner.runSeeders();
|
|
63
|
-
|
|
64
|
-
debug.log('database', '✅ Seeders completed');
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export function getDatabase(): DatabaseConnection {
|
|
68
|
-
if (!dbManager || !dbManager.isConnected()) {
|
|
69
|
-
throw new Error('Database not initialized. Call initializeDatabase() first.');
|
|
70
|
-
}
|
|
71
|
-
return dbManager.getConnection();
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export function closeDatabase(): void {
|
|
75
|
-
if (dbManager) {
|
|
76
|
-
dbManager.close();
|
|
77
|
-
dbManager = null;
|
|
78
|
-
debug.log('database', '✅ Database system shutdown');
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export async function resetDatabase(): Promise<void> {
|
|
83
|
-
debug.log('database', '⚠️ Resetting database system...');
|
|
84
|
-
|
|
85
|
-
if (!dbManager) {
|
|
86
|
-
throw new Error('Database not initialized');
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Reset database (drop all tables)
|
|
90
|
-
await dbManager.resetDatabase();
|
|
91
|
-
|
|
92
|
-
// Re-run migrations and seeders
|
|
93
|
-
const db = dbManager.getConnection();
|
|
94
|
-
await runMigrations(db);
|
|
95
|
-
await runSeeders(db);
|
|
96
|
-
|
|
97
|
-
debug.log('database', '✅ Database system reset completed');
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export async function getDatabaseInfo(): Promise<object> {
|
|
101
|
-
if (!dbManager) {
|
|
102
|
-
throw new Error('Database not initialized');
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return dbManager.getDatabaseInfo();
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export async function vacuumDatabase(): Promise<void> {
|
|
109
|
-
if (!dbManager) {
|
|
110
|
-
throw new Error('Database not initialized');
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
await dbManager.vacuum();
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// Export utilities for advanced usage
|
|
117
|
-
export { DatabaseManager, MigrationRunner, SeederRunner } from './utils';
|
|
118
|
-
export { migrations } from './migrations';
|
|
1
|
+
import type { DatabaseConnection } from '$shared/types/database/connection';
|
|
2
|
+
import { DatabaseManager, MigrationRunner, SeederRunner } from './utils';
|
|
3
|
+
import { migrations } from './migrations';
|
|
4
|
+
import { seeders } from './seeders';
|
|
5
|
+
import { debug } from '$shared/utils/logger';
|
|
6
|
+
|
|
7
|
+
// Database manager instance
|
|
8
|
+
let dbManager: DatabaseManager | null = null;
|
|
9
|
+
|
|
10
|
+
export async function initializeDatabase(): Promise<DatabaseConnection> {
|
|
11
|
+
debug.log('database', '🔧 Initializing database system...');
|
|
12
|
+
|
|
13
|
+
try {
|
|
14
|
+
// Get database manager instance
|
|
15
|
+
dbManager = DatabaseManager.getInstance();
|
|
16
|
+
|
|
17
|
+
// Connect to database
|
|
18
|
+
const db = await dbManager.connect();
|
|
19
|
+
|
|
20
|
+
// Run migrations
|
|
21
|
+
await runMigrations(db);
|
|
22
|
+
|
|
23
|
+
// Run seeders
|
|
24
|
+
await runSeeders(db);
|
|
25
|
+
|
|
26
|
+
debug.log('database', '✅ Database system initialized successfully');
|
|
27
|
+
return db;
|
|
28
|
+
|
|
29
|
+
} catch (error) {
|
|
30
|
+
debug.error('database', '❌ Failed to initialize database:', error);
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async function runMigrations(db: DatabaseConnection): Promise<void> {
|
|
36
|
+
debug.log('database', '📋 Setting up migrations...');
|
|
37
|
+
|
|
38
|
+
const migrationRunner = new MigrationRunner(db);
|
|
39
|
+
|
|
40
|
+
// Add all migrations
|
|
41
|
+
for (const migration of migrations) {
|
|
42
|
+
migrationRunner.addMigration(migration);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Run migrations
|
|
46
|
+
await migrationRunner.runMigrations();
|
|
47
|
+
|
|
48
|
+
debug.log('database', '✅ Migrations completed');
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async function runSeeders(db: DatabaseConnection): Promise<void> {
|
|
52
|
+
debug.log('database', '🌱 Setting up seeders...');
|
|
53
|
+
|
|
54
|
+
const seederRunner = new SeederRunner(db);
|
|
55
|
+
|
|
56
|
+
// Add all seeders
|
|
57
|
+
for (const seeder of seeders) {
|
|
58
|
+
seederRunner.addSeeder(seeder);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Run seeders (only if not already executed)
|
|
62
|
+
await seederRunner.runSeeders();
|
|
63
|
+
|
|
64
|
+
debug.log('database', '✅ Seeders completed');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function getDatabase(): DatabaseConnection {
|
|
68
|
+
if (!dbManager || !dbManager.isConnected()) {
|
|
69
|
+
throw new Error('Database not initialized. Call initializeDatabase() first.');
|
|
70
|
+
}
|
|
71
|
+
return dbManager.getConnection();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function closeDatabase(): void {
|
|
75
|
+
if (dbManager) {
|
|
76
|
+
dbManager.close();
|
|
77
|
+
dbManager = null;
|
|
78
|
+
debug.log('database', '✅ Database system shutdown');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export async function resetDatabase(): Promise<void> {
|
|
83
|
+
debug.log('database', '⚠️ Resetting database system...');
|
|
84
|
+
|
|
85
|
+
if (!dbManager) {
|
|
86
|
+
throw new Error('Database not initialized');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Reset database (drop all tables)
|
|
90
|
+
await dbManager.resetDatabase();
|
|
91
|
+
|
|
92
|
+
// Re-run migrations and seeders
|
|
93
|
+
const db = dbManager.getConnection();
|
|
94
|
+
await runMigrations(db);
|
|
95
|
+
await runSeeders(db);
|
|
96
|
+
|
|
97
|
+
debug.log('database', '✅ Database system reset completed');
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export async function getDatabaseInfo(): Promise<object> {
|
|
101
|
+
if (!dbManager) {
|
|
102
|
+
throw new Error('Database not initialized');
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return dbManager.getDatabaseInfo();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export async function vacuumDatabase(): Promise<void> {
|
|
109
|
+
if (!dbManager) {
|
|
110
|
+
throw new Error('Database not initialized');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
await dbManager.vacuum();
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Export utilities for advanced usage
|
|
117
|
+
export { DatabaseManager, MigrationRunner, SeederRunner } from './utils';
|
|
118
|
+
export { migrations } from './migrations';
|
|
119
119
|
export { seeders } from './seeders';
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import type { DatabaseConnection } from '$shared/types/database/connection';
|
|
2
|
-
|
|
3
|
-
import { debug } from '$shared/utils/logger';
|
|
4
|
-
export const description = 'Create projects table for storing project information';
|
|
5
|
-
|
|
6
|
-
export const up = (db: DatabaseConnection): void => {
|
|
7
|
-
debug.log('migration', '📋 Creating projects table...');
|
|
8
|
-
|
|
9
|
-
db.exec(`
|
|
10
|
-
CREATE TABLE projects (
|
|
11
|
-
id TEXT PRIMARY KEY,
|
|
12
|
-
name TEXT NOT NULL,
|
|
13
|
-
path TEXT NOT NULL UNIQUE,
|
|
14
|
-
created_at TEXT NOT NULL,
|
|
15
|
-
last_opened_at TEXT NOT NULL
|
|
16
|
-
)
|
|
17
|
-
`);
|
|
18
|
-
|
|
19
|
-
// Create index for performance
|
|
20
|
-
db.exec(`
|
|
21
|
-
CREATE INDEX idx_projects_last_opened ON projects(last_opened_at)
|
|
22
|
-
`);
|
|
23
|
-
|
|
24
|
-
debug.log('migration', '✅ Projects table created');
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
export const down = (db: DatabaseConnection): void => {
|
|
28
|
-
debug.log('migration', '🗑️ Dropping projects table...');
|
|
29
|
-
db.exec('DROP TABLE IF EXISTS projects');
|
|
30
|
-
debug.log('migration', '✅ Projects table dropped');
|
|
1
|
+
import type { DatabaseConnection } from '$shared/types/database/connection';
|
|
2
|
+
|
|
3
|
+
import { debug } from '$shared/utils/logger';
|
|
4
|
+
export const description = 'Create projects table for storing project information';
|
|
5
|
+
|
|
6
|
+
export const up = (db: DatabaseConnection): void => {
|
|
7
|
+
debug.log('migration', '📋 Creating projects table...');
|
|
8
|
+
|
|
9
|
+
db.exec(`
|
|
10
|
+
CREATE TABLE projects (
|
|
11
|
+
id TEXT PRIMARY KEY,
|
|
12
|
+
name TEXT NOT NULL,
|
|
13
|
+
path TEXT NOT NULL UNIQUE,
|
|
14
|
+
created_at TEXT NOT NULL,
|
|
15
|
+
last_opened_at TEXT NOT NULL
|
|
16
|
+
)
|
|
17
|
+
`);
|
|
18
|
+
|
|
19
|
+
// Create index for performance
|
|
20
|
+
db.exec(`
|
|
21
|
+
CREATE INDEX idx_projects_last_opened ON projects(last_opened_at)
|
|
22
|
+
`);
|
|
23
|
+
|
|
24
|
+
debug.log('migration', '✅ Projects table created');
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export const down = (db: DatabaseConnection): void => {
|
|
28
|
+
debug.log('migration', '🗑️ Dropping projects table...');
|
|
29
|
+
db.exec('DROP TABLE IF EXISTS projects');
|
|
30
|
+
debug.log('migration', '✅ Projects table dropped');
|
|
31
31
|
};
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import type { DatabaseConnection } from '$shared/types/database/connection';
|
|
2
|
-
|
|
3
|
-
import { debug } from '$shared/utils/logger';
|
|
4
|
-
export const description = 'Create chat_sessions table for storing chat conversation sessions';
|
|
5
|
-
|
|
6
|
-
export const up = (db: DatabaseConnection): void => {
|
|
7
|
-
debug.log('migration', '📋 Creating chat_sessions table...');
|
|
8
|
-
|
|
9
|
-
db.exec(`
|
|
10
|
-
CREATE TABLE chat_sessions (
|
|
11
|
-
id TEXT PRIMARY KEY,
|
|
12
|
-
project_id TEXT NOT NULL,
|
|
13
|
-
title TEXT,
|
|
14
|
-
latest_sdk_session_id TEXT,
|
|
15
|
-
started_at TEXT NOT NULL,
|
|
16
|
-
ended_at TEXT,
|
|
17
|
-
FOREIGN KEY (project_id) REFERENCES projects(id)
|
|
18
|
-
)
|
|
19
|
-
`);
|
|
20
|
-
|
|
21
|
-
// Create index for performance
|
|
22
|
-
db.exec(`
|
|
23
|
-
CREATE INDEX idx_chat_sessions_project_id ON chat_sessions(project_id)
|
|
24
|
-
`);
|
|
25
|
-
|
|
26
|
-
debug.log('migration', '✅ Chat sessions table created');
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export const down = (db: DatabaseConnection): void => {
|
|
30
|
-
debug.log('migration', '🗑️ Dropping chat_sessions table...');
|
|
31
|
-
db.exec('DROP TABLE IF EXISTS chat_sessions');
|
|
32
|
-
debug.log('migration', '✅ Chat sessions table dropped');
|
|
1
|
+
import type { DatabaseConnection } from '$shared/types/database/connection';
|
|
2
|
+
|
|
3
|
+
import { debug } from '$shared/utils/logger';
|
|
4
|
+
export const description = 'Create chat_sessions table for storing chat conversation sessions';
|
|
5
|
+
|
|
6
|
+
export const up = (db: DatabaseConnection): void => {
|
|
7
|
+
debug.log('migration', '📋 Creating chat_sessions table...');
|
|
8
|
+
|
|
9
|
+
db.exec(`
|
|
10
|
+
CREATE TABLE chat_sessions (
|
|
11
|
+
id TEXT PRIMARY KEY,
|
|
12
|
+
project_id TEXT NOT NULL,
|
|
13
|
+
title TEXT,
|
|
14
|
+
latest_sdk_session_id TEXT,
|
|
15
|
+
started_at TEXT NOT NULL,
|
|
16
|
+
ended_at TEXT,
|
|
17
|
+
FOREIGN KEY (project_id) REFERENCES projects(id)
|
|
18
|
+
)
|
|
19
|
+
`);
|
|
20
|
+
|
|
21
|
+
// Create index for performance
|
|
22
|
+
db.exec(`
|
|
23
|
+
CREATE INDEX idx_chat_sessions_project_id ON chat_sessions(project_id)
|
|
24
|
+
`);
|
|
25
|
+
|
|
26
|
+
debug.log('migration', '✅ Chat sessions table created');
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export const down = (db: DatabaseConnection): void => {
|
|
30
|
+
debug.log('migration', '🗑️ Dropping chat_sessions table...');
|
|
31
|
+
db.exec('DROP TABLE IF EXISTS chat_sessions');
|
|
32
|
+
debug.log('migration', '✅ Chat sessions table dropped');
|
|
33
33
|
};
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import type { DatabaseConnection } from '$shared/types/database/connection';
|
|
2
|
-
|
|
3
|
-
import { debug } from '$shared/utils/logger';
|
|
4
|
-
export const description = 'Create messages table for storing SDKMessage data as JSON';
|
|
5
|
-
|
|
6
|
-
export const up = (db: DatabaseConnection): void => {
|
|
7
|
-
debug.log('migration', '📋 Creating messages table...');
|
|
8
|
-
|
|
9
|
-
db.exec(`
|
|
10
|
-
CREATE TABLE messages (
|
|
11
|
-
id TEXT PRIMARY KEY,
|
|
12
|
-
session_id TEXT NOT NULL,
|
|
13
|
-
timestamp TEXT NOT NULL,
|
|
14
|
-
sdk_message TEXT NOT NULL,
|
|
15
|
-
FOREIGN KEY (session_id) REFERENCES chat_sessions(id)
|
|
16
|
-
)
|
|
17
|
-
`);
|
|
18
|
-
|
|
19
|
-
// Create indexes for performance
|
|
20
|
-
db.exec(`
|
|
21
|
-
CREATE INDEX idx_messages_session_id ON messages(session_id);
|
|
22
|
-
CREATE INDEX idx_messages_timestamp ON messages(timestamp)
|
|
23
|
-
`);
|
|
24
|
-
|
|
25
|
-
debug.log('migration', '✅ Messages table created');
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export const down = (db: DatabaseConnection): void => {
|
|
29
|
-
debug.log('migration', '🗑️ Dropping messages table...');
|
|
30
|
-
db.exec('DROP TABLE IF EXISTS messages');
|
|
31
|
-
debug.log('migration', '✅ Messages table dropped');
|
|
1
|
+
import type { DatabaseConnection } from '$shared/types/database/connection';
|
|
2
|
+
|
|
3
|
+
import { debug } from '$shared/utils/logger';
|
|
4
|
+
export const description = 'Create messages table for storing SDKMessage data as JSON';
|
|
5
|
+
|
|
6
|
+
export const up = (db: DatabaseConnection): void => {
|
|
7
|
+
debug.log('migration', '📋 Creating messages table...');
|
|
8
|
+
|
|
9
|
+
db.exec(`
|
|
10
|
+
CREATE TABLE messages (
|
|
11
|
+
id TEXT PRIMARY KEY,
|
|
12
|
+
session_id TEXT NOT NULL,
|
|
13
|
+
timestamp TEXT NOT NULL,
|
|
14
|
+
sdk_message TEXT NOT NULL,
|
|
15
|
+
FOREIGN KEY (session_id) REFERENCES chat_sessions(id)
|
|
16
|
+
)
|
|
17
|
+
`);
|
|
18
|
+
|
|
19
|
+
// Create indexes for performance
|
|
20
|
+
db.exec(`
|
|
21
|
+
CREATE INDEX idx_messages_session_id ON messages(session_id);
|
|
22
|
+
CREATE INDEX idx_messages_timestamp ON messages(timestamp)
|
|
23
|
+
`);
|
|
24
|
+
|
|
25
|
+
debug.log('migration', '✅ Messages table created');
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const down = (db: DatabaseConnection): void => {
|
|
29
|
+
debug.log('migration', '🗑️ Dropping messages table...');
|
|
30
|
+
db.exec('DROP TABLE IF EXISTS messages');
|
|
31
|
+
debug.log('migration', '✅ Messages table dropped');
|
|
32
32
|
};
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import type { DatabaseConnection } from '$shared/types/database/connection';
|
|
2
|
-
|
|
3
|
-
import { debug } from '$shared/utils/logger';
|
|
4
|
-
export const description = 'Create prompt_templates table for storing reusable prompt templates';
|
|
5
|
-
|
|
6
|
-
export const up = (db: DatabaseConnection): void => {
|
|
7
|
-
debug.log('migration', '📋 Creating prompt_templates table...');
|
|
8
|
-
|
|
9
|
-
db.exec(`
|
|
10
|
-
CREATE TABLE IF NOT EXISTS prompt_templates (
|
|
11
|
-
id TEXT PRIMARY KEY,
|
|
12
|
-
name TEXT NOT NULL,
|
|
13
|
-
category TEXT NOT NULL,
|
|
14
|
-
content TEXT NOT NULL,
|
|
15
|
-
description TEXT NOT NULL,
|
|
16
|
-
created_at TEXT NOT NULL,
|
|
17
|
-
tags TEXT,
|
|
18
|
-
usage_count INTEGER DEFAULT 0
|
|
19
|
-
)
|
|
20
|
-
`);
|
|
21
|
-
|
|
22
|
-
// Create index for performance
|
|
23
|
-
db.exec(`
|
|
24
|
-
CREATE INDEX IF NOT EXISTS idx_prompt_templates_category ON prompt_templates(category)
|
|
25
|
-
`);
|
|
26
|
-
|
|
27
|
-
debug.log('migration', '✅ Prompt templates table created');
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export const down = (db: DatabaseConnection): void => {
|
|
31
|
-
debug.log('migration', '🗑️ Dropping prompt_templates table...');
|
|
32
|
-
db.exec('DROP TABLE IF EXISTS prompt_templates');
|
|
33
|
-
debug.log('migration', '✅ Prompt templates table dropped');
|
|
34
|
-
};
|
|
1
|
+
import type { DatabaseConnection } from '$shared/types/database/connection';
|
|
2
|
+
|
|
3
|
+
import { debug } from '$shared/utils/logger';
|
|
4
|
+
export const description = 'Create prompt_templates table for storing reusable prompt templates';
|
|
5
|
+
|
|
6
|
+
export const up = (db: DatabaseConnection): void => {
|
|
7
|
+
debug.log('migration', '📋 Creating prompt_templates table...');
|
|
8
|
+
|
|
9
|
+
db.exec(`
|
|
10
|
+
CREATE TABLE IF NOT EXISTS prompt_templates (
|
|
11
|
+
id TEXT PRIMARY KEY,
|
|
12
|
+
name TEXT NOT NULL,
|
|
13
|
+
category TEXT NOT NULL,
|
|
14
|
+
content TEXT NOT NULL,
|
|
15
|
+
description TEXT NOT NULL,
|
|
16
|
+
created_at TEXT NOT NULL,
|
|
17
|
+
tags TEXT,
|
|
18
|
+
usage_count INTEGER DEFAULT 0
|
|
19
|
+
)
|
|
20
|
+
`);
|
|
21
|
+
|
|
22
|
+
// Create index for performance
|
|
23
|
+
db.exec(`
|
|
24
|
+
CREATE INDEX IF NOT EXISTS idx_prompt_templates_category ON prompt_templates(category)
|
|
25
|
+
`);
|
|
26
|
+
|
|
27
|
+
debug.log('migration', '✅ Prompt templates table created');
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const down = (db: DatabaseConnection): void => {
|
|
31
|
+
debug.log('migration', '🗑️ Dropping prompt_templates table...');
|
|
32
|
+
db.exec('DROP TABLE IF EXISTS prompt_templates');
|
|
33
|
+
debug.log('migration', '✅ Prompt templates table dropped');
|
|
34
|
+
};
|