Commit graph

241 commits

Author SHA1 Message Date
Matt Rubens
dc5e765e9c
Revert "Revert "Enable parallel tool calling with new_task isolation safeguards"" (#11006) 2026-01-27 10:31:03 -05:00
Matt Rubens
5b3626f1a6
Revert "Enable parallel tool calling with new_task isolation safeguards" (#11004) 2026-01-27 10:20:12 -05:00
Daniel
2584504b9b
Enable parallel tool calling with new_task isolation safeguards (#10979)
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
2026-01-27 00:26:49 -05:00
Hannes Rudolph
bd29766406
fix: record truncation event when condensation fails but truncation succeeds (#10984) 2026-01-26 17:19:27 -07:00
Daniel
339f5aad48
fix: convert orphaned tool_results to text blocks after condensing (#10927)
* fix: convert orphaned tool_results to text blocks after condensing

When condensing occurs after assistant sends tool_uses but before user responds,
the tool_use blocks get condensed away. User messages containing tool_results that
reference condensed tool_use_ids become orphaned and get filtered out by
getEffectiveApiHistory, causing user feedback to be lost.

This fix enhances the existing check in addToApiConversationHistory to detect when
the previous effective message is not an assistant and converts any tool_result
blocks to text blocks, preventing them from being filtered as orphans.

The conversion happens at the latest possible moment (message insertion) because:
- Tool results are created before we know if condensing will occur
- We need actual effective history state to make the decision
- This is the last checkpoint before orphan filtering happens

* Only include environment details in summary for automatic condensing

For automatic condensing (during attemptApiRequest), environment details
are included in the summary because the API request is already in progress
and the next user message won't have fresh environment details injected.

For manual condensing (via condenseContext button), environment details
are NOT included because fresh details will be injected on the very next
turn via getEnvironmentDetails() in recursivelyMakeClineRequests().

This uses the existing isAutomaticTrigger flag to differentiate behavior.

---------

Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
2026-01-23 19:04:36 -05:00
Hannes Rudolph
526488e5b6
chore: remove MULTI_FILE_APPLY_DIFF experiment (#10925)
* chore: remove MULTI_FILE_APPLY_DIFF experiment

Remove the 'Enable concurrent file edits' experimental feature that
allowed editing multiple files in a single apply_diff call.

- Remove multiFileApplyDiff from experiment types and config
- Delete MultiFileSearchReplaceDiffStrategy class and tests
- Delete MultiApplyDiffTool wrapper and tests
- Remove experiment-specific code paths in Task.ts, generateSystemPrompt.ts, and presentAssistantMessage.ts
- Remove special handling in ExperimentalSettings.tsx
- Remove translations from all 18 locale files

The existing MultiSearchReplaceDiffStrategy continues to handle
multiple SEARCH/REPLACE blocks within a single file.

* fix: remove unused EXPERIMENT_IDS/experiments import from Task.ts

Addresses review feedback: removes the unused imports from
src/core/task/Task.ts that were left over after removing the
MULTI_FILE_APPLY_DIFF experiment routing code.
2026-01-23 18:39:24 -05:00
Hannes Rudolph
85f42dca83
chore: remove diffEnabled and fuzzyMatchThreshold settings (#10298) 2026-01-23 16:39:08 -05:00
Hannes Rudolph
0ff826d21d
feat(condense): improve condensation with environment details, accurate token counts, and lazy evaluation (#10920) 2026-01-23 13:52:47 -07:00
Hannes Rudolph
cf5d42e1e1
Intelligent Context Condensation v2 (#10873) 2026-01-23 12:33:35 -07:00
Hannes Rudolph
9d65772d24
fix(condense): remove custom condensing model option (#10901)
* fix(condense): remove custom condensing model option

Remove the ability to specify a different model/API configuration for
condensing conversations. Modern conversations include provider-specific
data (tool calls, reasoning blocks, thought signatures) that only the
originating model can properly understand and summarize.

Changes:
- Remove condensingApiHandler parameter from summarizeConversation()
- Remove condensingApiConfigId from context management and Task
- Remove API config dropdown for CONDENSE in settings UI
- Update telemetry to remove usedCustomApiHandler parameter
- Update related tests

Users can still customize the CONDENSE prompt text; only model selection
is removed.

* fix: remove condensingApiConfigId from types and test fixtures

---------

Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-22 20:06:04 -05:00
Hannes Rudolph
be0e8c2665
chore: clean up XML legacy code and native-only comments (#10900) 2026-01-22 15:56:11 -05:00
Chris Estreich
13e090ef81
fix: prevent task abortion when resuming via IPC/bridge (#10892) 2026-01-22 02:31:51 -08:00
Hannes Rudolph
3f332d8e2b
refactor: migrate context condensing prompt to customSupportPrompts and cleanup legacy code (#10881) 2026-01-21 21:33:46 -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
Hannes Rudolph
06039400cd
perf(webview): avoid resending taskHistory in state updates (#10842)
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2026-01-19 21:22:32 -07:00
roomote[bot]
0f08867656
refactor: unify user content tags to <user_message> (#10723)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-18 22:04:00 -05:00
roomote[bot]
a148862a06
feat: warn users when too many MCP tools are enabled (#10772)
* feat: warn users when too many MCP tools are enabled

- Add WarningRow component for displaying generic warnings with icon, title, message, and optional docs link
- Add TooManyToolsWarning component that shows when users have more than 40 MCP tools enabled
- Add MAX_MCP_TOOLS_THRESHOLD constant (40)
- Add i18n translations for the warning message
- Integrate warning into ChatView to display after task header
- Add comprehensive tests for both components

Closes ROO-542

* Moves constant to the right place

* Move it to the backend

* i18n

* Add actionlink that takes you to MCP settings in this case

* Add to MCP settings too

* Bump max tools up to 60 since github itself has 50+

* DRY

* Fix test

---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Bruno Bergher <bruno@roocode.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-18 09:22:09 -05:00
Daniel
bbb6a6e4b4
fix: prevent duplicate tool_use IDs causing API 400 errors (#10760) 2026-01-15 23:08:21 -05:00
Hannes Rudolph
4ebbca08b0
feat: add OpenAI Codex provider with OAuth subscription authentication (#10736)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-14 23:48:51 -05:00
Hannes Rudolph
9b1c8500d9
feat(gemini): add allowedFunctionNames support to prevent mode switch errors (#10708)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-13 23:49:57 -05:00
Daniel
621d9500de
fix: sanitize tool_use IDs to match API validation pattern (#10649) 2026-01-12 18:04:58 -05:00
Hannes Rudolph
e39abbffa1
fix: make edit_file matching more resilient (#10585) 2026-01-09 20:32:13 -05:00
Hannes Rudolph
168cfcaba5
fix: round-trip Gemini thought signatures for tool calls (#10590) 2026-01-09 20:03:58 -05:00
Chris Estreich
a4eb15b5a8
Add some functionality to @roo-code/core for the cli (#10584) 2026-01-09 13:05:15 -08:00
Daniel
b7bd859473
feat: improve error messaging for stream termination errors from provider (#10548) 2026-01-09 10:03:12 -05:00
Daniel
7b771a209e
fix: merge approval feedback into tool result instead of pushing duplicate (ROO-410) (#10519) 2026-01-09 10:01:52 -05:00
roomote[bot]
ca0c9010d5
fix: use task stored API config as fallback for rate limit (#10266)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-07 17:21:08 -07:00
Hannes Rudolph
9700eab792
feat: implement sticky provider profile for task-level API config persistence (#10018) 2026-01-07 09:03:44 -07:00
Daniel
741b2680b5
fix: prevent duplicate tool_result blocks causing API errors (#10497) 2026-01-06 18:27:27 -05:00
Chris Estreich
b11d53adf4
VSCode shim + basic cli (#10452)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-05 10:24:05 -08:00
roomote[bot]
f2276bebc4
fix: add explicit deduplication for duplicate tool_result blocks (#10466)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2026-01-05 11:24:07 -05:00
roomote[bot]
cbc0ae4726
feat: add image support documentation to read_file native tool description (#10442)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-05 09:43:28 -05:00
roomote[bot]
c307dc7756
fix: add maxConcurrentFileReads limit to native read_file tool schema (#10449)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-03 19:08:37 -05:00
Matt Rubens
08c3431fc5
feat: recursively load .roo/rules and AGENTS.md from subdirectories (#10446)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-03 15:05:48 -05:00
Hannes Rudolph
ca1bc18a21
Fix rate limit wait display (#10389)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-12-30 21:56:32 -08:00
Daniel
ca8fd5c867
fix: flush pending tool results before condensing context (#10379) 2025-12-29 15:43:02 -08:00
roomote[bot]
13370a2ad1
feat: add optional mode field to slash command front matter (#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 <roomote@roocode.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-12-26 17:17:54 -08:00
Matt Rubens
343d5e9dcb
Add support for skills (#10335)
* Add support for skills

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

---------

Co-authored-by: Roo Code <roomote@roocode.com>
2025-12-25 20:28:41 -08:00
Hannes Rudolph
dfa7c357c2
fix(task): drain queued messages while waiting for ask (#10315) 2025-12-23 15:40:41 -07:00
Hannes Rudolph
0f3df0e932
feat: add grace retry for empty assistant messages (#10297)
Implements grace retry error handling for 'no assistant messages' API
errors, following the same pattern as PR #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
2025-12-23 07:02:40 -08:00
Chris Estreich
5ae4d4d635
Custom tool calling (#10083) 2025-12-21 12:43:06 -08:00
Bruno Bergher
6e2b85214e
ux: improve API error handling and visibility (#10204)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-12-19 11:38:56 -08:00
Hannes Rudolph
e2d1599f9c
feat: improve 'no tools used' error handling with grace retry (#10196)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-12-18 15:29:01 -07:00
Daniel
3a2ad6b0e1
feat(telemetry): add PostHog exception tracking for consecutive mistake errors (#10193) 2025-12-18 12:59:37 -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
Hannes Rudolph
0b86796b8f
[feat] Claude Code Provider Native Tool Calling (#10077)
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2025-12-17 12:57:27 -08:00
roomote[bot]
caf6142201
feat: add full error details to streaming failure dialog (#10131)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: cte <cestreich@gmail.com>
2025-12-16 10:34:16 -08:00
Daniel
6619d46377
feat(anthropic): enable native tools by default and add telemetry tracking (#10021) 2025-12-15 21:32:44 -08:00
Chris Estreich
c7139167ce
Move isToolAllowedForMode out of shared directory (#10089) 2025-12-15 02:18:08 -08:00