Commit graph

209 commits

Author SHA1 Message Date
Daniel
3400499917
fix: sanitize tool_use_id in tool_result blocks to match API history (#11131)
Tool IDs from providers like Gemini/OpenRouter contain special characters
(e.g., 'functions.read_file:0') that are sanitized when saving tool_use
blocks to API history. However, tool_result blocks were using the original
unsanitized IDs, causing ToolResultIdMismatchError.

This fix ensures tool_result blocks use sanitizeToolUseId() to match the
sanitized tool_use IDs in conversation history.

Fixes EXT-711
2026-01-30 23:15:25 -05:00
Hannes Rudolph
cc86049f10
refactor(read_file): Codex-inspired read_file refactor EXT-617 (#10981) 2026-01-29 15:16:32 -07:00
Daniel
3877d02498
Replace hyphen encoding with fuzzy matching for MCP tool names (#10775) 2026-01-24 00:49:13 -05:00
Michaelzag
4e67357ab5
fix: use json-stream-stringify for pretty-printing MCP config files (#9864)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-23 19:19:35 -08:00
Hannes Rudolph
5e0bb5af26
refactor: unify export path logic and default to Downloads (#10882) 2026-01-21 21:34:48 -05:00
Hannes Rudolph
8de9337e63
chore: remove XML tool calling support (#10841)
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-20 20:25:08 -05:00
Daniel
e34d93e2cb
fix: truncate call_id to 64 chars for OpenAI Responses API (#10763) 2026-01-15 23:09:54 -05:00
Daniel
df42655fc9
fix: flatten top-level anyOf/oneOf/allOf in MCP tool schemas (#10726) 2026-01-15 23:05:00 -05:00
Daniel
b514996208
fix(path): return empty string from getReadablePath when path is empty - ROO-437 (#10638) 2026-01-12 18:49:37 -05:00
Daniel
621d9500de
fix: sanitize tool_use IDs to match API validation pattern (#10649) 2026-01-12 18:04:58 -05:00
Patrick Decat
a682908a25
fix: encode hyphens in MCP tool names before sanitization (#10644) 2026-01-12 17:06:40 -05:00
Chris Estreich
3171ffc809
Move more types to @roo-code/types (for the cli) (#10583) 2026-01-09 11:59:06 -08:00
Hannes Rudolph
503f40241d
feat(proxy): add debug-mode proxy routing (#10467) 2026-01-06 13:17:50 -07:00
Daniel
d00d9edec5
feat: deprecate XML tool protocol selection, force native for new tasks (#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
2025-12-22 17:49:50 -08:00
Daniel
7fae76ec86
fix: move array-specific properties into anyOf variant in normalizeToolSchema (#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
2025-12-22 11:01:43 -08:00
Daniel
6b141fbb25
fix: disable strict mode for MCP tools to preserve optional parameters (#10220)
Co-authored-by: Roo Code <roomote@roocode.com>
2025-12-22 13:21:31 -05:00
Chris Estreich
5ae4d4d635
Custom tool calling (#10083) 2025-12-21 12:43:06 -08:00
Daniel
aabee0fb0b
fix: force additionalProperties false for strict mode compatibility (#10210) 2025-12-19 12:18:38 -08:00
Daniel
c3a4d14b6b
fix: strip unsupported JSON Schema format values for OpenAI compatibility (#10198) 2025-12-18 16:57:06 -08:00
Daniel
3e0d9c65e8
feat: lock task tool protocol for consistent task resumption (#10192)
Co-authored-by: Roo Code <roomote@roocode.com>
2025-12-18 11:54:26 -08:00
Matt Rubens
3cb2c1de66
Revert "Revert "feat: change defaultToolProtocol default from xml to native"" (#10186)
Co-authored-by: Roo Code <roomote@roocode.com>
2025-12-18 10:31:33 -05:00
Daniel
2a2411d37c
fix: enable native tools by default for OpenAI compatible provider (#10159) 2025-12-17 13:02:45 -08:00
Daniel
aa3b4ae9cc
fix: normalize MCP tool schemas for Bedrock and OpenAI strict mode (#10148) 2025-12-17 13:01:48 -08:00
Daniel
ed631dccc3
fix: remove dots and colons from MCP tool names for Bedrock compatibility (#10152) 2025-12-17 08:47:52 -08:00
Hannes Rudolph
f414ba41a6
fix: correct token counting for context truncation display (#9961) 2025-12-16 16:12:02 -07:00
Daniel
93bc8c4f1d
fix: add additionalProperties: false to nested MCP tool schemas (#10109) 2025-12-16 09:22:16 -08:00
Daniel
3521270888
feat: sanitize MCP server/tool names for API compatibility (#10054) 2025-12-12 13:46:50 -08:00
Matt Rubens
0068d1fee3
Revert "feat: change defaultToolProtocol default from xml to native" (#9956) 2025-12-09 13:09:28 -08:00
roomote[bot]
946fd0390f
feat: change defaultToolProtocol default from xml to native (#9892)
* feat: change defaultToolProtocol to default to native instead of xml

* fix: add missing getMcpHub mock to Subtask Rate Limiting tests

---------

Co-authored-by: Roo Code <roomote@roocode.com>
2025-12-06 11:51:16 -05:00
Matt Rubens
dbaaef756e
Remove experimental setting for native tool calls (#9333) 2025-11-17 23:37:36 -05:00
Daniel
3631a02c8b
feat: add git status to environment details (#9310) 2025-11-17 14:10:32 -05:00
Matt Rubens
3e0bd0ea55
Move the native tool call toggle to experimental settings (#9297)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2025-11-17 09:41:30 -05:00
Daniel
744f4bd4c8
feat: implement dynamic tool protocol resolution with proper precedence hierarchy (#9286)
Co-authored-by: Roo Code <roomote@roocode.com>
2025-11-15 14:35:04 -05:00
Daniel
0a305310e5
refactor: centralize toolProtocol configuration checks (#9279)
* refactor: centralize toolProtocol configuration checks

- Created src/utils/toolProtocol.ts with getToolProtocolFromSettings() utility
- Replaced all direct vscode.workspace.getConfiguration() calls with centralized utility
- Updated 6 files to use the new utility function
- All tests pass and TypeScript compilation succeeds

* refactor: use isNativeProtocol function from types package
2025-11-14 20:24:40 -05:00
Matt Rubens
416fa5727e
Fix cost and token tracking between provider styles (#8954) 2025-10-31 15:14:29 -04:00
Dicha Zelianivan Arkana
06af804c2e
fix(modes): custom modes under custom path not showing (#8499) 2025-10-28 19:36:56 -04:00
roomote[bot]
cde738a450
fix: handle square bracket HTML entities in Gemini responses (#7577)
Co-authored-by: Roo Code <roomote@roocode.com>
2025-09-16 11:53:52 -04:00
roomote[bot]
2b533993ff
fix: handle array paths from VSCode terminal profiles (#7697)
* fix: handle array paths from VSCode terminal profiles

- Updated terminal profile interfaces to support string | string[] for path property
- Added normalizeShellPath helper to safely extract first element from array paths
- Modified isShellAllowed to handle both string and array inputs
- Updated getWindowsShellFromVSCode, getMacShellFromVSCode, and getLinuxShellFromVSCode to use normalizeShellPath
- Added comprehensive tests for array path handling

Fixes #7695

* feat: add validateShellPath export for robust shell validation

- Created validateShellPath as a public API for shell path validation
- Refactored internal validation logic into isShellAllowedInternal
- Added comprehensive test coverage for all edge cases
- Maintains backward compatibility with deprecated isShellAllowed
- Handles arrays, strings, null, undefined, and nested arrays gracefully

* Simplify roomote's work a little

---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: John Richmond <5629+jr@users.noreply.github.com>
2025-09-05 11:41:00 -07:00
John Richmond
467c9f597d
Use an allowlist to keep the prompt default shell sane (#7681) 2025-09-05 00:00:52 -04:00
Piotr Wilkin (ilintar)
47f594f27b
fix: special tokens should not break task processing (#7540) 2025-08-30 10:40:40 -04:00
Chris Estreich
20929b0f16
Mode and provider profile selector (#7545) 2025-08-29 16:48:06 -07:00
Chris Estreich
1e4c46fe6f
Refactor the extension bridge (#7515) 2025-08-29 00:28:38 -07:00
Chris Estreich
cd9e92fa9b
Move @roo-code/cloud to the Roo-Code repo (#7503) 2025-08-28 11:18:45 -07:00
Chris Hasson
aee531a143
Show console logging in vitests when the --no-silent flag is set (#7467)
By default, all of the tests run in silent mode with monkey-patched the console logging so no console logging will ever appear in test output.
This confuses the agent- sometimes it will add console logging to help it debug things, and it won't see the logs that it expects.

Adds src/utils/vitest-verbosity.ts to handle verbosity resolution and console logging.
Modifies src/vitest.config.ts and webview-ui/vitest.config.ts to integrate the new verbosity control.
Removes manual console suppression from src/vitest.setup.ts and webview-ui/vitest.setup.ts as it's now handled dynamically.

Co-authored-by: Chris Hasson <noreply@example.com>
2025-08-28 12:51:21 -04:00
Matt Rubens
8684877097
Update list of default allowed commands (#7404) 2025-08-26 00:56:03 -04:00
Dicha Zelianivan Arkana
ce052dbd7e
refactor(storage): better fs check (#7164)
* refactor(storage): better fs check

* fix(storage): fs check inconsistencies

* test(storage): more thorough testing
2025-08-21 02:15:52 -07:00
Chris Estreich
44086e4a86
Add support for task page event population (#7117) 2025-08-14 23:17:05 -07:00
roomote[bot]
6540f2be5c
fix: prevent XML entity decoding in diff tools (#7107) (#7108)
* fix: prevent XML entity decoding in diff tools

- Add parseXmlForDiff function with processEntities: false to preserve exact content
- Update multiApplyDiffTool to use parseXmlForDiff instead of parseXml
- Add comprehensive tests for entity handling in parseXmlForDiff

This fixes the issue where fast-xml-parser was decoding HTML entities like &
causing mismatches in diff tools when comparing against original file content.

Fixes #7107

* refactor: eliminate code duplication between parseXml and parseXmlForDiff

- Refactored parseXml to accept optional ParseXmlOptions parameter
- parseXmlForDiff now delegates to parseXml with processEntities: false
- Added explanatory comment in multiApplyDiffTool.ts about why parseXmlForDiff is used
- Improved JSDoc documentation with specific use cases for parseXmlForDiff

This maintains backward compatibility while eliminating code duplication.
parseXml continues to be used for general XML parsing (file reads, follow-up questions),
while parseXmlForDiff is specifically for diff operations where entity processing must be disabled.

---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2025-08-14 17:46:52 -04:00
Chris Estreich
9ffc2b0a36
Move cloud types from @roo-code/types to @roo-code/cloud (#7038) 2025-08-13 00:10:29 -07:00
Chris Estreich
b1300e5550
Bring back roomote control (#6796)
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-08-11 17:28:08 -04:00