fix: disable history XML replacement by default (#217)

Some models (e.g. minimax) copy placeholder text instead of generating
fresh XML, causing tool call validation failures and infinite loops.

Added ENABLE_HISTORY_XML_REPLACE env var (default: false) to control
this behavior.
This commit is contained in:
Dayuan Jiang
2025-12-11 17:36:18 +09:00
committed by GitHub
parent c42efdc702
commit 97cc0a07dc

View File

@@ -264,8 +264,13 @@ ${lastMessageText}
// Fix tool call inputs for Bedrock API (requires JSON objects, not strings) // Fix tool call inputs for Bedrock API (requires JSON objects, not strings)
const fixedMessages = fixToolCallInputs(modelMessages) const fixedMessages = fixToolCallInputs(modelMessages)
// Replace historical tool call XML with placeholders to reduce tokens and avoid confusion // Replace historical tool call XML with placeholders to reduce tokens
const placeholderMessages = replaceHistoricalToolInputs(fixedMessages) // Disabled by default - some models (e.g. minimax) copy placeholders instead of generating XML
const enableHistoryReplace =
process.env.ENABLE_HISTORY_XML_REPLACE === "true"
const placeholderMessages = enableHistoryReplace
? replaceHistoricalToolInputs(fixedMessages)
: fixedMessages
// Filter out messages with empty content arrays (Bedrock API rejects these) // Filter out messages with empty content arrays (Bedrock API rejects these)
// This is a safety measure - ideally convertToModelMessages should handle all cases // This is a safety measure - ideally convertToModelMessages should handle all cases