Add error messaging for 429 errors (#1316)

This commit is contained in:
Abhi
2025-06-23 17:30:13 -04:00
committed by GitHub
parent 21e6a36cf1
commit dc76bcc433
7 changed files with 139 additions and 45 deletions

View File

@@ -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,

View File

@@ -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;
}
}