Skip to content

Conversation

@roomote
Copy link
Contributor

@roomote roomote bot commented Jan 3, 2026

Related GitHub Issue

This PR addresses an internal issue identified via Slack thread - models were attempting to read too many files in the native read_file tool because the maxConcurrentFileReads limit was not documented in the tool schema.

Roo Code Task Context (Optional)

This fix was developed using Roo Code.

Description

The native tool schema for read_file was missing documentation about the maxConcurrentFileReads limit. This caused models to request more files than allowed when using native tool protocols (e.g., in cloud jobs with restricted limits), only discovering the limit after receiving runtime errors.

Key changes:

  • Update createReadFileTool to accept a maxConcurrentFileReads option via a new ReadFileToolOptions interface
  • Dynamically include the file read limit in the tool description
  • When maxConcurrentFileReads is 1, the description now clearly states "Multiple file reads are currently disabled. You can only read one file at a time."
  • When maxConcurrentFileReads > 1, the description states "You can read a maximum of X files in a single request"
  • Update getNativeTools to accept and pass the maxConcurrentFileReads option
  • Update buildNativeToolsArray to pass the limit through the call chain from Task.ts

Before: The tool description said "request related files together when allowed" without specifying what the limit was.

After: The tool description explicitly states the limit, e.g., "IMPORTANT: You can read a maximum of 5 files in a single request. If you need to read more files, use multiple sequential read_file requests."

Test Procedure

  1. Added comprehensive test suite in src/core/prompts/tools/native-tools/__tests__/read_file.spec.ts:

    • Tests for default maxConcurrentFileReads limit (5) in description
    • Tests for custom maxConcurrentFileReads limits
    • Tests for single file reads (limit=1)
    • Tests for combined options with partialReadsEnabled
    • Tests for tool structure validation
  2. Run the tests:

    cd src && npx vitest run core/prompts/tools/native-tools/__tests__/read_file.spec.ts
  3. All existing tests pass:

    cd src && npx vitest run core/prompts/tools/native-tools
    cd src && npx vitest run core/prompts/tools/__tests__/filter-tools-for-mode.spec.ts

Pre-Submission Checklist

  • Issue Linked: This PR addresses an internal issue from Slack thread (no GitHub issue).
  • Scope: My changes are focused on the linked issue (one major feature/fix per PR).
  • Self-Review: I have performed a thorough self-review of my code.
  • Testing: New and/or updated tests have been added to cover my changes.
  • Documentation Impact: No external documentation updates required - this is an internal implementation detail.
  • Contribution Guidelines: I have read and agree to the Contributor Guidelines.

Screenshots / Videos

N/A - This is a backend/prompt change with no UI impact.

Documentation Updates

  • No documentation updates are required.

Additional Notes

This fix ensures that when cloud jobs set a low maxConcurrentFileReads value (like 1), models will know about this constraint upfront in the tool schema rather than discovering it through runtime errors. This should significantly reduce wasted tokens from failed file read attempts.

Get in Touch

Roo Code Agent


Important

Add maxConcurrentFileReads limit to read_file tool schema for controlled file read operations, with updated descriptions and tests.

  • Behavior:
    • Add maxConcurrentFileReads option to createReadFileTool in read_file.ts.
    • Update tool description to reflect maxConcurrentFileReads limit.
    • Modify getNativeTools in index.ts to pass maxConcurrentFileReads.
    • Update buildNativeToolsArray in build-tools.ts to include maxConcurrentFileReads.
  • Tests:
    • Add tests in read_file.spec.ts for default and custom maxConcurrentFileReads limits.
    • Test single file reads and combined options with partialReadsEnabled.
  • Misc:
    • Update Task.ts to handle maxConcurrentFileReads in task configuration.

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

The native tool schema for read_file was missing documentation about the
maxConcurrentFileReads limit. This caused models to request more files than
allowed when using native tool protocols (e.g., in cloud jobs), only discovering
the limit after receiving runtime errors.

Changes:
- Update createReadFileTool to accept maxConcurrentFileReads option
- Include the file read limit in the tool description dynamically
- Update getNativeTools to accept and pass maxConcurrentFileReads option
- Update buildNativeToolsArray to pass the limit through the call chain
- Add comprehensive tests for the new functionality
@roomote roomote bot requested review from cte, jr and mrubens as code owners January 3, 2026 23:33
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. bug Something isn't working labels Jan 3, 2026
@roomote
Copy link
Contributor Author

roomote bot commented Jan 3, 2026

Rooviewer Clock   See task on Roo Cloud

Review completed. No issues found.

The latest changes (d1616f1) are a description cleanup that improves tool description clarity by using appropriate singular/plural forms based on maxConcurrentFileReads. The implementation correctly adds the maxConcurrentFileReads limit documentation to the native read_file tool schema with comprehensive test coverage.

Previous reviews

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

@mrubens
Copy link
Collaborator

mrubens commented Jan 3, 2026

@roomote fix the failing check

@roomote
Copy link
Contributor Author

roomote bot commented Jan 3, 2026

Fixaroo Clock   See task on Roo Cloud

Fixed the TypeScript compile error by using a FunctionTool type intersection pattern for proper type inference. All local checks passed.

View commit | Revert commit

