snow-ai 0.4.16 → 0.4.17
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/bundle/cli.mjs +477445 -0
- package/bundle/sql-wasm.wasm +0 -0
- package/package.json +31 -26
- package/dist/agents/codebaseIndexAgent.d.ts +0 -102
- package/dist/agents/codebaseIndexAgent.js +0 -641
- package/dist/agents/codebaseReviewAgent.d.ts +0 -61
- package/dist/agents/codebaseReviewAgent.js +0 -301
- package/dist/agents/compactAgent.d.ts +0 -55
- package/dist/agents/compactAgent.js +0 -306
- package/dist/agents/promptOptimizeAgent.d.ts +0 -54
- package/dist/agents/promptOptimizeAgent.js +0 -268
- package/dist/agents/reviewAgent.d.ts +0 -50
- package/dist/agents/reviewAgent.js +0 -265
- package/dist/agents/summaryAgent.d.ts +0 -57
- package/dist/agents/summaryAgent.js +0 -260
- package/dist/api/anthropic.d.ts +0 -44
- package/dist/api/anthropic.js +0 -598
- package/dist/api/chat.d.ts +0 -73
- package/dist/api/chat.js +0 -386
- package/dist/api/embedding.d.ts +0 -34
- package/dist/api/embedding.js +0 -80
- package/dist/api/gemini.d.ts +0 -31
- package/dist/api/gemini.js +0 -445
- package/dist/api/models.d.ts +0 -15
- package/dist/api/models.js +0 -139
- package/dist/api/responses.d.ts +0 -38
- package/dist/api/responses.js +0 -515
- package/dist/api/systemPrompt.d.ts +0 -4
- package/dist/api/systemPrompt.js +0 -408
- package/dist/api/types.d.ts +0 -53
- package/dist/api/types.js +0 -4
- package/dist/app.d.ts +0 -8
- package/dist/app.js +0 -112
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +0 -199
- package/dist/hooks/useAgentPicker.d.ts +0 -14
- package/dist/hooks/useAgentPicker.js +0 -119
- package/dist/hooks/useClipboard.d.ts +0 -4
- package/dist/hooks/useClipboard.js +0 -175
- package/dist/hooks/useCommandHandler.d.ts +0 -35
- package/dist/hooks/useCommandHandler.js +0 -346
- package/dist/hooks/useCommandPanel.d.ts +0 -17
- package/dist/hooks/useCommandPanel.js +0 -114
- package/dist/hooks/useConversation.d.ts +0 -49
- package/dist/hooks/useConversation.js +0 -1052
- package/dist/hooks/useFilePicker.d.ts +0 -18
- package/dist/hooks/useFilePicker.js +0 -224
- package/dist/hooks/useGlobalExit.d.ts +0 -5
- package/dist/hooks/useGlobalExit.js +0 -34
- package/dist/hooks/useGlobalNavigation.d.ts +0 -6
- package/dist/hooks/useGlobalNavigation.js +0 -17
- package/dist/hooks/useHistoryNavigation.d.ts +0 -35
- package/dist/hooks/useHistoryNavigation.js +0 -133
- package/dist/hooks/useInputBuffer.d.ts +0 -6
- package/dist/hooks/useInputBuffer.js +0 -45
- package/dist/hooks/useKeyboardInput.d.ts +0 -80
- package/dist/hooks/useKeyboardInput.js +0 -608
- package/dist/hooks/useSessionManagement.d.ts +0 -10
- package/dist/hooks/useSessionManagement.js +0 -43
- package/dist/hooks/useSessionSave.d.ts +0 -8
- package/dist/hooks/useSessionSave.js +0 -63
- package/dist/hooks/useSnapshotState.d.ts +0 -26
- package/dist/hooks/useSnapshotState.js +0 -28
- package/dist/hooks/useStreamingState.d.ts +0 -33
- package/dist/hooks/useStreamingState.js +0 -105
- package/dist/hooks/useTerminalFocus.d.ts +0 -28
- package/dist/hooks/useTerminalFocus.js +0 -87
- package/dist/hooks/useTerminalSize.d.ts +0 -4
- package/dist/hooks/useTerminalSize.js +0 -20
- package/dist/hooks/useTodoPicker.d.ts +0 -16
- package/dist/hooks/useTodoPicker.js +0 -94
- package/dist/hooks/useToolConfirmation.d.ts +0 -19
- package/dist/hooks/useToolConfirmation.js +0 -61
- package/dist/hooks/useVSCodeState.d.ts +0 -8
- package/dist/hooks/useVSCodeState.js +0 -81
- package/dist/i18n/I18nContext.d.ts +0 -14
- package/dist/i18n/I18nContext.js +0 -24
- package/dist/i18n/index.d.ts +0 -3
- package/dist/i18n/index.js +0 -2
- package/dist/i18n/lang/en.d.ts +0 -2
- package/dist/i18n/lang/en.js +0 -502
- package/dist/i18n/lang/es.d.ts +0 -2
- package/dist/i18n/lang/es.js +0 -502
- package/dist/i18n/lang/ja.d.ts +0 -2
- package/dist/i18n/lang/ja.js +0 -502
- package/dist/i18n/lang/ko.d.ts +0 -2
- package/dist/i18n/lang/ko.js +0 -502
- package/dist/i18n/lang/zh-TW.d.ts +0 -2
- package/dist/i18n/lang/zh-TW.js +0 -502
- package/dist/i18n/lang/zh.d.ts +0 -2
- package/dist/i18n/lang/zh.js +0 -502
- package/dist/i18n/translations.d.ts +0 -2
- package/dist/i18n/translations.js +0 -14
- package/dist/i18n/types.d.ts +0 -478
- package/dist/i18n/types.js +0 -1
- package/dist/mcp/aceCodeSearch.d.ts +0 -247
- package/dist/mcp/aceCodeSearch.js +0 -1058
- package/dist/mcp/bash.d.ts +0 -50
- package/dist/mcp/bash.js +0 -153
- package/dist/mcp/codebaseSearch.d.ts +0 -44
- package/dist/mcp/codebaseSearch.js +0 -275
- package/dist/mcp/filesystem.d.ts +0 -392
- package/dist/mcp/filesystem.js +0 -1445
- package/dist/mcp/ideDiagnostics.d.ts +0 -36
- package/dist/mcp/ideDiagnostics.js +0 -90
- package/dist/mcp/notebook.d.ts +0 -10
- package/dist/mcp/notebook.js +0 -367
- package/dist/mcp/subagent.d.ts +0 -37
- package/dist/mcp/subagent.js +0 -113
- package/dist/mcp/todo.d.ts +0 -46
- package/dist/mcp/todo.js +0 -511
- package/dist/mcp/types/aceCodeSearch.types.d.ts +0 -92
- package/dist/mcp/types/aceCodeSearch.types.js +0 -4
- package/dist/mcp/types/bash.types.d.ts +0 -13
- package/dist/mcp/types/bash.types.js +0 -4
- package/dist/mcp/types/filesystem.types.d.ts +0 -210
- package/dist/mcp/types/filesystem.types.js +0 -27
- package/dist/mcp/types/todo.types.d.ts +0 -27
- package/dist/mcp/types/todo.types.js +0 -4
- package/dist/mcp/types/websearch.types.d.ts +0 -30
- package/dist/mcp/types/websearch.types.js +0 -4
- package/dist/mcp/utils/aceCodeSearch/filesystem.utils.d.ts +0 -34
- package/dist/mcp/utils/aceCodeSearch/filesystem.utils.js +0 -146
- package/dist/mcp/utils/aceCodeSearch/language.utils.d.ts +0 -14
- package/dist/mcp/utils/aceCodeSearch/language.utils.js +0 -418
- package/dist/mcp/utils/aceCodeSearch/search.utils.d.ts +0 -31
- package/dist/mcp/utils/aceCodeSearch/search.utils.js +0 -136
- package/dist/mcp/utils/aceCodeSearch/symbol.utils.d.ts +0 -20
- package/dist/mcp/utils/aceCodeSearch/symbol.utils.js +0 -141
- package/dist/mcp/utils/bash/security.utils.d.ts +0 -20
- package/dist/mcp/utils/bash/security.utils.js +0 -34
- package/dist/mcp/utils/filesystem/batch-operations.utils.d.ts +0 -39
- package/dist/mcp/utils/filesystem/batch-operations.utils.js +0 -182
- package/dist/mcp/utils/filesystem/code-analysis.utils.d.ts +0 -18
- package/dist/mcp/utils/filesystem/code-analysis.utils.js +0 -165
- package/dist/mcp/utils/filesystem/match-finder.utils.d.ts +0 -16
- package/dist/mcp/utils/filesystem/match-finder.utils.js +0 -85
- package/dist/mcp/utils/filesystem/office-parser.utils.d.ts +0 -43
- package/dist/mcp/utils/filesystem/office-parser.utils.js +0 -163
- package/dist/mcp/utils/filesystem/path-fixer.utils.d.ts +0 -7
- package/dist/mcp/utils/filesystem/path-fixer.utils.js +0 -60
- package/dist/mcp/utils/filesystem/similarity.utils.d.ts +0 -22
- package/dist/mcp/utils/filesystem/similarity.utils.js +0 -75
- package/dist/mcp/utils/todo/date.utils.d.ts +0 -9
- package/dist/mcp/utils/todo/date.utils.js +0 -14
- package/dist/mcp/utils/websearch/browser.utils.d.ts +0 -8
- package/dist/mcp/utils/websearch/browser.utils.js +0 -58
- package/dist/mcp/utils/websearch/text.utils.d.ts +0 -16
- package/dist/mcp/utils/websearch/text.utils.js +0 -39
- package/dist/mcp/websearch.d.ts +0 -88
- package/dist/mcp/websearch.js +0 -375
- package/dist/test/logger-test.d.ts +0 -1
- package/dist/test/logger-test.js +0 -7
- package/dist/types/index.d.ts +0 -15
- package/dist/types/index.js +0 -1
- package/dist/ui/components/AgentPickerPanel.d.ts +0 -10
- package/dist/ui/components/AgentPickerPanel.js +0 -74
- package/dist/ui/components/ChatInput.d.ts +0 -46
- package/dist/ui/components/ChatInput.js +0 -384
- package/dist/ui/components/CommandPanel.d.ts +0 -15
- package/dist/ui/components/CommandPanel.js +0 -80
- package/dist/ui/components/DiffViewer.d.ts +0 -11
- package/dist/ui/components/DiffViewer.js +0 -178
- package/dist/ui/components/FileList.d.ts +0 -15
- package/dist/ui/components/FileList.js +0 -360
- package/dist/ui/components/FileRollbackConfirmation.d.ts +0 -8
- package/dist/ui/components/FileRollbackConfirmation.js +0 -108
- package/dist/ui/components/HelpPanel.d.ts +0 -2
- package/dist/ui/components/HelpPanel.js +0 -67
- package/dist/ui/components/MCPInfoPanel.d.ts +0 -2
- package/dist/ui/components/MCPInfoPanel.js +0 -108
- package/dist/ui/components/MCPInfoScreen.d.ts +0 -7
- package/dist/ui/components/MCPInfoScreen.js +0 -115
- package/dist/ui/components/MarkdownRenderer.d.ts +0 -6
- package/dist/ui/components/MarkdownRenderer.js +0 -70
- package/dist/ui/components/Menu.d.ts +0 -17
- package/dist/ui/components/Menu.js +0 -88
- package/dist/ui/components/MessageList.d.ts +0 -56
- package/dist/ui/components/MessageList.js +0 -97
- package/dist/ui/components/PendingMessages.d.ts +0 -13
- package/dist/ui/components/PendingMessages.js +0 -29
- package/dist/ui/components/PendingToolCalls.d.ts +0 -11
- package/dist/ui/components/PendingToolCalls.js +0 -35
- package/dist/ui/components/ScrollableSelectInput.d.ts +0 -29
- package/dist/ui/components/ScrollableSelectInput.js +0 -157
- package/dist/ui/components/SessionListPanel.d.ts +0 -7
- package/dist/ui/components/SessionListPanel.js +0 -175
- package/dist/ui/components/SessionListScreen.d.ts +0 -7
- package/dist/ui/components/SessionListScreen.js +0 -217
- package/dist/ui/components/SessionListScreenWrapper.d.ts +0 -7
- package/dist/ui/components/SessionListScreenWrapper.js +0 -14
- package/dist/ui/components/ShimmerText.d.ts +0 -9
- package/dist/ui/components/ShimmerText.js +0 -30
- package/dist/ui/components/TodoPickerPanel.d.ts +0 -14
- package/dist/ui/components/TodoPickerPanel.js +0 -119
- package/dist/ui/components/TodoTree.d.ts +0 -15
- package/dist/ui/components/TodoTree.js +0 -60
- package/dist/ui/components/ToolConfirmation.d.ts +0 -21
- package/dist/ui/components/ToolConfirmation.js +0 -204
- package/dist/ui/components/ToolResultPreview.d.ts +0 -13
- package/dist/ui/components/ToolResultPreview.js +0 -337
- package/dist/ui/components/UsagePanel.d.ts +0 -2
- package/dist/ui/components/UsagePanel.js +0 -394
- package/dist/ui/contexts/ThemeContext.d.ts +0 -13
- package/dist/ui/contexts/ThemeContext.js +0 -28
- package/dist/ui/pages/ChatScreen.d.ts +0 -6
- package/dist/ui/pages/ChatScreen.js +0 -1519
- package/dist/ui/pages/CodeBaseConfigScreen.d.ts +0 -8
- package/dist/ui/pages/CodeBaseConfigScreen.js +0 -350
- package/dist/ui/pages/ConfigScreen.d.ts +0 -8
- package/dist/ui/pages/ConfigScreen.js +0 -1101
- package/dist/ui/pages/CustomHeadersScreen.d.ts +0 -6
- package/dist/ui/pages/CustomHeadersScreen.js +0 -502
- package/dist/ui/pages/HeadlessModeScreen.d.ts +0 -7
- package/dist/ui/pages/HeadlessModeScreen.js +0 -381
- package/dist/ui/pages/LanguageSettingsScreen.d.ts +0 -7
- package/dist/ui/pages/LanguageSettingsScreen.js +0 -91
- package/dist/ui/pages/MCPConfigScreen.d.ts +0 -6
- package/dist/ui/pages/MCPConfigScreen.js +0 -55
- package/dist/ui/pages/ProxyConfigScreen.d.ts +0 -8
- package/dist/ui/pages/ProxyConfigScreen.js +0 -149
- package/dist/ui/pages/SensitiveCommandConfigScreen.d.ts +0 -7
- package/dist/ui/pages/SensitiveCommandConfigScreen.js +0 -271
- package/dist/ui/pages/SubAgentConfigScreen.d.ts +0 -9
- package/dist/ui/pages/SubAgentConfigScreen.js +0 -435
- package/dist/ui/pages/SubAgentListScreen.d.ts +0 -9
- package/dist/ui/pages/SubAgentListScreen.js +0 -131
- package/dist/ui/pages/SystemPromptConfigScreen.d.ts +0 -6
- package/dist/ui/pages/SystemPromptConfigScreen.js +0 -326
- package/dist/ui/pages/ThemeSettingsScreen.d.ts +0 -7
- package/dist/ui/pages/ThemeSettingsScreen.js +0 -106
- package/dist/ui/pages/WelcomeScreen.d.ts +0 -7
- package/dist/ui/pages/WelcomeScreen.js +0 -217
- package/dist/ui/themes/index.d.ts +0 -23
- package/dist/ui/themes/index.js +0 -140
- package/dist/utils/apiConfig.d.ts +0 -126
- package/dist/utils/apiConfig.js +0 -423
- package/dist/utils/autoCompress.d.ts +0 -15
- package/dist/utils/autoCompress.js +0 -24
- package/dist/utils/chatExporter.d.ts +0 -9
- package/dist/utils/chatExporter.js +0 -118
- package/dist/utils/checkpointManager.d.ts +0 -74
- package/dist/utils/checkpointManager.js +0 -181
- package/dist/utils/codebaseConfig.d.ts +0 -16
- package/dist/utils/codebaseConfig.js +0 -67
- package/dist/utils/codebaseDatabase.d.ts +0 -102
- package/dist/utils/codebaseDatabase.js +0 -333
- package/dist/utils/codebaseSearchEvents.d.ts +0 -16
- package/dist/utils/codebaseSearchEvents.js +0 -13
- package/dist/utils/commandExecutor.d.ts +0 -13
- package/dist/utils/commandExecutor.js +0 -26
- package/dist/utils/commands/agent.d.ts +0 -2
- package/dist/utils/commands/agent.js +0 -12
- package/dist/utils/commands/clear.d.ts +0 -2
- package/dist/utils/commands/clear.js +0 -12
- package/dist/utils/commands/compact.d.ts +0 -2
- package/dist/utils/commands/compact.js +0 -12
- package/dist/utils/commands/export.d.ts +0 -2
- package/dist/utils/commands/export.js +0 -12
- package/dist/utils/commands/help.d.ts +0 -2
- package/dist/utils/commands/help.js +0 -11
- package/dist/utils/commands/home.d.ts +0 -2
- package/dist/utils/commands/home.js +0 -34
- package/dist/utils/commands/ide.d.ts +0 -2
- package/dist/utils/commands/ide.js +0 -32
- package/dist/utils/commands/init.d.ts +0 -2
- package/dist/utils/commands/init.js +0 -93
- package/dist/utils/commands/mcp.d.ts +0 -2
- package/dist/utils/commands/mcp.js +0 -12
- package/dist/utils/commands/resume.d.ts +0 -2
- package/dist/utils/commands/resume.js +0 -12
- package/dist/utils/commands/review.d.ts +0 -2
- package/dist/utils/commands/review.js +0 -81
- package/dist/utils/commands/role.d.ts +0 -2
- package/dist/utils/commands/role.js +0 -37
- package/dist/utils/commands/todoPicker.d.ts +0 -2
- package/dist/utils/commands/todoPicker.js +0 -12
- package/dist/utils/commands/usage.d.ts +0 -2
- package/dist/utils/commands/usage.js +0 -12
- package/dist/utils/commands/yolo.d.ts +0 -2
- package/dist/utils/commands/yolo.js +0 -12
- package/dist/utils/configManager.d.ts +0 -45
- package/dist/utils/configManager.js +0 -303
- package/dist/utils/contextCompressor.d.ts +0 -16
- package/dist/utils/contextCompressor.js +0 -334
- package/dist/utils/devMode.d.ts +0 -13
- package/dist/utils/devMode.js +0 -54
- package/dist/utils/escapeHandler.d.ts +0 -79
- package/dist/utils/escapeHandler.js +0 -153
- package/dist/utils/fileDialog.d.ts +0 -9
- package/dist/utils/fileDialog.js +0 -74
- package/dist/utils/fileUtils.d.ts +0 -40
- package/dist/utils/fileUtils.js +0 -185
- package/dist/utils/historyManager.d.ts +0 -45
- package/dist/utils/historyManager.js +0 -159
- package/dist/utils/incrementalSnapshot.d.ts +0 -109
- package/dist/utils/incrementalSnapshot.js +0 -383
- package/dist/utils/index.d.ts +0 -11
- package/dist/utils/index.js +0 -18
- package/dist/utils/languageConfig.d.ts +0 -21
- package/dist/utils/languageConfig.js +0 -61
- package/dist/utils/logger.d.ts +0 -37
- package/dist/utils/logger.js +0 -122
- package/dist/utils/mcpToolsManager.d.ts +0 -52
- package/dist/utils/mcpToolsManager.js +0 -878
- package/dist/utils/messageFormatter.d.ts +0 -12
- package/dist/utils/messageFormatter.js +0 -115
- package/dist/utils/notebookManager.d.ts +0 -59
- package/dist/utils/notebookManager.js +0 -213
- package/dist/utils/patch-highlight.d.ts +0 -5
- package/dist/utils/patch-highlight.js +0 -23
- package/dist/utils/processManager.d.ts +0 -27
- package/dist/utils/processManager.js +0 -75
- package/dist/utils/proxyUtils.d.ts +0 -15
- package/dist/utils/proxyUtils.js +0 -50
- package/dist/utils/resourceMonitor.d.ts +0 -65
- package/dist/utils/resourceMonitor.js +0 -175
- package/dist/utils/retryUtils.d.ts +0 -49
- package/dist/utils/retryUtils.js +0 -303
- package/dist/utils/sensitiveCommandManager.d.ts +0 -53
- package/dist/utils/sensitiveCommandManager.js +0 -308
- package/dist/utils/sessionConverter.d.ts +0 -7
- package/dist/utils/sessionConverter.js +0 -306
- package/dist/utils/sessionManager.d.ts +0 -53
- package/dist/utils/sessionManager.js +0 -371
- package/dist/utils/subAgentConfig.d.ts +0 -50
- package/dist/utils/subAgentConfig.js +0 -221
- package/dist/utils/subAgentExecutor.d.ts +0 -40
- package/dist/utils/subAgentExecutor.js +0 -434
- package/dist/utils/terminal.d.ts +0 -5
- package/dist/utils/terminal.js +0 -13
- package/dist/utils/textBuffer.d.ts +0 -99
- package/dist/utils/textBuffer.js +0 -547
- package/dist/utils/textUtils.d.ts +0 -37
- package/dist/utils/textUtils.js +0 -102
- package/dist/utils/themeConfig.d.ts +0 -21
- package/dist/utils/themeConfig.js +0 -61
- package/dist/utils/todoPreprocessor.d.ts +0 -5
- package/dist/utils/todoPreprocessor.js +0 -18
- package/dist/utils/todoScanner.d.ts +0 -8
- package/dist/utils/todoScanner.js +0 -148
- package/dist/utils/toolDisplayConfig.d.ts +0 -16
- package/dist/utils/toolDisplayConfig.js +0 -47
- package/dist/utils/toolExecutor.d.ts +0 -37
- package/dist/utils/toolExecutor.js +0 -224
- package/dist/utils/usageLogger.d.ts +0 -11
- package/dist/utils/usageLogger.js +0 -114
- package/dist/utils/vscodeConnection.d.ts +0 -76
- package/dist/utils/vscodeConnection.js +0 -430
- package/dist/utils/workspaceSnapshot.d.ts +0 -63
- package/dist/utils/workspaceSnapshot.js +0 -300
|
@@ -1,333 +0,0 @@
|
|
|
1
|
-
import Database from 'better-sqlite3';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import fs from 'node:fs';
|
|
4
|
-
import { logger } from './logger.js';
|
|
5
|
-
/**
|
|
6
|
-
* Codebase SQLite database manager
|
|
7
|
-
* Handles embedding storage with vector support
|
|
8
|
-
*/
|
|
9
|
-
export class CodebaseDatabase {
|
|
10
|
-
constructor(projectRoot) {
|
|
11
|
-
Object.defineProperty(this, "db", {
|
|
12
|
-
enumerable: true,
|
|
13
|
-
configurable: true,
|
|
14
|
-
writable: true,
|
|
15
|
-
value: null
|
|
16
|
-
});
|
|
17
|
-
Object.defineProperty(this, "dbPath", {
|
|
18
|
-
enumerable: true,
|
|
19
|
-
configurable: true,
|
|
20
|
-
writable: true,
|
|
21
|
-
value: void 0
|
|
22
|
-
});
|
|
23
|
-
Object.defineProperty(this, "initialized", {
|
|
24
|
-
enumerable: true,
|
|
25
|
-
configurable: true,
|
|
26
|
-
writable: true,
|
|
27
|
-
value: false
|
|
28
|
-
});
|
|
29
|
-
// Store database in .snow/codebase directory
|
|
30
|
-
const snowDir = path.join(projectRoot, '.snow', 'codebase');
|
|
31
|
-
if (!fs.existsSync(snowDir)) {
|
|
32
|
-
fs.mkdirSync(snowDir, { recursive: true });
|
|
33
|
-
}
|
|
34
|
-
this.dbPath = path.join(snowDir, 'embeddings.db');
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Initialize database and create tables
|
|
38
|
-
*/
|
|
39
|
-
initialize() {
|
|
40
|
-
if (this.initialized)
|
|
41
|
-
return;
|
|
42
|
-
try {
|
|
43
|
-
// Open database with better-sqlite3
|
|
44
|
-
this.db = new Database(this.dbPath);
|
|
45
|
-
// Enable WAL mode for better concurrency
|
|
46
|
-
this.db.pragma('journal_mode = WAL');
|
|
47
|
-
// Create tables
|
|
48
|
-
this.createTables();
|
|
49
|
-
this.initialized = true;
|
|
50
|
-
logger.info('Codebase database initialized', { path: this.dbPath });
|
|
51
|
-
}
|
|
52
|
-
catch (error) {
|
|
53
|
-
logger.error('Failed to initialize codebase database', error);
|
|
54
|
-
throw error;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Create database tables
|
|
59
|
-
*/
|
|
60
|
-
createTables() {
|
|
61
|
-
if (!this.db)
|
|
62
|
-
throw new Error('Database not initialized');
|
|
63
|
-
// Code chunks table with embeddings
|
|
64
|
-
this.db.exec(`
|
|
65
|
-
CREATE TABLE IF NOT EXISTS code_chunks (
|
|
66
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
67
|
-
file_path TEXT NOT NULL,
|
|
68
|
-
content TEXT NOT NULL,
|
|
69
|
-
start_line INTEGER NOT NULL,
|
|
70
|
-
end_line INTEGER NOT NULL,
|
|
71
|
-
embedding BLOB NOT NULL,
|
|
72
|
-
file_hash TEXT NOT NULL,
|
|
73
|
-
created_at INTEGER NOT NULL,
|
|
74
|
-
updated_at INTEGER NOT NULL
|
|
75
|
-
);
|
|
76
|
-
|
|
77
|
-
CREATE INDEX IF NOT EXISTS idx_file_path ON code_chunks(file_path);
|
|
78
|
-
CREATE INDEX IF NOT EXISTS idx_file_hash ON code_chunks(file_hash);
|
|
79
|
-
`);
|
|
80
|
-
// Indexing progress table
|
|
81
|
-
this.db.exec(`
|
|
82
|
-
CREATE TABLE IF NOT EXISTS index_progress (
|
|
83
|
-
id INTEGER PRIMARY KEY CHECK (id = 1),
|
|
84
|
-
total_files INTEGER NOT NULL DEFAULT 0,
|
|
85
|
-
processed_files INTEGER NOT NULL DEFAULT 0,
|
|
86
|
-
total_chunks INTEGER NOT NULL DEFAULT 0,
|
|
87
|
-
status TEXT NOT NULL DEFAULT 'idle',
|
|
88
|
-
last_error TEXT,
|
|
89
|
-
last_processed_file TEXT,
|
|
90
|
-
started_at INTEGER,
|
|
91
|
-
completed_at INTEGER,
|
|
92
|
-
updated_at INTEGER NOT NULL,
|
|
93
|
-
watcher_enabled INTEGER NOT NULL DEFAULT 0
|
|
94
|
-
);
|
|
95
|
-
|
|
96
|
-
-- Initialize progress record if not exists
|
|
97
|
-
INSERT OR IGNORE INTO index_progress (id, updated_at) VALUES (1, ${Date.now()});
|
|
98
|
-
`);
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Insert or update code chunks (batch operation)
|
|
102
|
-
*/
|
|
103
|
-
insertChunks(chunks) {
|
|
104
|
-
if (!this.db)
|
|
105
|
-
throw new Error('Database not initialized');
|
|
106
|
-
const insert = this.db.prepare(`
|
|
107
|
-
INSERT INTO code_chunks (
|
|
108
|
-
file_path, content, start_line, end_line,
|
|
109
|
-
embedding, file_hash, created_at, updated_at
|
|
110
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
111
|
-
`);
|
|
112
|
-
const transaction = this.db.transaction((chunks) => {
|
|
113
|
-
for (const chunk of chunks) {
|
|
114
|
-
// Convert embedding array to Buffer for storage
|
|
115
|
-
const embeddingBuffer = Buffer.from(new Float32Array(chunk.embedding).buffer);
|
|
116
|
-
insert.run(chunk.filePath, chunk.content, chunk.startLine, chunk.endLine, embeddingBuffer, chunk.fileHash, chunk.createdAt, chunk.updatedAt);
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
transaction(chunks);
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Delete chunks by file path
|
|
123
|
-
*/
|
|
124
|
-
deleteChunksByFile(filePath) {
|
|
125
|
-
if (!this.db)
|
|
126
|
-
throw new Error('Database not initialized');
|
|
127
|
-
const stmt = this.db.prepare('DELETE FROM code_chunks WHERE file_path = ?');
|
|
128
|
-
stmt.run(filePath);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Get chunks by file path
|
|
132
|
-
*/
|
|
133
|
-
getChunksByFile(filePath) {
|
|
134
|
-
if (!this.db)
|
|
135
|
-
throw new Error('Database not initialized');
|
|
136
|
-
const stmt = this.db.prepare('SELECT * FROM code_chunks WHERE file_path = ?');
|
|
137
|
-
const rows = stmt.all(filePath);
|
|
138
|
-
return rows.map(row => this.rowToChunk(row));
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Check if file has been indexed by hash
|
|
142
|
-
*/
|
|
143
|
-
hasFileHash(fileHash) {
|
|
144
|
-
if (!this.db)
|
|
145
|
-
throw new Error('Database not initialized');
|
|
146
|
-
const stmt = this.db.prepare('SELECT COUNT(*) as count FROM code_chunks WHERE file_hash = ?');
|
|
147
|
-
const result = stmt.get(fileHash);
|
|
148
|
-
return result.count > 0;
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Get total chunks count
|
|
152
|
-
*/
|
|
153
|
-
getTotalChunks() {
|
|
154
|
-
if (!this.db)
|
|
155
|
-
throw new Error('Database not initialized');
|
|
156
|
-
const stmt = this.db.prepare('SELECT COUNT(*) as count FROM code_chunks');
|
|
157
|
-
const result = stmt.get();
|
|
158
|
-
return result.count;
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Search similar code chunks by embedding
|
|
162
|
-
* Uses cosine similarity
|
|
163
|
-
*/
|
|
164
|
-
searchSimilar(queryEmbedding, limit = 10) {
|
|
165
|
-
if (!this.db)
|
|
166
|
-
throw new Error('Database not initialized');
|
|
167
|
-
// Get all chunks (in production, use approximate nearest neighbor)
|
|
168
|
-
const stmt = this.db.prepare('SELECT * FROM code_chunks');
|
|
169
|
-
const rows = stmt.all();
|
|
170
|
-
// Calculate cosine similarity for each chunk
|
|
171
|
-
const results = rows.map(row => {
|
|
172
|
-
const chunk = this.rowToChunk(row);
|
|
173
|
-
const similarity = this.cosineSimilarity(queryEmbedding, chunk.embedding);
|
|
174
|
-
return { chunk, similarity };
|
|
175
|
-
});
|
|
176
|
-
// Sort by similarity and return top N
|
|
177
|
-
results.sort((a, b) => b.similarity - a.similarity);
|
|
178
|
-
return results.slice(0, limit).map(r => r.chunk);
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Update indexing progress
|
|
182
|
-
*/
|
|
183
|
-
updateProgress(progress) {
|
|
184
|
-
if (!this.db || !this.initialized) {
|
|
185
|
-
// Silently ignore if database is not initialized
|
|
186
|
-
return;
|
|
187
|
-
}
|
|
188
|
-
const fields = [];
|
|
189
|
-
const values = [];
|
|
190
|
-
if (progress.totalFiles !== undefined) {
|
|
191
|
-
fields.push('total_files = ?');
|
|
192
|
-
values.push(progress.totalFiles);
|
|
193
|
-
}
|
|
194
|
-
if (progress.processedFiles !== undefined) {
|
|
195
|
-
fields.push('processed_files = ?');
|
|
196
|
-
values.push(progress.processedFiles);
|
|
197
|
-
}
|
|
198
|
-
if (progress.totalChunks !== undefined) {
|
|
199
|
-
fields.push('total_chunks = ?');
|
|
200
|
-
values.push(progress.totalChunks);
|
|
201
|
-
}
|
|
202
|
-
if (progress.status !== undefined) {
|
|
203
|
-
fields.push('status = ?');
|
|
204
|
-
values.push(progress.status);
|
|
205
|
-
}
|
|
206
|
-
if (progress.lastError !== undefined) {
|
|
207
|
-
fields.push('last_error = ?');
|
|
208
|
-
values.push(progress.lastError);
|
|
209
|
-
}
|
|
210
|
-
if (progress.lastProcessedFile !== undefined) {
|
|
211
|
-
fields.push('last_processed_file = ?');
|
|
212
|
-
values.push(progress.lastProcessedFile);
|
|
213
|
-
}
|
|
214
|
-
if (progress.startedAt !== undefined) {
|
|
215
|
-
fields.push('started_at = ?');
|
|
216
|
-
values.push(progress.startedAt);
|
|
217
|
-
}
|
|
218
|
-
if (progress.completedAt !== undefined) {
|
|
219
|
-
fields.push('completed_at = ?');
|
|
220
|
-
values.push(progress.completedAt);
|
|
221
|
-
}
|
|
222
|
-
fields.push('updated_at = ?');
|
|
223
|
-
values.push(Date.now());
|
|
224
|
-
const sql = `UPDATE index_progress SET ${fields.join(', ')} WHERE id = 1`;
|
|
225
|
-
this.db.prepare(sql).run(...values);
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Get current indexing progress
|
|
229
|
-
*/
|
|
230
|
-
getProgress() {
|
|
231
|
-
if (!this.db)
|
|
232
|
-
throw new Error('Database not initialized');
|
|
233
|
-
const stmt = this.db.prepare('SELECT * FROM index_progress WHERE id = 1');
|
|
234
|
-
const row = stmt.get();
|
|
235
|
-
return {
|
|
236
|
-
totalFiles: row.total_files,
|
|
237
|
-
processedFiles: row.processed_files,
|
|
238
|
-
totalChunks: row.total_chunks,
|
|
239
|
-
status: row.status,
|
|
240
|
-
lastError: row.last_error,
|
|
241
|
-
lastProcessedFile: row.last_processed_file,
|
|
242
|
-
startedAt: row.started_at,
|
|
243
|
-
completedAt: row.completed_at,
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Set watcher enabled status
|
|
248
|
-
*/
|
|
249
|
-
setWatcherEnabled(enabled) {
|
|
250
|
-
if (!this.db)
|
|
251
|
-
throw new Error('Database not initialized');
|
|
252
|
-
this.db
|
|
253
|
-
.prepare('UPDATE index_progress SET watcher_enabled = ? WHERE id = 1')
|
|
254
|
-
.run(enabled ? 1 : 0);
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* Get watcher enabled status
|
|
258
|
-
*/
|
|
259
|
-
isWatcherEnabled() {
|
|
260
|
-
if (!this.db)
|
|
261
|
-
throw new Error('Database not initialized');
|
|
262
|
-
const stmt = this.db.prepare('SELECT watcher_enabled FROM index_progress WHERE id = 1');
|
|
263
|
-
const result = stmt.get();
|
|
264
|
-
return result.watcher_enabled === 1;
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Clear all chunks and reset progress
|
|
268
|
-
*/
|
|
269
|
-
clear() {
|
|
270
|
-
if (!this.db)
|
|
271
|
-
throw new Error('Database not initialized');
|
|
272
|
-
this.db.exec('DELETE FROM code_chunks');
|
|
273
|
-
this.db.exec(`
|
|
274
|
-
UPDATE index_progress
|
|
275
|
-
SET total_files = 0,
|
|
276
|
-
processed_files = 0,
|
|
277
|
-
total_chunks = 0,
|
|
278
|
-
status = 'idle',
|
|
279
|
-
last_error = NULL,
|
|
280
|
-
last_processed_file = NULL,
|
|
281
|
-
started_at = NULL,
|
|
282
|
-
completed_at = NULL,
|
|
283
|
-
updated_at = ${Date.now()}
|
|
284
|
-
WHERE id = 1
|
|
285
|
-
`);
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Close database connection
|
|
289
|
-
*/
|
|
290
|
-
close() {
|
|
291
|
-
if (this.db) {
|
|
292
|
-
this.db.close();
|
|
293
|
-
this.db = null;
|
|
294
|
-
this.initialized = false;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
|
-
* Convert database row to CodeChunk
|
|
299
|
-
*/
|
|
300
|
-
rowToChunk(row) {
|
|
301
|
-
// Convert Buffer back to number array
|
|
302
|
-
const embeddingBuffer = row.embedding;
|
|
303
|
-
const embedding = Array.from(new Float32Array(embeddingBuffer.buffer, embeddingBuffer.byteOffset, embeddingBuffer.byteLength / 4));
|
|
304
|
-
return {
|
|
305
|
-
id: row.id,
|
|
306
|
-
filePath: row.file_path,
|
|
307
|
-
content: row.content,
|
|
308
|
-
startLine: row.start_line,
|
|
309
|
-
endLine: row.end_line,
|
|
310
|
-
embedding,
|
|
311
|
-
fileHash: row.file_hash,
|
|
312
|
-
createdAt: row.created_at,
|
|
313
|
-
updatedAt: row.updated_at,
|
|
314
|
-
};
|
|
315
|
-
}
|
|
316
|
-
/**
|
|
317
|
-
* Calculate cosine similarity between two vectors
|
|
318
|
-
*/
|
|
319
|
-
cosineSimilarity(a, b) {
|
|
320
|
-
if (a.length !== b.length) {
|
|
321
|
-
throw new Error('Vectors must have same length');
|
|
322
|
-
}
|
|
323
|
-
let dotProduct = 0;
|
|
324
|
-
let normA = 0;
|
|
325
|
-
let normB = 0;
|
|
326
|
-
for (let i = 0; i < a.length; i++) {
|
|
327
|
-
dotProduct += a[i] * b[i];
|
|
328
|
-
normA += a[i] * a[i];
|
|
329
|
-
normB += b[i] * b[i];
|
|
330
|
-
}
|
|
331
|
-
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
332
|
-
}
|
|
333
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from 'events';
|
|
2
|
-
export type CodebaseSearchEvent = {
|
|
3
|
-
type: 'search-start' | 'search-retry' | 'search-complete';
|
|
4
|
-
attempt: number;
|
|
5
|
-
maxAttempts: number;
|
|
6
|
-
currentTopN: number;
|
|
7
|
-
message: string;
|
|
8
|
-
query?: string;
|
|
9
|
-
};
|
|
10
|
-
declare class CodebaseSearchEventEmitter extends EventEmitter {
|
|
11
|
-
emitSearchEvent(event: CodebaseSearchEvent): void;
|
|
12
|
-
onSearchEvent(callback: (event: CodebaseSearchEvent) => void): void;
|
|
13
|
-
removeSearchEventListener(callback: (event: CodebaseSearchEvent) => void): void;
|
|
14
|
-
}
|
|
15
|
-
export declare const codebaseSearchEvents: CodebaseSearchEventEmitter;
|
|
16
|
-
export {};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from 'events';
|
|
2
|
-
class CodebaseSearchEventEmitter extends EventEmitter {
|
|
3
|
-
emitSearchEvent(event) {
|
|
4
|
-
this.emit('codebase-search', event);
|
|
5
|
-
}
|
|
6
|
-
onSearchEvent(callback) {
|
|
7
|
-
this.on('codebase-search', callback);
|
|
8
|
-
}
|
|
9
|
-
removeSearchEventListener(callback) {
|
|
10
|
-
this.off('codebase-search', callback);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
export const codebaseSearchEvents = new CodebaseSearchEventEmitter();
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export interface CommandResult {
|
|
2
|
-
success: boolean;
|
|
3
|
-
message?: string;
|
|
4
|
-
action?: 'clear' | 'resume' | 'info' | 'showMcpInfo' | 'toggleYolo' | 'initProject' | 'compact' | 'showSessionPanel' | 'showMcpPanel' | 'showUsagePanel' | 'home' | 'review' | 'exportChat' | 'showAgentPicker' | 'showTodoPicker' | 'showHelpPanel';
|
|
5
|
-
prompt?: string;
|
|
6
|
-
alreadyConnected?: boolean;
|
|
7
|
-
}
|
|
8
|
-
export interface CommandHandler {
|
|
9
|
-
execute: (args?: string) => Promise<CommandResult> | CommandResult;
|
|
10
|
-
}
|
|
11
|
-
export declare function registerCommand(name: string, handler: CommandHandler): void;
|
|
12
|
-
export declare function executeCommand(commandName: string, args?: string): Promise<CommandResult>;
|
|
13
|
-
export declare function getAvailableCommands(): string[];
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const commandHandlers = {};
|
|
2
|
-
export function registerCommand(name, handler) {
|
|
3
|
-
commandHandlers[name] = handler;
|
|
4
|
-
}
|
|
5
|
-
export async function executeCommand(commandName, args) {
|
|
6
|
-
const handler = commandHandlers[commandName];
|
|
7
|
-
if (!handler) {
|
|
8
|
-
return {
|
|
9
|
-
success: false,
|
|
10
|
-
message: `Unknown command: ${commandName}`,
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
try {
|
|
14
|
-
const result = await handler.execute(args);
|
|
15
|
-
return result;
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
return {
|
|
19
|
-
success: false,
|
|
20
|
-
message: error instanceof Error ? error.message : 'Command execution failed',
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
export function getAvailableCommands() {
|
|
25
|
-
return Object.keys(commandHandlers);
|
|
26
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
// Agent picker command handler - shows agent selection panel
|
|
3
|
-
registerCommand('agent-', {
|
|
4
|
-
execute: () => {
|
|
5
|
-
return {
|
|
6
|
-
success: true,
|
|
7
|
-
action: 'showAgentPicker',
|
|
8
|
-
message: 'Showing sub-agent selection panel',
|
|
9
|
-
};
|
|
10
|
-
},
|
|
11
|
-
});
|
|
12
|
-
export default {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
// Compact command handler - compress conversation history
|
|
3
|
-
registerCommand('compact', {
|
|
4
|
-
execute: () => {
|
|
5
|
-
return {
|
|
6
|
-
success: true,
|
|
7
|
-
action: 'compact',
|
|
8
|
-
message: 'Compressing conversation history...'
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
export default {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
// Export command handler - exports chat conversation to text file
|
|
3
|
-
registerCommand('export', {
|
|
4
|
-
execute: () => {
|
|
5
|
-
return {
|
|
6
|
-
success: true,
|
|
7
|
-
action: 'exportChat',
|
|
8
|
-
message: 'Exporting conversation...'
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
export default {};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
// Help command handler - show keyboard shortcuts and help information
|
|
3
|
-
registerCommand('help', {
|
|
4
|
-
execute: () => {
|
|
5
|
-
return {
|
|
6
|
-
success: true,
|
|
7
|
-
action: 'showHelpPanel',
|
|
8
|
-
};
|
|
9
|
-
},
|
|
10
|
-
});
|
|
11
|
-
export default {};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
import { resetAnthropicClient } from '../../api/anthropic.js';
|
|
3
|
-
import { resetGeminiClient } from '../../api/gemini.js';
|
|
4
|
-
import { resetOpenAIClient as resetChatClient } from '../../api/chat.js';
|
|
5
|
-
import { resetOpenAIClient as resetResponseClient } from '../../api/responses.js';
|
|
6
|
-
// Home command handler - returns to welcome screen
|
|
7
|
-
registerCommand('home', {
|
|
8
|
-
execute: async () => {
|
|
9
|
-
// Stop codebase indexing if running (to avoid database errors)
|
|
10
|
-
if (global.__stopCodebaseIndexing) {
|
|
11
|
-
try {
|
|
12
|
-
// Show stopping message
|
|
13
|
-
console.log('\n⏸ Pausing codebase indexing...');
|
|
14
|
-
await global.__stopCodebaseIndexing();
|
|
15
|
-
console.log('✓ Indexing paused, progress saved\n');
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
// Ignore errors during stop
|
|
19
|
-
console.error('Failed to stop codebase indexing:', error);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
// Clear all API configuration caches
|
|
23
|
-
resetAnthropicClient();
|
|
24
|
-
resetGeminiClient();
|
|
25
|
-
resetChatClient();
|
|
26
|
-
resetResponseClient();
|
|
27
|
-
return {
|
|
28
|
-
success: true,
|
|
29
|
-
action: 'home',
|
|
30
|
-
message: 'Returning to welcome screen',
|
|
31
|
-
};
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
export default {};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
import { vscodeConnection } from '../vscodeConnection.js';
|
|
3
|
-
// IDE connection command handler
|
|
4
|
-
registerCommand('ide', {
|
|
5
|
-
execute: async () => {
|
|
6
|
-
// If already connected, disconnect first to force reconnection
|
|
7
|
-
if (vscodeConnection.isConnected()) {
|
|
8
|
-
vscodeConnection.stop();
|
|
9
|
-
vscodeConnection.resetReconnectAttempts();
|
|
10
|
-
// Wait a bit for cleanup to complete
|
|
11
|
-
await new Promise(resolve => setTimeout(resolve, 100));
|
|
12
|
-
}
|
|
13
|
-
// Try to connect to IDE plugin server
|
|
14
|
-
try {
|
|
15
|
-
await vscodeConnection.start();
|
|
16
|
-
return {
|
|
17
|
-
success: true,
|
|
18
|
-
action: 'info',
|
|
19
|
-
message: `Connected to IDE on port ${vscodeConnection.getPort()}\nMake sure your IDE plugin (VSCode/JetBrains) is active and running.`,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
catch (error) {
|
|
23
|
-
return {
|
|
24
|
-
success: false,
|
|
25
|
-
message: error instanceof Error
|
|
26
|
-
? `Failed to connect to IDE: ${error.message}\nMake sure your IDE plugin is installed and active.`
|
|
27
|
-
: 'Failed to connect to IDE. Make sure your IDE plugin is installed and active.',
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
export default {};
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
// Init command handler - Triggers AI to analyze current project and generate SNOW.md
|
|
3
|
-
registerCommand('init', {
|
|
4
|
-
execute: () => {
|
|
5
|
-
return {
|
|
6
|
-
success: true,
|
|
7
|
-
action: 'initProject',
|
|
8
|
-
message: 'Starting project initialization...',
|
|
9
|
-
// Pass the optimized English prompt for AI
|
|
10
|
-
prompt: `You are an expert technical documentation specialist. Analyze the current project directory comprehensively and generate or update a SNOW.md file.
|
|
11
|
-
|
|
12
|
-
**Your tasks:**
|
|
13
|
-
1. Use ALL available MCP tools (filesystem, terminal) to thoroughly explore the project structure
|
|
14
|
-
2. Read key files: package.json, README.md, tsconfig.json, configuration files
|
|
15
|
-
3. Identify the project type, technologies, frameworks, and architecture
|
|
16
|
-
4. Examine the source code structure and main modules
|
|
17
|
-
5. Check for existing documentation files
|
|
18
|
-
6. Generate or update SNOW.md with the following structure:
|
|
19
|
-
|
|
20
|
-
# SNOW.md Structure
|
|
21
|
-
|
|
22
|
-
## Project Name
|
|
23
|
-
Brief one-line description
|
|
24
|
-
|
|
25
|
-
## Overview
|
|
26
|
-
2-3 paragraph summary of what this project does and its purpose
|
|
27
|
-
|
|
28
|
-
## Technology Stack
|
|
29
|
-
- Language/Runtime
|
|
30
|
-
- Framework(s)
|
|
31
|
-
- Key Dependencies
|
|
32
|
-
- Build Tools
|
|
33
|
-
|
|
34
|
-
## Project Structure
|
|
35
|
-
\`\`\`
|
|
36
|
-
directory tree with explanations
|
|
37
|
-
\`\`\`
|
|
38
|
-
|
|
39
|
-
## Key Features
|
|
40
|
-
- Feature 1
|
|
41
|
-
- Feature 2
|
|
42
|
-
- ...
|
|
43
|
-
|
|
44
|
-
## Getting Started
|
|
45
|
-
|
|
46
|
-
### Prerequisites
|
|
47
|
-
Required software/tools
|
|
48
|
-
|
|
49
|
-
### Installation
|
|
50
|
-
\`\`\`bash
|
|
51
|
-
step by step commands
|
|
52
|
-
\`\`\`
|
|
53
|
-
|
|
54
|
-
### Usage
|
|
55
|
-
Basic usage examples and commands
|
|
56
|
-
|
|
57
|
-
## Development
|
|
58
|
-
|
|
59
|
-
### Available Scripts
|
|
60
|
-
Describe npm scripts or make targets
|
|
61
|
-
|
|
62
|
-
### Development Workflow
|
|
63
|
-
How to develop, test, and build
|
|
64
|
-
|
|
65
|
-
## Configuration
|
|
66
|
-
Explain configuration files and environment variables
|
|
67
|
-
|
|
68
|
-
## Architecture
|
|
69
|
-
High-level architecture overview (if complex project)
|
|
70
|
-
|
|
71
|
-
## Contributing
|
|
72
|
-
Guidelines for contributors (if applicable)
|
|
73
|
-
|
|
74
|
-
## License
|
|
75
|
-
License information (check package.json or LICENSE file)
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
**Important instructions:**
|
|
80
|
-
- Use filesystem-read to explore directories (it automatically lists contents when path is a directory)
|
|
81
|
-
- Use filesystem-read to read important files
|
|
82
|
-
- Use terminal-execute to run commands like 'npm run' to discover available scripts
|
|
83
|
-
- Be thorough but concise - focus on essential information
|
|
84
|
-
- If SNOW.md already exists, read it first and UPDATE it rather than replace
|
|
85
|
-
- Format with proper Markdown syntax
|
|
86
|
-
- After generating content, use filesystem-create to save SNOW.md in the project root
|
|
87
|
-
- Confirm completion with a brief summary
|
|
88
|
-
|
|
89
|
-
Begin your analysis now. Use every tool at your disposal to understand this project completely.`,
|
|
90
|
-
};
|
|
91
|
-
},
|
|
92
|
-
});
|
|
93
|
-
export default {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
// MCP info command handler - shows MCP panel in chat
|
|
3
|
-
registerCommand('mcp', {
|
|
4
|
-
execute: () => {
|
|
5
|
-
return {
|
|
6
|
-
success: true,
|
|
7
|
-
action: 'showMcpPanel',
|
|
8
|
-
message: 'Showing MCP services panel'
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
export default {};
|