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,12 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
// Resume command handler - shows session panel instead of navigating to new page
|
|
3
|
-
registerCommand('resume', {
|
|
4
|
-
execute: () => {
|
|
5
|
-
return {
|
|
6
|
-
success: true,
|
|
7
|
-
action: 'showSessionPanel',
|
|
8
|
-
message: 'Opening session panel'
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
export default {};
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
import { reviewAgent } from '../../agents/reviewAgent.js';
|
|
3
|
-
// Review command handler - review git changes
|
|
4
|
-
registerCommand('review', {
|
|
5
|
-
execute: async (args) => {
|
|
6
|
-
try {
|
|
7
|
-
// Check if git repository exists
|
|
8
|
-
const gitCheck = reviewAgent.checkGitRepository();
|
|
9
|
-
if (!gitCheck.isGitRepo) {
|
|
10
|
-
return {
|
|
11
|
-
success: false,
|
|
12
|
-
message: gitCheck.error || 'Not a git repository',
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
// Get git diff
|
|
16
|
-
const gitDiff = reviewAgent.getGitDiff(gitCheck.gitRoot);
|
|
17
|
-
if (gitDiff === 'No changes detected in the repository.') {
|
|
18
|
-
return {
|
|
19
|
-
success: false,
|
|
20
|
-
message: 'No changes detected. Please make some changes before running code review.',
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
// Parse additional message from args (format: [message])
|
|
24
|
-
let additionalMessage = '';
|
|
25
|
-
if (args) {
|
|
26
|
-
const match = args.match(/\[([^\]]+)\]/);
|
|
27
|
-
if (match && match[1]) {
|
|
28
|
-
additionalMessage = match[1].trim();
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
// Generate review prompt
|
|
32
|
-
let reviewPrompt = `You are a senior code reviewer. Please review the following git changes and provide feedback.
|
|
33
|
-
|
|
34
|
-
**Your task:**
|
|
35
|
-
1. Identify potential bugs, security issues, or logic errors
|
|
36
|
-
2. Suggest performance optimizations
|
|
37
|
-
3. Point out code quality issues (readability, maintainability)
|
|
38
|
-
4. Check for best practices violations
|
|
39
|
-
5. Highlight any breaking changes or compatibility issues
|
|
40
|
-
|
|
41
|
-
**Important:**
|
|
42
|
-
- DO NOT modify the code yourself
|
|
43
|
-
- Focus on finding issues and suggesting improvements
|
|
44
|
-
- Ask the user if they want to fix any issues you find
|
|
45
|
-
- Be constructive and specific in your feedback
|
|
46
|
-
- Prioritize critical issues over minor style preferences`;
|
|
47
|
-
// Add additional message if provided
|
|
48
|
-
if (additionalMessage) {
|
|
49
|
-
reviewPrompt += `
|
|
50
|
-
|
|
51
|
-
**User's Additional Notes:**
|
|
52
|
-
${additionalMessage}`;
|
|
53
|
-
}
|
|
54
|
-
reviewPrompt += `
|
|
55
|
-
|
|
56
|
-
**Git Changes:**
|
|
57
|
-
|
|
58
|
-
\`\`\`diff
|
|
59
|
-
${gitDiff}
|
|
60
|
-
\`\`\`
|
|
61
|
-
|
|
62
|
-
Please provide your review in a clear, structured format.`;
|
|
63
|
-
// Return success with review action and prompt
|
|
64
|
-
return {
|
|
65
|
-
success: true,
|
|
66
|
-
action: 'review',
|
|
67
|
-
prompt: reviewPrompt,
|
|
68
|
-
message: 'Starting code review...',
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
return {
|
|
73
|
-
success: false,
|
|
74
|
-
message: error instanceof Error
|
|
75
|
-
? error.message
|
|
76
|
-
: 'Failed to start code review',
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
});
|
|
81
|
-
export default {};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
import fs from 'fs/promises';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
// Role command handler - create ROLE.md file in project root
|
|
5
|
-
registerCommand('role', {
|
|
6
|
-
execute: async () => {
|
|
7
|
-
try {
|
|
8
|
-
const cwd = process.cwd();
|
|
9
|
-
const roleFilePath = path.join(cwd, 'ROLE.md');
|
|
10
|
-
// Check if ROLE.md exists
|
|
11
|
-
let fileExists = false;
|
|
12
|
-
try {
|
|
13
|
-
await fs.access(roleFilePath);
|
|
14
|
-
fileExists = true;
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
// File doesn't exist, create it
|
|
18
|
-
await fs.writeFile(roleFilePath, '', 'utf-8');
|
|
19
|
-
}
|
|
20
|
-
return {
|
|
21
|
-
success: true,
|
|
22
|
-
message: fileExists
|
|
23
|
-
? `ROLE.md already exists at: ${roleFilePath}`
|
|
24
|
-
: `Created ROLE.md at: ${roleFilePath}`,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
return {
|
|
29
|
-
success: false,
|
|
30
|
-
message: error instanceof Error
|
|
31
|
-
? error.message
|
|
32
|
-
: 'Failed to handle ROLE.md file',
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
|
-
export default {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
// Todo picker command handler - shows todo selection panel
|
|
3
|
-
registerCommand('todo-', {
|
|
4
|
-
execute: () => {
|
|
5
|
-
return {
|
|
6
|
-
success: true,
|
|
7
|
-
action: 'showTodoPicker',
|
|
8
|
-
message: 'Showing TODO comment selection panel',
|
|
9
|
-
};
|
|
10
|
-
},
|
|
11
|
-
});
|
|
12
|
-
export default {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
// Usage command handler - shows usage statistics panel
|
|
3
|
-
registerCommand('usage', {
|
|
4
|
-
execute: () => {
|
|
5
|
-
return {
|
|
6
|
-
success: true,
|
|
7
|
-
action: 'showUsagePanel',
|
|
8
|
-
message: 'Showing usage statistics'
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
export default {};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { registerCommand } from '../commandExecutor.js';
|
|
2
|
-
// YOLO command handler - toggles unattended mode
|
|
3
|
-
registerCommand('yolo', {
|
|
4
|
-
execute: () => {
|
|
5
|
-
return {
|
|
6
|
-
success: true,
|
|
7
|
-
action: 'toggleYolo',
|
|
8
|
-
message: 'Toggling YOLO mode'
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
export default {};
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { type AppConfig } from './apiConfig.js';
|
|
2
|
-
export interface ConfigProfile {
|
|
3
|
-
name: string;
|
|
4
|
-
displayName: string;
|
|
5
|
-
isActive: boolean;
|
|
6
|
-
config: AppConfig;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Get the current active profile name
|
|
10
|
-
*/
|
|
11
|
-
export declare function getActiveProfileName(): string;
|
|
12
|
-
/**
|
|
13
|
-
* Load a specific profile
|
|
14
|
-
*/
|
|
15
|
-
export declare function loadProfile(profileName: string): AppConfig | undefined;
|
|
16
|
-
/**
|
|
17
|
-
* Save a profile
|
|
18
|
-
*/
|
|
19
|
-
export declare function saveProfile(profileName: string, config: AppConfig): void;
|
|
20
|
-
/**
|
|
21
|
-
* Get all available profiles
|
|
22
|
-
*/
|
|
23
|
-
export declare function getAllProfiles(): ConfigProfile[];
|
|
24
|
-
/**
|
|
25
|
-
* Switch to a different profile
|
|
26
|
-
* This copies the profile config to config.json and updates the active profile
|
|
27
|
-
*/
|
|
28
|
-
export declare function switchProfile(profileName: string): void;
|
|
29
|
-
/**
|
|
30
|
-
* Create a new profile
|
|
31
|
-
*/
|
|
32
|
-
export declare function createProfile(profileName: string, config?: AppConfig): void;
|
|
33
|
-
/**
|
|
34
|
-
* Delete a profile
|
|
35
|
-
*/
|
|
36
|
-
export declare function deleteProfile(profileName: string): void;
|
|
37
|
-
/**
|
|
38
|
-
* Rename a profile
|
|
39
|
-
*/
|
|
40
|
-
export declare function renameProfile(oldName: string, newName: string): void;
|
|
41
|
-
/**
|
|
42
|
-
* Initialize profiles system
|
|
43
|
-
* This should be called on app startup to ensure profiles are set up
|
|
44
|
-
*/
|
|
45
|
-
export declare function initializeProfiles(): void;
|
|
@@ -1,303 +0,0 @@
|
|
|
1
|
-
import { homedir } from 'os';
|
|
2
|
-
import { join } from 'path';
|
|
3
|
-
import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync, unlinkSync, } from 'fs';
|
|
4
|
-
import { loadConfig, saveConfig } from './apiConfig.js';
|
|
5
|
-
const CONFIG_DIR = join(homedir(), '.snow');
|
|
6
|
-
const PROFILES_DIR = join(CONFIG_DIR, 'profiles');
|
|
7
|
-
const ACTIVE_PROFILE_FILE = join(CONFIG_DIR, 'active-profile.json');
|
|
8
|
-
const LEGACY_ACTIVE_PROFILE_FILE = join(CONFIG_DIR, 'active-profile.txt');
|
|
9
|
-
const LEGACY_CONFIG_FILE = join(CONFIG_DIR, 'config.json');
|
|
10
|
-
/**
|
|
11
|
-
* Ensure the profiles directory exists
|
|
12
|
-
*/
|
|
13
|
-
function ensureProfilesDirectory() {
|
|
14
|
-
if (!existsSync(CONFIG_DIR)) {
|
|
15
|
-
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
16
|
-
}
|
|
17
|
-
if (!existsSync(PROFILES_DIR)) {
|
|
18
|
-
mkdirSync(PROFILES_DIR, { recursive: true });
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Get the current active profile name
|
|
23
|
-
*/
|
|
24
|
-
export function getActiveProfileName() {
|
|
25
|
-
ensureProfilesDirectory();
|
|
26
|
-
// Auto-migrate from legacy .txt format to new .json format
|
|
27
|
-
if (!existsSync(ACTIVE_PROFILE_FILE) &&
|
|
28
|
-
existsSync(LEGACY_ACTIVE_PROFILE_FILE)) {
|
|
29
|
-
try {
|
|
30
|
-
const legacyProfileName = readFileSync(LEGACY_ACTIVE_PROFILE_FILE, 'utf8').trim();
|
|
31
|
-
const profileName = legacyProfileName || 'default';
|
|
32
|
-
// Save in new JSON format
|
|
33
|
-
setActiveProfileName(profileName);
|
|
34
|
-
// Delete old .txt file
|
|
35
|
-
unlinkSync(LEGACY_ACTIVE_PROFILE_FILE);
|
|
36
|
-
return profileName;
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
// If migration fails, continue with default
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (!existsSync(ACTIVE_PROFILE_FILE)) {
|
|
43
|
-
return 'default';
|
|
44
|
-
}
|
|
45
|
-
try {
|
|
46
|
-
const fileContent = readFileSync(ACTIVE_PROFILE_FILE, 'utf8').trim();
|
|
47
|
-
const data = JSON.parse(fileContent);
|
|
48
|
-
return data.activeProfile || 'default';
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
return 'default';
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Set the active profile
|
|
56
|
-
*/
|
|
57
|
-
function setActiveProfileName(profileName) {
|
|
58
|
-
ensureProfilesDirectory();
|
|
59
|
-
try {
|
|
60
|
-
const data = { activeProfile: profileName };
|
|
61
|
-
writeFileSync(ACTIVE_PROFILE_FILE, JSON.stringify(data, null, 2), 'utf8');
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
throw new Error(`Failed to set active profile: ${error}`);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Get the path to a profile file
|
|
69
|
-
*/
|
|
70
|
-
function getProfilePath(profileName) {
|
|
71
|
-
return join(PROFILES_DIR, `${profileName}.json`);
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Migrate legacy config.json to profiles/default.json
|
|
75
|
-
* This ensures backward compatibility with existing installations
|
|
76
|
-
*/
|
|
77
|
-
function migrateLegacyConfig() {
|
|
78
|
-
ensureProfilesDirectory();
|
|
79
|
-
const defaultProfilePath = getProfilePath('default');
|
|
80
|
-
// If default profile already exists, no migration needed
|
|
81
|
-
if (existsSync(defaultProfilePath)) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
// If legacy config exists, migrate it
|
|
85
|
-
if (existsSync(LEGACY_CONFIG_FILE)) {
|
|
86
|
-
try {
|
|
87
|
-
const legacyConfig = readFileSync(LEGACY_CONFIG_FILE, 'utf8');
|
|
88
|
-
writeFileSync(defaultProfilePath, legacyConfig, 'utf8');
|
|
89
|
-
// Set default as active profile
|
|
90
|
-
setActiveProfileName('default');
|
|
91
|
-
}
|
|
92
|
-
catch (error) {
|
|
93
|
-
// If migration fails, we'll create a default profile later
|
|
94
|
-
console.error('Failed to migrate legacy config:', error);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Load a specific profile
|
|
100
|
-
*/
|
|
101
|
-
export function loadProfile(profileName) {
|
|
102
|
-
ensureProfilesDirectory();
|
|
103
|
-
migrateLegacyConfig();
|
|
104
|
-
const profilePath = getProfilePath(profileName);
|
|
105
|
-
if (!existsSync(profilePath)) {
|
|
106
|
-
return undefined;
|
|
107
|
-
}
|
|
108
|
-
try {
|
|
109
|
-
const configData = readFileSync(profilePath, 'utf8');
|
|
110
|
-
return JSON.parse(configData);
|
|
111
|
-
}
|
|
112
|
-
catch {
|
|
113
|
-
return undefined;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Save a profile
|
|
118
|
-
*/
|
|
119
|
-
export function saveProfile(profileName, config) {
|
|
120
|
-
ensureProfilesDirectory();
|
|
121
|
-
const profilePath = getProfilePath(profileName);
|
|
122
|
-
try {
|
|
123
|
-
// Remove openai field for backward compatibility
|
|
124
|
-
const { openai, ...configWithoutOpenai } = config;
|
|
125
|
-
const configData = JSON.stringify(configWithoutOpenai, null, 2);
|
|
126
|
-
writeFileSync(profilePath, configData, 'utf8');
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
throw new Error(`Failed to save profile: ${error}`);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Get all available profiles
|
|
134
|
-
*/
|
|
135
|
-
export function getAllProfiles() {
|
|
136
|
-
ensureProfilesDirectory();
|
|
137
|
-
migrateLegacyConfig();
|
|
138
|
-
const activeProfile = getActiveProfileName();
|
|
139
|
-
const profiles = [];
|
|
140
|
-
try {
|
|
141
|
-
const files = readdirSync(PROFILES_DIR);
|
|
142
|
-
for (const file of files) {
|
|
143
|
-
if (file.endsWith('.json')) {
|
|
144
|
-
const profileName = file.replace('.json', '');
|
|
145
|
-
const config = loadProfile(profileName);
|
|
146
|
-
if (config) {
|
|
147
|
-
profiles.push({
|
|
148
|
-
name: profileName,
|
|
149
|
-
displayName: getProfileDisplayName(profileName),
|
|
150
|
-
isActive: profileName === activeProfile,
|
|
151
|
-
config,
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
catch {
|
|
158
|
-
// If reading fails, return empty array
|
|
159
|
-
}
|
|
160
|
-
// Ensure at least a default profile exists
|
|
161
|
-
if (profiles.length === 0) {
|
|
162
|
-
const defaultConfig = loadConfig();
|
|
163
|
-
saveProfile('default', defaultConfig);
|
|
164
|
-
profiles.push({
|
|
165
|
-
name: 'default',
|
|
166
|
-
displayName: 'Default',
|
|
167
|
-
isActive: true,
|
|
168
|
-
config: defaultConfig,
|
|
169
|
-
});
|
|
170
|
-
setActiveProfileName('default');
|
|
171
|
-
}
|
|
172
|
-
return profiles.sort((a, b) => a.name.localeCompare(b.name));
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Get a user-friendly display name for a profile
|
|
176
|
-
*/
|
|
177
|
-
function getProfileDisplayName(profileName) {
|
|
178
|
-
// Capitalize first letter
|
|
179
|
-
return profileName.charAt(0).toUpperCase() + profileName.slice(1);
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Switch to a different profile
|
|
183
|
-
* This copies the profile config to config.json and updates the active profile
|
|
184
|
-
*/
|
|
185
|
-
export function switchProfile(profileName) {
|
|
186
|
-
ensureProfilesDirectory();
|
|
187
|
-
const profileConfig = loadProfile(profileName);
|
|
188
|
-
if (!profileConfig) {
|
|
189
|
-
throw new Error(`Profile "${profileName}" not found`);
|
|
190
|
-
}
|
|
191
|
-
// Save the profile config to the main config.json (for backward compatibility)
|
|
192
|
-
saveConfig(profileConfig);
|
|
193
|
-
// Update the active profile marker
|
|
194
|
-
setActiveProfileName(profileName);
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Create a new profile
|
|
198
|
-
*/
|
|
199
|
-
export function createProfile(profileName, config) {
|
|
200
|
-
ensureProfilesDirectory();
|
|
201
|
-
// Validate profile name
|
|
202
|
-
if (!profileName.trim() ||
|
|
203
|
-
profileName.includes('/') ||
|
|
204
|
-
profileName.includes('\\')) {
|
|
205
|
-
throw new Error('Invalid profile name');
|
|
206
|
-
}
|
|
207
|
-
const profilePath = getProfilePath(profileName);
|
|
208
|
-
if (existsSync(profilePath)) {
|
|
209
|
-
throw new Error(`Profile "${profileName}" already exists`);
|
|
210
|
-
}
|
|
211
|
-
// If no config provided, use the current config
|
|
212
|
-
const profileConfig = config || loadConfig();
|
|
213
|
-
saveProfile(profileName, profileConfig);
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Delete a profile
|
|
217
|
-
*/
|
|
218
|
-
export function deleteProfile(profileName) {
|
|
219
|
-
ensureProfilesDirectory();
|
|
220
|
-
// Don't allow deleting the default profile
|
|
221
|
-
if (profileName === 'default') {
|
|
222
|
-
throw new Error('Cannot delete the default profile');
|
|
223
|
-
}
|
|
224
|
-
const profilePath = getProfilePath(profileName);
|
|
225
|
-
if (!existsSync(profilePath)) {
|
|
226
|
-
throw new Error(`Profile "${profileName}" not found`);
|
|
227
|
-
}
|
|
228
|
-
// If this is the active profile, switch to default first
|
|
229
|
-
if (getActiveProfileName() === profileName) {
|
|
230
|
-
switchProfile('default');
|
|
231
|
-
}
|
|
232
|
-
try {
|
|
233
|
-
unlinkSync(profilePath);
|
|
234
|
-
}
|
|
235
|
-
catch (error) {
|
|
236
|
-
throw new Error(`Failed to delete profile: ${error}`);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Rename a profile
|
|
241
|
-
*/
|
|
242
|
-
export function renameProfile(oldName, newName) {
|
|
243
|
-
ensureProfilesDirectory();
|
|
244
|
-
// Validate new name
|
|
245
|
-
if (!newName.trim() || newName.includes('/') || newName.includes('\\')) {
|
|
246
|
-
throw new Error('Invalid profile name');
|
|
247
|
-
}
|
|
248
|
-
if (oldName === newName) {
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
const oldPath = getProfilePath(oldName);
|
|
252
|
-
const newPath = getProfilePath(newName);
|
|
253
|
-
if (!existsSync(oldPath)) {
|
|
254
|
-
throw new Error(`Profile "${oldName}" not found`);
|
|
255
|
-
}
|
|
256
|
-
if (existsSync(newPath)) {
|
|
257
|
-
throw new Error(`Profile "${newName}" already exists`);
|
|
258
|
-
}
|
|
259
|
-
try {
|
|
260
|
-
const config = loadProfile(oldName);
|
|
261
|
-
if (!config) {
|
|
262
|
-
throw new Error(`Failed to load profile "${oldName}"`);
|
|
263
|
-
}
|
|
264
|
-
// Save with new name
|
|
265
|
-
saveProfile(newName, config);
|
|
266
|
-
// Update active profile if necessary
|
|
267
|
-
if (getActiveProfileName() === oldName) {
|
|
268
|
-
setActiveProfileName(newName);
|
|
269
|
-
}
|
|
270
|
-
// Delete old profile
|
|
271
|
-
unlinkSync(oldPath);
|
|
272
|
-
}
|
|
273
|
-
catch (error) {
|
|
274
|
-
throw new Error(`Failed to rename profile: ${error}`);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Initialize profiles system
|
|
279
|
-
* This should be called on app startup to ensure profiles are set up
|
|
280
|
-
*/
|
|
281
|
-
export function initializeProfiles() {
|
|
282
|
-
ensureProfilesDirectory();
|
|
283
|
-
migrateLegacyConfig();
|
|
284
|
-
// Ensure the active profile exists and is loaded to config.json
|
|
285
|
-
const activeProfile = getActiveProfileName();
|
|
286
|
-
let profileConfig = loadProfile(activeProfile);
|
|
287
|
-
if (profileConfig) {
|
|
288
|
-
// Sync the active profile to config.json
|
|
289
|
-
saveConfig(profileConfig);
|
|
290
|
-
}
|
|
291
|
-
else {
|
|
292
|
-
// If active profile doesn't exist, create it first
|
|
293
|
-
// This is especially important for first-time installations
|
|
294
|
-
const defaultConfig = loadConfig();
|
|
295
|
-
saveProfile(activeProfile, defaultConfig);
|
|
296
|
-
setActiveProfileName(activeProfile);
|
|
297
|
-
// Now load and sync the newly created profile
|
|
298
|
-
profileConfig = loadProfile(activeProfile);
|
|
299
|
-
if (profileConfig) {
|
|
300
|
-
saveConfig(profileConfig);
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { ChatMessage } from '../api/types.js';
|
|
2
|
-
export interface CompressionResult {
|
|
3
|
-
summary: string;
|
|
4
|
-
usage: {
|
|
5
|
-
prompt_tokens: number;
|
|
6
|
-
completion_tokens: number;
|
|
7
|
-
total_tokens: number;
|
|
8
|
-
};
|
|
9
|
-
preservedMessages?: ChatMessage[];
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Compress conversation history using the compact model
|
|
13
|
-
* @param messages - Array of messages to compress
|
|
14
|
-
* @returns Compressed summary and token usage information, or null if compression should be skipped
|
|
15
|
-
*/
|
|
16
|
-
export declare function compressContext(messages: ChatMessage[]): Promise<CompressionResult | null>;
|