centaurus-cli 2.0.0
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/AUTH_FLOW.md +138 -0
- package/CONFIG_GUIDE.md +255 -0
- package/LICENSE +21 -0
- package/README.md +346 -0
- package/dist/ai/provider-factory.d.ts +6 -0
- package/dist/ai/provider-factory.d.ts.map +1 -0
- package/dist/ai/provider-factory.js +27 -0
- package/dist/ai/provider-factory.js.map +1 -0
- package/dist/ai/providers/base.d.ts +25 -0
- package/dist/ai/providers/base.d.ts.map +1 -0
- package/dist/ai/providers/base.js +9 -0
- package/dist/ai/providers/base.js.map +1 -0
- package/dist/ai/providers/gemini.d.ts +34 -0
- package/dist/ai/providers/gemini.d.ts.map +1 -0
- package/dist/ai/providers/gemini.js +146 -0
- package/dist/ai/providers/gemini.js.map +1 -0
- package/dist/ai/types.d.ts +20 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +2 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/cli-adapter.d.ts +78 -0
- package/dist/cli-adapter.d.ts.map +1 -0
- package/dist/cli-adapter.js +605 -0
- package/dist/cli-adapter.js.map +1 -0
- package/dist/commands/CommandParser.d.ts +27 -0
- package/dist/commands/CommandParser.d.ts.map +1 -0
- package/dist/commands/CommandParser.js +238 -0
- package/dist/commands/CommandParser.js.map +1 -0
- package/dist/config/ConfigManager.d.ts +59 -0
- package/dist/config/ConfigManager.d.ts.map +1 -0
- package/dist/config/ConfigManager.js +332 -0
- package/dist/config/ConfigManager.js.map +1 -0
- package/dist/config/defaultConfig.d.ts +82 -0
- package/dist/config/defaultConfig.d.ts.map +1 -0
- package/dist/config/defaultConfig.js +88 -0
- package/dist/config/defaultConfig.js.map +1 -0
- package/dist/config/manager.d.ts +60 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/manager.js +162 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/config/types.d.ts +9 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +6 -0
- package/dist/config/types.js.map +1 -0
- package/dist/index-custom.d.ts +3 -0
- package/dist/index-custom.d.ts.map +1 -0
- package/dist/index-custom.js +65 -0
- package/dist/index-custom.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +102 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/system-prompt.d.ts +47 -0
- package/dist/prompts/system-prompt.d.ts.map +1 -0
- package/dist/prompts/system-prompt.js +378 -0
- package/dist/prompts/system-prompt.js.map +1 -0
- package/dist/providers/GoogleProvider.d.ts +26 -0
- package/dist/providers/GoogleProvider.d.ts.map +1 -0
- package/dist/providers/GoogleProvider.js +313 -0
- package/dist/providers/GoogleProvider.js.map +1 -0
- package/dist/providers/Provider.d.ts +114 -0
- package/dist/providers/Provider.d.ts.map +1 -0
- package/dist/providers/Provider.js +44 -0
- package/dist/providers/Provider.js.map +1 -0
- package/dist/services/api-client.d.ts +282 -0
- package/dist/services/api-client.d.ts.map +1 -0
- package/dist/services/api-client.js +339 -0
- package/dist/services/api-client.js.map +1 -0
- package/dist/services/auth-handler.d.ts +30 -0
- package/dist/services/auth-handler.d.ts.map +1 -0
- package/dist/services/auth-handler.js +210 -0
- package/dist/services/auth-handler.js.map +1 -0
- package/dist/services/conversation-manager.d.ts +73 -0
- package/dist/services/conversation-manager.d.ts.map +1 -0
- package/dist/services/conversation-manager.js +128 -0
- package/dist/services/conversation-manager.js.map +1 -0
- package/dist/tests/automated-verification.d.ts +27 -0
- package/dist/tests/automated-verification.d.ts.map +1 -0
- package/dist/tests/automated-verification.js +359 -0
- package/dist/tests/automated-verification.js.map +1 -0
- package/dist/tests/integration-tests.d.ts +50 -0
- package/dist/tests/integration-tests.d.ts.map +1 -0
- package/dist/tests/integration-tests.js +648 -0
- package/dist/tests/integration-tests.js.map +1 -0
- package/dist/tools/ToolRegistry.d.ts +44 -0
- package/dist/tools/ToolRegistry.d.ts.map +1 -0
- package/dist/tools/ToolRegistry.js +494 -0
- package/dist/tools/ToolRegistry.js.map +1 -0
- package/dist/tools/command.d.ts +4 -0
- package/dist/tools/command.d.ts.map +1 -0
- package/dist/tools/command.js +117 -0
- package/dist/tools/command.js.map +1 -0
- package/dist/tools/file-ops-test.d.ts +6 -0
- package/dist/tools/file-ops-test.d.ts.map +1 -0
- package/dist/tools/file-ops-test.js +197 -0
- package/dist/tools/file-ops-test.js.map +1 -0
- package/dist/tools/file-ops.d.ts +6 -0
- package/dist/tools/file-ops.d.ts.map +1 -0
- package/dist/tools/file-ops.js +189 -0
- package/dist/tools/file-ops.js.map +1 -0
- package/dist/tools/plan-mode.d.ts +53 -0
- package/dist/tools/plan-mode.d.ts.map +1 -0
- package/dist/tools/plan-mode.js +202 -0
- package/dist/tools/plan-mode.js.map +1 -0
- package/dist/tools/registry.d.ts +30 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +67 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +34 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/web-search.d.ts +24 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +194 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/types/index.d.ts +32 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/DisplayHistory.d.ts +53 -0
- package/dist/ui/DisplayHistory.d.ts.map +1 -0
- package/dist/ui/DisplayHistory.js +82 -0
- package/dist/ui/DisplayHistory.js.map +1 -0
- package/dist/ui/clack-ui.d.ts +83 -0
- package/dist/ui/clack-ui.d.ts.map +1 -0
- package/dist/ui/clack-ui.js +304 -0
- package/dist/ui/clack-ui.js.map +1 -0
- package/dist/ui/components/App.d.ts +47 -0
- package/dist/ui/components/App.d.ts.map +1 -0
- package/dist/ui/components/App.js +389 -0
- package/dist/ui/components/App.js.map +1 -0
- package/dist/ui/components/AuthScreen.d.ts +8 -0
- package/dist/ui/components/AuthScreen.d.ts.map +1 -0
- package/dist/ui/components/AuthScreen.js +37 -0
- package/dist/ui/components/AuthScreen.js.map +1 -0
- package/dist/ui/components/AuthWelcomeScreen.d.ts +8 -0
- package/dist/ui/components/AuthWelcomeScreen.d.ts.map +1 -0
- package/dist/ui/components/AuthWelcomeScreen.js +34 -0
- package/dist/ui/components/AuthWelcomeScreen.js.map +1 -0
- package/dist/ui/components/CodeBlock.d.ts +9 -0
- package/dist/ui/components/CodeBlock.d.ts.map +1 -0
- package/dist/ui/components/CodeBlock.js +22 -0
- package/dist/ui/components/CodeBlock.js.map +1 -0
- package/dist/ui/components/ConfigViewer.d.ts +11 -0
- package/dist/ui/components/ConfigViewer.d.ts.map +1 -0
- package/dist/ui/components/ConfigViewer.js +27 -0
- package/dist/ui/components/ConfigViewer.js.map +1 -0
- package/dist/ui/components/ConfirmPrompt.d.ts +11 -0
- package/dist/ui/components/ConfirmPrompt.d.ts.map +1 -0
- package/dist/ui/components/ConfirmPrompt.js +55 -0
- package/dist/ui/components/ConfirmPrompt.js.map +1 -0
- package/dist/ui/components/DiffViewer.d.ts +8 -0
- package/dist/ui/components/DiffViewer.d.ts.map +1 -0
- package/dist/ui/components/DiffViewer.js +63 -0
- package/dist/ui/components/DiffViewer.js.map +1 -0
- package/dist/ui/components/DisplayItemRenderer.d.ts +18 -0
- package/dist/ui/components/DisplayItemRenderer.d.ts.map +1 -0
- package/dist/ui/components/DisplayItemRenderer.js +53 -0
- package/dist/ui/components/DisplayItemRenderer.js.map +1 -0
- package/dist/ui/components/DynamicMessage.d.ts +13 -0
- package/dist/ui/components/DynamicMessage.d.ts.map +1 -0
- package/dist/ui/components/DynamicMessage.js +27 -0
- package/dist/ui/components/DynamicMessage.js.map +1 -0
- package/dist/ui/components/ErrorBoundary.d.ts +16 -0
- package/dist/ui/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/ui/components/ErrorBoundary.js +25 -0
- package/dist/ui/components/ErrorBoundary.js.map +1 -0
- package/dist/ui/components/FileOperation.d.ts +10 -0
- package/dist/ui/components/FileOperation.d.ts.map +1 -0
- package/dist/ui/components/FileOperation.js +31 -0
- package/dist/ui/components/FileOperation.js.map +1 -0
- package/dist/ui/components/InputBox.d.ts +12 -0
- package/dist/ui/components/InputBox.d.ts.map +1 -0
- package/dist/ui/components/InputBox.js +50 -0
- package/dist/ui/components/InputBox.js.map +1 -0
- package/dist/ui/components/KeyboardHelp.d.ts +7 -0
- package/dist/ui/components/KeyboardHelp.d.ts.map +1 -0
- package/dist/ui/components/KeyboardHelp.js +25 -0
- package/dist/ui/components/KeyboardHelp.js.map +1 -0
- package/dist/ui/components/LoadingIndicator.d.ts +3 -0
- package/dist/ui/components/LoadingIndicator.d.ts.map +1 -0
- package/dist/ui/components/LoadingIndicator.js +25 -0
- package/dist/ui/components/LoadingIndicator.js.map +1 -0
- package/dist/ui/components/MarkdownRenderer.d.ts +8 -0
- package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -0
- package/dist/ui/components/MarkdownRenderer.js +96 -0
- package/dist/ui/components/MarkdownRenderer.js.map +1 -0
- package/dist/ui/components/MessageBox.d.ts +10 -0
- package/dist/ui/components/MessageBox.d.ts.map +1 -0
- package/dist/ui/components/MessageBox.js +50 -0
- package/dist/ui/components/MessageBox.js.map +1 -0
- package/dist/ui/components/MessageDisplay.d.ts +8 -0
- package/dist/ui/components/MessageDisplay.d.ts.map +1 -0
- package/dist/ui/components/MessageDisplay.js +43 -0
- package/dist/ui/components/MessageDisplay.js.map +1 -0
- package/dist/ui/components/ScrollableContent.d.ts +7 -0
- package/dist/ui/components/ScrollableContent.d.ts.map +1 -0
- package/dist/ui/components/ScrollableContent.js +6 -0
- package/dist/ui/components/ScrollableContent.js.map +1 -0
- package/dist/ui/components/ScrollableMessageList.d.ts +10 -0
- package/dist/ui/components/ScrollableMessageList.d.ts.map +1 -0
- package/dist/ui/components/ScrollableMessageList.js +133 -0
- package/dist/ui/components/ScrollableMessageList.js.map +1 -0
- package/dist/ui/components/ScrollableScreen.d.ts +9 -0
- package/dist/ui/components/ScrollableScreen.d.ts.map +1 -0
- package/dist/ui/components/ScrollableScreen.js +22 -0
- package/dist/ui/components/ScrollableScreen.js.map +1 -0
- package/dist/ui/components/SelectPrompt.d.ts +12 -0
- package/dist/ui/components/SelectPrompt.d.ts.map +1 -0
- package/dist/ui/components/SelectPrompt.js +10 -0
- package/dist/ui/components/SelectPrompt.js.map +1 -0
- package/dist/ui/components/StaticMessageHistory.d.ts +14 -0
- package/dist/ui/components/StaticMessageHistory.d.ts.map +1 -0
- package/dist/ui/components/StaticMessageHistory.js +19 -0
- package/dist/ui/components/StaticMessageHistory.js.map +1 -0
- package/dist/ui/components/StatusBar.d.ts +10 -0
- package/dist/ui/components/StatusBar.d.ts.map +1 -0
- package/dist/ui/components/StatusBar.js +20 -0
- package/dist/ui/components/StatusBar.js.map +1 -0
- package/dist/ui/components/StreamingMessageDisplay.d.ts +13 -0
- package/dist/ui/components/StreamingMessageDisplay.d.ts.map +1 -0
- package/dist/ui/components/StreamingMessageDisplay.js +26 -0
- package/dist/ui/components/StreamingMessageDisplay.js.map +1 -0
- package/dist/ui/components/ToolExecutionMessage.d.ts +8 -0
- package/dist/ui/components/ToolExecutionMessage.d.ts.map +1 -0
- package/dist/ui/components/ToolExecutionMessage.js +189 -0
- package/dist/ui/components/ToolExecutionMessage.js.map +1 -0
- package/dist/ui/components/ToolExecutionStatus.d.ts +10 -0
- package/dist/ui/components/ToolExecutionStatus.d.ts.map +1 -0
- package/dist/ui/components/ToolExecutionStatus.js +65 -0
- package/dist/ui/components/ToolExecutionStatus.js.map +1 -0
- package/dist/ui/components/ToolResult.d.ts +10 -0
- package/dist/ui/components/ToolResult.d.ts.map +1 -0
- package/dist/ui/components/ToolResult.js +17 -0
- package/dist/ui/components/ToolResult.js.map +1 -0
- package/dist/ui/components/WelcomeBanner.d.ts +3 -0
- package/dist/ui/components/WelcomeBanner.d.ts.map +1 -0
- package/dist/ui/components/WelcomeBanner.js +28 -0
- package/dist/ui/components/WelcomeBanner.js.map +1 -0
- package/dist/ui/components/code-block.d.ts +10 -0
- package/dist/ui/components/code-block.d.ts.map +1 -0
- package/dist/ui/components/code-block.js +74 -0
- package/dist/ui/components/code-block.js.map +1 -0
- package/dist/ui/components/confirm-prompt.d.ts +12 -0
- package/dist/ui/components/confirm-prompt.d.ts.map +1 -0
- package/dist/ui/components/confirm-prompt.js +104 -0
- package/dist/ui/components/confirm-prompt.js.map +1 -0
- package/dist/ui/components/diff-viewer.d.ts +9 -0
- package/dist/ui/components/diff-viewer.d.ts.map +1 -0
- package/dist/ui/components/diff-viewer.js +57 -0
- package/dist/ui/components/diff-viewer.js.map +1 -0
- package/dist/ui/components/input-box.d.ts +18 -0
- package/dist/ui/components/input-box.d.ts.map +1 -0
- package/dist/ui/components/input-box.js +157 -0
- package/dist/ui/components/input-box.js.map +1 -0
- package/dist/ui/components/keyboard-help.d.ts +7 -0
- package/dist/ui/components/keyboard-help.d.ts.map +1 -0
- package/dist/ui/components/keyboard-help.js +43 -0
- package/dist/ui/components/keyboard-help.js.map +1 -0
- package/dist/ui/components/loading-indicator.d.ts +3 -0
- package/dist/ui/components/loading-indicator.d.ts.map +1 -0
- package/dist/ui/components/loading-indicator.js +42 -0
- package/dist/ui/components/loading-indicator.js.map +1 -0
- package/dist/ui/components/message-display.d.ts +7 -0
- package/dist/ui/components/message-display.d.ts.map +1 -0
- package/dist/ui/components/message-display.js +104 -0
- package/dist/ui/components/message-display.js.map +1 -0
- package/dist/ui/components/misc.d.ts +28 -0
- package/dist/ui/components/misc.d.ts.map +1 -0
- package/dist/ui/components/misc.js +128 -0
- package/dist/ui/components/misc.js.map +1 -0
- package/dist/ui/components/select-prompt.d.ts +13 -0
- package/dist/ui/components/select-prompt.d.ts.map +1 -0
- package/dist/ui/components/select-prompt.js +42 -0
- package/dist/ui/components/select-prompt.js.map +1 -0
- package/dist/ui/components/status-bar.d.ts +11 -0
- package/dist/ui/components/status-bar.d.ts.map +1 -0
- package/dist/ui/components/status-bar.js +47 -0
- package/dist/ui/components/status-bar.js.map +1 -0
- package/dist/ui/components/tool-execution.d.ts +3 -0
- package/dist/ui/components/tool-execution.d.ts.map +1 -0
- package/dist/ui/components/tool-execution.js +374 -0
- package/dist/ui/components/tool-execution.js.map +1 -0
- package/dist/ui/components/tool-result.d.ts +11 -0
- package/dist/ui/components/tool-result.d.ts.map +1 -0
- package/dist/ui/components/tool-result.js +58 -0
- package/dist/ui/components/tool-result.js.map +1 -0
- package/dist/ui/components/welcome-banner.d.ts +3 -0
- package/dist/ui/components/welcome-banner.d.ts.map +1 -0
- package/dist/ui/components/welcome-banner.js +46 -0
- package/dist/ui/components/welcome-banner.js.map +1 -0
- package/dist/ui/hooks/useDisplayHistory.d.ts +13 -0
- package/dist/ui/hooks/useDisplayHistory.d.ts.map +1 -0
- package/dist/ui/hooks/useDisplayHistory.js +45 -0
- package/dist/ui/hooks/useDisplayHistory.js.map +1 -0
- package/dist/ui/render-engine.d.ts +69 -0
- package/dist/ui/render-engine.d.ts.map +1 -0
- package/dist/ui/render-engine.js +197 -0
- package/dist/ui/render-engine.js.map +1 -0
- package/dist/ui/terminal/TerminalRenderer.d.ts +84 -0
- package/dist/ui/terminal/TerminalRenderer.d.ts.map +1 -0
- package/dist/ui/terminal/TerminalRenderer.js +154 -0
- package/dist/ui/terminal/TerminalRenderer.js.map +1 -0
- package/dist/ui/terminal/TerminalUI.d.ts +139 -0
- package/dist/ui/terminal/TerminalUI.d.ts.map +1 -0
- package/dist/ui/terminal/TerminalUI.js +430 -0
- package/dist/ui/terminal/TerminalUI.js.map +1 -0
- package/dist/ui/terminal/VirtualChatBuffer.d.ts +32 -0
- package/dist/ui/terminal/VirtualChatBuffer.d.ts.map +1 -0
- package/dist/ui/terminal/VirtualChatBuffer.js +37 -0
- package/dist/ui/terminal/VirtualChatBuffer.js.map +1 -0
- package/dist/ui/terminal-kit-base.d.ts +117 -0
- package/dist/ui/terminal-kit-base.d.ts.map +1 -0
- package/dist/ui/terminal-kit-base.js +188 -0
- package/dist/ui/terminal-kit-base.js.map +1 -0
- package/dist/utils/file.d.ts +21 -0
- package/dist/utils/file.d.ts.map +1 -0
- package/dist/utils/file.js +68 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/logger.d.ts +17 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +57 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/markdown-parser.d.ts +56 -0
- package/dist/utils/markdown-parser.d.ts.map +1 -0
- package/dist/utils/markdown-parser.js +307 -0
- package/dist/utils/markdown-parser.js.map +1 -0
- package/dist/utils/shell.d.ts +7 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +62 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/state.d.ts +13 -0
- package/dist/utils/state.d.ts.map +1 -0
- package/dist/utils/state.js +25 -0
- package/dist/utils/state.js.map +1 -0
- package/package.json +81 -0
- package/postinstall.js +46 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Box, Text, useInput } from 'ink';
|
|
3
|
+
export const ConfirmPrompt = React.memo(({ message, onYes, onNo, onFeedback, showFeedbackOption = false }) => {
|
|
4
|
+
const [selected, setSelected] = useState('yes');
|
|
5
|
+
useInput((input, key) => {
|
|
6
|
+
if (key.leftArrow || key.rightArrow) {
|
|
7
|
+
if (showFeedbackOption) {
|
|
8
|
+
const options = ['yes', 'no', 'feedback'];
|
|
9
|
+
const currentIdx = options.indexOf(selected);
|
|
10
|
+
const nextIdx = key.leftArrow
|
|
11
|
+
? (currentIdx - 1 + options.length) % options.length
|
|
12
|
+
: (currentIdx + 1) % options.length;
|
|
13
|
+
setSelected(options[nextIdx]);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
setSelected(selected === 'yes' ? 'no' : 'yes');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// Y key for yes
|
|
20
|
+
if (input === 'y' || input === 'Y') {
|
|
21
|
+
onYes();
|
|
22
|
+
}
|
|
23
|
+
// N key for no
|
|
24
|
+
if (input === 'n' || input === 'N') {
|
|
25
|
+
onNo();
|
|
26
|
+
}
|
|
27
|
+
if (key.return) {
|
|
28
|
+
if (selected === 'yes')
|
|
29
|
+
onYes();
|
|
30
|
+
else if (selected === 'no')
|
|
31
|
+
onNo();
|
|
32
|
+
else if (selected === 'feedback' && onFeedback)
|
|
33
|
+
onFeedback();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ffaa00", paddingX: 1, paddingY: 1 },
|
|
37
|
+
React.createElement(Box, { marginBottom: 1 },
|
|
38
|
+
React.createElement(Text, { color: "#ffaa00", bold: true },
|
|
39
|
+
"\u26A0\uFE0F ",
|
|
40
|
+
message)),
|
|
41
|
+
React.createElement(Box, null,
|
|
42
|
+
React.createElement(Box, { marginRight: 2 },
|
|
43
|
+
React.createElement(Text, { color: selected === 'yes' ? '#00cc66' : '#666666', bold: selected === 'yes' },
|
|
44
|
+
selected === 'yes' ? '▶ ' : ' ',
|
|
45
|
+
"[Y]es")),
|
|
46
|
+
React.createElement(Box, { marginRight: 2 },
|
|
47
|
+
React.createElement(Text, { color: selected === 'no' ? '#ff3366' : '#666666', bold: selected === 'no' },
|
|
48
|
+
selected === 'no' ? '▶ ' : ' ',
|
|
49
|
+
"[N]o")),
|
|
50
|
+
showFeedbackOption && (React.createElement(Box, null,
|
|
51
|
+
React.createElement(Text, { color: selected === 'feedback' ? '#00ccff' : '#666666', bold: selected === 'feedback' },
|
|
52
|
+
selected === 'feedback' ? '▶ ' : ' ',
|
|
53
|
+
"[F]eedback"))))));
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=ConfirmPrompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmPrompt.js","sourceRoot":"","sources":["../../../src/ui/components/ConfirmPrompt.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffViewer.d.ts","sourceRoot":"","sources":["../../../src/ui/components/DiffViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAgFhD,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
export const DiffViewer = ({ diff, filePath }) => {
|
|
4
|
+
const lines = diff.split('\n');
|
|
5
|
+
// Filter out diff metadata lines and count changes
|
|
6
|
+
const contentLines = lines.filter(line => {
|
|
7
|
+
const trimmed = line.trim();
|
|
8
|
+
// Skip metadata lines
|
|
9
|
+
if (line.startsWith('---') || line.startsWith('+++'))
|
|
10
|
+
return false;
|
|
11
|
+
if (line.startsWith('@@'))
|
|
12
|
+
return false;
|
|
13
|
+
if (line.startsWith('Index:'))
|
|
14
|
+
return false;
|
|
15
|
+
if (trimmed.startsWith('==='))
|
|
16
|
+
return false;
|
|
17
|
+
// Keep empty lines and actual diff content
|
|
18
|
+
return true;
|
|
19
|
+
});
|
|
20
|
+
// Count additions and deletions BEFORE rendering
|
|
21
|
+
const addedCount = contentLines.filter(line => line.startsWith('+')).length;
|
|
22
|
+
const deletedCount = contentLines.filter(line => line.startsWith('-')).length;
|
|
23
|
+
const getLineStyle = (line) => {
|
|
24
|
+
if (line.startsWith('+')) {
|
|
25
|
+
return { backgroundColor: 'green', color: 'black' };
|
|
26
|
+
}
|
|
27
|
+
if (line.startsWith('-')) {
|
|
28
|
+
return { backgroundColor: 'red', color: 'black' };
|
|
29
|
+
}
|
|
30
|
+
return { color: 'white' };
|
|
31
|
+
};
|
|
32
|
+
const getDisplayLine = (line) => {
|
|
33
|
+
// Remove +/- prefix from diff lines
|
|
34
|
+
if (line.startsWith('+')) {
|
|
35
|
+
return line.slice(1);
|
|
36
|
+
}
|
|
37
|
+
if (line.startsWith('-')) {
|
|
38
|
+
return line.slice(1);
|
|
39
|
+
}
|
|
40
|
+
return line;
|
|
41
|
+
};
|
|
42
|
+
// Generate summary text
|
|
43
|
+
const addedText = addedCount === 1 ? '1 line added' : `${addedCount} lines added`;
|
|
44
|
+
const deletedText = deletedCount === 1 ? '1 line deleted' : `${deletedCount} lines deleted`;
|
|
45
|
+
return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ffaa00", paddingX: 1 },
|
|
46
|
+
React.createElement(Box, null,
|
|
47
|
+
React.createElement(Text, { color: "#ffffff", bold: true }, filePath)),
|
|
48
|
+
React.createElement(Box, { marginTop: 1, marginBottom: 1 },
|
|
49
|
+
React.createElement(Text, { color: "#666666" }, '─'.repeat(120))),
|
|
50
|
+
contentLines.map((line, idx) => {
|
|
51
|
+
const style = getLineStyle(line);
|
|
52
|
+
const displayText = getDisplayLine(line);
|
|
53
|
+
return (React.createElement(Box, { key: idx },
|
|
54
|
+
React.createElement(Text, { ...style }, displayText || ' ')));
|
|
55
|
+
}),
|
|
56
|
+
React.createElement(Box, { marginTop: 1, marginBottom: 1 },
|
|
57
|
+
React.createElement(Text, { color: "#666666" }, '─'.repeat(120))),
|
|
58
|
+
React.createElement(Box, null,
|
|
59
|
+
React.createElement(Text, { color: "green" }, addedText),
|
|
60
|
+
React.createElement(Text, { color: "#666666" }, ", "),
|
|
61
|
+
React.createElement(Text, { color: "red" }, deletedText))));
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=DiffViewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffViewer.js","sourceRoot":"","sources":["../../../src/ui/components/DiffViewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { DisplayItem } from '../DisplayHistory.js';
|
|
3
|
+
interface DisplayItemRendererProps {
|
|
4
|
+
item: DisplayItem;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Renders a single display item based on its type
|
|
8
|
+
*/
|
|
9
|
+
export declare const DisplayItemRenderer: React.FC<DisplayItemRendererProps>;
|
|
10
|
+
interface DisplayItemListProps {
|
|
11
|
+
items: DisplayItem[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Renders a list of display items
|
|
15
|
+
*/
|
|
16
|
+
export declare const DisplayItemList: React.FC<DisplayItemListProps>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=DisplayItemRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisplayItemRenderer.d.ts","sourceRoot":"","sources":["../../../src/ui/components/DisplayItemRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKnD,UAAU,wBAAwB;IAChC,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA+BjE,CAAC;AAEH,UAAU,oBAAoB;IAC5B,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAiBzD,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box } from 'ink';
|
|
3
|
+
import { MessageDisplay } from './MessageDisplay.js';
|
|
4
|
+
import { LoadingIndicator } from './LoadingIndicator.js';
|
|
5
|
+
/**
|
|
6
|
+
* Renders a single display item based on its type
|
|
7
|
+
*/
|
|
8
|
+
export const DisplayItemRenderer = React.memo(({ item }) => {
|
|
9
|
+
switch (item.type) {
|
|
10
|
+
case 'user_message':
|
|
11
|
+
case 'assistant_message':
|
|
12
|
+
case 'system_message':
|
|
13
|
+
case 'tool_execution': {
|
|
14
|
+
// Convert DisplayItem to Message format for MessageDisplay
|
|
15
|
+
const message = {
|
|
16
|
+
id: item.id,
|
|
17
|
+
role: item.type === 'user_message' ? 'user'
|
|
18
|
+
: item.type === 'assistant_message' ? 'assistant'
|
|
19
|
+
: item.type === 'system_message' ? 'system'
|
|
20
|
+
: 'tool',
|
|
21
|
+
content: item.content.text || item.content.content || '',
|
|
22
|
+
timestamp: item.timestamp,
|
|
23
|
+
toolExecution: item.type === 'tool_execution' ? item.content : undefined,
|
|
24
|
+
};
|
|
25
|
+
return React.createElement(MessageDisplay, { message: message });
|
|
26
|
+
}
|
|
27
|
+
case 'loading':
|
|
28
|
+
return React.createElement(LoadingIndicator, null);
|
|
29
|
+
default:
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}, (prevProps, nextProps) => {
|
|
33
|
+
// Only re-render if item content changed
|
|
34
|
+
return prevProps.item.id === nextProps.item.id &&
|
|
35
|
+
prevProps.item.status === nextProps.item.status &&
|
|
36
|
+
JSON.stringify(prevProps.item.content) === JSON.stringify(nextProps.item.content);
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* Renders a list of display items
|
|
40
|
+
*/
|
|
41
|
+
export const DisplayItemList = React.memo(({ items }) => {
|
|
42
|
+
return (React.createElement(Box, { flexDirection: "column" }, items.map((item) => (React.createElement(DisplayItemRenderer, { key: item.id, item: item })))));
|
|
43
|
+
}, (prevProps, nextProps) => {
|
|
44
|
+
// Only re-render if items array length changed or last item changed
|
|
45
|
+
if (prevProps.items.length !== nextProps.items.length) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
const prevLast = prevProps.items[prevProps.items.length - 1];
|
|
49
|
+
const nextLast = nextProps.items[nextProps.items.length - 1];
|
|
50
|
+
return prevLast?.id === nextLast?.id &&
|
|
51
|
+
prevLast?.status === nextLast?.status;
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=DisplayItemRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisplayItemRenderer.js","sourceRoot":"","sources":["../../../src/ui/components/DisplayItemRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Message } from '../../types/index.js';
|
|
3
|
+
interface DynamicMessageProps {
|
|
4
|
+
message: Message | null;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Renders the currently active/updating message.
|
|
8
|
+
* This can re-render freely as content updates (e.g., streaming AI responses, tool status).
|
|
9
|
+
* Once the message is complete, it should be moved to StaticMessageHistory.
|
|
10
|
+
*/
|
|
11
|
+
export declare const DynamicMessage: React.FC<DynamicMessageProps>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=DynamicMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicMessage.d.ts","sourceRoot":"","sources":["../../../src/ui/components/DynamicMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAmBvD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box } from 'ink';
|
|
3
|
+
import { MessageDisplay } from './MessageDisplay.js';
|
|
4
|
+
/**
|
|
5
|
+
* Renders the currently active/updating message.
|
|
6
|
+
* This can re-render freely as content updates (e.g., streaming AI responses, tool status).
|
|
7
|
+
* Once the message is complete, it should be moved to StaticMessageHistory.
|
|
8
|
+
*/
|
|
9
|
+
export const DynamicMessage = React.memo(({ message }) => {
|
|
10
|
+
if (!message) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
return (React.createElement(Box, { flexDirection: "column" },
|
|
14
|
+
React.createElement(MessageDisplay, { message: message })));
|
|
15
|
+
}, (prevProps, nextProps) => {
|
|
16
|
+
// Return true if props are equal (skip re-render), false if different (re-render)
|
|
17
|
+
// If both are null, they're equal
|
|
18
|
+
if (!prevProps.message && !nextProps.message)
|
|
19
|
+
return true;
|
|
20
|
+
// If one is null and the other isn't, they're different
|
|
21
|
+
if (!prevProps.message || !nextProps.message)
|
|
22
|
+
return false;
|
|
23
|
+
// Compare message IDs and content
|
|
24
|
+
return prevProps.message.id === nextProps.message.id &&
|
|
25
|
+
prevProps.message.content === nextProps.message.content;
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=DynamicMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicMessage.js","sourceRoot":"","sources":["../../../src/ui/components/DynamicMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAMrD;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACtF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,oBAAC,cAAc,IAAC,OAAO,EAAE,OAAO,GAAI,CAChC,CACP,CAAC;AACJ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;IAC1B,kFAAkF;IAClF,kCAAkC;IAClC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1D,wDAAwD;IACxD,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3D,kCAAkC;IAClC,OAAO,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,OAAO,CAAC,EAAE;QAC7C,SAAS,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;AACjE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React, { Component, ReactNode } from 'react';
|
|
2
|
+
interface Props {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
}
|
|
5
|
+
interface State {
|
|
6
|
+
hasError: boolean;
|
|
7
|
+
error?: Error;
|
|
8
|
+
}
|
|
9
|
+
export declare class ErrorBoundary extends Component<Props, State> {
|
|
10
|
+
constructor(props: Props);
|
|
11
|
+
static getDerivedStateFromError(error: Error): State;
|
|
12
|
+
componentDidCatch(error: Error, errorInfo: any): void;
|
|
13
|
+
render(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=ErrorBoundary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpD,UAAU,KAAK;IACb,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,UAAU,KAAK;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,aAAc,SAAQ,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;gBAC5C,KAAK,EAAE,KAAK;IAKxB,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAIpD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG;IAI9C,MAAM;CAiBP"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React, { Component } from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
export class ErrorBoundary extends Component {
|
|
4
|
+
constructor(props) {
|
|
5
|
+
super(props);
|
|
6
|
+
this.state = { hasError: false };
|
|
7
|
+
}
|
|
8
|
+
static getDerivedStateFromError(error) {
|
|
9
|
+
return { hasError: true, error };
|
|
10
|
+
}
|
|
11
|
+
componentDidCatch(error, errorInfo) {
|
|
12
|
+
console.error('Centaurus CLI Error:', error, errorInfo);
|
|
13
|
+
}
|
|
14
|
+
render() {
|
|
15
|
+
if (this.state.hasError) {
|
|
16
|
+
return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#ff3366", paddingX: 1, marginY: 1 },
|
|
17
|
+
React.createElement(Text, { color: "#ff3366", bold: true }, "\u26A0 An error occurred:"),
|
|
18
|
+
React.createElement(Text, { color: "#ffffff" }, this.state.error?.message),
|
|
19
|
+
React.createElement(Box, { marginTop: 1 },
|
|
20
|
+
React.createElement(Text, { color: "#666666" }, "Please restart the application or check the logs for details."))));
|
|
21
|
+
}
|
|
22
|
+
return this.props.children;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ErrorBoundary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../../src/ui/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAWhC,MAAM,OAAO,aAAc,SAAQ,SAAuB;IACxD,YAAY,KAAY;QACtB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,wBAAwB,CAAC,KAAY;QAC1C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,iBAAiB,CAAC,KAAY,EAAE,SAAc;QAC5C,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxB,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;gBAC3F,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,sCAA4B;gBACtD,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,IAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAQ;gBACxD,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;oBACf,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,oEAEd,CACH,CACF,CACP,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface FileOperationProps {
|
|
3
|
+
operation: 'create' | 'edit' | 'delete';
|
|
4
|
+
filePath: string;
|
|
5
|
+
content?: string;
|
|
6
|
+
diff?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const FileOperation: React.FC<FileOperationProps>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=FileOperation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileOperation.d.ts","sourceRoot":"","sources":["../../../src/ui/components/FileOperation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,UAAU,kBAAkB;IAC1B,SAAS,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAkCtD,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { DiffViewer } from './DiffViewer.js';
|
|
4
|
+
import { CodeBlock } from './CodeBlock.js';
|
|
5
|
+
export const FileOperation = ({ operation, filePath, content, diff }) => {
|
|
6
|
+
const getOperationColor = () => {
|
|
7
|
+
switch (operation) {
|
|
8
|
+
case 'create': return '#00cc66';
|
|
9
|
+
case 'edit': return '#ffaa00';
|
|
10
|
+
case 'delete': return '#ff3366';
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
const getOperationIcon = () => {
|
|
14
|
+
switch (operation) {
|
|
15
|
+
case 'create': return '+';
|
|
16
|
+
case 'edit': return '~';
|
|
17
|
+
case 'delete': return '-';
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: getOperationColor(), paddingX: 1, marginY: 1 },
|
|
21
|
+
React.createElement(Box, { marginBottom: 1 },
|
|
22
|
+
React.createElement(Text, { color: getOperationColor(), bold: true },
|
|
23
|
+
getOperationIcon(),
|
|
24
|
+
" ",
|
|
25
|
+
operation.toUpperCase(),
|
|
26
|
+
": ",
|
|
27
|
+
filePath)),
|
|
28
|
+
diff && React.createElement(DiffViewer, { diff: diff, filePath: filePath }),
|
|
29
|
+
content && !diff && React.createElement(CodeBlock, { code: content })));
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=FileOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileOperation.js","sourceRoot":"","sources":["../../../src/ui/components/FileOperation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAS3C,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC1D,SAAS,EACT,QAAQ,EACR,OAAO,EACP,IAAI,EACL,EAAE,EAAE;IACH,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC7B,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC;YAChC,KAAK,MAAM,CAAC,CAAC,OAAO,SAAS,CAAC;YAC9B,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC;QAClC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC;YAC1B,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC;YACxB,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;QACvG,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,IAAI;gBACnC,gBAAgB,EAAE;;gBAAG,SAAS,CAAC,WAAW,EAAE;;gBAAI,QAAQ,CACpD,CACH;QAEL,IAAI,IAAI,oBAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI;QACtD,OAAO,IAAI,CAAC,IAAI,IAAI,oBAAC,SAAS,IAAC,IAAI,EAAE,OAAO,GAAI,CAC7C,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface InputBoxProps {
|
|
3
|
+
onSubmit: (value: string) => void;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
autoAcceptMode: boolean;
|
|
6
|
+
model?: string;
|
|
7
|
+
planMode?: boolean;
|
|
8
|
+
onToggleAutoAccept: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare const InputBox: React.FC<InputBoxProps>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=InputBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputBox.d.ts","sourceRoot":"","sources":["../../../src/ui/components/InputBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAIxC,UAAU,aAAa;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA4F3C,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Box, Text, useInput } from 'ink';
|
|
3
|
+
import TextInput from 'ink-text-input';
|
|
4
|
+
export const InputBox = React.memo(({ onSubmit, placeholder = 'Ask anything...', autoAcceptMode, model, planMode = false, onToggleAutoAccept }) => {
|
|
5
|
+
const [value, setValue] = useState('');
|
|
6
|
+
const ignoreNextChangeRef = React.useRef(false);
|
|
7
|
+
// Determine current working directory on each render (cheap call)
|
|
8
|
+
const currentDir = React.useMemo(() => process.cwd(), []);
|
|
9
|
+
useInput((input, key) => {
|
|
10
|
+
// Ctrl+T to toggle auto-accept; prevent stray 't' from appearing
|
|
11
|
+
if (key.ctrl && input === 't') {
|
|
12
|
+
ignoreNextChangeRef.current = true;
|
|
13
|
+
onToggleAutoAccept();
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
const handleChange = (newValue) => {
|
|
18
|
+
// If we just pressed Ctrl+T, ignore this change
|
|
19
|
+
if (ignoreNextChangeRef.current) {
|
|
20
|
+
ignoreNextChangeRef.current = false;
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
setValue(newValue);
|
|
24
|
+
};
|
|
25
|
+
const handleSubmit = () => {
|
|
26
|
+
if (value.trim()) {
|
|
27
|
+
onSubmit(value);
|
|
28
|
+
setValue('');
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "#003b59", paddingX: 1, paddingY: 1 },
|
|
32
|
+
React.createElement(Box, { marginBottom: 1, justifyContent: "space-between" },
|
|
33
|
+
React.createElement(Box, null,
|
|
34
|
+
React.createElement(Text, { color: "#666666" }, "CWD: "),
|
|
35
|
+
React.createElement(Text, { color: "#00ccff", bold: true }, currentDir)),
|
|
36
|
+
React.createElement(Box, null,
|
|
37
|
+
model && (React.createElement(Box, { marginRight: 1 },
|
|
38
|
+
React.createElement(Text, { color: "#666666" }, "Model: "),
|
|
39
|
+
React.createElement(Text, { color: "#00ccff" }, model))),
|
|
40
|
+
React.createElement(Box, { marginRight: 1 },
|
|
41
|
+
React.createElement(Text, { color: "#666666" }, "Mode: "),
|
|
42
|
+
planMode ? (React.createElement(Text, { color: "#ffaa00", bold: true }, "Plan")) : (React.createElement(Text, { color: "#00ccff" }, "Execution"))),
|
|
43
|
+
autoAcceptMode ? (React.createElement(Text, { color: "#00cc66", bold: true }, "[AUTO-ACCEPT: ON]")) : (React.createElement(Text, { color: "#666666", dimColor: true }, "[AUTO-ACCEPT: OFF]")))),
|
|
44
|
+
React.createElement(Box, null,
|
|
45
|
+
React.createElement(Text, { color: "#666666" }, "> "),
|
|
46
|
+
React.createElement(TextInput, { value: value, onChange: handleChange, onSubmit: handleSubmit, placeholder: placeholder })),
|
|
47
|
+
React.createElement(Box, { marginTop: 1 },
|
|
48
|
+
React.createElement(Text, { color: "#666666", dimColor: true }, "Ctrl+T to toggle auto-accept \u2022 Ctrl+C to exit"))));
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=InputBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputBox.js","sourceRoot":"","sources":["../../../src/ui/components/InputBox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyboardHelp.d.ts","sourceRoot":"","sources":["../../../src/ui/components/KeyboardHelp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAmCpD,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text, useInput } from 'ink';
|
|
3
|
+
export const KeyboardHelp = ({ onClose }) => {
|
|
4
|
+
useInput((input, key) => {
|
|
5
|
+
if (key.escape || input === '?') {
|
|
6
|
+
onClose();
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
const shortcuts = [
|
|
10
|
+
{ key: 'Enter', action: 'Submit message' },
|
|
11
|
+
{ key: 'Ctrl+T', action: 'Toggle auto-accept mode' },
|
|
12
|
+
{ key: 'Ctrl+C', action: 'Exit application' },
|
|
13
|
+
{ key: '/', action: 'Start slash command' },
|
|
14
|
+
{ key: '?', action: 'Show/hide this help' }
|
|
15
|
+
];
|
|
16
|
+
return (React.createElement(Box, { flexDirection: "column", borderStyle: "double", borderColor: "#00ccff", paddingX: 1, marginY: 1 },
|
|
17
|
+
React.createElement(Box, { marginBottom: 1 },
|
|
18
|
+
React.createElement(Text, { color: "#00ccff", bold: true }, "Keyboard Shortcuts")),
|
|
19
|
+
shortcuts.map((s, idx) => (React.createElement(Box, { key: idx, marginBottom: 1 },
|
|
20
|
+
React.createElement(Text, { color: "#00cc66", bold: true }, s.key.padEnd(15)),
|
|
21
|
+
React.createElement(Text, { color: "#ffffff" }, s.action)))),
|
|
22
|
+
React.createElement(Box, { marginTop: 1 },
|
|
23
|
+
React.createElement(Text, { color: "#666666", dimColor: true }, "Press ? or ESC to close"))));
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=KeyboardHelp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyboardHelp.js","sourceRoot":"","sources":["../../../src/ui/components/KeyboardHelp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAM1C,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACvE,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG;QAChB,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE;QAC1C,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,EAAE;QACpD,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE;QAC7C,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,qBAAqB,EAAE;QAC3C,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,qBAAqB,EAAE;KAC5C,CAAC;IAEF,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;QAC5F,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC;YAClB,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,+BAA0B,CAChD;QAEL,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CACzB,oBAAC,GAAG,IAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;YAC5B,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,UAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAQ;YACpD,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,IAAE,CAAC,CAAC,MAAM,CAAQ,CACnC,CACP,CAAC;QAEF,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;YACf,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,oCAEvB,CACH,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingIndicator.d.ts","sourceRoot":"","sources":["../../../src/ui/components/LoadingIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAmB1B,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EASpC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
const LOADING_MESSAGES = [
|
|
4
|
+
'Thrusting',
|
|
5
|
+
'Propelling',
|
|
6
|
+
'Boosting',
|
|
7
|
+
'Launching',
|
|
8
|
+
'Intercepting',
|
|
9
|
+
'Slingshotting',
|
|
10
|
+
'Accelerating',
|
|
11
|
+
'Cruising',
|
|
12
|
+
'Warping',
|
|
13
|
+
'Docking'
|
|
14
|
+
];
|
|
15
|
+
const SPINNER_TYPES = ['dots', 'dots2', 'line', 'star', 'arc', 'circle', 'arrow', 'bouncingBar', 'bouncingBall', 'earth', 'moon'];
|
|
16
|
+
export const LoadingIndicator = () => {
|
|
17
|
+
// Use useMemo to pick random message only once, not on every render
|
|
18
|
+
const messageIndex = React.useMemo(() => Math.floor(Math.random() * LOADING_MESSAGES.length), []);
|
|
19
|
+
return (React.createElement(Box, { marginBottom: 1, paddingLeft: 1 },
|
|
20
|
+
React.createElement(Text, { color: "#00ccff", bold: true },
|
|
21
|
+
"\u23F3 ",
|
|
22
|
+
LOADING_MESSAGES[messageIndex],
|
|
23
|
+
"...")));
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=LoadingIndicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingIndicator.js","sourceRoot":"","sources":["../../../src/ui/components/LoadingIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGhC,MAAM,gBAAgB,GAAG;IACvB,WAAW;IACX,YAAY;IACZ,UAAU;IACV,WAAW;IACX,cAAc;IACd,eAAe;IACf,cAAc;IACd,UAAU;IACV,SAAS;IACT,SAAS;CACV,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAE3I,MAAM,CAAC,MAAM,gBAAgB,GAAa,GAAG,EAAE;IAC7C,oEAAoE;IACpE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IAElG,OAAO,CACL,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;QAClC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI;;YAAI,gBAAgB,CAAC,YAAY,CAAC;kBAAW,CACnE,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownRenderer.d.ts","sourceRoot":"","sources":["../../../src/ui/components/MarkdownRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAIvC,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA0K5D,CAAC"}
|