diff options
| author | Bryan Morgan <[email protected]> | 2025-07-09 10:18:15 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-07-09 14:18:15 +0000 |
| commit | b0cce952860b9ff51a0f731fbb8a7649ead23530 (patch) | |
| tree | fe38d1d2fd4e313f7802d835c64297827eca7817 /packages/cli/src/ui/App.tsx | |
| parent | 8f2da86aa521c2a0c3f5bfc72abe346182d2f963 (diff) | |
Improve quota- and resource-related 429 error handling, also taking Code Assist customer tiers into consideration (#3609)
Diffstat (limited to 'packages/cli/src/ui/App.tsx')
| -rw-r--r-- | packages/cli/src/ui/App.tsx | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx index feb132ae..833cc2b5 100644 --- a/packages/cli/src/ui/App.tsx +++ b/packages/cli/src/ui/App.tsx @@ -67,6 +67,10 @@ import { useBracketedPaste } from './hooks/useBracketedPaste.js'; import { useTextBuffer } from './components/shared/text-buffer.js'; import * as fs from 'fs'; import { UpdateNotification } from './components/UpdateNotification.js'; +import { + isProQuotaExceededError, + isGenericQuotaExceededError, +} from '@google/gemini-cli-core'; import { checkForUpdates } from './utils/updateCheck.js'; import ansiEscapes from 'ansi-escapes'; import { OverflowProvider } from './contexts/OverflowContext.js'; @@ -243,15 +247,34 @@ const App = ({ config, settings, startupWarnings = [] }: AppProps) => { const flashFallbackHandler = async ( currentModel: string, fallbackModel: string, + error?: unknown, ): Promise<boolean> => { + let message: string; + + // Check if this is a Pro quota exceeded error + if (error && isProQuotaExceededError(error)) { + message = `⚡ You have reached your daily ${currentModel} quota limit. +⚡ Automatically switching from ${currentModel} to ${fallbackModel} for the remainder of this session. +⚡ To increase your limits, upgrade to a Gemini Code Assist Standard or Enterprise plan with higher limits at https://goo.gle/set-up-gemini-code-assist +⚡ Or you can utilize a Gemini API Key. See: https://goo.gle/gemini-cli-docs-auth#gemini-api-key +⚡ You can switch authentication methods by typing /auth`; + } else if (error && isGenericQuotaExceededError(error)) { + message = `⚡ You have reached your daily quota limit. +⚡ Automatically switching from ${currentModel} to ${fallbackModel} for the remainder of this session. +⚡ To increase your limits, upgrade to a Gemini Code Assist Standard or Enterprise plan with higher limits at https://goo.gle/set-up-gemini-code-assist +⚡ Or you can utilize a Gemini API Key. See: https://goo.gle/gemini-cli-docs-auth#gemini-api-key +⚡ You can switch authentication methods by typing /auth`; + } else { + // Default fallback message for other cases (like consecutive 429s) + message = `⚡ Slow response times detected. +⚡ Automatically switching from ${currentModel} to ${fallbackModel} for faster responses for the remainder of this session.`; + } + // Add message to UI history addItem( { type: MessageType.INFO, - text: `⚡ Slow response times detected. Automatically switching from ${currentModel} to ${fallbackModel} for faster responses for the remainder of this session. -⚡ To avoid this you can either upgrade to Standard tier. See: https://goo.gle/set-up-gemini-code-assist -⚡ Or you can utilize a Gemini API Key. See: https://goo.gle/gemini-cli-docs-auth#gemini-api-key -⚡ You can switch authentication methods by typing /auth`, + text: message, }, Date.now(), ); |
