From 43d491fb5be300e12ca7fe26faf1c4d18fe7ec99 Mon Sep 17 00:00:00 2001 From: Sanyela Date: Wed, 3 Dec 2025 14:46:09 +0800 Subject: [PATCH] fix: deduplicate toolResults to avoid Kiro API validation error --- src/claude/claude-kiro.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/claude/claude-kiro.js b/src/claude/claude-kiro.js index e2fb5a3..af43308 100644 --- a/src/claude/claude-kiro.js +++ b/src/claude/claude-kiro.js @@ -637,7 +637,16 @@ async initializeAuth(forceRefresh = false) { userInputMessage.images = images; } if (toolResults.length > 0) { - userInputMessage.userInputMessageContext = { toolResults }; + // 去重 toolResults - Kiro API 不接受重复的 toolUseId + const uniqueToolResults = []; + const seenIds = new Set(); + for (const tr of toolResults) { + if (!seenIds.has(tr.toolUseId)) { + seenIds.add(tr.toolUseId); + uniqueToolResults.push(tr); + } + } + userInputMessage.userInputMessageContext = { toolResults: uniqueToolResults }; } history.push({ userInputMessage }); @@ -777,7 +786,16 @@ async initializeAuth(forceRefresh = false) { // 构建 userInputMessageContext,只包含非空字段 const userInputMessageContext = {}; if (currentToolResults.length > 0) { - userInputMessageContext.toolResults = currentToolResults; + // 去重 toolResults - Kiro API 不接受重复的 toolUseId + const uniqueToolResults = []; + const seenToolUseIds = new Set(); + for (const tr of currentToolResults) { + if (!seenToolUseIds.has(tr.toolUseId)) { + seenToolUseIds.add(tr.toolUseId); + uniqueToolResults.push(tr); + } + } + userInputMessageContext.toolResults = uniqueToolResults; } if (Object.keys(toolsContext).length > 0 && toolsContext.tools) { userInputMessageContext.tools = toolsContext.tools;