@hannesrudolph hannesrudolph added the Issue/PR - Triage New issue. Needs quick review to confirm validity and assign labels. label Jan 3, 2026
@mrubens mrubens merged commit c307dc7 into main Jan 4, 2026
10 checks passed
@mrubens mrubens deleted the fix/native-read-file-max-concurrent-reads-limit branch January 4, 2026 00:08
@github-project-automation github-project-automation bot moved this from Triage to Done in Roo Code Roadmap Jan 4, 2026
@github-project-automation github-project-automation bot moved this from New to Done in Roo Code Roadmap Jan 4, 2026
@roomote roomote bot mentioned this pull request Jan 4, 2026
mini2s added a commit to zgsm-ai/costrict that referenced this pull request Jan 4, 2026
* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* fix: cancel auto-approval timeout when user starts typing (RooCodeInc#9937)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* fix: use JavaScript-based hover for checkpoint menu visibility (RooCodeInc#10056)

* feat: remove auto-approve toggles for to-do and retry actions (RooCodeInc#10062)

* feat(openrouter): add improvements to openrouter provider (RooCodeInc#10082)

* feat: Add Amazon Nova 2 Lite model to Bedrock provider (RooCodeInc#9830)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add AWS Bedrock service tier support (RooCodeInc#9955)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Capture more of OpenRouter's provider specific error details (RooCodeInc#10073)

* Capture more of OpenRouter's provider specific error details

* Actually match the openrouter structure

* feat(web-evals): improve run logs and formatters (RooCodeInc#10081)

* Move isToolAllowedForMode out of shared directory (RooCodeInc#10089)

* chore: add changeset for v3.36.7 (RooCodeInc#10091)

* Changeset version bump (RooCodeInc#10092)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent duplicate MCP tools error by deduplicating servers at source (RooCodeInc#10096)

* feat: add metadata to error details dialog (RooCodeInc#10050)

* feat: add metadata to error details dialog

- Prepends extension version, provider, model, and repository info to error details
- Helps users provide better bug reports with context
- Uses useExtensionState and useSelectedModel hooks for data

* Tweaks

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>

* web: Fixes link to provider pricing page (RooCodeInc#10107)

* feat(read-file): implement incremental token-budgeted file reading (RooCodeInc#10052)

* Add config to control public sharing (RooCodeInc#10105)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.92.0 (RooCodeInc#10116)

* Remove the description from bedrock service tiers (RooCodeInc#10118)

* feat: remove strict ARN validation for Bedrock custom ARN users (RooCodeInc#10110)

Co-authored-by: Roo Code <[email protected]>

* fix: prevent race condition from deleting wrong API messages (RooCodeInc#10113)

Co-authored-by: daniel-lxs <[email protected]>

* feat(anthropic): enable native tools by default and add telemetry tracking (RooCodeInc#10021)

* feat: enable native tools by default for multiple providers (RooCodeInc#10059)

* Release v3.36.8 (RooCodeInc#10119)

* fix: add additionalProperties: false to nested MCP tool schemas (RooCodeInc#10109)

* fix: normalize tool call IDs for cross-provider compatibility via OpenRouter (RooCodeInc#10102)

* feat: add full error details to streaming failure dialog (RooCodeInc#10131)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: cte <[email protected]>

* fix: validate tool_result IDs in delegation resume flow (RooCodeInc#10135)

* feat(evals): improve evals UI with tool groups and duration fix (RooCodeInc#10133)

Co-authored-by: Roo Code <[email protected]>

* Changeset version bump (RooCodeInc#10120)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release v3.36.9 (RooCodeInc#10138)

* Changeset version bump (RooCodeInc#10137)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: correct token counting for context truncation display (RooCodeInc#9961)

* feat(deepseek): implement interleaved thinking mode for deepseek-reasoner (RooCodeInc#9969)

* Update next.js to ~15.2.8 (RooCodeInc#10140)

* fix(deepseek): preserve reasoning_content during tool call sequences (RooCodeInc#10141)

Co-authored-by: Roo Code <[email protected]>

* feat: add gemini-3-flash-preview model (RooCodeInc#10151)

* Release v3.36.10 (RooCodeInc#10153)

* Changeset version bump (RooCodeInc#10154)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(bedrock): convert tool_result to XML text when native tools disabled (RooCodeInc#10155)

* fix: remove dots and colons from MCP tool names for Bedrock compatibility (RooCodeInc#10152)

* fix: improve terminal process error handling and abort operation

* fix(ROO-202): refresh Roo models cache with session token on auth state change (RooCodeInc#10156)

* fix: support AWS GovCloud and China region ARNs in Bedrock provider (RooCodeInc#10157)

Co-authored-by: Roo Code <[email protected]>

* feat: enable native tool calling by default for Z.ai models (RooCodeInc#10158)

Co-authored-by: Roo Code <[email protected]>

* [feat] Claude Code Provider Native Tool Calling (RooCodeInc#10077)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: normalize MCP tool schemas for Bedrock and OpenAI strict mode (RooCodeInc#10148)

* fix: enable native tools by default for OpenAI compatible provider (RooCodeInc#10159)

* Release v3.36.11 (RooCodeInc#10161)

* Changeset version bump (RooCodeInc#10162)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): extract error messages from JSON payloads for better PostHog grouping (RooCodeInc#10163)

* fix: add userAgentAppId to Bedrock embedder for code indexing (RooCodeInc#10166)

Adds userAgentAppId configuration to the BedrockRuntimeClient in the
code indexing embedder, matching the implementation pattern already
used in the main Bedrock API provider.

This enables proper user agent identification in CloudTrail AWS requests
when using Bedrock for code indexing embeddings.

Fixes RooCodeInc#10165

Co-authored-by: Roo Code <[email protected]>

* feat: update OpenAI and Gemini tool preferences (RooCodeInc#10170)

* Release v3.36.12 (RooCodeInc#10181)

* Changeset version bump (RooCodeInc#10182)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* Revert "Revert "feat: change defaultToolProtocol default from xml to native"" (RooCodeInc#10186)

Co-authored-by: Roo Code <[email protected]>

* fix(litellm): merge default model info with router models for NTC support (RooCodeInc#10187)

* feat(types): add defaultToolProtocol: native to providers

- Added supportsNativeTools: true and defaultToolProtocol: native to all chutes models
- Added defaultToolProtocol: native to moonshot models (already had supportsNativeTools)
- Added defaultToolProtocol: native to litellm default model (already had supportsNativeTools)
- Added defaultToolProtocol: native to minimax models (already had supportsNativeTools)

This enables native tool calling by default for these providers, reducing
the number of users falling back to XML tool protocol unnecessarily.

* fix(litellm): merge only native tool defaults with router models

Only merges supportsNativeTools and defaultToolProtocol from litellmDefaultModelInfo,
not prices or other model-specific info that could be incorrect for different models.

* Release: v1.93.0 (RooCodeInc#10190)

* feat(vscode-lm): add native tool support (RooCodeInc#10191)

* feat: Replace edit_file tool alias with edit_file tool (RooCodeInc#9983)

* feat: lock task tool protocol for consistent task resumption (RooCodeInc#10192)

Co-authored-by: Roo Code <[email protected]>

* feat(telemetry): add PostHog exception tracking for consecutive mistake errors (RooCodeInc#10193)

* Release v3.36.13 (RooCodeInc#10194)

* Changeset version bump (RooCodeInc#10195)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat: improve 'no tools used' error handling with grace retry (RooCodeInc#10196)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* feat(vertex): add native tool calling for Claude models on Vertex AI (RooCodeInc#10197)

Co-authored-by: daniel-lxs <[email protected]>

* fix: strip unsupported JSON Schema format values for OpenAI compatibility (RooCodeInc#10198)

* Release v3.36.14 (RooCodeInc#10200)

* Changeset version bump (RooCodeInc#10201)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): add telemetry event handling through webview messages

* fix: refresh models button not flushing cache properly (RooCodeInc#9870)

* feat(vertex): add 1M context window beta support for Claude Sonnet 4 (RooCodeInc#10209)

* feat(providers): add native tool calling support to LM Studio and Qwen-Code (RooCodeInc#10208)

* ux: improve API error handling and visibility (RooCodeInc#10204)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>

* ux: add downloadable error diagnostics from chat errors (RooCodeInc#10188)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>

* feat: merge native tool defaults for openai-compatible provider (RooCodeInc#10213)

* fix: force additionalProperties false for strict mode compatibility (RooCodeInc#10210)

* fix: enable native tool calls for Requesty provider (ROO-235) (RooCodeInc#10211)

* Release v3.36.15 (RooCodeInc#10218)

* Changeset version bump (RooCodeInc#10219)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: normalize tool schemas for VS Code LM API to fix error 400 (RooCodeInc#10221)

* Release v3.36.16 (RooCodeInc#10224)

* Changeset version bump (RooCodeInc#10225)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Custom tool calling (RooCodeInc#10083)

* Remove the "test" custom tools (RooCodeInc#10255)

Co-authored-by: Roo Code <[email protected]>

* Add custom tool definitions to @roo-code/types (RooCodeInc#10233)

Co-authored-by: Roo Code <[email protected]>

* fix(evals): add missing packages/core to Dockerfile.runner (RooCodeInc#10272)

* feat: add Cloud Team page with comprehensive team features (RooCodeInc#10267)

* feat: add Cloud Team page with features and pricing integration

* Copy tweaks

* Visual tweaks

* Content adjustments

* Update apps/web-roo-code/src/app/cloud/team/page.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* feat: remove parallel_tool_calls parameter from litellm provider (RooCodeInc#10274)

Co-authored-by: Roo Code <[email protected]>

* feat(build): add types package bundling and alias support

* update(settings): change default tool protocol to XML

* fix: enable Requesty refresh models with credentials (RooCodeInc#10273)

* fix: disable strict mode for MCP tools to preserve optional parameters (RooCodeInc#10220)

Co-authored-by: Roo Code <[email protected]>

* fix: move array-specific properties into anyOf variant in normalizeToolSchema (RooCodeInc#10276)

* fix: move array-specific properties into anyOf variant in normalizeToolSchema

Fixes read_file tool schema rejection with GPT-5-mini which requires
items property to be inside the { type: 'array' } variant when using
anyOf for nullable arrays.

Resolves ROO-262

* refactor: extract array-specific properties constant and helper function

* refactor(custom-tools): improve tool loading and instance consistency

* fix(chutes): add graceful fallback for model parsing (RooCodeInc#10279)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: emit tool_call_end events in OpenAI handler when streaming ends (RooCodeInc#10280)

* feat(core): add support for custom tool parsing in AssistantMessageParser

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* feat: deprecate XML tool protocol selection, force native for new tasks (RooCodeInc#10281)

- Disable tool protocol selector UI in ApiOptions.tsx
- Force native protocol for all new tasks in resolveToolProtocol()
- Keep locked protocol support for resumed tasks that used XML
- Remove models without supportsNativeTools: true from providers:
  - baseten.ts: removed 6 models
  - bedrock.ts: removed 2 embedding models
  - featherless.ts: removed 3 models, updated default
  - groq.ts: removed 5 models
  - sambanova.ts: removed 2 models
  - vertex.ts: removed 7 models
  - vercel-ai-gateway.ts: added supportsNativeTools: true
- Update tests to expect native format output

* feat(zai): add GLM-4.7 model with thinking mode support (RooCodeInc#10282)

Co-authored-by: Roo Code <[email protected]>

* fix: improve reasoning_details accumulation and serialization (RooCodeInc#10285)

* feat(evals): add message log deduper utility (RooCodeInc#10286)

* feat(minimax): move environment_details to system message for thinking models (RooCodeInc#10284)

* fix: add CRLF line ending normalization to search_replace and search_and_replace tools (RooCodeInc#10288)

- Normalize file content to LF after reading to ensure consistent matching
- Normalize search/replace strings to handle CRLF from model output
- Add comprehensive CRLF normalization tests for both tools
- Consistent with existing edit_file tool behavior

* refactor(zai): merge environment_details into tool result instead of system message (RooCodeInc#10289)

* fix: emit tool_call_end events in BaseOpenAiCompatibleProvider (RooCodeInc#10293)

* fix: preserve reasoning_content in condense summary for DeepSeek-reasoner (RooCodeInc#10292)

* Release v3.37.0 (RooCodeInc#10295)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Changeset version bump (RooCodeInc#10296)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: enable mergeToolResultText for Roo Code Cloud provider (RooCodeInc#10301)

* feat: add grace retry for empty assistant messages (RooCodeInc#10297)

Implements grace retry error handling for 'no assistant messages' API
errors, following the same pattern as PR RooCodeInc#10196 for 'no tools used'.

- Add consecutiveNoAssistantMessagesCount counter to Task.ts
- First failure: silent retry (grace retry)
- After 2+ consecutive failures: show MODEL_NO_ASSISTANT_MESSAGES error
- Add UI handling in ChatRow.tsx with ErrorRow component
- Add localized strings to all 18 locale files
- Add comprehensive tests for the grace retry behavior

* Release: v1.95.0 (RooCodeInc#10309)

chore: bump version to v1.95.0

* feat(prompts): strengthen native tool-use guidance (RooCodeInc#10311)

* feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)

* fix: preserve reasoning_details shape to prevent malformed responses (RooCodeInc#10313)

* fix(task): drain queued messages while waiting for ask (RooCodeInc#10315)

* fix(openai): send native tool definitions by default (RooCodeInc#10314)

Co-authored-by: Roo Code <[email protected]>

* ux: Provider-centric signup (RooCodeInc#10306)

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>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.37.1 (RooCodeInc#10316)

* Changeset version bump (RooCodeInc#10317)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* refactor: simplify tool protocol resolution logic

* refactor: optimize stream rendering and file reading limits

* refactor(tools): simplify extractTextFromFile parameters

* feat(chat): add tool protocol display to task header

* fix(test): respect user toolProtocol preference over model capabilities

* update(provider): update zgsm model handling and native tool protocol logic

* feat: remove OpenRouter Transforms feature (RooCodeInc#10341)

- Remove openRouterUseMiddleOutTransform checkbox from settings UI
- Remove openRouterUseMiddleOutTransform from TypeScript types
- Remove transforms parameter logic from OpenRouter handler
- Remove setting from EVALS_SETTINGS
- Remove translation keys from all locale files (18 locales)

Co-authored-by: Roo Code <[email protected]>

* feat: remove simpleReadFileTool completely (RooCodeInc#10254)

- Delete simpleReadFileTool.ts file
- Delete simple-read-file.ts prompt description file
- Delete single-file-read-models.ts types file
- Remove imports and usage from presentAssistantMessage.ts
- Remove imports and usage from prompts/tools/index.ts
- Remove export from packages/types/src/index.ts

This removes all traces of the legacy single-file read tool implementation that was used for specific models. All models now use the standard read_file tool.

Co-authored-by: Roo Code <[email protected]>

* Add support for skills (RooCodeInc#10335)

* Add support for skills

* fix: use type-only import for ClineProvider and relative paths in skills section

---------

Co-authored-by: Roo Code <[email protected]>

* Add support for npm packages and .env files to custom tools (RooCodeInc#10336)

Co-authored-by: Roo Code <[email protected]>

* fix: capture extended thinking signatures for tool use continuations (RooCodeInc#10351)

* feat: add optional mode field to slash command front matter (RooCodeInc#10344)

* feat: add optional mode field to slash command front matter

- Add mode field to Command interface
- Update command parsing to extract mode from frontmatter
- Modify RunSlashCommandTool to automatically switch mode when specified
- Add comprehensive tests for mode field parsing and switching
- Update existing tests to include mode field

* Make it work for manual slash commands too

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Remove the mergeToolResultText in the Roo provider for now (RooCodeInc#10359)

* Revert "fix: capture extended thinking signatures for tool use continuations" (RooCodeInc#10360)

* Release v3.38.0 (RooCodeInc#10361)

* Changeset version bump (RooCodeInc#10362)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: enforce maxConcurrentFileReads limit in read_file tool (RooCodeInc#10363)

Co-authored-by: Roo Code <[email protected]>

* refactor(zgsm): optimize native protocol handling and model ID usage

* docs: clarify path to Security Settings in privacy policy (RooCodeInc#10367)

Co-authored-by: Roo Code <[email protected]>

* Improve error message when read_file is used on directory (RooCodeInc#10371)

Co-authored-by: Roo Code <[email protected]>

* Handle custom tool use similarly to MCP tools for ipc schema purposes (RooCodeInc#10364)

* fix: correct GitHub repository URL in marketing page (RooCodeInc#10377)

Co-authored-by: Roo Code <[email protected]>

* Revert "feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)" (RooCodeInc#10381)

* fix: flush pending tool results before condensing context (RooCodeInc#10379)

* chore: add changeset for v3.38.1 (RooCodeInc#10384)

* Changeset version bump (RooCodeInc#10385)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: update Cerebras maxTokens to 16384 (RooCodeInc#10387)

* docs: Replace Todo Lists video with Context Management video (RooCodeInc#10375)

Co-authored-by: Sannidhya <[email protected]>

* Release: v1.96.0 (RooCodeInc#10395)

chore: bump version to v1.96.0

* fix(utils): add optional chaining for provider settings

* feat(skills): align with Agent Skills spec (RooCodeInc#10409)

* chore: remove human-relay provider (RooCodeInc#10388)

Co-authored-by: Roo Code <[email protected]>

* Fix rate limit wait display (RooCodeInc#10389)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent write_to_file from creating files at truncated paths (RooCodeInc#10415)

Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Roo Code <[email protected]>

* Release v3.38.2 (RooCodeInc#10416)

* Changeset version bump (RooCodeInc#10417)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(claude-code): stop frequent sign-ins by hardening OAuth refresh (RooCodeInc#10410)

* fix(claude-code): prevent sign-outs on oauth refresh

* test(claude-code): restore fetch after mocking

* refactor(claude-code): replace while(true) with bounded for loop for clarity

---------

Co-authored-by: Roo Code <[email protected]>

* fix: add type check for lastMessage.text in TTS useEffect (RooCodeInc#10431)

fix: add type check for lastMessage.text before calling startsWith

Fixes RooCodeInc#10430

The TTS useEffect was calling .startsWith() on lastMessage.text after only
checking if it was truthy. If text was a non-string truthy value (array,
object, or number), this would crash with "Q.text.startsWith is not a function".

Changed the truthy check to an explicit type check: typeof lastMessage.text === "string"

Co-authored-by: Roo Code <[email protected]>

* feat(chat): add collapsible markdown blocks and improve protocol error handling

* refactor(task): restructure conversation history handling

* feat: recursively load .roo/rules and AGENTS.md from subdirectories (RooCodeInc#10446)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.99.0 (RooCodeInc#10447)

* fix: add maxConcurrentFileReads limit to native read_file tool schema (RooCodeInc#10449)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.38.3 (RooCodeInc#10450)

* Changeset version bump (RooCodeInc#10451)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

---------

Co-authored-by: Daniel <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>
Co-authored-by: John Richmond <[email protected]>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Patrick Decat <[email protected]>
Co-authored-by: Seb Duerr <[email protected]>
Co-authored-by: SannidhyaSah <[email protected]>
Co-authored-by: Sannidhya <[email protected]>
mini2s added a commit to zgsm-ai/costrict that referenced this pull request Jan 5, 2026
* 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 <[email protected]>

* 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 <[email protected]>

* fix: cancel auto-approval timeout when user starts typing (RooCodeInc#9937)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* fix: use JavaScript-based hover for checkpoint menu visibility (RooCodeInc#10056)

* feat: remove auto-approve toggles for to-do and retry actions (RooCodeInc#10062)

* feat(openrouter): add improvements to openrouter provider (RooCodeInc#10082)

* feat: Add Amazon Nova 2 Lite model to Bedrock provider (RooCodeInc#9830)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add AWS Bedrock service tier support (RooCodeInc#9955)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Capture more of OpenRouter's provider specific error details (RooCodeInc#10073)

* Capture more of OpenRouter's provider specific error details

* Actually match the openrouter structure

* feat(web-evals): improve run logs and formatters (RooCodeInc#10081)

* Move isToolAllowedForMode out of shared directory (RooCodeInc#10089)

* chore: add changeset for v3.36.7 (RooCodeInc#10091)

* Changeset version bump (RooCodeInc#10092)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent duplicate MCP tools error by deduplicating servers at source (RooCodeInc#10096)

* feat: add metadata to error details dialog (RooCodeInc#10050)

* feat: add metadata to error details dialog

- Prepends extension version, provider, model, and repository info to error details
- Helps users provide better bug reports with context
- Uses useExtensionState and useSelectedModel hooks for data

* Tweaks

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>

* web: Fixes link to provider pricing page (RooCodeInc#10107)

* feat(read-file): implement incremental token-budgeted file reading (RooCodeInc#10052)

* Add config to control public sharing (RooCodeInc#10105)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.92.0 (RooCodeInc#10116)

* Remove the description from bedrock service tiers (RooCodeInc#10118)

* feat: remove strict ARN validation for Bedrock custom ARN users (RooCodeInc#10110)

Co-authored-by: Roo Code <[email protected]>

* fix: prevent race condition from deleting wrong API messages (RooCodeInc#10113)

Co-authored-by: daniel-lxs <[email protected]>

* feat(anthropic): enable native tools by default and add telemetry tracking (RooCodeInc#10021)

* feat: enable native tools by default for multiple providers (RooCodeInc#10059)

* Release v3.36.8 (RooCodeInc#10119)

* fix: add additionalProperties: false to nested MCP tool schemas (RooCodeInc#10109)

* fix: normalize tool call IDs for cross-provider compatibility via OpenRouter (RooCodeInc#10102)

* feat: add full error details to streaming failure dialog (RooCodeInc#10131)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: cte <[email protected]>

* fix: validate tool_result IDs in delegation resume flow (RooCodeInc#10135)

* feat(evals): improve evals UI with tool groups and duration fix (RooCodeInc#10133)

Co-authored-by: Roo Code <[email protected]>

* Changeset version bump (RooCodeInc#10120)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release v3.36.9 (RooCodeInc#10138)

* Changeset version bump (RooCodeInc#10137)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: correct token counting for context truncation display (RooCodeInc#9961)

* feat(deepseek): implement interleaved thinking mode for deepseek-reasoner (RooCodeInc#9969)

* Update next.js to ~15.2.8 (RooCodeInc#10140)

* fix(deepseek): preserve reasoning_content during tool call sequences (RooCodeInc#10141)

Co-authored-by: Roo Code <[email protected]>

* feat: add gemini-3-flash-preview model (RooCodeInc#10151)

* Release v3.36.10 (RooCodeInc#10153)

* Changeset version bump (RooCodeInc#10154)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(bedrock): convert tool_result to XML text when native tools disabled (RooCodeInc#10155)

* fix: remove dots and colons from MCP tool names for Bedrock compatibility (RooCodeInc#10152)

* fix: improve terminal process error handling and abort operation

* fix(ROO-202): refresh Roo models cache with session token on auth state change (RooCodeInc#10156)

* fix: support AWS GovCloud and China region ARNs in Bedrock provider (RooCodeInc#10157)

Co-authored-by: Roo Code <[email protected]>

* feat: enable native tool calling by default for Z.ai models (RooCodeInc#10158)

Co-authored-by: Roo Code <[email protected]>

* [feat] Claude Code Provider Native Tool Calling (RooCodeInc#10077)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: normalize MCP tool schemas for Bedrock and OpenAI strict mode (RooCodeInc#10148)

* fix: enable native tools by default for OpenAI compatible provider (RooCodeInc#10159)

* Release v3.36.11 (RooCodeInc#10161)

* Changeset version bump (RooCodeInc#10162)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): extract error messages from JSON payloads for better PostHog grouping (RooCodeInc#10163)

* fix: add userAgentAppId to Bedrock embedder for code indexing (RooCodeInc#10166)

Adds userAgentAppId configuration to the BedrockRuntimeClient in the
code indexing embedder, matching the implementation pattern already
used in the main Bedrock API provider.

This enables proper user agent identification in CloudTrail AWS requests
when using Bedrock for code indexing embeddings.

Fixes RooCodeInc#10165

Co-authored-by: Roo Code <[email protected]>

* feat: update OpenAI and Gemini tool preferences (RooCodeInc#10170)

* Release v3.36.12 (RooCodeInc#10181)

* Changeset version bump (RooCodeInc#10182)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* Revert "Revert "feat: change defaultToolProtocol default from xml to native"" (RooCodeInc#10186)

Co-authored-by: Roo Code <[email protected]>

* fix(litellm): merge default model info with router models for NTC support (RooCodeInc#10187)

* feat(types): add defaultToolProtocol: native to providers

- Added supportsNativeTools: true and defaultToolProtocol: native to all chutes models
- Added defaultToolProtocol: native to moonshot models (already had supportsNativeTools)
- Added defaultToolProtocol: native to litellm default model (already had supportsNativeTools)
- Added defaultToolProtocol: native to minimax models (already had supportsNativeTools)

This enables native tool calling by default for these providers, reducing
the number of users falling back to XML tool protocol unnecessarily.

* fix(litellm): merge only native tool defaults with router models

Only merges supportsNativeTools and defaultToolProtocol from litellmDefaultModelInfo,
not prices or other model-specific info that could be incorrect for different models.

* Release: v1.93.0 (RooCodeInc#10190)

* feat(vscode-lm): add native tool support (RooCodeInc#10191)

* feat: Replace edit_file tool alias with edit_file tool (RooCodeInc#9983)

* feat: lock task tool protocol for consistent task resumption (RooCodeInc#10192)

Co-authored-by: Roo Code <[email protected]>

* feat(telemetry): add PostHog exception tracking for consecutive mistake errors (RooCodeInc#10193)

* Release v3.36.13 (RooCodeInc#10194)

* Changeset version bump (RooCodeInc#10195)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat: improve 'no tools used' error handling with grace retry (RooCodeInc#10196)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* feat(vertex): add native tool calling for Claude models on Vertex AI (RooCodeInc#10197)

Co-authored-by: daniel-lxs <[email protected]>

* fix: strip unsupported JSON Schema format values for OpenAI compatibility (RooCodeInc#10198)

* Release v3.36.14 (RooCodeInc#10200)

* Changeset version bump (RooCodeInc#10201)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): add telemetry event handling through webview messages

* fix: refresh models button not flushing cache properly (RooCodeInc#9870)

* feat(vertex): add 1M context window beta support for Claude Sonnet 4 (RooCodeInc#10209)

* feat(providers): add native tool calling support to LM Studio and Qwen-Code (RooCodeInc#10208)

* ux: improve API error handling and visibility (RooCodeInc#10204)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>

* ux: add downloadable error diagnostics from chat errors (RooCodeInc#10188)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>

* feat: merge native tool defaults for openai-compatible provider (RooCodeInc#10213)

* fix: force additionalProperties false for strict mode compatibility (RooCodeInc#10210)

* fix: enable native tool calls for Requesty provider (ROO-235) (RooCodeInc#10211)

* Release v3.36.15 (RooCodeInc#10218)

* Changeset version bump (RooCodeInc#10219)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: normalize tool schemas for VS Code LM API to fix error 400 (RooCodeInc#10221)

* Release v3.36.16 (RooCodeInc#10224)

* Changeset version bump (RooCodeInc#10225)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Custom tool calling (RooCodeInc#10083)

* Remove the "test" custom tools (RooCodeInc#10255)

Co-authored-by: Roo Code <[email protected]>

* Add custom tool definitions to @roo-code/types (RooCodeInc#10233)

Co-authored-by: Roo Code <[email protected]>

* fix(evals): add missing packages/core to Dockerfile.runner (RooCodeInc#10272)

* feat: add Cloud Team page with comprehensive team features (RooCodeInc#10267)

* feat: add Cloud Team page with features and pricing integration

* Copy tweaks

* Visual tweaks

* Content adjustments

* Update apps/web-roo-code/src/app/cloud/team/page.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* feat: remove parallel_tool_calls parameter from litellm provider (RooCodeInc#10274)

Co-authored-by: Roo Code <[email protected]>

* feat(build): add types package bundling and alias support

* update(settings): change default tool protocol to XML

* fix: enable Requesty refresh models with credentials (RooCodeInc#10273)

* fix: disable strict mode for MCP tools to preserve optional parameters (RooCodeInc#10220)

Co-authored-by: Roo Code <[email protected]>

* fix: move array-specific properties into anyOf variant in normalizeToolSchema (RooCodeInc#10276)

* fix: move array-specific properties into anyOf variant in normalizeToolSchema

Fixes read_file tool schema rejection with GPT-5-mini which requires
items property to be inside the { type: 'array' } variant when using
anyOf for nullable arrays.

Resolves ROO-262

* refactor: extract array-specific properties constant and helper function

* refactor(custom-tools): improve tool loading and instance consistency

* fix(chutes): add graceful fallback for model parsing (RooCodeInc#10279)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: emit tool_call_end events in OpenAI handler when streaming ends (RooCodeInc#10280)

* feat(core): add support for custom tool parsing in AssistantMessageParser

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* feat: deprecate XML tool protocol selection, force native for new tasks (RooCodeInc#10281)

- Disable tool protocol selector UI in ApiOptions.tsx
- Force native protocol for all new tasks in resolveToolProtocol()
- Keep locked protocol support for resumed tasks that used XML
- Remove models without supportsNativeTools: true from providers:
  - baseten.ts: removed 6 models
  - bedrock.ts: removed 2 embedding models
  - featherless.ts: removed 3 models, updated default
  - groq.ts: removed 5 models
  - sambanova.ts: removed 2 models
  - vertex.ts: removed 7 models
  - vercel-ai-gateway.ts: added supportsNativeTools: true
- Update tests to expect native format output

* feat(zai): add GLM-4.7 model with thinking mode support (RooCodeInc#10282)

Co-authored-by: Roo Code <[email protected]>

* fix: improve reasoning_details accumulation and serialization (RooCodeInc#10285)

* feat(evals): add message log deduper utility (RooCodeInc#10286)

* feat(minimax): move environment_details to system message for thinking models (RooCodeInc#10284)

* fix: add CRLF line ending normalization to search_replace and search_and_replace tools (RooCodeInc#10288)

- Normalize file content to LF after reading to ensure consistent matching
- Normalize search/replace strings to handle CRLF from model output
- Add comprehensive CRLF normalization tests for both tools
- Consistent with existing edit_file tool behavior

* refactor(zai): merge environment_details into tool result instead of system message (RooCodeInc#10289)

* fix: emit tool_call_end events in BaseOpenAiCompatibleProvider (RooCodeInc#10293)

* fix: preserve reasoning_content in condense summary for DeepSeek-reasoner (RooCodeInc#10292)

* Release v3.37.0 (RooCodeInc#10295)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Changeset version bump (RooCodeInc#10296)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: enable mergeToolResultText for Roo Code Cloud provider (RooCodeInc#10301)

* feat: add grace retry for empty assistant messages (RooCodeInc#10297)

Implements grace retry error handling for 'no assistant messages' API
errors, following the same pattern as PR RooCodeInc#10196 for 'no tools used'.

- Add consecutiveNoAssistantMessagesCount counter to Task.ts
- First failure: silent retry (grace retry)
- After 2+ consecutive failures: show MODEL_NO_ASSISTANT_MESSAGES error
- Add UI handling in ChatRow.tsx with ErrorRow component
- Add localized strings to all 18 locale files
- Add comprehensive tests for the grace retry behavior

* Release: v1.95.0 (RooCodeInc#10309)

chore: bump version to v1.95.0

* feat(prompts): strengthen native tool-use guidance (RooCodeInc#10311)

* feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)

* fix: preserve reasoning_details shape to prevent malformed responses (RooCodeInc#10313)

* fix(task): drain queued messages while waiting for ask (RooCodeInc#10315)

* fix(openai): send native tool definitions by default (RooCodeInc#10314)

Co-authored-by: Roo Code <[email protected]>

* ux: Provider-centric signup (RooCodeInc#10306)

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>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.37.1 (RooCodeInc#10316)

* Changeset version bump (RooCodeInc#10317)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* refactor: simplify tool protocol resolution logic

* refactor: optimize stream rendering and file reading limits

* refactor(tools): simplify extractTextFromFile parameters

* feat(chat): add tool protocol display to task header

* fix(test): respect user toolProtocol preference over model capabilities

* update(provider): update zgsm model handling and native tool protocol logic

* feat: remove OpenRouter Transforms feature (RooCodeInc#10341)

- Remove openRouterUseMiddleOutTransform checkbox from settings UI
- Remove openRouterUseMiddleOutTransform from TypeScript types
- Remove transforms parameter logic from OpenRouter handler
- Remove setting from EVALS_SETTINGS
- Remove translation keys from all locale files (18 locales)

Co-authored-by: Roo Code <[email protected]>

* feat: remove simpleReadFileTool completely (RooCodeInc#10254)

- Delete simpleReadFileTool.ts file
- Delete simple-read-file.ts prompt description file
- Delete single-file-read-models.ts types file
- Remove imports and usage from presentAssistantMessage.ts
- Remove imports and usage from prompts/tools/index.ts
- Remove export from packages/types/src/index.ts

This removes all traces of the legacy single-file read tool implementation that was used for specific models. All models now use the standard read_file tool.

Co-authored-by: Roo Code <[email protected]>

* Add support for skills (RooCodeInc#10335)

* Add support for skills

* fix: use type-only import for ClineProvider and relative paths in skills section

---------

Co-authored-by: Roo Code <[email protected]>

* Add support for npm packages and .env files to custom tools (RooCodeInc#10336)

Co-authored-by: Roo Code <[email protected]>

* fix: capture extended thinking signatures for tool use continuations (RooCodeInc#10351)

* feat: add optional mode field to slash command front matter (RooCodeInc#10344)

* feat: add optional mode field to slash command front matter

- Add mode field to Command interface
- Update command parsing to extract mode from frontmatter
- Modify RunSlashCommandTool to automatically switch mode when specified
- Add comprehensive tests for mode field parsing and switching
- Update existing tests to include mode field

* Make it work for manual slash commands too

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Remove the mergeToolResultText in the Roo provider for now (RooCodeInc#10359)

* Revert "fix: capture extended thinking signatures for tool use continuations" (RooCodeInc#10360)

* Release v3.38.0 (RooCodeInc#10361)

* Changeset version bump (RooCodeInc#10362)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: enforce maxConcurrentFileReads limit in read_file tool (RooCodeInc#10363)

Co-authored-by: Roo Code <[email protected]>

* refactor(zgsm): optimize native protocol handling and model ID usage

* docs: clarify path to Security Settings in privacy policy (RooCodeInc#10367)

Co-authored-by: Roo Code <[email protected]>

* Improve error message when read_file is used on directory (RooCodeInc#10371)

Co-authored-by: Roo Code <[email protected]>

* Handle custom tool use similarly to MCP tools for ipc schema purposes (RooCodeInc#10364)

* fix: correct GitHub repository URL in marketing page (RooCodeInc#10377)

Co-authored-by: Roo Code <[email protected]>

* Revert "feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)" (RooCodeInc#10381)

* fix: flush pending tool results before condensing context (RooCodeInc#10379)

* chore: add changeset for v3.38.1 (RooCodeInc#10384)

* Changeset version bump (RooCodeInc#10385)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: update Cerebras maxTokens to 16384 (RooCodeInc#10387)

* docs: Replace Todo Lists video with Context Management video (RooCodeInc#10375)

Co-authored-by: Sannidhya <[email protected]>

* Release: v1.96.0 (RooCodeInc#10395)

chore: bump version to v1.96.0

* fix(utils): add optional chaining for provider settings

* feat(skills): align with Agent Skills spec (RooCodeInc#10409)

* chore: remove human-relay provider (RooCodeInc#10388)

Co-authored-by: Roo Code <[email protected]>

* Fix rate limit wait display (RooCodeInc#10389)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent write_to_file from creating files at truncated paths (RooCodeInc#10415)

Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Roo Code <[email protected]>

* Release v3.38.2 (RooCodeInc#10416)

* Changeset version bump (RooCodeInc#10417)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(claude-code): stop frequent sign-ins by hardening OAuth refresh (RooCodeInc#10410)

* fix(claude-code): prevent sign-outs on oauth refresh

* test(claude-code): restore fetch after mocking

* refactor(claude-code): replace while(true) with bounded for loop for clarity

---------

Co-authored-by: Roo Code <[email protected]>

* fix: add type check for lastMessage.text in TTS useEffect (RooCodeInc#10431)

fix: add type check for lastMessage.text before calling startsWith

Fixes RooCodeInc#10430

The TTS useEffect was calling .startsWith() on lastMessage.text after only
checking if it was truthy. If text was a non-string truthy value (array,
object, or number), this would crash with "Q.text.startsWith is not a function".

Changed the truthy check to an explicit type check: typeof lastMessage.text === "string"

Co-authored-by: Roo Code <[email protected]>

* feat(chat): add collapsible markdown blocks and improve protocol error handling

* refactor(task): restructure conversation history handling

* feat: recursively load .roo/rules and AGENTS.md from subdirectories (RooCodeInc#10446)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.99.0 (RooCodeInc#10447)

* fix: add maxConcurrentFileReads limit to native read_file tool schema (RooCodeInc#10449)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.38.3 (RooCodeInc#10450)

* Changeset version bump (RooCodeInc#10451)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add image support documentation to read_file native tool description (RooCodeInc#10442)

Co-authored-by: Roo Code <[email protected]>

* fix: add explicit deduplication for duplicate tool_result blocks (RooCodeInc#10466)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

---------

Co-authored-by: Chris Estreich <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>
Co-authored-by: Daniel <[email protected]>
Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: John Richmond <[email protected]>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Patrick Decat <[email protected]>
Co-authored-by: Seb Duerr <[email protected]>
Co-authored-by: SannidhyaSah <[email protected]>
Co-authored-by: Sannidhya <[email protected]>
mini2s added a commit to zgsm-ai/costrict that referenced this pull request Jan 6, 2026
* Changeset version bump (RooCodeInc#10058)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: use JavaScript-based hover for checkpoint menu visibility (RooCodeInc#10056)

* feat: remove auto-approve toggles for to-do and retry actions (RooCodeInc#10062)

* feat(openrouter): add improvements to openrouter provider (RooCodeInc#10082)

* feat: Add Amazon Nova 2 Lite model to Bedrock provider (RooCodeInc#9830)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add AWS Bedrock service tier support (RooCodeInc#9955)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Capture more of OpenRouter's provider specific error details (RooCodeInc#10073)

* Capture more of OpenRouter's provider specific error details

* Actually match the openrouter structure

* feat(web-evals): improve run logs and formatters (RooCodeInc#10081)

* Move isToolAllowedForMode out of shared directory (RooCodeInc#10089)

* chore: add changeset for v3.36.7 (RooCodeInc#10091)

* Changeset version bump (RooCodeInc#10092)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent duplicate MCP tools error by deduplicating servers at source (RooCodeInc#10096)

* feat: add metadata to error details dialog (RooCodeInc#10050)

* feat: add metadata to error details dialog

- Prepends extension version, provider, model, and repository info to error details
- Helps users provide better bug reports with context
- Uses useExtensionState and useSelectedModel hooks for data

* Tweaks

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>

* web: Fixes link to provider pricing page (RooCodeInc#10107)

* feat(read-file): implement incremental token-budgeted file reading (RooCodeInc#10052)

* Add config to control public sharing (RooCodeInc#10105)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.92.0 (RooCodeInc#10116)

* Remove the description from bedrock service tiers (RooCodeInc#10118)

* feat: remove strict ARN validation for Bedrock custom ARN users (RooCodeInc#10110)

Co-authored-by: Roo Code <[email protected]>

* fix: prevent race condition from deleting wrong API messages (RooCodeInc#10113)

Co-authored-by: daniel-lxs <[email protected]>

* feat(anthropic): enable native tools by default and add telemetry tracking (RooCodeInc#10021)

* feat: enable native tools by default for multiple providers (RooCodeInc#10059)

* Release v3.36.8 (RooCodeInc#10119)

* fix: add additionalProperties: false to nested MCP tool schemas (RooCodeInc#10109)

* fix: normalize tool call IDs for cross-provider compatibility via OpenRouter (RooCodeInc#10102)

* feat: add full error details to streaming failure dialog (RooCodeInc#10131)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: cte <[email protected]>

* fix: validate tool_result IDs in delegation resume flow (RooCodeInc#10135)

* feat(evals): improve evals UI with tool groups and duration fix (RooCodeInc#10133)

Co-authored-by: Roo Code <[email protected]>

* Changeset version bump (RooCodeInc#10120)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release v3.36.9 (RooCodeInc#10138)

* Changeset version bump (RooCodeInc#10137)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: correct token counting for context truncation display (RooCodeInc#9961)

* feat(deepseek): implement interleaved thinking mode for deepseek-reasoner (RooCodeInc#9969)

* Update next.js to ~15.2.8 (RooCodeInc#10140)

* fix(deepseek): preserve reasoning_content during tool call sequences (RooCodeInc#10141)

Co-authored-by: Roo Code <[email protected]>

* feat: add gemini-3-flash-preview model (RooCodeInc#10151)

* Release v3.36.10 (RooCodeInc#10153)

* Changeset version bump (RooCodeInc#10154)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(bedrock): convert tool_result to XML text when native tools disabled (RooCodeInc#10155)

* fix: remove dots and colons from MCP tool names for Bedrock compatibility (RooCodeInc#10152)

* fix: improve terminal process error handling and abort operation

* fix(ROO-202): refresh Roo models cache with session token on auth state change (RooCodeInc#10156)

* fix: support AWS GovCloud and China region ARNs in Bedrock provider (RooCodeInc#10157)

Co-authored-by: Roo Code <[email protected]>

* feat: enable native tool calling by default for Z.ai models (RooCodeInc#10158)

Co-authored-by: Roo Code <[email protected]>

* [feat] Claude Code Provider Native Tool Calling (RooCodeInc#10077)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: normalize MCP tool schemas for Bedrock and OpenAI strict mode (RooCodeInc#10148)

* fix: enable native tools by default for OpenAI compatible provider (RooCodeInc#10159)

* Release v3.36.11 (RooCodeInc#10161)

* Changeset version bump (RooCodeInc#10162)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): extract error messages from JSON payloads for better PostHog grouping (RooCodeInc#10163)

* fix: add userAgentAppId to Bedrock embedder for code indexing (RooCodeInc#10166)

Adds userAgentAppId configuration to the BedrockRuntimeClient in the
code indexing embedder, matching the implementation pattern already
used in the main Bedrock API provider.

This enables proper user agent identification in CloudTrail AWS requests
when using Bedrock for code indexing embeddings.

Fixes RooCodeInc#10165

Co-authored-by: Roo Code <[email protected]>

* feat: update OpenAI and Gemini tool preferences (RooCodeInc#10170)

* Release v3.36.12 (RooCodeInc#10181)

* Changeset version bump (RooCodeInc#10182)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* Revert "Revert "feat: change defaultToolProtocol default from xml to native"" (RooCodeInc#10186)

Co-authored-by: Roo Code <[email protected]>

* fix(litellm): merge default model info with router models for NTC support (RooCodeInc#10187)

* feat(types): add defaultToolProtocol: native to providers

- Added supportsNativeTools: true and defaultToolProtocol: native to all chutes models
- Added defaultToolProtocol: native to moonshot models (already had supportsNativeTools)
- Added defaultToolProtocol: native to litellm default model (already had supportsNativeTools)
- Added defaultToolProtocol: native to minimax models (already had supportsNativeTools)

This enables native tool calling by default for these providers, reducing
the number of users falling back to XML tool protocol unnecessarily.

* fix(litellm): merge only native tool defaults with router models

Only merges supportsNativeTools and defaultToolProtocol from litellmDefaultModelInfo,
not prices or other model-specific info that could be incorrect for different models.

* Release: v1.93.0 (RooCodeInc#10190)

* feat(vscode-lm): add native tool support (RooCodeInc#10191)

* feat: Replace edit_file tool alias with edit_file tool (RooCodeInc#9983)

* feat: lock task tool protocol for consistent task resumption (RooCodeInc#10192)

Co-authored-by: Roo Code <[email protected]>

* feat(telemetry): add PostHog exception tracking for consecutive mistake errors (RooCodeInc#10193)

* Release v3.36.13 (RooCodeInc#10194)

* Changeset version bump (RooCodeInc#10195)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat: improve 'no tools used' error handling with grace retry (RooCodeInc#10196)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* feat(vertex): add native tool calling for Claude models on Vertex AI (RooCodeInc#10197)

Co-authored-by: daniel-lxs <[email protected]>

* fix: strip unsupported JSON Schema format values for OpenAI compatibility (RooCodeInc#10198)

* Release v3.36.14 (RooCodeInc#10200)

* Changeset version bump (RooCodeInc#10201)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): add telemetry event handling through webview messages

* fix: refresh models button not flushing cache properly (RooCodeInc#9870)

* feat(vertex): add 1M context window beta support for Claude Sonnet 4 (RooCodeInc#10209)

* feat(providers): add native tool calling support to LM Studio and Qwen-Code (RooCodeInc#10208)

* ux: improve API error handling and visibility (RooCodeInc#10204)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>

* ux: add downloadable error diagnostics from chat errors (RooCodeInc#10188)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>

* feat: merge native tool defaults for openai-compatible provider (RooCodeInc#10213)

* fix: force additionalProperties false for strict mode compatibility (RooCodeInc#10210)

* fix: enable native tool calls for Requesty provider (ROO-235) (RooCodeInc#10211)

* Release v3.36.15 (RooCodeInc#10218)

* Changeset version bump (RooCodeInc#10219)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: normalize tool schemas for VS Code LM API to fix error 400 (RooCodeInc#10221)

* Release v3.36.16 (RooCodeInc#10224)

* Changeset version bump (RooCodeInc#10225)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Custom tool calling (RooCodeInc#10083)

* Remove the "test" custom tools (RooCodeInc#10255)

Co-authored-by: Roo Code <[email protected]>

* Add custom tool definitions to @roo-code/types (RooCodeInc#10233)

Co-authored-by: Roo Code <[email protected]>

* fix(evals): add missing packages/core to Dockerfile.runner (RooCodeInc#10272)

* feat: add Cloud Team page with comprehensive team features (RooCodeInc#10267)

* feat: add Cloud Team page with features and pricing integration

* Copy tweaks

* Visual tweaks

* Content adjustments

* Update apps/web-roo-code/src/app/cloud/team/page.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* feat: remove parallel_tool_calls parameter from litellm provider (RooCodeInc#10274)

Co-authored-by: Roo Code <[email protected]>

* feat(build): add types package bundling and alias support

* update(settings): change default tool protocol to XML

* fix: enable Requesty refresh models with credentials (RooCodeInc#10273)

* fix: disable strict mode for MCP tools to preserve optional parameters (RooCodeInc#10220)

Co-authored-by: Roo Code <[email protected]>

* fix: move array-specific properties into anyOf variant in normalizeToolSchema (RooCodeInc#10276)

* fix: move array-specific properties into anyOf variant in normalizeToolSchema

Fixes read_file tool schema rejection with GPT-5-mini which requires
items property to be inside the { type: 'array' } variant when using
anyOf for nullable arrays.

Resolves ROO-262

* refactor: extract array-specific properties constant and helper function

* refactor(custom-tools): improve tool loading and instance consistency

* fix(chutes): add graceful fallback for model parsing (RooCodeInc#10279)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: emit tool_call_end events in OpenAI handler when streaming ends (RooCodeInc#10280)

* feat(core): add support for custom tool parsing in AssistantMessageParser

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* feat: deprecate XML tool protocol selection, force native for new tasks (RooCodeInc#10281)

- Disable tool protocol selector UI in ApiOptions.tsx
- Force native protocol for all new tasks in resolveToolProtocol()
- Keep locked protocol support for resumed tasks that used XML
- Remove models without supportsNativeTools: true from providers:
  - baseten.ts: removed 6 models
  - bedrock.ts: removed 2 embedding models
  - featherless.ts: removed 3 models, updated default
  - groq.ts: removed 5 models
  - sambanova.ts: removed 2 models
  - vertex.ts: removed 7 models
  - vercel-ai-gateway.ts: added supportsNativeTools: true
- Update tests to expect native format output

* feat(zai): add GLM-4.7 model with thinking mode support (RooCodeInc#10282)

Co-authored-by: Roo Code <[email protected]>

* fix: improve reasoning_details accumulation and serialization (RooCodeInc#10285)

* feat(evals): add message log deduper utility (RooCodeInc#10286)

* feat(minimax): move environment_details to system message for thinking models (RooCodeInc#10284)

* fix: add CRLF line ending normalization to search_replace and search_and_replace tools (RooCodeInc#10288)

- Normalize file content to LF after reading to ensure consistent matching
- Normalize search/replace strings to handle CRLF from model output
- Add comprehensive CRLF normalization tests for both tools
- Consistent with existing edit_file tool behavior

* refactor(zai): merge environment_details into tool result instead of system message (RooCodeInc#10289)

* fix: emit tool_call_end events in BaseOpenAiCompatibleProvider (RooCodeInc#10293)

* fix: preserve reasoning_content in condense summary for DeepSeek-reasoner (RooCodeInc#10292)

* Release v3.37.0 (RooCodeInc#10295)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Changeset version bump (RooCodeInc#10296)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: enable mergeToolResultText for Roo Code Cloud provider (RooCodeInc#10301)

* feat: add grace retry for empty assistant messages (RooCodeInc#10297)

Implements grace retry error handling for 'no assistant messages' API
errors, following the same pattern as PR RooCodeInc#10196 for 'no tools used'.

- Add consecutiveNoAssistantMessagesCount counter to Task.ts
- First failure: silent retry (grace retry)
- After 2+ consecutive failures: show MODEL_NO_ASSISTANT_MESSAGES error
- Add UI handling in ChatRow.tsx with ErrorRow component
- Add localized strings to all 18 locale files
- Add comprehensive tests for the grace retry behavior

* Release: v1.95.0 (RooCodeInc#10309)

chore: bump version to v1.95.0

* feat(prompts): strengthen native tool-use guidance (RooCodeInc#10311)

* feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)

* fix: preserve reasoning_details shape to prevent malformed responses (RooCodeInc#10313)

* fix(task): drain queued messages while waiting for ask (RooCodeInc#10315)

* fix(openai): send native tool definitions by default (RooCodeInc#10314)

Co-authored-by: Roo Code <[email protected]>

* ux: Provider-centric signup (RooCodeInc#10306)

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>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.37.1 (RooCodeInc#10316)

* Changeset version bump (RooCodeInc#10317)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* refactor: simplify tool protocol resolution logic

* refactor: optimize stream rendering and file reading limits

* refactor(tools): simplify extractTextFromFile parameters

* feat(chat): add tool protocol display to task header

* fix(test): respect user toolProtocol preference over model capabilities

* update(provider): update zgsm model handling and native tool protocol logic

* feat: remove OpenRouter Transforms feature (RooCodeInc#10341)

- Remove openRouterUseMiddleOutTransform checkbox from settings UI
- Remove openRouterUseMiddleOutTransform from TypeScript types
- Remove transforms parameter logic from OpenRouter handler
- Remove setting from EVALS_SETTINGS
- Remove translation keys from all locale files (18 locales)

Co-authored-by: Roo Code <[email protected]>

* feat: remove simpleReadFileTool completely (RooCodeInc#10254)

- Delete simpleReadFileTool.ts file
- Delete simple-read-file.ts prompt description file
- Delete single-file-read-models.ts types file
- Remove imports and usage from presentAssistantMessage.ts
- Remove imports and usage from prompts/tools/index.ts
- Remove export from packages/types/src/index.ts

This removes all traces of the legacy single-file read tool implementation that was used for specific models. All models now use the standard read_file tool.

Co-authored-by: Roo Code <[email protected]>

* Add support for skills (RooCodeInc#10335)

* Add support for skills

* fix: use type-only import for ClineProvider and relative paths in skills section

---------

Co-authored-by: Roo Code <[email protected]>

* Add support for npm packages and .env files to custom tools (RooCodeInc#10336)

Co-authored-by: Roo Code <[email protected]>

* fix: capture extended thinking signatures for tool use continuations (RooCodeInc#10351)

* feat: add optional mode field to slash command front matter (RooCodeInc#10344)

* feat: add optional mode field to slash command front matter

- Add mode field to Command interface
- Update command parsing to extract mode from frontmatter
- Modify RunSlashCommandTool to automatically switch mode when specified
- Add comprehensive tests for mode field parsing and switching
- Update existing tests to include mode field

* Make it work for manual slash commands too

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Remove the mergeToolResultText in the Roo provider for now (RooCodeInc#10359)

* Revert "fix: capture extended thinking signatures for tool use continuations" (RooCodeInc#10360)

* Release v3.38.0 (RooCodeInc#10361)

* Changeset version bump (RooCodeInc#10362)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: enforce maxConcurrentFileReads limit in read_file tool (RooCodeInc#10363)

Co-authored-by: Roo Code <[email protected]>

* refactor(zgsm): optimize native protocol handling and model ID usage

* docs: clarify path to Security Settings in privacy policy (RooCodeInc#10367)

Co-authored-by: Roo Code <[email protected]>

* Improve error message when read_file is used on directory (RooCodeInc#10371)

Co-authored-by: Roo Code <[email protected]>

* Handle custom tool use similarly to MCP tools for ipc schema purposes (RooCodeInc#10364)

* fix: correct GitHub repository URL in marketing page (RooCodeInc#10377)

Co-authored-by: Roo Code <[email protected]>

* Revert "feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)" (RooCodeInc#10381)

* fix: flush pending tool results before condensing context (RooCodeInc#10379)

* chore: add changeset for v3.38.1 (RooCodeInc#10384)

* Changeset version bump (RooCodeInc#10385)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: update Cerebras maxTokens to 16384 (RooCodeInc#10387)

* docs: Replace Todo Lists video with Context Management video (RooCodeInc#10375)

Co-authored-by: Sannidhya <[email protected]>

* Release: v1.96.0 (RooCodeInc#10395)

chore: bump version to v1.96.0

* fix(utils): add optional chaining for provider settings

* feat(skills): align with Agent Skills spec (RooCodeInc#10409)

* chore: remove human-relay provider (RooCodeInc#10388)

Co-authored-by: Roo Code <[email protected]>

* Fix rate limit wait display (RooCodeInc#10389)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent write_to_file from creating files at truncated paths (RooCodeInc#10415)

Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Roo Code <[email protected]>

* Release v3.38.2 (RooCodeInc#10416)

* Changeset version bump (RooCodeInc#10417)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(claude-code): stop frequent sign-ins by hardening OAuth refresh (RooCodeInc#10410)

* fix(claude-code): prevent sign-outs on oauth refresh

* test(claude-code): restore fetch after mocking

* refactor(claude-code): replace while(true) with bounded for loop for clarity

---------

Co-authored-by: Roo Code <[email protected]>

* fix: add type check for lastMessage.text in TTS useEffect (RooCodeInc#10431)

fix: add type check for lastMessage.text before calling startsWith

Fixes RooCodeInc#10430

The TTS useEffect was calling .startsWith() on lastMessage.text after only
checking if it was truthy. If text was a non-string truthy value (array,
object, or number), this would crash with "Q.text.startsWith is not a function".

Changed the truthy check to an explicit type check: typeof lastMessage.text === "string"

Co-authored-by: Roo Code <[email protected]>

* feat(chat): add collapsible markdown blocks and improve protocol error handling

* refactor(task): restructure conversation history handling

* feat: recursively load .roo/rules and AGENTS.md from subdirectories (RooCodeInc#10446)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.99.0 (RooCodeInc#10447)

* fix: add maxConcurrentFileReads limit to native read_file tool schema (RooCodeInc#10449)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.38.3 (RooCodeInc#10450)

* Changeset version bump (RooCodeInc#10451)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add image support documentation to read_file native tool description (RooCodeInc#10442)

Co-authored-by: Roo Code <[email protected]>

* fix: add explicit deduplication for duplicate tool_result blocks (RooCodeInc#10466)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* VSCode shim + basic cli (RooCodeInc#10452)

Co-authored-by: Roo Code <[email protected]>

* Add an option to use our cli for evals (RooCodeInc#10456)

Co-authored-by: Roo Code <[email protected]>

* fix: preserve tool_use blocks for all tool_results in kept messages during condensation (RooCodeInc#10471)

* fix: add additionalProperties: false to MCP tool schemas for OpenAI Responses API (RooCodeInc#10472)

* feat(cli): add zgsm provider support

* Add a cli installer (RooCodeInc#10474)

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>

* feat(zgsm): add debug mode and fix tool name handling

* feat(i18n): add debug status to custom config label

* refactor: improve terminal encoding handling and UI styling

* feat(ui): add automatically focus option for chat input

* feat(proxy): add debug-mode proxy routing (RooCodeInc#10467)

* feat(terminal): enhance compilation markers and output handling

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>
Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: John Richmond <[email protected]>
Co-authored-by: Daniel <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Patrick Decat <[email protected]>
Co-authored-by: Seb Duerr <[email protected]>
Co-authored-by: SannidhyaSah <[email protected]>
Co-authored-by: Sannidhya <[email protected]>
mini2s added a commit to zgsm-ai/costrict that referenced this pull request Jan 7, 2026
* feat: remove auto-approve toggles for to-do and retry actions (RooCodeInc#10062)

* feat(openrouter): add improvements to openrouter provider (RooCodeInc#10082)

* feat: Add Amazon Nova 2 Lite model to Bedrock provider (RooCodeInc#9830)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add AWS Bedrock service tier support (RooCodeInc#9955)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Capture more of OpenRouter's provider specific error details (RooCodeInc#10073)

* Capture more of OpenRouter's provider specific error details

* Actually match the openrouter structure

* feat(web-evals): improve run logs and formatters (RooCodeInc#10081)

* Move isToolAllowedForMode out of shared directory (RooCodeInc#10089)

* chore: add changeset for v3.36.7 (RooCodeInc#10091)

* Changeset version bump (RooCodeInc#10092)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent duplicate MCP tools error by deduplicating servers at source (RooCodeInc#10096)

* feat: add metadata to error details dialog (RooCodeInc#10050)

* feat: add metadata to error details dialog

- Prepends extension version, provider, model, and repository info to error details
- Helps users provide better bug reports with context
- Uses useExtensionState and useSelectedModel hooks for data

* Tweaks

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>

* web: Fixes link to provider pricing page (RooCodeInc#10107)

* feat(read-file): implement incremental token-budgeted file reading (RooCodeInc#10052)

* Add config to control public sharing (RooCodeInc#10105)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.92.0 (RooCodeInc#10116)

* Remove the description from bedrock service tiers (RooCodeInc#10118)

* feat: remove strict ARN validation for Bedrock custom ARN users (RooCodeInc#10110)

Co-authored-by: Roo Code <[email protected]>

* fix: prevent race condition from deleting wrong API messages (RooCodeInc#10113)

Co-authored-by: daniel-lxs <[email protected]>

* feat(anthropic): enable native tools by default and add telemetry tracking (RooCodeInc#10021)

* feat: enable native tools by default for multiple providers (RooCodeInc#10059)

* Release v3.36.8 (RooCodeInc#10119)

* fix: add additionalProperties: false to nested MCP tool schemas (RooCodeInc#10109)

* fix: normalize tool call IDs for cross-provider compatibility via OpenRouter (RooCodeInc#10102)

* feat: add full error details to streaming failure dialog (RooCodeInc#10131)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: cte <[email protected]>

* fix: validate tool_result IDs in delegation resume flow (RooCodeInc#10135)

* feat(evals): improve evals UI with tool groups and duration fix (RooCodeInc#10133)

Co-authored-by: Roo Code <[email protected]>

* Changeset version bump (RooCodeInc#10120)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release v3.36.9 (RooCodeInc#10138)

* Changeset version bump (RooCodeInc#10137)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: correct token counting for context truncation display (RooCodeInc#9961)

* feat(deepseek): implement interleaved thinking mode for deepseek-reasoner (RooCodeInc#9969)

* Update next.js to ~15.2.8 (RooCodeInc#10140)

* fix(deepseek): preserve reasoning_content during tool call sequences (RooCodeInc#10141)

Co-authored-by: Roo Code <[email protected]>

* feat: add gemini-3-flash-preview model (RooCodeInc#10151)

* Release v3.36.10 (RooCodeInc#10153)

* Changeset version bump (RooCodeInc#10154)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(bedrock): convert tool_result to XML text when native tools disabled (RooCodeInc#10155)

* fix: remove dots and colons from MCP tool names for Bedrock compatibility (RooCodeInc#10152)

* fix: improve terminal process error handling and abort operation

* fix(ROO-202): refresh Roo models cache with session token on auth state change (RooCodeInc#10156)

* fix: support AWS GovCloud and China region ARNs in Bedrock provider (RooCodeInc#10157)

Co-authored-by: Roo Code <[email protected]>

* feat: enable native tool calling by default for Z.ai models (RooCodeInc#10158)

Co-authored-by: Roo Code <[email protected]>

* [feat] Claude Code Provider Native Tool Calling (RooCodeInc#10077)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: normalize MCP tool schemas for Bedrock and OpenAI strict mode (RooCodeInc#10148)

* fix: enable native tools by default for OpenAI compatible provider (RooCodeInc#10159)

* Release v3.36.11 (RooCodeInc#10161)

* Changeset version bump (RooCodeInc#10162)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): extract error messages from JSON payloads for better PostHog grouping (RooCodeInc#10163)

* fix: add userAgentAppId to Bedrock embedder for code indexing (RooCodeInc#10166)

Adds userAgentAppId configuration to the BedrockRuntimeClient in the
code indexing embedder, matching the implementation pattern already
used in the main Bedrock API provider.

This enables proper user agent identification in CloudTrail AWS requests
when using Bedrock for code indexing embeddings.

Fixes RooCodeInc#10165

Co-authored-by: Roo Code <[email protected]>

* feat: update OpenAI and Gemini tool preferences (RooCodeInc#10170)

* Release v3.36.12 (RooCodeInc#10181)

* Changeset version bump (RooCodeInc#10182)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* Revert "Revert "feat: change defaultToolProtocol default from xml to native"" (RooCodeInc#10186)

Co-authored-by: Roo Code <[email protected]>

* fix(litellm): merge default model info with router models for NTC support (RooCodeInc#10187)

* feat(types): add defaultToolProtocol: native to providers

- Added supportsNativeTools: true and defaultToolProtocol: native to all chutes models
- Added defaultToolProtocol: native to moonshot models (already had supportsNativeTools)
- Added defaultToolProtocol: native to litellm default model (already had supportsNativeTools)
- Added defaultToolProtocol: native to minimax models (already had supportsNativeTools)

This enables native tool calling by default for these providers, reducing
the number of users falling back to XML tool protocol unnecessarily.

* fix(litellm): merge only native tool defaults with router models

Only merges supportsNativeTools and defaultToolProtocol from litellmDefaultModelInfo,
not prices or other model-specific info that could be incorrect for different models.

* Release: v1.93.0 (RooCodeInc#10190)

* feat(vscode-lm): add native tool support (RooCodeInc#10191)

* feat: Replace edit_file tool alias with edit_file tool (RooCodeInc#9983)

* feat: lock task tool protocol for consistent task resumption (RooCodeInc#10192)

Co-authored-by: Roo Code <[email protected]>

* feat(telemetry): add PostHog exception tracking for consecutive mistake errors (RooCodeInc#10193)

* Release v3.36.13 (RooCodeInc#10194)

* Changeset version bump (RooCodeInc#10195)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat: improve 'no tools used' error handling with grace retry (RooCodeInc#10196)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* feat(vertex): add native tool calling for Claude models on Vertex AI (RooCodeInc#10197)

Co-authored-by: daniel-lxs <[email protected]>

* fix: strip unsupported JSON Schema format values for OpenAI compatibility (RooCodeInc#10198)

* Release v3.36.14 (RooCodeInc#10200)

* Changeset version bump (RooCodeInc#10201)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): add telemetry event handling through webview messages

* fix: refresh models button not flushing cache properly (RooCodeInc#9870)

* feat(vertex): add 1M context window beta support for Claude Sonnet 4 (RooCodeInc#10209)

* feat(providers): add native tool calling support to LM Studio and Qwen-Code (RooCodeInc#10208)

* ux: improve API error handling and visibility (RooCodeInc#10204)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>

* ux: add downloadable error diagnostics from chat errors (RooCodeInc#10188)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>

* feat: merge native tool defaults for openai-compatible provider (RooCodeInc#10213)

* fix: force additionalProperties false for strict mode compatibility (RooCodeInc#10210)

* fix: enable native tool calls for Requesty provider (ROO-235) (RooCodeInc#10211)

* Release v3.36.15 (RooCodeInc#10218)

* Changeset version bump (RooCodeInc#10219)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: normalize tool schemas for VS Code LM API to fix error 400 (RooCodeInc#10221)

* Release v3.36.16 (RooCodeInc#10224)

* Changeset version bump (RooCodeInc#10225)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Custom tool calling (RooCodeInc#10083)

* Remove the "test" custom tools (RooCodeInc#10255)

Co-authored-by: Roo Code <[email protected]>

* Add custom tool definitions to @roo-code/types (RooCodeInc#10233)

Co-authored-by: Roo Code <[email protected]>

* fix(evals): add missing packages/core to Dockerfile.runner (RooCodeInc#10272)

* feat: add Cloud Team page with comprehensive team features (RooCodeInc#10267)

* feat: add Cloud Team page with features and pricing integration

* Copy tweaks

* Visual tweaks

* Content adjustments

* Update apps/web-roo-code/src/app/cloud/team/page.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* feat: remove parallel_tool_calls parameter from litellm provider (RooCodeInc#10274)

Co-authored-by: Roo Code <[email protected]>

* feat(build): add types package bundling and alias support

* update(settings): change default tool protocol to XML

* fix: enable Requesty refresh models with credentials (RooCodeInc#10273)

* fix: disable strict mode for MCP tools to preserve optional parameters (RooCodeInc#10220)

Co-authored-by: Roo Code <[email protected]>

* fix: move array-specific properties into anyOf variant in normalizeToolSchema (RooCodeInc#10276)

* fix: move array-specific properties into anyOf variant in normalizeToolSchema

Fixes read_file tool schema rejection with GPT-5-mini which requires
items property to be inside the { type: 'array' } variant when using
anyOf for nullable arrays.

Resolves ROO-262

* refactor: extract array-specific properties constant and helper function

* refactor(custom-tools): improve tool loading and instance consistency

* fix(chutes): add graceful fallback for model parsing (RooCodeInc#10279)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: emit tool_call_end events in OpenAI handler when streaming ends (RooCodeInc#10280)

* feat(core): add support for custom tool parsing in AssistantMessageParser

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* feat: deprecate XML tool protocol selection, force native for new tasks (RooCodeInc#10281)

- Disable tool protocol selector UI in ApiOptions.tsx
- Force native protocol for all new tasks in resolveToolProtocol()
- Keep locked protocol support for resumed tasks that used XML
- Remove models without supportsNativeTools: true from providers:
  - baseten.ts: removed 6 models
  - bedrock.ts: removed 2 embedding models
  - featherless.ts: removed 3 models, updated default
  - groq.ts: removed 5 models
  - sambanova.ts: removed 2 models
  - vertex.ts: removed 7 models
  - vercel-ai-gateway.ts: added supportsNativeTools: true
- Update tests to expect native format output

* feat(zai): add GLM-4.7 model with thinking mode support (RooCodeInc#10282)

Co-authored-by: Roo Code <[email protected]>

* fix: improve reasoning_details accumulation and serialization (RooCodeInc#10285)

* feat(evals): add message log deduper utility (RooCodeInc#10286)

* feat(minimax): move environment_details to system message for thinking models (RooCodeInc#10284)

* fix: add CRLF line ending normalization to search_replace and search_and_replace tools (RooCodeInc#10288)

- Normalize file content to LF after reading to ensure consistent matching
- Normalize search/replace strings to handle CRLF from model output
- Add comprehensive CRLF normalization tests for both tools
- Consistent with existing edit_file tool behavior

* refactor(zai): merge environment_details into tool result instead of system message (RooCodeInc#10289)

* fix: emit tool_call_end events in BaseOpenAiCompatibleProvider (RooCodeInc#10293)

* fix: preserve reasoning_content in condense summary for DeepSeek-reasoner (RooCodeInc#10292)

* Release v3.37.0 (RooCodeInc#10295)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Changeset version bump (RooCodeInc#10296)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: enable mergeToolResultText for Roo Code Cloud provider (RooCodeInc#10301)

* feat: add grace retry for empty assistant messages (RooCodeInc#10297)

Implements grace retry error handling for 'no assistant messages' API
errors, following the same pattern as PR RooCodeInc#10196 for 'no tools used'.

- Add consecutiveNoAssistantMessagesCount counter to Task.ts
- First failure: silent retry (grace retry)
- After 2+ consecutive failures: show MODEL_NO_ASSISTANT_MESSAGES error
- Add UI handling in ChatRow.tsx with ErrorRow component
- Add localized strings to all 18 locale files
- Add comprehensive tests for the grace retry behavior

* Release: v1.95.0 (RooCodeInc#10309)

chore: bump version to v1.95.0

* feat(prompts): strengthen native tool-use guidance (RooCodeInc#10311)

* feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)

* fix: preserve reasoning_details shape to prevent malformed responses (RooCodeInc#10313)

* fix(task): drain queued messages while waiting for ask (RooCodeInc#10315)

* fix(openai): send native tool definitions by default (RooCodeInc#10314)

Co-authored-by: Roo Code <[email protected]>

* ux: Provider-centric signup (RooCodeInc#10306)

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>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.37.1 (RooCodeInc#10316)

* Changeset version bump (RooCodeInc#10317)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* refactor: simplify tool protocol resolution logic

* refactor: optimize stream rendering and file reading limits

* refactor(tools): simplify extractTextFromFile parameters

* feat(chat): add tool protocol display to task header

* fix(test): respect user toolProtocol preference over model capabilities

* update(provider): update zgsm model handling and native tool protocol logic

* feat: remove OpenRouter Transforms feature (RooCodeInc#10341)

- Remove openRouterUseMiddleOutTransform checkbox from settings UI
- Remove openRouterUseMiddleOutTransform from TypeScript types
- Remove transforms parameter logic from OpenRouter handler
- Remove setting from EVALS_SETTINGS
- Remove translation keys from all locale files (18 locales)

Co-authored-by: Roo Code <[email protected]>

* feat: remove simpleReadFileTool completely (RooCodeInc#10254)

- Delete simpleReadFileTool.ts file
- Delete simple-read-file.ts prompt description file
- Delete single-file-read-models.ts types file
- Remove imports and usage from presentAssistantMessage.ts
- Remove imports and usage from prompts/tools/index.ts
- Remove export from packages/types/src/index.ts

This removes all traces of the legacy single-file read tool implementation that was used for specific models. All models now use the standard read_file tool.

Co-authored-by: Roo Code <[email protected]>

* Add support for skills (RooCodeInc#10335)

* Add support for skills

* fix: use type-only import for ClineProvider and relative paths in skills section

---------

Co-authored-by: Roo Code <[email protected]>

* Add support for npm packages and .env files to custom tools (RooCodeInc#10336)

Co-authored-by: Roo Code <[email protected]>

* fix: capture extended thinking signatures for tool use continuations (RooCodeInc#10351)

* feat: add optional mode field to slash command front matter (RooCodeInc#10344)

* feat: add optional mode field to slash command front matter

- Add mode field to Command interface
- Update command parsing to extract mode from frontmatter
- Modify RunSlashCommandTool to automatically switch mode when specified
- Add comprehensive tests for mode field parsing and switching
- Update existing tests to include mode field

* Make it work for manual slash commands too

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Remove the mergeToolResultText in the Roo provider for now (RooCodeInc#10359)

* Revert "fix: capture extended thinking signatures for tool use continuations" (RooCodeInc#10360)

* Release v3.38.0 (RooCodeInc#10361)

* Changeset version bump (RooCodeInc#10362)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: enforce maxConcurrentFileReads limit in read_file tool (RooCodeInc#10363)

Co-authored-by: Roo Code <[email protected]>

* refactor(zgsm): optimize native protocol handling and model ID usage

* docs: clarify path to Security Settings in privacy policy (RooCodeInc#10367)

Co-authored-by: Roo Code <[email protected]>

* Improve error message when read_file is used on directory (RooCodeInc#10371)

Co-authored-by: Roo Code <[email protected]>

* Handle custom tool use similarly to MCP tools for ipc schema purposes (RooCodeInc#10364)

* fix: correct GitHub repository URL in marketing page (RooCodeInc#10377)

Co-authored-by: Roo Code <[email protected]>

* Revert "feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)" (RooCodeInc#10381)

* fix: flush pending tool results before condensing context (RooCodeInc#10379)

* chore: add changeset for v3.38.1 (RooCodeInc#10384)

* Changeset version bump (RooCodeInc#10385)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: update Cerebras maxTokens to 16384 (RooCodeInc#10387)

* docs: Replace Todo Lists video with Context Management video (RooCodeInc#10375)

Co-authored-by: Sannidhya <[email protected]>

* Release: v1.96.0 (RooCodeInc#10395)

chore: bump version to v1.96.0

* fix(utils): add optional chaining for provider settings

* feat(skills): align with Agent Skills spec (RooCodeInc#10409)

* chore: remove human-relay provider (RooCodeInc#10388)

Co-authored-by: Roo Code <[email protected]>

* Fix rate limit wait display (RooCodeInc#10389)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent write_to_file from creating files at truncated paths (RooCodeInc#10415)

Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Roo Code <[email protected]>

* Release v3.38.2 (RooCodeInc#10416)

* Changeset version bump (RooCodeInc#10417)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(claude-code): stop frequent sign-ins by hardening OAuth refresh (RooCodeInc#10410)

* fix(claude-code): prevent sign-outs on oauth refresh

* test(claude-code): restore fetch after mocking

* refactor(claude-code): replace while(true) with bounded for loop for clarity

---------

Co-authored-by: Roo Code <[email protected]>

* fix: add type check for lastMessage.text in TTS useEffect (RooCodeInc#10431)

fix: add type check for lastMessage.text before calling startsWith

Fixes RooCodeInc#10430

The TTS useEffect was calling .startsWith() on lastMessage.text after only
checking if it was truthy. If text was a non-string truthy value (array,
object, or number), this would crash with "Q.text.startsWith is not a function".

Changed the truthy check to an explicit type check: typeof lastMessage.text === "string"

Co-authored-by: Roo Code <[email protected]>

* feat(chat): add collapsible markdown blocks and improve protocol error handling

* refactor(task): restructure conversation history handling

* feat: recursively load .roo/rules and AGENTS.md from subdirectories (RooCodeInc#10446)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.99.0 (RooCodeInc#10447)

* fix: add maxConcurrentFileReads limit to native read_file tool schema (RooCodeInc#10449)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.38.3 (RooCodeInc#10450)

* Changeset version bump (RooCodeInc#10451)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add image support documentation to read_file native tool description (RooCodeInc#10442)

Co-authored-by: Roo Code <[email protected]>

* fix: add explicit deduplication for duplicate tool_result blocks (RooCodeInc#10466)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* VSCode shim + basic cli (RooCodeInc#10452)

Co-authored-by: Roo Code <[email protected]>

* Add an option to use our cli for evals (RooCodeInc#10456)

Co-authored-by: Roo Code <[email protected]>

* fix: preserve tool_use blocks for all tool_results in kept messages during condensation (RooCodeInc#10471)

* fix: add additionalProperties: false to MCP tool schemas for OpenAI Responses API (RooCodeInc#10472)

* feat(cli): add zgsm provider support

* Add a cli installer (RooCodeInc#10474)

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>

* feat(zgsm): add debug mode and fix tool name handling

* feat(i18n): add debug status to custom config label

* refactor: improve terminal encoding handling and UI styling

* feat(ui): add automatically focus option for chat input

* feat(proxy): add debug-mode proxy routing (RooCodeInc#10467)

* feat(terminal): enhance compilation markers and output handling

* fix: prevent duplicate tool_result blocks causing API errors (RooCodeInc#10497)

---------

Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: John Richmond <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Patrick Decat <[email protected]>
Co-authored-by: Seb Duerr <[email protected]>
Co-authored-by: SannidhyaSah <[email protected]>
Co-authored-by: Sannidhya <[email protected]>
mini2s added a commit to zgsm-ai/costrict that referenced this pull request Jan 7, 2026
* feat(openrouter): add improvements to openrouter provider (RooCodeInc#10082)

* feat: Add Amazon Nova 2 Lite model to Bedrock provider (RooCodeInc#9830)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add AWS Bedrock service tier support (RooCodeInc#9955)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Capture more of OpenRouter's provider specific error details (RooCodeInc#10073)

* Capture more of OpenRouter's provider specific error details

* Actually match the openrouter structure

* feat(web-evals): improve run logs and formatters (RooCodeInc#10081)

* Move isToolAllowedForMode out of shared directory (RooCodeInc#10089)

* chore: add changeset for v3.36.7 (RooCodeInc#10091)

* Changeset version bump (RooCodeInc#10092)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent duplicate MCP tools error by deduplicating servers at source (RooCodeInc#10096)

* feat: add metadata to error details dialog (RooCodeInc#10050)

* feat: add metadata to error details dialog

- Prepends extension version, provider, model, and repository info to error details
- Helps users provide better bug reports with context
- Uses useExtensionState and useSelectedModel hooks for data

* Tweaks

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>

* web: Fixes link to provider pricing page (RooCodeInc#10107)

* feat(read-file): implement incremental token-budgeted file reading (RooCodeInc#10052)

* Add config to control public sharing (RooCodeInc#10105)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.92.0 (RooCodeInc#10116)

* Remove the description from bedrock service tiers (RooCodeInc#10118)

* feat: remove strict ARN validation for Bedrock custom ARN users (RooCodeInc#10110)

Co-authored-by: Roo Code <[email protected]>

* fix: prevent race condition from deleting wrong API messages (RooCodeInc#10113)

Co-authored-by: daniel-lxs <[email protected]>

* feat(anthropic): enable native tools by default and add telemetry tracking (RooCodeInc#10021)

* feat: enable native tools by default for multiple providers (RooCodeInc#10059)

* Release v3.36.8 (RooCodeInc#10119)

* fix: add additionalProperties: false to nested MCP tool schemas (RooCodeInc#10109)

* fix: normalize tool call IDs for cross-provider compatibility via OpenRouter (RooCodeInc#10102)

* feat: add full error details to streaming failure dialog (RooCodeInc#10131)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: cte <[email protected]>

* fix: validate tool_result IDs in delegation resume flow (RooCodeInc#10135)

* feat(evals): improve evals UI with tool groups and duration fix (RooCodeInc#10133)

Co-authored-by: Roo Code <[email protected]>

* Changeset version bump (RooCodeInc#10120)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release v3.36.9 (RooCodeInc#10138)

* Changeset version bump (RooCodeInc#10137)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: correct token counting for context truncation display (RooCodeInc#9961)

* feat(deepseek): implement interleaved thinking mode for deepseek-reasoner (RooCodeInc#9969)

* Update next.js to ~15.2.8 (RooCodeInc#10140)

* fix(deepseek): preserve reasoning_content during tool call sequences (RooCodeInc#10141)

Co-authored-by: Roo Code <[email protected]>

* feat: add gemini-3-flash-preview model (RooCodeInc#10151)

* Release v3.36.10 (RooCodeInc#10153)

* Changeset version bump (RooCodeInc#10154)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(bedrock): convert tool_result to XML text when native tools disabled (RooCodeInc#10155)

* fix: remove dots and colons from MCP tool names for Bedrock compatibility (RooCodeInc#10152)

* fix: improve terminal process error handling and abort operation

* fix(ROO-202): refresh Roo models cache with session token on auth state change (RooCodeInc#10156)

* fix: support AWS GovCloud and China region ARNs in Bedrock provider (RooCodeInc#10157)

Co-authored-by: Roo Code <[email protected]>

* feat: enable native tool calling by default for Z.ai models (RooCodeInc#10158)

Co-authored-by: Roo Code <[email protected]>

* [feat] Claude Code Provider Native Tool Calling (RooCodeInc#10077)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: normalize MCP tool schemas for Bedrock and OpenAI strict mode (RooCodeInc#10148)

* fix: enable native tools by default for OpenAI compatible provider (RooCodeInc#10159)

* Release v3.36.11 (RooCodeInc#10161)

* Changeset version bump (RooCodeInc#10162)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): extract error messages from JSON payloads for better PostHog grouping (RooCodeInc#10163)

* fix: add userAgentAppId to Bedrock embedder for code indexing (RooCodeInc#10166)

Adds userAgentAppId configuration to the BedrockRuntimeClient in the
code indexing embedder, matching the implementation pattern already
used in the main Bedrock API provider.

This enables proper user agent identification in CloudTrail AWS requests
when using Bedrock for code indexing embeddings.

Fixes RooCodeInc#10165

Co-authored-by: Roo Code <[email protected]>

* feat: update OpenAI and Gemini tool preferences (RooCodeInc#10170)

* Release v3.36.12 (RooCodeInc#10181)

* Changeset version bump (RooCodeInc#10182)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* Revert "Revert "feat: change defaultToolProtocol default from xml to native"" (RooCodeInc#10186)

Co-authored-by: Roo Code <[email protected]>

* fix(litellm): merge default model info with router models for NTC support (RooCodeInc#10187)

* feat(types): add defaultToolProtocol: native to providers

- Added supportsNativeTools: true and defaultToolProtocol: native to all chutes models
- Added defaultToolProtocol: native to moonshot models (already had supportsNativeTools)
- Added defaultToolProtocol: native to litellm default model (already had supportsNativeTools)
- Added defaultToolProtocol: native to minimax models (already had supportsNativeTools)

This enables native tool calling by default for these providers, reducing
the number of users falling back to XML tool protocol unnecessarily.

* fix(litellm): merge only native tool defaults with router models

Only merges supportsNativeTools and defaultToolProtocol from litellmDefaultModelInfo,
not prices or other model-specific info that could be incorrect for different models.

* Release: v1.93.0 (RooCodeInc#10190)

* feat(vscode-lm): add native tool support (RooCodeInc#10191)

* feat: Replace edit_file tool alias with edit_file tool (RooCodeInc#9983)

* feat: lock task tool protocol for consistent task resumption (RooCodeInc#10192)

Co-authored-by: Roo Code <[email protected]>

* feat(telemetry): add PostHog exception tracking for consecutive mistake errors (RooCodeInc#10193)

* Release v3.36.13 (RooCodeInc#10194)

* Changeset version bump (RooCodeInc#10195)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat: improve 'no tools used' error handling with grace retry (RooCodeInc#10196)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* feat(vertex): add native tool calling for Claude models on Vertex AI (RooCodeInc#10197)

Co-authored-by: daniel-lxs <[email protected]>

* fix: strip unsupported JSON Schema format values for OpenAI compatibility (RooCodeInc#10198)

* Release v3.36.14 (RooCodeInc#10200)

* Changeset version bump (RooCodeInc#10201)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): add telemetry event handling through webview messages

* fix: refresh models button not flushing cache properly (RooCodeInc#9870)

* feat(vertex): add 1M context window beta support for Claude Sonnet 4 (RooCodeInc#10209)

* feat(providers): add native tool calling support to LM Studio and Qwen-Code (RooCodeInc#10208)

* ux: improve API error handling and visibility (RooCodeInc#10204)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>

* ux: add downloadable error diagnostics from chat errors (RooCodeInc#10188)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>

* feat: merge native tool defaults for openai-compatible provider (RooCodeInc#10213)

* fix: force additionalProperties false for strict mode compatibility (RooCodeInc#10210)

* fix: enable native tool calls for Requesty provider (ROO-235) (RooCodeInc#10211)

* Release v3.36.15 (RooCodeInc#10218)

* Changeset version bump (RooCodeInc#10219)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: normalize tool schemas for VS Code LM API to fix error 400 (RooCodeInc#10221)

* Release v3.36.16 (RooCodeInc#10224)

* Changeset version bump (RooCodeInc#10225)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Custom tool calling (RooCodeInc#10083)

* Remove the "test" custom tools (RooCodeInc#10255)

Co-authored-by: Roo Code <[email protected]>

* Add custom tool definitions to @roo-code/types (RooCodeInc#10233)

Co-authored-by: Roo Code <[email protected]>

* fix(evals): add missing packages/core to Dockerfile.runner (RooCodeInc#10272)

* feat: add Cloud Team page with comprehensive team features (RooCodeInc#10267)

* feat: add Cloud Team page with features and pricing integration

* Copy tweaks

* Visual tweaks

* Content adjustments

* Update apps/web-roo-code/src/app/cloud/team/page.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* feat: remove parallel_tool_calls parameter from litellm provider (RooCodeInc#10274)

Co-authored-by: Roo Code <[email protected]>

* feat(build): add types package bundling and alias support

* update(settings): change default tool protocol to XML

* fix: enable Requesty refresh models with credentials (RooCodeInc#10273)

* fix: disable strict mode for MCP tools to preserve optional parameters (RooCodeInc#10220)

Co-authored-by: Roo Code <[email protected]>

* fix: move array-specific properties into anyOf variant in normalizeToolSchema (RooCodeInc#10276)

* fix: move array-specific properties into anyOf variant in normalizeToolSchema

Fixes read_file tool schema rejection with GPT-5-mini which requires
items property to be inside the { type: 'array' } variant when using
anyOf for nullable arrays.

Resolves ROO-262

* refactor: extract array-specific properties constant and helper function

* refactor(custom-tools): improve tool loading and instance consistency

* fix(chutes): add graceful fallback for model parsing (RooCodeInc#10279)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: emit tool_call_end events in OpenAI handler when streaming ends (RooCodeInc#10280)

* feat(core): add support for custom tool parsing in AssistantMessageParser

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* feat: deprecate XML tool protocol selection, force native for new tasks (RooCodeInc#10281)

- Disable tool protocol selector UI in ApiOptions.tsx
- Force native protocol for all new tasks in resolveToolProtocol()
- Keep locked protocol support for resumed tasks that used XML
- Remove models without supportsNativeTools: true from providers:
  - baseten.ts: removed 6 models
  - bedrock.ts: removed 2 embedding models
  - featherless.ts: removed 3 models, updated default
  - groq.ts: removed 5 models
  - sambanova.ts: removed 2 models
  - vertex.ts: removed 7 models
  - vercel-ai-gateway.ts: added supportsNativeTools: true
- Update tests to expect native format output

* feat(zai): add GLM-4.7 model with thinking mode support (RooCodeInc#10282)

Co-authored-by: Roo Code <[email protected]>

* fix: improve reasoning_details accumulation and serialization (RooCodeInc#10285)

* feat(evals): add message log deduper utility (RooCodeInc#10286)

* feat(minimax): move environment_details to system message for thinking models (RooCodeInc#10284)

* fix: add CRLF line ending normalization to search_replace and search_and_replace tools (RooCodeInc#10288)

- Normalize file content to LF after reading to ensure consistent matching
- Normalize search/replace strings to handle CRLF from model output
- Add comprehensive CRLF normalization tests for both tools
- Consistent with existing edit_file tool behavior

* refactor(zai): merge environment_details into tool result instead of system message (RooCodeInc#10289)

* fix: emit tool_call_end events in BaseOpenAiCompatibleProvider (RooCodeInc#10293)

* fix: preserve reasoning_content in condense summary for DeepSeek-reasoner (RooCodeInc#10292)

* Release v3.37.0 (RooCodeInc#10295)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Changeset version bump (RooCodeInc#10296)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: enable mergeToolResultText for Roo Code Cloud provider (RooCodeInc#10301)

* feat: add grace retry for empty assistant messages (RooCodeInc#10297)

Implements grace retry error handling for 'no assistant messages' API
errors, following the same pattern as PR RooCodeInc#10196 for 'no tools used'.

- Add consecutiveNoAssistantMessagesCount counter to Task.ts
- First failure: silent retry (grace retry)
- After 2+ consecutive failures: show MODEL_NO_ASSISTANT_MESSAGES error
- Add UI handling in ChatRow.tsx with ErrorRow component
- Add localized strings to all 18 locale files
- Add comprehensive tests for the grace retry behavior

* Release: v1.95.0 (RooCodeInc#10309)

chore: bump version to v1.95.0

* feat(prompts): strengthen native tool-use guidance (RooCodeInc#10311)

* feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)

* fix: preserve reasoning_details shape to prevent malformed responses (RooCodeInc#10313)

* fix(task): drain queued messages while waiting for ask (RooCodeInc#10315)

* fix(openai): send native tool definitions by default (RooCodeInc#10314)

Co-authored-by: Roo Code <[email protected]>

* ux: Provider-centric signup (RooCodeInc#10306)

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>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.37.1 (RooCodeInc#10316)

* Changeset version bump (RooCodeInc#10317)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* refactor: simplify tool protocol resolution logic

* refactor: optimize stream rendering and file reading limits

* refactor(tools): simplify extractTextFromFile parameters

* feat(chat): add tool protocol display to task header

* fix(test): respect user toolProtocol preference over model capabilities

* update(provider): update zgsm model handling and native tool protocol logic

* feat: remove OpenRouter Transforms feature (RooCodeInc#10341)

- Remove openRouterUseMiddleOutTransform checkbox from settings UI
- Remove openRouterUseMiddleOutTransform from TypeScript types
- Remove transforms parameter logic from OpenRouter handler
- Remove setting from EVALS_SETTINGS
- Remove translation keys from all locale files (18 locales)

Co-authored-by: Roo Code <[email protected]>

* feat: remove simpleReadFileTool completely (RooCodeInc#10254)

- Delete simpleReadFileTool.ts file
- Delete simple-read-file.ts prompt description file
- Delete single-file-read-models.ts types file
- Remove imports and usage from presentAssistantMessage.ts
- Remove imports and usage from prompts/tools/index.ts
- Remove export from packages/types/src/index.ts

This removes all traces of the legacy single-file read tool implementation that was used for specific models. All models now use the standard read_file tool.

Co-authored-by: Roo Code <[email protected]>

* Add support for skills (RooCodeInc#10335)

* Add support for skills

* fix: use type-only import for ClineProvider and relative paths in skills section

---------

Co-authored-by: Roo Code <[email protected]>

* Add support for npm packages and .env files to custom tools (RooCodeInc#10336)

Co-authored-by: Roo Code <[email protected]>

* fix: capture extended thinking signatures for tool use continuations (RooCodeInc#10351)

* feat: add optional mode field to slash command front matter (RooCodeInc#10344)

* feat: add optional mode field to slash command front matter

- Add mode field to Command interface
- Update command parsing to extract mode from frontmatter
- Modify RunSlashCommandTool to automatically switch mode when specified
- Add comprehensive tests for mode field parsing and switching
- Update existing tests to include mode field

* Make it work for manual slash commands too

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Remove the mergeToolResultText in the Roo provider for now (RooCodeInc#10359)

* Revert "fix: capture extended thinking signatures for tool use continuations" (RooCodeInc#10360)

* Release v3.38.0 (RooCodeInc#10361)

* Changeset version bump (RooCodeInc#10362)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: enforce maxConcurrentFileReads limit in read_file tool (RooCodeInc#10363)

Co-authored-by: Roo Code <[email protected]>

* refactor(zgsm): optimize native protocol handling and model ID usage

* docs: clarify path to Security Settings in privacy policy (RooCodeInc#10367)

Co-authored-by: Roo Code <[email protected]>

* Improve error message when read_file is used on directory (RooCodeInc#10371)

Co-authored-by: Roo Code <[email protected]>

* Handle custom tool use similarly to MCP tools for ipc schema purposes (RooCodeInc#10364)

* fix: correct GitHub repository URL in marketing page (RooCodeInc#10377)

Co-authored-by: Roo Code <[email protected]>

* Revert "feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)" (RooCodeInc#10381)

* fix: flush pending tool results before condensing context (RooCodeInc#10379)

* chore: add changeset for v3.38.1 (RooCodeInc#10384)

* Changeset version bump (RooCodeInc#10385)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: update Cerebras maxTokens to 16384 (RooCodeInc#10387)

* docs: Replace Todo Lists video with Context Management video (RooCodeInc#10375)

Co-authored-by: Sannidhya <[email protected]>

* Release: v1.96.0 (RooCodeInc#10395)

chore: bump version to v1.96.0

* fix(utils): add optional chaining for provider settings

* feat(skills): align with Agent Skills spec (RooCodeInc#10409)

* chore: remove human-relay provider (RooCodeInc#10388)

Co-authored-by: Roo Code <[email protected]>

* Fix rate limit wait display (RooCodeInc#10389)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent write_to_file from creating files at truncated paths (RooCodeInc#10415)

Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Roo Code <[email protected]>

* Release v3.38.2 (RooCodeInc#10416)

* Changeset version bump (RooCodeInc#10417)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(claude-code): stop frequent sign-ins by hardening OAuth refresh (RooCodeInc#10410)

* fix(claude-code): prevent sign-outs on oauth refresh

* test(claude-code): restore fetch after mocking

* refactor(claude-code): replace while(true) with bounded for loop for clarity

---------

Co-authored-by: Roo Code <[email protected]>

* fix: add type check for lastMessage.text in TTS useEffect (RooCodeInc#10431)

fix: add type check for lastMessage.text before calling startsWith

Fixes RooCodeInc#10430

The TTS useEffect was calling .startsWith() on lastMessage.text after only
checking if it was truthy. If text was a non-string truthy value (array,
object, or number), this would crash with "Q.text.startsWith is not a function".

Changed the truthy check to an explicit type check: typeof lastMessage.text === "string"

Co-authored-by: Roo Code <[email protected]>

* feat(chat): add collapsible markdown blocks and improve protocol error handling

* refactor(task): restructure conversation history handling

* feat: recursively load .roo/rules and AGENTS.md from subdirectories (RooCodeInc#10446)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.99.0 (RooCodeInc#10447)

* fix: add maxConcurrentFileReads limit to native read_file tool schema (RooCodeInc#10449)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.38.3 (RooCodeInc#10450)

* Changeset version bump (RooCodeInc#10451)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add image support documentation to read_file native tool description (RooCodeInc#10442)

Co-authored-by: Roo Code <[email protected]>

* fix: add explicit deduplication for duplicate tool_result blocks (RooCodeInc#10466)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* VSCode shim + basic cli (RooCodeInc#10452)

Co-authored-by: Roo Code <[email protected]>

* Add an option to use our cli for evals (RooCodeInc#10456)

Co-authored-by: Roo Code <[email protected]>

* fix: preserve tool_use blocks for all tool_results in kept messages during condensation (RooCodeInc#10471)

* fix: add additionalProperties: false to MCP tool schemas for OpenAI Responses API (RooCodeInc#10472)

* feat(cli): add zgsm provider support

* Add a cli installer (RooCodeInc#10474)

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>

* feat(zgsm): add debug mode and fix tool name handling

* feat(i18n): add debug status to custom config label

* refactor: improve terminal encoding handling and UI styling

* feat(ui): add automatically focus option for chat input

* feat(proxy): add debug-mode proxy routing (RooCodeInc#10467)

* feat(terminal): enhance compilation markers and output handling

* fix: prevent duplicate tool_result blocks causing API errors (RooCodeInc#10497)

* feat: add Kimi K2 thinking model to Fireworks AI provider (RooCodeInc#9202)

Co-authored-by: Roo Code <[email protected]>

* fix: add missing description fields for debugProxy configuration (RooCodeInc#10505)

Co-authored-by: Roo Code <[email protected]>

---------

Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: John Richmond <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Patrick Decat <[email protected]>
Co-authored-by: Seb Duerr <[email protected]>
Co-authored-by: SannidhyaSah <[email protected]>
Co-authored-by: Sannidhya <[email protected]>
mini2s added a commit to zgsm-ai/costrict that referenced this pull request Jan 7, 2026
* feat: Add Amazon Nova 2 Lite model to Bedrock provider (RooCodeInc#9830)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add AWS Bedrock service tier support (RooCodeInc#9955)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Capture more of OpenRouter's provider specific error details (RooCodeInc#10073)

* Capture more of OpenRouter's provider specific error details

* Actually match the openrouter structure

* feat(web-evals): improve run logs and formatters (RooCodeInc#10081)

* Move isToolAllowedForMode out of shared directory (RooCodeInc#10089)

* chore: add changeset for v3.36.7 (RooCodeInc#10091)

* Changeset version bump (RooCodeInc#10092)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent duplicate MCP tools error by deduplicating servers at source (RooCodeInc#10096)

* feat: add metadata to error details dialog (RooCodeInc#10050)

* feat: add metadata to error details dialog

- Prepends extension version, provider, model, and repository info to error details
- Helps users provide better bug reports with context
- Uses useExtensionState and useSelectedModel hooks for data

* Tweaks

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>

* web: Fixes link to provider pricing page (RooCodeInc#10107)

* feat(read-file): implement incremental token-budgeted file reading (RooCodeInc#10052)

* Add config to control public sharing (RooCodeInc#10105)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.92.0 (RooCodeInc#10116)

* Remove the description from bedrock service tiers (RooCodeInc#10118)

* feat: remove strict ARN validation for Bedrock custom ARN users (RooCodeInc#10110)

Co-authored-by: Roo Code <[email protected]>

* fix: prevent race condition from deleting wrong API messages (RooCodeInc#10113)

Co-authored-by: daniel-lxs <[email protected]>

* feat(anthropic): enable native tools by default and add telemetry tracking (RooCodeInc#10021)

* feat: enable native tools by default for multiple providers (RooCodeInc#10059)

* Release v3.36.8 (RooCodeInc#10119)

* fix: add additionalProperties: false to nested MCP tool schemas (RooCodeInc#10109)

* fix: normalize tool call IDs for cross-provider compatibility via OpenRouter (RooCodeInc#10102)

* feat: add full error details to streaming failure dialog (RooCodeInc#10131)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: cte <[email protected]>

* fix: validate tool_result IDs in delegation resume flow (RooCodeInc#10135)

* feat(evals): improve evals UI with tool groups and duration fix (RooCodeInc#10133)

Co-authored-by: Roo Code <[email protected]>

* Changeset version bump (RooCodeInc#10120)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release v3.36.9 (RooCodeInc#10138)

* Changeset version bump (RooCodeInc#10137)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: correct token counting for context truncation display (RooCodeInc#9961)

* feat(deepseek): implement interleaved thinking mode for deepseek-reasoner (RooCodeInc#9969)

* Update next.js to ~15.2.8 (RooCodeInc#10140)

* fix(deepseek): preserve reasoning_content during tool call sequences (RooCodeInc#10141)

Co-authored-by: Roo Code <[email protected]>

* feat: add gemini-3-flash-preview model (RooCodeInc#10151)

* Release v3.36.10 (RooCodeInc#10153)

* Changeset version bump (RooCodeInc#10154)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(bedrock): convert tool_result to XML text when native tools disabled (RooCodeInc#10155)

* fix: remove dots and colons from MCP tool names for Bedrock compatibility (RooCodeInc#10152)

* fix: improve terminal process error handling and abort operation

* fix(ROO-202): refresh Roo models cache with session token on auth state change (RooCodeInc#10156)

* fix: support AWS GovCloud and China region ARNs in Bedrock provider (RooCodeInc#10157)

Co-authored-by: Roo Code <[email protected]>

* feat: enable native tool calling by default for Z.ai models (RooCodeInc#10158)

Co-authored-by: Roo Code <[email protected]>

* [feat] Claude Code Provider Native Tool Calling (RooCodeInc#10077)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: normalize MCP tool schemas for Bedrock and OpenAI strict mode (RooCodeInc#10148)

* fix: enable native tools by default for OpenAI compatible provider (RooCodeInc#10159)

* Release v3.36.11 (RooCodeInc#10161)

* Changeset version bump (RooCodeInc#10162)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): extract error messages from JSON payloads for better PostHog grouping (RooCodeInc#10163)

* fix: add userAgentAppId to Bedrock embedder for code indexing (RooCodeInc#10166)

Adds userAgentAppId configuration to the BedrockRuntimeClient in the
code indexing embedder, matching the implementation pattern already
used in the main Bedrock API provider.

This enables proper user agent identification in CloudTrail AWS requests
when using Bedrock for code indexing embeddings.

Fixes RooCodeInc#10165

Co-authored-by: Roo Code <[email protected]>

* feat: update OpenAI and Gemini tool preferences (RooCodeInc#10170)

* Release v3.36.12 (RooCodeInc#10181)

* Changeset version bump (RooCodeInc#10182)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* Revert "Revert "feat: change defaultToolProtocol default from xml to native"" (RooCodeInc#10186)

Co-authored-by: Roo Code <[email protected]>

* fix(litellm): merge default model info with router models for NTC support (RooCodeInc#10187)

* feat(types): add defaultToolProtocol: native to providers

- Added supportsNativeTools: true and defaultToolProtocol: native to all chutes models
- Added defaultToolProtocol: native to moonshot models (already had supportsNativeTools)
- Added defaultToolProtocol: native to litellm default model (already had supportsNativeTools)
- Added defaultToolProtocol: native to minimax models (already had supportsNativeTools)

This enables native tool calling by default for these providers, reducing
the number of users falling back to XML tool protocol unnecessarily.

* fix(litellm): merge only native tool defaults with router models

Only merges supportsNativeTools and defaultToolProtocol from litellmDefaultModelInfo,
not prices or other model-specific info that could be incorrect for different models.

* Release: v1.93.0 (RooCodeInc#10190)

* feat(vscode-lm): add native tool support (RooCodeInc#10191)

* feat: Replace edit_file tool alias with edit_file tool (RooCodeInc#9983)

* feat: lock task tool protocol for consistent task resumption (RooCodeInc#10192)

Co-authored-by: Roo Code <[email protected]>

* feat(telemetry): add PostHog exception tracking for consecutive mistake errors (RooCodeInc#10193)

* Release v3.36.13 (RooCodeInc#10194)

* Changeset version bump (RooCodeInc#10195)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat: improve 'no tools used' error handling with grace retry (RooCodeInc#10196)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* feat(vertex): add native tool calling for Claude models on Vertex AI (RooCodeInc#10197)

Co-authored-by: daniel-lxs <[email protected]>

* fix: strip unsupported JSON Schema format values for OpenAI compatibility (RooCodeInc#10198)

* Release v3.36.14 (RooCodeInc#10200)

* Changeset version bump (RooCodeInc#10201)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): add telemetry event handling through webview messages

* fix: refresh models button not flushing cache properly (RooCodeInc#9870)

* feat(vertex): add 1M context window beta support for Claude Sonnet 4 (RooCodeInc#10209)

* feat(providers): add native tool calling support to LM Studio and Qwen-Code (RooCodeInc#10208)

* ux: improve API error handling and visibility (RooCodeInc#10204)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>

* ux: add downloadable error diagnostics from chat errors (RooCodeInc#10188)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>

* feat: merge native tool defaults for openai-compatible provider (RooCodeInc#10213)

* fix: force additionalProperties false for strict mode compatibility (RooCodeInc#10210)

* fix: enable native tool calls for Requesty provider (ROO-235) (RooCodeInc#10211)

* Release v3.36.15 (RooCodeInc#10218)

* Changeset version bump (RooCodeInc#10219)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: normalize tool schemas for VS Code LM API to fix error 400 (RooCodeInc#10221)

* Release v3.36.16 (RooCodeInc#10224)

* Changeset version bump (RooCodeInc#10225)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Custom tool calling (RooCodeInc#10083)

* Remove the "test" custom tools (RooCodeInc#10255)

Co-authored-by: Roo Code <[email protected]>

* Add custom tool definitions to @roo-code/types (RooCodeInc#10233)

Co-authored-by: Roo Code <[email protected]>

* fix(evals): add missing packages/core to Dockerfile.runner (RooCodeInc#10272)

* feat: add Cloud Team page with comprehensive team features (RooCodeInc#10267)

* feat: add Cloud Team page with features and pricing integration

* Copy tweaks

* Visual tweaks

* Content adjustments

* Update apps/web-roo-code/src/app/cloud/team/page.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* feat: remove parallel_tool_calls parameter from litellm provider (RooCodeInc#10274)

Co-authored-by: Roo Code <[email protected]>

* feat(build): add types package bundling and alias support

* update(settings): change default tool protocol to XML

* fix: enable Requesty refresh models with credentials (RooCodeInc#10273)

* fix: disable strict mode for MCP tools to preserve optional parameters (RooCodeInc#10220)

Co-authored-by: Roo Code <[email protected]>

* fix: move array-specific properties into anyOf variant in normalizeToolSchema (RooCodeInc#10276)

* fix: move array-specific properties into anyOf variant in normalizeToolSchema

Fixes read_file tool schema rejection with GPT-5-mini which requires
items property to be inside the { type: 'array' } variant when using
anyOf for nullable arrays.

Resolves ROO-262

* refactor: extract array-specific properties constant and helper function

* refactor(custom-tools): improve tool loading and instance consistency

* fix(chutes): add graceful fallback for model parsing (RooCodeInc#10279)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: emit tool_call_end events in OpenAI handler when streaming ends (RooCodeInc#10280)

* feat(core): add support for custom tool parsing in AssistantMessageParser

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* feat: deprecate XML tool protocol selection, force native for new tasks (RooCodeInc#10281)

- Disable tool protocol selector UI in ApiOptions.tsx
- Force native protocol for all new tasks in resolveToolProtocol()
- Keep locked protocol support for resumed tasks that used XML
- Remove models without supportsNativeTools: true from providers:
  - baseten.ts: removed 6 models
  - bedrock.ts: removed 2 embedding models
  - featherless.ts: removed 3 models, updated default
  - groq.ts: removed 5 models
  - sambanova.ts: removed 2 models
  - vertex.ts: removed 7 models
  - vercel-ai-gateway.ts: added supportsNativeTools: true
- Update tests to expect native format output

* feat(zai): add GLM-4.7 model with thinking mode support (RooCodeInc#10282)

Co-authored-by: Roo Code <[email protected]>

* fix: improve reasoning_details accumulation and serialization (RooCodeInc#10285)

* feat(evals): add message log deduper utility (RooCodeInc#10286)

* feat(minimax): move environment_details to system message for thinking models (RooCodeInc#10284)

* fix: add CRLF line ending normalization to search_replace and search_and_replace tools (RooCodeInc#10288)

- Normalize file content to LF after reading to ensure consistent matching
- Normalize search/replace strings to handle CRLF from model output
- Add comprehensive CRLF normalization tests for both tools
- Consistent with existing edit_file tool behavior

* refactor(zai): merge environment_details into tool result instead of system message (RooCodeInc#10289)

* fix: emit tool_call_end events in BaseOpenAiCompatibleProvider (RooCodeInc#10293)

* fix: preserve reasoning_content in condense summary for DeepSeek-reasoner (RooCodeInc#10292)

* Release v3.37.0 (RooCodeInc#10295)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Changeset version bump (RooCodeInc#10296)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: enable mergeToolResultText for Roo Code Cloud provider (RooCodeInc#10301)

* feat: add grace retry for empty assistant messages (RooCodeInc#10297)

Implements grace retry error handling for 'no assistant messages' API
errors, following the same pattern as PR RooCodeInc#10196 for 'no tools used'.

- Add consecutiveNoAssistantMessagesCount counter to Task.ts
- First failure: silent retry (grace retry)
- After 2+ consecutive failures: show MODEL_NO_ASSISTANT_MESSAGES error
- Add UI handling in ChatRow.tsx with ErrorRow component
- Add localized strings to all 18 locale files
- Add comprehensive tests for the grace retry behavior

* Release: v1.95.0 (RooCodeInc#10309)

chore: bump version to v1.95.0

* feat(prompts): strengthen native tool-use guidance (RooCodeInc#10311)

* feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)

* fix: preserve reasoning_details shape to prevent malformed responses (RooCodeInc#10313)

* fix(task): drain queued messages while waiting for ask (RooCodeInc#10315)

* fix(openai): send native tool definitions by default (RooCodeInc#10314)

Co-authored-by: Roo Code <[email protected]>

* ux: Provider-centric signup (RooCodeInc#10306)

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>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.37.1 (RooCodeInc#10316)

* Changeset version bump (RooCodeInc#10317)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* refactor: simplify tool protocol resolution logic

* refactor: optimize stream rendering and file reading limits

* refactor(tools): simplify extractTextFromFile parameters

* feat(chat): add tool protocol display to task header

* fix(test): respect user toolProtocol preference over model capabilities

* update(provider): update zgsm model handling and native tool protocol logic

* feat: remove OpenRouter Transforms feature (RooCodeInc#10341)

- Remove openRouterUseMiddleOutTransform checkbox from settings UI
- Remove openRouterUseMiddleOutTransform from TypeScript types
- Remove transforms parameter logic from OpenRouter handler
- Remove setting from EVALS_SETTINGS
- Remove translation keys from all locale files (18 locales)

Co-authored-by: Roo Code <[email protected]>

* feat: remove simpleReadFileTool completely (RooCodeInc#10254)

- Delete simpleReadFileTool.ts file
- Delete simple-read-file.ts prompt description file
- Delete single-file-read-models.ts types file
- Remove imports and usage from presentAssistantMessage.ts
- Remove imports and usage from prompts/tools/index.ts
- Remove export from packages/types/src/index.ts

This removes all traces of the legacy single-file read tool implementation that was used for specific models. All models now use the standard read_file tool.

Co-authored-by: Roo Code <[email protected]>

* Add support for skills (RooCodeInc#10335)

* Add support for skills

* fix: use type-only import for ClineProvider and relative paths in skills section

---------

Co-authored-by: Roo Code <[email protected]>

* Add support for npm packages and .env files to custom tools (RooCodeInc#10336)

Co-authored-by: Roo Code <[email protected]>

* fix: capture extended thinking signatures for tool use continuations (RooCodeInc#10351)

* feat: add optional mode field to slash command front matter (RooCodeInc#10344)

* feat: add optional mode field to slash command front matter

- Add mode field to Command interface
- Update command parsing to extract mode from frontmatter
- Modify RunSlashCommandTool to automatically switch mode when specified
- Add comprehensive tests for mode field parsing and switching
- Update existing tests to include mode field

* Make it work for manual slash commands too

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Remove the mergeToolResultText in the Roo provider for now (RooCodeInc#10359)

* Revert "fix: capture extended thinking signatures for tool use continuations" (RooCodeInc#10360)

* Release v3.38.0 (RooCodeInc#10361)

* Changeset version bump (RooCodeInc#10362)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: enforce maxConcurrentFileReads limit in read_file tool (RooCodeInc#10363)

Co-authored-by: Roo Code <[email protected]>

* refactor(zgsm): optimize native protocol handling and model ID usage

* docs: clarify path to Security Settings in privacy policy (RooCodeInc#10367)

Co-authored-by: Roo Code <[email protected]>

* Improve error message when read_file is used on directory (RooCodeInc#10371)

Co-authored-by: Roo Code <[email protected]>

* Handle custom tool use similarly to MCP tools for ipc schema purposes (RooCodeInc#10364)

* fix: correct GitHub repository URL in marketing page (RooCodeInc#10377)

Co-authored-by: Roo Code <[email protected]>

* Revert "feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)" (RooCodeInc#10381)

* fix: flush pending tool results before condensing context (RooCodeInc#10379)

* chore: add changeset for v3.38.1 (RooCodeInc#10384)

* Changeset version bump (RooCodeInc#10385)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: update Cerebras maxTokens to 16384 (RooCodeInc#10387)

* docs: Replace Todo Lists video with Context Management video (RooCodeInc#10375)

Co-authored-by: Sannidhya <[email protected]>

* Release: v1.96.0 (RooCodeInc#10395)

chore: bump version to v1.96.0

* fix(utils): add optional chaining for provider settings

* feat(skills): align with Agent Skills spec (RooCodeInc#10409)

* chore: remove human-relay provider (RooCodeInc#10388)

Co-authored-by: Roo Code <[email protected]>

* Fix rate limit wait display (RooCodeInc#10389)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent write_to_file from creating files at truncated paths (RooCodeInc#10415)

Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Roo Code <[email protected]>

* Release v3.38.2 (RooCodeInc#10416)

* Changeset version bump (RooCodeInc#10417)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(claude-code): stop frequent sign-ins by hardening OAuth refresh (RooCodeInc#10410)

* fix(claude-code): prevent sign-outs on oauth refresh

* test(claude-code): restore fetch after mocking

* refactor(claude-code): replace while(true) with bounded for loop for clarity

---------

Co-authored-by: Roo Code <[email protected]>

* fix: add type check for lastMessage.text in TTS useEffect (RooCodeInc#10431)

fix: add type check for lastMessage.text before calling startsWith

Fixes RooCodeInc#10430

The TTS useEffect was calling .startsWith() on lastMessage.text after only
checking if it was truthy. If text was a non-string truthy value (array,
object, or number), this would crash with "Q.text.startsWith is not a function".

Changed the truthy check to an explicit type check: typeof lastMessage.text === "string"

Co-authored-by: Roo Code <[email protected]>

* feat(chat): add collapsible markdown blocks and improve protocol error handling

* refactor(task): restructure conversation history handling

* feat: recursively load .roo/rules and AGENTS.md from subdirectories (RooCodeInc#10446)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.99.0 (RooCodeInc#10447)

* fix: add maxConcurrentFileReads limit to native read_file tool schema (RooCodeInc#10449)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.38.3 (RooCodeInc#10450)

* Changeset version bump (RooCodeInc#10451)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add image support documentation to read_file native tool description (RooCodeInc#10442)

Co-authored-by: Roo Code <[email protected]>

* fix: add explicit deduplication for duplicate tool_result blocks (RooCodeInc#10466)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* VSCode shim + basic cli (RooCodeInc#10452)

Co-authored-by: Roo Code <[email protected]>

* Add an option to use our cli for evals (RooCodeInc#10456)

Co-authored-by: Roo Code <[email protected]>

* fix: preserve tool_use blocks for all tool_results in kept messages during condensation (RooCodeInc#10471)

* fix: add additionalProperties: false to MCP tool schemas for OpenAI Responses API (RooCodeInc#10472)

* feat(cli): add zgsm provider support

* Add a cli installer (RooCodeInc#10474)

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>

* feat(zgsm): add debug mode and fix tool name handling

* feat(i18n): add debug status to custom config label

* refactor: improve terminal encoding handling and UI styling

* feat(ui): add automatically focus option for chat input

* feat(proxy): add debug-mode proxy routing (RooCodeInc#10467)

* feat(terminal): enhance compilation markers and output handling

* fix: prevent duplicate tool_result blocks causing API errors (RooCodeInc#10497)

* feat: add Kimi K2 thinking model to Fireworks AI provider (RooCodeInc#9202)

Co-authored-by: Roo Code <[email protected]>

* fix: add missing description fields for debugProxy configuration (RooCodeInc#10505)

Co-authored-by: Roo Code <[email protected]>

* Tweak the style of the follow up suggestion modes (RooCodeInc#9260)

---------

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: John Richmond <[email protected]>
Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Patrick Decat <[email protected]>
Co-authored-by: Seb Duerr <[email protected]>
Co-authored-by: SannidhyaSah <[email protected]>
Co-authored-by: Sannidhya <[email protected]>
mini2s added a commit to zgsm-ai/costrict that referenced this pull request Jan 7, 2026
* Move isToolAllowedForMode out of shared directory (RooCodeInc#10089)

* chore: add changeset for v3.36.7 (RooCodeInc#10091)

* Changeset version bump (RooCodeInc#10092)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent duplicate MCP tools error by deduplicating servers at source (RooCodeInc#10096)

* feat: add metadata to error details dialog (RooCodeInc#10050)

* feat: add metadata to error details dialog

- Prepends extension version, provider, model, and repository info to error details
- Helps users provide better bug reports with context
- Uses useExtensionState and useSelectedModel hooks for data

* Tweaks

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>

* web: Fixes link to provider pricing page (RooCodeInc#10107)

* feat(read-file): implement incremental token-budgeted file reading (RooCodeInc#10052)

* Add config to control public sharing (RooCodeInc#10105)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.92.0 (RooCodeInc#10116)

* Remove the description from bedrock service tiers (RooCodeInc#10118)

* feat: remove strict ARN validation for Bedrock custom ARN users (RooCodeInc#10110)

Co-authored-by: Roo Code <[email protected]>

* fix: prevent race condition from deleting wrong API messages (RooCodeInc#10113)

Co-authored-by: daniel-lxs <[email protected]>

* feat(anthropic): enable native tools by default and add telemetry tracking (RooCodeInc#10021)

* feat: enable native tools by default for multiple providers (RooCodeInc#10059)

* Release v3.36.8 (RooCodeInc#10119)

* fix: add additionalProperties: false to nested MCP tool schemas (RooCodeInc#10109)

* fix: normalize tool call IDs for cross-provider compatibility via OpenRouter (RooCodeInc#10102)

* feat: add full error details to streaming failure dialog (RooCodeInc#10131)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: cte <[email protected]>

* fix: validate tool_result IDs in delegation resume flow (RooCodeInc#10135)

* feat(evals): improve evals UI with tool groups and duration fix (RooCodeInc#10133)

Co-authored-by: Roo Code <[email protected]>

* Changeset version bump (RooCodeInc#10120)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release v3.36.9 (RooCodeInc#10138)

* Changeset version bump (RooCodeInc#10137)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: correct token counting for context truncation display (RooCodeInc#9961)

* feat(deepseek): implement interleaved thinking mode for deepseek-reasoner (RooCodeInc#9969)

* Update next.js to ~15.2.8 (RooCodeInc#10140)

* fix(deepseek): preserve reasoning_content during tool call sequences (RooCodeInc#10141)

Co-authored-by: Roo Code <[email protected]>

* feat: add gemini-3-flash-preview model (RooCodeInc#10151)

* Release v3.36.10 (RooCodeInc#10153)

* Changeset version bump (RooCodeInc#10154)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(bedrock): convert tool_result to XML text when native tools disabled (RooCodeInc#10155)

* fix: remove dots and colons from MCP tool names for Bedrock compatibility (RooCodeInc#10152)

* fix: improve terminal process error handling and abort operation

* fix(ROO-202): refresh Roo models cache with session token on auth state change (RooCodeInc#10156)

* fix: support AWS GovCloud and China region ARNs in Bedrock provider (RooCodeInc#10157)

Co-authored-by: Roo Code <[email protected]>

* feat: enable native tool calling by default for Z.ai models (RooCodeInc#10158)

Co-authored-by: Roo Code <[email protected]>

* [feat] Claude Code Provider Native Tool Calling (RooCodeInc#10077)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: normalize MCP tool schemas for Bedrock and OpenAI strict mode (RooCodeInc#10148)

* fix: enable native tools by default for OpenAI compatible provider (RooCodeInc#10159)

* Release v3.36.11 (RooCodeInc#10161)

* Changeset version bump (RooCodeInc#10162)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): extract error messages from JSON payloads for better PostHog grouping (RooCodeInc#10163)

* fix: add userAgentAppId to Bedrock embedder for code indexing (RooCodeInc#10166)

Adds userAgentAppId configuration to the BedrockRuntimeClient in the
code indexing embedder, matching the implementation pattern already
used in the main Bedrock API provider.

This enables proper user agent identification in CloudTrail AWS requests
when using Bedrock for code indexing embeddings.

Fixes RooCodeInc#10165

Co-authored-by: Roo Code <[email protected]>

* feat: update OpenAI and Gemini tool preferences (RooCodeInc#10170)

* Release v3.36.12 (RooCodeInc#10181)

* Changeset version bump (RooCodeInc#10182)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* Revert "Revert "feat: change defaultToolProtocol default from xml to native"" (RooCodeInc#10186)

Co-authored-by: Roo Code <[email protected]>

* fix(litellm): merge default model info with router models for NTC support (RooCodeInc#10187)

* feat(types): add defaultToolProtocol: native to providers

- Added supportsNativeTools: true and defaultToolProtocol: native to all chutes models
- Added defaultToolProtocol: native to moonshot models (already had supportsNativeTools)
- Added defaultToolProtocol: native to litellm default model (already had supportsNativeTools)
- Added defaultToolProtocol: native to minimax models (already had supportsNativeTools)

This enables native tool calling by default for these providers, reducing
the number of users falling back to XML tool protocol unnecessarily.

* fix(litellm): merge only native tool defaults with router models

Only merges supportsNativeTools and defaultToolProtocol from litellmDefaultModelInfo,
not prices or other model-specific info that could be incorrect for different models.

* Release: v1.93.0 (RooCodeInc#10190)

* feat(vscode-lm): add native tool support (RooCodeInc#10191)

* feat: Replace edit_file tool alias with edit_file tool (RooCodeInc#9983)

* feat: lock task tool protocol for consistent task resumption (RooCodeInc#10192)

Co-authored-by: Roo Code <[email protected]>

* feat(telemetry): add PostHog exception tracking for consecutive mistake errors (RooCodeInc#10193)

* Release v3.36.13 (RooCodeInc#10194)

* Changeset version bump (RooCodeInc#10195)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat: improve 'no tools used' error handling with grace retry (RooCodeInc#10196)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* feat(vertex): add native tool calling for Claude models on Vertex AI (RooCodeInc#10197)

Co-authored-by: daniel-lxs <[email protected]>

* fix: strip unsupported JSON Schema format values for OpenAI compatibility (RooCodeInc#10198)

* Release v3.36.14 (RooCodeInc#10200)

* Changeset version bump (RooCodeInc#10201)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): add telemetry event handling through webview messages

* fix: refresh models button not flushing cache properly (RooCodeInc#9870)

* feat(vertex): add 1M context window beta support for Claude Sonnet 4 (RooCodeInc#10209)

* feat(providers): add native tool calling support to LM Studio and Qwen-Code (RooCodeInc#10208)

* ux: improve API error handling and visibility (RooCodeInc#10204)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>

* ux: add downloadable error diagnostics from chat errors (RooCodeInc#10188)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>

* feat: merge native tool defaults for openai-compatible provider (RooCodeInc#10213)

* fix: force additionalProperties false for strict mode compatibility (RooCodeInc#10210)

* fix: enable native tool calls for Requesty provider (ROO-235) (RooCodeInc#10211)

* Release v3.36.15 (RooCodeInc#10218)

* Changeset version bump (RooCodeInc#10219)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: normalize tool schemas for VS Code LM API to fix error 400 (RooCodeInc#10221)

* Release v3.36.16 (RooCodeInc#10224)

* Changeset version bump (RooCodeInc#10225)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Custom tool calling (RooCodeInc#10083)

* Remove the "test" custom tools (RooCodeInc#10255)

Co-authored-by: Roo Code <[email protected]>

* Add custom tool definitions to @roo-code/types (RooCodeInc#10233)

Co-authored-by: Roo Code <[email protected]>

* fix(evals): add missing packages/core to Dockerfile.runner (RooCodeInc#10272)

* feat: add Cloud Team page with comprehensive team features (RooCodeInc#10267)

* feat: add Cloud Team page with features and pricing integration

* Copy tweaks

* Visual tweaks

* Content adjustments

* Update apps/web-roo-code/src/app/cloud/team/page.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* feat: remove parallel_tool_calls parameter from litellm provider (RooCodeInc#10274)

Co-authored-by: Roo Code <[email protected]>

* feat(build): add types package bundling and alias support

* update(settings): change default tool protocol to XML

* fix: enable Requesty refresh models with credentials (RooCodeInc#10273)

* fix: disable strict mode for MCP tools to preserve optional parameters (RooCodeInc#10220)

Co-authored-by: Roo Code <[email protected]>

* fix: move array-specific properties into anyOf variant in normalizeToolSchema (RooCodeInc#10276)

* fix: move array-specific properties into anyOf variant in normalizeToolSchema

Fixes read_file tool schema rejection with GPT-5-mini which requires
items property to be inside the { type: 'array' } variant when using
anyOf for nullable arrays.

Resolves ROO-262

* refactor: extract array-specific properties constant and helper function

* refactor(custom-tools): improve tool loading and instance consistency

* fix(chutes): add graceful fallback for model parsing (RooCodeInc#10279)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: emit tool_call_end events in OpenAI handler when streaming ends (RooCodeInc#10280)

* feat(core): add support for custom tool parsing in AssistantMessageParser

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* feat: deprecate XML tool protocol selection, force native for new tasks (RooCodeInc#10281)

- Disable tool protocol selector UI in ApiOptions.tsx
- Force native protocol for all new tasks in resolveToolProtocol()
- Keep locked protocol support for resumed tasks that used XML
- Remove models without supportsNativeTools: true from providers:
  - baseten.ts: removed 6 models
  - bedrock.ts: removed 2 embedding models
  - featherless.ts: removed 3 models, updated default
  - groq.ts: removed 5 models
  - sambanova.ts: removed 2 models
  - vertex.ts: removed 7 models
  - vercel-ai-gateway.ts: added supportsNativeTools: true
- Update tests to expect native format output

* feat(zai): add GLM-4.7 model with thinking mode support (RooCodeInc#10282)

Co-authored-by: Roo Code <[email protected]>

* fix: improve reasoning_details accumulation and serialization (RooCodeInc#10285)

* feat(evals): add message log deduper utility (RooCodeInc#10286)

* feat(minimax): move environment_details to system message for thinking models (RooCodeInc#10284)

* fix: add CRLF line ending normalization to search_replace and search_and_replace tools (RooCodeInc#10288)

- Normalize file content to LF after reading to ensure consistent matching
- Normalize search/replace strings to handle CRLF from model output
- Add comprehensive CRLF normalization tests for both tools
- Consistent with existing edit_file tool behavior

* refactor(zai): merge environment_details into tool result instead of system message (RooCodeInc#10289)

* fix: emit tool_call_end events in BaseOpenAiCompatibleProvider (RooCodeInc#10293)

* fix: preserve reasoning_content in condense summary for DeepSeek-reasoner (RooCodeInc#10292)

* Release v3.37.0 (RooCodeInc#10295)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Changeset version bump (RooCodeInc#10296)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: enable mergeToolResultText for Roo Code Cloud provider (RooCodeInc#10301)

* feat: add grace retry for empty assistant messages (RooCodeInc#10297)

Implements grace retry error handling for 'no assistant messages' API
errors, following the same pattern as PR RooCodeInc#10196 for 'no tools used'.

- Add consecutiveNoAssistantMessagesCount counter to Task.ts
- First failure: silent retry (grace retry)
- After 2+ consecutive failures: show MODEL_NO_ASSISTANT_MESSAGES error
- Add UI handling in ChatRow.tsx with ErrorRow component
- Add localized strings to all 18 locale files
- Add comprehensive tests for the grace retry behavior

* Release: v1.95.0 (RooCodeInc#10309)

chore: bump version to v1.95.0

* feat(prompts): strengthen native tool-use guidance (RooCodeInc#10311)

* feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)

* fix: preserve reasoning_details shape to prevent malformed responses (RooCodeInc#10313)

* fix(task): drain queued messages while waiting for ask (RooCodeInc#10315)

* fix(openai): send native tool definitions by default (RooCodeInc#10314)

Co-authored-by: Roo Code <[email protected]>

* ux: Provider-centric signup (RooCodeInc#10306)

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>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.37.1 (RooCodeInc#10316)

* Changeset version bump (RooCodeInc#10317)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* refactor: simplify tool protocol resolution logic

* refactor: optimize stream rendering and file reading limits

* refactor(tools): simplify extractTextFromFile parameters

* feat(chat): add tool protocol display to task header

* fix(test): respect user toolProtocol preference over model capabilities

* update(provider): update zgsm model handling and native tool protocol logic

* feat: remove OpenRouter Transforms feature (RooCodeInc#10341)

- Remove openRouterUseMiddleOutTransform checkbox from settings UI
- Remove openRouterUseMiddleOutTransform from TypeScript types
- Remove transforms parameter logic from OpenRouter handler
- Remove setting from EVALS_SETTINGS
- Remove translation keys from all locale files (18 locales)

Co-authored-by: Roo Code <[email protected]>

* feat: remove simpleReadFileTool completely (RooCodeInc#10254)

- Delete simpleReadFileTool.ts file
- Delete simple-read-file.ts prompt description file
- Delete single-file-read-models.ts types file
- Remove imports and usage from presentAssistantMessage.ts
- Remove imports and usage from prompts/tools/index.ts
- Remove export from packages/types/src/index.ts

This removes all traces of the legacy single-file read tool implementation that was used for specific models. All models now use the standard read_file tool.

Co-authored-by: Roo Code <[email protected]>

* Add support for skills (RooCodeInc#10335)

* Add support for skills

* fix: use type-only import for ClineProvider and relative paths in skills section

---------

Co-authored-by: Roo Code <[email protected]>

* Add support for npm packages and .env files to custom tools (RooCodeInc#10336)

Co-authored-by: Roo Code <[email protected]>

* fix: capture extended thinking signatures for tool use continuations (RooCodeInc#10351)

* feat: add optional mode field to slash command front matter (RooCodeInc#10344)

* feat: add optional mode field to slash command front matter

- Add mode field to Command interface
- Update command parsing to extract mode from frontmatter
- Modify RunSlashCommandTool to automatically switch mode when specified
- Add comprehensive tests for mode field parsing and switching
- Update existing tests to include mode field

* Make it work for manual slash commands too

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Remove the mergeToolResultText in the Roo provider for now (RooCodeInc#10359)

* Revert "fix: capture extended thinking signatures for tool use continuations" (RooCodeInc#10360)

* Release v3.38.0 (RooCodeInc#10361)

* Changeset version bump (RooCodeInc#10362)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: enforce maxConcurrentFileReads limit in read_file tool (RooCodeInc#10363)

Co-authored-by: Roo Code <[email protected]>

* refactor(zgsm): optimize native protocol handling and model ID usage

* docs: clarify path to Security Settings in privacy policy (RooCodeInc#10367)

Co-authored-by: Roo Code <[email protected]>

* Improve error message when read_file is used on directory (RooCodeInc#10371)

Co-authored-by: Roo Code <[email protected]>

* Handle custom tool use similarly to MCP tools for ipc schema purposes (RooCodeInc#10364)

* fix: correct GitHub repository URL in marketing page (RooCodeInc#10377)

Co-authored-by: Roo Code <[email protected]>

* Revert "feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)" (RooCodeInc#10381)

* fix: flush pending tool results before condensing context (RooCodeInc#10379)

* chore: add changeset for v3.38.1 (RooCodeInc#10384)

* Changeset version bump (RooCodeInc#10385)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: update Cerebras maxTokens to 16384 (RooCodeInc#10387)

* docs: Replace Todo Lists video with Context Management video (RooCodeInc#10375)

Co-authored-by: Sannidhya <[email protected]>

* Release: v1.96.0 (RooCodeInc#10395)

chore: bump version to v1.96.0

* fix(utils): add optional chaining for provider settings

* feat(skills): align with Agent Skills spec (RooCodeInc#10409)

* chore: remove human-relay provider (RooCodeInc#10388)

Co-authored-by: Roo Code <[email protected]>

* Fix rate limit wait display (RooCodeInc#10389)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent write_to_file from creating files at truncated paths (RooCodeInc#10415)

Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Roo Code <[email protected]>

* Release v3.38.2 (RooCodeInc#10416)

* Changeset version bump (RooCodeInc#10417)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(claude-code): stop frequent sign-ins by hardening OAuth refresh (RooCodeInc#10410)

* fix(claude-code): prevent sign-outs on oauth refresh

* test(claude-code): restore fetch after mocking

* refactor(claude-code): replace while(true) with bounded for loop for clarity

---------

Co-authored-by: Roo Code <[email protected]>

* fix: add type check for lastMessage.text in TTS useEffect (RooCodeInc#10431)

fix: add type check for lastMessage.text before calling startsWith

Fixes RooCodeInc#10430

The TTS useEffect was calling .startsWith() on lastMessage.text after only
checking if it was truthy. If text was a non-string truthy value (array,
object, or number), this would crash with "Q.text.startsWith is not a function".

Changed the truthy check to an explicit type check: typeof lastMessage.text === "string"

Co-authored-by: Roo Code <[email protected]>

* feat(chat): add collapsible markdown blocks and improve protocol error handling

* refactor(task): restructure conversation history handling

* feat: recursively load .roo/rules and AGENTS.md from subdirectories (RooCodeInc#10446)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.99.0 (RooCodeInc#10447)

* fix: add maxConcurrentFileReads limit to native read_file tool schema (RooCodeInc#10449)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.38.3 (RooCodeInc#10450)

* Changeset version bump (RooCodeInc#10451)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add image support documentation to read_file native tool description (RooCodeInc#10442)

Co-authored-by: Roo Code <[email protected]>

* fix: add explicit deduplication for duplicate tool_result blocks (RooCodeInc#10466)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* VSCode shim + basic cli (RooCodeInc#10452)

Co-authored-by: Roo Code <[email protected]>

* Add an option to use our cli for evals (RooCodeInc#10456)

Co-authored-by: Roo Code <[email protected]>

* fix: preserve tool_use blocks for all tool_results in kept messages during condensation (RooCodeInc#10471)

* fix: add additionalProperties: false to MCP tool schemas for OpenAI Responses API (RooCodeInc#10472)

* feat(cli): add zgsm provider support

* Add a cli installer (RooCodeInc#10474)

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>

* feat(zgsm): add debug mode and fix tool name handling

* feat(i18n): add debug status to custom config label

* refactor: improve terminal encoding handling and UI styling

* feat(ui): add automatically focus option for chat input

* feat(proxy): add debug-mode proxy routing (RooCodeInc#10467)

* feat(terminal): enhance compilation markers and output handling

* fix: prevent duplicate tool_result blocks causing API errors (RooCodeInc#10497)

* feat: add Kimi K2 thinking model to Fireworks AI provider (RooCodeInc#9202)

Co-authored-by: Roo Code <[email protected]>

* fix: add missing description fields for debugProxy configuration (RooCodeInc#10505)

Co-authored-by: Roo Code <[email protected]>

* Tweak the style of the follow up suggestion modes (RooCodeInc#9260)

* feat(web-evals): remember last Roo model selection + add evals skill (RooCodeInc#10470)

* feat(web-evals): remember last Roo model selection

* fix(web-evals): reset model selections on provider switch and fix lint warning

- Add useEffect to reset model selections when switching between providers
  This prevents OpenRouter model IDs from persisting when switching to Roo,
  which was causing Roo's stored selection to be overwritten with wrong IDs

- Remove unused 'executionMethod' from onSubmit dependency array to fix
  react-hooks/exhaustive-deps warning

* fix(web-evals): add missing executionMethod to test cases

* fix(web-evals): harden localStorage + keep provider selections

* feat: rename YOLO to BRRR (RooCodeInc#10507)

Co-authored-by: Roo Code <[email protected]>

---------

Co-authored-by: Chris Estreich <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: John Richmond <[email protected]>
Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Patrick Decat <[email protected]>
Co-authored-by: Seb Duerr <[email protected]>
Co-authored-by: SannidhyaSah <[email protected]>
Co-authored-by: Sannidhya <[email protected]>
mini2s added a commit to zgsm-ai/costrict that referenced this pull request Jan 8, 2026
* feat(anthropic): enable native tools by default and add telemetry tracking (RooCodeInc#10021)

* feat: enable native tools by default for multiple providers (RooCodeInc#10059)

* Release v3.36.8 (RooCodeInc#10119)

* fix: add additionalProperties: false to nested MCP tool schemas (RooCodeInc#10109)

* fix: normalize tool call IDs for cross-provider compatibility via OpenRouter (RooCodeInc#10102)

* feat: add full error details to streaming failure dialog (RooCodeInc#10131)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: cte <[email protected]>

* fix: validate tool_result IDs in delegation resume flow (RooCodeInc#10135)

* feat(evals): improve evals UI with tool groups and duration fix (RooCodeInc#10133)

Co-authored-by: Roo Code <[email protected]>

* Changeset version bump (RooCodeInc#10120)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release v3.36.9 (RooCodeInc#10138)

* Changeset version bump (RooCodeInc#10137)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: correct token counting for context truncation display (RooCodeInc#9961)

* feat(deepseek): implement interleaved thinking mode for deepseek-reasoner (RooCodeInc#9969)

* Update next.js to ~15.2.8 (RooCodeInc#10140)

* fix(deepseek): preserve reasoning_content during tool call sequences (RooCodeInc#10141)

Co-authored-by: Roo Code <[email protected]>

* feat: add gemini-3-flash-preview model (RooCodeInc#10151)

* Release v3.36.10 (RooCodeInc#10153)

* Changeset version bump (RooCodeInc#10154)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(bedrock): convert tool_result to XML text when native tools disabled (RooCodeInc#10155)

* fix: remove dots and colons from MCP tool names for Bedrock compatibility (RooCodeInc#10152)

* fix: improve terminal process error handling and abort operation

* fix(ROO-202): refresh Roo models cache with session token on auth state change (RooCodeInc#10156)

* fix: support AWS GovCloud and China region ARNs in Bedrock provider (RooCodeInc#10157)

Co-authored-by: Roo Code <[email protected]>

* feat: enable native tool calling by default for Z.ai models (RooCodeInc#10158)

Co-authored-by: Roo Code <[email protected]>

* [feat] Claude Code Provider Native Tool Calling (RooCodeInc#10077)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: normalize MCP tool schemas for Bedrock and OpenAI strict mode (RooCodeInc#10148)

* fix: enable native tools by default for OpenAI compatible provider (RooCodeInc#10159)

* Release v3.36.11 (RooCodeInc#10161)

* Changeset version bump (RooCodeInc#10162)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): extract error messages from JSON payloads for better PostHog grouping (RooCodeInc#10163)

* fix: add userAgentAppId to Bedrock embedder for code indexing (RooCodeInc#10166)

Adds userAgentAppId configuration to the BedrockRuntimeClient in the
code indexing embedder, matching the implementation pattern already
used in the main Bedrock API provider.

This enables proper user agent identification in CloudTrail AWS requests
when using Bedrock for code indexing embeddings.

Fixes RooCodeInc#10165

Co-authored-by: Roo Code <[email protected]>

* feat: update OpenAI and Gemini tool preferences (RooCodeInc#10170)

* Release v3.36.12 (RooCodeInc#10181)

* Changeset version bump (RooCodeInc#10182)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* Revert "Revert "feat: change defaultToolProtocol default from xml to native"" (RooCodeInc#10186)

Co-authored-by: Roo Code <[email protected]>

* fix(litellm): merge default model info with router models for NTC support (RooCodeInc#10187)

* feat(types): add defaultToolProtocol: native to providers

- Added supportsNativeTools: true and defaultToolProtocol: native to all chutes models
- Added defaultToolProtocol: native to moonshot models (already had supportsNativeTools)
- Added defaultToolProtocol: native to litellm default model (already had supportsNativeTools)
- Added defaultToolProtocol: native to minimax models (already had supportsNativeTools)

This enables native tool calling by default for these providers, reducing
the number of users falling back to XML tool protocol unnecessarily.

* fix(litellm): merge only native tool defaults with router models

Only merges supportsNativeTools and defaultToolProtocol from litellmDefaultModelInfo,
not prices or other model-specific info that could be incorrect for different models.

* Release: v1.93.0 (RooCodeInc#10190)

* feat(vscode-lm): add native tool support (RooCodeInc#10191)

* feat: Replace edit_file tool alias with edit_file tool (RooCodeInc#9983)

* feat: lock task tool protocol for consistent task resumption (RooCodeInc#10192)

Co-authored-by: Roo Code <[email protected]>

* feat(telemetry): add PostHog exception tracking for consecutive mistake errors (RooCodeInc#10193)

* Release v3.36.13 (RooCodeInc#10194)

* Changeset version bump (RooCodeInc#10195)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat: improve 'no tools used' error handling with grace retry (RooCodeInc#10196)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* feat(vertex): add native tool calling for Claude models on Vertex AI (RooCodeInc#10197)

Co-authored-by: daniel-lxs <[email protected]>

* fix: strip unsupported JSON Schema format values for OpenAI compatibility (RooCodeInc#10198)

* Release v3.36.14 (RooCodeInc#10200)

* Changeset version bump (RooCodeInc#10201)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): add telemetry event handling through webview messages

* fix: refresh models button not flushing cache properly (RooCodeInc#9870)

* feat(vertex): add 1M context window beta support for Claude Sonnet 4 (RooCodeInc#10209)

* feat(providers): add native tool calling support to LM Studio and Qwen-Code (RooCodeInc#10208)

* ux: improve API error handling and visibility (RooCodeInc#10204)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>

* ux: add downloadable error diagnostics from chat errors (RooCodeInc#10188)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>

* feat: merge native tool defaults for openai-compatible provider (RooCodeInc#10213)

* fix: force additionalProperties false for strict mode compatibility (RooCodeInc#10210)

* fix: enable native tool calls for Requesty provider (ROO-235) (RooCodeInc#10211)

* Release v3.36.15 (RooCodeInc#10218)

* Changeset version bump (RooCodeInc#10219)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: normalize tool schemas for VS Code LM API to fix error 400 (RooCodeInc#10221)

* Release v3.36.16 (RooCodeInc#10224)

* Changeset version bump (RooCodeInc#10225)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Custom tool calling (RooCodeInc#10083)

* Remove the "test" custom tools (RooCodeInc#10255)

Co-authored-by: Roo Code <[email protected]>

* Add custom tool definitions to @roo-code/types (RooCodeInc#10233)

Co-authored-by: Roo Code <[email protected]>

* fix(evals): add missing packages/core to Dockerfile.runner (RooCodeInc#10272)

* feat: add Cloud Team page with comprehensive team features (RooCodeInc#10267)

* feat: add Cloud Team page with features and pricing integration

* Copy tweaks

* Visual tweaks

* Content adjustments

* Update apps/web-roo-code/src/app/cloud/team/page.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* feat: remove parallel_tool_calls parameter from litellm provider (RooCodeInc#10274)

Co-authored-by: Roo Code <[email protected]>

* feat(build): add types package bundling and alias support

* update(settings): change default tool protocol to XML

* fix: enable Requesty refresh models with credentials (RooCodeInc#10273)

* fix: disable strict mode for MCP tools to preserve optional parameters (RooCodeInc#10220)

Co-authored-by: Roo Code <[email protected]>

* fix: move array-specific properties into anyOf variant in normalizeToolSchema (RooCodeInc#10276)

* fix: move array-specific properties into anyOf variant in normalizeToolSchema

Fixes read_file tool schema rejection with GPT-5-mini which requires
items property to be inside the { type: 'array' } variant when using
anyOf for nullable arrays.

Resolves ROO-262

* refactor: extract array-specific properties constant and helper function

* refactor(custom-tools): improve tool loading and instance consistency

* fix(chutes): add graceful fallback for model parsing (RooCodeInc#10279)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: emit tool_call_end events in OpenAI handler when streaming ends (RooCodeInc#10280)

* feat(core): add support for custom tool parsing in AssistantMessageParser

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* feat: deprecate XML tool protocol selection, force native for new tasks (RooCodeInc#10281)

- Disable tool protocol selector UI in ApiOptions.tsx
- Force native protocol for all new tasks in resolveToolProtocol()
- Keep locked protocol support for resumed tasks that used XML
- Remove models without supportsNativeTools: true from providers:
  - baseten.ts: removed 6 models
  - bedrock.ts: removed 2 embedding models
  - featherless.ts: removed 3 models, updated default
  - groq.ts: removed 5 models
  - sambanova.ts: removed 2 models
  - vertex.ts: removed 7 models
  - vercel-ai-gateway.ts: added supportsNativeTools: true
- Update tests to expect native format output

* feat(zai): add GLM-4.7 model with thinking mode support (RooCodeInc#10282)

Co-authored-by: Roo Code <[email protected]>

* fix: improve reasoning_details accumulation and serialization (RooCodeInc#10285)

* feat(evals): add message log deduper utility (RooCodeInc#10286)

* feat(minimax): move environment_details to system message for thinking models (RooCodeInc#10284)

* fix: add CRLF line ending normalization to search_replace and search_and_replace tools (RooCodeInc#10288)

- Normalize file content to LF after reading to ensure consistent matching
- Normalize search/replace strings to handle CRLF from model output
- Add comprehensive CRLF normalization tests for both tools
- Consistent with existing edit_file tool behavior

* refactor(zai): merge environment_details into tool result instead of system message (RooCodeInc#10289)

* fix: emit tool_call_end events in BaseOpenAiCompatibleProvider (RooCodeInc#10293)

* fix: preserve reasoning_content in condense summary for DeepSeek-reasoner (RooCodeInc#10292)

* Release v3.37.0 (RooCodeInc#10295)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Changeset version bump (RooCodeInc#10296)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: enable mergeToolResultText for Roo Code Cloud provider (RooCodeInc#10301)

* feat: add grace retry for empty assistant messages (RooCodeInc#10297)

Implements grace retry error handling for 'no assistant messages' API
errors, following the same pattern as PR RooCodeInc#10196 for 'no tools used'.

- Add consecutiveNoAssistantMessagesCount counter to Task.ts
- First failure: silent retry (grace retry)
- After 2+ consecutive failures: show MODEL_NO_ASSISTANT_MESSAGES error
- Add UI handling in ChatRow.tsx with ErrorRow component
- Add localized strings to all 18 locale files
- Add comprehensive tests for the grace retry behavior

* Release: v1.95.0 (RooCodeInc#10309)

chore: bump version to v1.95.0

* feat(prompts): strengthen native tool-use guidance (RooCodeInc#10311)

* feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)

* fix: preserve reasoning_details shape to prevent malformed responses (RooCodeInc#10313)

* fix(task): drain queued messages while waiting for ask (RooCodeInc#10315)

* fix(openai): send native tool definitions by default (RooCodeInc#10314)

Co-authored-by: Roo Code <[email protected]>

* ux: Provider-centric signup (RooCodeInc#10306)

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>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.37.1 (RooCodeInc#10316)

* Changeset version bump (RooCodeInc#10317)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* refactor: simplify tool protocol resolution logic

* refactor: optimize stream rendering and file reading limits

* refactor(tools): simplify extractTextFromFile parameters

* feat(chat): add tool protocol display to task header

* fix(test): respect user toolProtocol preference over model capabilities

* update(provider): update zgsm model handling and native tool protocol logic

* feat: remove OpenRouter Transforms feature (RooCodeInc#10341)

- Remove openRouterUseMiddleOutTransform checkbox from settings UI
- Remove openRouterUseMiddleOutTransform from TypeScript types
- Remove transforms parameter logic from OpenRouter handler
- Remove setting from EVALS_SETTINGS
- Remove translation keys from all locale files (18 locales)

Co-authored-by: Roo Code <[email protected]>

* feat: remove simpleReadFileTool completely (RooCodeInc#10254)

- Delete simpleReadFileTool.ts file
- Delete simple-read-file.ts prompt description file
- Delete single-file-read-models.ts types file
- Remove imports and usage from presentAssistantMessage.ts
- Remove imports and usage from prompts/tools/index.ts
- Remove export from packages/types/src/index.ts

This removes all traces of the legacy single-file read tool implementation that was used for specific models. All models now use the standard read_file tool.

Co-authored-by: Roo Code <[email protected]>

* Add support for skills (RooCodeInc#10335)

* Add support for skills

* fix: use type-only import for ClineProvider and relative paths in skills section

---------

Co-authored-by: Roo Code <[email protected]>

* Add support for npm packages and .env files to custom tools (RooCodeInc#10336)

Co-authored-by: Roo Code <[email protected]>

* fix: capture extended thinking signatures for tool use continuations (RooCodeInc#10351)

* feat: add optional mode field to slash command front matter (RooCodeInc#10344)

* feat: add optional mode field to slash command front matter

- Add mode field to Command interface
- Update command parsing to extract mode from frontmatter
- Modify RunSlashCommandTool to automatically switch mode when specified
- Add comprehensive tests for mode field parsing and switching
- Update existing tests to include mode field

* Make it work for manual slash commands too

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Remove the mergeToolResultText in the Roo provider for now (RooCodeInc#10359)

* Revert "fix: capture extended thinking signatures for tool use continuations" (RooCodeInc#10360)

* Release v3.38.0 (RooCodeInc#10361)

* Changeset version bump (RooCodeInc#10362)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: enforce maxConcurrentFileReads limit in read_file tool (RooCodeInc#10363)

Co-authored-by: Roo Code <[email protected]>

* refactor(zgsm): optimize native protocol handling and model ID usage

* docs: clarify path to Security Settings in privacy policy (RooCodeInc#10367)

Co-authored-by: Roo Code <[email protected]>

* Improve error message when read_file is used on directory (RooCodeInc#10371)

Co-authored-by: Roo Code <[email protected]>

* Handle custom tool use similarly to MCP tools for ipc schema purposes (RooCodeInc#10364)

* fix: correct GitHub repository URL in marketing page (RooCodeInc#10377)

Co-authored-by: Roo Code <[email protected]>

* Revert "feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)" (RooCodeInc#10381)

* fix: flush pending tool results before condensing context (RooCodeInc#10379)

* chore: add changeset for v3.38.1 (RooCodeInc#10384)

* Changeset version bump (RooCodeInc#10385)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: update Cerebras maxTokens to 16384 (RooCodeInc#10387)

* docs: Replace Todo Lists video with Context Management video (RooCodeInc#10375)

Co-authored-by: Sannidhya <[email protected]>

* Release: v1.96.0 (RooCodeInc#10395)

chore: bump version to v1.96.0

* fix(utils): add optional chaining for provider settings

* feat(skills): align with Agent Skills spec (RooCodeInc#10409)

* chore: remove human-relay provider (RooCodeInc#10388)

Co-authored-by: Roo Code <[email protected]>

* Fix rate limit wait display (RooCodeInc#10389)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent write_to_file from creating files at truncated paths (RooCodeInc#10415)

Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Roo Code <[email protected]>

* Release v3.38.2 (RooCodeInc#10416)

* Changeset version bump (RooCodeInc#10417)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(claude-code): stop frequent sign-ins by hardening OAuth refresh (RooCodeInc#10410)

* fix(claude-code): prevent sign-outs on oauth refresh

* test(claude-code): restore fetch after mocking

* refactor(claude-code): replace while(true) with bounded for loop for clarity

---------

Co-authored-by: Roo Code <[email protected]>

* fix: add type check for lastMessage.text in TTS useEffect (RooCodeInc#10431)

fix: add type check for lastMessage.text before calling startsWith

Fixes RooCodeInc#10430

The TTS useEffect was calling .startsWith() on lastMessage.text after only
checking if it was truthy. If text was a non-string truthy value (array,
object, or number), this would crash with "Q.text.startsWith is not a function".

Changed the truthy check to an explicit type check: typeof lastMessage.text === "string"

Co-authored-by: Roo Code <[email protected]>

* feat(chat): add collapsible markdown blocks and improve protocol error handling

* refactor(task): restructure conversation history handling

* feat: recursively load .roo/rules and AGENTS.md from subdirectories (RooCodeInc#10446)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.99.0 (RooCodeInc#10447)

* fix: add maxConcurrentFileReads limit to native read_file tool schema (RooCodeInc#10449)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.38.3 (RooCodeInc#10450)

* Changeset version bump (RooCodeInc#10451)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add image support documentation to read_file native tool description (RooCodeInc#10442)

Co-authored-by: Roo Code <[email protected]>

* fix: add explicit deduplication for duplicate tool_result blocks (RooCodeInc#10466)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* VSCode shim + basic cli (RooCodeInc#10452)

Co-authored-by: Roo Code <[email protected]>

* Add an option to use our cli for evals (RooCodeInc#10456)

Co-authored-by: Roo Code <[email protected]>

* fix: preserve tool_use blocks for all tool_results in kept messages during condensation (RooCodeInc#10471)

* fix: add additionalProperties: false to MCP tool schemas for OpenAI Responses API (RooCodeInc#10472)

* feat(cli): add zgsm provider support

* Add a cli installer (RooCodeInc#10474)

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>

* feat(zgsm): add debug mode and fix tool name handling

* feat(i18n): add debug status to custom config label

* refactor: improve terminal encoding handling and UI styling

* feat(ui): add automatically focus option for chat input

* feat(proxy): add debug-mode proxy routing (RooCodeInc#10467)

* feat(terminal): enhance compilation markers and output handling

* fix: prevent duplicate tool_result blocks causing API errors (RooCodeInc#10497)

* feat: add Kimi K2 thinking model to Fireworks AI provider (RooCodeInc#9202)

Co-authored-by: Roo Code <[email protected]>

* fix: add missing description fields for debugProxy configuration (RooCodeInc#10505)

Co-authored-by: Roo Code <[email protected]>

* Tweak the style of the follow up suggestion modes (RooCodeInc#9260)

* feat(web-evals): remember last Roo model selection + add evals skill (RooCodeInc#10470)

* feat(web-evals): remember last Roo model selection

* fix(web-evals): reset model selections on provider switch and fix lint warning

- Add useEffect to reset model selections when switching between providers
  This prevents OpenRouter model IDs from persisting when switching to Roo,
  which was causing Roo's stored selection to be overwritten with wrong IDs

- Remove unused 'executionMethod' from onSubmit dependency array to fix
  react-hooks/exhaustive-deps warning

* fix(web-evals): add missing executionMethod to test cases

* fix(web-evals): harden localStorage + keep provider selections

* feat: rename YOLO to BRRR (RooCodeInc#10507)

Co-authored-by: Roo Code <[email protected]>

* feat: implement sticky provider profile for task-level API config persistence (RooCodeInc#10018)

* feat(settings): move CHAT_SEARCH from experimental to UI settings

* fix: remove legacy Claude 2 series models from Bedrock provider (RooCodeInc#10501)

Co-authored-by: Roo Code <[email protected]>

* feat: add support for image file @mentions (RooCodeInc#10189)

Co-authored-by: Roo Code <[email protected]>

* fix: handle PowerShell ENOENT error in os-name on Windows (RooCodeInc#9897)

Co-authored-by: Roo Code <[email protected]>

* feat: add xhigh reasoning effort to OpenAI compatible endpoints (RooCodeInc#10061)

Co-authored-by: Roo Code <[email protected]>

* feat: filter @ mention file search results using .rooignore (RooCodeInc#10174)

* feat: filter @ mention file search results using .rooignore

- Modify searchFiles case in webviewMessageHandler.ts to filter results using RooIgnoreController
- Use existing RooIgnoreController from current task if available, otherwise create a temporary one
- Respect showRooIgnoredFiles setting to allow users to toggle this behavior
- Add comprehensive test coverage for the new filtering behavior

Fixes RooCodeInc#10169

* fix: dispose temporary RooIgnoreController to prevent resource leak

Addresses Rooviewer feedback: the temporary RooIgnoreController created
when no task exists was never disposed, causing file watchers to accumulate.

Changes:
- Track temporary controller separately with tempController variable
- Wrap filtering logic in try/finally block
- Call dispose() in finally block to ensure cleanup
- Add test cases to verify dispose is called for temp controllers
- Verify task's controller is NOT disposed (only temp ones)

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Hannes Rudolph <[email protected]>

* fix: use task stored API config as fallback for rate limit (RooCodeInc#10266)

Co-authored-by: Roo Code <[email protected]>

* fix: make command chaining examples shell-aware for Windows compatibility (RooCodeInc#10434)

* fix: make command chaining examples shell-aware for Windows compatibility

Addresses Issue RooCodeInc#10352 where Roo Code generates Unix-style command
chaining (&&) even on Windows systems using PowerShell or cmd.exe.

Changes:
- Add getCommandChainOperator() to detect the user shell and return
  the appropriate command chaining syntax:
  - Unix shells (bash, zsh, etc.): &&
  - PowerShell: ;
  - cmd.exe: &
- Update getRulesSection() to use shell-specific chaining in examples
- Add informative note for non-Unix shells about different syntaxes
- Add comprehensive tests for shell detection and command chaining

* feat: add Unix utility guidance for Windows shells

Addresses feedback from issue RooCodeInc#10352 about sed and other Unix-specific
utilities being suggested on Windows. The system prompt now includes
guidance for PowerShell and cmd.exe users to use native alternatives:

PowerShell:
- Select-String instead of grep
- Get-Content instead of cat
- Remove-Item instead of rm
- Copy-Item instead of cp
- Move-Item instead of mv
- -replace operator or [regex] instead of sed

cmd.exe:
- type instead of cat
- del instead of rm
- copy instead of cp
- move instead of mv
- find/findstr instead of grep

* Apply suggestion from @roomote[bot]

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: use && for cmd.exe to preserve conditional execution semantics

- Update getCommandChainOperator() to return && for cmd.exe (already done)
- Update getCommandChainNote() to document && instead of & for cmd.exe
- Update JSDoc to reflect cmd.exe uses && for conditional execution
- Update tests to expect && for cmd.exe

cmd.exe supports && for conditional execution (run next command only if
previous succeeds), which provides the same semantics as Unix shells.

* fix: update PowerShell note to use && for cmd.exe reference

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* feat(types): add zai-glm-4.7 to Cerebras models (RooCodeInc#10500)

Co-authored-by: Matt Rubens <[email protected]>

* 🐛 Fix glitchy kangaroo bounce animation on welcome screen (RooCodeInc#10035)

The kangaroo logo on the welcome screen had a visual glitch where it would instantly jump to the top position when hovering, instead of smoothly starting the bounce from its resting position.

Changes:
- Added custom smooth-bounce keyframe animation in index.css that explicitly starts from translateY(0)
- Updated RooHero component to use hover state tracking with the new animation
- Removed Tailwind's animate-bounce class which was causing the glitch

The animation now smoothly bounces from the resting position without any jarring visual jumps.

---------

Co-authored-by: Daniel <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: John Richmond <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Patrick Decat <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: Seb Duerr <[email protected]>
Co-authored-by: SannidhyaSah <[email protected]>
Co-authored-by: Sannidhya <[email protected]>
Co-authored-by: Danny Ricciotti <[email protected]>
mini2s added a commit to zgsm-ai/costrict that referenced this pull request Jan 8, 2026
* Release v3.36.8 (RooCodeInc#10119)

* fix: add additionalProperties: false to nested MCP tool schemas (RooCodeInc#10109)

* fix: normalize tool call IDs for cross-provider compatibility via OpenRouter (RooCodeInc#10102)

* feat: add full error details to streaming failure dialog (RooCodeInc#10131)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: cte <[email protected]>

* fix: validate tool_result IDs in delegation resume flow (RooCodeInc#10135)

* feat(evals): improve evals UI with tool groups and duration fix (RooCodeInc#10133)

Co-authored-by: Roo Code <[email protected]>

* Changeset version bump (RooCodeInc#10120)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Release v3.36.9 (RooCodeInc#10138)

* Changeset version bump (RooCodeInc#10137)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: correct token counting for context truncation display (RooCodeInc#9961)

* feat(deepseek): implement interleaved thinking mode for deepseek-reasoner (RooCodeInc#9969)

* Update next.js to ~15.2.8 (RooCodeInc#10140)

* fix(deepseek): preserve reasoning_content during tool call sequences (RooCodeInc#10141)

Co-authored-by: Roo Code <[email protected]>

* feat: add gemini-3-flash-preview model (RooCodeInc#10151)

* Release v3.36.10 (RooCodeInc#10153)

* Changeset version bump (RooCodeInc#10154)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(bedrock): convert tool_result to XML text when native tools disabled (RooCodeInc#10155)

* fix: remove dots and colons from MCP tool names for Bedrock compatibility (RooCodeInc#10152)

* fix: improve terminal process error handling and abort operation

* fix(ROO-202): refresh Roo models cache with session token on auth state change (RooCodeInc#10156)

* fix: support AWS GovCloud and China region ARNs in Bedrock provider (RooCodeInc#10157)

Co-authored-by: Roo Code <[email protected]>

* feat: enable native tool calling by default for Z.ai models (RooCodeInc#10158)

Co-authored-by: Roo Code <[email protected]>

* [feat] Claude Code Provider Native Tool Calling (RooCodeInc#10077)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: normalize MCP tool schemas for Bedrock and OpenAI strict mode (RooCodeInc#10148)

* fix: enable native tools by default for OpenAI compatible provider (RooCodeInc#10159)

* Release v3.36.11 (RooCodeInc#10161)

* Changeset version bump (RooCodeInc#10162)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): extract error messages from JSON payloads for better PostHog grouping (RooCodeInc#10163)

* fix: add userAgentAppId to Bedrock embedder for code indexing (RooCodeInc#10166)

Adds userAgentAppId configuration to the BedrockRuntimeClient in the
code indexing embedder, matching the implementation pattern already
used in the main Bedrock API provider.

This enables proper user agent identification in CloudTrail AWS requests
when using Bedrock for code indexing embeddings.

Fixes RooCodeInc#10165

Co-authored-by: Roo Code <[email protected]>

* feat: update OpenAI and Gemini tool preferences (RooCodeInc#10170)

* Release v3.36.12 (RooCodeInc#10181)

* Changeset version bump (RooCodeInc#10182)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* Revert "Revert "feat: change defaultToolProtocol default from xml to native"" (RooCodeInc#10186)

Co-authored-by: Roo Code <[email protected]>

* fix(litellm): merge default model info with router models for NTC support (RooCodeInc#10187)

* feat(types): add defaultToolProtocol: native to providers

- Added supportsNativeTools: true and defaultToolProtocol: native to all chutes models
- Added defaultToolProtocol: native to moonshot models (already had supportsNativeTools)
- Added defaultToolProtocol: native to litellm default model (already had supportsNativeTools)
- Added defaultToolProtocol: native to minimax models (already had supportsNativeTools)

This enables native tool calling by default for these providers, reducing
the number of users falling back to XML tool protocol unnecessarily.

* fix(litellm): merge only native tool defaults with router models

Only merges supportsNativeTools and defaultToolProtocol from litellmDefaultModelInfo,
not prices or other model-specific info that could be incorrect for different models.

* Release: v1.93.0 (RooCodeInc#10190)

* feat(vscode-lm): add native tool support (RooCodeInc#10191)

* feat: Replace edit_file tool alias with edit_file tool (RooCodeInc#9983)

* feat: lock task tool protocol for consistent task resumption (RooCodeInc#10192)

Co-authored-by: Roo Code <[email protected]>

* feat(telemetry): add PostHog exception tracking for consecutive mistake errors (RooCodeInc#10193)

* Release v3.36.13 (RooCodeInc#10194)

* Changeset version bump (RooCodeInc#10195)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat: improve 'no tools used' error handling with grace retry (RooCodeInc#10196)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* feat(vertex): add native tool calling for Claude models on Vertex AI (RooCodeInc#10197)

Co-authored-by: daniel-lxs <[email protected]>

* fix: strip unsupported JSON Schema format values for OpenAI compatibility (RooCodeInc#10198)

* Release v3.36.14 (RooCodeInc#10200)

* Changeset version bump (RooCodeInc#10201)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* feat(telemetry): add telemetry event handling through webview messages

* fix: refresh models button not flushing cache properly (RooCodeInc#9870)

* feat(vertex): add 1M context window beta support for Claude Sonnet 4 (RooCodeInc#10209)

* feat(providers): add native tool calling support to LM Studio and Qwen-Code (RooCodeInc#10208)

* ux: improve API error handling and visibility (RooCodeInc#10204)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Daniel <[email protected]>

* ux: add downloadable error diagnostics from chat errors (RooCodeInc#10188)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Chris Estreich <[email protected]>

* feat: merge native tool defaults for openai-compatible provider (RooCodeInc#10213)

* fix: force additionalProperties false for strict mode compatibility (RooCodeInc#10210)

* fix: enable native tool calls for Requesty provider (ROO-235) (RooCodeInc#10211)

* Release v3.36.15 (RooCodeInc#10218)

* Changeset version bump (RooCodeInc#10219)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <[email protected]>

* fix: normalize tool schemas for VS Code LM API to fix error 400 (RooCodeInc#10221)

* Release v3.36.16 (RooCodeInc#10224)

* Changeset version bump (RooCodeInc#10225)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* Custom tool calling (RooCodeInc#10083)

* Remove the "test" custom tools (RooCodeInc#10255)

Co-authored-by: Roo Code <[email protected]>

* Add custom tool definitions to @roo-code/types (RooCodeInc#10233)

Co-authored-by: Roo Code <[email protected]>

* fix(evals): add missing packages/core to Dockerfile.runner (RooCodeInc#10272)

* feat: add Cloud Team page with comprehensive team features (RooCodeInc#10267)

* feat: add Cloud Team page with features and pricing integration

* Copy tweaks

* Visual tweaks

* Content adjustments

* Update apps/web-roo-code/src/app/cloud/team/page.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* feat: remove parallel_tool_calls parameter from litellm provider (RooCodeInc#10274)

Co-authored-by: Roo Code <[email protected]>

* feat(build): add types package bundling and alias support

* update(settings): change default tool protocol to XML

* fix: enable Requesty refresh models with credentials (RooCodeInc#10273)

* fix: disable strict mode for MCP tools to preserve optional parameters (RooCodeInc#10220)

Co-authored-by: Roo Code <[email protected]>

* fix: move array-specific properties into anyOf variant in normalizeToolSchema (RooCodeInc#10276)

* fix: move array-specific properties into anyOf variant in normalizeToolSchema

Fixes read_file tool schema rejection with GPT-5-mini which requires
items property to be inside the { type: 'array' } variant when using
anyOf for nullable arrays.

Resolves ROO-262

* refactor: extract array-specific properties constant and helper function

* refactor(custom-tools): improve tool loading and instance consistency

* fix(chutes): add graceful fallback for model parsing (RooCodeInc#10279)

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: emit tool_call_end events in OpenAI handler when streaming ends (RooCodeInc#10280)

* feat(core): add support for custom tool parsing in AssistantMessageParser

* Merge remote-tracking branch 'upstream/main' into roo-to-main

* feat: deprecate XML tool protocol selection, force native for new tasks (RooCodeInc#10281)

- Disable tool protocol selector UI in ApiOptions.tsx
- Force native protocol for all new tasks in resolveToolProtocol()
- Keep locked protocol support for resumed tasks that used XML
- Remove models without supportsNativeTools: true from providers:
  - baseten.ts: removed 6 models
  - bedrock.ts: removed 2 embedding models
  - featherless.ts: removed 3 models, updated default
  - groq.ts: removed 5 models
  - sambanova.ts: removed 2 models
  - vertex.ts: removed 7 models
  - vercel-ai-gateway.ts: added supportsNativeTools: true
- Update tests to expect native format output

* feat(zai): add GLM-4.7 model with thinking mode support (RooCodeInc#10282)

Co-authored-by: Roo Code <[email protected]>

* fix: improve reasoning_details accumulation and serialization (RooCodeInc#10285)

* feat(evals): add message log deduper utility (RooCodeInc#10286)

* feat(minimax): move environment_details to system message for thinking models (RooCodeInc#10284)

* fix: add CRLF line ending normalization to search_replace and search_and_replace tools (RooCodeInc#10288)

- Normalize file content to LF after reading to ensure consistent matching
- Normalize search/replace strings to handle CRLF from model output
- Add comprehensive CRLF normalization tests for both tools
- Consistent with existing edit_file tool behavior

* refactor(zai): merge environment_details into tool result instead of system message (RooCodeInc#10289)

* fix: emit tool_call_end events in BaseOpenAiCompatibleProvider (RooCodeInc#10293)

* fix: preserve reasoning_content in condense summary for DeepSeek-reasoner (RooCodeInc#10292)

* Release v3.37.0 (RooCodeInc#10295)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Changeset version bump (RooCodeInc#10296)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: enable mergeToolResultText for Roo Code Cloud provider (RooCodeInc#10301)

* feat: add grace retry for empty assistant messages (RooCodeInc#10297)

Implements grace retry error handling for 'no assistant messages' API
errors, following the same pattern as PR RooCodeInc#10196 for 'no tools used'.

- Add consecutiveNoAssistantMessagesCount counter to Task.ts
- First failure: silent retry (grace retry)
- After 2+ consecutive failures: show MODEL_NO_ASSISTANT_MESSAGES error
- Add UI handling in ChatRow.tsx with ErrorRow component
- Add localized strings to all 18 locale files
- Add comprehensive tests for the grace retry behavior

* Release: v1.95.0 (RooCodeInc#10309)

chore: bump version to v1.95.0

* feat(prompts): strengthen native tool-use guidance (RooCodeInc#10311)

* feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)

* fix: preserve reasoning_details shape to prevent malformed responses (RooCodeInc#10313)

* fix(task): drain queued messages while waiting for ask (RooCodeInc#10315)

* fix(openai): send native tool definitions by default (RooCodeInc#10314)

Co-authored-by: Roo Code <[email protected]>

* ux: Provider-centric signup (RooCodeInc#10306)

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>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.37.1 (RooCodeInc#10316)

* Changeset version bump (RooCodeInc#10317)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* refactor: simplify tool protocol resolution logic

* refactor: optimize stream rendering and file reading limits

* refactor(tools): simplify extractTextFromFile parameters

* feat(chat): add tool protocol display to task header

* fix(test): respect user toolProtocol preference over model capabilities

* update(provider): update zgsm model handling and native tool protocol logic

* feat: remove OpenRouter Transforms feature (RooCodeInc#10341)

- Remove openRouterUseMiddleOutTransform checkbox from settings UI
- Remove openRouterUseMiddleOutTransform from TypeScript types
- Remove transforms parameter logic from OpenRouter handler
- Remove setting from EVALS_SETTINGS
- Remove translation keys from all locale files (18 locales)

Co-authored-by: Roo Code <[email protected]>

* feat: remove simpleReadFileTool completely (RooCodeInc#10254)

- Delete simpleReadFileTool.ts file
- Delete simple-read-file.ts prompt description file
- Delete single-file-read-models.ts types file
- Remove imports and usage from presentAssistantMessage.ts
- Remove imports and usage from prompts/tools/index.ts
- Remove export from packages/types/src/index.ts

This removes all traces of the legacy single-file read tool implementation that was used for specific models. All models now use the standard read_file tool.

Co-authored-by: Roo Code <[email protected]>

* Add support for skills (RooCodeInc#10335)

* Add support for skills

* fix: use type-only import for ClineProvider and relative paths in skills section

---------

Co-authored-by: Roo Code <[email protected]>

* Add support for npm packages and .env files to custom tools (RooCodeInc#10336)

Co-authored-by: Roo Code <[email protected]>

* fix: capture extended thinking signatures for tool use continuations (RooCodeInc#10351)

* feat: add optional mode field to slash command front matter (RooCodeInc#10344)

* feat: add optional mode field to slash command front matter

- Add mode field to Command interface
- Update command parsing to extract mode from frontmatter
- Modify RunSlashCommandTool to automatically switch mode when specified
- Add comprehensive tests for mode field parsing and switching
- Update existing tests to include mode field

* Make it work for manual slash commands too

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* Remove the mergeToolResultText in the Roo provider for now (RooCodeInc#10359)

* Revert "fix: capture extended thinking signatures for tool use continuations" (RooCodeInc#10360)

* Release v3.38.0 (RooCodeInc#10361)

* Changeset version bump (RooCodeInc#10362)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: enforce maxConcurrentFileReads limit in read_file tool (RooCodeInc#10363)

Co-authored-by: Roo Code <[email protected]>

* refactor(zgsm): optimize native protocol handling and model ID usage

* docs: clarify path to Security Settings in privacy policy (RooCodeInc#10367)

Co-authored-by: Roo Code <[email protected]>

* Improve error message when read_file is used on directory (RooCodeInc#10371)

Co-authored-by: Roo Code <[email protected]>

* Handle custom tool use similarly to MCP tools for ipc schema purposes (RooCodeInc#10364)

* fix: correct GitHub repository URL in marketing page (RooCodeInc#10377)

Co-authored-by: Roo Code <[email protected]>

* Revert "feat: enable mergeToolResultText for all OpenAI-compatible providers (RooCodeInc#10299)" (RooCodeInc#10381)

* fix: flush pending tool results before condensing context (RooCodeInc#10379)

* chore: add changeset for v3.38.1 (RooCodeInc#10384)

* Changeset version bump (RooCodeInc#10385)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix: update Cerebras maxTokens to 16384 (RooCodeInc#10387)

* docs: Replace Todo Lists video with Context Management video (RooCodeInc#10375)

Co-authored-by: Sannidhya <[email protected]>

* Release: v1.96.0 (RooCodeInc#10395)

chore: bump version to v1.96.0

* fix(utils): add optional chaining for provider settings

* feat(skills): align with Agent Skills spec (RooCodeInc#10409)

* chore: remove human-relay provider (RooCodeInc#10388)

Co-authored-by: Roo Code <[email protected]>

* Fix rate limit wait display (RooCodeInc#10389)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* fix: prevent write_to_file from creating files at truncated paths (RooCodeInc#10415)

Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Roo Code <[email protected]>

* Release v3.38.2 (RooCodeInc#10416)

* Changeset version bump (RooCodeInc#10417)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* fix(claude-code): stop frequent sign-ins by hardening OAuth refresh (RooCodeInc#10410)

* fix(claude-code): prevent sign-outs on oauth refresh

* test(claude-code): restore fetch after mocking

* refactor(claude-code): replace while(true) with bounded for loop for clarity

---------

Co-authored-by: Roo Code <[email protected]>

* fix: add type check for lastMessage.text in TTS useEffect (RooCodeInc#10431)

fix: add type check for lastMessage.text before calling startsWith

Fixes RooCodeInc#10430

The TTS useEffect was calling .startsWith() on lastMessage.text after only
checking if it was truthy. If text was a non-string truthy value (array,
object, or number), this would crash with "Q.text.startsWith is not a function".

Changed the truthy check to an explicit type check: typeof lastMessage.text === "string"

Co-authored-by: Roo Code <[email protected]>

* feat(chat): add collapsible markdown blocks and improve protocol error handling

* refactor(task): restructure conversation history handling

* feat: recursively load .roo/rules and AGENTS.md from subdirectories (RooCodeInc#10446)

Co-authored-by: Roo Code <[email protected]>

* Release: v1.99.0 (RooCodeInc#10447)

* fix: add maxConcurrentFileReads limit to native read_file tool schema (RooCodeInc#10449)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>

* chore: add changeset for v3.38.3 (RooCodeInc#10450)

* Changeset version bump (RooCodeInc#10451)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>

* feat: add image support documentation to read_file native tool description (RooCodeInc#10442)

Co-authored-by: Roo Code <[email protected]>

* fix: add explicit deduplication for duplicate tool_result blocks (RooCodeInc#10466)

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: daniel-lxs <[email protected]>

* VSCode shim + basic cli (RooCodeInc#10452)

Co-authored-by: Roo Code <[email protected]>

* Add an option to use our cli for evals (RooCodeInc#10456)

Co-authored-by: Roo Code <[email protected]>

* fix: preserve tool_use blocks for all tool_results in kept messages during condensation (RooCodeInc#10471)

* fix: add additionalProperties: false to MCP tool schemas for OpenAI Responses API (RooCodeInc#10472)

* feat(cli): add zgsm provider support

* Add a cli installer (RooCodeInc#10474)

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>

* feat(zgsm): add debug mode and fix tool name handling

* feat(i18n): add debug status to custom config label

* refactor: improve terminal encoding handling and UI styling

* feat(ui): add automatically focus option for chat input

* feat(proxy): add debug-mode proxy routing (RooCodeInc#10467)

* feat(terminal): enhance compilation markers and output handling

* fix: prevent duplicate tool_result blocks causing API errors (RooCodeInc#10497)

* feat: add Kimi K2 thinking model to Fireworks AI provider (RooCodeInc#9202)

Co-authored-by: Roo Code <[email protected]>

* fix: add missing description fields for debugProxy configuration (RooCodeInc#10505)

Co-authored-by: Roo Code <[email protected]>

* Tweak the style of the follow up suggestion modes (RooCodeInc#9260)

* feat(web-evals): remember last Roo model selection + add evals skill (RooCodeInc#10470)

* feat(web-evals): remember last Roo model selection

* fix(web-evals): reset model selections on provider switch and fix lint warning

- Add useEffect to reset model selections when switching between providers
  This prevents OpenRouter model IDs from persisting when switching to Roo,
  which was causing Roo's stored selection to be overwritten with wrong IDs

- Remove unused 'executionMethod' from onSubmit dependency array to fix
  react-hooks/exhaustive-deps warning

* fix(web-evals): add missing executionMethod to test cases

* fix(web-evals): harden localStorage + keep provider selections

* feat: rename YOLO to BRRR (RooCodeInc#10507)

Co-authored-by: Roo Code <[email protected]>

* feat: implement sticky provider profile for task-level API config persistence (RooCodeInc#10018)

* feat(settings): move CHAT_SEARCH from experimental to UI settings

* fix: remove legacy Claude 2 series models from Bedrock provider (RooCodeInc#10501)

Co-authored-by: Roo Code <[email protected]>

* feat: add support for image file @mentions (RooCodeInc#10189)

Co-authored-by: Roo Code <[email protected]>

* fix: handle PowerShell ENOENT error in os-name on Windows (RooCodeInc#9897)

Co-authored-by: Roo Code <[email protected]>

* feat: add xhigh reasoning effort to OpenAI compatible endpoints (RooCodeInc#10061)

Co-authored-by: Roo Code <[email protected]>

* feat: filter @ mention file search results using .rooignore (RooCodeInc#10174)

* feat: filter @ mention file search results using .rooignore

- Modify searchFiles case in webviewMessageHandler.ts to filter results using RooIgnoreController
- Use existing RooIgnoreController from current task if available, otherwise create a temporary one
- Respect showRooIgnoredFiles setting to allow users to toggle this behavior
- Add comprehensive test coverage for the new filtering behavior

Fixes RooCodeInc#10169

* fix: dispose temporary RooIgnoreController to prevent resource leak

Addresses Rooviewer feedback: the temporary RooIgnoreController created
when no task exists was never disposed, causing file watchers to accumulate.

Changes:
- Track temporary controller separately with tempController variable
- Wrap filtering logic in try/finally block
- Call dispose() in finally block to ensure cleanup
- Add test cases to verify dispose is called for temp controllers
- Verify task's controller is NOT disposed (only temp ones)

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Hannes Rudolph <[email protected]>

* fix: use task stored API config as fallback for rate limit (RooCodeInc#10266)

Co-authored-by: Roo Code <[email protected]>

* fix: make command chaining examples shell-aware for Windows compatibility (RooCodeInc#10434)

* fix: make command chaining examples shell-aware for Windows compatibility

Addresses Issue RooCodeInc#10352 where Roo Code generates Unix-style command
chaining (&&) even on Windows systems using PowerShell or cmd.exe.

Changes:
- Add getCommandChainOperator() to detect the user shell and return
  the appropriate command chaining syntax:
  - Unix shells (bash, zsh, etc.): &&
  - PowerShell: ;
  - cmd.exe: &
- Update getRulesSection() to use shell-specific chaining in examples
- Add informative note for non-Unix shells about different syntaxes
- Add comprehensive tests for shell detection and command chaining

* feat: add Unix utility guidance for Windows shells

Addresses feedback from issue RooCodeInc#10352 about sed and other Unix-specific
utilities being suggested on Windows. The system prompt now includes
guidance for PowerShell and cmd.exe users to use native alternatives:

PowerShell:
- Select-String instead of grep
- Get-Content instead of cat
- Remove-Item instead of rm
- Copy-Item instead of cp
- Move-Item instead of mv
- -replace operator or [regex] instead of sed

cmd.exe:
- type instead of cat
- del instead of rm
- copy instead of cp
- move instead of mv
- find/findstr instead of grep

* Apply suggestion from @roomote[bot]

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: use && for cmd.exe to preserve conditional execution semantics

- Update getCommandChainOperator() to return && for cmd.exe (already done)
- Update getCommandChainNote() to document && instead of & for cmd.exe
- Update JSDoc to reflect cmd.exe uses && for conditional execution
- Update tests to expect && for cmd.exe

cmd.exe supports && for conditional execution (run next command only if
previous succeeds), which provides the same semantics as Unix shells.

* fix: update PowerShell note to use && for cmd.exe reference

---------

Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* feat(types): add zai-glm-4.7 to Cerebras models (RooCodeInc#10500)

Co-authored-by: Matt Rubens <[email protected]>

* 🐛 Fix glitchy kangaroo bounce animation on welcome screen (RooCodeInc#10035)

The kangaroo logo on the welcome screen had a visual glitch where it would instantly jump to the top position when hovering, instead of smoothly starting the bounce from its resting position.

Changes:
- Added custom smooth-bounce keyframe animation in index.css that explicitly starts from translateY(0)
- Updated RooHero component to use hover state tracking with the new animation
- Removed Tailwind's animate-bounce class which was causing the glitch

The animation now smoothly bounces from the resting position without any jarring visual jumps.

* Release v3.39.0 (RooCodeInc#10537)

---------

Co-authored-by: Chris Estreich <[email protected]>
Co-authored-by: Daniel <[email protected]>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <[email protected]>
Co-authored-by: Hannes Rudolph <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: John Richmond <[email protected]>
Co-authored-by: Matt Rubens <[email protected]>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <[email protected]>
Co-authored-by: Patrick Decat <[email protected]>
Co-authored-by: Bruno Bergher <[email protected]>
Co-authored-by: Seb Duerr <[email protected]>
Co-authored-by: SannidhyaSah <[email protected]>
Co-authored-by: Sannidhya <[email protected]>
Co-authored-by: Danny Ricciotti <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working Issue/PR - Triage New issue. Needs quick review to confirm validity and assign labels. size:L This PR changes 100-499 lines, ignoring generated files.

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

4 participants