diff options
| author | Bryan Morgan <[email protected]> | 2025-06-24 18:48:55 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-06-24 22:48:55 +0000 |
| commit | e356949d3fb600abd1a993949300a6c3e0008621 (patch) | |
| tree | d6c32b08bc47e2f3c2d8f6f27e890c1af3ade480 /packages/cli/src/ui/App.tsx | |
| parent | 4bf18da2b08e145d2f4c91f2331347bf8568aed3 (diff) | |
[JUNE 25] Permanent failover to Flash model for OAuth users after persistent 429 errors (#1376)
Co-authored-by: Scott Densmore <[email protected]>
Diffstat (limited to 'packages/cli/src/ui/App.tsx')
| -rw-r--r-- | packages/cli/src/ui/App.tsx | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx index c25d74e2..7824f0f7 100644 --- a/packages/cli/src/ui/App.tsx +++ b/packages/cli/src/ui/App.tsx @@ -115,6 +115,7 @@ const App = ({ config, settings, startupWarnings = [] }: AppProps) => { const [editorError, setEditorError] = useState<string | null>(null); const [footerHeight, setFooterHeight] = useState<number>(0); const [corgiMode, setCorgiMode] = useState(false); + const [currentModel, setCurrentModel] = useState(config.getModel()); const [shellModeActive, setShellModeActive] = useState(false); const [showErrorDetails, setShowErrorDetails] = useState<boolean>(false); const [showToolDescriptions, setShowToolDescriptions] = @@ -214,6 +215,42 @@ const App = ({ config, settings, startupWarnings = [] }: AppProps) => { } }, [config, addItem]); + // Watch for model changes (e.g., from Flash fallback) + useEffect(() => { + const checkModelChange = () => { + const configModel = config.getModel(); + if (configModel !== currentModel) { + setCurrentModel(configModel); + } + }; + + // Check immediately and then periodically + checkModelChange(); + const interval = setInterval(checkModelChange, 1000); // Check every second + + return () => clearInterval(interval); + }, [config, currentModel]); + + // Set up Flash fallback handler + useEffect(() => { + const flashFallbackHandler = async ( + currentModel: string, + fallbackModel: string, + ): Promise<boolean> => { + // Add message to UI history + addItem( + { + type: MessageType.INFO, + text: `⚡ Rate limiting detected. Automatically switching from ${currentModel} to ${fallbackModel} for faster responses for the remainder of this session.`, + }, + Date.now(), + ); + return true; // Always accept the fallback + }; + + config.setFlashFallbackHandler(flashFallbackHandler); + }, [config, addItem]); + const { handleSlashCommand, slashCommands, @@ -787,7 +824,7 @@ const App = ({ config, settings, startupWarnings = [] }: AppProps) => { </Box> )} <Footer - model={config.getModel()} + model={currentModel} targetDir={config.getTargetDir()} debugMode={config.getDebugMode()} branchName={branchName} |
