diff options
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; } } |
