@google/gemini-cli 0.1.16 → 0.1.17-nightly.250806.805114ae

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 (86) hide show
  1. package/README.md +1 -1
  2. package/dist/google-gemini-cli-0.1.17.tgz +0 -0
  3. package/dist/package.json +4 -3
  4. package/dist/src/config/config.d.ts +2 -2
  5. package/dist/src/config/config.js +21 -13
  6. package/dist/src/config/config.js.map +1 -1
  7. package/dist/src/config/settings.d.ts +9 -1
  8. package/dist/src/config/settings.js +56 -7
  9. package/dist/src/config/settings.js.map +1 -1
  10. package/dist/src/generated/git-commit.d.ts +1 -1
  11. package/dist/src/generated/git-commit.js +2 -2
  12. package/dist/src/generated/git-commit.js.map +1 -1
  13. package/dist/src/nonInteractiveCli.js +21 -12
  14. package/dist/src/nonInteractiveCli.js.map +1 -1
  15. package/dist/src/ui/App.js +8 -8
  16. package/dist/src/ui/App.js.map +1 -1
  17. package/dist/src/ui/commands/directoryCommand.js +21 -1
  18. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  19. package/dist/src/ui/commands/helpCommand.js +7 -6
  20. package/dist/src/ui/commands/helpCommand.js.map +1 -1
  21. package/dist/src/ui/commands/ideCommand.js +68 -39
  22. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  23. package/dist/src/ui/commands/mcpCommand.js +15 -20
  24. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  25. package/dist/src/ui/commands/memoryCommand.js +3 -1
  26. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  27. package/dist/src/ui/commands/setupGithubCommand.js +2 -3
  28. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  29. package/dist/src/ui/commands/types.d.ts +2 -1
  30. package/dist/src/ui/commands/types.js.map +1 -1
  31. package/dist/src/ui/components/HistoryItemDisplay.d.ts +2 -0
  32. package/dist/src/ui/components/HistoryItemDisplay.js +2 -1
  33. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  34. package/dist/src/ui/components/InputPrompt.js +76 -7
  35. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  36. package/dist/src/ui/components/PrepareLabel.d.ts +15 -0
  37. package/dist/src/ui/components/PrepareLabel.js +16 -0
  38. package/dist/src/ui/components/PrepareLabel.js.map +1 -0
  39. package/dist/src/ui/components/SuggestionsDisplay.d.ts +1 -0
  40. package/dist/src/ui/components/SuggestionsDisplay.js +3 -3
  41. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  42. package/dist/src/ui/hooks/atCommandProcessor.js +11 -4
  43. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  44. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
  45. package/dist/src/ui/hooks/slashCommandProcessor.js +9 -5
  46. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  47. package/dist/src/ui/hooks/useAtCompletion.d.ts +23 -0
  48. package/dist/src/ui/hooks/useAtCompletion.js +172 -0
  49. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -0
  50. package/dist/src/ui/hooks/useCommandCompletion.d.ts +29 -0
  51. package/dist/src/ui/hooks/useCommandCompletion.js +165 -0
  52. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -0
  53. package/dist/src/ui/hooks/useCompletion.d.ts +5 -5
  54. package/dist/src/ui/hooks/useCompletion.js +7 -423
  55. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  56. package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
  57. package/dist/src/ui/hooks/useGeminiStream.js +2 -4
  58. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  59. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +1 -1
  60. package/dist/src/ui/hooks/useReactToolScheduler.js +3 -1
  61. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  62. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +19 -0
  63. package/dist/src/ui/hooks/useReverseSearchCompletion.js +56 -0
  64. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -0
  65. package/dist/src/ui/hooks/useShellHistory.d.ts +1 -0
  66. package/dist/src/ui/hooks/useShellHistory.js +30 -7
  67. package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
  68. package/dist/src/ui/hooks/useSlashCompletion.d.ts +20 -0
  69. package/dist/src/ui/hooks/useSlashCompletion.js +135 -0
  70. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -0
  71. package/dist/src/ui/hooks/vim.js +13 -4
  72. package/dist/src/ui/hooks/vim.js.map +1 -1
  73. package/dist/src/ui/types.d.ts +10 -1
  74. package/dist/src/ui/types.js +1 -0
  75. package/dist/src/ui/types.js.map +1 -1
  76. package/dist/src/ui/utils/ConsolePatcher.d.ts +2 -1
  77. package/dist/src/ui/utils/ConsolePatcher.js +15 -8
  78. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  79. package/dist/src/utils/handleAutoUpdate.js +3 -0
  80. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  81. package/dist/src/utils/resolvePath.d.ts +6 -0
  82. package/dist/src/utils/resolvePath.js +21 -0
  83. package/dist/src/utils/resolvePath.js.map +1 -0
  84. package/dist/tsconfig.tsbuildinfo +1 -1
  85. package/package.json +4 -3
  86. package/dist/google-gemini-cli-0.1.15.tgz +0 -0
@@ -3,26 +3,15 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { useState, useEffect, useCallback, useMemo, useRef } from 'react';
7
- import * as fs from 'fs/promises';
8
- import * as path from 'path';
9
- import { glob } from 'glob';
10
- import { isNodeError, escapePath, unescapePath, getErrorMessage, DEFAULT_FILE_FILTERING_OPTIONS, } from '@google/gemini-cli-core';
6
+ import { useState, useCallback } from 'react';
11
7
  import { MAX_SUGGESTIONS_TO_SHOW, } from '../components/SuggestionsDisplay.js';
