diff options
Diffstat (limited to 'packages/cli/src')
| -rw-r--r-- | packages/cli/src/nonInteractiveCli.test.ts | 3 | ||||
| -rw-r--r-- | packages/cli/src/nonInteractiveCli.ts | 2 | ||||
| -rw-r--r-- | packages/cli/src/ui/hooks/useGeminiStream.test.tsx | 10 | ||||
| -rw-r--r-- | packages/cli/src/ui/hooks/useGeminiStream.ts | 37 |
4 files changed, 12 insertions, 40 deletions
diff --git a/packages/cli/src/nonInteractiveCli.test.ts b/packages/cli/src/nonInteractiveCli.test.ts index 389d35f2..c071dedc 100644 --- a/packages/cli/src/nonInteractiveCli.test.ts +++ b/packages/cli/src/nonInteractiveCli.test.ts @@ -39,7 +39,7 @@ describe('runNonInteractive', () => { sendMessageStream: vi.fn(), }; mockGeminiClient = { - startChat: vi.fn().mockResolvedValue(mockChat), + getChat: vi.fn().mockResolvedValue(mockChat), } as unknown as GeminiClient; mockToolRegistry = { getFunctionDeclarations: vi.fn().mockReturnValue([]), @@ -80,7 +80,6 @@ describe('runNonInteractive', () => { await runNonInteractive(mockConfig, 'Test input'); - expect(mockGeminiClient.startChat).toHaveBeenCalled(); expect(mockChat.sendMessageStream).toHaveBeenCalledWith({ message: [{ text: 'Test input' }], config: { diff --git a/packages/cli/src/nonInteractiveCli.ts b/packages/cli/src/nonInteractiveCli.ts index f7b4108b..7505c736 100644 --- a/packages/cli/src/nonInteractiveCli.ts +++ b/packages/cli/src/nonInteractiveCli.ts @@ -42,7 +42,7 @@ export async function runNonInteractive( const geminiClient = new GeminiClient(config); const toolRegistry: ToolRegistry = await config.getToolRegistry(); - const chat = await geminiClient.startChat(); + const chat = await geminiClient.getChat(); const abortController = new AbortController(); let currentMessages: Content[] = [{ role: 'user', parts: [{ text: input }] }]; diff --git a/packages/cli/src/ui/hooks/useGeminiStream.test.tsx b/packages/cli/src/ui/hooks/useGeminiStream.test.tsx index 3a421ebf..d46fab9e 100644 --- a/packages/cli/src/ui/hooks/useGeminiStream.test.tsx +++ b/packages/cli/src/ui/hooks/useGeminiStream.test.tsx @@ -405,10 +405,9 @@ describe('useGeminiStream', () => { } as TrackedCancelledToolCall, ]; - let hookResult: any; - await act(async () => { - hookResult = renderTestHook(simplifiedToolCalls); - }); + const hookResult = await act(async () => + renderTestHook(simplifiedToolCalls), + ); const { mockMarkToolsAsSubmitted, @@ -431,9 +430,8 @@ describe('useGeminiStream', () => { toolCall2ResponseParts, ]); expect(localMockSendMessageStream).toHaveBeenCalledWith( - expect.anything(), expectedMergedResponse, - expect.anything(), + expect.any(AbortSignal), ); }); }); diff --git a/packages/cli/src/ui/hooks/useGeminiStream.ts b/packages/cli/src/ui/hooks/useGeminiStream.ts index 423f3489..284709cf 100644 --- a/packages/cli/src/ui/hooks/useGeminiStream.ts +++ b/packages/cli/src/ui/hooks/useGeminiStream.ts @@ -17,7 +17,6 @@ import { Config, MessageSenderType, ToolCallRequestInfo, - GeminiChat, } from '@gemini-code/core'; import { type PartListUnion } from '@google/genai'; import { @@ -76,7 +75,6 @@ export const useGeminiStream = ( ) => { const [initError, setInitError] = useState<string | null>(null); const abortControllerRef = useRef<AbortController | null>(null); - const chatSessionRef = useRef<GeminiChat | null>(null); const geminiClientRef = useRef<GeminiClient | null>(null); const [isResponding, setIsResponding] = useState<boolean>(false); const [pendingHistoryItemRef, setPendingHistoryItem] = @@ -256,31 +254,6 @@ export const useGeminiStream = ( ], ); - const ensureChatSession = useCallback(async (): Promise<{ - client: GeminiClient | null; - chat: GeminiChat | null; - }> => { - const currentClient = geminiClientRef.current; - if (!currentClient) { - const errorMsg = 'Gemini client is not available.'; - setInitError(errorMsg); - addItem({ type: MessageType.ERROR, text: errorMsg }, Date.now()); - return { client: null, chat: null }; - } - - if (!chatSessionRef.current) { - try { - chatSessionRef.current = await currentClient.startChat(); - } catch (err: unknown) { - const errorMsg = `Failed to start chat: ${getErrorMessage(err)}`; - setInitError(errorMsg); - addItem({ type: MessageType.ERROR, text: errorMsg }, Date.now()); - return { client: currentClient, chat: null }; - } - } - return { client: currentClient, chat: chatSessionRef.current }; - }, [addItem]); - // --- Stream Event Handlers --- const handleContentEvent = useCallback( @@ -444,9 +417,12 @@ export const useGeminiStream = ( return; } - const { client, chat } = await ensureChatSession(); + const client = geminiClientRef.current; - if (!client || !chat) { + if (!client) { + const errorMsg = 'Gemini client is not available.'; + setInitError(errorMsg); + addItem({ type: MessageType.ERROR, text: errorMsg }, Date.now()); return; } @@ -454,7 +430,7 @@ export const useGeminiStream = ( setInitError(null); try { - const stream = client.sendMessageStream(chat, queryToSend, abortSignal); + const stream = client.sendMessageStream(queryToSend, abortSignal); const processingStatus = await processGeminiStreamEvents( stream, userMessageTimestamp, @@ -487,7 +463,6 @@ export const useGeminiStream = ( streamingState, setShowHelp, prepareQueryForGemini, - ensureChatSession, processGeminiStreamEvents, pendingHistoryItemRef, addItem, |
