From 3fce6cea27d3e6129d6c06e528b62e1b11bf7094 Mon Sep 17 00:00:00 2001 From: Evan Senter Date: Sat, 19 Apr 2025 19:45:42 +0100 Subject: Starting to modularize into separate cli / server packages. (#55) * Starting to move a lot of code into packages/server * More of the massive refactor, builds and runs, some issues though. * Fixing outstanding issue with double messages. * Fixing a minor UI issue. * Fixing the build post-merge. * Running formatting. * Addressing comments. --- packages/cli/src/ui/App.tsx | 31 +- packages/cli/src/ui/components/Header.tsx | 2 +- packages/cli/src/ui/components/InputPrompt.tsx | 56 +-- .../ui/components/messages/ToolGroupMessage.tsx | 2 + .../cli/src/ui/components/messages/ToolMessage.tsx | 144 +++++--- packages/cli/src/ui/hooks/useAppEffects.ts | 4 +- packages/cli/src/ui/hooks/useGeminiStream.ts | 401 ++++++++++++++++----- packages/cli/src/ui/types.ts | 9 +- 8 files changed, 456 insertions(+), 193 deletions(-) (limited to 'packages/cli/src/ui') diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx index e1b45af9..fa9b6f9b 100644 --- a/packages/cli/src/ui/App.tsx +++ b/packages/cli/src/ui/App.tsx @@ -22,16 +22,20 @@ import { useStartupWarnings, useInitializationErrorEffect, } from './hooks/useAppEffects.js'; +import type { Config } from '@gemini-code/server'; interface AppProps { - directory: string; + config: Config; } -export const App = ({ directory }: AppProps) => { +export const App = ({ config }: AppProps) => { const [history, setHistory] = useState([]); const [startupWarnings, setStartupWarnings] = useState([]); - const { streamingState, submitQuery, initError } = - useGeminiStream(setHistory); + const { streamingState, submitQuery, initError } = useGeminiStream( + setHistory, + config.getApiKey(), + config.getModel(), + ); const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(streamingState); @@ -61,12 +65,7 @@ export const App = ({ directory }: AppProps) => { !initError && !isWaitingForToolConfirmation; - const { - query, - setQuery, - handleSubmit: handleHistorySubmit, - inputKey, - } = useInputHistory({ + const { query, handleSubmit: handleHistorySubmit } = useInputHistory({ userMessages, onSubmit: submitQuery, isActive: isInputActive, @@ -74,7 +73,7 @@ export const App = ({ directory }: AppProps) => { return ( -
+
{startupWarnings.length > 0 && ( { /> - {isInputActive && ( - - )} + {isInputActive && }