From aebb69925c92e1f44f71ad7d85ba3196ff680c8f Mon Sep 17 00:00:00 2001 From: tanzhenxin Date: Fri, 22 Aug 2025 16:15:32 +0800 Subject: [PATCH] fix: invalid tool call with IDE companion feature enabled --- packages/core/src/core/client.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/core/src/core/client.ts b/packages/core/src/core/client.ts index 876e9027..e1da0471 100644 --- a/packages/core/src/core/client.ts +++ b/packages/core/src/core/client.ts @@ -485,7 +485,24 @@ export class GeminiClient { } } - if (this.config.getIdeModeFeature() && this.config.getIdeMode()) { + // Prevent context updates from being sent while a tool call is + // waiting for a response. The Qwen API requires that a functionResponse + // part from the user immediately follows a functionCall part from the model + // in the conversation history . The IDE context is not discarded; it will + // be included in the next regular message sent to the model. + const history = this.getHistory(); + const lastMessage = + history.length > 0 ? history[history.length - 1] : undefined; + const hasPendingToolCall = + !!lastMessage && + lastMessage.role === 'model' && + (lastMessage.parts?.some((p) => 'functionCall' in p) || false); + + if ( + this.config.getIdeModeFeature() && + this.config.getIdeMode() && + !hasPendingToolCall + ) { const { contextParts, newIdeContext } = this.getIdeContextParts( this.forceFullIdeContext || this.getHistory().length === 0, );