From df74594b8ff9d277f0358f89f7ef7bc568a7b8ec Mon Sep 17 00:00:00 2001 From: Taylor Mullen Date: Mon, 12 May 2025 00:04:21 -0700 Subject: [PATCH] When an error occurs stop processing. --- packages/cli/src/ui/hooks/useGeminiStream.ts | 2 -- packages/server/src/core/client.ts | 10 +++++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/ui/hooks/useGeminiStream.ts b/packages/cli/src/ui/hooks/useGeminiStream.ts index 7ab30463..6ff41d2f 100644 --- a/packages/cli/src/ui/hooks/useGeminiStream.ts +++ b/packages/cli/src/ui/hooks/useGeminiStream.ts @@ -333,8 +333,6 @@ export const useGeminiStream = ( { type: 'error', text: `[API Error: ${event.value.message}]` }, userMessageTimestamp, ); - setStreamingState(StreamingState.Idle); - // Allow stream to end naturally } } // End stream loop diff --git a/packages/server/src/core/client.ts b/packages/server/src/core/client.ts index 0b1e8ecf..fc6080ab 100644 --- a/packages/server/src/core/client.ts +++ b/packages/server/src/core/client.ts @@ -16,7 +16,7 @@ import { } from '@google/genai'; import process from 'node:process'; import { getFolderStructure } from '../utils/getFolderStructure.js'; -import { Turn, ServerGeminiStreamEvent } from './turn.js'; +import { Turn, ServerGeminiStreamEvent, GeminiEventType } from './turn.js'; import { Config } from '../config/config.js'; import { getCoreSystemPrompt } from './prompts.js'; import { ReadManyFilesTool } from '../tools/read-many-files.js'; @@ -156,7 +156,10 @@ export class GeminiClient { turns++; const turn = new Turn(chat, availableTools); const resultStream = turn.run(request, signal); + let seenError = false; for await (const event of resultStream) { + seenError = + seenError === false ? false : event.type === GeminiEventType.Error; yield event; } @@ -176,6 +179,11 @@ export class GeminiClient { } } request = fnResponses; + + if (seenError) { + // We saw an error, lets stop processing to prevent unexpected consequences. + break; + } } if (turns >= this.MAX_TURNS) { console.warn('sendMessageStream: Reached maximum tool call turns limit.');