fix: deduplicate toolResults to avoid Kiro API validation error

This commit is contained in:
Sanyela 2025-12-03 14:46:09 +08:00
parent 55ae7664ec
commit 43d491fb5b

View file

@ -637,7 +637,16 @@ async initializeAuth(forceRefresh = false) {
userInputMessage.images = images; userInputMessage.images = images;
} }
if (toolResults.length > 0) { 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 }); history.push({ userInputMessage });
@ -777,7 +786,16 @@ async initializeAuth(forceRefresh = false) {
// 构建 userInputMessageContext只包含非空字段 // 构建 userInputMessageContext只包含非空字段
const userInputMessageContext = {}; const userInputMessageContext = {};
if (currentToolResults.length > 0) { 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) { if (Object.keys(toolsContext).length > 0 && toolsContext.tools) {
userInputMessageContext.tools = toolsContext.tools; userInputMessageContext.tools = toolsContext.tools;