diff options
| author | Abhi <[email protected]> | 2025-06-23 17:30:13 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-06-23 21:30:13 +0000 |
| commit | dc76bcc433d58d879f8850ac777d2cd239dad611 (patch) | |
| tree | 89458926149f83721f00f09a5b5b3130d571bda5 /packages/core/src | |
| parent | 21e6a36cf1b17ff126b3d0253e68a6f3ebfc7c36 (diff) | |
Add error messaging for 429 errors (#1316)
Diffstat (limited to 'packages/core/src')
| -rw-r--r-- | packages/core/src/core/turn.test.ts | 4 | ||||
| -rw-r--r-- | packages/core/src/core/turn.ts | 21 |
2 files changed, 21 insertions, 4 deletions
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; } } |
