@google/gemini-cli 0.1.9-nightly.250707.d1c0a211 → 0.1.9-nightly.250708.a4097ae6
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/README.md +14 -0
- package/dist/google-gemini-cli-0.1.9.tgz +0 -0
- package/dist/package.json +2 -2
- package/dist/src/config/auth.js +3 -2
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/config.d.ts +0 -1
- package/dist/src/config/config.js +15 -41
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/settings.d.ts +2 -0
- package/dist/src/config/settings.js +63 -1
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/gemini.js +16 -17
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/services/CommandService.d.ts +13 -0
- package/dist/src/services/CommandService.js +30 -0
- package/dist/src/services/CommandService.js.map +1 -0
- package/dist/src/test-utils/mockCommandContext.d.ts +18 -0
- package/dist/src/test-utils/mockCommandContext.js +75 -0
- package/dist/src/test-utils/mockCommandContext.js.map +1 -0
- package/dist/src/ui/App.js +8 -5
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/App.test.js +1 -0
- package/dist/src/ui/App.test.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.d.ts +7 -0
- package/dist/src/ui/commands/clearCommand.js +15 -0
- package/dist/src/ui/commands/clearCommand.js.map +1 -0
- package/dist/src/ui/commands/helpCommand.d.ts +7 -0
- package/dist/src/ui/commands/helpCommand.js +18 -0
- package/dist/src/ui/commands/helpCommand.js.map +1 -0
- package/dist/src/ui/commands/memoryCommand.d.ts +7 -0
- package/dist/src/ui/commands/memoryCommand.js +81 -0
- package/dist/src/ui/commands/memoryCommand.js.map +1 -0
- package/dist/src/ui/commands/types.d.ts +63 -0
- package/dist/src/ui/commands/types.js +7 -0
- package/dist/src/ui/commands/types.js.map +1 -0
- package/dist/src/ui/components/AuthDialog.js +21 -2
- package/dist/src/ui/components/AuthDialog.js.map +1 -1
- package/dist/src/ui/components/AuthDialog.test.js +20 -3
- package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/components/Help.d.ts +1 -1
- package/dist/src/ui/components/Help.js +3 -2
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.d.ts +2 -1
- package/dist/src/ui/components/InputPrompt.js +106 -157
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.test.js +180 -0
- package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
- package/dist/src/ui/contexts/SessionContext.d.ts +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.js +5 -7
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +6 -10
- package/dist/src/ui/hooks/slashCommandProcessor.js +193 -124
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useCompletion.d.ts +2 -2
- package/dist/src/ui/hooks/useCompletion.js +106 -56
- package/dist/src/ui/hooks/useCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -2
- package/dist/src/ui/hooks/useGeminiStream.js +4 -10
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.test.js +26 -44
- package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
- package/dist/src/ui/types.d.ts +10 -0
- package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +16 -0
- package/dist/src/ui/utils/InlineMarkdownRenderer.js +104 -0
- package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -0
- package/dist/src/ui/utils/MarkdownDisplay.js +1 -80
- package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.js +35 -0
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
- package/dist/src/ui/utils/TableRenderer.js +50 -32
- package/dist/src/ui/utils/TableRenderer.js.map +1 -1
- package/dist/src/utils/sandbox-macos-permissive-proxied.sb +1 -1
- package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +1 -1
- package/dist/src/utils/userStartupWarnings.d.ts +6 -0
- package/dist/src/utils/userStartupWarnings.js +33 -0
- package/dist/src/utils/userStartupWarnings.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import React from 'react';
|
|
7
7
|
import { TextBuffer } from './shared/text-buffer.js';
|
|
8
|
-
import { SlashCommand } from '../
|
|
8
|
+
import { CommandContext, SlashCommand } from '../commands/types.js';
|
|
9
9
|
import { Config } from '@google/gemini-cli-core';
|
|
10
10
|
export interface InputPromptProps {
|
|
11
11
|
buffer: TextBuffer;
|
|
@@ -14,6 +14,7 @@ export interface InputPromptProps {
|
|
|
14
14
|
onClearScreen: () => void;
|
|
15
15
|
config: Config;
|
|
16
16
|
slashCommands: SlashCommand[];
|
|
17
|
+
commandContext: CommandContext;
|
|
17
18
|
placeholder?: string;
|
|
18
19
|
focus?: boolean;
|
|
19
20
|
inputWidth: number;
|
|
@@ -12,14 +12,13 @@ import { useInputHistory } from '../hooks/useInputHistory.js';
|
|
|
12
12
|
import { cpSlice, cpLen } from '../utils/textUtils.js';
|
|
13
13
|
import chalk from 'chalk';
|
|
14
14
|
import stringWidth from 'string-width';
|
|
15
|
-
import process from 'node:process';
|
|
16
15
|
import { useShellHistory } from '../hooks/useShellHistory.js';
|
|
17
16
|
import { useCompletion } from '../hooks/useCompletion.js';
|
|
18
17
|
import { useKeypress } from '../hooks/useKeypress.js';
|
|
19
18
|
import { isAtCommand, isSlashCommand } from '../utils/commandUtils.js';
|
|
20
|
-
export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, config, slashCommands, placeholder = ' Type your message or @path/to/file', focus = true, inputWidth, suggestionsWidth, shellModeActive, setShellModeActive, }) => {
|
|
19
|
+
export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, config, slashCommands, commandContext, placeholder = ' Type your message or @path/to/file', focus = true, inputWidth, suggestionsWidth, shellModeActive, setShellModeActive, }) => {
|
|
21
20
|
const [justNavigatedHistory, setJustNavigatedHistory] = useState(false);
|
|
22
|
-
const completion = useCompletion(buffer.text, config.getTargetDir(), isAtCommand(buffer.text) || isSlashCommand(buffer.text), slashCommands, config);
|
|
21
|
+
const completion = useCompletion(buffer.text, config.getTargetDir(), isAtCommand(buffer.text) || isSlashCommand(buffer.text), slashCommands, commandContext, config);
|
|
23
22
|
const resetCompletionState = completion.resetCompletionState;
|
|
24
23
|
const shellHistory = useShellHistory(config.getProjectRoot());
|
|
25
24
|
const handleSubmitAndClear = useCallback((submittedValue) => {
|
|
@@ -63,26 +62,40 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
63
62
|
const query = buffer.text;
|
|
64
63
|
const suggestion = completionSuggestions[indexToUse].value;
|
|
65
64
|
if (query.trimStart().startsWith('/')) {
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
65
|
+
const hasTrailingSpace = query.endsWith(' ');
|
|
66
|
+
const parts = query
|
|
67
|
+
.trimStart()
|
|
68
|
+
.substring(1)
|
|
69
|
+
.split(/\s+/)
|
|
70
|
+
.filter(Boolean);
|
|
71
|
+
let isParentPath = false;
|
|
72
|
+
// If there's no trailing space, we need to check if the current query
|
|
73
|
+
// is already a complete path to a parent command.
|
|
74
|
+
if (!hasTrailingSpace) {
|
|
75
|
+
let currentLevel = slashCommands;
|
|
76
|
+
for (let i = 0; i < parts.length; i++) {
|
|
77
|
+
const part = parts[i];
|
|
78
|
+
const found = currentLevel?.find((cmd) => cmd.name === part || cmd.altName === part);
|
|
79
|
+
if (found) {
|
|
80
|
+
if (i === parts.length - 1 && found.subCommands) {
|
|
81
|
+
isParentPath = true;
|
|
82
|
+
}
|
|
83
|
+
currentLevel = found.subCommands;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// Path is invalid, so it can't be a parent path.
|
|
87
|
+
currentLevel = undefined;
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
79
90
|
}
|
|
80
91
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
92
|
+
// Determine the base path of the command.
|
|
93
|
+
// - If there's a trailing space, the whole command is the base.
|
|
94
|
+
// - If it's a known parent path, the whole command is the base.
|
|
95
|
+
// - Otherwise, the base is everything EXCEPT the last partial part.
|
|
96
|
+
const basePath = hasTrailingSpace || isParentPath ? parts : parts.slice(0, -1);
|
|
97
|
+
const newValue = `/${[...basePath, suggestion].join(' ')} `;
|
|
98
|
+
buffer.setText(newValue);
|
|
86
99
|
}
|
|
87
100
|
else {
|
|
88
101
|
const atIndex = query.lastIndexOf('@');
|
|
@@ -97,22 +110,31 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
97
110
|
buffer.replaceRangeByOffset(autoCompleteStartIndex, buffer.text.length, suggestion);
|
|
98
111
|
}
|
|
99
112
|
resetCompletionState();
|
|
100
|
-
}, [
|
|
101
|
-
resetCompletionState,
|
|
102
|
-
handleSubmitAndClear,
|
|
103
|
-
buffer,
|
|
104
|
-
completionSuggestions,
|
|
105
|
-
slashCommands,
|
|
106
|
-
]);
|
|
113
|
+
}, [resetCompletionState, buffer, completionSuggestions, slashCommands]);
|
|
107
114
|
const handleInput = useCallback((key) => {
|
|
108
115
|
if (!focus) {
|
|
109
116
|
return;
|
|
110
117
|
}
|
|
111
|
-
|
|
112
|
-
|
|
118
|
+
if (key.sequence === '!' &&
|
|
119
|
+
buffer.text === '' &&
|
|
120
|
+
!completion.showSuggestions) {
|
|
113
121
|
setShellModeActive(!shellModeActive);
|
|
114
122
|
buffer.setText(''); // Clear the '!' from input
|
|
115
|
-
return
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (key.name === 'escape') {
|
|
126
|
+
if (shellModeActive) {
|
|
127
|
+
setShellModeActive(false);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (completion.showSuggestions) {
|
|
131
|
+
completion.resetCompletionState();
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (key.ctrl && key.name === 'l') {
|
|
136
|
+
onClearScreen();
|
|
137
|
+
return;
|
|
116
138
|
}
|
|
117
139
|
if (completion.showSuggestions) {
|
|
118
140
|
if (key.name === 'up') {
|
|
@@ -123,10 +145,10 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
123
145
|
completion.navigateDown();
|
|
124
146
|
return;
|
|
125
147
|
}
|
|
126
|
-
if (key.name === 'tab') {
|
|
148
|
+
if (key.name === 'tab' || (key.name === 'return' && !key.ctrl)) {
|
|
127
149
|
if (completion.suggestions.length > 0) {
|
|
128
150
|
const targetIndex = completion.activeSuggestionIndex === -1
|
|
129
|
-
? 0
|
|
151
|
+
? 0 // Default to the first if none is active
|
|
130
152
|
: completion.activeSuggestionIndex;
|
|
131
153
|
if (targetIndex < completion.suggestions.length) {
|
|
132
154
|
handleAutocomplete(targetIndex);
|
|
@@ -134,67 +156,68 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
134
156
|
}
|
|
135
157
|
return;
|
|
136
158
|
}
|
|
137
|
-
if (key.name === 'return') {
|
|
138
|
-
if (completion.activeSuggestionIndex >= 0) {
|
|
139
|
-
handleAutocomplete(completion.activeSuggestionIndex);
|
|
140
|
-
}
|
|
141
|
-
else if (query.trim()) {
|
|
142
|
-
handleSubmitAndClear(query);
|
|
143
|
-
}
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
159
|
}
|
|
147
160
|
else {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
161
|
+
if (!shellModeActive) {
|
|
162
|
+
if (key.ctrl && key.name === 'p') {
|
|
163
|
+
inputHistory.navigateUp();
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (key.ctrl && key.name === 'n') {
|
|
167
|
+
inputHistory.navigateDown();
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
// Handle arrow-up/down for history on single-line or at edges
|
|
171
|
+
if (key.name === 'up' &&
|
|
172
|
+
(buffer.allVisualLines.length === 1 ||
|
|
173
|
+
(buffer.visualCursor[0] === 0 && buffer.visualScrollRow === 0))) {
|
|
174
|
+
inputHistory.navigateUp();
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
if (key.name === 'down' &&
|
|
178
|
+
(buffer.allVisualLines.length === 1 ||
|
|
179
|
+
buffer.visualCursor[0] === buffer.allVisualLines.length - 1)) {
|
|
180
|
+
inputHistory.navigateDown();
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
160
183
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
184
|
+
else {
|
|
185
|
+
// Shell History Navigation
|
|
186
|
+
if (key.name === 'up') {
|
|
187
|
+
const prevCommand = shellHistory.getPreviousCommand();
|
|
188
|
+
if (prevCommand !== null)
|
|
189
|
+
buffer.setText(prevCommand);
|
|
164
190
|
return;
|
|
165
191
|
}
|
|
166
|
-
|
|
192
|
+
if (key.name === 'down') {
|
|
193
|
+
const nextCommand = shellHistory.getNextCommand();
|
|
194
|
+
if (nextCommand !== null)
|
|
195
|
+
buffer.setText(nextCommand);
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (key.name === 'return' && !key.ctrl && !key.meta && !key.paste) {
|
|
200
|
+
if (buffer.text.trim()) {
|
|
201
|
+
handleSubmitAndClear(buffer.text);
|
|
202
|
+
}
|
|
167
203
|
return;
|
|
168
204
|
}
|
|
169
205
|
}
|
|
170
|
-
//
|
|
206
|
+
// Newline insertion
|
|
207
|
+
if (key.name === 'return' && (key.ctrl || key.meta || key.paste)) {
|
|
208
|
+
buffer.newline();
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
// Ctrl+A (Home) / Ctrl+E (End)
|
|
171
212
|
if (key.ctrl && key.name === 'a') {
|
|
172
213
|
buffer.move('home');
|
|
173
|
-
buffer.moveToOffset(0);
|
|
174
214
|
return;
|
|
175
215
|
}
|
|
176
|
-
// Ctrl+E (End)
|
|
177
216
|
if (key.ctrl && key.name === 'e') {
|
|
178
217
|
buffer.move('end');
|
|
179
|
-
buffer.moveToOffset(cpLen(buffer.text));
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
// Ctrl+L (Clear Screen)
|
|
183
|
-
if (key.ctrl && key.name === 'l') {
|
|
184
|
-
onClearScreen();
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
// Ctrl+P (History Up)
|
|
188
|
-
if (key.ctrl && key.name === 'p' && !completion.showSuggestions) {
|
|
189
|
-
inputHistory.navigateUp();
|
|
190
218
|
return;
|
|
191
219
|
}
|
|
192
|
-
//
|
|
193
|
-
if (key.ctrl && key.name === 'n' && !completion.showSuggestions) {
|
|
194
|
-
inputHistory.navigateDown();
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
// Core text editing from MultilineTextEditor's useInput
|
|
220
|
+
// Kill line commands
|
|
198
221
|
if (key.ctrl && key.name === 'k') {
|
|
199
222
|
buffer.killLineRight();
|
|
200
223
|
return;
|
|
@@ -203,87 +226,13 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
203
226
|
buffer.killLineLeft();
|
|
204
227
|
return;
|
|
205
228
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
(!key.ctrl &&
|
|
211
|
-
key.name === 'e' &&
|
|
212
|
-
key.sequence.length === 1 &&
|
|
213
|
-
key.sequence.charCodeAt(0) === 5);
|
|
214
|
-
if (isCtrlX || isCtrlEFromEditor) {
|
|
215
|
-
if (isCtrlEFromEditor && !(key.ctrl && key.name === 'e')) {
|
|
216
|
-
// Avoid double handling Ctrl+E
|
|
217
|
-
buffer.openInExternalEditor();
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
if (isCtrlX) {
|
|
221
|
-
buffer.openInExternalEditor();
|
|
222
|
-
return;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
if (process.env['TEXTBUFFER_DEBUG'] === '1' ||
|
|
226
|
-
process.env['TEXTBUFFER_DEBUG'] === 'true') {
|
|
227
|
-
console.log('[InputPromptCombined] event', { key });
|
|
228
|
-
}
|
|
229
|
-
// Ctrl+Enter for newline, Enter for submit
|
|
230
|
-
if (key.name === 'return') {
|
|
231
|
-
const [row, col] = buffer.cursor;
|
|
232
|
-
const line = buffer.lines[row];
|
|
233
|
-
const charBefore = col > 0 ? cpSlice(line, col - 1, col) : '';
|
|
234
|
-
if (key.ctrl || key.meta || charBefore === '\\' || key.paste) {
|
|
235
|
-
// Ctrl+Enter or escaped newline
|
|
236
|
-
if (charBefore === '\\') {
|
|
237
|
-
buffer.backspace();
|
|
238
|
-
}
|
|
239
|
-
buffer.newline();
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
// Enter for submit
|
|
243
|
-
if (query.trim()) {
|
|
244
|
-
handleSubmitAndClear(query);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
// Standard arrow navigation within the buffer
|
|
250
|
-
if (key.name === 'up' && !completion.showSuggestions) {
|
|
251
|
-
if (shellModeActive) {
|
|
252
|
-
const prevCommand = shellHistory.getPreviousCommand();
|
|
253
|
-
if (prevCommand !== null) {
|
|
254
|
-
buffer.setText(prevCommand);
|
|
255
|
-
}
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
if ((buffer.allVisualLines.length === 1 || // Always navigate for single line
|
|
259
|
-
(buffer.visualCursor[0] === 0 && buffer.visualScrollRow === 0)) &&
|
|
260
|
-
inputHistory.navigateUp) {
|
|
261
|
-
inputHistory.navigateUp();
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
buffer.move('up');
|
|
265
|
-
}
|
|
266
|
-
return;
|
|
267
|
-
}
|
|
268
|
-
if (key.name === 'down' && !completion.showSuggestions) {
|
|
269
|
-
if (shellModeActive) {
|
|
270
|
-
const nextCommand = shellHistory.getNextCommand();
|
|
271
|
-
if (nextCommand !== null) {
|
|
272
|
-
buffer.setText(nextCommand);
|
|
273
|
-
}
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
if ((buffer.allVisualLines.length === 1 || // Always navigate for single line
|
|
277
|
-
buffer.visualCursor[0] === buffer.allVisualLines.length - 1) &&
|
|
278
|
-
inputHistory.navigateDown) {
|
|
279
|
-
inputHistory.navigateDown();
|
|
280
|
-
}
|
|
281
|
-
else {
|
|
282
|
-
buffer.move('down');
|
|
283
|
-
}
|
|
229
|
+
// External editor
|
|
230
|
+
const isCtrlX = key.ctrl && (key.name === 'x' || key.sequence === '\x18');
|
|
231
|
+
if (isCtrlX) {
|
|
232
|
+
buffer.openInExternalEditor();
|
|
284
233
|
return;
|
|
285
234
|
}
|
|
286
|
-
// Fallback to buffer's default input handling
|
|
235
|
+
// Fallback to the text buffer's default input handling for all other keys
|
|
287
236
|
buffer.handleInput(key);
|
|
288
237
|
}, [
|
|
289
238
|
focus,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputPrompt.js","sourceRoot":"","sources":["../../../../src/ui/components/InputPrompt.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InputPrompt.js","sourceRoot":"","sources":["../../../../src/ui/components/InputPrompt.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,20 +10,47 @@ import { vi } from 'vitest';
|
|
|
10
10
|
import { useShellHistory } from '../hooks/useShellHistory.js';
|
|
11
11
|
import { useCompletion } from '../hooks/useCompletion.js';
|
|
12
12
|
import { useInputHistory } from '../hooks/useInputHistory.js';
|
|
13
|
+
import { createMockCommandContext } from '../../test-utils/mockCommandContext.js';
|
|
13
14
|
vi.mock('../hooks/useShellHistory.js');
|
|
14
15
|
vi.mock('../hooks/useCompletion.js');
|
|
15
16
|
vi.mock('../hooks/useInputHistory.js');
|
|
17
|
+
const mockSlashCommands = [
|
|
18
|
+
{ name: 'clear', description: 'Clear screen', action: vi.fn() },
|
|
19
|
+
{
|
|
20
|
+
name: 'memory',
|
|
21
|
+
description: 'Manage memory',
|
|
22
|
+
subCommands: [
|
|
23
|
+
{ name: 'show', description: 'Show memory', action: vi.fn() },
|
|
24
|
+
{ name: 'add', description: 'Add to memory', action: vi.fn() },
|
|
25
|
+
{ name: 'refresh', description: 'Refresh memory', action: vi.fn() },
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'chat',
|
|
30
|
+
description: 'Manage chats',
|
|
31
|
+
subCommands: [
|
|
32
|
+
{
|
|
33
|
+
name: 'resume',
|
|
34
|
+
description: 'Resume a chat',
|
|
35
|
+
action: vi.fn(),
|
|
36
|
+
completion: async () => ['fix-foo', 'fix-bar'],
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
];
|
|
16
41
|
describe('InputPrompt', () => {
|
|
17
42
|
let props;
|
|
18
43
|
let mockShellHistory;
|
|
19
44
|
let mockCompletion;
|
|
20
45
|
let mockInputHistory;
|
|
21
46
|
let mockBuffer;
|
|
47
|
+
let mockCommandContext;
|
|
22
48
|
const mockedUseShellHistory = vi.mocked(useShellHistory);
|
|
23
49
|
const mockedUseCompletion = vi.mocked(useCompletion);
|
|
24
50
|
const mockedUseInputHistory = vi.mocked(useInputHistory);
|
|
25
51
|
beforeEach(() => {
|
|
26
52
|
vi.resetAllMocks();
|
|
53
|
+
mockCommandContext = createMockCommandContext();
|
|
27
54
|
mockBuffer = {
|
|
28
55
|
text: '',
|
|
29
56
|
cursor: [0, 0],
|
|
@@ -84,12 +111,14 @@ describe('InputPrompt', () => {
|
|
|
84
111
|
getTargetDir: () => '/test/project/src',
|
|
85
112
|
},
|
|
86
113
|
slashCommands: [],
|
|
114
|
+
commandContext: mockCommandContext,
|
|
87
115
|
shellModeActive: false,
|
|
88
116
|
setShellModeActive: vi.fn(),
|
|
89
117
|
inputWidth: 80,
|
|
90
118
|
suggestionsWidth: 80,
|
|
91
119
|
focus: true,
|
|
92
120
|
};
|
|
121
|
+
props.slashCommands = mockSlashCommands;
|
|
93
122
|
});
|
|
94
123
|
const wait = (ms = 50) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
95
124
|
it('should call shellHistory.getPreviousCommand on up arrow in shell mode', async () => {
|
|
@@ -150,5 +179,156 @@ describe('InputPrompt', () => {
|
|
|
150
179
|
expect(props.onSubmit).toHaveBeenCalledWith('some text');
|
|
151
180
|
unmount();
|
|
152
181
|
});
|
|
182
|
+
it('should complete a partial parent command and add a space', async () => {
|
|
183
|
+
// SCENARIO: /mem -> Tab
|
|
184
|
+
mockedUseCompletion.mockReturnValue({
|
|
185
|
+
...mockCompletion,
|
|
186
|
+
showSuggestions: true,
|
|
187
|
+
suggestions: [{ label: 'memory', value: 'memory', description: '...' }],
|
|
188
|
+
activeSuggestionIndex: 0,
|
|
189
|
+
});
|
|
190
|
+
props.buffer.setText('/mem');
|
|
191
|
+
const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
|
|
192
|
+
await wait();
|
|
193
|
+
stdin.write('\t'); // Press Tab
|
|
194
|
+
await wait();
|
|
195
|
+
expect(props.buffer.setText).toHaveBeenCalledWith('/memory ');
|
|
196
|
+
unmount();
|
|
197
|
+
});
|
|
198
|
+
it('should append a sub-command when the parent command is already complete with a space', async () => {
|
|
199
|
+
// SCENARIO: /memory -> Tab (to accept 'add')
|
|
200
|
+
mockedUseCompletion.mockReturnValue({
|
|
201
|
+
...mockCompletion,
|
|
202
|
+
showSuggestions: true,
|
|
203
|
+
suggestions: [
|
|
204
|
+
{ label: 'show', value: 'show' },
|
|
205
|
+
{ label: 'add', value: 'add' },
|
|
206
|
+
],
|
|
207
|
+
activeSuggestionIndex: 1, // 'add' is highlighted
|
|
208
|
+
});
|
|
209
|
+
props.buffer.setText('/memory ');
|
|
210
|
+
const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
|
|
211
|
+
await wait();
|
|
212
|
+
stdin.write('\t'); // Press Tab
|
|
213
|
+
await wait();
|
|
214
|
+
expect(props.buffer.setText).toHaveBeenCalledWith('/memory add ');
|
|
215
|
+
unmount();
|
|
216
|
+
});
|
|
217
|
+
it('should handle the "backspace" edge case correctly', async () => {
|
|
218
|
+
// SCENARIO: /memory -> Backspace -> /memory -> Tab (to accept 'show')
|
|
219
|
+
// This is the critical bug we fixed.
|
|
220
|
+
mockedUseCompletion.mockReturnValue({
|
|
221
|
+
...mockCompletion,
|
|
222
|
+
showSuggestions: true,
|
|
223
|
+
suggestions: [
|
|
224
|
+
{ label: 'show', value: 'show' },
|
|
225
|
+
{ label: 'add', value: 'add' },
|
|
226
|
+
],
|
|
227
|
+
activeSuggestionIndex: 0, // 'show' is highlighted
|
|
228
|
+
});
|
|
229
|
+
// The user has backspaced, so the query is now just '/memory'
|
|
230
|
+
props.buffer.setText('/memory');
|
|
231
|
+
const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
|
|
232
|
+
await wait();
|
|
233
|
+
stdin.write('\t'); // Press Tab
|
|
234
|
+
await wait();
|
|
235
|
+
// It should NOT become '/show '. It should correctly become '/memory show '.
|
|
236
|
+
expect(props.buffer.setText).toHaveBeenCalledWith('/memory show ');
|
|
237
|
+
unmount();
|
|
238
|
+
});
|
|
239
|
+
it('should complete a partial argument for a command', async () => {
|
|
240
|
+
// SCENARIO: /chat resume fi- -> Tab
|
|
241
|
+
mockedUseCompletion.mockReturnValue({
|
|
242
|
+
...mockCompletion,
|
|
243
|
+
showSuggestions: true,
|
|
244
|
+
suggestions: [{ label: 'fix-foo', value: 'fix-foo' }],
|
|
245
|
+
activeSuggestionIndex: 0,
|
|
246
|
+
});
|
|
247
|
+
props.buffer.setText('/chat resume fi-');
|
|
248
|
+
const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
|
|
249
|
+
await wait();
|
|
250
|
+
stdin.write('\t'); // Press Tab
|
|
251
|
+
await wait();
|
|
252
|
+
expect(props.buffer.setText).toHaveBeenCalledWith('/chat resume fix-foo ');
|
|
253
|
+
unmount();
|
|
254
|
+
});
|
|
255
|
+
it('should autocomplete on Enter when suggestions are active, without submitting', async () => {
|
|
256
|
+
mockedUseCompletion.mockReturnValue({
|
|
257
|
+
...mockCompletion,
|
|
258
|
+
showSuggestions: true,
|
|
259
|
+
suggestions: [{ label: 'memory', value: 'memory' }],
|
|
260
|
+
activeSuggestionIndex: 0,
|
|
261
|
+
});
|
|
262
|
+
props.buffer.setText('/mem');
|
|
263
|
+
const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
|
|
264
|
+
await wait();
|
|
265
|
+
stdin.write('\r');
|
|
266
|
+
await wait();
|
|
267
|
+
// The app should autocomplete the text, NOT submit.
|
|
268
|
+
expect(props.buffer.setText).toHaveBeenCalledWith('/memory ');
|
|
269
|
+
expect(props.onSubmit).not.toHaveBeenCalled();
|
|
270
|
+
unmount();
|
|
271
|
+
});
|
|
272
|
+
it('should complete a command based on its altName', async () => {
|
|
273
|
+
// Add a command with an altName to our mock for this test
|
|
274
|
+
props.slashCommands.push({
|
|
275
|
+
name: 'help',
|
|
276
|
+
altName: '?',
|
|
277
|
+
description: '...',
|
|
278
|
+
});
|
|
279
|
+
mockedUseCompletion.mockReturnValue({
|
|
280
|
+
...mockCompletion,
|
|
281
|
+
showSuggestions: true,
|
|
282
|
+
suggestions: [{ label: 'help', value: 'help' }],
|
|
283
|
+
activeSuggestionIndex: 0,
|
|
284
|
+
});
|
|
285
|
+
props.buffer.setText('/?');
|
|
286
|
+
const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
|
|
287
|
+
await wait();
|
|
288
|
+
stdin.write('\t'); // Press Tab
|
|
289
|
+
await wait();
|
|
290
|
+
expect(props.buffer.setText).toHaveBeenCalledWith('/help ');
|
|
291
|
+
unmount();
|
|
292
|
+
});
|
|
293
|
+
// ADD this test for defensive coverage
|
|
294
|
+
it('should not submit on Enter when the buffer is empty or only contains whitespace', async () => {
|
|
295
|
+
props.buffer.setText(' '); // Set buffer to whitespace
|
|
296
|
+
const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
|
|
297
|
+
await wait();
|
|
298
|
+
stdin.write('\r'); // Press Enter
|
|
299
|
+
await wait();
|
|
300
|
+
expect(props.onSubmit).not.toHaveBeenCalled();
|
|
301
|
+
unmount();
|
|
302
|
+
});
|
|
303
|
+
it('should submit directly on Enter when a complete leaf command is typed', async () => {
|
|
304
|
+
mockedUseCompletion.mockReturnValue({
|
|
305
|
+
...mockCompletion,
|
|
306
|
+
showSuggestions: false,
|
|
307
|
+
});
|
|
308
|
+
props.buffer.setText('/clear');
|
|
309
|
+
const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
|
|
310
|
+
await wait();
|
|
311
|
+
stdin.write('\r');
|
|
312
|
+
await wait();
|
|
313
|
+
expect(props.onSubmit).toHaveBeenCalledWith('/clear');
|
|
314
|
+
expect(props.buffer.setText).not.toHaveBeenCalledWith('/clear ');
|
|
315
|
+
unmount();
|
|
316
|
+
});
|
|
317
|
+
it('should autocomplete an @-path on Enter without submitting', async () => {
|
|
318
|
+
mockedUseCompletion.mockReturnValue({
|
|
319
|
+
...mockCompletion,
|
|
320
|
+
showSuggestions: true,
|
|
321
|
+
suggestions: [{ label: 'index.ts', value: 'index.ts' }],
|
|
322
|
+
activeSuggestionIndex: 0,
|
|
323
|
+
});
|
|
324
|
+
props.buffer.setText('@src/components/');
|
|
325
|
+
const { stdin, unmount } = render(_jsx(InputPrompt, { ...props }));
|
|
326
|
+
await wait();
|
|
327
|
+
stdin.write('\r');
|
|
328
|
+
await wait();
|
|
329
|
+
expect(props.buffer.replaceRangeByOffset).toHaveBeenCalled();
|
|
330
|
+
expect(props.onSubmit).not.toHaveBeenCalled();
|
|
331
|
+
unmount();
|
|
332
|
+
});
|
|
153
333
|
});
|
|
154
334
|
//# sourceMappingURL=InputPrompt.test.js.map
|