-
Notifications
You must be signed in to change notification settings - Fork 2.8k
chore: remove XML tool calling support #10841
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Re-reviewed latest changes. 1 net new issue flagged; the existing Bedrock item is still unresolved.
Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues. |
|
Generated with ❤️ by ellipsis.dev |
…allParser - Add list_files case to parseToolCall() switch with path/recursive args - Add new_task case to parseToolCall() switch with mode/message/todos args - Add list_files to NativeToolArgs type in tools.ts - Both tools were in toolNames but lacked case handlers, causing the fail-fast check on line 852 to throw 'Invalid arguments for tool'
- Remove redundant pushToolResult after handleError in BaseTool.ts (handleError already emits tool_result via formatResponse.toolError) - Fix containsXmlToolMarkup to exclude content inside markdown code fences, preventing false positives when users paste docs/examples - Make 'wait for confirmation' guideline conditional on !isMultipleNativeToolCallsEnabled to avoid contradicting multiple-tools-per-message guidance - Update tests to reflect intentional behavior changes
- Remove useNativeTools variable and inline metadata?.tools?.length checks - Updated: lm-studio, lite-llm, unbound, cerebras, xai, native-ollama, qwen-code, deepinfra, vscode-lm, requesty, bedrock - Remove dead extractToolSpecsFromMessages() method from bedrock - Tools are always provided in Roo Code, no need for historical tool detection
…I providers After PR #10841, tools are ALWAYS present (minimum 6 from ALWAYS_AVAILABLE_TOOLS) and tool_choice is always set to 'auto' when tools are present. This eliminates the need for defensive conditional checks. Changes: - Simplified 27 API provider files to use direct property assignments - Updated 14 test files to reflect new behavior where tools are always present - Changed patterns from conditional spreads to direct assignments: Before: ...(metadata?.tools?.length ? { tools: ... } : {}) After: tools: convertTools(metadata?.tools ?? []) All 859 provider tests pass.
| }), | ||
| tools: this.convertToolsForOpenAI(metadata?.tools), | ||
| tool_choice: metadata?.tool_choice, | ||
| parallel_tool_calls: metadata?.parallelToolCalls ?? false, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A bunch of providers now always send parallel_tool_calls: false when metadata.parallelToolCalls is unset. This is a behavior change (and a few earlier threads explicitly preferred omitting the field unless requested), so it can break backends that treat presence of the field differently from absence. Consider only including parallel_tool_calls when metadata.parallelToolCalls !== undefined (like the earlier DeepSeek tweak) to avoid changing default wire semantics.
Fix it with Roo Code or mention @roomote and request a fix.
Closes #10848
Removes all legacy XML-based tool calling support with zero fallback.
Validation: