@google/gemini-cli 0.1.10-dev.15 → 0.1.11-nightly.250713.4442e893
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 +16 -2
- package/dist/google-gemini-cli-0.1.11.tgz +0 -0
- package/dist/package.json +7 -8
- package/dist/src/config/auth.js +6 -5
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/config.d.ts +23 -2
- package/dist/src/config/config.js +78 -54
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +1 -0
- package/dist/src/config/extension.js +34 -6
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/sandboxConfig.d.ts +1 -1
- package/dist/src/config/sandboxConfig.js +1 -1
- package/dist/src/config/sandboxConfig.js.map +1 -1
- package/dist/src/config/settings.d.ts +8 -2
- package/dist/src/config/settings.js +101 -3
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/gemini.js +53 -29
- 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/nonInteractiveCli.d.ts +1 -1
- package/dist/src/nonInteractiveCli.js +12 -3
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/services/CommandService.d.ts +13 -0
- package/dist/src/services/CommandService.js +32 -0
- package/dist/src/services/CommandService.js.map +1 -0
- package/dist/src/ui/App.d.ts +1 -0
- package/dist/src/ui/App.js +138 -26
- package/dist/src/ui/App.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/themeCommand.d.ts +7 -0
- package/dist/src/ui/commands/themeCommand.js +14 -0
- package/dist/src/ui/commands/themeCommand.js.map +1 -0
- package/dist/src/ui/commands/types.d.ts +63 -0
- package/dist/src/{gemini.test.d.ts → ui/commands/types.js} +1 -0
- package/dist/src/ui/commands/types.js.map +1 -0
- package/dist/src/ui/components/AuthDialog.js +36 -8
- package/dist/src/ui/components/AuthDialog.js.map +1 -1
- package/dist/src/ui/components/Footer.d.ts +1 -0
- package/dist/src/ui/components/Footer.js +3 -2
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/Header.d.ts +2 -0
- package/dist/src/ui/components/Header.js +3 -3
- package/dist/src/ui/components/Header.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 +153 -155
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.js +2 -1
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.js +18 -17
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/messages/CompressionMessage.js +1 -1
- package/dist/src/ui/components/shared/MaxSizedBox.js +1 -1
- package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +10 -7
- package/dist/src/ui/components/shared/RadioButtonSelect.js +57 -40
- package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.d.ts +2 -1
- package/dist/src/ui/components/shared/text-buffer.js +3 -3
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/contexts/SessionContext.d.ts +4 -1
- package/dist/src/ui/contexts/SessionContext.js +12 -2
- package/dist/src/ui/contexts/SessionContext.js.map +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 +221 -129
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAuthCommand.js +12 -2
- package/dist/src/ui/hooks/useAuthCommand.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 +3 -3
- package/dist/src/ui/hooks/useGeminiStream.js +54 -28
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useKeypress.js +74 -4
- package/dist/src/ui/hooks/useKeypress.js.map +1 -1
- package/dist/src/ui/types.d.ts +10 -0
- package/dist/src/ui/utils/ConsolePatcher.d.ts +23 -0
- package/dist/src/ui/utils/ConsolePatcher.js +42 -0
- package/dist/src/ui/utils/ConsolePatcher.js.map +1 -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 +30 -101
- package/dist/src/ui/utils/MarkdownDisplay.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/ui/utils/clipboardUtils.d.ts +22 -0
- package/dist/src/ui/utils/clipboardUtils.js +127 -0
- package/dist/src/ui/utils/clipboardUtils.js.map +1 -0
- package/dist/src/ui/utils/errorParsing.d.ts +2 -10
- package/dist/src/ui/utils/errorParsing.js +34 -23
- package/dist/src/ui/utils/errorParsing.js.map +1 -1
- package/dist/src/utils/cleanup.d.ts +2 -0
- package/dist/src/utils/cleanup.js +15 -0
- package/dist/src/utils/cleanup.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 +8 -9
- package/dist/src/gemini.test.js +0 -122
- package/dist/src/gemini.test.js.map +0 -1
- package/dist/src/ui/App.test.d.ts +0 -6
- package/dist/src/ui/App.test.js +0 -299
- package/dist/src/ui/App.test.js.map +0 -1
- package/dist/src/ui/components/AuthDialog.test.d.ts +0 -6
- package/dist/src/ui/components/AuthDialog.test.js +0 -69
- package/dist/src/ui/components/AuthDialog.test.js.map +0 -1
- package/dist/src/ui/components/ConsolePatcher.d.ts +0 -12
- package/dist/src/ui/components/ConsolePatcher.js +0 -40
- package/dist/src/ui/components/ConsolePatcher.js.map +0 -1
- package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +0 -6
- package/dist/src/ui/components/HistoryItemDisplay.test.js +0 -81
- package/dist/src/ui/components/HistoryItemDisplay.test.js.map +0 -1
- package/dist/src/ui/components/InputPrompt.test.d.ts +0 -6
- package/dist/src/ui/components/InputPrompt.test.js +0 -154
- package/dist/src/ui/components/InputPrompt.test.js.map +0 -1
- package/dist/src/ui/components/LoadingIndicator.test.d.ts +0 -6
- package/dist/src/ui/components/LoadingIndicator.test.js +0 -141
- package/dist/src/ui/components/LoadingIndicator.test.js.map +0 -1
- package/dist/src/ui/components/ModelStatsDisplay.test.d.ts +0 -6
- package/dist/src/ui/components/ModelStatsDisplay.test.js +0 -217
- package/dist/src/ui/components/ModelStatsDisplay.test.js.map +0 -1
- package/dist/src/ui/components/SessionSummaryDisplay.test.d.ts +0 -6
- package/dist/src/ui/components/SessionSummaryDisplay.test.js +0 -60
- package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +0 -1
- package/dist/src/ui/components/StatsDisplay.test.d.ts +0 -6
- package/dist/src/ui/components/StatsDisplay.test.js +0 -275
- package/dist/src/ui/components/StatsDisplay.test.js.map +0 -1
- package/dist/src/ui/components/ToolStatsDisplay.test.d.ts +0 -6
- package/dist/src/ui/components/ToolStatsDisplay.test.js +0 -160
- package/dist/src/ui/components/ToolStatsDisplay.test.js.map +0 -1
- package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +0 -6
- package/dist/src/ui/components/messages/DiffRenderer.test.js +0 -239
- package/dist/src/ui/components/messages/DiffRenderer.test.js.map +0 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +0 -6
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -37
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +0 -1
- package/dist/src/ui/components/messages/ToolMessage.test.d.ts +0 -6
- package/dist/src/ui/components/messages/ToolMessage.test.js +0 -116
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +0 -1
- package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +0 -6
- package/dist/src/ui/components/shared/MaxSizedBox.test.js +0 -134
- package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +0 -1
- package/dist/src/ui/contexts/SessionContext.test.d.ts +0 -6
- package/dist/src/ui/contexts/SessionContext.test.js +0 -96
- package/dist/src/ui/contexts/SessionContext.test.js.map +0 -1
- package/dist/src/ui/hooks/useGeminiStream.test.d.ts +0 -6
- package/dist/src/ui/hooks/useGeminiStream.test.js +0 -775
- package/dist/src/ui/hooks/useGeminiStream.test.js.map +0 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +0 -6
- package/dist/src/ui/utils/MarkdownDisplay.test.js +0 -176
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +0 -1
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { useState, useCallback, useEffect } from 'react';
|
|
7
|
-
import { clearCachedCredentialFile, getErrorMessage, } from '@google/gemini-cli-core';
|
|
7
|
+
import { AuthType, clearCachedCredentialFile, getErrorMessage, } from '@google/gemini-cli-core';
|
|
8
|
+
import { runExitCleanup } from '../../utils/cleanup.js';
|
|
8
9
|
export const useAuthCommand = (settings, setAuthError, config) => {
|
|
9
10
|
const [isAuthDialogOpen, setIsAuthDialogOpen] = useState(settings.merged.selectedAuthType === undefined);
|
|
10
11
|
const openAuthDialog = useCallback(() => {
|
|
@@ -36,10 +37,19 @@ export const useAuthCommand = (settings, setAuthError, config) => {
|
|
|
36
37
|
if (authType) {
|
|
37
38
|
await clearCachedCredentialFile();
|
|
38
39
|
settings.setValue(scope, 'selectedAuthType', authType);
|
|
40
|
+
if (authType === AuthType.LOGIN_WITH_GOOGLE && config.getNoBrowser()) {
|
|
41
|
+
runExitCleanup();
|
|
42
|
+
console.log(`
|
|
43
|
+
----------------------------------------------------------------
|
|
44
|
+
Logging in with Google... Please restart Gemini CLI to continue.
|
|
45
|
+
----------------------------------------------------------------
|
|
46
|
+
`);
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
39
49
|
}
|
|
40
50
|
setIsAuthDialogOpen(false);
|
|
41
51
|
setAuthError(null);
|
|
42
|
-
}, [settings, setAuthError]);
|
|
52
|
+
}, [settings, setAuthError, config]);
|
|
43
53
|
const cancelAuthentication = useCallback(() => {
|
|
44
54
|
setIsAuthenticating(false);
|
|
45
55
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthCommand.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useAuthCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,
|
|
1
|
+
{"version":3,"file":"useAuthCommand.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useAuthCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EACL,QAAQ,EAER,yBAAyB,EACzB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,QAAwB,EACxB,YAA4C,EAC5C,MAAc,EACd,EAAE;IACF,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CACtD,QAAQ,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAC/C,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;YAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAClD,IAAI,gBAAgB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAC1B,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,IAAI,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,YAAY,CAAC,6BAA6B,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChE,cAAc,EAAE,CAAC;YACnB,CAAC;oBAAS,CAAC;gBACT,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,QAAQ,EAAE,CAAC;IAClB,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;IAEvE,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EAAE,QAA8B,EAAE,KAAmB,EAAE,EAAE;QAC5D,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,yBAAyB,EAAE,CAAC;YAClC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YACvD,IAAI,QAAQ,KAAK,QAAQ,CAAC,iBAAiB,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;gBACrE,cAAc,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT;;;;aAIC,CACF,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QACD,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC3B,YAAY,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,EACD,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CACjC,CAAC;IAEF,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5C,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,gBAAgB;QAChB,cAAc;QACd,gBAAgB;QAChB,gBAAgB;QAChB,oBAAoB;KACrB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Config } from '@google/gemini-cli-core';
|
|
7
7
|
import { Suggestion } from '../components/SuggestionsDisplay.js';
|
|
8
|
-
import { SlashCommand } from '
|
|
8
|
+
import { CommandContext, SlashCommand } from '../commands/types.js';
|
|
9
9
|
export interface UseCompletionReturn {
|
|
10
10
|
suggestions: Suggestion[];
|
|
11
11
|
activeSuggestionIndex: number;
|
|
@@ -18,4 +18,4 @@ export interface UseCompletionReturn {
|
|
|
18
18
|
navigateUp: () => void;
|
|
19
19
|
navigateDown: () => void;
|
|
20
20
|
}
|
|
21
|
-
export declare function useCompletion(query: string, cwd: string, isActive: boolean, slashCommands: SlashCommand[], config?: Config): UseCompletionReturn;
|
|
21
|
+
export declare function useCompletion(query: string, cwd: string, isActive: boolean, slashCommands: SlashCommand[], commandContext: CommandContext, config?: Config): UseCompletionReturn;
|
|
@@ -9,7 +9,7 @@ import * as path from 'path';
|
|
|
9
9
|
import { glob } from 'glob';
|
|
10
10
|
import { isNodeError, escapePath, unescapePath, getErrorMessage, } from '@google/gemini-cli-core';
|
|
11
11
|
import { MAX_SUGGESTIONS_TO_SHOW, } from '../components/SuggestionsDisplay.js';
|
|
12
|
-
export function useCompletion(query, cwd, isActive, slashCommands, config) {
|
|
12
|
+
export function useCompletion(query, cwd, isActive, slashCommands, commandContext, config) {
|
|
13
13
|
const [suggestions, setSuggestions] = useState([]);
|
|
14
14
|
const [activeSuggestionIndex, setActiveSuggestionIndex] = useState(-1);
|
|
15
15
|
const [visibleStartIndex, setVisibleStartIndex] = useState(0);
|
|
@@ -74,62 +74,100 @@ export function useCompletion(query, cwd, isActive, slashCommands, config) {
|
|
|
74
74
|
resetCompletionState();
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
|
-
const trimmedQuery = query.trimStart();
|
|
78
|
-
// --- Handle Slash Command Completion ---
|
|
77
|
+
const trimmedQuery = query.trimStart();
|
|
79
78
|
if (trimmedQuery.startsWith('/')) {
|
|
80
|
-
const
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
79
|
+
const fullPath = trimmedQuery.substring(1);
|
|
80
|
+
const hasTrailingSpace = trimmedQuery.endsWith(' ');
|
|
81
|
+
// Get all non-empty parts of the command.
|
|
82
|
+
const rawParts = fullPath.split(/\s+/).filter((p) => p);
|
|
83
|
+
let commandPathParts = rawParts;
|
|
84
|
+
let partial = '';
|
|
85
|
+
// If there's no trailing space, the last part is potentially a partial segment.
|
|
86
|
+
// We tentatively separate it.
|
|
87
|
+
if (!hasTrailingSpace && rawParts.length > 0) {
|
|
88
|
+
partial = rawParts[rawParts.length - 1];
|
|
89
|
+
commandPathParts = rawParts.slice(0, -1);
|
|
90
|
+
}
|
|
91
|
+
// Traverse the Command Tree using the tentative completed path
|
|
92
|
+
let currentLevel = slashCommands;
|
|
93
|
+
let leafCommand = null;
|
|
94
|
+
for (const part of commandPathParts) {
|
|
95
|
+
if (!currentLevel) {
|
|
96
|
+
leafCommand = null;
|
|
97
|
+
currentLevel = [];
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
const found = currentLevel.find((cmd) => cmd.name === part || cmd.altName === part);
|
|
101
|
+
if (found) {
|
|
102
|
+
leafCommand = found;
|
|
103
|
+
currentLevel = found.subCommands;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
leafCommand = null;
|
|
107
|
+
currentLevel = [];
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Handle the Ambiguous Case
|
|
112
|
+
if (!hasTrailingSpace && currentLevel) {
|
|
113
|
+
const exactMatchAsParent = currentLevel.find((cmd) => (cmd.name === partial || cmd.altName === partial) &&
|
|
114
|
+
cmd.subCommands);
|
|
115
|
+
if (exactMatchAsParent) {
|
|
116
|
+
// It's a perfect match for a parent command. Override our initial guess.
|
|
117
|
+
// Treat it as a completed command path.
|
|
118
|
+
leafCommand = exactMatchAsParent;
|
|
119
|
+
currentLevel = exactMatchAsParent.subCommands;
|
|
120
|
+
partial = ''; // We now want to suggest ALL of its sub-commands.
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const depth = commandPathParts.length;
|
|
124
|
+
// Provide Suggestions based on the now-corrected context
|
|
125
|
+
// Argument Completion
|
|
126
|
+
if (leafCommand?.completion &&
|
|
127
|
+
(hasTrailingSpace ||
|
|
128
|
+
(rawParts.length > depth && depth > 0 && partial !== ''))) {
|
|
86
129
|
const fetchAndSetSuggestions = async () => {
|
|
87
130
|
setIsLoadingSuggestions(true);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}));
|
|
95
|
-
setSuggestions(newSuggestions);
|
|
96
|
-
setShowSuggestions(newSuggestions.length > 0);
|
|
97
|
-
setActiveSuggestionIndex(newSuggestions.length > 0 ? 0 : -1);
|
|
98
|
-
}
|
|
131
|
+
const argString = rawParts.slice(depth).join(' ');
|
|
132
|
+
const results = (await leafCommand.completion(commandContext, argString)) || [];
|
|
133
|
+
const finalSuggestions = results.map((s) => ({ label: s, value: s }));
|
|
134
|
+
setSuggestions(finalSuggestions);
|
|
135
|
+
setShowSuggestions(finalSuggestions.length > 0);
|
|
136
|
+
setActiveSuggestionIndex(finalSuggestions.length > 0 ? 0 : -1);
|
|
99
137
|
setIsLoadingSuggestions(false);
|
|
100
138
|
};
|
|
101
139
|
fetchAndSetSuggestions();
|
|
102
140
|
return;
|
|
103
141
|
}
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
142
|
+
// Command/Sub-command Completion
|
|
143
|
+
const commandsToSearch = currentLevel || [];
|
|
144
|
+
if (commandsToSearch.length > 0) {
|
|
145
|
+
let potentialSuggestions = commandsToSearch.filter((cmd) => cmd.description &&
|
|
146
|
+
(cmd.name.startsWith(partial) || cmd.altName?.startsWith(partial)));
|
|
147
|
+
// If a user's input is an exact match and it is a leaf command,
|
|
148
|
+
// enter should submit immediately.
|
|
149
|
+
if (potentialSuggestions.length > 0 && !hasTrailingSpace) {
|
|
150
|
+
const perfectMatch = potentialSuggestions.find((s) => s.name === partial);
|
|
151
|
+
if (perfectMatch && !perfectMatch.subCommands) {
|
|
152
|
+
potentialSuggestions = [];
|
|
153
|
+
}
|
|
114
154
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
setVisibleStartIndex(0);
|
|
129
|
-
setIsLoadingSuggestions(false);
|
|
155
|
+
const finalSuggestions = potentialSuggestions.map((cmd) => ({
|
|
156
|
+
label: cmd.name,
|
|
157
|
+
value: cmd.name,
|
|
158
|
+
description: cmd.description,
|
|
159
|
+
}));
|
|
160
|
+
setSuggestions(finalSuggestions);
|
|
161
|
+
setShowSuggestions(finalSuggestions.length > 0);
|
|
162
|
+
setActiveSuggestionIndex(finalSuggestions.length > 0 ? 0 : -1);
|
|
163
|
+
setIsLoadingSuggestions(false);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
// If we fall through, no suggestions are available.
|
|
167
|
+
resetCompletionState();
|
|
130
168
|
return;
|
|
131
169
|
}
|
|
132
|
-
//
|
|
170
|
+
// Handle At Command Completion
|
|
133
171
|
const atIndex = query.lastIndexOf('@');
|
|
134
172
|
if (atIndex === -1) {
|
|
135
173
|
resetCompletionState();
|
|
@@ -145,7 +183,7 @@ export function useCompletion(query, cwd, isActive, slashCommands, config) {
|
|
|
145
183
|
: partialPath.substring(lastSlashIndex + 1));
|
|
146
184
|
const baseDirAbsolute = path.resolve(cwd, baseDirRelative);
|
|
147
185
|
let isMounted = true;
|
|
148
|
-
const findFilesRecursively = async (startDir, searchPrefix, fileDiscovery, currentRelativePath = '', depth = 0, maxDepth = 10, // Limit recursion depth
|
|
186
|
+
const findFilesRecursively = async (startDir, searchPrefix, fileDiscovery, filterOptions, currentRelativePath = '', depth = 0, maxDepth = 10, // Limit recursion depth
|
|
149
187
|
maxResults = 50) => {
|
|
150
188
|
if (depth > maxDepth) {
|
|
151
189
|
return [];
|
|
@@ -163,9 +201,9 @@ export function useCompletion(query, cwd, isActive, slashCommands, config) {
|
|
|
163
201
|
if (!searchPrefix.startsWith('.') && entry.name.startsWith('.')) {
|
|
164
202
|
continue;
|
|
165
203
|
}
|
|
166
|
-
// Check if this entry should be ignored by
|
|
204
|
+
// Check if this entry should be ignored by filtering options
|
|
167
205
|
if (fileDiscovery &&
|
|
168
|
-
fileDiscovery.
|
|
206
|
+
fileDiscovery.shouldIgnoreFile(entryPathFromRoot, filterOptions)) {
|
|
169
207
|
continue;
|
|
170
208
|
}
|
|
171
209
|
if (entry.name.toLowerCase().startsWith(lowerSearchPrefix)) {
|
|
@@ -179,7 +217,7 @@ export function useCompletion(query, cwd, isActive, slashCommands, config) {
|
|
|
179
217
|
!entry.name.startsWith('.')) {
|
|
180
218
|
if (foundSuggestions.length < maxResults) {
|
|
181
219
|
foundSuggestions = foundSuggestions.concat(await findFilesRecursively(path.join(startDir, entry.name), searchPrefix, // Pass original searchPrefix for recursive calls
|
|
182
|
-
fileDiscovery, entryPathRelative, depth + 1, maxDepth, maxResults - foundSuggestions.length));
|
|
220
|
+
fileDiscovery, filterOptions, entryPathRelative, depth + 1, maxDepth, maxResults - foundSuggestions.length));
|
|
183
221
|
}
|
|
184
222
|
}
|
|
185
223
|
}
|
|
@@ -189,7 +227,7 @@ export function useCompletion(query, cwd, isActive, slashCommands, config) {
|
|
|
189
227
|
}
|
|
190
228
|
return foundSuggestions.slice(0, maxResults);
|
|
191
229
|
};
|
|
192
|
-
const findFilesWithGlob = async (searchPrefix, fileDiscoveryService, maxResults = 50) => {
|
|
230
|
+
const findFilesWithGlob = async (searchPrefix, fileDiscoveryService, filterOptions, maxResults = 50) => {
|
|
193
231
|
const globPattern = `**/${searchPrefix}*`;
|
|
194
232
|
const files = await glob(globPattern, {
|
|
195
233
|
cwd,
|
|
@@ -206,7 +244,7 @@ export function useCompletion(query, cwd, isActive, slashCommands, config) {
|
|
|
206
244
|
})
|
|
207
245
|
.filter((s) => {
|
|
208
246
|
if (fileDiscoveryService) {
|
|
209
|
-
return !fileDiscoveryService.
|
|
247
|
+
return !fileDiscoveryService.shouldIgnoreFile(s.label, filterOptions); // relative path
|
|
210
248
|
}
|
|
211
249
|
return true;
|
|
212
250
|
})
|
|
@@ -218,16 +256,20 @@ export function useCompletion(query, cwd, isActive, slashCommands, config) {
|
|
|
218
256
|
let fetchedSuggestions = [];
|
|
219
257
|
const fileDiscoveryService = config ? config.getFileService() : null;
|
|
220
258
|
const enableRecursiveSearch = config?.getEnableRecursiveFileSearch() ?? true;
|
|
259
|
+
const filterOptions = {
|
|
260
|
+
respectGitIgnore: config?.getFileFilteringRespectGitIgnore() ?? true,
|
|
261
|
+
respectGeminiIgnore: true,
|
|
262
|
+
};
|
|
221
263
|
try {
|
|
222
264
|
// If there's no slash, or it's the root, do a recursive search from cwd
|
|
223
265
|
if (partialPath.indexOf('/') === -1 &&
|
|
224
266
|
prefix &&
|
|
225
267
|
enableRecursiveSearch) {
|
|
226
268
|
if (fileDiscoveryService) {
|
|
227
|
-
fetchedSuggestions = await findFilesWithGlob(prefix, fileDiscoveryService);
|
|
269
|
+
fetchedSuggestions = await findFilesWithGlob(prefix, fileDiscoveryService, filterOptions);
|
|
228
270
|
}
|
|
229
271
|
else {
|
|
230
|
-
fetchedSuggestions = await findFilesRecursively(cwd, prefix, fileDiscoveryService);
|
|
272
|
+
fetchedSuggestions = await findFilesRecursively(cwd, prefix, fileDiscoveryService, filterOptions);
|
|
231
273
|
}
|
|
232
274
|
}
|
|
233
275
|
else {
|
|
@@ -247,7 +289,7 @@ export function useCompletion(query, cwd, isActive, slashCommands, config) {
|
|
|
247
289
|
continue;
|
|
248
290
|
const relativePath = path.relative(cwd, path.join(baseDirAbsolute, entry.name));
|
|
249
291
|
if (fileDiscoveryService &&
|
|
250
|
-
fileDiscoveryService.
|
|
292
|
+
fileDiscoveryService.shouldIgnoreFile(relativePath, filterOptions)) {
|
|
251
293
|
continue;
|
|
252
294
|
}
|
|
253
295
|
filteredEntries.push(entry);
|
|
@@ -305,7 +347,15 @@ export function useCompletion(query, cwd, isActive, slashCommands, config) {
|
|
|
305
347
|
isMounted = false;
|
|
306
348
|
clearTimeout(debounceTimeout);
|
|
307
349
|
};
|
|
308
|
-
}, [
|
|
350
|
+
}, [
|
|
351
|
+
query,
|
|
352
|
+
cwd,
|
|
353
|
+
isActive,
|
|
354
|
+
resetCompletionState,
|
|
355
|
+
slashCommands,
|
|
356
|
+
commandContext,
|
|
357
|
+
config,
|
|
358
|
+
]);
|
|
309
359
|
return {
|
|
310
360
|
suggestions,
|
|
311
361
|
activeSuggestionIndex,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCompletion.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useCompletion.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useCompletion.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useCompletion.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,18 +5,18 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Config, GeminiClient, EditorType, ThoughtSummary } from '@google/gemini-cli-core';
|
|
7
7
|
import { type PartListUnion } from '@google/genai';
|
|
8
|
-
import { StreamingState, HistoryItem, HistoryItemWithoutId } from '../types.js';
|
|
8
|
+
import { StreamingState, HistoryItem, HistoryItemWithoutId, SlashCommandProcessorResult } from '../types.js';
|
|
9
9
|
import { UseHistoryManagerReturn } from './useHistoryManager.js';
|
|
10
10
|
export declare function mergePartListUnions(list: PartListUnion[]): PartListUnion;
|
|
11
11
|
/**
|
|
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<
|
|
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>>) => {
|
|
16
16
|
streamingState: StreamingState;
|
|
17
17
|
submitQuery: (query: PartListUnion, options?: {
|
|
18
18
|
isContinuation: boolean;
|
|
19
|
-
}) => Promise<void>;
|
|
19
|
+
}, prompt_id?: string) => Promise<void>;
|
|
20
20
|
initError: string | null;
|
|
21
21
|
pendingHistoryItems: HistoryItemWithoutId[];
|
|
22
22
|
thought: ThoughtSummary | null;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
|
|
7
7
|
import { useInput } from 'ink';
|
|
8
|
-
import { GeminiEventType as ServerGeminiEventType, getErrorMessage, isNodeError, MessageSenderType, logUserPrompt, GitService, UnauthorizedError, UserPromptEvent, } from '@google/gemini-cli-core';
|
|
8
|
+
import { GeminiEventType as ServerGeminiEventType, getErrorMessage, isNodeError, MessageSenderType, logUserPrompt, GitService, UnauthorizedError, UserPromptEvent, DEFAULT_GEMINI_FLASH_MODEL, } from '@google/gemini-cli-core';
|
|
9
9
|
import { StreamingState, MessageType, ToolCallStatus, } from '../types.js';
|
|
10
10
|
import { isAtCommand } from '../utils/commandUtils.js';
|
|
11
11
|
import { parseAndFormatApiError } from '../utils/errorParsing.js';
|
|
@@ -17,6 +17,7 @@ import { useLogger } from './useLogger.js';
|
|
|
17
17
|
import { promises as fs } from 'fs';
|
|
18
18
|
import path from 'path';
|
|
19
19
|
import { useReactToolScheduler, mapToDisplay as mapTrackedToolCallsToDisplay, } from './useReactToolScheduler.js';
|
|
20
|
+
import { useSessionStats } from '../contexts/SessionContext.js';
|
|
20
21
|
export function mergePartListUnions(list) {
|
|
21
22
|
const resultParts = [];
|
|
22
23
|
for (const item of list) {
|
|
@@ -39,7 +40,7 @@ var StreamProcessingStatus;
|
|
|
39
40
|
* Manages the Gemini stream, including user input, command processing,
|
|
40
41
|
* API interaction, and tool call lifecycle.
|
|
41
42
|
*/
|
|
42
|
-
export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, config, onDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh) => {
|
|
43
|
+
export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, config, onDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError) => {
|
|
43
44
|
const [initError, setInitError] = useState(null);
|
|
44
45
|
const abortControllerRef = useRef(null);
|
|
45
46
|
const turnCancelledRef = useRef(false);
|
|
@@ -47,6 +48,7 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
|
|
|
47
48
|
const [thought, setThought] = useState(null);
|
|
48
49
|
const [pendingHistoryItemRef, setPendingHistoryItem] = useStateAndRef(null);
|
|
49
50
|
const processedMemoryToolsRef = useRef(new Set());
|
|
51
|
+
const { startNewPrompt, getPromptCount } = useSessionStats();
|
|
50
52
|
const logger = useLogger();
|
|
51
53
|
const gitService = useMemo(() => {
|
|
52
54
|
if (!config.getProjectRoot()) {
|
|
@@ -105,7 +107,7 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
|
|
|
105
107
|
setIsResponding(false);
|
|
106
108
|
}
|
|
107
109
|
});
|
|
108
|
-
const prepareQueryForGemini = useCallback(async (query, userMessageTimestamp, abortSignal) => {
|
|
110
|
+
const prepareQueryForGemini = useCallback(async (query, userMessageTimestamp, abortSignal, prompt_id) => {
|
|
109
111
|
if (turnCancelledRef.current) {
|
|
110
112
|
return { queryToSend: null, shouldProceed: false };
|
|
111
113
|
}
|
|
@@ -115,29 +117,24 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
|
|
|
115
117
|
let localQueryToSendToGemini = null;
|
|
116
118
|
if (typeof query === 'string') {
|
|
117
119
|
const trimmedQuery = query.trim();
|
|
118
|
-
logUserPrompt(config, new UserPromptEvent(trimmedQuery.length, trimmedQuery));
|
|
120
|
+
logUserPrompt(config, new UserPromptEvent(trimmedQuery.length, prompt_id, config.getContentGeneratorConfig()?.authType, trimmedQuery));
|
|
119
121
|
onDebugMessage(`User query: '${trimmedQuery}'`);
|
|
120
122
|
await logger?.logMessage(MessageSenderType.USER, trimmedQuery);
|
|
121
123
|
// Handle UI-only commands first
|
|
122
124
|
const slashCommandResult = await handleSlashCommand(trimmedQuery);
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
127
|
-
else if (typeof slashCommandResult === 'object' &&
|
|
128
|
-
slashCommandResult.shouldScheduleTool) {
|
|
129
|
-
// Slash command wants to schedule a tool call (e.g., /memory add)
|
|
130
|
-
const { toolName, toolArgs } = slashCommandResult;
|
|
131
|
-
if (toolName && toolArgs) {
|
|
125
|
+
if (slashCommandResult) {
|
|
126
|
+
if (slashCommandResult.type === 'schedule_tool') {
|
|
127
|
+
const { toolName, toolArgs } = slashCommandResult;
|
|
132
128
|
const toolCallRequest = {
|
|
133
129
|
callId: `${toolName}-${Date.now()}-${Math.random().toString(16).slice(2)}`,
|
|
134
130
|
name: toolName,
|
|
135
131
|
args: toolArgs,
|
|
136
132
|
isClientInitiated: true,
|
|
133
|
+
prompt_id,
|
|
137
134
|
};
|
|
138
135
|
scheduleToolCalls([toolCallRequest], abortSignal);
|
|
139
136
|
}
|
|
140
|
-
return { queryToSend: null, shouldProceed: false };
|
|
137
|
+
return { queryToSend: null, shouldProceed: false };
|
|
141
138
|
}
|
|
142
139
|
if (shellModeActive && handleShellCommand(trimmedQuery, abortSignal)) {
|
|
143
140
|
return { queryToSend: null, shouldProceed: false };
|
|
@@ -259,7 +256,7 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
|
|
|
259
256
|
}
|
|
260
257
|
addItem({
|
|
261
258
|
type: MessageType.ERROR,
|
|
262
|
-
text: parseAndFormatApiError(eventValue.error, config.getContentGeneratorConfig().
|
|
259
|
+
text: parseAndFormatApiError(eventValue.error, config.getContentGeneratorConfig()?.authType, undefined, config.getModel(), DEFAULT_GEMINI_FLASH_MODEL),
|
|
263
260
|
}, userMessageTimestamp);
|
|
264
261
|
}, [addItem, pendingHistoryItemRef, setPendingHistoryItem, config]);
|
|
265
262
|
const handleChatCompressionEvent = useCallback((eventValue) => addItem({
|
|
@@ -269,6 +266,11 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
|
|
|
269
266
|
`${eventValue?.originalTokenCount ?? 'unknown'} to ` +
|
|
270
267
|
`${eventValue?.newTokenCount ?? 'unknown'} tokens).`,
|
|
271
268
|
}, Date.now()), [addItem, config]);
|
|
269
|
+
const handleMaxSessionTurnsEvent = useCallback(() => addItem({
|
|
270
|
+
type: 'info',
|
|
271
|
+
text: `The session has reached the maximum number of turns: ${config.getMaxSessionTurns()}. ` +
|
|
272
|
+
`Please update this limit in your setting.json file.`,
|
|
273
|
+
}, Date.now()), [addItem, config]);
|
|
272
274
|
const processGeminiStreamEvents = useCallback(async (stream, userMessageTimestamp, signal) => {
|
|
273
275
|
let geminiMessageBuffer = '';
|
|
274
276
|
const toolCallRequests = [];
|
|
@@ -296,6 +298,9 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
|
|
|
296
298
|
case ServerGeminiEventType.ToolCallResponse:
|
|
297
299
|
// do nothing
|
|
298
300
|
break;
|
|
301
|
+
case ServerGeminiEventType.MaxSessionTurns:
|
|
302
|
+
handleMaxSessionTurnsEvent();
|
|
303
|
+
break;
|
|
299
304
|
default: {
|
|
300
305
|
// enforces exhaustive switch-case
|
|
301
306
|
const unreachable = event;
|
|
@@ -313,25 +318,37 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
|
|
|
313
318
|
handleErrorEvent,
|
|
314
319
|
scheduleToolCalls,
|
|
315
320
|
handleChatCompressionEvent,
|
|
321
|
+
handleMaxSessionTurnsEvent,
|
|
316
322
|
]);
|
|
317
|
-
const submitQuery = useCallback(async (query, options) => {
|
|
323
|
+
const submitQuery = useCallback(async (query, options, prompt_id) => {
|
|
318
324
|
if ((streamingState === StreamingState.Responding ||
|
|
319
325
|
streamingState === StreamingState.WaitingForConfirmation) &&
|
|
320
326
|
!options?.isContinuation)
|
|
321
327
|
return;
|
|
322
328
|
const userMessageTimestamp = Date.now();
|
|
323
329
|
setShowHelp(false);
|
|
330
|
+
// Reset quota error flag when starting a new query (not a continuation)
|
|
331
|
+
if (!options?.isContinuation) {
|
|
332
|
+
setModelSwitchedFromQuotaError(false);
|
|
333
|
+
config.setQuotaErrorOccurred(false);
|
|
334
|
+
}
|
|
324
335
|
abortControllerRef.current = new AbortController();
|
|
325
336
|
const abortSignal = abortControllerRef.current.signal;
|
|
326
337
|
turnCancelledRef.current = false;
|
|
327
|
-
|
|
338
|
+
if (!prompt_id) {
|
|
339
|
+
prompt_id = config.getSessionId() + '########' + getPromptCount();
|
|
340
|
+
}
|
|
341
|
+
const { queryToSend, shouldProceed } = await prepareQueryForGemini(query, userMessageTimestamp, abortSignal, prompt_id);
|
|
328
342
|
if (!shouldProceed || queryToSend === null) {
|
|
329
343
|
return;
|
|
330
344
|
}
|
|
345
|
+
if (!options?.isContinuation) {
|
|
346
|
+
startNewPrompt();
|
|
347
|
+
}
|
|
331
348
|
setIsResponding(true);
|
|
332
349
|
setInitError(null);
|
|
333
350
|
try {
|
|
334
|
-
const stream = geminiClient.sendMessageStream(queryToSend, abortSignal);
|
|
351
|
+
const stream = geminiClient.sendMessageStream(queryToSend, abortSignal, prompt_id);
|
|
335
352
|
const processingStatus = await processGeminiStreamEvents(stream, userMessageTimestamp, abortSignal);
|
|
336
353
|
if (processingStatus === StreamProcessingStatus.UserCancelled) {
|
|
337
354
|
return;
|
|
@@ -348,7 +365,7 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
|
|
|
348
365
|
else if (!isNodeError(error) || error.name !== 'AbortError') {
|
|
349
366
|
addItem({
|
|
350
367
|
type: MessageType.ERROR,
|
|
351
|
-
text: parseAndFormatApiError(getErrorMessage(error) || 'Unknown error', config.getContentGeneratorConfig().
|
|
368
|
+
text: parseAndFormatApiError(getErrorMessage(error) || 'Unknown error', config.getContentGeneratorConfig()?.authType, undefined, config.getModel(), DEFAULT_GEMINI_FLASH_MODEL),
|
|
352
369
|
}, userMessageTimestamp);
|
|
353
370
|
}
|
|
354
371
|
}
|
|
@@ -358,6 +375,7 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
|
|
|
358
375
|
}, [
|
|
359
376
|
streamingState,
|
|
360
377
|
setShowHelp,
|
|
378
|
+
setModelSwitchedFromQuotaError,
|
|
361
379
|
prepareQueryForGemini,
|
|
362
380
|
processGeminiStreamEvents,
|
|
363
381
|
pendingHistoryItemRef,
|
|
@@ -367,6 +385,8 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
|
|
|
367
385
|
geminiClient,
|
|
368
386
|
onAuthError,
|
|
369
387
|
config,
|
|
388
|
+
startNewPrompt,
|
|
389
|
+
getPromptCount,
|
|
370
390
|
]);
|
|
371
391
|
const handleCompletedTools = useCallback(async (completedToolCallsFromScheduler) => {
|
|
372
392
|
if (isResponding) {
|
|
@@ -408,22 +428,22 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
|
|
|
408
428
|
// We need to manually add the function responses to the history
|
|
409
429
|
// so the model knows the tools were cancelled.
|
|
410
430
|
const responsesToAdd = geminiTools.flatMap((toolCall) => toolCall.response.responseParts);
|
|
431
|
+
const combinedParts = [];
|
|
411
432
|
for (const response of responsesToAdd) {
|
|
412
|
-
let parts;
|
|
413
433
|
if (Array.isArray(response)) {
|
|
414
|
-
|
|
434
|
+
combinedParts.push(...response);
|
|
415
435
|
}
|
|
416
436
|
else if (typeof response === 'string') {
|
|
417
|
-
|
|
437
|
+
combinedParts.push({ text: response });
|
|
418
438
|
}
|
|
419
439
|
else {
|
|
420
|
-
|
|
440
|
+
combinedParts.push(response);
|
|
421
441
|
}
|
|
422
|
-
geminiClient.addHistory({
|
|
423
|
-
role: 'user',
|
|
424
|
-
parts,
|
|
425
|
-
});
|
|
426
442
|
}
|
|
443
|
+
geminiClient.addHistory({
|
|
444
|
+
role: 'user',
|
|
445
|
+
parts: combinedParts,
|
|
446
|
+
});
|
|
427
447
|
}
|
|
428
448
|
const callIdsToMarkAsSubmitted = geminiTools.map((toolCall) => toolCall.request.callId);
|
|
429
449
|
markToolsAsSubmitted(callIdsToMarkAsSubmitted);
|
|
@@ -431,16 +451,22 @@ export const useGeminiStream = (geminiClient, history, addItem, setShowHelp, con
|
|
|
431
451
|
}
|
|
432
452
|
const responsesToSend = geminiTools.map((toolCall) => toolCall.response.responseParts);
|
|
433
453
|
const callIdsToMarkAsSubmitted = geminiTools.map((toolCall) => toolCall.request.callId);
|
|
454
|
+
const prompt_ids = geminiTools.map((toolCall) => toolCall.request.prompt_id);
|
|
434
455
|
markToolsAsSubmitted(callIdsToMarkAsSubmitted);
|
|
456
|
+
// Don't continue if model was switched due to quota error
|
|
457
|
+
if (modelSwitchedFromQuotaError) {
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
435
460
|
submitQuery(mergePartListUnions(responsesToSend), {
|
|
436
461
|
isContinuation: true,
|
|
437
|
-
});
|
|
462
|
+
}, prompt_ids[0]);
|
|
438
463
|
}, [
|
|
439
464
|
isResponding,
|
|
440
465
|
submitQuery,
|
|
441
466
|
markToolsAsSubmitted,
|
|
442
467
|
geminiClient,
|
|
443
468
|
performMemoryRefresh,
|
|
469
|
+
modelSwitchedFromQuotaError,
|
|
444
470
|
]);
|
|
445
471
|
const pendingHistoryItems = [
|
|
446
472
|
pendingHistoryItemRef.current,
|