From cfc697a96d2e716a75e1c3b7f0f34fce81abaf1e Mon Sep 17 00:00:00 2001 From: Taylor Mullen Date: Thu, 17 Apr 2025 18:06:21 -0400 Subject: Run `npm run format` - Also updated README.md accordingly. Part of https://b.corp.google.com/issues/411384603 --- packages/cli/src/ui/App.tsx | 153 +++++++++++++++++++++++++++----------------- 1 file changed, 93 insertions(+), 60 deletions(-) (limited to 'packages/cli/src/ui/App.tsx') diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx index 9a2ee49d..1bc0f6c6 100644 --- a/packages/cli/src/ui/App.tsx +++ b/packages/cli/src/ui/App.tsx @@ -13,78 +13,111 @@ import { StreamingState } from '../core/gemini-stream.js'; import { PartListUnion } from '@google/genai'; interface AppProps { - directory: string; + directory: string; } const App = ({ directory }: AppProps) => { - const [query, setQuery] = useState(''); - const [history, setHistory] = useState([]); - const { streamingState, submitQuery, initError } = useGeminiStream(setHistory); - const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(streamingState); + const [query, setQuery] = useState(''); + const [history, setHistory] = useState([]); + const { streamingState, submitQuery, initError } = + useGeminiStream(setHistory); + const { elapsedTime, currentLoadingPhrase } = + useLoadingIndicator(streamingState); - const handleInputSubmit = (value: PartListUnion) => { - submitQuery(value).then(() => { - setQuery(''); - }).catch(() => { - setQuery(''); - }); - }; + const handleInputSubmit = (value: PartListUnion) => { + submitQuery(value) + .then(() => { + setQuery(''); + }) + .catch(() => { + setQuery(''); + }); + }; - useEffect(() => { - if (initError && !history.some(item => item.type === 'error' && item.text?.includes(initError))) { - setHistory(prev => [ - ...prev, - { id: Date.now(), type: 'error', text: `Initialization Error: ${initError}. Please check API key and configuration.` } as HistoryItem - ]); - } - }, [initError, history]); + useEffect(() => { + if ( + initError && + !history.some( + (item) => item.type === 'error' && item.text?.includes(initError), + ) + ) { + setHistory((prev) => [ + ...prev, + { + id: Date.now(), + type: 'error', + text: `Initialization Error: ${initError}. Please check API key and configuration.`, + } as HistoryItem, + ]); + } + }, [initError, history]); - const isWaitingForToolConfirmation = history.some(item => - item.type === 'tool_group' && item.tools.some(tool => tool.confirmationDetails !== undefined) - ); - const isInputActive = streamingState === StreamingState.Idle && !initError; + const isWaitingForToolConfirmation = history.some( + (item) => + item.type === 'tool_group' && + item.tools.some((tool) => tool.confirmationDetails !== undefined), + ); + const isInputActive = streamingState === StreamingState.Idle && !initError; + return ( + +
- return ( - -
+ - - - {initError && streamingState !== StreamingState.Responding && !isWaitingForToolConfirmation && ( - - {history.find(item => item.type === 'error' && item.text?.includes(initError))?.text ? ( - {history.find(item => item.type === 'error' && item.text?.includes(initError))?.text} - ) : ( - <> - Initialization Error: {initError} - Please check API key and configuration. - - )} - + {initError && + streamingState !== StreamingState.Responding && + !isWaitingForToolConfirmation && ( + + {history.find( + (item) => item.type === 'error' && item.text?.includes(initError), + )?.text ? ( + + { + history.find( + (item) => + item.type === 'error' && item.text?.includes(initError), + )?.text + } + + ) : ( + <> + Initialization Error: {initError} + + {' '} + Please check API key and configuration. + + )} + + )} - - - - + + + + - {!isWaitingForToolConfirmation && isInputActive && ( - - )} + {!isWaitingForToolConfirmation && isInputActive && ( + + )} -