snow-ai 0.4.16 → 0.4.18
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/bundle/tiktoken_bg.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,14 +0,0 @@
|
|
|
1
|
-
import React, { useEffect } from 'react';
|
|
2
|
-
import SessionListScreen from './SessionListScreen.js';
|
|
3
|
-
export default function SessionListScreenWrapper({ onBack, onSelectSession }) {
|
|
4
|
-
useEffect(() => {
|
|
5
|
-
process.stdout.write('\x1B[?1049h');
|
|
6
|
-
process.stdout.write('\x1B[2J');
|
|
7
|
-
process.stdout.write('\x1B[H');
|
|
8
|
-
return () => {
|
|
9
|
-
process.stdout.write('\x1B[2J');
|
|
10
|
-
process.stdout.write('\x1B[?1049l');
|
|
11
|
-
};
|
|
12
|
-
}, []);
|
|
13
|
-
return (React.createElement(SessionListScreen, { onBack: onBack, onSelectSession: onSelectSession }));
|
|
14
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface ShimmerTextProps {
|
|
3
|
-
text: string;
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* ShimmerText component that displays text with a white shimmer effect flowing through yellow text
|
|
7
|
-
*/
|
|
8
|
-
export default function ShimmerText({ text }: ShimmerTextProps): React.JSX.Element;
|
|
9
|
-
export {};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import React, { useState, useEffect } from 'react';
|
|
2
|
-
import { Text } from 'ink';
|
|
3
|
-
import chalk from 'chalk';
|
|
4
|
-
/**
|
|
5
|
-
* ShimmerText component that displays text with a white shimmer effect flowing through yellow text
|
|
6
|
-
*/
|
|
7
|
-
export default function ShimmerText({ text }) {
|
|
8
|
-
const [frame, setFrame] = useState(0);
|
|
9
|
-
useEffect(() => {
|
|
10
|
-
const interval = setInterval(() => {
|
|
11
|
-
setFrame(prev => (prev + 1) % (text.length + 5));
|
|
12
|
-
}, 100); // Update every 100ms for smooth animation
|
|
13
|
-
return () => clearInterval(interval);
|
|
14
|
-
}, [text.length]);
|
|
15
|
-
// Build the colored text with shimmer effect
|
|
16
|
-
let output = '';
|
|
17
|
-
for (let i = 0; i < text.length; i++) {
|
|
18
|
-
const char = text[i];
|
|
19
|
-
const distance = Math.abs(i - frame);
|
|
20
|
-
// Bright cyan shimmer in the center (distance 0-1)
|
|
21
|
-
if (distance <= 1) {
|
|
22
|
-
output += chalk.hex('#00FFFF')(char); // Bright cyan/aqua
|
|
23
|
-
}
|
|
24
|
-
// Deep blue for the rest (base color)
|
|
25
|
-
else {
|
|
26
|
-
output += chalk.hex('#1ACEB0')(char); // Steel blue
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return React.createElement(Text, null, output);
|
|
30
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { TodoItem } from '../../utils/todoScanner.js';
|
|
3
|
-
interface Props {
|
|
4
|
-
todos: TodoItem[];
|
|
5
|
-
selectedIndex: number;
|
|
6
|
-
selectedTodos: Set<string>;
|
|
7
|
-
visible: boolean;
|
|
8
|
-
maxHeight?: number;
|
|
9
|
-
isLoading?: boolean;
|
|
10
|
-
searchQuery?: string;
|
|
11
|
-
totalCount?: number;
|
|
12
|
-
}
|
|
13
|
-
declare const TodoPickerPanel: React.MemoExoticComponent<({ todos, selectedIndex, selectedTodos, visible, maxHeight, isLoading, searchQuery, totalCount, }: Props) => React.JSX.Element | null>;
|
|
14
|
-
export default TodoPickerPanel;
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import React, { memo, useMemo } from 'react';
|
|
2
|
-
import { Box, Text } from 'ink';
|
|
3
|
-
import { Alert } from '@inkjs/ui';
|
|
4
|
-
import { useTheme } from '../contexts/ThemeContext.js';
|
|
5
|
-
const TodoPickerPanel = memo(({ todos, selectedIndex, selectedTodos, visible, maxHeight, isLoading = false, searchQuery = '', totalCount = 0, }) => {
|
|
6
|
-
const { theme } = useTheme();
|
|
7
|
-
// Fixed maximum display items to prevent rendering issues
|
|
8
|
-
const MAX_DISPLAY_ITEMS = 5;
|
|
9
|
-
const effectiveMaxItems = maxHeight
|
|
10
|
-
? Math.min(maxHeight, MAX_DISPLAY_ITEMS)
|
|
11
|
-
: MAX_DISPLAY_ITEMS;
|
|
12
|
-
// Limit displayed todos
|
|
13
|
-
const displayedTodos = useMemo(() => {
|
|
14
|
-
if (todos.length <= effectiveMaxItems) {
|
|
15
|
-
return todos;
|
|
16
|
-
}
|
|
17
|
-
// Show todos around the selected index
|
|
18
|
-
const halfWindow = Math.floor(effectiveMaxItems / 2);
|
|
19
|
-
let startIndex = Math.max(0, selectedIndex - halfWindow);
|
|
20
|
-
let endIndex = Math.min(todos.length, startIndex + effectiveMaxItems);
|
|
21
|
-
// Adjust if we're near the end
|
|
22
|
-
if (endIndex - startIndex < effectiveMaxItems) {
|
|
23
|
-
startIndex = Math.max(0, endIndex - effectiveMaxItems);
|
|
24
|
-
}
|
|
25
|
-
return todos.slice(startIndex, endIndex);
|
|
26
|
-
}, [todos, selectedIndex, effectiveMaxItems]);
|
|
27
|
-
// Calculate actual selected index in the displayed subset
|
|
28
|
-
const displayedSelectedIndex = useMemo(() => {
|
|
29
|
-
return displayedTodos.findIndex(todo => {
|
|
30
|
-
const originalIndex = todos.indexOf(todo);
|
|
31
|
-
return originalIndex === selectedIndex;
|
|
32
|
-
});
|
|
33
|
-
}, [displayedTodos, todos, selectedIndex]);
|
|
34
|
-
// Don't show panel if not visible
|
|
35
|
-
if (!visible) {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
// Show loading state
|
|
39
|
-
if (isLoading) {
|
|
40
|
-
return (React.createElement(Box, { flexDirection: "column" },
|
|
41
|
-
React.createElement(Box, { width: "100%" },
|
|
42
|
-
React.createElement(Box, { flexDirection: "column", width: "100%" },
|
|
43
|
-
React.createElement(Box, null,
|
|
44
|
-
React.createElement(Text, { color: theme.colors.warning, bold: true }, "TODO Selection")),
|
|
45
|
-
React.createElement(Box, { marginTop: 1 },
|
|
46
|
-
React.createElement(Alert, { variant: "info" }, "Scanning project for TODO comments..."))))));
|
|
47
|
-
}
|
|
48
|
-
// Show message if no todos found
|
|
49
|
-
if (todos.length === 0 && !searchQuery) {
|
|
50
|
-
return (React.createElement(Box, { flexDirection: "column" },
|
|
51
|
-
React.createElement(Box, { width: "100%" },
|
|
52
|
-
React.createElement(Box, { flexDirection: "column", width: "100%" },
|
|
53
|
-
React.createElement(Box, null,
|
|
54
|
-
React.createElement(Text, { color: theme.colors.warning, bold: true }, "TODO Selection")),
|
|
55
|
-
React.createElement(Box, { marginTop: 1 },
|
|
56
|
-
React.createElement(Alert, { variant: "info" }, "No TODO comments found in the project"))))));
|
|
57
|
-
}
|
|
58
|
-
// Show message if search has no results
|
|
59
|
-
if (todos.length === 0 && searchQuery) {
|
|
60
|
-
return (React.createElement(Box, { flexDirection: "column" },
|
|
61
|
-
React.createElement(Box, { width: "100%" },
|
|
62
|
-
React.createElement(Box, { flexDirection: "column", width: "100%" },
|
|
63
|
-
React.createElement(Box, null,
|
|
64
|
-
React.createElement(Text, { color: theme.colors.warning, bold: true }, "TODO Selection")),
|
|
65
|
-
React.createElement(Box, { marginTop: 1 },
|
|
66
|
-
React.createElement(Alert, { variant: "warning" },
|
|
67
|
-
"No TODOs match \"",
|
|
68
|
-
searchQuery,
|
|
69
|
-
"\" (Total: ",
|
|
70
|
-
totalCount,
|
|
71
|
-
")")),
|
|
72
|
-
React.createElement(Box, { marginTop: 1 },
|
|
73
|
-
React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true }, "Type to filter \u00B7 Backspace to clear search"))))));
|
|
74
|
-
}
|
|
75
|
-
return (React.createElement(Box, { flexDirection: "column" },
|
|
76
|
-
React.createElement(Box, { width: "100%" },
|
|
77
|
-
React.createElement(Box, { flexDirection: "column", width: "100%" },
|
|
78
|
-
React.createElement(Box, null,
|
|
79
|
-
React.createElement(Text, { color: theme.colors.warning, bold: true },
|
|
80
|
-
"Select TODOs",
|
|
81
|
-
' ',
|
|
82
|
-
todos.length > effectiveMaxItems &&
|
|
83
|
-
`(${selectedIndex + 1}/${todos.length})`,
|
|
84
|
-
searchQuery && ` - Filtering: "${searchQuery}"`,
|
|
85
|
-
searchQuery &&
|
|
86
|
-
totalCount > todos.length &&
|
|
87
|
-
` (${todos.length}/${totalCount})`)),
|
|
88
|
-
React.createElement(Box, { marginTop: 1 },
|
|
89
|
-
React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true }, searchQuery
|
|
90
|
-
? 'Type to filter · Backspace to clear · Space: toggle · Enter: confirm'
|
|
91
|
-
: 'Type to search · Space: toggle · Enter: confirm · Esc: cancel')),
|
|
92
|
-
displayedTodos.map((todo, index) => {
|
|
93
|
-
const isSelected = index === displayedSelectedIndex;
|
|
94
|
-
const isChecked = selectedTodos.has(todo.id);
|
|
95
|
-
return (React.createElement(Box, { key: todo.id, flexDirection: "column", width: "100%" },
|
|
96
|
-
React.createElement(Text, { color: isSelected ? theme.colors.success : theme.colors.menuSecondary, bold: true },
|
|
97
|
-
isSelected ? '❯ ' : ' ',
|
|
98
|
-
isChecked ? '[✓]' : '[ ]',
|
|
99
|
-
" ",
|
|
100
|
-
todo.file,
|
|
101
|
-
":",
|
|
102
|
-
todo.line),
|
|
103
|
-
React.createElement(Box, { marginLeft: 5 },
|
|
104
|
-
React.createElement(Text, { color: isSelected ? theme.colors.success : theme.colors.menuSecondary, dimColor: !isSelected },
|
|
105
|
-
"\u2514\u2500 ",
|
|
106
|
-
todo.content))));
|
|
107
|
-
}),
|
|
108
|
-
todos.length > effectiveMaxItems && (React.createElement(Box, { marginTop: 1 },
|
|
109
|
-
React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true },
|
|
110
|
-
"\u2191\u2193 to scroll \u00B7 ",
|
|
111
|
-
todos.length - effectiveMaxItems,
|
|
112
|
-
" more hidden"))),
|
|
113
|
-
selectedTodos.size > 0 && (React.createElement(Box, { marginTop: 1 },
|
|
114
|
-
React.createElement(Text, { color: theme.colors.menuInfo },
|
|
115
|
-
selectedTodos.size,
|
|
116
|
-
" TODO(s) selected")))))));
|
|
117
|
-
});
|
|
118
|
-
TodoPickerPanel.displayName = 'TodoPickerPanel';
|
|
119
|
-
export default TodoPickerPanel;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface TodoItem {
|
|
3
|
-
id: string;
|
|
4
|
-
content: string;
|
|
5
|
-
status: 'pending' | 'completed';
|
|
6
|
-
parentId?: string;
|
|
7
|
-
}
|
|
8
|
-
interface TodoTreeProps {
|
|
9
|
-
todos: TodoItem[];
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* TODO Tree 组件 - 显示带复选框的任务树
|
|
13
|
-
*/
|
|
14
|
-
export default function TodoTree({ todos }: TodoTreeProps): React.JSX.Element | null;
|
|
15
|
-
export {};
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Box, Text } from 'ink';
|
|
3
|
-
import { useTheme } from '../contexts/ThemeContext.js';
|
|
4
|
-
/**
|
|
5
|
-
* TODO Tree 组件 - 显示带复选框的任务树
|
|
6
|
-
*/
|
|
7
|
-
export default function TodoTree({ todos }) {
|
|
8
|
-
const { theme } = useTheme();
|
|
9
|
-
if (todos.length === 0) {
|
|
10
|
-
return null;
|
|
11
|
-
}
|
|
12
|
-
// 按照层级关系组织 TODO
|
|
13
|
-
const rootTodos = todos.filter(t => !t.parentId);
|
|
14
|
-
const childTodosMap = new Map();
|
|
15
|
-
todos.forEach(todo => {
|
|
16
|
-
if (todo.parentId) {
|
|
17
|
-
const children = childTodosMap.get(todo.parentId) || [];
|
|
18
|
-
children.push(todo);
|
|
19
|
-
childTodosMap.set(todo.parentId, children);
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
const getStatusIcon = (status) => {
|
|
23
|
-
switch (status) {
|
|
24
|
-
case 'completed':
|
|
25
|
-
return '[✓]';
|
|
26
|
-
case 'pending':
|
|
27
|
-
return '[ ]';
|
|
28
|
-
default:
|
|
29
|
-
return '[ ]';
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
const getStatusColor = (status) => {
|
|
33
|
-
switch (status) {
|
|
34
|
-
case 'completed':
|
|
35
|
-
return theme.colors.success;
|
|
36
|
-
case 'pending':
|
|
37
|
-
return theme.colors.menuSecondary;
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
const renderTodo = (todo, depth = 0) => {
|
|
41
|
-
const children = childTodosMap.get(todo.id) || [];
|
|
42
|
-
const indent = ' '.repeat(depth);
|
|
43
|
-
const statusIcon = getStatusIcon(todo.status);
|
|
44
|
-
const statusColor = getStatusColor(todo.status);
|
|
45
|
-
return (React.createElement(Box, { key: todo.id, flexDirection: "column" },
|
|
46
|
-
React.createElement(Box, null,
|
|
47
|
-
React.createElement(Text, { color: statusColor },
|
|
48
|
-
indent,
|
|
49
|
-
statusIcon,
|
|
50
|
-
" ",
|
|
51
|
-
todo.content)),
|
|
52
|
-
children.map(child => renderTodo(child, depth + 1))));
|
|
53
|
-
};
|
|
54
|
-
return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: theme.colors.menuInfo, paddingX: 1, marginBottom: 1 },
|
|
55
|
-
React.createElement(Box, { marginBottom: 0 },
|
|
56
|
-
React.createElement(Text, { bold: true, color: theme.colors.menuInfo }, "TODO List")),
|
|
57
|
-
rootTodos.map(todo => renderTodo(todo)),
|
|
58
|
-
React.createElement(Box, { marginTop: 0 },
|
|
59
|
-
React.createElement(Text, { dimColor: true, color: theme.colors.menuSecondary }, "[ ] Pending \u00B7 [\u2713] Completed"))));
|
|
60
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export type ConfirmationResult = 'approve' | 'approve_always' | 'reject' | {
|
|
3
|
-
type: 'reject_with_reply';
|
|
4
|
-
reason: string;
|
|
5
|
-
};
|
|
6
|
-
export interface ToolCall {
|
|
7
|
-
id: string;
|
|
8
|
-
type: 'function';
|
|
9
|
-
function: {
|
|
10
|
-
name: string;
|
|
11
|
-
arguments: string;
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
interface Props {
|
|
15
|
-
toolName: string;
|
|
16
|
-
toolArguments?: string;
|
|
17
|
-
allTools?: ToolCall[];
|
|
18
|
-
onConfirm: (result: ConfirmationResult) => void;
|
|
19
|
-
}
|
|
20
|
-
export default function ToolConfirmation({ toolName, toolArguments, allTools, onConfirm, }: Props): React.JSX.Element;
|
|
21
|
-
export {};
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import React, { useState, useMemo } from 'react';
|
|
2
|
-
import { Box, Text } from 'ink';
|
|
3
|
-
import TextInput from 'ink-text-input';
|
|
4
|
-
import SelectInput from 'ink-select-input';
|
|
5
|
-
import { isSensitiveCommand } from '../../utils/sensitiveCommandManager.js';
|
|
6
|
-
import { useTheme } from '../contexts/ThemeContext.js';
|
|
7
|
-
// Helper function to format argument values with truncation
|
|
8
|
-
function formatArgumentValue(value, maxLength = 100) {
|
|
9
|
-
if (value === null || value === undefined) {
|
|
10
|
-
return String(value);
|
|
11
|
-
}
|
|
12
|
-
const stringValue = typeof value === 'string' ? value : JSON.stringify(value);
|
|
13
|
-
if (stringValue.length <= maxLength) {
|
|
14
|
-
return stringValue;
|
|
15
|
-
}
|
|
16
|
-
return stringValue.substring(0, maxLength) + '...';
|
|
17
|
-
}
|
|
18
|
-
// Helper function to convert parsed arguments to tree display format
|
|
19
|
-
function formatArgumentsAsTree(args, toolName) {
|
|
20
|
-
// For filesystem-create and filesystem-edit, exclude content fields
|
|
21
|
-
const excludeFields = new Set();
|
|
22
|
-
if (toolName === 'filesystem-create') {
|
|
23
|
-
excludeFields.add('content');
|
|
24
|
-
}
|
|
25
|
-
if (toolName === 'filesystem-edit') {
|
|
26
|
-
excludeFields.add('newContent');
|
|
27
|
-
}
|
|
28
|
-
if (toolName === 'filesystem-edit_search') {
|
|
29
|
-
excludeFields.add('searchContent');
|
|
30
|
-
excludeFields.add('replaceContent');
|
|
31
|
-
}
|
|
32
|
-
// For ACE tools, exclude large result fields that may contain extensive code
|
|
33
|
-
if (toolName?.startsWith('ace-')) {
|
|
34
|
-
excludeFields.add('context'); // ACE tools may return large context strings
|
|
35
|
-
excludeFields.add('signature'); // Function signatures can be verbose
|
|
36
|
-
}
|
|
37
|
-
const keys = Object.keys(args).filter(key => !excludeFields.has(key));
|
|
38
|
-
return keys.map((key, index) => ({
|
|
39
|
-
key,
|
|
40
|
-
value: formatArgumentValue(args[key]),
|
|
41
|
-
isLast: index === keys.length - 1,
|
|
42
|
-
}));
|
|
43
|
-
}
|
|
44
|
-
export default function ToolConfirmation({ toolName, toolArguments, allTools, onConfirm, }) {
|
|
45
|
-
const { theme } = useTheme();
|
|
46
|
-
const [hasSelected, setHasSelected] = useState(false);
|
|
47
|
-
const [showRejectInput, setShowRejectInput] = useState(false);
|
|
48
|
-
const [rejectReason, setRejectReason] = useState('');
|
|
49
|
-
// Check if this is a sensitive command (for terminal-execute)
|
|
50
|
-
const sensitiveCommandCheck = useMemo(() => {
|
|
51
|
-
if (toolName !== 'terminal-execute' || !toolArguments) {
|
|
52
|
-
return { isSensitive: false };
|
|
53
|
-
}
|
|
54
|
-
try {
|
|
55
|
-
const parsed = JSON.parse(toolArguments);
|
|
56
|
-
const command = parsed.command;
|
|
57
|
-
if (command && typeof command === 'string') {
|
|
58
|
-
return isSensitiveCommand(command);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
// Ignore parse errors
|
|
63
|
-
}
|
|
64
|
-
return { isSensitive: false };
|
|
65
|
-
}, [toolName, toolArguments]);
|
|
66
|
-
// Parse and format tool arguments for display (single tool)
|
|
67
|
-
const formattedArgs = useMemo(() => {
|
|
68
|
-
if (!toolArguments)
|
|
69
|
-
return null;
|
|
70
|
-
try {
|
|
71
|
-
const parsed = JSON.parse(toolArguments);
|
|
72
|
-
return formatArgumentsAsTree(parsed, toolName);
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
return null;
|
|
76
|
-
}
|
|
77
|
-
}, [toolArguments, toolName]);
|
|
78
|
-
// Parse and format all tools arguments for display (multiple tools)
|
|
79
|
-
const formattedAllTools = useMemo(() => {
|
|
80
|
-
if (!allTools || allTools.length === 0)
|
|
81
|
-
return null;
|
|
82
|
-
return allTools.map(tool => {
|
|
83
|
-
try {
|
|
84
|
-
const parsed = JSON.parse(tool.function.arguments);
|
|
85
|
-
return {
|
|
86
|
-
name: tool.function.name,
|
|
87
|
-
args: formatArgumentsAsTree(parsed, tool.function.name),
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
return {
|
|
92
|
-
name: tool.function.name,
|
|
93
|
-
args: [],
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
}, [allTools]);
|
|
98
|
-
// Conditionally show "Always approve" based on sensitive command check
|
|
99
|
-
const items = useMemo(() => {
|
|
100
|
-
const baseItems = [
|
|
101
|
-
{
|
|
102
|
-
label: 'Approve (once)',
|
|
103
|
-
value: 'approve',
|
|
104
|
-
},
|
|
105
|
-
];
|
|
106
|
-
// Only show "Always approve" if NOT a sensitive command
|
|
107
|
-
if (!sensitiveCommandCheck.isSensitive) {
|
|
108
|
-
baseItems.push({
|
|
109
|
-
label: 'Always approve this tool',
|
|
110
|
-
value: 'approve_always',
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
baseItems.push({
|
|
114
|
-
label: 'Reject with reply',
|
|
115
|
-
value: 'reject_with_reply',
|
|
116
|
-
});
|
|
117
|
-
baseItems.push({
|
|
118
|
-
label: 'Reject (end session)',
|
|
119
|
-
value: 'reject',
|
|
120
|
-
});
|
|
121
|
-
return baseItems;
|
|
122
|
-
}, [sensitiveCommandCheck.isSensitive]);
|
|
123
|
-
const handleSelect = (item) => {
|
|
124
|
-
if (!hasSelected) {
|
|
125
|
-
if (item.value === 'reject_with_reply') {
|
|
126
|
-
setShowRejectInput(true);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
setHasSelected(true);
|
|
130
|
-
onConfirm(item.value);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
const handleRejectReasonSubmit = () => {
|
|
135
|
-
if (!hasSelected && rejectReason.trim()) {
|
|
136
|
-
setHasSelected(true);
|
|
137
|
-
onConfirm({ type: 'reject_with_reply', reason: rejectReason.trim() });
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
return (React.createElement(Box, { flexDirection: "column", marginX: 1, marginY: 1, borderStyle: 'round', borderColor: theme.colors.warning, paddingX: 1 },
|
|
141
|
-
React.createElement(Box, { marginBottom: 1 },
|
|
142
|
-
React.createElement(Text, { bold: true, color: theme.colors.warning }, "[Tool Confirmation]")),
|
|
143
|
-
!formattedAllTools && (React.createElement(React.Fragment, null,
|
|
144
|
-
React.createElement(Box, { marginBottom: 1 },
|
|
145
|
-
React.createElement(Text, null,
|
|
146
|
-
"Tool:",
|
|
147
|
-
' ',
|
|
148
|
-
React.createElement(Text, { bold: true, color: theme.colors.menuInfo }, toolName))),
|
|
149
|
-
sensitiveCommandCheck.isSensitive && (React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
|
|
150
|
-
React.createElement(Box, { marginBottom: 1 },
|
|
151
|
-
React.createElement(Text, { bold: true, color: theme.colors.error }, "SENSITIVE COMMAND DETECTED")),
|
|
152
|
-
React.createElement(Box, { flexDirection: "column", gap: 0 },
|
|
153
|
-
React.createElement(Box, null,
|
|
154
|
-
React.createElement(Text, { dimColor: true }, "Pattern: "),
|
|
155
|
-
React.createElement(Text, { color: "magenta", bold: true }, sensitiveCommandCheck.matchedCommand?.pattern)),
|
|
156
|
-
React.createElement(Box, { marginTop: 0 },
|
|
157
|
-
React.createElement(Text, { dimColor: true }, "Reason: "),
|
|
158
|
-
React.createElement(Text, { color: "white" }, sensitiveCommandCheck.matchedCommand?.description))),
|
|
159
|
-
React.createElement(Box, { marginTop: 1, paddingX: 1, paddingY: 0 },
|
|
160
|
-
React.createElement(Text, { color: theme.colors.warning, italic: true }, "This command requires confirmation even in YOLO/Always-Approved mode")))),
|
|
161
|
-
formattedArgs && formattedArgs.length > 0 && (React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
|
|
162
|
-
React.createElement(Text, { dimColor: true }, "Arguments:"),
|
|
163
|
-
formattedArgs.map((arg, index) => (React.createElement(Box, { key: index, flexDirection: "column" },
|
|
164
|
-
React.createElement(Text, { color: theme.colors.menuSecondary, dimColor: true },
|
|
165
|
-
arg.isLast ? '└─' : '├─',
|
|
166
|
-
" ",
|
|
167
|
-
arg.key,
|
|
168
|
-
":",
|
|
169
|
-
' ',
|
|
170
|
-
React.createElement(Text, { color: "white" }, arg.value))))))))),
|
|
171
|
-
formattedAllTools && (React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
|
|
172
|
-
React.createElement(Box, { marginBottom: 1 },
|
|
173
|
-
React.createElement(Text, null,
|
|
174
|
-
"Tools:",
|
|
175
|
-
' ',
|
|
176
|
-
React.createElement(Text, { bold: true, color: theme.colors.menuInfo },
|
|
177
|
-
formattedAllTools.length,
|
|
178
|
-
" tools in parallel"))),
|
|
179
|
-
formattedAllTools.map((tool, toolIndex) => (React.createElement(Box, { key: toolIndex, flexDirection: "column", marginBottom: toolIndex < formattedAllTools.length - 1 ? 1 : 0 },
|
|
180
|
-
React.createElement(Text, { color: theme.colors.menuInfo, bold: true },
|
|
181
|
-
toolIndex + 1,
|
|
182
|
-
". ",
|
|
183
|
-
tool.name),
|
|
184
|
-
tool.args.length > 0 && (React.createElement(Box, { flexDirection: "column", paddingLeft: 2 }, tool.args.map((arg, argIndex) => (React.createElement(Text, { key: argIndex, color: theme.colors.menuSecondary, dimColor: true },
|
|
185
|
-
arg.isLast ? '└─' : '├─',
|
|
186
|
-
" ",
|
|
187
|
-
arg.key,
|
|
188
|
-
":",
|
|
189
|
-
' ',
|
|
190
|
-
React.createElement(Text, { color: "white" }, arg.value))))))))))),
|
|
191
|
-
React.createElement(Box, { marginBottom: 1 },
|
|
192
|
-
React.createElement(Text, { dimColor: true }, "Select action:")),
|
|
193
|
-
!hasSelected && !showRejectInput && (React.createElement(SelectInput, { items: items, onSelect: handleSelect })),
|
|
194
|
-
showRejectInput && !hasSelected && (React.createElement(Box, { flexDirection: "column" },
|
|
195
|
-
React.createElement(Box, { marginBottom: 1 },
|
|
196
|
-
React.createElement(Text, { color: theme.colors.warning }, "Enter rejection reason:")),
|
|
197
|
-
React.createElement(Box, { marginBottom: 1 },
|
|
198
|
-
React.createElement(Text, { color: theme.colors.menuInfo }, "> "),
|
|
199
|
-
React.createElement(TextInput, { value: rejectReason, onChange: setRejectReason, onSubmit: handleRejectReasonSubmit })),
|
|
200
|
-
React.createElement(Box, null,
|
|
201
|
-
React.createElement(Text, { dimColor: true }, "Press Enter to submit")))),
|
|
202
|
-
hasSelected && (React.createElement(Box, null,
|
|
203
|
-
React.createElement(Text, { color: theme.colors.success }, "Confirmed")))));
|
|
204
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface ToolResultPreviewProps {
|
|
3
|
-
toolName: string;
|
|
4
|
-
result: string;
|
|
5
|
-
maxLines?: number;
|
|
6
|
-
isSubAgentInternal?: boolean;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Display a compact preview of tool execution results
|
|
10
|
-
* Shows a tree-like structure with limited content
|
|
11
|
-
*/
|
|
12
|
-
export default function ToolResultPreview({ toolName, result, maxLines, isSubAgentInternal, }: ToolResultPreviewProps): React.JSX.Element | null;
|
|
13
|
-
export {};
|