Skip to content

Conversation

@daniel-lxs
Copy link
Member

@daniel-lxs daniel-lxs commented Dec 10, 2025

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:

  1. Model-specific tool naming preferences (e.g., edit_fileapply_diff)
  2. Backward compatibility when renaming tools
  3. Semantic tool naming that better matches model training

Changes

Core Alias Infrastructure

  • Added central TOOL_ALIASES constant in src/shared/tools.ts - single source of truth for all aliases
  • Implemented alias resolution and validation in filter-tools-for-mode.ts
  • Added helper functions: resolveToolAlias(), applyToolAliases(), getToolAliasGroup()

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

Adding a New Alias

Simply add a single line to TOOL_ALIASES in src/shared/tools.ts:

export const TOOL_ALIASES: Record<string, ToolName> = {
    edit_file: "apply_diff",
    write_file: "write_to_file",
    // Add new aliases here - no other files need changes!
} as const

Example Usage

In modelInfo:

{
  includedTools: ["edit_file"],  // Alias for apply_diff
  excludedTools: ["search_and_replace"]
}

The model will see and use edit_file, but internally it maps to apply_diff.

How It Works

  1. API Tool Building: When edit_file is in includedTools, filterNativeToolsForMode resolves it to apply_diff, adds it to allowed tools, and renames the tool definition back to edit_file
  2. Model Invocation: Model calls edit_file
  3. Parser Resolution: NativeToolCallParser.resolveToolAlias() converts edit_fileapply_diff
  4. Validation: validateToolUse receives resolved includedTools so validation passes
  5. Execution: apply_diff tool executes normally
  6. History: Original alias name preserved in API conversation history for consistency

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
  • Added tests for parser alias resolution (streaming and finalized)

Files Changed

  • src/shared/tools.ts - Added central TOOL_ALIASES constant
  • src/core/prompts/tools/filter-tools-for-mode.ts - Alias registration and resolution
  • src/core/assistant-message/NativeToolCallParser.ts - Parser alias support
  • src/core/assistant-message/presentAssistantMessage.ts - Validation fix
  • src/core/task/Task.ts - Preserve alias name in API history

Important

Introduces a tool alias system for model-specific tool customization, enhancing flexibility and backward compatibility, with changes in tool resolution, validation, and execution.

  • Behavior:
    • Introduces tool alias system allowing models to use alternative names for tools, mapping to existing implementations.
    • Supports model-specific tool naming, backward compatibility, and semantic naming.
  • Core Infrastructure:
    • Adds TOOL_ALIASES in tools.ts as a central alias registry.
    • Implements alias resolution in filter-tools-for-mode.ts with functions like resolveToolAlias().
  • Model Customization:
    • Updates applyModelToolCustomization() to handle alias renames.
    • Modifies filterNativeToolsForMode() to apply alias renames.
  • Parser and Validation:
    • Enhances NativeToolCallParser to resolve aliases during tool call parsing.
    • Updates presentAssistantMessage.ts to validate tools with resolved aliases.
  • Testing:
    • Adds tests for alias resolution and model tool customization in filter-tools-for-mode.spec.ts.

This description was created by Ellipsis for 5964457. You can customize this summary. It will automatically update as commits are pushed.

@roomote
Copy link
Contributor

roomote bot commented Dec 10, 2025

Rooviewer Clock   See task on Roo Cloud

No new issues found. The latest commit removes a redundant alias registration loop that duplicated logic already handled in applyModelToolCustomization(). All previous issues remain resolved.

  • Missing alias registration for ApplyDiffTool and WriteToFileTool - the aliases are defined but not registered in filter-tools-for-mode.ts
  • Missing changeset file for version bump and release notes
Previous reviews

Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues.

@hannesrudolph hannesrudolph added the Issue/PR - Triage New issue. Needs quick review to confirm validity and assign labels. label Dec 10, 2025
@hannesrudolph hannesrudolph force-pushed the feat/tool-aliases-for-model-customization branch 2 times, most recently from 8e2bd0c to ec15a07 Compare December 10, 2025 20:48
daniel-lxs and others added 6 commits December 11, 2025 13:36
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
@hannesrudolph hannesrudolph force-pushed the feat/tool-aliases-for-model-customization branch from 923a1e3 to 08e3b8e Compare December 11, 2025 20:38
- 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
@hannesrudolph hannesrudolph moved this from Triage to PR [Needs Review] in Roo Code Roadmap Dec 11, 2025
- 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.
@daniel-lxs daniel-lxs marked this pull request as ready for review December 12, 2025 17:43
Copy link
Collaborator

@hannesrudolph hannesrudolph left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested!

@dosubot dosubot bot added lgtm This PR has been approved by a maintainer size:L This PR changes 100-499 lines, ignoring generated files. Enhancement New feature or request labels Dec 12, 2025
@roomote
Copy link
Contributor

roomote bot commented Dec 12, 2025

Rooviewer Clock   See task on Roo Cloud

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.

  • Missing alias registration for ApplyDiffTool and WriteToFileTool - resolved by centralizing aliases in TOOL_ALIASES
  • Redundant applyToolAliases call - removed
  • Pre-computed alias groups - implemented via ALIAS_GROUPS map
  • Simplified isToolAllowedInMode - now resolves alias once
  • Cached renamed tool definitions - implemented via RENAMED_TOOL_CACHE
  • Redundant alias registration loop - removed in latest commit

Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues.

@roomote
Copy link
Contributor

roomote bot commented Dec 12, 2025

Rooviewer Clock   See task on Roo Cloud

No issues found. The implementation is well-structured with centralized alias management in TOOL_ALIASES, pre-computed lookup maps for O(1) performance, cached renamed tool definitions to avoid per-message allocation, and comprehensive test coverage.

  • Missing alias registration - resolved by centralizing in TOOL_ALIASES
  • Redundant applyToolAliases call - removed
  • Pre-computed alias groups - implemented via ALIAS_GROUPS map
  • Simplified isToolAllowedInMode - now resolves alias once
  • Cached renamed tool definitions - implemented via RENAMED_TOOL_CACHE
  • Redundant alias registration loop - removed in latest commit

Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues.

@cte cte merged commit ba7c553 into main Dec 12, 2025
26 checks passed
@cte cte deleted the feat/tool-aliases-for-model-customization branch December 12, 2025 19:05
@github-project-automation github-project-automation bot moved this from PR [Needs Review] to Done in Roo Code Roadmap Dec 12, 2025
@github-project-automation github-project-automation bot moved this from New to Done in Roo Code Roadmap Dec 12, 2025
@cte cte mentioned this pull request Dec 12, 2025
mini2s added a commit to zgsm-ai/costrict that referenced this pull request Dec 13, 2025
* 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>
mini2s added a commit to zgsm-ai/costrict that referenced this pull request Dec 14, 2025
* 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancement New feature or request lgtm This PR has been approved by a maintainer PR - Needs Review size:L This PR changes 100-499 lines, ignoring generated files.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants