-
Notifications
You must be signed in to change notification settings - Fork 2.7k
feat: add tool alias support for model-specific tool customization #9989
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
Conversation
No new issues found. The latest commit removes a redundant alias registration loop that duplicated logic already handled in
Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues. |
8e2bd0c to
ec15a07
Compare
This PR adds a tool alias system that allows models to expose tools under
different names while mapping to existing tool implementations. This is
particularly useful for:
1. Model-specific tool naming preferences (e.g., 'edit_file' -> 'search_and_replace')
2. Backward compatibility when renaming tools
3. Semantic tool naming that better matches model training
## Changes
### Core Alias Infrastructure
- Added `aliases` property to BaseTool for defining alternative tool names
- Implemented alias registration and validation in filter-tools-for-mode.ts
- Added `resolveToolAlias()`, `applyToolAliases()`, and `getToolAliasGroup()` helpers
### Model Tool Customization
- Enhanced `applyModelToolCustomization()` to track alias renames
- Updated `filterNativeToolsForMode()` to rename tools based on aliases in modelInfo.includedTools
- Added alias resolution in presentAssistantMessage.ts for tool validation
### Parser Support
- Added alias resolution in NativeToolCallParser for both streaming and finalized tool calls
- Added `search_and_replace` case in `createPartialToolUse()` for streaming updates
### Example Usage
In modelInfo:
```typescript
{
includedTools: ['edit_file'], // Alias for search_and_replace
excludedTools: ['apply_diff']
}
```
The model will see and use 'edit_file', but internally it maps to 'search_and_replace'.
## Test Coverage
- Added comprehensive tests for alias resolution functions
- Added tests for model tool customization with aliases
- Added tests for native tool filtering with alias renames
…ion context When tool aliases are used (e.g., 'edit_file' -> 'search_and_replace'), the alias name is now preserved and written to API history instead of the canonical name. This prevents confusion in multi-turn conversations where the model sees a different tool name in history than what it was told the tool was named. Changes: - NativeToolCallParser.ts already stores originalName when alias differs from resolved - Task.ts now uses originalName (alias) when available for API history
… tool customization
923a1e3 to
08e3b8e
Compare
- Add TOOL_ALIASES constant to src/shared/tools.ts as single source of truth - Update filter-tools-for-mode.ts to use central constant instead of tool instances - Remove aliases property from BaseTool and individual tool classes - Simplifies adding new aliases to a single-line change in shared/tools.ts
- Pre-compute alias groups at module load time (ALIAS_GROUPS map) - Simplify getToolAliasGroup to O(1) lookup using pre-computed map - Remove redundant applyToolAliases call (already resolved in applyModelToolCustomization) - Simplify isToolAllowedInMode to resolve alias once instead of iterating group
Addresses review feedback: TOOL_ALIASES is static and tool definitions do not change at runtime, so renamed tool definitions are now cached in RENAMED_TOOL_CACHE to avoid creating 2 new objects via spread operators on every assistant message.
The loop in filterNativeToolsForMode that registers alias renames for tools that are allowed and explicitly requested as aliases is redundant. This logic is already handled in applyModelToolCustomization at lines 195-205, which adds alias renames when processing includedTools. The removed code was iterating over modelInfo.includedTools a second time to add the same entries to aliasRenames that applyModelToolCustomization had already added.
hannesrudolph
left a comment
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.
Tested!
No new issues found. The implementation is well-structured with centralized alias management, pre-computed lookup maps for O(1) performance, and proper caching of renamed tool definitions. All previous review feedback has been addressed.
Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues. |
No issues found. The implementation is well-structured with centralized alias management in
Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues. |
* fix: race condition in new_task tool for native protocol (RooCodeInc#9655) The pendingNewTaskToolCallId was being set AFTER startSubtask() returned. However, startSubtask() contains a 500ms delay during which the subtask could complete. If the subtask completed during this window, completeSubtask() would be called before pendingNewTaskToolCallId was set, causing it to fall through to the XML protocol path and add a text message instead of a proper tool_result block, breaking the API conversation structure. This fix moves the pendingNewTaskToolCallId assignment to happen BEFORE calling startSubtask(), ensuring the ID is set before the subtask starts. If the subtask creation fails, the pending ID is cleared. * chore: add changeset for v3.34.8 (RooCodeInc#9657) * Changeset version bump (RooCodeInc#9658) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: add model-specific tool customization via excludedTools and includedTools (RooCodeInc#9641) * feat: add model-specific tool customization via excludedTools and includedTools - Add excludedTools and includedTools to ModelInfo schema - Implement applyModelToolCustomization helper to filter tools based on model config - Integrate model tool filtering into filterNativeToolsForMode for native protocol - Add comprehensive tests for tool customization functionality - Wire up modelInfo through buildNativeToolsArray and Task.ts This allows providers to override which native tools are available on a per-model basis via MODEL_DEFAULTS, enabling better control over tool selection for models with specific needs. * feat: add customTools for opt-in only tools - Add customTools array to ToolGroupConfig for defining opt-in only tools - Update getToolsForMode() to exclude customTools from default tool set - Modify applyModelToolCustomization() to include customTools only via includedTools - Add tests for customTools functionality - Add comprehensive documentation with usage examples customTools allows defining tools that are NOT available by default, even when a mode includes their group. These tools are only available when explicitly included via a model's includedTools configuration. This enables: - Gradual rollout of experimental tools - Model-specific specialized capabilities - Safe experimentation without affecting default tool sets * Add assertions for customTools tests per review feedback * test: add tests for including customTools via includedTools * Update src/core/prompts/tools/__tests__/filter-tools-for-mode.spec.ts Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> --------- Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * feat(web-evals): add task log viewing, export failed logs, and new run options (RooCodeInc#9637) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Metadata‑driven subtasks (no UI changes): automatic parent resume and single‑open safety (RooCodeInc#9090) * feat: add search_and_replace tool for batch text replacements (RooCodeInc#9549) Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com> * feat: enable native tool support for DeepSeek and Doubao models (RooCodeInc#9671) Add supportsNativeTools: true to DeepSeek and Doubao model definitions, enabling native OpenAI-compatible tool calling for these providers. Both providers already extend OpenAiHandler which has built-in support for native tools, so this change is all that's needed to enable the feature. * feat: add native tool support to Requesty provider (RooCodeInc#9672) - Import resolveToolProtocol and TOOL_PROTOCOL from @roo-code/types - Add tools and tool_choice to completion params when native protocol is enabled - Handle tool_call_partial chunks in streaming response - Add comprehensive tests for native tool support * Include tool format in environment details (RooCodeInc#9661) * feat(groq): enable native tool support for models that support function calling (RooCodeInc#9673) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: add native tools support for OpenAI-compatible providers (RooCodeInc#9676) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: enable native tool calls for Vertex Gemini models (RooCodeInc#9678) Add supportsNativeTools: true to all Gemini-based models in the Vertex provider. The VertexHandler extends GeminiHandler which already has full native tool handling logic implemented. Models updated: - gemini-3-pro-preview - gemini-2.5-flash-preview-05-20:thinking - gemini-2.5-flash-preview-05-20 - gemini-2.5-flash - gemini-2.5-flash-preview-04-17:thinking - gemini-2.5-flash-preview-04-17 - gemini-2.5-pro-preview-03-25 - gemini-2.5-pro-preview-05-06 - gemini-2.5-pro-preview-06-05 - gemini-2.5-pro - gemini-2.5-pro-exp-03-25 - gemini-2.0-pro-exp-02-05 - gemini-2.0-flash-001 - gemini-2.0-flash-lite-001 - gemini-2.0-flash-thinking-exp-01-21 - gemini-1.5-flash-002 - gemini-1.5-pro-002 - gemini-2.5-flash-lite-preview-06-17 * fix: display install count in millions instead of thousands (RooCodeInc#9677) Co-authored-by: Roo Code <roomote@roocode.com> * feat: add apply_patch native tool (RooCodeInc#9663) Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com> * feat: add debug buttons to view API and UI history (RooCodeInc#9684) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * test(workflow): update test expectations after removing run_test functionality * Add web-evals updates and kill run functionality (RooCodeInc#9681) Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> Co-authored-by: Roo Code <roomote@roocode.com> * Add Grok 4 Fast and Grok 4.1 Fast, plus xAI native tool calling (RooCodeInc#9690) * Add Grok 4 Fast and Grok 4.1 Fast * Add native tool calling support * Add native tool calling for deepinfra (RooCodeInc#9691) * fix(chat): correct message visibility condition filter * fix(utils): wrap os-name call in safe fallback for zgsm OS detection * refactor(core): clean up unused imports and improve file handling logic * refactor: adjust file limits and multipliers * ux: Improvements to the new, RCC Provider centric onboarding flow (RooCodeInc#9709) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * ux: Toolbar cleanup and settings consolidation (RooCodeInc#9710) Co-authored-by: Roo Code <roomote@roocode.com> * Update a couple provider labels (RooCodeInc#9711) Co-authored-by: Roo Code <roomote@roocode.com> * Release: v1.88.0 (RooCodeInc#9713) * Remove TabContent wrapper from Modes and MCP (RooCodeInc#9712) * fix: preserve tool_use blocks in summary for parallel tool calls (RooCodeInc#9714) Co-authored-by: huajiwuyan <huajiwuyan@gmail.com> * feat(chutes): detect native tool support from API supported_features (RooCodeInc#9715) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Add NTC support for Cerebras (RooCodeInc#9692) * Add native tools support to Unbound (RooCodeInc#9699) Co-authored-by: Roo Code <roomote@roocode.com> * Add native tool support for vercel ai gateway (RooCodeInc#9697) Co-authored-by: Roo Code <roomote@roocode.com> * Default grok code fast to native tools (RooCodeInc#9717) * Bedrock native tool calling (RooCodeInc#9698) * Support tool calling in native ollama provider (RooCodeInc#9696) Co-authored-by: Roo Code <roomote@roocode.com> * feat: add native tool support for LiteLLM provider (RooCodeInc#9719) * fix: prevent navigation buttons from wrapping on smaller screens (RooCodeInc#9721) Co-authored-by: Roo Code <roomote@roocode.com> * chore: add changeset for v3.35.0 (RooCodeInc#9724) * Changeset version bump (RooCodeInc#9725) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * chore: bump version to v1.89.0 (RooCodeInc#9718) * fix: flush pending tool results before task delegation (RooCodeInc#9726) When tools are called in parallel (e.g., update_todo_list + new_task), the tool results accumulate in userMessageContent but aren't saved to API history until all tools complete. When new_task triggers delegation, the parent is disposed before these pending results are saved, causing 400 errors when the parent resumes (missing tool_result for tool_use). This fix: - Adds flushPendingToolResultsToHistory() method in Task.ts that saves pending userMessageContent to API history - Calls this method in delegateParentAndOpenChild() before disposing the parent task - Safe for both native/XML protocols and sequential/parallel execution (returns early if there's nothing to flush) * Better IPC error logging (RooCodeInc#9727) * chore: add changeset for v3.35.1 (RooCodeInc#9728) * Changeset version bump (RooCodeInc#9729) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Pass app version to provider (RooCodeInc#9730) * Allow models to contain default temperature (RooCodeInc#9734) * Look for a tag in the Roo provider to default the model to native tool calling (RooCodeInc#9735) * Assume all LiteLLM models support native tools (RooCodeInc#9736) * chore: add changeset for v3.35.2 (RooCodeInc#9737) * Changeset version bump (RooCodeInc#9738) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Merge remote-tracking branch 'upstream/main' into roo-to-main * Switch to new welcome view (RooCodeInc#9741) * web: Homepage changes (RooCodeInc#9675) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Add vendor confidentiality section to the system prompt for stealth models (RooCodeInc#9742) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * chore: add changeset for v3.35.3 (RooCodeInc#9743) * Changeset version bump (RooCodeInc#9745) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Refactor: Remove line_count parameter from write_to_file tool (RooCodeInc#9667) * fix: remove reasoning toggles for GLM-4.5 and GLM-4.6 on z.ai provider (RooCodeInc#9752) Co-authored-by: Roo Code <roomote@roocode.com> * fix: handle malformed native tool calls to prevent hanging (RooCodeInc#9758) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * chore: add changeset for v3.35.4 (RooCodeInc#9763) * Changeset version bump (RooCodeInc#9764) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Convert the Roo provider tools for OpenAI (RooCodeInc#9769) * Update the evals keygen command (RooCodeInc#9754) * feat: Add provider routing selection for OpenRouter embeddings (RooCodeInc#9144) (RooCodeInc#9693) Co-authored-by: Sannidhya <sann@Sannidhyas-MacBook-Pro.local> * ux: Updates to CloudView (RooCodeInc#9776) * refactor: remove TabHeader and onDone callback from CloudView - Removed TabHeader component from CloudView as it is no longer needed - Removed onDone prop from CloudView component definition and usage - Updated all test files to reflect the removal of onDone prop - Kept Button import that was accidentally removed initially * Updates upsell copy to reflect today's product * Update webview-ui/src/components/cloud/CloudView.tsx Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Update webview-ui/src/i18n/locales/ko/cloud.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Update webview-ui/src/i18n/locales/zh-CN/cloud.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Test fixes --------- Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Bruno Bergher <bruno@roocode.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Update model key for minimax in MODEL_DEFAULTS (RooCodeInc#9778) Co-authored-by: Roo Code <roomote@roocode.com> * Release v3.35.5 (RooCodeInc#9781) * Changeset version bump (RooCodeInc#9783) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Use search_and_replace for minimax (RooCodeInc#9780) * fix: restore context when rewinding after condense (RooCodeInc#8295) (RooCodeInc#9665) * fix: remove omission detection logic to fix false positives (RooCodeInc#9787) Co-authored-by: Roo Code <roomote@roocode.com> * Fix Vercel AI Gateway model fetching (RooCodeInc#9791) Co-authored-by: Roo Code <roomote@roocode.com> * refactor: remove insert_content tool (RooCodeInc#9751) Co-authored-by: Roo Code <roomote@roocode.com> * feat: add reasoning_details support to Roo provider (RooCodeInc#9796) - Add currentReasoningDetails accumulator to track reasoning details - Add getReasoningDetails() method to expose accumulated details - Handle reasoning_details array format in streaming responses - Accumulate reasoning details by type-index key - Support reasoning.text, reasoning.summary, and reasoning.encrypted types - Maintain backward compatibility with legacy reasoning format - Follows same pattern as OpenRouter provider Co-authored-by: Roo Code <roomote@roocode.com> * chore: hide parallel tool calls experiment and disable feature (RooCodeInc#9798) * Update next.js (RooCodeInc#9799) * Fix the download count on the homepage (RooCodeInc#9807) * Default to native tools for all models in the Roo provider (RooCodeInc#9811) Co-authored-by: Roo Code <roomote@roocode.com> * Fix/cerebras conservative max tokens (RooCodeInc#9804) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Release v3.36.0 (RooCodeInc#9814) * Changeset version bump (RooCodeInc#9828) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Merge remote-tracking branch 'upstream/main' into roo-to-main * ux: improved error messages and documentation links (RooCodeInc#9777) * Minor ui tweaks * Basic setup for richer API request errors * Better errors messages and contact link * i18n * Update webview-ui/src/i18n/locales/en/chat.json Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Update webview-ui/src/i18n/locales/en/chat.json Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Empty better than null * Update webview-ui/src/i18n/locales/nl/chat.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * i18n * Start retryAttempt at 1 * Reverse retryAttempt number, just ommit it from the message --------- Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * web: New Pricing Page (RooCodeInc#9821) * Removes Pro, restructures pricing page * Solves provider/credits * Update apps/web-roo-code/src/app/pricing/page.tsx Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Updates agent landing pages to not mention a trial that doesn't exist * Updates agent-specific landing pages to reflect new home and trial * Indicate the agent landing page the user came from * Clean up the carousel --------- Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Ignore input to the execa terminal process (RooCodeInc#9827) * fix: Overly round follow-up question suggestions (RooCodeInc#9829) Not that rounded * Always enabled reasoning for models that require it (RooCodeInc#9836) * ChatView: smoother stick-to-bottom during streaming (RooCodeInc#8999) * feat: add symlink support for slash commands in .roo/commands folder (RooCodeInc#9838) Co-authored-by: Roo Code <roomote@roocode.com> * fix: sanitize reasoning_details IDs to remove invalid characters (RooCodeInc#9839) * feat(evals-ui): Add filtering, bulk delete, tool consolidation, and run notes (RooCodeInc#9837) * Be safer about large file reads (RooCodeInc#9843) validateFileTokenBudget wasn't being called considering the output budget. * Revert "fix: sanitize reasoning_details IDs to remove invalid characters" (RooCodeInc#9846) * Merge remote-tracking branch 'upstream/main' into roo-to-main * Exclude the ID from Roo reasoning details (RooCodeInc#9847) * fix: prevent cascading truncation loop by only truncating visible messages (RooCodeInc#9844) * FIX + feat: add MessageManager layer for centralized history coordination (RooCodeInc#9842) * feat(web-evals): add multi-model launch and UI improvements (RooCodeInc#9845) Co-authored-by: Roo Code <roomote@roocode.com> * Revert "Exclude the ID from Roo reasoning details" (RooCodeInc#9850) * fix: handle unknown/invalid native tool calls to prevent extension freeze (RooCodeInc#9834) * feat: add gpt-5.1-codex-max model to OpenAI provider (RooCodeInc#9848) * Delete .changeset/symlink-commands.md * Release v3.36.1 (RooCodeInc#9851) * Changeset version bump (RooCodeInc#9840) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: add dynamic settings support for Roo models from API (RooCodeInc#9852) * chore: restrict gpt-5 tool set to apply_patch (RooCodeInc#9853) * Fix chutes model fetching (RooCodeInc#9854) * Release v3.36.2 (RooCodeInc#9855) * Changeset version bump (RooCodeInc#9856) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Better error logs for parseToolCall exceptions (RooCodeInc#9857) * (update): Add DeepSeek V3-2 Support for Baseten Provider (RooCodeInc#9861) Co-authored-by: AlexKer <AlexKer@users.noreply.github.com> * web: Product pages (RooCodeInc#9865) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * fix: sanitize removed/invalid API providers to prevent infinite loop (RooCodeInc#9869) * Update xAI models catalog (RooCodeInc#9872) * refactor: decouple tools from system prompt (RooCodeInc#9784) * Stop making count_tokens requests (RooCodeInc#9884) * Default to using native tools when supported on openrouter (RooCodeInc#9878) * feat: change defaultToolProtocol default from xml to native (RooCodeInc#9892) * feat: change defaultToolProtocol to default to native instead of xml * fix: add missing getMcpHub mock to Subtask Rate Limiting tests --------- Co-authored-by: Roo Code <roomote@roocode.com> * Refactor: Unified context-management architecture with improved UX (RooCodeInc#9795) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Make eval runs deleteable (RooCodeInc#9909) * fix: add Kimi, MiniMax, and Qwen model configurations for Bedrock (RooCodeInc#9905) * fix: add Kimi, MiniMax, and Qwen model configurations for Bedrock - Add moonshot.kimi-k2-thinking with 32K max tokens and 256K context - Add minimax.minimax-m2 with 16K max tokens and 230K context - Add qwen.qwen3-next-80b-a3b with 8K max tokens and 262K context - Add qwen.qwen3-coder-480b-a35b-v1:0 with 8K max tokens and 262K context All models configured with native tool support and appropriate pricing. Fixes RooCodeInc#9902 * fix: add preserveReasoning flag and update Kimi K2 context window - Added preserveReasoning: true to moonshot.kimi-k2-thinking model - Added preserveReasoning: true to minimax.minimax-m2 model - Updated Kimi K2 context window from 256_000 to 262_144 These changes ensure: 1. Reasoning traces are properly preserved for both models 2. Roo correctly recognizes task completion 3. Tool calls within reasoning traces are handled appropriately 4. Context window matches AWS Console specification * fix: update MiniMax M2 context window to 196_608 for Bedrock Based on AWS CLI testing, the actual context window limit for MiniMax M2 on Bedrock is 196,608 tokens, not 230,000 as initially configured. * Update packages/types/src/providers/bedrock.ts Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> --------- Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * fix: use foreground color for context-management icons (RooCodeInc#9912) * feat: add xhigh reasoning effort for gpt-5.1-codex-max (RooCodeInc#9900) * feat: add xhigh reasoning effort for gpt-5.1-codex-max * fix: Address openai-native.spec.ts test failure * chore: Localisation of 'Extra high' * chore: revert unrelated CustomModesManager refactoring --------- Co-authored-by: Hannes Rudolph <hrudolph@gmail.com> * feat: add search_replace native tool for single-replacement operations (RooCodeInc#9918) Adds a new search_replace tool that performs a single search and replace operation on a file, requiring the old_string to uniquely identify the target text with 3-5 lines of context. Parameters: - file_path: Path to file (relative or absolute) - old_string: Text to find (must be unique in file) - new_string: Replacement text (must differ from old_string) * Improve cloud job error logging for RCC provider errors (RooCodeInc#9924) * feat: configure tool preferences for xAI models (RooCodeInc#9923) * fix: process finish_reason to emit tool_call_end events (RooCodeInc#9927) * fix: suppress 'ask promise was ignored' error in handleError (RooCodeInc#9914) * fix: exclude apply_diff from native tools when diffEnabled is false (RooCodeInc#9920) Co-authored-by: Roo Code <roomote@roocode.com> * Try to make OpenAI errors more useful (RooCodeInc#9639) * refactor: consolidate ThinkingBudget components and fix disable handling (RooCodeInc#9930) * Add timeout to OpenAI Compatible Provider Client (RooCodeInc#9898) * fix: add finish_reason processing to xai.ts provider (RooCodeInc#9929) * Remove defaultTemperature from Roo provider configuration (RooCodeInc#9932) Co-authored-by: Roo Code <roomote@roocode.com> * feat: forbid time estimates in architect mode (RooCodeInc#9931) Co-authored-by: Roo Code <roomote@roocode.com> * feat: streaming tool stats + token usage throttling (RooCodeInc#9926) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: Make Architect save to `/plans` and gitignore it (RooCodeInc#9944) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: Roo Code <roomote@roocode.com> * feat: add announcement support CTA and social icons (RooCodeInc#9945) * fix: display actual API error message instead of generic text on retry (RooCodeInc#9954) * feat(roo): add versioned settings support with minPluginVersion gating (RooCodeInc#9934) * Revert "feat: change defaultToolProtocol default from xml to native" (RooCodeInc#9956) * fix: return undefined instead of 0 for disabled API timeout (RooCodeInc#9960) * feat(deepseek): update DeepSeek models to V3.2 with new pricing (RooCodeInc#9962) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Add a way to save screenshots from the browser tool (RooCodeInc#9963) * Add a way to save screenshots from the browser tool * fix: use cross-platform paths in BrowserSession screenshot tests * fix: validate screenshot paths to prevent filesystem escape --------- Co-authored-by: Roo Code <roomote@roocode.com> * Tweaks to baseten model definitions (RooCodeInc#9866) * fix: always show tool protocol selector for openai-compatible (RooCodeInc#9966) * feat: add API error telemetry to OpenRouter provider (RooCodeInc#9953) Co-authored-by: Roo Code <roomote@roocode.com> * fix: validate and fix tool_result IDs before API requests (RooCodeInc#9952) Co-authored-by: cte <cestreich@gmail.com> Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Hannes Rudolph <hrudolph@gmail.com> * fix: respect explicit supportsReasoningEffort array values (RooCodeInc#9970) * v3.36.3 (RooCodeInc#9972) * fix(activate): unify webview panel identifier to use consistent tabPanelId * feat(gemini): add minimal and medium reasoning effort levels (RooCodeInc#9973) Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: cte <cestreich@gmail.com> * Delete changeset files (RooCodeInc#9977) * Add missing release notes for v3.36.3 (RooCodeInc#9979) * feat: add error details modal with on-demand display (RooCodeInc#9985) * feat: add error details modal with on-demand display - Add errorDetails prop to ErrorRow component - Show Info icon on hover in error header when errorDetails is provided - Display detailed error message in modal dialog on Info icon click - Add Copy to Clipboard button in error details modal - Update generic error case to show localized message with details on demand - Add i18n translations for error details UI * UI Tweaks * Properly handles error details * i18n * Lighter visual treatment for errors --------- Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Bruno Bergher <bruno@roocode.com> * Fix: Correct TODO list display order in chat view (ROO-107) (RooCodeInc#9991) Co-authored-by: Roo Code <roomote@roocode.com> * fix: prevent premature rawChunkTracker clearing for MCP tools (RooCodeInc#9993) * fix: filter out 429 rate limit errors from API error telemetry (RooCodeInc#9987) Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: cte <cestreich@gmail.com> * Release v3.36.4 (RooCodeInc#9994) * Changeset version bump (RooCodeInc#9995) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> * feat(telemetry): add app version to exception captures and filter 402 errors (RooCodeInc#9996) Co-authored-by: cte <cestreich@gmail.com> * Remove Glama provider (RooCodeInc#9801) * @roo-code/types v1.90.0 (RooCodeInc#9998) * fix: apply versioned settings on nightly builds (RooCodeInc#9997) * feat: add toggle for Enter key behavior in chat input (RooCodeInc#10002) * chore: remove list_code_definition_names tool (RooCodeInc#10005) Co-authored-by: cte <cestreich@gmail.com> * Update roomotes.yml (RooCodeInc#10008) * fix: add general API endpoints for Z.ai provider (RooCodeInc#9894) Co-authored-by: Roo Code <roomote@roocode.com> * fix: handle empty Gemini responses and reasoning loops (RooCodeInc#10007) * fix: add missing tool_result blocks to prevent API errors (RooCodeInc#10015) * feat: add gpt-5.2 model to openai-native provider (RooCodeInc#10024) * test: update built-in commands count to 9 * fix: filter orphaned tool_results when more results than tool_uses (RooCodeInc#10027) * Release v3.36.5 (RooCodeInc#10029) * Changeset version bump (RooCodeInc#10032) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> * fix: merge settings and versionedSettings for Roo provider models (RooCodeInc#10030) * Revert "fix: merge settings and versionedSettings for Roo provider models" (RooCodeInc#10034) * Revert the 3.6.5 release (we halted it) (RooCodeInc#10036) * Release v3.36.5 (RooCodeInc#10037) * Changeset version bump (RooCodeInc#10038) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> * test: adjust terminal count limits in TerminalRegistry tests * ux: improve auto-approve timer visibility in follow-up suggestions (RooCodeInc#10048) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: Roo Code <roomote@roocode.com> * fix: cancel auto-approval timeout when user starts typing (RooCodeInc#9937) Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * fix: extract raw error message from OpenRouter metadata (RooCodeInc#10039) OpenRouter wraps upstream provider errors in a generic message but includes the actual error in metadata.raw. This change: - Adds OpenRouterErrorResponse interface for proper typing - Creates handleStreamingError() helper for DRY error handling - Extracts metadata.raw for actionable error messages in PostHog - Includes nested error structure so getErrorMessage() can extract raw message Before: PostHog receives '400 Provider returned error' (generic) After: PostHog receives 'Model xyz not found' (actionable) This enables proper error tracking and debugging via PostHog telemetry. * feat: add tool alias support for model-specific tool customization (RooCodeInc#9989) Co-authored-by: Hannes Rudolph <hrudolph@gmail.com> * fix: show tool protocol dropdown for LiteLLM provider (RooCodeInc#10053) * feat: add WorkspaceTaskVisibility type for organization cloud settings (RooCodeInc#10020) * feat: add WorkspaceTaskVisibility type and workspaceTaskVisibility property to OrganizationCloudSettings * refactor: create workspaceTaskVisibilitySchema and derive WorkspaceTaskVisibility type from it --------- Co-authored-by: Roo Code <roomote@roocode.com> * Release: v1.91.0 (RooCodeInc#10055) chore: bump version to v1.91.0 * feat: sanitize MCP server/tool names for API compatibility (RooCodeInc#10054) * Release v3.36.6 (RooCodeInc#10057) * Changeset version bump (RooCodeInc#10058) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> * fix: use JavaScript-based hover for checkpoint menu visibility (RooCodeInc#10056) --------- Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: Hannes Rudolph <hrudolph@gmail.com> Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com> Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Bruno Bergher <bruno@roocode.com> Co-authored-by: Silentflower <33809253+SilentFlower@users.noreply.github.com> Co-authored-by: huajiwuyan <huajiwuyan@gmail.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> Co-authored-by: SannidhyaSah <sah_sannidhya@outlook.com> Co-authored-by: Sannidhya <sann@Sannidhyas-MacBook-Pro.local> Co-authored-by: John Richmond <5629+jr@users.noreply.github.com> Co-authored-by: Seb Duerr <sebastian.duerr@cerebras.net> Co-authored-by: Alex Ker <thealexker@gmail.com> Co-authored-by: AlexKer <AlexKer@users.noreply.github.com> Co-authored-by: Andrew Ginns <ginns.aw@gmail.com> Co-authored-by: Dennise Bartlett <bartlett.dc.1@gmail.com>
* Changeset version bump (RooCodeInc#9658) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: add model-specific tool customization via excludedTools and includedTools (RooCodeInc#9641) * feat: add model-specific tool customization via excludedTools and includedTools - Add excludedTools and includedTools to ModelInfo schema - Implement applyModelToolCustomization helper to filter tools based on model config - Integrate model tool filtering into filterNativeToolsForMode for native protocol - Add comprehensive tests for tool customization functionality - Wire up modelInfo through buildNativeToolsArray and Task.ts This allows providers to override which native tools are available on a per-model basis via MODEL_DEFAULTS, enabling better control over tool selection for models with specific needs. * feat: add customTools for opt-in only tools - Add customTools array to ToolGroupConfig for defining opt-in only tools - Update getToolsForMode() to exclude customTools from default tool set - Modify applyModelToolCustomization() to include customTools only via includedTools - Add tests for customTools functionality - Add comprehensive documentation with usage examples customTools allows defining tools that are NOT available by default, even when a mode includes their group. These tools are only available when explicitly included via a model's includedTools configuration. This enables: - Gradual rollout of experimental tools - Model-specific specialized capabilities - Safe experimentation without affecting default tool sets * Add assertions for customTools tests per review feedback * test: add tests for including customTools via includedTools * Update src/core/prompts/tools/__tests__/filter-tools-for-mode.spec.ts Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> --------- Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * feat(web-evals): add task log viewing, export failed logs, and new run options (RooCodeInc#9637) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Metadata‑driven subtasks (no UI changes): automatic parent resume and single‑open safety (RooCodeInc#9090) * feat: add search_and_replace tool for batch text replacements (RooCodeInc#9549) Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com> * feat: enable native tool support for DeepSeek and Doubao models (RooCodeInc#9671) Add supportsNativeTools: true to DeepSeek and Doubao model definitions, enabling native OpenAI-compatible tool calling for these providers. Both providers already extend OpenAiHandler which has built-in support for native tools, so this change is all that's needed to enable the feature. * feat: add native tool support to Requesty provider (RooCodeInc#9672) - Import resolveToolProtocol and TOOL_PROTOCOL from @roo-code/types - Add tools and tool_choice to completion params when native protocol is enabled - Handle tool_call_partial chunks in streaming response - Add comprehensive tests for native tool support * Include tool format in environment details (RooCodeInc#9661) * feat(groq): enable native tool support for models that support function calling (RooCodeInc#9673) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: add native tools support for OpenAI-compatible providers (RooCodeInc#9676) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: enable native tool calls for Vertex Gemini models (RooCodeInc#9678) Add supportsNativeTools: true to all Gemini-based models in the Vertex provider. The VertexHandler extends GeminiHandler which already has full native tool handling logic implemented. Models updated: - gemini-3-pro-preview - gemini-2.5-flash-preview-05-20:thinking - gemini-2.5-flash-preview-05-20 - gemini-2.5-flash - gemini-2.5-flash-preview-04-17:thinking - gemini-2.5-flash-preview-04-17 - gemini-2.5-pro-preview-03-25 - gemini-2.5-pro-preview-05-06 - gemini-2.5-pro-preview-06-05 - gemini-2.5-pro - gemini-2.5-pro-exp-03-25 - gemini-2.0-pro-exp-02-05 - gemini-2.0-flash-001 - gemini-2.0-flash-lite-001 - gemini-2.0-flash-thinking-exp-01-21 - gemini-1.5-flash-002 - gemini-1.5-pro-002 - gemini-2.5-flash-lite-preview-06-17 * fix: display install count in millions instead of thousands (RooCodeInc#9677) Co-authored-by: Roo Code <roomote@roocode.com> * feat: add apply_patch native tool (RooCodeInc#9663) Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com> * feat: add debug buttons to view API and UI history (RooCodeInc#9684) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * test(workflow): update test expectations after removing run_test functionality * Add web-evals updates and kill run functionality (RooCodeInc#9681) Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> Co-authored-by: Roo Code <roomote@roocode.com> * Add Grok 4 Fast and Grok 4.1 Fast, plus xAI native tool calling (RooCodeInc#9690) * Add Grok 4 Fast and Grok 4.1 Fast * Add native tool calling support * Add native tool calling for deepinfra (RooCodeInc#9691) * fix(chat): correct message visibility condition filter * fix(utils): wrap os-name call in safe fallback for zgsm OS detection * refactor(core): clean up unused imports and improve file handling logic * refactor: adjust file limits and multipliers * ux: Improvements to the new, RCC Provider centric onboarding flow (RooCodeInc#9709) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * ux: Toolbar cleanup and settings consolidation (RooCodeInc#9710) Co-authored-by: Roo Code <roomote@roocode.com> * Update a couple provider labels (RooCodeInc#9711) Co-authored-by: Roo Code <roomote@roocode.com> * Release: v1.88.0 (RooCodeInc#9713) * Remove TabContent wrapper from Modes and MCP (RooCodeInc#9712) * fix: preserve tool_use blocks in summary for parallel tool calls (RooCodeInc#9714) Co-authored-by: huajiwuyan <huajiwuyan@gmail.com> * feat(chutes): detect native tool support from API supported_features (RooCodeInc#9715) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Add NTC support for Cerebras (RooCodeInc#9692) * Add native tools support to Unbound (RooCodeInc#9699) Co-authored-by: Roo Code <roomote@roocode.com> * Add native tool support for vercel ai gateway (RooCodeInc#9697) Co-authored-by: Roo Code <roomote@roocode.com> * Default grok code fast to native tools (RooCodeInc#9717) * Bedrock native tool calling (RooCodeInc#9698) * Support tool calling in native ollama provider (RooCodeInc#9696) Co-authored-by: Roo Code <roomote@roocode.com> * feat: add native tool support for LiteLLM provider (RooCodeInc#9719) * fix: prevent navigation buttons from wrapping on smaller screens (RooCodeInc#9721) Co-authored-by: Roo Code <roomote@roocode.com> * chore: add changeset for v3.35.0 (RooCodeInc#9724) * Changeset version bump (RooCodeInc#9725) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * chore: bump version to v1.89.0 (RooCodeInc#9718) * fix: flush pending tool results before task delegation (RooCodeInc#9726) When tools are called in parallel (e.g., update_todo_list + new_task), the tool results accumulate in userMessageContent but aren't saved to API history until all tools complete. When new_task triggers delegation, the parent is disposed before these pending results are saved, causing 400 errors when the parent resumes (missing tool_result for tool_use). This fix: - Adds flushPendingToolResultsToHistory() method in Task.ts that saves pending userMessageContent to API history - Calls this method in delegateParentAndOpenChild() before disposing the parent task - Safe for both native/XML protocols and sequential/parallel execution (returns early if there's nothing to flush) * Better IPC error logging (RooCodeInc#9727) * chore: add changeset for v3.35.1 (RooCodeInc#9728) * Changeset version bump (RooCodeInc#9729) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Pass app version to provider (RooCodeInc#9730) * Allow models to contain default temperature (RooCodeInc#9734) * Look for a tag in the Roo provider to default the model to native tool calling (RooCodeInc#9735) * Assume all LiteLLM models support native tools (RooCodeInc#9736) * chore: add changeset for v3.35.2 (RooCodeInc#9737) * Changeset version bump (RooCodeInc#9738) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Merge remote-tracking branch 'upstream/main' into roo-to-main * Switch to new welcome view (RooCodeInc#9741) * web: Homepage changes (RooCodeInc#9675) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Add vendor confidentiality section to the system prompt for stealth models (RooCodeInc#9742) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * chore: add changeset for v3.35.3 (RooCodeInc#9743) * Changeset version bump (RooCodeInc#9745) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Refactor: Remove line_count parameter from write_to_file tool (RooCodeInc#9667) * fix: remove reasoning toggles for GLM-4.5 and GLM-4.6 on z.ai provider (RooCodeInc#9752) Co-authored-by: Roo Code <roomote@roocode.com> * fix: handle malformed native tool calls to prevent hanging (RooCodeInc#9758) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * chore: add changeset for v3.35.4 (RooCodeInc#9763) * Changeset version bump (RooCodeInc#9764) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Convert the Roo provider tools for OpenAI (RooCodeInc#9769) * Update the evals keygen command (RooCodeInc#9754) * feat: Add provider routing selection for OpenRouter embeddings (RooCodeInc#9144) (RooCodeInc#9693) Co-authored-by: Sannidhya <sann@Sannidhyas-MacBook-Pro.local> * ux: Updates to CloudView (RooCodeInc#9776) * refactor: remove TabHeader and onDone callback from CloudView - Removed TabHeader component from CloudView as it is no longer needed - Removed onDone prop from CloudView component definition and usage - Updated all test files to reflect the removal of onDone prop - Kept Button import that was accidentally removed initially * Updates upsell copy to reflect today's product * Update webview-ui/src/components/cloud/CloudView.tsx Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Update webview-ui/src/i18n/locales/ko/cloud.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Update webview-ui/src/i18n/locales/zh-CN/cloud.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Test fixes --------- Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Bruno Bergher <bruno@roocode.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Update model key for minimax in MODEL_DEFAULTS (RooCodeInc#9778) Co-authored-by: Roo Code <roomote@roocode.com> * Release v3.35.5 (RooCodeInc#9781) * Changeset version bump (RooCodeInc#9783) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Use search_and_replace for minimax (RooCodeInc#9780) * fix: restore context when rewinding after condense (RooCodeInc#8295) (RooCodeInc#9665) * fix: remove omission detection logic to fix false positives (RooCodeInc#9787) Co-authored-by: Roo Code <roomote@roocode.com> * Fix Vercel AI Gateway model fetching (RooCodeInc#9791) Co-authored-by: Roo Code <roomote@roocode.com> * refactor: remove insert_content tool (RooCodeInc#9751) Co-authored-by: Roo Code <roomote@roocode.com> * feat: add reasoning_details support to Roo provider (RooCodeInc#9796) - Add currentReasoningDetails accumulator to track reasoning details - Add getReasoningDetails() method to expose accumulated details - Handle reasoning_details array format in streaming responses - Accumulate reasoning details by type-index key - Support reasoning.text, reasoning.summary, and reasoning.encrypted types - Maintain backward compatibility with legacy reasoning format - Follows same pattern as OpenRouter provider Co-authored-by: Roo Code <roomote@roocode.com> * chore: hide parallel tool calls experiment and disable feature (RooCodeInc#9798) * Update next.js (RooCodeInc#9799) * Fix the download count on the homepage (RooCodeInc#9807) * Default to native tools for all models in the Roo provider (RooCodeInc#9811) Co-authored-by: Roo Code <roomote@roocode.com> * Fix/cerebras conservative max tokens (RooCodeInc#9804) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Release v3.36.0 (RooCodeInc#9814) * Changeset version bump (RooCodeInc#9828) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Merge remote-tracking branch 'upstream/main' into roo-to-main * ux: improved error messages and documentation links (RooCodeInc#9777) * Minor ui tweaks * Basic setup for richer API request errors * Better errors messages and contact link * i18n * Update webview-ui/src/i18n/locales/en/chat.json Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Update webview-ui/src/i18n/locales/en/chat.json Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Empty better than null * Update webview-ui/src/i18n/locales/nl/chat.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * i18n * Start retryAttempt at 1 * Reverse retryAttempt number, just ommit it from the message --------- Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * web: New Pricing Page (RooCodeInc#9821) * Removes Pro, restructures pricing page * Solves provider/credits * Update apps/web-roo-code/src/app/pricing/page.tsx Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Updates agent landing pages to not mention a trial that doesn't exist * Updates agent-specific landing pages to reflect new home and trial * Indicate the agent landing page the user came from * Clean up the carousel --------- Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Ignore input to the execa terminal process (RooCodeInc#9827) * fix: Overly round follow-up question suggestions (RooCodeInc#9829) Not that rounded * Always enabled reasoning for models that require it (RooCodeInc#9836) * ChatView: smoother stick-to-bottom during streaming (RooCodeInc#8999) * feat: add symlink support for slash commands in .roo/commands folder (RooCodeInc#9838) Co-authored-by: Roo Code <roomote@roocode.com> * fix: sanitize reasoning_details IDs to remove invalid characters (RooCodeInc#9839) * feat(evals-ui): Add filtering, bulk delete, tool consolidation, and run notes (RooCodeInc#9837) * Be safer about large file reads (RooCodeInc#9843) validateFileTokenBudget wasn't being called considering the output budget. * Revert "fix: sanitize reasoning_details IDs to remove invalid characters" (RooCodeInc#9846) * Merge remote-tracking branch 'upstream/main' into roo-to-main * Exclude the ID from Roo reasoning details (RooCodeInc#9847) * fix: prevent cascading truncation loop by only truncating visible messages (RooCodeInc#9844) * FIX + feat: add MessageManager layer for centralized history coordination (RooCodeInc#9842) * feat(web-evals): add multi-model launch and UI improvements (RooCodeInc#9845) Co-authored-by: Roo Code <roomote@roocode.com> * Revert "Exclude the ID from Roo reasoning details" (RooCodeInc#9850) * fix: handle unknown/invalid native tool calls to prevent extension freeze (RooCodeInc#9834) * feat: add gpt-5.1-codex-max model to OpenAI provider (RooCodeInc#9848) * Delete .changeset/symlink-commands.md * Release v3.36.1 (RooCodeInc#9851) * Changeset version bump (RooCodeInc#9840) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: add dynamic settings support for Roo models from API (RooCodeInc#9852) * chore: restrict gpt-5 tool set to apply_patch (RooCodeInc#9853) * Fix chutes model fetching (RooCodeInc#9854) * Release v3.36.2 (RooCodeInc#9855) * Changeset version bump (RooCodeInc#9856) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Better error logs for parseToolCall exceptions (RooCodeInc#9857) * (update): Add DeepSeek V3-2 Support for Baseten Provider (RooCodeInc#9861) Co-authored-by: AlexKer <AlexKer@users.noreply.github.com> * web: Product pages (RooCodeInc#9865) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * fix: sanitize removed/invalid API providers to prevent infinite loop (RooCodeInc#9869) * Update xAI models catalog (RooCodeInc#9872) * refactor: decouple tools from system prompt (RooCodeInc#9784) * Stop making count_tokens requests (RooCodeInc#9884) * Default to using native tools when supported on openrouter (RooCodeInc#9878) * feat: change defaultToolProtocol default from xml to native (RooCodeInc#9892) * feat: change defaultToolProtocol to default to native instead of xml * fix: add missing getMcpHub mock to Subtask Rate Limiting tests --------- Co-authored-by: Roo Code <roomote@roocode.com> * Refactor: Unified context-management architecture with improved UX (RooCodeInc#9795) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Make eval runs deleteable (RooCodeInc#9909) * fix: add Kimi, MiniMax, and Qwen model configurations for Bedrock (RooCodeInc#9905) * fix: add Kimi, MiniMax, and Qwen model configurations for Bedrock - Add moonshot.kimi-k2-thinking with 32K max tokens and 256K context - Add minimax.minimax-m2 with 16K max tokens and 230K context - Add qwen.qwen3-next-80b-a3b with 8K max tokens and 262K context - Add qwen.qwen3-coder-480b-a35b-v1:0 with 8K max tokens and 262K context All models configured with native tool support and appropriate pricing. Fixes RooCodeInc#9902 * fix: add preserveReasoning flag and update Kimi K2 context window - Added preserveReasoning: true to moonshot.kimi-k2-thinking model - Added preserveReasoning: true to minimax.minimax-m2 model - Updated Kimi K2 context window from 256_000 to 262_144 These changes ensure: 1. Reasoning traces are properly preserved for both models 2. Roo correctly recognizes task completion 3. Tool calls within reasoning traces are handled appropriately 4. Context window matches AWS Console specification * fix: update MiniMax M2 context window to 196_608 for Bedrock Based on AWS CLI testing, the actual context window limit for MiniMax M2 on Bedrock is 196,608 tokens, not 230,000 as initially configured. * Update packages/types/src/providers/bedrock.ts Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> --------- Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * fix: use foreground color for context-management icons (RooCodeInc#9912) * feat: add xhigh reasoning effort for gpt-5.1-codex-max (RooCodeInc#9900) * feat: add xhigh reasoning effort for gpt-5.1-codex-max * fix: Address openai-native.spec.ts test failure * chore: Localisation of 'Extra high' * chore: revert unrelated CustomModesManager refactoring --------- Co-authored-by: Hannes Rudolph <hrudolph@gmail.com> * feat: add search_replace native tool for single-replacement operations (RooCodeInc#9918) Adds a new search_replace tool that performs a single search and replace operation on a file, requiring the old_string to uniquely identify the target text with 3-5 lines of context. Parameters: - file_path: Path to file (relative or absolute) - old_string: Text to find (must be unique in file) - new_string: Replacement text (must differ from old_string) * Improve cloud job error logging for RCC provider errors (RooCodeInc#9924) * feat: configure tool preferences for xAI models (RooCodeInc#9923) * fix: process finish_reason to emit tool_call_end events (RooCodeInc#9927) * fix: suppress 'ask promise was ignored' error in handleError (RooCodeInc#9914) * fix: exclude apply_diff from native tools when diffEnabled is false (RooCodeInc#9920) Co-authored-by: Roo Code <roomote@roocode.com> * Try to make OpenAI errors more useful (RooCodeInc#9639) * refactor: consolidate ThinkingBudget components and fix disable handling (RooCodeInc#9930) * Add timeout to OpenAI Compatible Provider Client (RooCodeInc#9898) * fix: add finish_reason processing to xai.ts provider (RooCodeInc#9929) * Remove defaultTemperature from Roo provider configuration (RooCodeInc#9932) Co-authored-by: Roo Code <roomote@roocode.com> * feat: forbid time estimates in architect mode (RooCodeInc#9931) Co-authored-by: Roo Code <roomote@roocode.com> * feat: streaming tool stats + token usage throttling (RooCodeInc#9926) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: Make Architect save to `/plans` and gitignore it (RooCodeInc#9944) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: Roo Code <roomote@roocode.com> * feat: add announcement support CTA and social icons (RooCodeInc#9945) * fix: display actual API error message instead of generic text on retry (RooCodeInc#9954) * feat(roo): add versioned settings support with minPluginVersion gating (RooCodeInc#9934) * Revert "feat: change defaultToolProtocol default from xml to native" (RooCodeInc#9956) * fix: return undefined instead of 0 for disabled API timeout (RooCodeInc#9960) * feat(deepseek): update DeepSeek models to V3.2 with new pricing (RooCodeInc#9962) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Add a way to save screenshots from the browser tool (RooCodeInc#9963) * Add a way to save screenshots from the browser tool * fix: use cross-platform paths in BrowserSession screenshot tests * fix: validate screenshot paths to prevent filesystem escape --------- Co-authored-by: Roo Code <roomote@roocode.com> * Tweaks to baseten model definitions (RooCodeInc#9866) * fix: always show tool protocol selector for openai-compatible (RooCodeInc#9966) * feat: add API error telemetry to OpenRouter provider (RooCodeInc#9953) Co-authored-by: Roo Code <roomote@roocode.com> * fix: validate and fix tool_result IDs before API requests (RooCodeInc#9952) Co-authored-by: cte <cestreich@gmail.com> Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Hannes Rudolph <hrudolph@gmail.com> * fix: respect explicit supportsReasoningEffort array values (RooCodeInc#9970) * v3.36.3 (RooCodeInc#9972) * fix(activate): unify webview panel identifier to use consistent tabPanelId * feat(gemini): add minimal and medium reasoning effort levels (RooCodeInc#9973) Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: cte <cestreich@gmail.com> * Delete changeset files (RooCodeInc#9977) * Add missing release notes for v3.36.3 (RooCodeInc#9979) * feat: add error details modal with on-demand display (RooCodeInc#9985) * feat: add error details modal with on-demand display - Add errorDetails prop to ErrorRow component - Show Info icon on hover in error header when errorDetails is provided - Display detailed error message in modal dialog on Info icon click - Add Copy to Clipboard button in error details modal - Update generic error case to show localized message with details on demand - Add i18n translations for error details UI * UI Tweaks * Properly handles error details * i18n * Lighter visual treatment for errors --------- Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Bruno Bergher <bruno@roocode.com> * Fix: Correct TODO list display order in chat view (ROO-107) (RooCodeInc#9991) Co-authored-by: Roo Code <roomote@roocode.com> * fix: prevent premature rawChunkTracker clearing for MCP tools (RooCodeInc#9993) * fix: filter out 429 rate limit errors from API error telemetry (RooCodeInc#9987) Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: cte <cestreich@gmail.com> * Release v3.36.4 (RooCodeInc#9994) * Changeset version bump (RooCodeInc#9995) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> * feat(telemetry): add app version to exception captures and filter 402 errors (RooCodeInc#9996) Co-authored-by: cte <cestreich@gmail.com> * Remove Glama provider (RooCodeInc#9801) * @roo-code/types v1.90.0 (RooCodeInc#9998) * fix: apply versioned settings on nightly builds (RooCodeInc#9997) * feat: add toggle for Enter key behavior in chat input (RooCodeInc#10002) * chore: remove list_code_definition_names tool (RooCodeInc#10005) Co-authored-by: cte <cestreich@gmail.com> * Update roomotes.yml (RooCodeInc#10008) * fix: add general API endpoints for Z.ai provider (RooCodeInc#9894) Co-authored-by: Roo Code <roomote@roocode.com> * fix: handle empty Gemini responses and reasoning loops (RooCodeInc#10007) * fix: add missing tool_result blocks to prevent API errors (RooCodeInc#10015) * feat: add gpt-5.2 model to openai-native provider (RooCodeInc#10024) * test: update built-in commands count to 9 * fix: filter orphaned tool_results when more results than tool_uses (RooCodeInc#10027) * Release v3.36.5 (RooCodeInc#10029) * Changeset version bump (RooCodeInc#10032) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> * fix: merge settings and versionedSettings for Roo provider models (RooCodeInc#10030) * Revert "fix: merge settings and versionedSettings for Roo provider models" (RooCodeInc#10034) * Revert the 3.6.5 release (we halted it) (RooCodeInc#10036) * Release v3.36.5 (RooCodeInc#10037) * Changeset version bump (RooCodeInc#10038) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> * test: adjust terminal count limits in TerminalRegistry tests * ux: improve auto-approve timer visibility in follow-up suggestions (RooCodeInc#10048) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: Roo Code <roomote@roocode.com> * fix: cancel auto-approval timeout when user starts typing (RooCodeInc#9937) Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * fix: extract raw error message from OpenRouter metadata (RooCodeInc#10039) OpenRouter wraps upstream provider errors in a generic message but includes the actual error in metadata.raw. This change: - Adds OpenRouterErrorResponse interface for proper typing - Creates handleStreamingError() helper for DRY error handling - Extracts metadata.raw for actionable error messages in PostHog - Includes nested error structure so getErrorMessage() can extract raw message Before: PostHog receives '400 Provider returned error' (generic) After: PostHog receives 'Model xyz not found' (actionable) This enables proper error tracking and debugging via PostHog telemetry. * feat: add tool alias support for model-specific tool customization (RooCodeInc#9989) Co-authored-by: Hannes Rudolph <hrudolph@gmail.com> * fix: show tool protocol dropdown for LiteLLM provider (RooCodeInc#10053) * feat: add WorkspaceTaskVisibility type for organization cloud settings (RooCodeInc#10020) * feat: add WorkspaceTaskVisibility type and workspaceTaskVisibility property to OrganizationCloudSettings * refactor: create workspaceTaskVisibilitySchema and derive WorkspaceTaskVisibility type from it --------- Co-authored-by: Roo Code <roomote@roocode.com> * Release: v1.91.0 (RooCodeInc#10055) chore: bump version to v1.91.0 * feat: sanitize MCP server/tool names for API compatibility (RooCodeInc#10054) * Release v3.36.6 (RooCodeInc#10057) * Changeset version bump (RooCodeInc#10058) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> * fix: use JavaScript-based hover for checkpoint menu visibility (RooCodeInc#10056) * feat: remove auto-approve toggles for to-do and retry actions (RooCodeInc#10062) --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: Hannes Rudolph <hrudolph@gmail.com> Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com> Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Bruno Bergher <bruno@roocode.com> Co-authored-by: Silentflower <33809253+SilentFlower@users.noreply.github.com> Co-authored-by: huajiwuyan <huajiwuyan@gmail.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> Co-authored-by: SannidhyaSah <sah_sannidhya@outlook.com> Co-authored-by: Sannidhya <sann@Sannidhyas-MacBook-Pro.local> Co-authored-by: John Richmond <5629+jr@users.noreply.github.com> Co-authored-by: Seb Duerr <sebastian.duerr@cerebras.net> Co-authored-by: Alex Ker <thealexker@gmail.com> Co-authored-by: AlexKer <AlexKer@users.noreply.github.com> Co-authored-by: Andrew Ginns <ginns.aw@gmail.com> Co-authored-by: Dennise Bartlett <bartlett.dc.1@gmail.com>
Summary
This PR adds a tool alias system that allows models to expose tools under different names while mapping to existing tool implementations. This enables:
edit_file→apply_diff)Changes
Core Alias Infrastructure
TOOL_ALIASESconstant insrc/shared/tools.ts- single source of truth for all aliasesfilter-tools-for-mode.tsresolveToolAlias(),applyToolAliases(),getToolAliasGroup()Model Tool Customization
applyModelToolCustomization()to track alias renamesfilterNativeToolsForMode()to rename tools based on aliases inmodelInfo.includedToolspresentAssistantMessage.tsfor tool validationParser Support
NativeToolCallParserfor both streaming and finalized tool callssearch_and_replacecase increatePartialToolUse()for streaming updatesAdding a New Alias
Simply add a single line to
TOOL_ALIASESinsrc/shared/tools.ts:Example Usage
In
modelInfo:The model will see and use
edit_file, but internally it maps toapply_diff.How It Works
edit_fileis inincludedTools,filterNativeToolsForModeresolves it toapply_diff, adds it to allowed tools, and renames the tool definition back toedit_fileedit_fileNativeToolCallParser.resolveToolAlias()convertsedit_file→apply_diffvalidateToolUsereceives resolvedincludedToolsso validation passesapply_difftool executes normallyTest Coverage
Files Changed
src/shared/tools.ts- Added centralTOOL_ALIASESconstantsrc/core/prompts/tools/filter-tools-for-mode.ts- Alias registration and resolutionsrc/core/assistant-message/NativeToolCallParser.ts- Parser alias supportsrc/core/assistant-message/presentAssistantMessage.ts- Validation fixsrc/core/task/Task.ts- Preserve alias name in API historyImportant
Introduces a tool alias system for model-specific tool customization, enhancing flexibility and backward compatibility, with changes in tool resolution, validation, and execution.
TOOL_ALIASESintools.tsas a central alias registry.filter-tools-for-mode.tswith functions likeresolveToolAlias().applyModelToolCustomization()to handle alias renames.filterNativeToolsForMode()to apply alias renames.NativeToolCallParserto resolve aliases during tool call parsing.presentAssistantMessage.tsto validate tools with resolved aliases.filter-tools-for-mode.spec.ts.This description was created by
for 5964457. You can customize this summary. It will automatically update as commits are pushed.