When using Qwen3-coder model through Ollama with many tools (6+), the model outputs XML-style tool calls in the content field instead of using the native JSON tool_calls format. This causes Goose to fail to execute any tools. This commit adds XML parsing as a fallback mechanism: - Add parse_xml_tool_calls() helper function using regex to parse <function=name><parameter=key>value</parameter></function> format - Modify response_to_message() to check for XML tool calls when no JSON tool_calls are found in the response - Modify response_to_streaming_message() to accumulate text and parse XML tool calls when stream completes - Add comprehensive unit tests for XML parsing The fix is backward-compatible and only activates when JSON tool_calls are absent, ensuring existing providers continue to work normally. Tested with Qwen3-coder:latest via Ollama with 11 developer tools. Signed-off-by: Krispy <krispy@emergentbit.com>
goose is your on-machine AI agent, capable of automating complex development tasks from start to finish. More than just code suggestions, goose can build entire projects from scratch, write and execute code, debug failures, orchestrate workflows, and interact with external APIs - autonomously.
Whether you're prototyping an idea, refining existing code, or managing intricate engineering pipelines, goose adapts to your workflow and executes tasks with precision.
Designed for maximum flexibility, goose works with any LLM and supports multi-model configuration to optimize performance and cost, seamlessly integrates with MCP servers, and is available as both a desktop app as well as CLI - making it the ultimate AI assistant for developers who want to move faster and focus on innovation.
Quick Links
Need Help?
a little goose humor 🦢
Why did the developer choose goose as their AI agent?
Because it always helps them "migrate" their code to production! 🚀