centaurus-cli 2.9.3 → 2.9.5
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/dist/cli-adapter.d.ts +74 -10
- package/dist/cli-adapter.d.ts.map +1 -1
- package/dist/cli-adapter.js +898 -244
- package/dist/cli-adapter.js.map +1 -1
- package/dist/commands/CommandParser.d.ts +1 -1
- package/dist/commands/CommandParser.d.ts.map +1 -1
- package/dist/commands/CommandParser.js +113 -0
- package/dist/commands/CommandParser.js.map +1 -1
- package/dist/config/slash-commands.d.ts +2 -0
- package/dist/config/slash-commands.d.ts.map +1 -1
- package/dist/config/slash-commands.js +28 -0
- package/dist/config/slash-commands.js.map +1 -1
- package/dist/context/context-manager.d.ts +7 -1
- package/dist/context/context-manager.d.ts.map +1 -1
- package/dist/context/context-manager.js +14 -1
- package/dist/context/context-manager.js.map +1 -1
- package/dist/context/handlers/docker-handler.d.ts +11 -0
- package/dist/context/handlers/docker-handler.d.ts.map +1 -1
- package/dist/context/handlers/docker-handler.js +159 -14
- package/dist/context/handlers/docker-handler.js.map +1 -1
- package/dist/context/handlers/ssh-handler.d.ts +20 -0
- package/dist/context/handlers/ssh-handler.d.ts.map +1 -1
- package/dist/context/handlers/ssh-handler.js +129 -1
- package/dist/context/handlers/ssh-handler.js.map +1 -1
- package/dist/context/subshell-handler.d.ts +15 -0
- package/dist/context/subshell-handler.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/services/ai-service-client.d.ts.map +1 -1
- package/dist/services/ai-service-client.js +33 -11
- package/dist/services/ai-service-client.js.map +1 -1
- package/dist/services/api-client.js +1 -1
- package/dist/services/api-client.js.map +1 -1
- package/dist/services/local-chat-storage.d.ts +3 -1
- package/dist/services/local-chat-storage.d.ts.map +1 -1
- package/dist/services/local-chat-storage.js +8 -3
- package/dist/services/local-chat-storage.js.map +1 -1
- package/dist/services/warpify-detector.d.ts +43 -0
- package/dist/services/warpify-detector.d.ts.map +1 -0
- package/dist/services/warpify-detector.js +203 -0
- package/dist/services/warpify-detector.js.map +1 -0
- package/dist/services/workflow-storage.d.ts +72 -0
- package/dist/services/workflow-storage.d.ts.map +1 -0
- package/dist/services/workflow-storage.js +239 -0
- package/dist/services/workflow-storage.js.map +1 -0
- package/dist/tools/command.d.ts.map +1 -1
- package/dist/tools/command.js +106 -38
- package/dist/tools/command.js.map +1 -1
- package/dist/tools/enter-remote-session.d.ts +13 -0
- package/dist/tools/enter-remote-session.d.ts.map +1 -0
- package/dist/tools/enter-remote-session.js +226 -0
- package/dist/tools/enter-remote-session.js.map +1 -0
- package/dist/tools/find-files.d.ts.map +1 -1
- package/dist/tools/find-files.js +9 -2
- package/dist/tools/find-files.js.map +1 -1
- package/dist/tools/grep-search.d.ts +104 -31
- package/dist/tools/grep-search.d.ts.map +1 -1
- package/dist/tools/grep-search.js +779 -431
- package/dist/tools/grep-search.js.map +1 -1
- package/dist/tools/workflow-tool.d.ts +11 -0
- package/dist/tools/workflow-tool.d.ts.map +1 -0
- package/dist/tools/workflow-tool.js +87 -0
- package/dist/tools/workflow-tool.js.map +1 -0
- package/dist/types/workflow.d.ts +110 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +8 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/ui/components/App.d.ts +10 -1
- package/dist/ui/components/App.d.ts.map +1 -1
- package/dist/ui/components/App.js +135 -8
- package/dist/ui/components/App.js.map +1 -1
- package/dist/ui/components/Breadcrumbs.d.ts +4 -3
- package/dist/ui/components/Breadcrumbs.d.ts.map +1 -1
- package/dist/ui/components/Breadcrumbs.js +80 -54
- package/dist/ui/components/Breadcrumbs.js.map +1 -1
- package/dist/ui/components/ConnectionStatusMessage.js +2 -2
- package/dist/ui/components/ConnectionStatusMessage.js.map +1 -1
- package/dist/ui/components/InputBox.d.ts +1 -0
- package/dist/ui/components/InputBox.d.ts.map +1 -1
- package/dist/ui/components/InputBox.js +226 -19
- package/dist/ui/components/InputBox.js.map +1 -1
- package/dist/ui/components/InteractiveShell.d.ts +4 -0
- package/dist/ui/components/InteractiveShell.d.ts.map +1 -1
- package/dist/ui/components/InteractiveShell.js +52 -15
- package/dist/ui/components/InteractiveShell.js.map +1 -1
- package/dist/ui/components/KeyboardHelp.d.ts.map +1 -1
- package/dist/ui/components/KeyboardHelp.js +14 -6
- package/dist/ui/components/KeyboardHelp.js.map +1 -1
- package/dist/ui/components/ToolExecutionMessage.d.ts.map +1 -1
- package/dist/ui/components/ToolExecutionMessage.js +165 -27
- package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
- package/dist/ui/components/WorkflowCreatorScreen.d.ts +25 -0
- package/dist/ui/components/WorkflowCreatorScreen.d.ts.map +1 -0
- package/dist/ui/components/WorkflowCreatorScreen.js +164 -0
- package/dist/ui/components/WorkflowCreatorScreen.js.map +1 -0
- package/dist/utils/ansi-encoder.d.ts.map +1 -1
- package/dist/utils/ansi-encoder.js +7 -0
- package/dist/utils/ansi-encoder.js.map +1 -1
- package/dist/utils/editor-utils.d.ts +9 -0
- package/dist/utils/editor-utils.d.ts.map +1 -1
- package/dist/utils/editor-utils.js +105 -0
- package/dist/utils/editor-utils.js.map +1 -1
- package/dist/utils/input-classifier.d.ts.map +1 -1
- package/dist/utils/input-classifier.js +2 -1
- package/dist/utils/input-classifier.js.map +1 -1
- package/dist/utils/terminal-output.d.ts +3 -1
- package/dist/utils/terminal-output.d.ts.map +1 -1
- package/dist/utils/terminal-output.js +138 -157
- package/dist/utils/terminal-output.js.map +1 -1
- package/package.json +1 -1
|
@@ -20,19 +20,21 @@ import { PasswordPrompt } from './PasswordPrompt.js';
|
|
|
20
20
|
import { VersionUpdatePrompt } from './VersionUpdatePrompt.js';
|
|
21
21
|
import { InteractiveShell } from './InteractiveShell.js';
|
|
22
22
|
import { checkForUpdates } from '../../utils/version-checker.js';
|
|
23
|
-
import { runInteractiveEditor, runWSLEditor, runDockerEditor, runSSHEditor } from '../../utils/editor-utils.js';
|
|
23
|
+
import { runInteractiveEditor, runWSLEditor, runDockerEditor, runSSHEditor, runNestedDockerSSHEditor } from '../../utils/editor-utils.js';
|
|
24
24
|
import { DetailedPlanReviewScreen } from './DetailedPlanReviewScreen.js';
|
|
25
25
|
import { TaskCompletedMessage } from './TaskCompletedMessage.js';
|
|
26
26
|
import { PlanAcceptedMessage } from './PlanAcceptedMessage.js';
|
|
27
27
|
import { MCPAddScreen } from './MCPAddScreen.js';
|
|
28
28
|
import { MCPServerListScreen } from './MCPServerListScreen.js';
|
|
29
29
|
import { MCPListScreen } from './MCPListScreen.js';
|
|
30
|
+
import { WorkflowCreatorScreen } from './WorkflowCreatorScreen.js';
|
|
30
31
|
import { processTerminalOutput } from '../../utils/terminal-output.js';
|
|
31
32
|
import { BackgroundTaskManager } from '../../services/background-task-manager.js';
|
|
32
33
|
import { MonitorModeAIPanel } from './MonitorModeAIPanel.js';
|
|
33
34
|
import { detectInputRequirement, extractPromptContext, getInputTypeDescription } from '../../services/input-requirement-detector.js';
|
|
34
35
|
import { ShellInputAgent } from '../../services/shell-input-agent.js';
|
|
35
36
|
import { InputDetectionAgent } from '../../services/input-detection-agent.js';
|
|
37
|
+
import { detectWarpifySession, getSessionDescription } from '../../services/warpify-detector.js';
|
|
36
38
|
import { useConnectivity } from '../../hooks/useConnectivity.js';
|
|
37
39
|
import { apiClient } from '../../services/api-client.js';
|
|
38
40
|
import { conversationManager } from '../../services/conversation-manager.js';
|
|
@@ -147,7 +149,7 @@ const RenameInputScreen = ({ currentTitle, onRename, onCancel }) => {
|
|
|
147
149
|
React.createElement(Box, { marginTop: 1 },
|
|
148
150
|
React.createElement(Text, { dimColor: true }, "Press Enter to save, ESC to cancel"))));
|
|
149
151
|
};
|
|
150
|
-
export const App = ({ onMessage, onCancelRequest, initialModel, initialPlanMode, onResponseReceived, onDirectMessage, onResponseStream, onClearStreamedResponse, onThoughtStream, onThoughtComplete, onPickerSetup, onPickerSelection, onToolExecutionUpdate, onToolApprovalRequest, onToolStreamingOutput, onPlanModeChange, onPlanApprovalRequest, onPlanCreated, onTaskCompleted, onCommandModeChange, onToggleCommandMode, onBackgroundModeChange, onToggleBackgroundMode, onBackgroundTaskCountChange, onSubAgentCountChange, onSetAutoModeSetup, onCwdChange, onModelChange, onSubshellContextChange, onPasswordRequest, onShellInput, onShellSignal, onKillProcess, onInteractiveEditorMode, onConnectionStatusUpdate, onTokenCountUpdate, onContextLimitReached, onChatPickerSetup, onChatPickerSelection, onChatDeletePickerSetup, onChatDeletePickerSelection, onChatListSetup, onChatRenamePickerSetup, onChatRename, onRestoreMessagesSetup, onUIMessageHistoryUpdate, onBackgroundTaskListSetup, onBackgroundTaskSelection, onBackgroundTaskCancelSetup, onBackgroundTaskCancel, onBackgroundTaskViewSetup, onSessionQuotaUpdate, onMCPAddScreenSetup, onMCPRemoveScreenSetup, onMCPEnableScreenSetup, onMCPDisableScreenSetup, onMCPListScreenSetup, onMCPAddServer, onMCPRemoveServer, onMCPEnableServer, onMCPDisableServer, onMCPValidateConfig, onPromptAnswered, getMainConversation }) => {
|
|
152
|
+
export const App = ({ onMessage, onCancelRequest, initialModel, initialPlanMode, onResponseReceived, onDirectMessage, onResponseStream, onClearStreamedResponse, onThoughtStream, onThoughtComplete, onPickerSetup, onPickerSelection, onToolExecutionUpdate, onToolApprovalRequest, onToolStreamingOutput, onPlanModeChange, onPlanApprovalRequest, onPlanCreated, onTaskCompleted, onCommandModeChange, onToggleCommandMode, onBackgroundModeChange, onToggleBackgroundMode, onBackgroundTaskCountChange, onSubAgentCountChange, onSetAutoModeSetup, onCwdChange, onModelChange, onSubshellContextChange, onPasswordRequest, onShellInput, onShellSignal, onKillProcess, onInteractiveEditorMode, onConnectionStatusUpdate, onTokenCountUpdate, onContextLimitReached, onChatPickerSetup, onChatPickerSelection, onChatDeletePickerSetup, onChatDeletePickerSelection, onChatListSetup, onChatRenamePickerSetup, onChatRename, onRestoreMessagesSetup, onUIMessageHistoryUpdate, onBackgroundTaskListSetup, onBackgroundTaskSelection, onBackgroundTaskCancelSetup, onBackgroundTaskCancel, onBackgroundTaskViewSetup, onSessionQuotaUpdate, onMCPAddScreenSetup, onMCPRemoveScreenSetup, onMCPEnableScreenSetup, onMCPDisableScreenSetup, onMCPListScreenSetup, onMCPAddServer, onMCPRemoveServer, onMCPEnableServer, onMCPDisableServer, onMCPValidateConfig, onPromptAnswered, getMainConversation, onWarpifySession, onWorkflowCreatorSetup, onWorkflowSave }) => {
|
|
151
153
|
const { exit } = useApp();
|
|
152
154
|
// Calculate limit for paginated lists (75% of terminal height)
|
|
153
155
|
const listLimit = Math.max(5, Math.floor((process.stdout.rows || 24) * 0.75));
|
|
@@ -206,6 +208,7 @@ export const App = ({ onMessage, onCancelRequest, initialModel, initialPlanMode,
|
|
|
206
208
|
showExitWarning: false,
|
|
207
209
|
commandHistory: [],
|
|
208
210
|
subshellContext: undefined,
|
|
211
|
+
subshellContextStack: undefined,
|
|
209
212
|
versionInfo: undefined,
|
|
210
213
|
checkingVersion: true,
|
|
211
214
|
isAiWorking: false,
|
|
@@ -1043,6 +1046,18 @@ export const App = ({ onMessage, onCancelRequest, initialModel, initialPlanMode,
|
|
|
1043
1046
|
}));
|
|
1044
1047
|
});
|
|
1045
1048
|
}, []); // Empty dependency array - only register once
|
|
1049
|
+
// Set up callback for Workflow Creator screen
|
|
1050
|
+
React.useEffect(() => {
|
|
1051
|
+
onWorkflowCreatorSetup((initialSteps) => {
|
|
1052
|
+
clearScreen();
|
|
1053
|
+
setState(prev => ({
|
|
1054
|
+
...prev,
|
|
1055
|
+
screen: 'workflow-creator',
|
|
1056
|
+
isLoading: false,
|
|
1057
|
+
workflowCreatorInitialSteps: initialSteps
|
|
1058
|
+
}));
|
|
1059
|
+
});
|
|
1060
|
+
}, []); // Empty dependency array - only register once
|
|
1046
1061
|
// Set up callback for MCP Remove screen
|
|
1047
1062
|
React.useEffect(() => {
|
|
1048
1063
|
onMCPRemoveScreenSetup((servers) => {
|
|
@@ -1690,10 +1705,11 @@ export const App = ({ onMessage, onCancelRequest, initialModel, initialPlanMode,
|
|
|
1690
1705
|
}, [onModelChange]);
|
|
1691
1706
|
// Set up callback to receive subshell context changes
|
|
1692
1707
|
React.useEffect(() => {
|
|
1693
|
-
onSubshellContextChange((context) => {
|
|
1708
|
+
onSubshellContextChange((context, stack) => {
|
|
1694
1709
|
setState(prev => ({
|
|
1695
1710
|
...prev,
|
|
1696
|
-
subshellContext: context
|
|
1711
|
+
subshellContext: context,
|
|
1712
|
+
subshellContextStack: stack
|
|
1697
1713
|
}));
|
|
1698
1714
|
});
|
|
1699
1715
|
}, [onSubshellContextChange]);
|
|
@@ -1852,7 +1868,7 @@ export const App = ({ onMessage, onCancelRequest, initialModel, initialPlanMode,
|
|
|
1852
1868
|
// Ref to hold the current editor process for cleanup
|
|
1853
1869
|
const editorProcessRef = React.useRef(null);
|
|
1854
1870
|
React.useEffect(() => {
|
|
1855
|
-
onInteractiveEditorMode((active, command, cwd, remoteContext) => {
|
|
1871
|
+
onInteractiveEditorMode((active, command, cwd, remoteContext, parentContext) => {
|
|
1856
1872
|
if (active && command && cwd) {
|
|
1857
1873
|
// Enter interactive editor mode
|
|
1858
1874
|
setState(prev => ({ ...prev, isInteractiveEditorMode: true }));
|
|
@@ -1877,9 +1893,23 @@ export const App = ({ onMessage, onCancelRequest, initialModel, initialPlanMode,
|
|
|
1877
1893
|
editorProcessRef.current = runWSLEditor(distribution, command, cwd, handleEditorExit);
|
|
1878
1894
|
}
|
|
1879
1895
|
else if (remoteContext.type === 'docker') {
|
|
1880
|
-
// Docker context:
|
|
1896
|
+
// Docker context: check if nested inside SSH or local
|
|
1881
1897
|
const containerId = remoteContext.metadata?.containerId || '';
|
|
1882
|
-
|
|
1898
|
+
if (parentContext && parentContext.type === 'ssh') {
|
|
1899
|
+
// Nested Docker inside SSH: use SSH-tunneled editor
|
|
1900
|
+
const sshClient = parentContext.handler?.client;
|
|
1901
|
+
if (sshClient) {
|
|
1902
|
+
editorProcessRef.current = runNestedDockerSSHEditor(sshClient, containerId, command, cwd, handleEditorExit);
|
|
1903
|
+
}
|
|
1904
|
+
else {
|
|
1905
|
+
logError('SSH client not available for nested Docker editor', new Error('No SSH client'));
|
|
1906
|
+
setState(prev => ({ ...prev, isInteractiveEditorMode: false }));
|
|
1907
|
+
}
|
|
1908
|
+
}
|
|
1909
|
+
else {
|
|
1910
|
+
// Local Docker: use standard interactive editor
|
|
1911
|
+
editorProcessRef.current = runDockerEditor(containerId, command, cwd, handleEditorExit);
|
|
1912
|
+
}
|
|
1883
1913
|
}
|
|
1884
1914
|
else if (remoteContext.type === 'ssh') {
|
|
1885
1915
|
// SSH context: use SSH editor with client
|
|
@@ -2456,6 +2486,82 @@ export const App = ({ onMessage, onCancelRequest, initialModel, initialPlanMode,
|
|
|
2456
2486
|
ShellInputAgent.terminateSession(shellId);
|
|
2457
2487
|
quickLog(`[${new Date().toISOString()}] [AgentControl] Terminated ShellInputAgent session for ${shellId}\n`);
|
|
2458
2488
|
}
|
|
2489
|
+
}, onWarpifySession: async () => {
|
|
2490
|
+
// Warpify: Detect if there's an active remote session and establish ssh2 connection
|
|
2491
|
+
const shellCommand = state.shellState?.command || '';
|
|
2492
|
+
const currentOutput = state.shellState?.output || '';
|
|
2493
|
+
const session = detectWarpifySession(shellCommand, currentOutput);
|
|
2494
|
+
quickLog(`[${new Date().toISOString()}] [Warpify] Command: "${shellCommand}", Detected: ${JSON.stringify(session)}\n`);
|
|
2495
|
+
if (session.type === 'none') {
|
|
2496
|
+
// No remote session detected - show message briefly
|
|
2497
|
+
setState(prev => ({
|
|
2498
|
+
...prev,
|
|
2499
|
+
connectionStatus: {
|
|
2500
|
+
type: 'ssh',
|
|
2501
|
+
status: 'error',
|
|
2502
|
+
error: 'No remote session detected. Enter an SSH/WSL/Docker session first.'
|
|
2503
|
+
}
|
|
2504
|
+
}));
|
|
2505
|
+
setTimeout(() => {
|
|
2506
|
+
setState(prev => ({
|
|
2507
|
+
...prev,
|
|
2508
|
+
connectionStatus: undefined
|
|
2509
|
+
}));
|
|
2510
|
+
}, 3000);
|
|
2511
|
+
return;
|
|
2512
|
+
}
|
|
2513
|
+
// Remote session detected - warpify it!
|
|
2514
|
+
const description = getSessionDescription(session);
|
|
2515
|
+
quickLog(`[${new Date().toISOString()}] [Warpify] Warpifying: ${description}\n`);
|
|
2516
|
+
// Terminate the PTY session (we'll use ssh2 handler instead)
|
|
2517
|
+
onShellSignal('SIGTERM');
|
|
2518
|
+
// Capture history commands
|
|
2519
|
+
const historyMessages = [];
|
|
2520
|
+
// 1. Add the command the user typed (e.g., "ssh user@host")
|
|
2521
|
+
if (shellCommand) {
|
|
2522
|
+
historyMessages.push({
|
|
2523
|
+
id: `warpify-cmd-${Date.now()}`,
|
|
2524
|
+
role: 'user',
|
|
2525
|
+
content: shellCommand,
|
|
2526
|
+
timestamp: new Date(),
|
|
2527
|
+
isCommandMode: false // Treat as a normal chat message for history
|
|
2528
|
+
});
|
|
2529
|
+
}
|
|
2530
|
+
// 2. Add the terminal output (e.g., login banner, password prompt output)
|
|
2531
|
+
if (currentOutput && currentOutput.trim().length > 0) {
|
|
2532
|
+
historyMessages.push({
|
|
2533
|
+
id: `warpify-out-${Date.now()}`,
|
|
2534
|
+
role: 'tool', // Use 'tool' role to mimic command execution output
|
|
2535
|
+
content: '',
|
|
2536
|
+
timestamp: new Date(),
|
|
2537
|
+
toolExecution: {
|
|
2538
|
+
toolName: 'execute_command',
|
|
2539
|
+
status: 'completed',
|
|
2540
|
+
result: currentOutput, // This contains the PTY output including ANSI codes
|
|
2541
|
+
arguments: {
|
|
2542
|
+
command: shellCommand,
|
|
2543
|
+
isPty: true
|
|
2544
|
+
}
|
|
2545
|
+
}
|
|
2546
|
+
});
|
|
2547
|
+
}
|
|
2548
|
+
// Clear the shell state AND append the history messages
|
|
2549
|
+
// Also reset isAiWorking to prevent "Boosting..." spinner from appearing
|
|
2550
|
+
setState(prev => ({
|
|
2551
|
+
...prev,
|
|
2552
|
+
messageHistory: [...prev.messageHistory, ...historyMessages],
|
|
2553
|
+
shellState: undefined,
|
|
2554
|
+
isAiWorking: false
|
|
2555
|
+
}));
|
|
2556
|
+
// Clear screen
|
|
2557
|
+
clearScreen();
|
|
2558
|
+
// Establish proper ssh2 connection via cli-adapter
|
|
2559
|
+
// This will prompt for password and set up full SSH functionality
|
|
2560
|
+
const success = await onWarpifySession(shellCommand, session.type, session.connectionString);
|
|
2561
|
+
if (!success) {
|
|
2562
|
+
// Connection failed - error already shown by cli.warpifySession
|
|
2563
|
+
quickLog(`[${new Date().toISOString()}] [Warpify] Failed to establish ssh2 connection\n`);
|
|
2564
|
+
}
|
|
2459
2565
|
} })),
|
|
2460
2566
|
state.shellState?.isAgentControlled && state.shellState?.isFocused && state.shellState?.isRunning && (React.createElement(MonitorModeAIPanel, { messages: [
|
|
2461
2567
|
...(state.shellState.monitoringMessages || []),
|
|
@@ -2482,7 +2588,7 @@ export const App = ({ onMessage, onCancelRequest, initialModel, initialPlanMode,
|
|
|
2482
2588
|
// Clear preserved input on submit
|
|
2483
2589
|
preservedInputTextRef.current = '';
|
|
2484
2590
|
handleSubmit(value, clipboardImages);
|
|
2485
|
-
}, autoAcceptMode: state.autoAcceptMode, model: state.currentModel, planMode: state.planMode, commandMode: state.commandMode, backgroundMode: state.backgroundMode, currentWorkingDirectory: state.currentWorkingDirectory, commandHistory: state.commandHistory, onToggleAutoAccept: handleToggleAutoAccept, onToggleCommandMode: onToggleCommandMode, onToggleBackgroundMode: onToggleBackgroundMode, isActive: true, subshellContext: state.subshellContext, currentTokens: state.currentTokens, maxTokens: state.maxTokens, contextLimitReached: state.contextLimitReached, isShellRunning: state.shellState?.isRunning, backgroundTaskCount: state.backgroundTaskCount, subAgentCount: state.subAgentCount, initialValue: preservedInputTextRef.current, onValueChange: handleInputValueChange, onSetAutoModeSetup: (callback) => {
|
|
2591
|
+
}, autoAcceptMode: state.autoAcceptMode, model: state.currentModel, planMode: state.planMode, commandMode: state.commandMode, backgroundMode: state.backgroundMode, currentWorkingDirectory: state.currentWorkingDirectory, commandHistory: state.commandHistory, onToggleAutoAccept: handleToggleAutoAccept, onToggleCommandMode: onToggleCommandMode, onToggleBackgroundMode: onToggleBackgroundMode, isActive: true, subshellContext: state.subshellContext, subshellContextStack: state.subshellContextStack, currentTokens: state.currentTokens, maxTokens: state.maxTokens, contextLimitReached: state.contextLimitReached, isShellRunning: state.shellState?.isRunning, backgroundTaskCount: state.backgroundTaskCount, subAgentCount: state.subAgentCount, initialValue: preservedInputTextRef.current, onValueChange: handleInputValueChange, onSetAutoModeSetup: (callback) => {
|
|
2486
2592
|
setAutoModeCallbackRef.current = callback;
|
|
2487
2593
|
}, sessionQuotaExhausted: state.sessionQuotaExhausted, sessionQuotaTimeRemaining: state.sessionQuotaTimeRemaining, aiAutoSuggestEnabled: state.aiAutoSuggest, sessionCommands: sessionCommands }))),
|
|
2488
2594
|
state.showExitWarning && (React.createElement(Box, { marginTop: 1 },
|
|
@@ -2978,6 +3084,27 @@ export const App = ({ onMessage, onCancelRequest, initialModel, initialPlanMode,
|
|
|
2978
3084
|
screen: 'chat',
|
|
2979
3085
|
mcpListData: undefined
|
|
2980
3086
|
}));
|
|
3087
|
+
} })),
|
|
3088
|
+
state.screen === 'workflow-creator' && (React.createElement(WorkflowCreatorScreen, { initialSteps: state.workflowCreatorInitialSteps, onSave: (name, steps, description) => {
|
|
3089
|
+
onWorkflowSave(name, steps, description);
|
|
3090
|
+
const successMessage = {
|
|
3091
|
+
id: `workflow-created-${Date.now()}`,
|
|
3092
|
+
role: 'system',
|
|
3093
|
+
content: `✅ Workflow "${name}" saved successfully with ${steps.length} steps!\n\nRun it with: /workflow run ${name}`,
|
|
3094
|
+
timestamp: new Date()
|
|
3095
|
+
};
|
|
3096
|
+
setState(prev => ({
|
|
3097
|
+
...prev,
|
|
3098
|
+
screen: 'chat',
|
|
3099
|
+
messageHistory: [...prev.messageHistory, successMessage],
|
|
3100
|
+
workflowCreatorInitialSteps: undefined // Clear initial steps
|
|
3101
|
+
}));
|
|
3102
|
+
}, onCancel: () => {
|
|
3103
|
+
setState(prev => ({
|
|
3104
|
+
...prev,
|
|
3105
|
+
screen: 'chat',
|
|
3106
|
+
workflowCreatorInitialSteps: undefined // Clear initial steps
|
|
3107
|
+
}));
|
|
2981
3108
|
} }))));
|
|
2982
3109
|
};
|
|
2983
3110
|
//# sourceMappingURL=App.js.map
|