snow-ai 0.4.15 → 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 -379
- 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 -1495
- 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,434 +0,0 @@
|
|
|
1
|
-
import { createStreamingAnthropicCompletion } from '../api/anthropic.js';
|
|
2
|
-
import { createStreamingResponse } from '../api/responses.js';
|
|
3
|
-
import { createStreamingGeminiCompletion } from '../api/gemini.js';
|
|
4
|
-
import { createStreamingChatCompletion } from '../api/chat.js';
|
|
5
|
-
import { getSubAgent } from './subAgentConfig.js';
|
|
6
|
-
import { collectAllMCPTools, executeMCPTool } from './mcpToolsManager.js';
|
|
7
|
-
import { getOpenAiConfig } from './apiConfig.js';
|
|
8
|
-
import { sessionManager } from './sessionManager.js';
|
|
9
|
-
/**
|
|
10
|
-
* Execute a sub-agent as a tool
|
|
11
|
-
* @param agentId - The ID of the sub-agent to execute
|
|
12
|
-
* @param prompt - The task prompt to send to the sub-agent
|
|
13
|
-
* @param onMessage - Callback for streaming sub-agent messages (for UI display)
|
|
14
|
-
* @param abortSignal - Optional abort signal
|
|
15
|
-
* @param requestToolConfirmation - Callback to request tool confirmation from user
|
|
16
|
-
* @param isToolAutoApproved - Function to check if a tool is auto-approved
|
|
17
|
-
* @param yoloMode - Whether YOLO mode is enabled (auto-approve all tools)
|
|
18
|
-
* @returns The final result from the sub-agent
|
|
19
|
-
*/
|
|
20
|
-
export async function executeSubAgent(agentId, prompt, onMessage, abortSignal, requestToolConfirmation, isToolAutoApproved, yoloMode, addToAlwaysApproved) {
|
|
21
|
-
try {
|
|
22
|
-
// Handle built-in agents (hardcoded)
|
|
23
|
-
let agent;
|
|
24
|
-
if (agentId === 'agent_explore') {
|
|
25
|
-
agent = {
|
|
26
|
-
id: 'agent_explore',
|
|
27
|
-
name: 'Explore Agent',
|
|
28
|
-
description: 'Specialized for quickly exploring and understanding codebases. Excels at searching code, finding definitions, analyzing code structure and semantic understanding.',
|
|
29
|
-
role: 'You are a specialized code exploration agent. Your task is to help users understand codebase structure, locate specific code, and analyze dependencies. Use search and analysis tools to explore code, but do not modify any files or execute commands. Focus on code discovery and understanding.\n\nIMPORTANT: You have NO access to the main conversation history. The prompt provided to you contains ALL the context from the main session. Read it carefully - all file locations, business requirements, constraints, and discovered information are included in the prompt. Do not assume any additional context.',
|
|
30
|
-
tools: [
|
|
31
|
-
// Filesystem read-only tools
|
|
32
|
-
'filesystem-read',
|
|
33
|
-
// ACE code search tools (core tools)
|
|
34
|
-
'ace-find_definition',
|
|
35
|
-
'ace-find_references',
|
|
36
|
-
'ace-semantic_search',
|
|
37
|
-
'ace-text_search',
|
|
38
|
-
'ace-file_outline',
|
|
39
|
-
// Codebase search tools
|
|
40
|
-
'codebase-search',
|
|
41
|
-
// Web search for documentation
|
|
42
|
-
'websearch-search',
|
|
43
|
-
'websearch-fetch',
|
|
44
|
-
],
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
else if (agentId === 'agent_plan') {
|
|
48
|
-
agent = {
|
|
49
|
-
id: 'agent_plan',
|
|
50
|
-
name: 'Plan Agent',
|
|
51
|
-
description: 'Specialized for planning complex tasks. Excels at analyzing requirements, exploring existing code, and creating detailed implementation plans.',
|
|
52
|
-
role: 'You are a specialized task planning agent. Your task is to analyze user requirements, explore existing codebase, identify relevant files and dependencies, and then create detailed implementation plans. Use search and analysis tools to gather information, check diagnostics to understand current state, but do not execute actual modifications. Output clear step-by-step plans including files to modify, suggested implementation approaches, and important considerations.\n\nIMPORTANT: You have NO access to the main conversation history. The prompt provided to you contains ALL the context from the main session. Read it carefully - all requirements, architecture understanding, file locations, constraints, and user preferences are included in the prompt. Do not assume any additional context.',
|
|
53
|
-
tools: [
|
|
54
|
-
// Filesystem read-only tools
|
|
55
|
-
'filesystem-read',
|
|
56
|
-
// ACE code search tools (planning requires code understanding)
|
|
57
|
-
'ace-find_definition',
|
|
58
|
-
'ace-find_references',
|
|
59
|
-
'ace-semantic_search',
|
|
60
|
-
'ace-text_search',
|
|
61
|
-
'ace-file_outline',
|
|
62
|
-
// IDE diagnostics (understand current issues)
|
|
63
|
-
'ide-get_diagnostics',
|
|
64
|
-
// Codebase search
|
|
65
|
-
'codebase-search',
|
|
66
|
-
// Web search for reference
|
|
67
|
-
'websearch-search',
|
|
68
|
-
'websearch-fetch',
|
|
69
|
-
],
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
else if (agentId === 'agent_general') {
|
|
73
|
-
agent = {
|
|
74
|
-
id: 'agent_general',
|
|
75
|
-
name: 'General Purpose Agent',
|
|
76
|
-
description: 'General-purpose multi-step task execution agent. Has complete tool access for code search, file modification, command execution, and various operations.',
|
|
77
|
-
role: 'You are a general-purpose task execution agent. You can perform various complex multi-step tasks, including searching code, modifying files, executing commands, etc. When given a task, systematically break it down and execute. You have access to all tools and should select appropriate tools as needed to complete tasks efficiently.\n\nIMPORTANT: You have NO access to the main conversation history. The prompt provided to you contains ALL the context from the main session. Read it carefully - all task requirements, file paths, code patterns, dependencies, business logic, constraints, and testing requirements are included in the prompt. Do not assume any additional context.',
|
|
78
|
-
tools: [
|
|
79
|
-
// Filesystem tools (complete access)
|
|
80
|
-
'filesystem-read',
|
|
81
|
-
'filesystem-create',
|
|
82
|
-
'filesystem-edit',
|
|
83
|
-
'filesystem-edit_search',
|
|
84
|
-
// Terminal tools
|
|
85
|
-
'terminal-execute',
|
|
86
|
-
// ACE code search tools
|
|
87
|
-
'ace-find_definition',
|
|
88
|
-
'ace-find_references',
|
|
89
|
-
'ace-semantic_search',
|
|
90
|
-
'ace-text_search',
|
|
91
|
-
'ace-file_outline',
|
|
92
|
-
// Web search tools
|
|
93
|
-
'websearch-search',
|
|
94
|
-
'websearch-fetch',
|
|
95
|
-
// IDE diagnostics tools
|
|
96
|
-
'ide-get_diagnostics',
|
|
97
|
-
// Codebase search tools
|
|
98
|
-
'codebase-search',
|
|
99
|
-
],
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
// Get user-configured sub-agent
|
|
104
|
-
agent = getSubAgent(agentId);
|
|
105
|
-
if (!agent) {
|
|
106
|
-
return {
|
|
107
|
-
success: false,
|
|
108
|
-
result: '',
|
|
109
|
-
error: `Sub-agent with ID "${agentId}" not found`,
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
// Get all available tools
|
|
114
|
-
const allTools = await collectAllMCPTools();
|
|
115
|
-
// Filter tools based on sub-agent's allowed tools
|
|
116
|
-
const allowedTools = allTools.filter((tool) => {
|
|
117
|
-
const toolName = tool.function.name;
|
|
118
|
-
return agent.tools.some((allowedTool) => {
|
|
119
|
-
// Normalize both tool names: replace underscores with hyphens for comparison
|
|
120
|
-
const normalizedToolName = toolName.replace(/_/g, '-');
|
|
121
|
-
const normalizedAllowedTool = allowedTool.replace(/_/g, '-');
|
|
122
|
-
// Support both exact match and prefix match (e.g., "filesystem" matches "filesystem-read")
|
|
123
|
-
return (normalizedToolName === normalizedAllowedTool ||
|
|
124
|
-
normalizedToolName.startsWith(`${normalizedAllowedTool}-`));
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
if (allowedTools.length === 0) {
|
|
128
|
-
return {
|
|
129
|
-
success: false,
|
|
130
|
-
result: '',
|
|
131
|
-
error: `Sub-agent "${agent.name}" has no valid tools configured`,
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
// Build conversation history for sub-agent
|
|
135
|
-
// Append role to prompt if configured
|
|
136
|
-
let finalPrompt = prompt;
|
|
137
|
-
if (agent.role) {
|
|
138
|
-
finalPrompt = `${prompt}\n\n${agent.role}`;
|
|
139
|
-
}
|
|
140
|
-
const messages = [
|
|
141
|
-
{
|
|
142
|
-
role: 'user',
|
|
143
|
-
content: finalPrompt,
|
|
144
|
-
},
|
|
145
|
-
];
|
|
146
|
-
// Stream sub-agent execution
|
|
147
|
-
let finalResponse = '';
|
|
148
|
-
let hasError = false;
|
|
149
|
-
let errorMessage = '';
|
|
150
|
-
let totalUsage;
|
|
151
|
-
// Local session-approved tools for this sub-agent execution
|
|
152
|
-
// This ensures tools approved during execution are immediately recognized
|
|
153
|
-
const sessionApprovedTools = new Set();
|
|
154
|
-
// eslint-disable-next-line no-constant-condition
|
|
155
|
-
while (true) {
|
|
156
|
-
// Check abort signal before streaming
|
|
157
|
-
if (abortSignal?.aborted) {
|
|
158
|
-
// Send done message to mark completion (like normal tool abort)
|
|
159
|
-
if (onMessage) {
|
|
160
|
-
onMessage({
|
|
161
|
-
type: 'sub_agent_message',
|
|
162
|
-
agentId: agent.id,
|
|
163
|
-
agentName: agent.name,
|
|
164
|
-
message: {
|
|
165
|
-
type: 'done',
|
|
166
|
-
},
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
return {
|
|
170
|
-
success: false,
|
|
171
|
-
result: finalResponse,
|
|
172
|
-
error: 'Sub-agent execution aborted',
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
// Get API configuration
|
|
176
|
-
const config = getOpenAiConfig();
|
|
177
|
-
const currentSession = sessionManager.getCurrentSession();
|
|
178
|
-
const model = config.advancedModel || 'gpt-5';
|
|
179
|
-
// Call API with sub-agent's tools - choose API based on config
|
|
180
|
-
const stream = config.requestMethod === 'anthropic'
|
|
181
|
-
? createStreamingAnthropicCompletion({
|
|
182
|
-
model,
|
|
183
|
-
messages,
|
|
184
|
-
temperature: 0,
|
|
185
|
-
max_tokens: config.maxTokens || 4096,
|
|
186
|
-
tools: allowedTools,
|
|
187
|
-
sessionId: currentSession?.id,
|
|
188
|
-
disableThinking: true, // Sub-agents 不使用 Extended Thinking
|
|
189
|
-
}, abortSignal)
|
|
190
|
-
: config.requestMethod === 'gemini'
|
|
191
|
-
? createStreamingGeminiCompletion({
|
|
192
|
-
model,
|
|
193
|
-
messages,
|
|
194
|
-
temperature: 0,
|
|
195
|
-
tools: allowedTools,
|
|
196
|
-
}, abortSignal)
|
|
197
|
-
: config.requestMethod === 'responses'
|
|
198
|
-
? createStreamingResponse({
|
|
199
|
-
model,
|
|
200
|
-
messages,
|
|
201
|
-
temperature: 0,
|
|
202
|
-
tools: allowedTools,
|
|
203
|
-
prompt_cache_key: currentSession?.id,
|
|
204
|
-
}, abortSignal)
|
|
205
|
-
: createStreamingChatCompletion({
|
|
206
|
-
model,
|
|
207
|
-
messages,
|
|
208
|
-
temperature: 0,
|
|
209
|
-
tools: allowedTools,
|
|
210
|
-
}, abortSignal);
|
|
211
|
-
let currentContent = '';
|
|
212
|
-
let toolCalls = [];
|
|
213
|
-
for await (const event of stream) {
|
|
214
|
-
// Forward message to UI (but don't save to main conversation)
|
|
215
|
-
if (onMessage) {
|
|
216
|
-
onMessage({
|
|
217
|
-
type: 'sub_agent_message',
|
|
218
|
-
agentId: agent.id,
|
|
219
|
-
agentName: agent.name,
|
|
220
|
-
message: event,
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
// Capture usage from stream events
|
|
224
|
-
if (event.type === 'usage' && event.usage) {
|
|
225
|
-
const eventUsage = event.usage;
|
|
226
|
-
if (!totalUsage) {
|
|
227
|
-
totalUsage = {
|
|
228
|
-
inputTokens: eventUsage.prompt_tokens || 0,
|
|
229
|
-
outputTokens: eventUsage.completion_tokens || 0,
|
|
230
|
-
cacheCreationInputTokens: eventUsage.cache_creation_input_tokens,
|
|
231
|
-
cacheReadInputTokens: eventUsage.cache_read_input_tokens,
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
// Accumulate usage if there are multiple rounds
|
|
236
|
-
totalUsage.inputTokens += eventUsage.prompt_tokens || 0;
|
|
237
|
-
totalUsage.outputTokens += eventUsage.completion_tokens || 0;
|
|
238
|
-
if (eventUsage.cache_creation_input_tokens) {
|
|
239
|
-
totalUsage.cacheCreationInputTokens =
|
|
240
|
-
(totalUsage.cacheCreationInputTokens || 0) +
|
|
241
|
-
eventUsage.cache_creation_input_tokens;
|
|
242
|
-
}
|
|
243
|
-
if (eventUsage.cache_read_input_tokens) {
|
|
244
|
-
totalUsage.cacheReadInputTokens =
|
|
245
|
-
(totalUsage.cacheReadInputTokens || 0) +
|
|
246
|
-
eventUsage.cache_read_input_tokens;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
if (event.type === 'content' && event.content) {
|
|
251
|
-
currentContent += event.content;
|
|
252
|
-
}
|
|
253
|
-
else if (event.type === 'tool_calls' && event.tool_calls) {
|
|
254
|
-
toolCalls = event.tool_calls;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
if (hasError) {
|
|
258
|
-
return {
|
|
259
|
-
success: false,
|
|
260
|
-
result: finalResponse,
|
|
261
|
-
error: errorMessage,
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
// Add assistant response to conversation
|
|
265
|
-
if (currentContent || toolCalls.length > 0) {
|
|
266
|
-
const assistantMessage = {
|
|
267
|
-
role: 'assistant',
|
|
268
|
-
content: currentContent || '',
|
|
269
|
-
};
|
|
270
|
-
if (toolCalls.length > 0) {
|
|
271
|
-
assistantMessage.tool_calls = toolCalls;
|
|
272
|
-
}
|
|
273
|
-
messages.push(assistantMessage);
|
|
274
|
-
finalResponse = currentContent;
|
|
275
|
-
}
|
|
276
|
-
// If no tool calls, we're done
|
|
277
|
-
if (toolCalls.length === 0) {
|
|
278
|
-
break;
|
|
279
|
-
}
|
|
280
|
-
// Check tool approvals before execution
|
|
281
|
-
const approvedToolCalls = [];
|
|
282
|
-
const rejectedToolCalls = [];
|
|
283
|
-
for (const toolCall of toolCalls) {
|
|
284
|
-
const toolName = toolCall.function.name;
|
|
285
|
-
let args;
|
|
286
|
-
try {
|
|
287
|
-
args = JSON.parse(toolCall.function.arguments);
|
|
288
|
-
}
|
|
289
|
-
catch (e) {
|
|
290
|
-
args = {};
|
|
291
|
-
}
|
|
292
|
-
// Check if tool needs confirmation
|
|
293
|
-
let needsConfirmation = true;
|
|
294
|
-
// In YOLO mode, auto-approve all tools
|
|
295
|
-
if (yoloMode) {
|
|
296
|
-
needsConfirmation = false;
|
|
297
|
-
}
|
|
298
|
-
// Check if tool is in auto-approved list (global or session)
|
|
299
|
-
else if (sessionApprovedTools.has(toolName) ||
|
|
300
|
-
(isToolAutoApproved && isToolAutoApproved(toolName))) {
|
|
301
|
-
needsConfirmation = false;
|
|
302
|
-
}
|
|
303
|
-
if (needsConfirmation && requestToolConfirmation) {
|
|
304
|
-
// Request confirmation from user
|
|
305
|
-
const confirmation = await requestToolConfirmation(toolName, args);
|
|
306
|
-
if (confirmation === 'reject' ||
|
|
307
|
-
(typeof confirmation === 'object' &&
|
|
308
|
-
confirmation.type === 'reject_with_reply')) {
|
|
309
|
-
rejectedToolCalls.push(toolCall);
|
|
310
|
-
continue;
|
|
311
|
-
}
|
|
312
|
-
// If approve_always, add to both global and session lists
|
|
313
|
-
if (confirmation === 'approve_always') {
|
|
314
|
-
// Add to local session set (immediate effect)
|
|
315
|
-
sessionApprovedTools.add(toolName);
|
|
316
|
-
// Add to global list (persistent across sub-agent calls)
|
|
317
|
-
if (addToAlwaysApproved) {
|
|
318
|
-
addToAlwaysApproved(toolName);
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
approvedToolCalls.push(toolCall);
|
|
323
|
-
}
|
|
324
|
-
// Handle rejected tools
|
|
325
|
-
if (rejectedToolCalls.length > 0) {
|
|
326
|
-
// Send done message to mark completion when tools are rejected
|
|
327
|
-
if (onMessage) {
|
|
328
|
-
onMessage({
|
|
329
|
-
type: 'sub_agent_message',
|
|
330
|
-
agentId: agent.id,
|
|
331
|
-
agentName: agent.name,
|
|
332
|
-
message: {
|
|
333
|
-
type: 'done',
|
|
334
|
-
},
|
|
335
|
-
});
|
|
336
|
-
}
|
|
337
|
-
return {
|
|
338
|
-
success: false,
|
|
339
|
-
result: finalResponse,
|
|
340
|
-
error: `User rejected tool execution: ${rejectedToolCalls
|
|
341
|
-
.map(tc => tc.function.name)
|
|
342
|
-
.join(', ')}`,
|
|
343
|
-
};
|
|
344
|
-
}
|
|
345
|
-
// Execute approved tool calls
|
|
346
|
-
const toolResults = [];
|
|
347
|
-
for (const toolCall of approvedToolCalls) {
|
|
348
|
-
// Check abort signal before executing each tool
|
|
349
|
-
if (abortSignal?.aborted) {
|
|
350
|
-
// Send done message to mark completion
|
|
351
|
-
if (onMessage) {
|
|
352
|
-
onMessage({
|
|
353
|
-
type: 'sub_agent_message',
|
|
354
|
-
agentId: agent.id,
|
|
355
|
-
agentName: agent.name,
|
|
356
|
-
message: {
|
|
357
|
-
type: 'done',
|
|
358
|
-
},
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
|
-
return {
|
|
362
|
-
success: false,
|
|
363
|
-
result: finalResponse,
|
|
364
|
-
error: 'Sub-agent execution aborted during tool execution',
|
|
365
|
-
};
|
|
366
|
-
}
|
|
367
|
-
try {
|
|
368
|
-
const args = JSON.parse(toolCall.function.arguments);
|
|
369
|
-
const result = await executeMCPTool(toolCall.function.name, args, abortSignal);
|
|
370
|
-
const toolResult = {
|
|
371
|
-
role: 'tool',
|
|
372
|
-
tool_call_id: toolCall.id,
|
|
373
|
-
content: JSON.stringify(result),
|
|
374
|
-
};
|
|
375
|
-
toolResults.push(toolResult);
|
|
376
|
-
// Send tool result to UI
|
|
377
|
-
if (onMessage) {
|
|
378
|
-
onMessage({
|
|
379
|
-
type: 'sub_agent_message',
|
|
380
|
-
agentId: agent.id,
|
|
381
|
-
agentName: agent.name,
|
|
382
|
-
message: {
|
|
383
|
-
type: 'tool_result',
|
|
384
|
-
tool_call_id: toolCall.id,
|
|
385
|
-
tool_name: toolCall.function.name,
|
|
386
|
-
content: JSON.stringify(result),
|
|
387
|
-
},
|
|
388
|
-
});
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
catch (error) {
|
|
392
|
-
const errorResult = {
|
|
393
|
-
role: 'tool',
|
|
394
|
-
tool_call_id: toolCall.id,
|
|
395
|
-
content: `Error: ${error instanceof Error ? error.message : 'Tool execution failed'}`,
|
|
396
|
-
};
|
|
397
|
-
toolResults.push(errorResult);
|
|
398
|
-
// Send error result to UI
|
|
399
|
-
if (onMessage) {
|
|
400
|
-
onMessage({
|
|
401
|
-
type: 'sub_agent_message',
|
|
402
|
-
agentId: agent.id,
|
|
403
|
-
agentName: agent.name,
|
|
404
|
-
message: {
|
|
405
|
-
type: 'tool_result',
|
|
406
|
-
tool_call_id: toolCall.id,
|
|
407
|
-
tool_name: toolCall.function.name,
|
|
408
|
-
content: `Error: ${error instanceof Error
|
|
409
|
-
? error.message
|
|
410
|
-
: 'Tool execution failed'}`,
|
|
411
|
-
},
|
|
412
|
-
});
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
// Add tool results to conversation
|
|
417
|
-
messages.push(...toolResults);
|
|
418
|
-
// Continue to next iteration if there were tool calls
|
|
419
|
-
// The loop will continue until no more tool calls
|
|
420
|
-
}
|
|
421
|
-
return {
|
|
422
|
-
success: true,
|
|
423
|
-
result: finalResponse,
|
|
424
|
-
usage: totalUsage,
|
|
425
|
-
};
|
|
426
|
-
}
|
|
427
|
-
catch (error) {
|
|
428
|
-
return {
|
|
429
|
-
success: false,
|
|
430
|
-
result: '',
|
|
431
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
432
|
-
};
|
|
433
|
-
}
|
|
434
|
-
}
|
package/dist/utils/terminal.d.ts
DELETED
package/dist/utils/terminal.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export function resetTerminal(stream) {
|
|
2
|
-
const target = stream ?? process.stdout;
|
|
3
|
-
if (!target || typeof target.write !== 'function') {
|
|
4
|
-
return;
|
|
5
|
-
}
|
|
6
|
-
// RIS (Reset to Initial State) clears scrollback and resets terminal modes
|
|
7
|
-
target.write('\x1bc');
|
|
8
|
-
target.write('\x1B[3J\x1B[2J\x1B[H');
|
|
9
|
-
// Re-enable focus reporting immediately after terminal reset
|
|
10
|
-
// The RIS command (\x1bc) disables focus reporting, so we must re-enable it
|
|
11
|
-
// This ensures focus state tracking continues to work after /clear command
|
|
12
|
-
target.write('\x1b[?1004h');
|
|
13
|
-
}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
export interface Viewport {
|
|
2
|
-
width: number;
|
|
3
|
-
height: number;
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* 统一的占位符类型,用于大文本粘贴和图片
|
|
7
|
-
*/
|
|
8
|
-
export interface Placeholder {
|
|
9
|
-
id: string;
|
|
10
|
-
content: string;
|
|
11
|
-
type: 'text' | 'image';
|
|
12
|
-
charCount: number;
|
|
13
|
-
index: number;
|
|
14
|
-
placeholder: string;
|
|
15
|
-
mimeType?: string;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* 图片数据类型(向后兼容)
|
|
19
|
-
*/
|
|
20
|
-
export interface ImageData {
|
|
21
|
-
id: string;
|
|
22
|
-
data: string;
|
|
23
|
-
mimeType: string;
|
|
24
|
-
index: number;
|
|
25
|
-
placeholder: string;
|
|
26
|
-
}
|
|
27
|
-
export declare class TextBuffer {
|
|
28
|
-
private content;
|
|
29
|
-
private cursorIndex;
|
|
30
|
-
private viewport;
|
|
31
|
-
private placeholderStorage;
|
|
32
|
-
private textPlaceholderCounter;
|
|
33
|
-
private imagePlaceholderCounter;
|
|
34
|
-
private onUpdateCallback?;
|
|
35
|
-
private isDestroyed;
|
|
36
|
-
private tempPastingPlaceholder;
|
|
37
|
-
private visualLines;
|
|
38
|
-
private visualLineStarts;
|
|
39
|
-
private visualCursorPos;
|
|
40
|
-
private preferredVisualCol;
|
|
41
|
-
constructor(viewport: Viewport, onUpdate?: () => void);
|
|
42
|
-
/**
|
|
43
|
-
* Cleanup method to be called when the buffer is no longer needed
|
|
44
|
-
*/
|
|
45
|
-
destroy(): void;
|
|
46
|
-
get text(): string;
|
|
47
|
-
/**
|
|
48
|
-
* 获取完整文本,包括替换占位符为原始内容(仅文本类型)
|
|
49
|
-
*/
|
|
50
|
-
getFullText(): string;
|
|
51
|
-
get visualCursor(): [number, number];
|
|
52
|
-
getCursorPosition(): number;
|
|
53
|
-
setCursorPosition(position: number): void;
|
|
54
|
-
get viewportVisualLines(): string[];
|
|
55
|
-
get maxWidth(): number;
|
|
56
|
-
private scheduleUpdate;
|
|
57
|
-
setText(text: string): void;
|
|
58
|
-
insert(input: string): void;
|
|
59
|
-
/**
|
|
60
|
-
* 插入临时"粘贴中"占位符,用于大文本粘贴时的用户反馈
|
|
61
|
-
*/
|
|
62
|
-
insertPastingIndicator(): void;
|
|
63
|
-
private insertPlainText;
|
|
64
|
-
backspace(): void;
|
|
65
|
-
delete(): void;
|
|
66
|
-
moveLeft(): void;
|
|
67
|
-
moveRight(): void;
|
|
68
|
-
moveUp(): void;
|
|
69
|
-
moveDown(): void;
|
|
70
|
-
/**
|
|
71
|
-
* Update the viewport dimensions, useful for terminal resize handling.
|
|
72
|
-
*/
|
|
73
|
-
updateViewport(viewport: Viewport): void;
|
|
74
|
-
/**
|
|
75
|
-
* Get the character and its visual info at cursor position for proper rendering.
|
|
76
|
-
*/
|
|
77
|
-
getCharAtCursor(): {
|
|
78
|
-
char: string;
|
|
79
|
-
isWideChar: boolean;
|
|
80
|
-
};
|
|
81
|
-
private clampCursorIndex;
|
|
82
|
-
private recalculateVisualState;
|
|
83
|
-
private wrapLineToWidth;
|
|
84
|
-
private computeVisualCursorFromIndex;
|
|
85
|
-
private moveCursorToVisualRow;
|
|
86
|
-
private recomputeVisualCursorOnly;
|
|
87
|
-
/**
|
|
88
|
-
* 插入图片数据(使用统一的占位符系统)
|
|
89
|
-
*/
|
|
90
|
-
insertImage(base64Data: string, mimeType: string): void;
|
|
91
|
-
/**
|
|
92
|
-
* 获取所有图片数据(还原为 data URL 格式)
|
|
93
|
-
*/
|
|
94
|
-
getImages(): ImageData[];
|
|
95
|
-
/**
|
|
96
|
-
* 清除所有图片
|
|
97
|
-
*/
|
|
98
|
-
clearImages(): void;
|
|
99
|
-
}
|