-
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. All previously flagged items look resolved, and no new issues found in this review.
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.
- Remove unused xmlInfo variables in ReadFileTool.ts (renamed to toolInfo for clarity) - Fix test name in multiApplyDiffTool.spec.ts to reflect native protocol - All tests passing
… true Matt pointed out in PR #10458 review that this behavioral change should be handled separately. This reverts to the original behavior where: - parallel_tool_calls is only sent to API when explicitly set to true - When false or undefined, the parameter is omitted entirely (allows API defaults) Updated 13 provider files and 8 test files to restore this behavior.
Always send parallel_tool_calls explicitly (defaulting to false) instead of only sending when truthy. This preserves the original behavior when toolProtocol was "native".
Closes #10848
Removes all legacy XML-based tool calling support with zero fallback.
Validation: