@involvex/super-agent-cli 0.0.39 → 0.0.46

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.
Files changed (140) hide show
  1. package/bunfig.toml +43 -0
  2. package/dist/index.js +1190 -319
  3. package/dist/super-agent-cli.exe +0 -0
  4. package/package.json +4 -1
  5. package/.grok/settings.json +0 -3
  6. package/.super-agent/settings.json +0 -23
  7. package/dist/agent/grok-agent.d.ts +0 -54
  8. package/dist/agent/grok-agent.js +0 -638
  9. package/dist/agent/grok-agent.js.map +0 -1
  10. package/dist/agent/index.d.ts +0 -14
  11. package/dist/agent/index.js +0 -139
  12. package/dist/agent/index.js.map +0 -1
  13. package/dist/agent/super-agent.d.ts +0 -54
  14. package/dist/agent/super-agent.js +0 -638
  15. package/dist/agent/super-agent.js.map +0 -1
  16. package/dist/commands/mcp.d.ts +0 -2
  17. package/dist/commands/mcp.js +0 -247
  18. package/dist/commands/mcp.js.map +0 -1
  19. package/dist/core/client.d.ts +0 -49
  20. package/dist/core/client.js +0 -81
  21. package/dist/core/client.js.map +0 -1
  22. package/dist/core/tools.d.ts +0 -8
  23. package/dist/core/tools.js +0 -351
  24. package/dist/core/tools.js.map +0 -1
  25. package/dist/grok/client.d.ts +0 -49
  26. package/dist/grok/client.js +0 -81
  27. package/dist/grok/client.js.map +0 -1
  28. package/dist/grok/tools.d.ts +0 -8
  29. package/dist/grok/tools.js +0 -351
  30. package/dist/grok/tools.js.map +0 -1
  31. package/dist/hooks/use-enhanced-input.d.ts +0 -37
  32. package/dist/hooks/use-enhanced-input.js +0 -228
  33. package/dist/hooks/use-enhanced-input.js.map +0 -1
  34. package/dist/hooks/use-input-handler.d.ts +0 -34
  35. package/dist/hooks/use-input-handler.js +0 -607
  36. package/dist/hooks/use-input-handler.js.map +0 -1
  37. package/dist/hooks/use-input-history.d.ts +0 -9
  38. package/dist/hooks/use-input-history.js +0 -62
  39. package/dist/hooks/use-input-history.js.map +0 -1
  40. package/dist/index.d.ts +0 -2
  41. package/dist/index.js.map +0 -1
  42. package/dist/mcp/client.d.ts +0 -29
  43. package/dist/mcp/client.js +0 -127
  44. package/dist/mcp/client.js.map +0 -1
  45. package/dist/mcp/config.d.ts +0 -13
  46. package/dist/mcp/config.js +0 -45
  47. package/dist/mcp/config.js.map +0 -1
  48. package/dist/mcp/transports.d.ts +0 -51
  49. package/dist/mcp/transports.js +0 -229
  50. package/dist/mcp/transports.js.map +0 -1
  51. package/dist/tools/bash.d.ts +0 -10
  52. package/dist/tools/bash.js +0 -76
  53. package/dist/tools/bash.js.map +0 -1
  54. package/dist/tools/confirmation-tool.d.ts +0 -16
  55. package/dist/tools/confirmation-tool.js +0 -77
  56. package/dist/tools/confirmation-tool.js.map +0 -1
  57. package/dist/tools/index.d.ts +0 -6
  58. package/dist/tools/index.js +0 -7
  59. package/dist/tools/index.js.map +0 -1
  60. package/dist/tools/morph-editor.d.ts +0 -36
  61. package/dist/tools/morph-editor.js +0 -324
  62. package/dist/tools/morph-editor.js.map +0 -1
  63. package/dist/tools/search.d.ts +0 -69
  64. package/dist/tools/search.js +0 -307
  65. package/dist/tools/search.js.map +0 -1
  66. package/dist/tools/text-editor.d.ts +0 -26
  67. package/dist/tools/text-editor.js +0 -583
  68. package/dist/tools/text-editor.js.map +0 -1
  69. package/dist/tools/todo-tool.d.ts +0 -20
  70. package/dist/tools/todo-tool.js +0 -134
  71. package/dist/tools/todo-tool.js.map +0 -1
  72. package/dist/types/index.d.ts +0 -30
  73. package/dist/types/index.js +0 -2
  74. package/dist/types/index.js.map +0 -1
  75. package/dist/ui/app.d.ts +0 -6
  76. package/dist/ui/app.js +0 -76
  77. package/dist/ui/app.js.map +0 -1
  78. package/dist/ui/components/api-key-input.d.ts +0 -6
  79. package/dist/ui/components/api-key-input.js +0 -70
  80. package/dist/ui/components/api-key-input.js.map +0 -1
  81. package/dist/ui/components/chat-history.d.ts +0 -7
  82. package/dist/ui/components/chat-history.js +0 -136
  83. package/dist/ui/components/chat-history.js.map +0 -1
  84. package/dist/ui/components/chat-input.d.ts +0 -8
  85. package/dist/ui/components/chat-input.js +0 -47
  86. package/dist/ui/components/chat-input.js.map +0 -1
  87. package/dist/ui/components/chat-interface.d.ts +0 -7
  88. package/dist/ui/components/chat-interface.js +0 -213
  89. package/dist/ui/components/chat-interface.js.map +0 -1
  90. package/dist/ui/components/command-suggestions.d.ts +0 -16
  91. package/dist/ui/components/command-suggestions.js +0 -18
  92. package/dist/ui/components/command-suggestions.js.map +0 -1
  93. package/dist/ui/components/confirmation-dialog.d.ts +0 -10
  94. package/dist/ui/components/confirmation-dialog.js +0 -70
  95. package/dist/ui/components/confirmation-dialog.js.map +0 -1
  96. package/dist/ui/components/diff-renderer.d.ts +0 -13
  97. package/dist/ui/components/diff-renderer.js +0 -200
  98. package/dist/ui/components/diff-renderer.js.map +0 -1
  99. package/dist/ui/components/loading-spinner.d.ts +0 -7
  100. package/dist/ui/components/loading-spinner.js +0 -52
  101. package/dist/ui/components/loading-spinner.js.map +0 -1
  102. package/dist/ui/components/mcp-status.d.ts +0 -4
  103. package/dist/ui/components/mcp-status.js +0 -37
  104. package/dist/ui/components/mcp-status.js.map +0 -1
  105. package/dist/ui/components/model-selection.d.ts +0 -11
  106. package/dist/ui/components/model-selection.js +0 -9
  107. package/dist/ui/components/model-selection.js.map +0 -1
  108. package/dist/ui/shared/max-sized-box.d.ts +0 -8
  109. package/dist/ui/shared/max-sized-box.js +0 -6
  110. package/dist/ui/shared/max-sized-box.js.map +0 -1
  111. package/dist/ui/utils/code-colorizer.d.ts +0 -2
  112. package/dist/ui/utils/code-colorizer.js +0 -7
  113. package/dist/ui/utils/code-colorizer.js.map +0 -1
  114. package/dist/ui/utils/colors.d.ts +0 -14
  115. package/dist/ui/utils/colors.js +0 -15
  116. package/dist/ui/utils/colors.js.map +0 -1
  117. package/dist/ui/utils/markdown-renderer.d.ts +0 -3
  118. package/dist/ui/utils/markdown-renderer.js +0 -23
  119. package/dist/ui/utils/markdown-renderer.js.map +0 -1
  120. package/dist/utils/confirmation-service.d.ts +0 -33
  121. package/dist/utils/confirmation-service.js +0 -110
  122. package/dist/utils/confirmation-service.js.map +0 -1
  123. package/dist/utils/custom-instructions.d.ts +0 -1
  124. package/dist/utils/custom-instructions.js +0 -23
  125. package/dist/utils/custom-instructions.js.map +0 -1
  126. package/dist/utils/model-config.d.ts +0 -28
  127. package/dist/utils/model-config.js +0 -42
  128. package/dist/utils/model-config.js.map +0 -1
  129. package/dist/utils/settings-manager.d.ts +0 -99
  130. package/dist/utils/settings-manager.js +0 -286
  131. package/dist/utils/settings-manager.js.map +0 -1
  132. package/dist/utils/settings.d.ts +0 -1
  133. package/dist/utils/settings.js +0 -4
  134. package/dist/utils/settings.js.map +0 -1
  135. package/dist/utils/text-utils.d.ts +0 -80
  136. package/dist/utils/text-utils.js +0 -191
  137. package/dist/utils/text-utils.js.map +0 -1
  138. package/dist/utils/token-counter.d.ts +0 -33
  139. package/dist/utils/token-counter.js +0 -79
  140. package/dist/utils/token-counter.js.map +0 -1
