From ea4bd1e4839d10618150ce16ac5298c1761987a4 Mon Sep 17 00:00:00 2001 From: "CJACK." Date: Sun, 8 Mar 2026 13:16:12 +0800 Subject: [PATCH] fix: parse invoke/tool_call arguments in xml compatibility paths --- internal/util/toolcalls_parse_markup.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/internal/util/toolcalls_parse_markup.go b/internal/util/toolcalls_parse_markup.go index b7b2908..e2eff83 100644 --- a/internal/util/toolcalls_parse_markup.go +++ b/internal/util/toolcalls_parse_markup.go @@ -93,6 +93,15 @@ func parseSingleXMLToolCall(block string) (ParsedToolCall, bool) { if err := dec.DecodeElement(&v, &t); err == nil && strings.TrimSpace(v) != "" { name = strings.TrimSpace(v) } + case "input", "arguments", "argument", "args", "params": + var v string + if err := dec.DecodeElement(&v, &t); err == nil && strings.TrimSpace(v) != "" { + if parsed := parseToolCallInput(strings.TrimSpace(v)); len(parsed) > 0 { + for k, vv := range parsed { + params[k] = vv + } + } + } default: if inParams || inTool { var v string @@ -210,6 +219,13 @@ func parseInvokeFunctionCallStyle(text string) (ParsedToolCall, bool) { input[k] = v } } + if len(input) == 0 { + if argsRaw := findMarkupTagValue(m[2], toolCallMarkupArgsTagNames, toolCallMarkupArgsPatternByTag); argsRaw != "" { + input = parseMarkupInput(argsRaw) + } else if kv := parseMarkupKVObject(m[2]); len(kv) > 0 { + input = kv + } + } return ParsedToolCall{Name: name, Input: input}, true }