diff --git a/packages/core/src/core/client.test.ts b/packages/core/src/core/client.test.ts index 50ee7f765a..1c86d5175d 100644 --- a/packages/core/src/core/client.test.ts +++ b/packages/core/src/core/client.test.ts @@ -1649,7 +1649,6 @@ ${JSON.stringify( expect(events).toEqual([ { type: GeminiEventType.ModelInfo, value: 'default-routed-model' }, { type: GeminiEventType.InvalidStream }, - { type: GeminiEventType.ModelInfo, value: 'default-routed-model' }, { type: GeminiEventType.Content, value: 'Continued content' }, ]); @@ -1737,13 +1736,13 @@ ${JSON.stringify( const events = await fromAsync(stream); // Assert - // We expect 4 events (model_info + original + model_info + 1 retry) - expect(events.length).toBe(4); + // We expect 3 events (model_info + original + 1 retry) + expect(events.length).toBe(3); expect( events - .filter((e) => e.type !== GeminiEventType.ModelInfo) - .every((e) => e.type === GeminiEventType.InvalidStream), - ).toBe(true); + .filter((e) => e.type === GeminiEventType.ModelInfo) + .map((e) => e.value), + ).toEqual(['default-routed-model']); // Verify that turn.run was called twice expect(mockTurnRunFn).toHaveBeenCalledTimes(2); diff --git a/packages/core/src/core/client.ts b/packages/core/src/core/client.ts index dbf81aee2f..165aa7c00f 100644 --- a/packages/core/src/core/client.ts +++ b/packages/core/src/core/client.ts @@ -626,9 +626,10 @@ export class GeminiClient { ); modelToUse = finalModel; + if (!signal.aborted && !this.currentSequenceModel) { + yield { type: GeminiEventType.ModelInfo, value: modelToUse }; + } this.currentSequenceModel = modelToUse; - yield { type: GeminiEventType.ModelInfo, value: modelToUse }; - const resultStream = turn.run(modelConfigKey, request, linkedSignal); let isError = false; let isInvalidStream = false;