summaryrefslogtreecommitdiff
path: root/packages/core
diff options
context:
space:
mode:
Diffstat (limited to 'packages/core')
-rw-r--r--packages/core/src/core/turn.test.ts4
-rw-r--r--packages/core/src/core/turn.ts21
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;
}
}