@@ -1,34 +0,0 @@
1
- import { ChatEntry, SuperAgent } from "../agent/super-agent";
2
- interface UseInputHandlerProps {
3
- agent: SuperAgent;
4
- chatHistory: ChatEntry[];
5
- setChatHistory: React.Dispatch<React.SetStateAction<ChatEntry[]>>;
6
- setIsProcessing: (processing: boolean) => void;
7
- setIsStreaming: (streaming: boolean) => void;
8
- setTokenCount: (count: number) => void;
9
- setProcessingTime: (time: number) => void;
10
- processingStartTime: React.MutableRefObject<number>;
11
- isProcessing: boolean;
12
- isStreaming: boolean;
13
- isConfirmationActive?: boolean;
14
- }
15
- interface CommandSuggestion {
16
- command: string;
17
- description: string;
18
- }
19
- interface ModelOption {
20
- model: string;
21
- }
22
- export declare function useInputHandler({ agent, chatHistory, setChatHistory, setIsProcessing, setIsStreaming, setTokenCount, setProcessingTime, processingStartTime, isProcessing, isStreaming, isConfirmationActive, }: UseInputHandlerProps): {
23
- input: string;
24
- cursorPosition: number;
25
- showCommandSuggestions: boolean;
26
- selectedCommandIndex: number;
27
- showModelSelection: boolean;
28
- selectedModelIndex: number;
29
- commandSuggestions: CommandSuggestion[];
30
- availableModels: ModelOption[];
31
- agent: SuperAgent;
32
- autoEditEnabled: boolean;
33
- };
34
- export {};
@@ -1,607 +0,0 @@
1
- import { ConfirmationService } from "../utils/confirmation-service";
2
- import { useEnhancedInput } from "./use-enhanced-input";
3
- import { useEffect, useMemo, useState } from "react";
4
- import { useInput } from "ink";
5
- import { filterCommandSuggestions } from "../ui/components/command-suggestions";
6
- import { loadModelConfig, updateCurrentModel } from "../utils/model-config";
7
- export function useInputHandler({ agent, chatHistory, setChatHistory, setIsProcessing, setIsStreaming, setTokenCount, setProcessingTime, processingStartTime, isProcessing, isStreaming, isConfirmationActive = false, }) {
8
- const [showCommandSuggestions, setShowCommandSuggestions] = useState(false);
9
- const [selectedCommandIndex, setSelectedCommandIndex] = useState(0);
10
- const [showModelSelection, setShowModelSelection] = useState(false);
11
- const [selectedModelIndex, setSelectedModelIndex] = useState(0);
12
- const [autoEditEnabled, setAutoEditEnabled] = useState(() => {
13
- const confirmationService = ConfirmationService.getInstance();
14
- const sessionFlags = confirmationService.getSessionFlags();
15
- return sessionFlags.allOperations;
16
- });
17
- const handleSpecialKey = (key) => {
18
- // Don't handle input if confirmation dialog is active
19
- if (isConfirmationActive) {
20
- return true; // Prevent default handling
21
- }
22
- // Handle shift+tab to toggle auto-edit mode
23
- if (key.shift && key.tab) {
24
- const newAutoEditState = !autoEditEnabled;
25
- setAutoEditEnabled(newAutoEditState);
26
- const confirmationService = ConfirmationService.getInstance();
27
- if (newAutoEditState) {
28
- // Enable auto-edit: set all operations to be accepted
29
- confirmationService.setSessionFlag("allOperations", true);
30
- }
31
- else {
32
- // Disable auto-edit: reset session flags
33
- confirmationService.resetSession();
34
- }
35
- return true; // Handled
36
- }
37
- // Handle escape key for closing menus
38
- if (key.escape) {
39
- if (showCommandSuggestions) {
40
- setShowCommandSuggestions(false);
41
- setSelectedCommandIndex(0);
42
- return true;
43
- }
44
- if (showModelSelection) {
45
- setShowModelSelection(false);
46
- setSelectedModelIndex(0);
47
- return true;
48
- }
49
- if (isProcessing || isStreaming) {
50
- agent.abortCurrentOperation();
51
- setIsProcessing(false);
52
- setIsStreaming(false);
53
- setTokenCount(0);
54
- setProcessingTime(0);
55
- processingStartTime.current = 0;
56
- return true;
57
- }
58
- return false; // Let default escape handling work
59
- }
60
- // Handle command suggestions navigation
61
- if (showCommandSuggestions) {
62
- const filteredSuggestions = filterCommandSuggestions(commandSuggestions, input);
63
- if (filteredSuggestions.length === 0) {
64
- setShowCommandSuggestions(false);
65
- setSelectedCommandIndex(0);
66
- return false; // Continue processing
67
- }
68
- else {
69
- if (key.upArrow) {
70
- setSelectedCommandIndex(prev => prev === 0 ? filteredSuggestions.length - 1 : prev - 1);
71
- return true;
72
- }
73
- if (key.downArrow) {
74
- setSelectedCommandIndex(prev => (prev + 1) % filteredSuggestions.length);
75
- return true;
76
- }
77
- if (key.tab || key.return) {
78
- const safeIndex = Math.min(selectedCommandIndex, filteredSuggestions.length - 1);
79
- const selectedCommand = filteredSuggestions[safeIndex];
80
- const newInput = selectedCommand.command + " ";
81
- setInput(newInput);
82
- setCursorPosition(newInput.length);
83
- setShowCommandSuggestions(false);
84
- setSelectedCommandIndex(0);
85
- return true;
86
- }
87
- }
88
- }
89
- // Handle model selection navigation
90
- if (showModelSelection) {
91
- if (key.upArrow) {
92
- setSelectedModelIndex(prev => prev === 0 ? availableModels.length - 1 : prev - 1);
93
- return true;
94
- }
95
- if (key.downArrow) {
96
- setSelectedModelIndex(prev => (prev + 1) % availableModels.length);
97
- return true;
98
- }
99
- if (key.tab || key.return) {
100
- const selectedModel = availableModels[selectedModelIndex];
101
- agent.setModel(selectedModel.model);
102
- updateCurrentModel(selectedModel.model);
103
- const confirmEntry = {
104
- type: "assistant",
105
- content: `✓ Switched to model: ${selectedModel.model}`,
106
- timestamp: new Date(),
107
- };
108
- setChatHistory(prev => [...prev, confirmEntry]);
109
- setShowModelSelection(false);
110
- setSelectedModelIndex(0);
111
- return true;
112
- }
113
- }
114
- return false; // Let default handling proceed
115
- };
116
- const handleInputSubmit = async (userInput) => {
117
- if (userInput === "exit" || userInput === "quit") {
118
- process.exit(0);
119
- }
120
- if (userInput.trim()) {
121
- const directCommandResult = await handleDirectCommand(userInput);
122
- if (!directCommandResult) {
123
- await processUserMessage(userInput);
124
- }
125
- }
126
- };
127
- const handleInputChange = (newInput) => {
128
- // Update command suggestions based on input
129
- if (newInput.startsWith("/")) {
130
- setShowCommandSuggestions(true);
131
- setSelectedCommandIndex(0);
132
- }
133
- else {
134
- setShowCommandSuggestions(false);
135
- setSelectedCommandIndex(0);
136
- }
137
- };
138
- const { input, cursorPosition, setInput, setCursorPosition, clearInput, resetHistory, handleInput, } = useEnhancedInput({
139
- onSubmit: handleInputSubmit,
140
- onSpecialKey: handleSpecialKey,
141
- disabled: isConfirmationActive,
142
- });
143
- // Hook up the actual input handling
144
- useInput((inputChar, key) => {
145
- handleInput(inputChar, key);
146
- });
147
- // Update command suggestions when input changes
148
- useEffect(() => {
149
- handleInputChange(input);
150
- }, [input]);
151
- const commandSuggestions = [
152
- { command: "/help", description: "Show help information" },
153
- { command: "/clear", description: "Clear chat history" },
154
- { command: "/models", description: "Switch Super Agent Model" },
155
- { command: "/commit-and-push", description: "AI commit & push to remote" },
156
- { command: "/exit", description: "Exit the application" },
157
- ];
158
- // Load models from configuration with fallback to defaults
159
- const availableModels = useMemo(() => {
160
- return loadModelConfig(); // Return directly, interface already matches
161
- }, []);
162
- const handleDirectCommand = async (input) => {
163
- const trimmedInput = input.trim();
164
- if (trimmedInput === "/clear") {
165
- // Reset chat history
166
- setChatHistory([]);
167
- // Reset processing states
168
- setIsProcessing(false);
169
- setIsStreaming(false);
170
- setTokenCount(0);
171
- setProcessingTime(0);
172
- processingStartTime.current = 0;
173
- // Reset confirmation service session flags
174
- const confirmationService = ConfirmationService.getInstance();
175
- confirmationService.resetSession();
176
- clearInput();
177
- resetHistory();
178
- return true;
179
- }
180
- if (trimmedInput === "/help") {
181
- const helpEntry = {
182
- type: "assistant",
183
- content: `Super Agent CLI Help:
184
-
185
- Built-in Commands:
186
- /clear - Clear chat history
187
- /help - Show this help
188
- /models - Switch between available models
189
- /exit - Exit application
190
- exit, quit - Exit application
191
-
192
- Git Commands:
193
- /commit-and-push - AI-generated commit + push to remote
194
-
195
- Enhanced Input Features:
196
- ↑/↓ Arrow - Navigate command history
197
- Ctrl+C - Clear input (press twice to exit)
198
- Ctrl+←/→ - Move by word
199
- Ctrl+A/E - Move to line start/end
200
- Ctrl+W - Delete word before cursor
201
- Ctrl+K - Delete to end of line
202
- Ctrl+U - Delete to start of line
203
- Shift+Tab - Toggle auto-edit mode (bypass confirmations)
204
-
205
- Direct Commands (executed immediately):
206
- ls [path] - List directory contents
207
- pwd - Show current directory
208
- cd <path> - Change directory
209
- cat <file> - View file contents
210
- mkdir <dir> - Create directory
211
- touch <file>- Create empty file
212
-
213
- Model Configuration:
214
- Edit ~/.super-agent/models.json to add custom models (Claude, GPT, Gemini, etc.)
215
-
216
- For complex operations, just describe what you want in natural language.
217
- Examples:
218
- "edit package.json and add a new script"
219
- "create a new React component called Header"
220
- "show me all TypeScript files in this project"`,
221
- timestamp: new Date(),
222
- };
223
- setChatHistory(prev => [...prev, helpEntry]);
224
- clearInput();
225
- return true;
226
- }
227
- if (trimmedInput === "/exit") {
228
- process.exit(0);
229
- }
230
- if (trimmedInput === "/models") {
231
- setShowModelSelection(true);
232
- setSelectedModelIndex(0);
233
- clearInput();
234
- return true;
235
- }
236
- if (trimmedInput.startsWith("/models ")) {
237
- const modelArg = trimmedInput.split(" ")[1];
238
- const modelNames = availableModels.map(m => m.model);
239
- if (modelNames.includes(modelArg)) {
240
- agent.setModel(modelArg);
241
- updateCurrentModel(modelArg); // Update project current model
242
- const confirmEntry = {
243
- type: "assistant",
244
- content: `✓ Switched to model: ${modelArg}`,
245
- timestamp: new Date(),
246
- };
247
- setChatHistory(prev => [...prev, confirmEntry]);
248
- }
249
- else {
250
- const errorEntry = {
251
- type: "assistant",
252
- content: `Invalid model: ${modelArg}
253
-
254
- Available models: ${modelNames.join(", ")}`,
255
- timestamp: new Date(),
256
- };
257
- setChatHistory(prev => [...prev, errorEntry]);
258
- }
259
- clearInput();
260
- return true;
261
- }
262
- if (trimmedInput === "/commit-and-push") {
263
- const userEntry = {
264
- type: "user",
265
- content: "/commit-and-push",
266
- timestamp: new Date(),
267
- };
268
- setChatHistory(prev => [...prev, userEntry]);
269
- setIsProcessing(true);
270
- setIsStreaming(true);
271
- try {
272
- // First check if there are any changes at all
273
- const initialStatusResult = await agent.executeBashCommand("git status --porcelain");
274
- if (!initialStatusResult.success ||
275
- !initialStatusResult.output?.trim()) {
276
- const noChangesEntry = {
277
- type: "assistant",
278
- content: "No changes to commit. Working directory is clean.",
279
- timestamp: new Date(),
280
- };
281
- setChatHistory(prev => [...prev, noChangesEntry]);
282
- setIsProcessing(false);
283
- setIsStreaming(false);
284
- setInput("");
285
- return true;
286
- }
287
- // Add all changes
288
- const addResult = await agent.executeBashCommand("git add .");
289
- if (!addResult.success) {
290
- const addErrorEntry = {
291
- type: "assistant",
292
- content: `Failed to stage changes: ${addResult.error || "Unknown error"}`,
293
- timestamp: new Date(),
294
- };
295
- setChatHistory(prev => [...prev, addErrorEntry]);
296
- setIsProcessing(false);
297
- setIsStreaming(false);
298
- setInput("");
299
- return true;
300
- }
301
- // Show that changes were staged
302
- const addEntry = {
303
- type: "tool_result",
304
- content: "Changes staged successfully",
305
- timestamp: new Date(),
306
- toolCall: {
307
- id: `git_add_${Date.now()}`,
308
- type: "function",
309
- function: {
310
- name: "bash",
311
- arguments: JSON.stringify({ command: "git add ." }),
312
- },
313
- },
314
- toolResult: addResult,
315
- };
316
- setChatHistory(prev => [...prev, addEntry]);
317
- // Get staged changes for commit message generation
318
- const diffResult = await agent.executeBashCommand("git diff --cached");
319
- // Generate commit message using AI
320
- const commitPrompt = `Generate a concise, professional git commit message for these changes:
321
-
322
- Git Status:
323
- ${initialStatusResult.output}
324
-
325
- Git Diff (staged changes):
326
- ${diffResult.output || "No staged changes shown"}
327
-
328
- Follow conventional commit format (feat:, fix:, docs:, etc.) and keep it under 72 characters.
329
- Respond with ONLY the commit message, no additional text.`;
330
- let commitMessage = "";
331
- let streamingEntry = null;
332
- for await (const chunk of agent.processUserMessageStream(commitPrompt)) {
333
- if (chunk.type === "content" && chunk.content) {
334
- if (!streamingEntry) {
335
- const newEntry = {
336
- type: "assistant",
337
- content: `Generating commit message...\n\n${chunk.content}`,
338
- timestamp: new Date(),
339
- isStreaming: true,
340
- };
341
- setChatHistory(prev => [...prev, newEntry]);
342
- streamingEntry = newEntry;
343
- commitMessage = chunk.content;
344
- }
345
- else {
346
- commitMessage += chunk.content;
347
- setChatHistory(prev => prev.map((entry, idx) => idx === prev.length - 1 && entry.isStreaming
348
- ? {
349
- ...entry,
350
- content: `Generating commit message...\n\n${commitMessage}`,
351
- }
352
- : entry));
353
- }
354
- }
355
- else if (chunk.type === "done") {
356
- if (streamingEntry) {
357
- setChatHistory(prev => prev.map(entry => entry.isStreaming
358
- ? {
359
- ...entry,
360
- content: `Generated commit message: "${commitMessage.trim()}"`,
361
- isStreaming: false,
362
- }
363
- : entry));
364
- }
365
- break;
366
- }
367
- }
368
- // Execute the commit
369
- const cleanCommitMessage = commitMessage
370
- .trim()
371
- .replace(/^["']|["']$/g, "");
372
- const commitCommand = `git commit -m "${cleanCommitMessage}"`;
373
- const commitResult = await agent.executeBashCommand(commitCommand);
374
- const commitEntry = {
375
- type: "tool_result",
376
- content: commitResult.success
377
- ? commitResult.output || "Commit successful"
378
- : commitResult.error || "Commit failed",
379
- timestamp: new Date(),
380
- toolCall: {
381
- id: `git_commit_${Date.now()}`,
382
- type: "function",
383
- function: {
384
- name: "bash",
385
- arguments: JSON.stringify({ command: commitCommand }),
386
- },
387
- },
388
- toolResult: commitResult,
389
- };
390
- setChatHistory(prev => [...prev, commitEntry]);
391
- // If commit was successful, push to remote
392
- if (commitResult.success) {
393
- // First try regular push, if it fails try with upstream setup
394
- let pushResult = await agent.executeBashCommand("git push");
395
- let pushCommand = "git push";
396
- if (!pushResult.success &&
397
- pushResult.error?.includes("no upstream branch")) {
398
- pushCommand = "git push -u origin HEAD";
399
- pushResult = await agent.executeBashCommand(pushCommand);
400
- }
401
- const pushEntry = {
402
- type: "tool_result",
403
- content: pushResult.success
404
- ? pushResult.output || "Push successful"
405
- : pushResult.error || "Push failed",
406
- timestamp: new Date(),
407
- toolCall: {
408
- id: `git_push_${Date.now()}`,
409
- type: "function",
410
- function: {
411
- name: "bash",
412
- arguments: JSON.stringify({ command: pushCommand }),
413
- },
414
- },
415
- toolResult: pushResult,
416
- };
417
- setChatHistory(prev => [...prev, pushEntry]);
418
- }
419
- }
420
- catch (error) {
421
- const errorEntry = {
422
- type: "assistant",
423
- content: `Error during commit and push: ${error.message}`,
424
- timestamp: new Date(),
425
- };
426
- setChatHistory(prev => [...prev, errorEntry]);
427
- }
428
- setIsProcessing(false);
429
- setIsStreaming(false);
430
- clearInput();
431
- return true;
432
- }
433
- const directBashCommands = [
434
- "ls",
435
- "pwd",
436
- "cd",
437
- "cat",
438
- "mkdir",
439
- "touch",
440
- "echo",
441
- "grep",
442
- "find",
443
- "cp",
444
- "mv",
445
- "rm",
446
- ];
447
- const firstWord = trimmedInput.split(" ")[0];
448
- if (directBashCommands.includes(firstWord)) {
449
- const userEntry = {
450
- type: "user",
451
- content: trimmedInput,
452
- timestamp: new Date(),
453
- };
454
- setChatHistory(prev => [...prev, userEntry]);
455
- try {
456
- const result = await agent.executeBashCommand(trimmedInput);
457
- const commandEntry = {
458
- type: "tool_result",
459
- content: result.success
460
- ? result.output || "Command completed"
461
- : result.error || "Command failed",
462
- timestamp: new Date(),
463
- toolCall: {
464
- id: `bash_${Date.now()}`,
465
- type: "function",
466
- function: {
467
- name: "bash",
468
- arguments: JSON.stringify({ command: trimmedInput }),
469
- },
470
- },
471
- toolResult: result,
472
- };
473
- setChatHistory(prev => [...prev, commandEntry]);
474
- }
475
- catch (error) {
476
- const errorEntry = {
477
- type: "assistant",
478
- content: `Error executing command: ${error.message}`,
479
- timestamp: new Date(),
480
- };
481
- setChatHistory(prev => [...prev, errorEntry]);
482
- }
483
- clearInput();
484
- return true;
485
- }
486
- return false;
487
- };
488
- const processUserMessage = async (userInput) => {
489
- const userEntry = {
490
- type: "user",
491
- content: userInput,
492
- timestamp: new Date(),
493
- };
494
- setChatHistory(prev => [...prev, userEntry]);
495
- setIsProcessing(true);
496
- clearInput();
497
- try {
498
- setIsStreaming(true);
499
- let streamingEntry = null;
500
- for await (const chunk of agent.processUserMessageStream(userInput)) {
501
- switch (chunk.type) {
502
- case "content":
503
- if (chunk.content) {
504
- if (!streamingEntry) {
505
- const newStreamingEntry = {
506
- type: "assistant",
507
- content: chunk.content,
508
- timestamp: new Date(),
509
- isStreaming: true,
510
- };
511
- setChatHistory(prev => [...prev, newStreamingEntry]);
512
- streamingEntry = newStreamingEntry;
513
- }
514
- else {
515
- setChatHistory(prev => prev.map((entry, idx) => idx === prev.length - 1 && entry.isStreaming
516
- ? { ...entry, content: entry.content + chunk.content }
517
- : entry));
518
- }
519
- }
520
- break;
521
- case "token_count":
522
- if (chunk.tokenCount !== undefined) {
523
- setTokenCount(chunk.tokenCount);
524
- }
525
- break;
526
- case "tool_calls":
527
- if (chunk.toolCalls) {
528
- // Stop streaming for the current assistant message
529
- setChatHistory(prev => prev.map(entry => entry.isStreaming
530
- ? {
531
- ...entry,
532
- isStreaming: false,
533
- toolCalls: chunk.toolCalls,
534
- }
535
- : entry));
536
- streamingEntry = null;
537
- // Add individual tool call entries to show tools are being executed
538
- chunk.toolCalls.forEach(toolCall => {
539
- const toolCallEntry = {
540
- type: "tool_call",
541
- content: "Executing...",
542
- timestamp: new Date(),
543
- toolCall: toolCall,
544
- };
545
- setChatHistory(prev => [...prev, toolCallEntry]);
546
- });
547
- }
548
- break;
549
- case "tool_result":
550
- if (chunk.toolCall && chunk.toolResult) {
551
- const result = chunk.toolResult;
552
- setChatHistory(prev => prev.map(entry => {
553
- if (entry.isStreaming) {
554
- return { ...entry, isStreaming: false };
555
- }
556
- // Update the existing tool_call entry with the result
557
- if (entry.type === "tool_call" &&
558
- entry.toolCall?.id === chunk.toolCall?.id) {
559
- return {
560
- ...entry,
561
- type: "tool_result",
562
- content: result.success
563
- ? result.output || "Success"
564
- : result.error || "Error occurred",
565
- toolResult: result,
566
- };
567
- }
568
- return entry;
569
- }));
570
- streamingEntry = null;
571
- }
572
- break;
573
- case "done":
574
- if (streamingEntry) {
575
- setChatHistory(prev => prev.map(entry => entry.isStreaming ? { ...entry, isStreaming: false } : entry));
576
- }
577
- setIsStreaming(false);
578
- break;
579
- }
580
- }
581
- }
582
- catch (error) {
583
- const errorEntry = {
584
- type: "assistant",
585
- content: `Error: ${error.message}`,
586
- timestamp: new Date(),
587
- };
588
- setChatHistory(prev => [...prev, errorEntry]);
589
- setIsStreaming(false);
590
- }
591
- setIsProcessing(false);
592
- processingStartTime.current = 0;
593
- };
594
- return {
595
- input,
596
- cursorPosition,
597
- showCommandSuggestions,
598
- selectedCommandIndex,
599
- showModelSelection,
600
- selectedModelIndex,
601
- commandSuggestions,
602
- availableModels,
603
- agent,
604
- autoEditEnabled,
605
- };
606
- }
607
- //# sourceMappingURL=use-input-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-input-handler.js","sourceRoot":"","sources":["../../src/hooks/use-input-handler.ts"],"names":[],"mappings":"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"}