mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-13 05:12:55 -07:00
Revert "[cherrypic][hotfix] Do not call nextSpeakerCheck in case of API error (#7140)"
This reverts commit dc21a06b54.
This commit is contained in:
@@ -50,8 +50,6 @@ vi.mock('./turn', () => {
|
|||||||
GeminiEventType: {
|
GeminiEventType: {
|
||||||
MaxSessionTurns: 'MaxSessionTurns',
|
MaxSessionTurns: 'MaxSessionTurns',
|
||||||
ChatCompressed: 'ChatCompressed',
|
ChatCompressed: 'ChatCompressed',
|
||||||
Error: 'error',
|
|
||||||
Content: 'content',
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
@@ -1865,89 +1863,6 @@ ${JSON.stringify(
|
|||||||
expect(JSON.stringify(finalCall)).toContain('fileC.ts');
|
expect(JSON.stringify(finalCall)).toContain('fileC.ts');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not call checkNextSpeaker when turn.run() yields an error', async () => {
|
|
||||||
// Arrange
|
|
||||||
const { checkNextSpeaker } = await import(
|
|
||||||
'../utils/nextSpeakerChecker.js'
|
|
||||||
);
|
|
||||||
const mockCheckNextSpeaker = vi.mocked(checkNextSpeaker);
|
|
||||||
|
|
||||||
const mockStream = (async function* () {
|
|
||||||
yield {
|
|
||||||
type: GeminiEventType.Error,
|
|
||||||
value: { error: { message: 'test error' } },
|
|
||||||
};
|
|
||||||
})();
|
|
||||||
mockTurnRunFn.mockReturnValue(mockStream);
|
|
||||||
|
|
||||||
const mockChat: Partial<GeminiChat> = {
|
|
||||||
addHistory: vi.fn(),
|
|
||||||
getHistory: vi.fn().mockReturnValue([]),
|
|
||||||
};
|
|
||||||
client['chat'] = mockChat as GeminiChat;
|
|
||||||
|
|
||||||
const mockGenerator: Partial<ContentGenerator> = {
|
|
||||||
countTokens: vi.fn().mockResolvedValue({ totalTokens: 0 }),
|
|
||||||
generateContent: mockGenerateContentFn,
|
|
||||||
};
|
|
||||||
client['contentGenerator'] = mockGenerator as ContentGenerator;
|
|
||||||
|
|
||||||
// Act
|
|
||||||
const stream = client.sendMessageStream(
|
|
||||||
[{ text: 'Hi' }],
|
|
||||||
new AbortController().signal,
|
|
||||||
'prompt-id-error',
|
|
||||||
);
|
|
||||||
for await (const _ of stream) {
|
|
||||||
// consume stream
|
|
||||||
}
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
expect(mockCheckNextSpeaker).not.toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not call checkNextSpeaker when turn.run() yields a value then an error', async () => {
|
|
||||||
// Arrange
|
|
||||||
const { checkNextSpeaker } = await import(
|
|
||||||
'../utils/nextSpeakerChecker.js'
|
|
||||||
);
|
|
||||||
const mockCheckNextSpeaker = vi.mocked(checkNextSpeaker);
|
|
||||||
|
|
||||||
const mockStream = (async function* () {
|
|
||||||
yield { type: GeminiEventType.Content, value: 'some content' };
|
|
||||||
yield {
|
|
||||||
type: GeminiEventType.Error,
|
|
||||||
value: { error: { message: 'test error' } },
|
|
||||||
};
|
|
||||||
})();
|
|
||||||
mockTurnRunFn.mockReturnValue(mockStream);
|
|
||||||
|
|
||||||
const mockChat: Partial<GeminiChat> = {
|
|
||||||
addHistory: vi.fn(),
|
|
||||||
getHistory: vi.fn().mockReturnValue([]),
|
|
||||||
};
|
|
||||||
client['chat'] = mockChat as GeminiChat;
|
|
||||||
|
|
||||||
const mockGenerator: Partial<ContentGenerator> = {
|
|
||||||
countTokens: vi.fn().mockResolvedValue({ totalTokens: 0 }),
|
|
||||||
generateContent: mockGenerateContentFn,
|
|
||||||
};
|
|
||||||
client['contentGenerator'] = mockGenerator as ContentGenerator;
|
|
||||||
|
|
||||||
// Act
|
|
||||||
const stream = client.sendMessageStream(
|
|
||||||
[{ text: 'Hi' }],
|
|
||||||
new AbortController().signal,
|
|
||||||
'prompt-id-error',
|
|
||||||
);
|
|
||||||
for await (const _ of stream) {
|
|
||||||
// consume stream
|
|
||||||
}
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
expect(mockCheckNextSpeaker).not.toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('generateContent', () => {
|
describe('generateContent', () => {
|
||||||
|
|||||||
@@ -517,9 +517,6 @@ export class GeminiClient {
|
|||||||
return turn;
|
return turn;
|
||||||
}
|
}
|
||||||
yield event;
|
yield event;
|
||||||
if (event.type === GeminiEventType.Error) {
|
|
||||||
return turn;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (!turn.pendingToolCalls.length && signal && !signal.aborted) {
|
if (!turn.pendingToolCalls.length && signal && !signal.aborted) {
|
||||||
// Check if model was switched during the call (likely due to quota error)
|
// Check if model was switched during the call (likely due to quota error)
|
||||||
|
|||||||
Reference in New Issue
Block a user