@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.
Files changed (80) hide show
  1. package/README.md +14 -0
  2. package/dist/google-gemini-cli-0.1.9.tgz +0 -0
  3. package/dist/package.json +2 -2
  4. package/dist/src/config/auth.js +3 -2
  5. package/dist/src/config/auth.js.map +1 -1
  6. package/dist/src/config/config.d.ts +0 -1
  7. package/dist/src/config/config.js +15 -41
  8. package/dist/src/config/config.js.map +1 -1
  9. package/dist/src/config/settings.d.ts +2 -0
  10. package/dist/src/config/settings.js +63 -1
  11. package/dist/src/config/settings.js.map +1 -1
  12. package/dist/src/gemini.js +16 -17
  13. package/dist/src/gemini.js.map +1 -1
  14. package/dist/src/generated/git-commit.d.ts +1 -1
  15. package/dist/src/generated/git-commit.js +1 -1
  16. package/dist/src/services/CommandService.d.ts +13 -0
  17. package/dist/src/services/CommandService.js +30 -0
  18. package/dist/src/services/CommandService.js.map +1 -0
  19. package/dist/src/test-utils/mockCommandContext.d.ts +18 -0
  20. package/dist/src/test-utils/mockCommandContext.js +75 -0
  21. package/dist/src/test-utils/mockCommandContext.js.map +1 -0
  22. package/dist/src/ui/App.js +8 -5
  23. package/dist/src/ui/App.js.map +1 -1
  24. package/dist/src/ui/App.test.js +1 -0
  25. package/dist/src/ui/App.test.js.map +1 -1
  26. package/dist/src/ui/commands/clearCommand.d.ts +7 -0
  27. package/dist/src/ui/commands/clearCommand.js +15 -0
  28. package/dist/src/ui/commands/clearCommand.js.map +1 -0
  29. package/dist/src/ui/commands/helpCommand.d.ts +7 -0
  30. package/dist/src/ui/commands/helpCommand.js +18 -0
  31. package/dist/src/ui/commands/helpCommand.js.map +1 -0
  32. package/dist/src/ui/commands/memoryCommand.d.ts +7 -0
  33. package/dist/src/ui/commands/memoryCommand.js +81 -0
  34. package/dist/src/ui/commands/memoryCommand.js.map +1 -0
  35. package/dist/src/ui/commands/types.d.ts +63 -0
  36. package/dist/src/ui/commands/types.js +7 -0
  37. package/dist/src/ui/commands/types.js.map +1 -0
  38. package/dist/src/ui/components/AuthDialog.js +21 -2
  39. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  40. package/dist/src/ui/components/AuthDialog.test.js +20 -3
  41. package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
  42. package/dist/src/ui/components/Help.d.ts +1 -1
  43. package/dist/src/ui/components/Help.js +3 -2
  44. package/dist/src/ui/components/Help.js.map +1 -1
  45. package/dist/src/ui/components/InputPrompt.d.ts +2 -1
  46. package/dist/src/ui/components/InputPrompt.js +106 -157
  47. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  48. package/dist/src/ui/components/InputPrompt.test.js +180 -0
  49. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  50. package/dist/src/ui/contexts/SessionContext.d.ts +1 -1
  51. package/dist/src/ui/hooks/atCommandProcessor.js +5 -7
  52. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  53. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +6 -10
  54. package/dist/src/ui/hooks/slashCommandProcessor.js +193 -124
  55. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  56. package/dist/src/ui/hooks/useCompletion.d.ts +2 -2
  57. package/dist/src/ui/hooks/useCompletion.js +106 -56
  58. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  59. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -2
  60. package/dist/src/ui/hooks/useGeminiStream.js +4 -10
  61. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  62. package/dist/src/ui/hooks/useGeminiStream.test.js +26 -44
  63. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  64. package/dist/src/ui/types.d.ts +10 -0
  65. package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +16 -0
  66. package/dist/src/ui/utils/InlineMarkdownRenderer.js +104 -0
  67. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -0
  68. package/dist/src/ui/utils/MarkdownDisplay.js +1 -80
  69. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  70. package/dist/src/ui/utils/MarkdownDisplay.test.js +35 -0
  71. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  72. package/dist/src/ui/utils/TableRenderer.js +50 -32
  73. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  74. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +1 -1
  75. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +1 -1
  76. package/dist/src/utils/userStartupWarnings.d.ts +6 -0
  77. package/dist/src/utils/userStartupWarnings.js +33 -0
  78. package/dist/src/utils/userStartupWarnings.js.map +1 -0
  79. package/dist/tsconfig.tsbuildinfo +1 -1
  80. 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 '../hooks/slashCommandProcessor.js';
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 parts = query.trimStart().substring(1).split(' ');
67
- const commandName = parts[0];
68
- const slashIndex = query.indexOf('/');
69
- const base = query.substring(0, slashIndex + 1);
70
- const command = slashCommands.find((cmd) => cmd.name === commandName);
71
- // Make sure completion isn't the original command when command.completion hasn't happened yet.
72
- if (command && command.completion && suggestion !== commandName) {
73
- const newValue = `${base}${commandName} ${suggestion}`;
74
- if (newValue === query) {
75
- handleSubmitAndClear(newValue);
76
- }
77
- else {
78
- buffer.setText(newValue);
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
- else {
82
- const newValue = base + suggestion;
83
- buffer.setText(newValue);
84
- handleSubmitAndClear(newValue);
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
- const query = buffer.text;
112
- if (key.sequence === '!' && query === '' && !completion.showSuggestions) {
118
+ if (key.sequence === '!' &&
119
+ buffer.text === '' &&
120
+ !completion.showSuggestions) {
113
121
  setShellModeActive(!shellModeActive);
114
122
  buffer.setText(''); // Clear the '!' from input
115
- return true;
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
- // Keybindings when suggestions are not shown
149
- if (key.ctrl && key.name === 'l') {
150
- onClearScreen();
151
- return;
152
- }
153
- if (key.ctrl && key.name === 'p') {
154
- inputHistory.navigateUp();
155
- return;
156
- }
157
- if (key.ctrl && key.name === 'n') {
158
- inputHistory.navigateDown();
159
- return;
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
- if (key.name === 'escape') {
162
- if (shellModeActive) {
163
- setShellModeActive(false);
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
- completion.resetCompletionState();
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
- // Ctrl+A (Home)
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
- // Ctrl+N (History Down)
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
- const isCtrlX = (key.ctrl && (key.name === 'x' || key.sequence === '\x18')) ||
207
- key.sequence === '\x18';
208
- const isCtrlEFromEditor = (key.ctrl && (key.name === 'e' || key.sequence === '\x05')) ||
209
- key.sequence === '\x05' ||
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