summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/App.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/App.tsx')
-rw-r--r--packages/cli/src/ui/App.tsx39
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}