Merge tag 'v0.3.4' of github.com:google-gemini/gemini-cli into chore/sync-gemini-cli-v0.3.4

This commit is contained in:
mingholy.lmh
2025-09-11 16:38:48 +08:00
14 changed files with 835 additions and 182 deletions

View File

@@ -83,7 +83,7 @@ vi.mock('@qwen-code/qwen-code-core', async () => {
return {
...actualServer,
IdeClient: {
getInstance: vi.fn().mockReturnValue({
getInstance: vi.fn().mockResolvedValue({
getConnectionStatus: vi.fn(),
initialize: vi.fn(),
shutdown: vi.fn(),

View File

@@ -638,6 +638,9 @@ export const useGeminiStream = (
// before we add loop detected message to history
loopDetectedRef.current = true;
break;
case ServerGeminiEventType.Retry:
// Will add the missing logic later
break;
default: {
// enforces exhaustive switch-case
const unreachable: never = event;

View File

@@ -24,6 +24,7 @@ import {
isWithinRoot,
logToolCall,
MCPServerConfig,
StreamEventType,
ToolConfirmationOutcome,
} from '@qwen-code/qwen-code-core';
import * as fs from 'node:fs/promises';
@@ -269,8 +270,12 @@ class Session {
return { stopReason: 'cancelled' };
}
if (resp.candidates && resp.candidates.length > 0) {
const candidate = resp.candidates[0];
if (
resp.type === StreamEventType.CHUNK &&
resp.value.candidates &&
resp.value.candidates.length > 0
) {
const candidate = resp.value.candidates[0];
for (const part of candidate.content?.parts ?? []) {
if (!part.text) {
continue;
@@ -290,8 +295,8 @@ class Session {
}
}
if (resp.functionCalls) {
functionCalls.push(...resp.functionCalls);
if (resp.type === StreamEventType.CHUNK && resp.value.functionCalls) {
functionCalls.push(...resp.value.functionCalls);
}
}
} catch (error) {