diff options
Diffstat (limited to 'packages/server/src')
| -rw-r--r-- | packages/server/src/core/turn.ts | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/packages/server/src/core/turn.ts b/packages/server/src/core/turn.ts index ad461d74..7d8bf7b6 100644 --- a/packages/server/src/core/turn.ts +++ b/packages/server/src/core/turn.ts @@ -47,6 +47,7 @@ export enum GeminiEventType { ToolCallRequest = 'tool_call_request', ToolCallResponse = 'tool_call_response', ToolCallConfirmation = 'tool_call_confirmation', + UserCancelled = 'user_cancelled', } export interface ToolCallRequestInfo { @@ -74,7 +75,8 @@ export type ServerGeminiStreamEvent = | { type: GeminiEventType.ToolCallConfirmation; value: ServerToolCallConfirmationDetails; - }; + } + | { type: GeminiEventType.UserCancelled }; // A turn manages the agentic loop turn within the server context. export class Turn { @@ -108,7 +110,8 @@ export class Turn { for await (const resp of responseStream) { this.debugResponses.push(resp); if (signal?.aborted) { - throw this.abortError(); + yield { type: GeminiEventType.UserCancelled }; + return; } const text = getResponseText(resp); @@ -240,12 +243,6 @@ export class Turn { }; } - private abortError(): Error { - const error = new Error('Request cancelled by user during stream.'); - error.name = 'AbortError'; - return error; // Return instead of throw, let caller handle - } - getConfirmationDetails(): ToolCallConfirmationDetails[] { return this.confirmationDetails; } |
