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,346 +0,0 @@
|
|
|
1
|
-
import { useStdout } from 'ink';
|
|
2
|
-
import { useCallback } from 'react';
|
|
3
|
-
import { sessionManager } from '../utils/sessionManager.js';
|
|
4
|
-
import { compressContext } from '../utils/contextCompressor.js';
|
|
5
|
-
import { navigateTo } from './useGlobalNavigation.js';
|
|
6
|
-
import { resetTerminal } from '../utils/terminal.js';
|
|
7
|
-
import { showSaveDialog, isFileDialogSupported } from '../utils/fileDialog.js';
|
|
8
|
-
import { exportMessagesToFile } from '../utils/chatExporter.js';
|
|
9
|
-
/**
|
|
10
|
-
* 执行上下文压缩
|
|
11
|
-
* @returns 返回压缩后的UI消息列表和token使用信息,如果失败返回null
|
|
12
|
-
*/
|
|
13
|
-
export async function executeContextCompression() {
|
|
14
|
-
try {
|
|
15
|
-
// 从会话文件读取真实的消息记录
|
|
16
|
-
const currentSession = sessionManager.getCurrentSession();
|
|
17
|
-
if (!currentSession || currentSession.messages.length === 0) {
|
|
18
|
-
throw new Error('No active session or no messages to compress');
|
|
19
|
-
}
|
|
20
|
-
// 使用会话文件中的消息进行压缩(这是真实的对话记录)
|
|
21
|
-
const sessionMessages = currentSession.messages;
|
|
22
|
-
// 转换为 ChatMessage 格式(保留所有关键字段)
|
|
23
|
-
const chatMessages = sessionMessages.map(msg => ({
|
|
24
|
-
role: msg.role,
|
|
25
|
-
content: msg.content,
|
|
26
|
-
tool_call_id: msg.tool_call_id,
|
|
27
|
-
tool_calls: msg.tool_calls,
|
|
28
|
-
images: msg.images,
|
|
29
|
-
reasoning: msg.reasoning,
|
|
30
|
-
thinking: msg.thinking, // 保留 thinking 字段(Anthropic Extended Thinking)
|
|
31
|
-
subAgentInternal: msg.subAgentInternal,
|
|
32
|
-
}));
|
|
33
|
-
// Compress the context (全量压缩,保留最后一轮完整对话)
|
|
34
|
-
const compressionResult = await compressContext(chatMessages);
|
|
35
|
-
// 如果返回null,说明无法安全压缩(历史不足或只有当前轮次)
|
|
36
|
-
if (!compressionResult) {
|
|
37
|
-
console.warn('Compression skipped: not enough history to compress');
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
// 构建新的会话消息列表
|
|
41
|
-
const newSessionMessages = [];
|
|
42
|
-
// 添加压缩摘要到会话(使用 user 角色,因为 Extended Thinking 模式下所有 assistant 消息都需要 thinking 块)
|
|
43
|
-
newSessionMessages.push({
|
|
44
|
-
role: 'user',
|
|
45
|
-
content: `[Context Summary from Previous Conversation]\n\n${compressionResult.summary}`,
|
|
46
|
-
timestamp: Date.now(),
|
|
47
|
-
});
|
|
48
|
-
// 添加保留的最后一轮完整对话(保留完整的消息结构)
|
|
49
|
-
if (compressionResult.preservedMessages &&
|
|
50
|
-
compressionResult.preservedMessages.length > 0) {
|
|
51
|
-
for (const msg of compressionResult.preservedMessages) {
|
|
52
|
-
// 保留完整的消息结构,包括所有关键字段
|
|
53
|
-
newSessionMessages.push({
|
|
54
|
-
role: msg.role,
|
|
55
|
-
content: msg.content,
|
|
56
|
-
timestamp: Date.now(),
|
|
57
|
-
...(msg.tool_call_id && { tool_call_id: msg.tool_call_id }),
|
|
58
|
-
...(msg.tool_calls && { tool_calls: msg.tool_calls }),
|
|
59
|
-
...(msg.images && { images: msg.images }),
|
|
60
|
-
...(msg.reasoning && { reasoning: msg.reasoning }),
|
|
61
|
-
...(msg.thinking && { thinking: msg.thinking }), // 保留 thinking 字段(Anthropic Extended Thinking)
|
|
62
|
-
...(msg.subAgentInternal !== undefined && {
|
|
63
|
-
subAgentInternal: msg.subAgentInternal,
|
|
64
|
-
}),
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
// 更新当前会话的消息(不新建会话)
|
|
69
|
-
currentSession.messages = newSessionMessages;
|
|
70
|
-
currentSession.messageCount = newSessionMessages.length;
|
|
71
|
-
currentSession.updatedAt = Date.now();
|
|
72
|
-
// 保存更新后的会话文件
|
|
73
|
-
await sessionManager.saveSession(currentSession);
|
|
74
|
-
// 同步更新UI消息列表:从会话消息转换为UI Message格式
|
|
75
|
-
const newUIMessages = [];
|
|
76
|
-
for (const sessionMsg of newSessionMessages) {
|
|
77
|
-
// 跳过 tool 角色的消息(工具执行结果),避免UI显示大量JSON
|
|
78
|
-
if (sessionMsg.role === 'tool') {
|
|
79
|
-
continue;
|
|
80
|
-
}
|
|
81
|
-
const uiMessage = {
|
|
82
|
-
role: sessionMsg.role,
|
|
83
|
-
content: sessionMsg.content,
|
|
84
|
-
streaming: false,
|
|
85
|
-
};
|
|
86
|
-
// 如果有 tool_calls,显示工具调用信息(但不显示详细参数)
|
|
87
|
-
if (sessionMsg.tool_calls && sessionMsg.tool_calls.length > 0) {
|
|
88
|
-
// 在内容中添加简洁的工具调用摘要
|
|
89
|
-
const toolSummary = sessionMsg.tool_calls
|
|
90
|
-
.map((tc) => `[Tool: ${tc.function.name}]`)
|
|
91
|
-
.join(', ');
|
|
92
|
-
// 如果内容为空或很短,显示工具调用摘要
|
|
93
|
-
if (!uiMessage.content || uiMessage.content.length < 10) {
|
|
94
|
-
uiMessage.content = toolSummary;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
newUIMessages.push(uiMessage);
|
|
98
|
-
}
|
|
99
|
-
return {
|
|
100
|
-
uiMessages: newUIMessages,
|
|
101
|
-
usage: {
|
|
102
|
-
prompt_tokens: compressionResult.usage.prompt_tokens,
|
|
103
|
-
completion_tokens: compressionResult.usage.completion_tokens,
|
|
104
|
-
total_tokens: compressionResult.usage.total_tokens,
|
|
105
|
-
},
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
console.error('Context compression failed:', error);
|
|
110
|
-
return null;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
export function useCommandHandler(options) {
|
|
114
|
-
const { stdout } = useStdout();
|
|
115
|
-
const handleCommandExecution = useCallback(async (commandName, result) => {
|
|
116
|
-
// Handle /compact command
|
|
117
|
-
if (commandName === 'compact' &&
|
|
118
|
-
result.success &&
|
|
119
|
-
result.action === 'compact') {
|
|
120
|
-
// Set compressing state (不添加命令面板消息)
|
|
121
|
-
options.setIsCompressing(true);
|
|
122
|
-
options.setCompressionError(null);
|
|
123
|
-
try {
|
|
124
|
-
// 使用提取的压缩函数
|
|
125
|
-
const compressionResult = await executeContextCompression();
|
|
126
|
-
if (!compressionResult) {
|
|
127
|
-
throw new Error('Compression failed');
|
|
128
|
-
}
|
|
129
|
-
// 更新UI
|
|
130
|
-
options.clearSavedMessages();
|
|
131
|
-
options.setMessages(compressionResult.uiMessages);
|
|
132
|
-
options.setRemountKey(prev => prev + 1);
|
|
133
|
-
// Update token usage with compression result
|
|
134
|
-
options.setContextUsage(compressionResult.usage);
|
|
135
|
-
}
|
|
136
|
-
catch (error) {
|
|
137
|
-
// Show error message
|
|
138
|
-
const errorMsg = error instanceof Error
|
|
139
|
-
? error.message
|
|
140
|
-
: 'Unknown compression error';
|
|
141
|
-
options.setCompressionError(errorMsg);
|
|
142
|
-
const errorMessage = {
|
|
143
|
-
role: 'assistant',
|
|
144
|
-
content: `**Compression Failed**\n\n${errorMsg}`,
|
|
145
|
-
streaming: false,
|
|
146
|
-
};
|
|
147
|
-
options.setMessages(prev => [...prev, errorMessage]);
|
|
148
|
-
}
|
|
149
|
-
finally {
|
|
150
|
-
options.setIsCompressing(false);
|
|
151
|
-
}
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
// Handle /ide command
|
|
155
|
-
if (commandName === 'ide') {
|
|
156
|
-
if (result.success) {
|
|
157
|
-
// Connection successful, set status to connected immediately
|
|
158
|
-
// The轮询 mechanism will also update the status, but we do it here for immediate feedback
|
|
159
|
-
options.setVscodeConnectionStatus('connected');
|
|
160
|
-
// Don't add command message to keep UI clean
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
options.setVscodeConnectionStatus('error');
|
|
164
|
-
}
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
if (result.success && result.action === 'clear') {
|
|
168
|
-
resetTerminal(stdout);
|
|
169
|
-
// Clear current session and start new one
|
|
170
|
-
sessionManager.clearCurrentSession();
|
|
171
|
-
options.clearSavedMessages();
|
|
172
|
-
options.setMessages([]);
|
|
173
|
-
options.setRemountKey(prev => prev + 1);
|
|
174
|
-
// Reset context usage (token statistics)
|
|
175
|
-
options.setContextUsage(null);
|
|
176
|
-
// Note: yoloMode is preserved via localStorage (lines 68-76, 104-111)
|
|
177
|
-
// Note: VSCode connection is preserved and managed by vscodeConnection utility
|
|
178
|
-
// Add command execution feedback
|
|
179
|
-
const commandMessage = {
|
|
180
|
-
role: 'command',
|
|
181
|
-
content: '',
|
|
182
|
-
commandName: commandName,
|
|
183
|
-
};
|
|
184
|
-
options.setMessages([commandMessage]);
|
|
185
|
-
}
|
|
186
|
-
else if (result.success && result.action === 'showSessionPanel') {
|
|
187
|
-
options.setShowSessionPanel(true);
|
|
188
|
-
const commandMessage = {
|
|
189
|
-
role: 'command',
|
|
190
|
-
content: '',
|
|
191
|
-
commandName: commandName,
|
|
192
|
-
};
|
|
193
|
-
options.setMessages(prev => [...prev, commandMessage]);
|
|
194
|
-
}
|
|
195
|
-
else if (result.success && result.action === 'showMcpInfo') {
|
|
196
|
-
options.setShowMcpInfo(true);
|
|
197
|
-
options.setMcpPanelKey(prev => prev + 1);
|
|
198
|
-
const commandMessage = {
|
|
199
|
-
role: 'command',
|
|
200
|
-
content: '',
|
|
201
|
-
commandName: commandName,
|
|
202
|
-
};
|
|
203
|
-
options.setMessages(prev => [...prev, commandMessage]);
|
|
204
|
-
}
|
|
205
|
-
else if (result.success && result.action === 'showMcpPanel') {
|
|
206
|
-
options.setShowMcpPanel(true);
|
|
207
|
-
const commandMessage = {
|
|
208
|
-
role: 'command',
|
|
209
|
-
content: '',
|
|
210
|
-
commandName: commandName,
|
|
211
|
-
};
|
|
212
|
-
options.setMessages(prev => [...prev, commandMessage]);
|
|
213
|
-
}
|
|
214
|
-
else if (result.success && result.action === 'showUsagePanel') {
|
|
215
|
-
options.setShowUsagePanel(true);
|
|
216
|
-
const commandMessage = {
|
|
217
|
-
role: 'command',
|
|
218
|
-
content: '',
|
|
219
|
-
commandName: commandName,
|
|
220
|
-
};
|
|
221
|
-
options.setMessages(prev => [...prev, commandMessage]);
|
|
222
|
-
}
|
|
223
|
-
else if (result.success && result.action === 'showHelpPanel') {
|
|
224
|
-
options.setShowHelpPanel(true);
|
|
225
|
-
const commandMessage = {
|
|
226
|
-
role: 'command',
|
|
227
|
-
content: '',
|
|
228
|
-
commandName: commandName,
|
|
229
|
-
};
|
|
230
|
-
options.setMessages(prev => [...prev, commandMessage]);
|
|
231
|
-
}
|
|
232
|
-
else if (result.success && result.action === 'home') {
|
|
233
|
-
// Reset terminal before navigating to welcome screen
|
|
234
|
-
resetTerminal(stdout);
|
|
235
|
-
navigateTo('welcome');
|
|
236
|
-
}
|
|
237
|
-
else if (result.success && result.action === 'toggleYolo') {
|
|
238
|
-
// Toggle YOLO mode without adding command message
|
|
239
|
-
options.setYoloMode(prev => !prev);
|
|
240
|
-
// Don't add command message to keep UI clean
|
|
241
|
-
}
|
|
242
|
-
else if (result.success &&
|
|
243
|
-
result.action === 'initProject' &&
|
|
244
|
-
result.prompt) {
|
|
245
|
-
// Add command execution feedback
|
|
246
|
-
const commandMessage = {
|
|
247
|
-
role: 'command',
|
|
248
|
-
content: '',
|
|
249
|
-
commandName: commandName,
|
|
250
|
-
};
|
|
251
|
-
options.setMessages(prev => [...prev, commandMessage]);
|
|
252
|
-
// Auto-send the prompt using basicModel, hide the prompt from UI
|
|
253
|
-
options.processMessage(result.prompt, undefined, true, true);
|
|
254
|
-
}
|
|
255
|
-
else if (result.success &&
|
|
256
|
-
result.action === 'review' &&
|
|
257
|
-
result.prompt) {
|
|
258
|
-
// Clear current session and start new one for code review
|
|
259
|
-
sessionManager.clearCurrentSession();
|
|
260
|
-
options.clearSavedMessages();
|
|
261
|
-
options.setMessages([]);
|
|
262
|
-
options.setRemountKey(prev => prev + 1);
|
|
263
|
-
// Reset context usage (token statistics)
|
|
264
|
-
options.setContextUsage(null);
|
|
265
|
-
// Add command execution feedback
|
|
266
|
-
const commandMessage = {
|
|
267
|
-
role: 'command',
|
|
268
|
-
content: '',
|
|
269
|
-
commandName: commandName,
|
|
270
|
-
};
|
|
271
|
-
options.setMessages([commandMessage]);
|
|
272
|
-
// Auto-send the review prompt using advanced model (not basic model), hide the prompt from UI
|
|
273
|
-
options.processMessage(result.prompt, undefined, false, true);
|
|
274
|
-
}
|
|
275
|
-
else if (result.success && result.action === 'exportChat') {
|
|
276
|
-
// Handle export chat command
|
|
277
|
-
// Show loading message first
|
|
278
|
-
const loadingMessage = {
|
|
279
|
-
role: 'command',
|
|
280
|
-
content: 'Opening file save dialog...',
|
|
281
|
-
commandName: commandName,
|
|
282
|
-
};
|
|
283
|
-
options.setMessages(prev => [...prev, loadingMessage]);
|
|
284
|
-
try {
|
|
285
|
-
// Check if file dialog is supported
|
|
286
|
-
if (!isFileDialogSupported()) {
|
|
287
|
-
const errorMessage = {
|
|
288
|
-
role: 'command',
|
|
289
|
-
content: 'File dialog not supported on this platform. Export cancelled.',
|
|
290
|
-
commandName: commandName,
|
|
291
|
-
};
|
|
292
|
-
options.setMessages(prev => [...prev, errorMessage]);
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
// Generate default filename with timestamp
|
|
296
|
-
const timestamp = new Date()
|
|
297
|
-
.toISOString()
|
|
298
|
-
.replace(/[:.]/g, '-')
|
|
299
|
-
.split('.')[0];
|
|
300
|
-
const defaultFilename = `snow-chat-${timestamp}.txt`;
|
|
301
|
-
// Show native save dialog
|
|
302
|
-
const filePath = await showSaveDialog(defaultFilename, 'Export Chat Conversation');
|
|
303
|
-
if (!filePath) {
|
|
304
|
-
// User cancelled
|
|
305
|
-
const cancelMessage = {
|
|
306
|
-
role: 'command',
|
|
307
|
-
content: 'Export cancelled by user.',
|
|
308
|
-
commandName: commandName,
|
|
309
|
-
};
|
|
310
|
-
options.setMessages(prev => [...prev, cancelMessage]);
|
|
311
|
-
return;
|
|
312
|
-
}
|
|
313
|
-
// Export messages to file
|
|
314
|
-
await exportMessagesToFile(options.messages, filePath);
|
|
315
|
-
// Show success message
|
|
316
|
-
const successMessage = {
|
|
317
|
-
role: 'command',
|
|
318
|
-
content: `✓ Chat exported successfully to:\n${filePath}`,
|
|
319
|
-
commandName: commandName,
|
|
320
|
-
};
|
|
321
|
-
options.setMessages(prev => [...prev, successMessage]);
|
|
322
|
-
}
|
|
323
|
-
catch (error) {
|
|
324
|
-
// Show error message
|
|
325
|
-
const errorMsg = error instanceof Error ? error.message : 'Unknown error';
|
|
326
|
-
const errorMessage = {
|
|
327
|
-
role: 'command',
|
|
328
|
-
content: `✗ Export failed: ${errorMsg}`,
|
|
329
|
-
commandName: commandName,
|
|
330
|
-
};
|
|
331
|
-
options.setMessages(prev => [...prev, errorMessage]);
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
else if (result.message) {
|
|
335
|
-
// For commands that just return a message (like /role, /init without SNOW.md, etc.)
|
|
336
|
-
// Display the message as a command message
|
|
337
|
-
const commandMessage = {
|
|
338
|
-
role: 'command',
|
|
339
|
-
content: result.message,
|
|
340
|
-
commandName: commandName,
|
|
341
|
-
};
|
|
342
|
-
options.setMessages(prev => [...prev, commandMessage]);
|
|
343
|
-
}
|
|
344
|
-
}, [stdout, options]);
|
|
345
|
-
return { handleCommandExecution };
|
|
346
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { TextBuffer } from '../utils/textBuffer.js';
|
|
2
|
-
export declare function useCommandPanel(buffer: TextBuffer, isProcessing?: boolean): {
|
|
3
|
-
showCommands: boolean;
|
|
4
|
-
setShowCommands: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
5
|
-
commandSelectedIndex: number;
|
|
6
|
-
setCommandSelectedIndex: import("react").Dispatch<import("react").SetStateAction<number>>;
|
|
7
|
-
getFilteredCommands: () => {
|
|
8
|
-
name: string;
|
|
9
|
-
description: string;
|
|
10
|
-
}[];
|
|
11
|
-
updateCommandPanelState: (text: string) => void;
|
|
12
|
-
commands: {
|
|
13
|
-
name: string;
|
|
14
|
-
description: string;
|
|
15
|
-
}[];
|
|
16
|
-
isProcessing: boolean;
|
|
17
|
-
};
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { useState, useCallback } from 'react';
|
|
2
|
-
import { useI18n } from '../i18n/index.js';
|
|
3
|
-
export function useCommandPanel(buffer, isProcessing = false) {
|
|
4
|
-
const { t } = useI18n();
|
|
5
|
-
// Command Definition
|
|
6
|
-
const commands = [
|
|
7
|
-
{ name: 'help', description: t.commandPanel.commands.help },
|
|
8
|
-
{ name: 'clear', description: t.commandPanel.commands.clear },
|
|
9
|
-
{ name: 'resume', description: t.commandPanel.commands.resume },
|
|
10
|
-
{ name: 'mcp', description: t.commandPanel.commands.mcp },
|
|
11
|
-
{
|
|
12
|
-
name: 'yolo',
|
|
13
|
-
description: t.commandPanel.commands.yolo,
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
name: 'init',
|
|
17
|
-
description: t.commandPanel.commands.init,
|
|
18
|
-
},
|
|
19
|
-
{ name: 'ide', description: t.commandPanel.commands.ide },
|
|
20
|
-
{
|
|
21
|
-
name: 'compact',
|
|
22
|
-
description: t.commandPanel.commands.compact,
|
|
23
|
-
},
|
|
24
|
-
{ name: 'home', description: t.commandPanel.commands.home },
|
|
25
|
-
{
|
|
26
|
-
name: 'review',
|
|
27
|
-
description: t.commandPanel.commands.review,
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
name: 'role',
|
|
31
|
-
description: t.commandPanel.commands.role,
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
name: 'usage',
|
|
35
|
-
description: t.commandPanel.commands.usage,
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: 'export',
|
|
39
|
-
description: t.commandPanel.commands.export,
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
name: 'agent-',
|
|
43
|
-
description: t.commandPanel.commands.agent,
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
name: 'todo-',
|
|
47
|
-
description: t.commandPanel.commands.todo,
|
|
48
|
-
},
|
|
49
|
-
];
|
|
50
|
-
const [showCommands, setShowCommands] = useState(false);
|
|
51
|
-
const [commandSelectedIndex, setCommandSelectedIndex] = useState(0);
|
|
52
|
-
// Get filtered commands based on current input
|
|
53
|
-
const getFilteredCommands = useCallback(() => {
|
|
54
|
-
const text = buffer.getFullText();
|
|
55
|
-
if (!text.startsWith('/'))
|
|
56
|
-
return [];
|
|
57
|
-
const query = text.slice(1).toLowerCase();
|
|
58
|
-
// Filter and sort commands by priority
|
|
59
|
-
// Priority order:
|
|
60
|
-
// 1. Command starts with query (highest)
|
|
61
|
-
// 2. Command contains query
|
|
62
|
-
// 3. Description starts with query
|
|
63
|
-
// 4. Description contains query (lowest)
|
|
64
|
-
const filtered = commands
|
|
65
|
-
.filter(command => command.name.toLowerCase().includes(query) ||
|
|
66
|
-
command.description.toLowerCase().includes(query))
|
|
67
|
-
.map(command => {
|
|
68
|
-
const nameLower = command.name.toLowerCase();
|
|
69
|
-
const descLower = command.description.toLowerCase();
|
|
70
|
-
let priority = 4; // Default: description contains query
|
|
71
|
-
if (nameLower.startsWith(query)) {
|
|
72
|
-
priority = 1; // Command starts with query
|
|
73
|
-
}
|
|
74
|
-
else if (nameLower.includes(query)) {
|
|
75
|
-
priority = 2; // Command contains query
|
|
76
|
-
}
|
|
77
|
-
else if (descLower.startsWith(query)) {
|
|
78
|
-
priority = 3; // Description starts with query
|
|
79
|
-
}
|
|
80
|
-
return { command, priority };
|
|
81
|
-
})
|
|
82
|
-
.sort((a, b) => {
|
|
83
|
-
// Sort by priority (lower number = higher priority)
|
|
84
|
-
if (a.priority !== b.priority) {
|
|
85
|
-
return a.priority - b.priority;
|
|
86
|
-
}
|
|
87
|
-
// If same priority, sort alphabetically by name
|
|
88
|
-
return a.command.name.localeCompare(b.command.name);
|
|
89
|
-
})
|
|
90
|
-
.map(item => item.command);
|
|
91
|
-
return filtered;
|
|
92
|
-
}, [buffer, commands]);
|
|
93
|
-
// Update command panel state
|
|
94
|
-
const updateCommandPanelState = useCallback((text) => {
|
|
95
|
-
if (text.startsWith('/') && text.length > 0) {
|
|
96
|
-
setShowCommands(true);
|
|
97
|
-
setCommandSelectedIndex(0);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
setShowCommands(false);
|
|
101
|
-
setCommandSelectedIndex(0);
|
|
102
|
-
}
|
|
103
|
-
}, []);
|
|
104
|
-
return {
|
|
105
|
-
showCommands,
|
|
106
|
-
setShowCommands,
|
|
107
|
-
commandSelectedIndex,
|
|
108
|
-
setCommandSelectedIndex,
|
|
109
|
-
getFilteredCommands,
|
|
110
|
-
updateCommandPanelState,
|
|
111
|
-
commands,
|
|
112
|
-
isProcessing, // Export isProcessing for CommandPanel to use
|
|
113
|
-
};
|
|
114
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { type ToolCall } from '../utils/toolExecutor.js';
|
|
2
|
-
import type { Message } from '../ui/components/MessageList.js';
|
|
3
|
-
import type { ConfirmationResult } from '../ui/components/ToolConfirmation.js';
|
|
4
|
-
export type ConversationHandlerOptions = {
|
|
5
|
-
userContent: string;
|
|
6
|
-
imageContents: Array<{
|
|
7
|
-
type: 'image';
|
|
8
|
-
data: string;
|
|
9
|
-
mimeType: string;
|
|
10
|
-
}> | undefined;
|
|
11
|
-
controller: AbortController;
|
|
12
|
-
messages: Message[];
|
|
13
|
-
saveMessage: (message: any) => Promise<void>;
|
|
14
|
-
setMessages: React.Dispatch<React.SetStateAction<Message[]>>;
|
|
15
|
-
setStreamTokenCount: React.Dispatch<React.SetStateAction<number>>;
|
|
16
|
-
requestToolConfirmation: (toolCall: ToolCall, batchToolNames?: string, allTools?: ToolCall[]) => Promise<ConfirmationResult>;
|
|
17
|
-
isToolAutoApproved: (toolName: string) => boolean;
|
|
18
|
-
addMultipleToAlwaysApproved: (toolNames: string[]) => void;
|
|
19
|
-
yoloMode: boolean;
|
|
20
|
-
setContextUsage: React.Dispatch<React.SetStateAction<any>>;
|
|
21
|
-
useBasicModel?: boolean;
|
|
22
|
-
getPendingMessages?: () => Array<{
|
|
23
|
-
text: string;
|
|
24
|
-
images?: Array<{
|
|
25
|
-
data: string;
|
|
26
|
-
mimeType: string;
|
|
27
|
-
}>;
|
|
28
|
-
}>;
|
|
29
|
-
clearPendingMessages?: () => void;
|
|
30
|
-
setIsStreaming?: React.Dispatch<React.SetStateAction<boolean>>;
|
|
31
|
-
setIsReasoning?: React.Dispatch<React.SetStateAction<boolean>>;
|
|
32
|
-
setRetryStatus?: React.Dispatch<React.SetStateAction<{
|
|
33
|
-
isRetrying: boolean;
|
|
34
|
-
attempt: number;
|
|
35
|
-
nextDelay: number;
|
|
36
|
-
remainingSeconds?: number;
|
|
37
|
-
errorMessage?: string;
|
|
38
|
-
} | null>>;
|
|
39
|
-
clearSavedMessages?: () => void;
|
|
40
|
-
setRemountKey?: React.Dispatch<React.SetStateAction<number>>;
|
|
41
|
-
getCurrentContextPercentage?: () => number;
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* Handle conversation with streaming and tool calls
|
|
45
|
-
* Returns the usage data collected during the conversation
|
|
46
|
-
*/
|
|
47
|
-
export declare function handleConversationWithTools(options: ConversationHandlerOptions): Promise<{
|
|
48
|
-
usage: any | null;
|
|
49
|
-
}>;
|