fix(core): deduplicate ModelInfo emission in GeminiClient (#17075)

This commit is contained in:
N. Taylor Mullen
2026-01-19 20:29:45 -08:00
committed by Sandy Tao
parent 588c1a6d16
commit 3441b88375
2 changed files with 8 additions and 8 deletions
+5 -6
View File
@@ -1624,7 +1624,6 @@ ${JSON.stringify(
expect(events).toEqual([ expect(events).toEqual([
{ type: GeminiEventType.ModelInfo, value: 'default-routed-model' }, { type: GeminiEventType.ModelInfo, value: 'default-routed-model' },
{ type: GeminiEventType.InvalidStream }, { type: GeminiEventType.InvalidStream },
{ type: GeminiEventType.ModelInfo, value: 'default-routed-model' },
{ type: GeminiEventType.Content, value: 'Continued content' }, { type: GeminiEventType.Content, value: 'Continued content' },
]); ]);
@@ -1712,13 +1711,13 @@ ${JSON.stringify(
const events = await fromAsync(stream); const events = await fromAsync(stream);
// Assert // Assert
// We expect 4 events (model_info + original + model_info + 1 retry) // We expect 3 events (model_info + original + 1 retry)
expect(events.length).toBe(4); expect(events.length).toBe(3);
expect( expect(
events events
.filter((e) => e.type !== GeminiEventType.ModelInfo) .filter((e) => e.type === GeminiEventType.ModelInfo)
.every((e) => e.type === GeminiEventType.InvalidStream), .map((e) => e.value),
).toBe(true); ).toEqual(['default-routed-model']);
// Verify that turn.run was called twice // Verify that turn.run was called twice
expect(mockTurnRunFn).toHaveBeenCalledTimes(2); expect(mockTurnRunFn).toHaveBeenCalledTimes(2);
+3 -2
View File
@@ -628,9 +628,10 @@ export class GeminiClient {
); );
modelToUse = finalModel; modelToUse = finalModel;
this.currentSequenceModel = modelToUse; if (!signal.aborted && !this.currentSequenceModel) {
yield { type: GeminiEventType.ModelInfo, value: modelToUse }; yield { type: GeminiEventType.ModelInfo, value: modelToUse };
}
this.currentSequenceModel = modelToUse;
const resultStream = turn.run(modelConfigKey, request, linkedSignal); const resultStream = turn.run(modelConfigKey, request, linkedSignal);
let isError = false; let isError = false;
let isInvalidStream = false; let isInvalidStream = false;