From dc76bcc433d58d879f8850ac777d2cd239dad611 Mon Sep 17 00:00:00 2001 From: Abhi <43648792+abhipatel12@users.noreply.github.com> Date: Mon, 23 Jun 2025 17:30:13 -0400 Subject: Add error messaging for 429 errors (#1316) --- packages/core/src/core/turn.test.ts | 4 +++- packages/core/src/core/turn.ts | 21 ++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) (limited to 'packages/core/src') diff --git a/packages/core/src/core/turn.test.ts b/packages/core/src/core/turn.test.ts index a525cbff..602a0b74 100644 --- a/packages/core/src/core/turn.test.ts +++ b/packages/core/src/core/turn.test.ts @@ -233,7 +233,9 @@ describe('Turn', () => { expect(events.length).toBe(1); const errorEvent = events[0] as ServerGeminiErrorEvent; expect(errorEvent.type).toBe(GeminiEventType.Error); - expect(errorEvent.value).toEqual({ message: 'API Error' }); + expect(errorEvent.value).toEqual({ + error: { message: 'API Error', status: undefined }, + }); expect(turn.getDebugResponses().length).toBe(0); expect(reportError).toHaveBeenCalledWith( error, diff --git a/packages/core/src/core/turn.ts b/packages/core/src/core/turn.ts index cdb4a89f..85fffd93 100644 --- a/packages/core/src/core/turn.ts +++ b/packages/core/src/core/turn.ts @@ -49,8 +49,13 @@ export enum GeminiEventType { Thought = 'thought', } -export interface GeminiErrorEventValue { +export interface StructuredError { message: string; + status?: number; +} + +export interface GeminiErrorEventValue { + error: StructuredError; } export interface ToolCallRequestInfo { @@ -236,8 +241,18 @@ export class Turn { contextForReport, 'Turn.run-sendMessageStream', ); - const errorMessage = getErrorMessage(error); - yield { type: GeminiEventType.Error, value: { message: errorMessage } }; + const status = + typeof error === 'object' && + error !== null && + 'status' in error && + typeof (error as { status: unknown }).status === 'number' + ? (error as { status: number }).status + : undefined; + const structuredError: StructuredError = { + message: getErrorMessage(error), + status, + }; + yield { type: GeminiEventType.Error, value: { error: structuredError } }; return; } } -- cgit v1.2.3