12
- import { logicalPosToOffset, } from '../components/shared/text-buffer.js';
13
- import { isSlashCommand } from '../utils/commandUtils.js';
14
- import { toCodePoints } from '../utils/textUtils.js';
15
- export function useCompletion(buffer, dirs, cwd, slashCommands, commandContext, config) {
8
+ export function useCompletion() {
16
9
  const [suggestions, setSuggestions] = useState([]);
17
10
  const [activeSuggestionIndex, setActiveSuggestionIndex] = useState(-1);
18
11
  const [visibleStartIndex, setVisibleStartIndex] = useState(0);
19
12
  const [showSuggestions, setShowSuggestions] = useState(false);
20
13
  const [isLoadingSuggestions, setIsLoadingSuggestions] = useState(false);
21
14
  const [isPerfectMatch, setIsPerfectMatch] = useState(false);
22
- const completionStart = useRef(-1);
23
- const completionEnd = useRef(-1);
24
- const cursorRow = buffer.cursor[0];
25
- const cursorCol = buffer.cursor[1];
26
15
  const resetCompletionState = useCallback(() => {
27
16
  setSuggestions([]);
28
17
  setActiveSuggestionIndex(-1);
@@ -78,414 +67,6 @@ export function useCompletion(buffer, dirs, cwd, slashCommands, commandContext,
78
67
  return newActiveIndex;
79
68
  });
80
69
  }, [suggestions.length]);
81
- // Check if cursor is after @ or / without unescaped spaces
82
- const commandIndex = useMemo(() => {
83
- const currentLine = buffer.lines[cursorRow] || '';
84
- if (cursorRow === 0 && isSlashCommand(currentLine.trim())) {
85
- return currentLine.indexOf('/');
86
- }
87
- // For other completions like '@', we search backwards from the cursor.
88
- const codePoints = toCodePoints(currentLine);
89
- for (let i = cursorCol - 1; i >= 0; i--) {
90
- const char = codePoints[i];
91
- if (char === ' ') {
92
- // Check for unescaped spaces.
93
- let backslashCount = 0;
94
- for (let j = i - 1; j >= 0 && codePoints[j] === '\\'; j--) {
95
- backslashCount++;
96
- }
97
- if (backslashCount % 2 === 0) {
98
- return -1; // Inactive on unescaped space.
99
- }
100
- }
101
- else if (char === '@') {
102
- // Active if we find an '@' before any unescaped space.
103
- return i;
104
- }
105
- }
106
- return -1;
107
- }, [cursorRow, cursorCol, buffer.lines]);
108
- useEffect(() => {
109
- if (commandIndex === -1) {
110
- resetCompletionState();
111
- return;
112
- }
113
- const currentLine = buffer.lines[cursorRow] || '';
114
- const codePoints = toCodePoints(currentLine);
115
- if (codePoints[commandIndex] === '/') {
116
- // Always reset perfect match at the beginning of processing.
117
- setIsPerfectMatch(false);
118
- const fullPath = currentLine.substring(commandIndex + 1);
119
- const hasTrailingSpace = currentLine.endsWith(' ');
120
- // Get all non-empty parts of the command.
121
- const rawParts = fullPath.split(/\s+/).filter((p) => p);
122
- let commandPathParts = rawParts;
123
- let partial = '';
124
- // If there's no trailing space, the last part is potentially a partial segment.
125
- // We tentatively separate it.
126
- if (!hasTrailingSpace && rawParts.length > 0) {
127
- partial = rawParts[rawParts.length - 1];
128
- commandPathParts = rawParts.slice(0, -1);
129
- }
130
- // Traverse the Command Tree using the tentative completed path
131
- let currentLevel = slashCommands;
132
- let leafCommand = null;
133
- for (const part of commandPathParts) {
134
- if (!currentLevel) {
135
- leafCommand = null;
136
- currentLevel = [];
137
- break;
138
- }
139
- const found = currentLevel.find((cmd) => cmd.name === part || cmd.altNames?.includes(part));
140
- if (found) {
141
- leafCommand = found;
142
- currentLevel = found.subCommands;
143
- }
144
- else {
145
- leafCommand = null;
146
- currentLevel = [];
147
- break;
148
- }
149
- }
150
- let exactMatchAsParent;
151
- // Handle the Ambiguous Case
152
- if (!hasTrailingSpace && currentLevel) {
153
- exactMatchAsParent = currentLevel.find((cmd) => (cmd.name === partial || cmd.altNames?.includes(partial)) &&
154
- cmd.subCommands);
155
- if (exactMatchAsParent) {
156
- // It's a perfect match for a parent command. Override our initial guess.
157
- // Treat it as a completed command path.
158
- leafCommand = exactMatchAsParent;
159
- currentLevel = exactMatchAsParent.subCommands;
160
- partial = ''; // We now want to suggest ALL of its sub-commands.
161
- }
162
- }
163
- // Check for perfect, executable match
164
- if (!hasTrailingSpace) {
165
- if (leafCommand && partial === '' && leafCommand.action) {
166
- // Case: /command<enter> - command has action, no sub-commands were suggested
167
- setIsPerfectMatch(true);
168
- }
169
- else if (currentLevel) {
170
- // Case: /command subcommand<enter>
171
- const perfectMatch = currentLevel.find((cmd) => (cmd.name === partial || cmd.altNames?.includes(partial)) &&
172
- cmd.action);
173
- if (perfectMatch) {
174
- setIsPerfectMatch(true);
175
- }
176
- }
177
- }
178
- const depth = commandPathParts.length;
179
- const isArgumentCompletion = leafCommand?.completion &&
180
- (hasTrailingSpace ||
181
- (rawParts.length > depth && depth > 0 && partial !== ''));
182
- // Set completion range
183
- if (hasTrailingSpace || exactMatchAsParent) {
184
- completionStart.current = currentLine.length;
185
- completionEnd.current = currentLine.length;
186
- }
187
- else if (partial) {
188
- if (isArgumentCompletion) {
189
- const commandSoFar = `/${commandPathParts.join(' ')}`;
190
- const argStartIndex = commandSoFar.length + (commandPathParts.length > 0 ? 1 : 0);
191
- completionStart.current = argStartIndex;
192
- }
193
- else {
194
- completionStart.current = currentLine.length - partial.length;
195
- }
196
- completionEnd.current = currentLine.length;
197
- }
198
- else {
199
- // e.g. /
200
- completionStart.current = commandIndex + 1;
201
- completionEnd.current = currentLine.length;
202
- }
203
- // Provide Suggestions based on the now-corrected context
204
- if (isArgumentCompletion) {
205
- const fetchAndSetSuggestions = async () => {
206
- setIsLoadingSuggestions(true);
207
- const argString = rawParts.slice(depth).join(' ');
208
- const results = (await leafCommand.completion(commandContext, argString)) || [];
209
- const finalSuggestions = results.map((s) => ({ label: s, value: s }));
210
- setSuggestions(finalSuggestions);
211
- setShowSuggestions(finalSuggestions.length > 0);
212
- setActiveSuggestionIndex(finalSuggestions.length > 0 ? 0 : -1);
213
- setIsLoadingSuggestions(false);
214
- };
215
- fetchAndSetSuggestions();
216
- return;
217
- }
218
- // Command/Sub-command Completion
219
- const commandsToSearch = currentLevel || [];
220
- if (commandsToSearch.length > 0) {
221
- let potentialSuggestions = commandsToSearch.filter((cmd) => cmd.description &&
222
- (cmd.name.startsWith(partial) ||
223
- cmd.altNames?.some((alt) => alt.startsWith(partial))));
224
- // If a user's input is an exact match and it is a leaf command,
225
- // enter should submit immediately.
226
- if (potentialSuggestions.length > 0 && !hasTrailingSpace) {
227
- const perfectMatch = potentialSuggestions.find((s) => s.name === partial || s.altNames?.includes(partial));
228
- if (perfectMatch && perfectMatch.action) {
229
- potentialSuggestions = [];
230
- }
231
- }
232
- const finalSuggestions = potentialSuggestions.map((cmd) => ({
233
- label: cmd.name,
234
- value: cmd.name,
235
- description: cmd.description,
236
- }));
237
- setSuggestions(finalSuggestions);
238
- setShowSuggestions(finalSuggestions.length > 0);
239
- setActiveSuggestionIndex(finalSuggestions.length > 0 ? 0 : -1);
240
- setIsLoadingSuggestions(false);
241
- return;
242
- }
243
- // If we fall through, no suggestions are available.
244
- resetCompletionState();
245
- return;
246
- }
247
- // Handle At Command Completion
248
- completionEnd.current = codePoints.length;
249
- for (let i = cursorCol; i < codePoints.length; i++) {
250
- if (codePoints[i] === ' ') {
251
- let backslashCount = 0;
252
- for (let j = i - 1; j >= 0 && codePoints[j] === '\\'; j--) {
253
- backslashCount++;
254
- }
255
- if (backslashCount % 2 === 0) {
256
- completionEnd.current = i;
257
- break;
258
- }
259
- }
260
- }
261
- const pathStart = commandIndex + 1;
262
- const partialPath = currentLine.substring(pathStart, completionEnd.current);
263
- const lastSlashIndex = partialPath.lastIndexOf('/');
264
- completionStart.current =
265
- lastSlashIndex === -1 ? pathStart : pathStart + lastSlashIndex + 1;
266
- const baseDirRelative = lastSlashIndex === -1
267
- ? '.'
268
- : partialPath.substring(0, lastSlashIndex + 1);
269
- const prefix = unescapePath(lastSlashIndex === -1
270
- ? partialPath
271
- : partialPath.substring(lastSlashIndex + 1));
272
- let isMounted = true;
273
- const findFilesRecursively = async (startDir, searchPrefix, fileDiscovery, filterOptions, currentRelativePath = '', depth = 0, maxDepth = 10, // Limit recursion depth
274
- maxResults = 50) => {
275
- if (depth > maxDepth) {
276
- return [];
277
- }
278
- const lowerSearchPrefix = searchPrefix.toLowerCase();
279
- let foundSuggestions = [];
280
- try {
281
- const entries = await fs.readdir(startDir, { withFileTypes: true });
282
- for (const entry of entries) {
283
- if (foundSuggestions.length >= maxResults)
284
- break;
285
- const entryPathRelative = path.join(currentRelativePath, entry.name);
286
- const entryPathFromRoot = path.relative(startDir, path.join(startDir, entry.name));
287
- // Conditionally ignore dotfiles
288
- if (!searchPrefix.startsWith('.') && entry.name.startsWith('.')) {
289
- continue;
290
- }
291
- // Check if this entry should be ignored by filtering options
292
- if (fileDiscovery &&
293
- fileDiscovery.shouldIgnoreFile(entryPathFromRoot, filterOptions)) {
294
- continue;
295
- }
296
- if (entry.name.toLowerCase().startsWith(lowerSearchPrefix)) {
297
- foundSuggestions.push({
298
- label: entryPathRelative + (entry.isDirectory() ? '/' : ''),
299
- value: escapePath(entryPathRelative + (entry.isDirectory() ? '/' : '')),
300
- });
301
- }
302
- if (entry.isDirectory() &&
303
- entry.name !== 'node_modules' &&
304
- !entry.name.startsWith('.')) {
305
- if (foundSuggestions.length < maxResults) {
306
- foundSuggestions = foundSuggestions.concat(await findFilesRecursively(path.join(startDir, entry.name), searchPrefix, // Pass original searchPrefix for recursive calls
307
- fileDiscovery, filterOptions, entryPathRelative, depth + 1, maxDepth, maxResults - foundSuggestions.length));
308
- }
309
- }
310
- }
311
- }
312
- catch (_err) {
313
- // Ignore errors like permission denied or ENOENT during recursive search
314
- }
315
- return foundSuggestions.slice(0, maxResults);
316
- };
317
- const findFilesWithGlob = async (searchPrefix, fileDiscoveryService, filterOptions, searchDir, maxResults = 50) => {
318
- const globPattern = `**/${searchPrefix}*`;
319
- const files = await glob(globPattern, {
320
- cwd: searchDir,
321
- dot: searchPrefix.startsWith('.'),
322
- nocase: true,
323
- });
324
- const suggestions = files
325
- .filter((file) => {
326
- if (fileDiscoveryService) {
327
- return !fileDiscoveryService.shouldIgnoreFile(file, filterOptions);
328
- }
329
- return true;
330
- })
331
- .map((file) => {
332
- const absolutePath = path.resolve(searchDir, file);
333
- const label = path.relative(cwd, absolutePath);
334
- return {
335
- label,
336
- value: escapePath(label),
337
- };
338
- })
339
- .slice(0, maxResults);
340
- return suggestions;
341
- };
342
- const fetchSuggestions = async () => {
343
- setIsLoadingSuggestions(true);
344
- let fetchedSuggestions = [];
345
- const fileDiscoveryService = config ? config.getFileService() : null;
346
- const enableRecursiveSearch = config?.getEnableRecursiveFileSearch() ?? true;
347
- const filterOptions = config?.getFileFilteringOptions() ?? DEFAULT_FILE_FILTERING_OPTIONS;
348
- try {
349
- // If there's no slash, or it's the root, do a recursive search from workspace directories
350
- for (const dir of dirs) {
351
- let fetchedSuggestionsPerDir = [];
352
- if (partialPath.indexOf('/') === -1 &&
353
- prefix &&
354
- enableRecursiveSearch) {
355
- if (fileDiscoveryService) {
356
- fetchedSuggestionsPerDir = await findFilesWithGlob(prefix, fileDiscoveryService, filterOptions, dir);
357
- }
358
- else {
359
- fetchedSuggestionsPerDir = await findFilesRecursively(dir, prefix, null, filterOptions);
360
- }
361
- }
362
- else {
363
- // Original behavior: list files in the specific directory
364
- const lowerPrefix = prefix.toLowerCase();
365
- const baseDirAbsolute = path.resolve(dir, baseDirRelative);
366
- const entries = await fs.readdir(baseDirAbsolute, {
367
- withFileTypes: true,
368
- });
369
- // Filter entries using git-aware filtering
370
- const filteredEntries = [];
371
- for (const entry of entries) {
372
- // Conditionally ignore dotfiles
373
- if (!prefix.startsWith('.') && entry.name.startsWith('.')) {
374
- continue;
375
- }
376
- if (!entry.name.toLowerCase().startsWith(lowerPrefix))
377
- continue;
378
- const relativePath = path.relative(dir, path.join(baseDirAbsolute, entry.name));
379
- if (fileDiscoveryService &&
380
- fileDiscoveryService.shouldIgnoreFile(relativePath, filterOptions)) {
381
- continue;
382
- }
383
- filteredEntries.push(entry);
384
- }
385
- fetchedSuggestionsPerDir = filteredEntries.map((entry) => {
386
- const absolutePath = path.resolve(baseDirAbsolute, entry.name);
387
- const label = cwd === dir ? entry.name : path.relative(cwd, absolutePath);
388
- const suggestionLabel = entry.isDirectory() ? label + '/' : label;
389
- return {
390
- label: suggestionLabel,
391
- value: escapePath(suggestionLabel),
392
- };
393
- });
394
- }
395
- fetchedSuggestions = [
396
- ...fetchedSuggestions,
397
- ...fetchedSuggestionsPerDir,
398
- ];
399
- }
400
- // Like glob, we always return forwardslashes, even in windows.
401
- fetchedSuggestions = fetchedSuggestions.map((suggestion) => ({
402
- ...suggestion,
403
- label: suggestion.label.replace(/\\/g, '/'),
404
- value: suggestion.value.replace(/\\/g, '/'),
405
- }));
406
- // Sort by depth, then directories first, then alphabetically
407
- fetchedSuggestions.sort((a, b) => {
408
- const depthA = (a.label.match(/\//g) || []).length;
409
- const depthB = (b.label.match(/\//g) || []).length;
410
- if (depthA !== depthB) {
411
- return depthA - depthB;
412
- }
413
- const aIsDir = a.label.endsWith('/');
414
- const bIsDir = b.label.endsWith('/');
415
- if (aIsDir && !bIsDir)
416
- return -1;
417
- if (!aIsDir && bIsDir)
418
- return 1;
419
- // exclude extension when comparing
420
- const filenameA = a.label.substring(0, a.label.length - path.extname(a.label).length);
421
- const filenameB = b.label.substring(0, b.label.length - path.extname(b.label).length);
422
- return (filenameA.localeCompare(filenameB) || a.label.localeCompare(b.label));
423
- });
424
- if (isMounted) {
425
- setSuggestions(fetchedSuggestions);
426
- setShowSuggestions(fetchedSuggestions.length > 0);
427
- setActiveSuggestionIndex(fetchedSuggestions.length > 0 ? 0 : -1);
428
- setVisibleStartIndex(0);
429
- }
430
- }
431
- catch (error) {
432
- if (isNodeError(error) && error.code === 'ENOENT') {
433
- if (isMounted) {
434
- setSuggestions([]);
435
- setShowSuggestions(false);
436
- }
437
- }
438
- else {
439
- console.error(`Error fetching completion suggestions for ${partialPath}: ${getErrorMessage(error)}`);
440
- if (isMounted) {
441
- resetCompletionState();
442
- }
443
- }
444
- }
445
- if (isMounted) {
446
- setIsLoadingSuggestions(false);
447
- }
448
- };
449
- const debounceTimeout = setTimeout(fetchSuggestions, 100);
450
- return () => {
451
- isMounted = false;
452
- clearTimeout(debounceTimeout);
453
- };
454
- }, [
455
- buffer.text,
456
- cursorRow,
457
- cursorCol,
458
- buffer.lines,
459
- dirs,
460
- cwd,
461
- commandIndex,
462
- resetCompletionState,
463
- slashCommands,
464
- commandContext,
465
- config,
466
- ]);
467
- const handleAutocomplete = useCallback((indexToUse) => {
468
- if (indexToUse < 0 || indexToUse >= suggestions.length) {
469
- return;
470
- }
471
- const suggestion = suggestions[indexToUse].value;
472
- if (completionStart.current === -1 || completionEnd.current === -1) {
473
- return;
474
- }
475
- const isSlash = (buffer.lines[cursorRow] || '')[commandIndex] === '/';
476
- let suggestionText = suggestion;
477
- if (isSlash) {
478
- // If we are inserting (not replacing), and the preceding character is not a space, add one.
479
- if (completionStart.current === completionEnd.current &&
480
- completionStart.current > commandIndex + 1 &&
481
- (buffer.lines[cursorRow] || '')[completionStart.current - 1] !== ' ') {
482
- suggestionText = ' ' + suggestionText;
483
- }
484
- suggestionText += ' ';
485
- }
486
- buffer.replaceRangeByOffset(logicalPosToOffset(buffer.lines, cursorRow, completionStart.current), logicalPosToOffset(buffer.lines, cursorRow, completionEnd.current), suggestionText);
487
- resetCompletionState();
488
- }, [cursorRow, resetCompletionState, buffer, suggestions, commandIndex]);
489
70
  return {
490
71
  suggestions,
491
72
  activeSuggestionIndex,
@@ -493,12 +74,15 @@ export function useCompletion(buffer, dirs, cwd, slashCommands, commandContext,
493
74
  showSuggestions,
494
75
  isLoadingSuggestions,
495
76
  isPerfectMatch,
496
- setActiveSuggestionIndex,
77
+ setSuggestions,
497
78
  setShowSuggestions,
79
+ setActiveSuggestionIndex,
80
+ setVisibleStartIndex,
81
+ setIsLoadingSuggestions,
82
+ setIsPerfectMatch,
498
83
  resetCompletionState,
499
84
  navigateUp,
500
85
  navigateDown,
501
- handleAutocomplete,
502
86
  };
503
87
  }
504
88
  //# sourceMappingURL=useCompletion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCompletion.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useCompletion.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,UAAU,EACV,YAAY,EACZ,eAAe,EAGf,8BAA8B,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,uBAAuB,GAExB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,kBAAkB,GAEnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAiBrD,MAAM,UAAU,aAAa,CAC3B,MAAkB,EAClB,IAAuB,EACvB,GAAW,EACX,aAAsC,EACtC,cAA8B,EAC9B,MAAe;IAEf,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GACrD,QAAQ,CAAS,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IACvE,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GACnD,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC3B,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5C,cAAc,CAAC,EAAE,CAAC,CAAC;QACnB,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACxB,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1B,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC/B,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAErC,wBAAwB,CAAC,CAAC,eAAe,EAAE,EAAE;YAC3C,mDAAmD;YACnD,MAAM,cAAc,GAClB,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC;YAEtE,uDAAuD;YACvD,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,EAAE;gBACxC,0CAA0C;gBAC1C,IACE,cAAc,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC;oBACzC,WAAW,CAAC,MAAM,GAAG,uBAAuB,EAC5C,CAAC;oBACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,uBAAuB,CAAC,CAAC;gBACnE,CAAC;gBACD,oDAAoD;gBACpD,IAAI,cAAc,GAAG,gBAAgB,EAAE,CAAC;oBACtC,OAAO,cAAc,CAAC;gBACxB,CAAC;gBACD,8CAA8C;gBAC9C,OAAO,gBAAgB,CAAC;YAC1B,CAAC,CAAC,CAAC;YAEH,OAAO,cAAc,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzB,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAErC,wBAAwB,CAAC,CAAC,eAAe,EAAE,EAAE;YAC3C,mDAAmD;YACnD,MAAM,cAAc,GAClB,eAAe,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC;YAEtE,uDAAuD;YACvD,oBAAoB,CAAC,CAAC,gBAAgB,EAAE,EAAE;gBACxC,2CAA2C;gBAC3C,IACE,cAAc,KAAK,CAAC;oBACpB,WAAW,CAAC,MAAM,GAAG,uBAAuB,EAC5C,CAAC;oBACD,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,oDAAoD;gBACpD,MAAM,eAAe,GAAG,gBAAgB,GAAG,uBAAuB,CAAC;gBACnE,IAAI,cAAc,IAAI,eAAe,EAAE,CAAC;oBACtC,OAAO,cAAc,GAAG,uBAAuB,GAAG,CAAC,CAAC;gBACtD,CAAC;gBACD,8CAA8C;gBAC9C,OAAO,gBAAgB,CAAC;YAC1B,CAAC,CAAC,CAAC;YAEH,OAAO,cAAc,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzB,2DAA2D;IAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,SAAS,KAAK,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1D,OAAO,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,uEAAuE;QAEvE,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAE3B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,8BAA8B;gBAC9B,IAAI,cAAc,GAAG,CAAC,CAAC;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1D,cAAc,EAAE,CAAC;gBACnB,CAAC;gBACD,IAAI,cAAc,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7B,OAAO,CAAC,CAAC,CAAC,CAAC,+BAA+B;gBAC5C,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,uDAAuD;gBACvD,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;YACxB,oBAAoB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QAE7C,IAAI,UAAU,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE,CAAC;YACrC,6DAA6D;YAC7D,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAEzB,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YACzD,MAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAEnD,0CAA0C;YAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAExD,IAAI,gBAAgB,GAAG,QAAQ,CAAC;YAChC,IAAI,OAAO,GAAG,EAAE,CAAC;YAEjB,gFAAgF;YAChF,8BAA8B;YAC9B,IAAI,CAAC,gBAAgB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACxC,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;YAED,+DAA+D;YAC/D,IAAI,YAAY,GAAwC,aAAa,CAAC;YACtE,IAAI,WAAW,GAAwB,IAAI,CAAC;YAE5C,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;gBACpC,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,WAAW,GAAG,IAAI,CAAC;oBACnB,YAAY,GAAG,EAAE,CAAC;oBAClB,MAAM;gBACR,CAAC;gBACD,MAAM,KAAK,GAA6B,YAAY,CAAC,IAAI,CACvD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAC3D,CAAC;gBACF,IAAI,KAAK,EAAE,CAAC;oBACV,WAAW,GAAG,KAAK,CAAC;oBACpB,YAAY,GAAG,KAAK,CAAC,WAER,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,WAAW,GAAG,IAAI,CAAC;oBACnB,YAAY,GAAG,EAAE,CAAC;oBAClB,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,kBAA4C,CAAC;YACjD,4BAA4B;YAC5B,IAAI,CAAC,gBAAgB,IAAI,YAAY,EAAE,CAAC;gBACtC,kBAAkB,GAAG,YAAY,CAAC,IAAI,CACpC,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACzD,GAAG,CAAC,WAAW,CAClB,CAAC;gBAEF,IAAI,kBAAkB,EAAE,CAAC;oBACvB,yEAAyE;oBACzE,wCAAwC;oBACxC,WAAW,GAAG,kBAAkB,CAAC;oBACjC,YAAY,GAAG,kBAAkB,CAAC,WAAW,CAAC;oBAC9C,OAAO,GAAG,EAAE,CAAC,CAAC,kDAAkD;gBAClE,CAAC;YACH,CAAC;YAED,sCAAsC;YACtC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,WAAW,IAAI,OAAO,KAAK,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;oBACxD,6EAA6E;oBAC7E,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;qBAAM,IAAI,YAAY,EAAE,CAAC;oBACxB,mCAAmC;oBACnC,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CACpC,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;wBACzD,GAAG,CAAC,MAAM,CACb,CAAC;oBACF,IAAI,YAAY,EAAE,CAAC;wBACjB,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAC1B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC;YACtC,MAAM,oBAAoB,GACxB,WAAW,EAAE,UAAU;gBACvB,CAAC,gBAAgB;oBACf,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;YAE9D,uBAAuB;YACvB,IAAI,gBAAgB,IAAI,kBAAkB,EAAE,CAAC;gBAC3C,eAAe,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC;gBAC7C,aAAa,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC;YAC7C,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACnB,IAAI,oBAAoB,EAAE,CAAC;oBACzB,MAAM,YAAY,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtD,MAAM,aAAa,GACjB,YAAY,CAAC,MAAM,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9D,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC;gBAC1C,CAAC;qBAAM,CAAC;oBACN,eAAe,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAChE,CAAC;gBACD,aAAa,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,SAAS;gBACT,eAAe,CAAC,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC;gBAC3C,aAAa,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC;YAC7C,CAAC;YAED,yDAAyD;YACzD,IAAI,oBAAoB,EAAE,CAAC;gBACzB,MAAM,sBAAsB,GAAG,KAAK,IAAI,EAAE;oBACxC,uBAAuB,CAAC,IAAI,CAAC,CAAC;oBAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClD,MAAM,OAAO,GACX,CAAC,MAAM,WAAY,CAAC,UAAW,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;oBACpE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACtE,cAAc,CAAC,gBAAgB,CAAC,CAAC;oBACjC,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAChD,wBAAwB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/D,uBAAuB,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC,CAAC;gBACF,sBAAsB,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,iCAAiC;YACjC,MAAM,gBAAgB,GAAG,YAAY,IAAI,EAAE,CAAC;YAC5C,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,IAAI,oBAAoB,GAAG,gBAAgB,CAAC,MAAM,CAChD,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,WAAW;oBACf,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;wBAC3B,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAC1D,CAAC;gBAEF,gEAAgE;gBAChE,mCAAmC;gBACnC,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACzD,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAC3D,CAAC;oBACF,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;wBACxC,oBAAoB,GAAG,EAAE,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBAED,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC1D,KAAK,EAAE,GAAG,CAAC,IAAI;oBACf,KAAK,EAAE,GAAG,CAAC,IAAI;oBACf,WAAW,EAAE,GAAG,CAAC,WAAW;iBAC7B,CAAC,CAAC,CAAC;gBAEJ,cAAc,CAAC,gBAAgB,CAAC,CAAC;gBACjC,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAChD,wBAAwB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,uBAAuB,CAAC,KAAK,CAAC,CAAC;gBAC/B,OAAO;YACT,CAAC;YAED,oDAAoD;YACpD,oBAAoB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,+BAA+B;QAC/B,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC1B,IAAI,cAAc,GAAG,CAAC,CAAC;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1D,cAAc,EAAE,CAAC;gBACnB,CAAC;gBAED,IAAI,cAAc,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7B,aAAa,CAAC,OAAO,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC;QACnC,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5E,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpD,eAAe,CAAC,OAAO;YACrB,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,cAAc,GAAG,CAAC,CAAC;QACrE,MAAM,eAAe,GACnB,cAAc,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,YAAY,CACzB,cAAc,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,CAC9C,CAAC;QAEF,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,MAAM,oBAAoB,GAAG,KAAK,EAChC,QAAgB,EAChB,YAAoB,EACpB,aAA0C,EAC1C,aAGC,EACD,mBAAmB,GAAG,EAAE,EACxB,KAAK,GAAG,CAAC,EACT,QAAQ,GAAG,EAAE,EAAE,wBAAwB;QACvC,UAAU,GAAG,EAAE,EACQ,EAAE;YACzB,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACrB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,iBAAiB,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;YACrD,IAAI,gBAAgB,GAAiB,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,gBAAgB,CAAC,MAAM,IAAI,UAAU;wBAAE,MAAM;oBAEjD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBACrE,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CACrC,QAAQ,EACR,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAChC,CAAC;oBAEF,gCAAgC;oBAChC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBAChE,SAAS;oBACX,CAAC;oBAED,6DAA6D;oBAC7D,IACE,aAAa;wBACb,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,aAAa,CAAC,EAChE,CAAC;wBACD,SAAS;oBACX,CAAC;oBAED,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;wBAC3D,gBAAgB,CAAC,IAAI,CAAC;4BACpB,KAAK,EAAE,iBAAiB,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC3D,KAAK,EAAE,UAAU,CACf,iBAAiB,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACrD;yBACF,CAAC,CAAC;oBACL,CAAC;oBACD,IACE,KAAK,CAAC,WAAW,EAAE;wBACnB,KAAK,CAAC,IAAI,KAAK,cAAc;wBAC7B,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAC3B,CAAC;wBACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;4BACzC,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CACxC,MAAM,oBAAoB,CACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAC/B,YAAY,EAAE,iDAAiD;4BAC/D,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,KAAK,GAAG,CAAC,EACT,QAAQ,EACR,UAAU,GAAG,gBAAgB,CAAC,MAAM,CACrC,CACF,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,IAAI,EAAE,CAAC;gBACd,yEAAyE;YAC3E,CAAC;YACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,MAAM,iBAAiB,GAAG,KAAK,EAC7B,YAAoB,EACpB,oBAA0C,EAC1C,aAGC,EACD,SAAiB,EACjB,UAAU,GAAG,EAAE,EACQ,EAAE;YACzB,MAAM,WAAW,GAAG,MAAM,YAAY,GAAG,CAAC;YAC1C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;gBACpC,GAAG,EAAE,SAAS;gBACd,GAAG,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;gBACjC,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YAEH,MAAM,WAAW,GAAiB,KAAK;iBACpC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,oBAAoB,EAAE,CAAC;oBACzB,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBACrE,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;iBACD,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE;gBACpB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACnD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;gBAC/C,OAAO;oBACL,KAAK;oBACL,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;iBACzB,CAAC;YACJ,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAExB,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;YAClC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,kBAAkB,GAAiB,EAAE,CAAC;YAE1C,MAAM,oBAAoB,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACrE,MAAM,qBAAqB,GACzB,MAAM,EAAE,4BAA4B,EAAE,IAAI,IAAI,CAAC;YACjD,MAAM,aAAa,GACjB,MAAM,EAAE,uBAAuB,EAAE,IAAI,8BAA8B,CAAC;YAEtE,IAAI,CAAC;gBACH,0FAA0F;gBAC1F,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,IAAI,wBAAwB,GAAiB,EAAE,CAAC;oBAChD,IACE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC/B,MAAM;wBACN,qBAAqB,EACrB,CAAC;wBACD,IAAI,oBAAoB,EAAE,CAAC;4BACzB,wBAAwB,GAAG,MAAM,iBAAiB,CAChD,MAAM,EACN,oBAAoB,EACpB,aAAa,EACb,GAAG,CACJ,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BACN,wBAAwB,GAAG,MAAM,oBAAoB,CACnD,GAAG,EACH,MAAM,EACN,IAAI,EACJ,aAAa,CACd,CAAC;wBACJ,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,0DAA0D;wBAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;wBACzC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;wBAC3D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE;4BAChD,aAAa,EAAE,IAAI;yBACpB,CAAC,CAAC;wBAEH,2CAA2C;wBAC3C,MAAM,eAAe,GAAG,EAAE,CAAC;wBAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;4BAC5B,gCAAgC;4BAChC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gCAC1D,SAAS;4BACX,CAAC;4BACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;gCAAE,SAAS;4BAEhE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAChC,GAAG,EACH,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,CACvC,CAAC;4BACF,IACE,oBAAoB;gCACpB,oBAAoB,CAAC,gBAAgB,CACnC,YAAY,EACZ,aAAa,CACd,EACD,CAAC;gCACD,SAAS;4BACX,CAAC;4BAED,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC9B,CAAC;wBAED,wBAAwB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;4BACvD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC/D,MAAM,KAAK,GACT,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;4BAC9D,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;4BAClE,OAAO;gCACL,KAAK,EAAE,eAAe;gCACtB,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC;6BACnC,CAAC;wBACJ,CAAC,CAAC,CAAC;oBACL,CAAC;oBACD,kBAAkB,GAAG;wBACnB,GAAG,kBAAkB;wBACrB,GAAG,wBAAwB;qBAC5B,CAAC;gBACJ,CAAC;gBAED,+DAA+D;gBAC/D,kBAAkB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBAC3D,GAAG,UAAU;oBACb,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;oBAC3C,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;iBAC5C,CAAC,CAAC,CAAC;gBAEJ,6DAA6D;gBAC7D,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;oBACnD,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;oBAEnD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;wBACtB,OAAO,MAAM,GAAG,MAAM,CAAC;oBACzB,CAAC;oBAED,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACrC,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACrC,IAAI,MAAM,IAAI,CAAC,MAAM;wBAAE,OAAO,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,MAAM,IAAI,MAAM;wBAAE,OAAO,CAAC,CAAC;oBAEhC,mCAAmC;oBACnC,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CACjC,CAAC,EACD,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAC9C,CAAC;oBACF,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CACjC,CAAC,EACD,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAC9C,CAAC;oBAEF,OAAO,CACL,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CACrE,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,IAAI,SAAS,EAAE,CAAC;oBACd,cAAc,CAAC,kBAAkB,CAAC,CAAC;oBACnC,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAClD,wBAAwB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjE,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAClD,IAAI,SAAS,EAAE,CAAC;wBACd,cAAc,CAAC,EAAE,CAAC,CAAC;wBACnB,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CACX,6CAA6C,WAAW,KAAK,eAAe,CAAC,KAAK,CAAC,EAAE,CACtF,CAAC;oBACF,IAAI,SAAS,EAAE,CAAC;wBACd,oBAAoB,EAAE,CAAC;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,SAAS,EAAE,CAAC;gBACd,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAE1D,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,KAAK,CAAC;YAClB,YAAY,CAAC,eAAe,CAAC,CAAC;QAChC,CAAC,CAAC;IACJ,CAAC,EAAE;QACD,MAAM,CAAC,IAAI;QACX,SAAS;QACT,SAAS;QACT,MAAM,CAAC,KAAK;QACZ,IAAI;QACJ,GAAG;QACH,YAAY;QACZ,oBAAoB;QACpB,aAAa;QACb,cAAc;QACd,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,UAAkB,EAAE,EAAE;QACrB,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvD,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QAEjD,IAAI,eAAe,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YACnE,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC;QACtE,IAAI,cAAc,GAAG,UAAU,CAAC;QAChC,IAAI,OAAO,EAAE,CAAC;YACZ,4FAA4F;YAC5F,IACE,eAAe,CAAC,OAAO,KAAK,aAAa,CAAC,OAAO;gBACjD,eAAe,CAAC,OAAO,GAAG,YAAY,GAAG,CAAC;gBAC1C,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,EACpE,CAAC;gBACD,cAAc,GAAG,GAAG,GAAG,cAAc,CAAC;YACxC,CAAC;YACD,cAAc,IAAI,GAAG,CAAC;QACxB,CAAC;QAED,MAAM,CAAC,oBAAoB,CACzB,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,EACpE,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,EAClE,cAAc,CACf,CAAC;QACF,oBAAoB,EAAE,CAAC;IACzB,CAAC,EACD,CAAC,SAAS,EAAE,oBAAoB,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CACrE,CAAC;IAEF,OAAO;QACL,WAAW;QACX,qBAAqB;QACrB,iBAAiB;QACjB,eAAe;QACf,oBAAoB;QACpB,cAAc;QACd,wBAAwB;QACxB,kBAAkB;QAClB,oBAAoB;QACpB,UAAU;QACV,YAAY;QACZ,kBAAkB;KACnB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"useCompletion.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useCompletion.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ export declare function mergePartListUnions(list: PartListUnion[]): PartListUnio
12
12
  * Manages the Gemini stream, including user input, command processing,
13
13
  * API interaction, and tool call lifecycle.
14
14
  */
15
- export declare const useGeminiStream: (geminiClient: GeminiClient, history: HistoryItem[], addItem: UseHistoryManagerReturn["addItem"], setShowHelp: React.Dispatch<React.SetStateAction<boolean>>, config: Config, onDebugMessage: (message: string) => void, handleSlashCommand: (cmd: PartListUnion) => Promise<SlashCommandProcessorResult | false>, shellModeActive: boolean, getPreferredEditor: () => EditorType | undefined, onAuthError: () => void, performMemoryRefresh: () => Promise<void>, modelSwitchedFromQuotaError: boolean, setModelSwitchedFromQuotaError: React.Dispatch<React.SetStateAction<boolean>>) => {
15
+ export declare const useGeminiStream: (geminiClient: GeminiClient, history: HistoryItem[], addItem: UseHistoryManagerReturn["addItem"], config: Config, onDebugMessage: (message: string) => void, handleSlashCommand: (cmd: PartListUnion) => Promise<SlashCommandProcessorResult | false>, shellModeActive: boolean, getPreferredEditor: () => EditorType | undefined, onAuthError: () => void, performMemoryRefresh: () => Promise<void>, modelSwitchedFromQuotaError: boolean, setModelSwitchedFromQuotaError: React.Dispatch<React.SetStateAction<boolean>>, onEditorClose: () => void) => {
16
16
  streamingState: StreamingState;
17
17
  submitQuery: (query: PartListUnion, options?: {
18
18
  isContinuation: boolean;
@@ -41,7 +41,7 @@ var StreamProcessingStatus;
41
41
  * Manages the Gemini stream, including user input, command processing,
42
42
  * API interaction, and tool call lifecycle.
43
43
  */
44
- export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, config, onDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError) => {
44
+ export const useGeminiStream = (geminiClient, history, addItem, config, onDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, onEditorClose) => {
45
45
  const [initError, setInitError] = useState(null);
46
46
  const abortControllerRef = useRef(null);
47
47
  const turnCancelledRef = useRef(false);
@@ -65,7 +65,7 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
65
65
  // Handle tool response submission immediately when tools complete
66
66
  await handleCompletedTools(completedToolCallsFromScheduler);
67
67
  }
68
- }, config, setPendingHistoryItem, getPreferredEditor);
68
+ }, config, setPendingHistoryItem, getPreferredEditor, onEditorClose);
69
69
  const pendingToolCallGroupDisplay = useMemo(() => toolCalls.length ? mapTrackedToolCallsToDisplay(toolCalls) : undefined, [toolCalls]);
70
70
  const loopDetectedRef = useRef(false);
71
71
  const onExec = useCallback(async (done) => {
@@ -386,7 +386,6 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
386
386
  !options?.isContinuation)
387
387
  return;
388
388
  const userMessageTimestamp = Date.now();
389
- setShowHelp(false);
390
389
  // Reset quota error flag when starting a new query (not a continuation)
391
390
  if (!options?.isContinuation) {
392
391
  setModelSwitchedFromQuotaError(false);
@@ -439,7 +438,6 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
439
438
  }
440
439
  }, [
441
440
  streamingState,
442
- setShowHelp,
443
441
  setModelSwitchedFromQuotaError,
444
442
  prepareQueryForGemini,
445
443
  processGeminiStreamEvents,