From 6740886e22827f04ef52141f1ed049420dc915cc Mon Sep 17 00:00:00 2001 From: Sehoon Shon Date: Thu, 15 Jan 2026 12:26:54 -0500 Subject: [PATCH] fix(core): prevent ModelInfo event emission on aborted signal (#16752) --- packages/core/src/core/client.test.ts | 28 +++++++++++++++++++++++++++ packages/core/src/core/client.ts | 5 +++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/packages/core/src/core/client.test.ts b/packages/core/src/core/client.test.ts index 50ee7f765a..11dc28a998 100644 --- a/packages/core/src/core/client.test.ts +++ b/packages/core/src/core/client.test.ts @@ -679,6 +679,34 @@ describe('Gemini Client (client.ts)', () => { }); }); + it('does not emit ModelInfo event if signal is aborted', async () => { + // Arrange + mockTurnRunFn.mockReturnValue( + (async function* () { + yield { type: 'content', value: 'Hello' }; + })(), + ); + + const controller = new AbortController(); + controller.abort(); + + // Act + const stream = client.sendMessageStream( + [{ text: 'Hi' }], + controller.signal, + 'prompt-id-1', + ); + + const events = await fromAsync(stream); + + // Assert + expect(events).not.toContainEqual( + expect.objectContaining({ + type: GeminiEventType.ModelInfo, + }), + ); + }); + it.each([ { compressionStatus: diff --git a/packages/core/src/core/client.ts b/packages/core/src/core/client.ts index dbf81aee2f..73445da67b 100644 --- a/packages/core/src/core/client.ts +++ b/packages/core/src/core/client.ts @@ -627,8 +627,9 @@ export class GeminiClient { modelToUse = finalModel; this.currentSequenceModel = modelToUse; - yield { type: GeminiEventType.ModelInfo, value: modelToUse }; - + if (!signal.aborted) { + yield { type: GeminiEventType.ModelInfo, value: modelToUse }; + } const resultStream = turn.run(modelConfigKey, request, linkedSignal); let isError = false; let isInvalidStream = false;