mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-12 21:03:05 -07:00
fix(core): deduplicate ModelInfo emission in GeminiClient (#17075)
This commit is contained in:
committed by
Sandy Tao
parent
588c1a6d16
commit
3441b88375
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user