Commit graph

6925 commits

Author SHA1 Message Date
Hannes Rudolph
0bd02aeb46 refactor: stop wrapping AI SDK errors, surface real provider error messages
- Remove handleAiSdkError() wrapping from all 24 provider files — typed AI SDK
  errors (APICallError, RetryError, TooManyRequestsError) now flow through directly
- Update Task.ts to use APICallError.isInstance/RetryError.isInstance for typed
  error handling, extractAiSdkErrorMessage() for user display
- Add findDeepestApiCallError() for recursive .cause/.lastError/.errors[] traversal
- Fix processAiSdkStreamPart error case to use extractAiSdkErrorMessage instead of
  flattening to error.message (was losing responseBody with actual error details)
- Fix extractMessageFromResponseBody to handle OpenRouter metadata.raw with nested
  Anthropic error format (rawObj.error.message)
- Add checkIsAiSdkContextWindowError() for structured context window detection
- Update backoffAndAnnounce() to read .statusCode from APICallError natively
- Fix 25 provider error tests, add 8 new error extraction tests
- Remove dead handleOpenAIError export from error-handler.ts
- Add lastStreamError recovery to OpenRouter and native-ollama providers
2026-02-13 12:53:17 -07:00
Hannes Rudolph
b6fd74b3ec refactor: move applyCacheBreakpoints into providers, reduce maxBreakpoints to 1
- Move applyCacheBreakpoints() from Task.ts into each provider's createMessage()
  (anthropic, bedrock, openrouter, requesty, anthropic-vertex, roo)
- Aligns with AI SDK best practice: cache control is a call-site concern
- Remove stripCacheProviderOptions() from saveRooMessages() save path
  (no longer needed since cache markers don't contaminate persistent history)
- Change maxBreakpoints default from 2 to 1 (3-point strategy: 1 system, 1 tool, 1 message)
2026-02-13 09:25:12 -07:00
Hannes Rudolph
f656fb1709 fix: add sanitizeMessagesForProvider to anthropic handler (was using raw cast) 2026-02-13 08:36:10 -07:00
Hannes Rudolph
aa3d734284 fix: remove dead responseId variable and stale getResponseId type cast 2026-02-13 08:30:56 -07:00
Hannes Rudolph
21172d5add fix: restore sanitize-messages.ts dropped during rebase (reverted on main, needed by this PR) 2026-02-13 08:28:38 -07:00
Hannes Rudolph
2d0fa89ec3 fix: prevent false 'tool not used' errors when parseToolCall returns null
When NativeToolCallParser.parseToolCall() returns null in the
'tool_call' handler, push a fallback ToolUse block to
assistantMessageContent instead of silently breaking. This ensures
the didToolUse check at the end of the request sees a tool_use block,
preventing the false '[ERROR] You did not use a tool' injection.
The fallback block flows into presentAssistantMessage()'s existing
unknown-tool handler which reports the actual error to the model.
Add 4 tests covering the fallback behavior.
2026-02-13 08:26:00 -07:00
Hannes Rudolph
67a31ae8c5 fix: extract actual provider error messages from AI SDK APICallError
Parse error.metadata.raw (OpenRouter/provider wrapper format) as the
primary error source. Remove silent fallback to generic statusText
('Bad Request'). When structured extraction fails, surface the raw
responseBody instead of swallowing it. Add 17 tests covering all
error format paths.
2026-02-13 08:25:58 -07:00
Hannes Rudolph
95d19e5729 test: fix anthropic spec mock to use real sanitizeMessagesForProvider for stripping test 2026-02-13 08:25:58 -07:00
Hannes Rudolph
c4748dd7f7 refactor: remove legacy id field from RooAssistantMessage and reasoning messages
Remove the provider response ID (uid=502(hrudolph) gid=20(staff) groups=20(staff),101(access_bpf),12(everyone),61(localaccounts),79(_appserverusr),80(admin),81(_appserveradm),98(_lpadmin),333(piavpn),33(_appstore),100(_lpoperator),204(_developer),250(_analyticsusers),395(com.apple.access_ftp),398(com.apple.access_screensharing),399(com.apple.access_ssh),400(com.apple.access_remote_ae)) field from RooAssistantMessage type
and stop propagating it through anthropicToRoo converter and Task.ts.
Update corresponding tests to no longer assert on the removed field.
2026-02-13 08:24:58 -07:00
Hannes Rudolph
b8c8749106 refactor: rename ApiMessage to LegacyApiMessage and strip cache providerOptions on save 2026-02-13 08:24:58 -07:00
Roo Code
26899bf601 fix: update stale JSDoc reference to removed convertToAiSdkMessages 2026-02-13 08:24:58 -07:00
Roo Code
e3fd53f710 refactor: remove legacy message transformation pipeline
- Remove buildCleanConversationHistory from Task.ts (effectively a no-op
  since all providers are AI SDK providers and preserveReasoning is always true)
- Standardize all providers on sanitizeMessagesForProvider for message
  sanitization (xai, gemini, bedrock, openai-native, openai-codex)
- Delete dead transform files with zero production callers:
  anthropic-filter.ts, r1-format.ts, openai-format.ts, mistral-format.ts
- Remove convertToAiSdkMessages function and its unused imports from ~20
  providers (imported by all, called by none)
- Remove reasoning-preservation.test.ts (tested removed code)
- Clean up stale comments referencing removed functions
- Backward compatibility with old conversation histories is already handled
  by convertAnthropicToRooMessages at the persistence layer
2026-02-13 08:24:58 -07:00
Hannes Rudolph
b4d9f92b4d
Revert "Fix provider 400s: strip reasoning_details from messages, $ref from tool schemas" (#11453) 2026-02-12 19:51:21 -07:00
Hannes Rudolph
3965cd9743
fix: stabilize token/cache accounting across providers and routed Roo metadata (#11448) 2026-02-12 16:10:43 -07:00
Hannes Rudolph
b7857bcd6a
fix: harden delegation lifecycle against race conditions with per-task metadata, mutual-exclusion guards, and multi-layer failure recovery (#11379)
* fix: race conditions in subtask delegation system

Comprehensive fix for race conditions and error handling gaps in the subtask
delegation system. Addresses multiple failure modes that could leave parent
tasks permanently stuck in 'delegated' status, causing nested subtasks to hang.

Key fixes:
- Remove initialStatus from taskMetadata rebuild (eliminates status overwrites)
- Persist delegation metadata to per-task files (resolves globalState eviction)
- Add delegationInProgress mutex guard (prevents concurrent delegation ops)
- TOCTOU race fixes with fresh re-reads before writes
- Abort-aware pWaitFor predicate (prevents false 60s timeout on user input)
- Remove silent .catch(() => {}) — all errors now logged unless task is aborting
- Single-attempt delegation with parent repair on failure (no retry band-aids)
- Cancel debouncedEmitTokenUsage in dispose() (prevents zombie callbacks)
- new_task isolation truncation for parallel tool calls

* fix: write all 6 delegation fields in every saveDelegationMeta call site

* fix: align delegation tests with single-attempt implementation (no retry)
2026-02-12 13:06:25 -05:00
0xMink
9e46d3e10c
Fix provider 400s: strip reasoning_details from messages, $ref from tool schemas (#11431)
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2026-02-12 12:00:52 -05:00
SannidhyaSah
6c9ff49dd8
fix: cancel backend auto-approval timeout when auto-approve is toggled off mid-countdown (#11439)
Co-authored-by: Sannidhya <sann@Sannidhyas-MacBook-Pro.local>
2026-02-12 10:38:11 -05:00
roomote[bot]
cdf481c8f9
feat: add GLM-5 model support to Z.ai provider (#11440) 2026-02-12 09:14:52 -05:00
Hannes Rudolph
897c372d2d
refactor: unify cache control with centralized breakpoints and universal provider options (#11426) 2026-02-12 00:21:25 -07:00
Hannes Rudolph
fa9dff4a06
refactor: remove browser use functionality entirely (#11392) 2026-02-11 18:11:21 -07:00
Chris Estreich
f54f224a26
chore(cli): prepare release v0.0.53 (#11425) 2026-02-11 16:43:12 -08:00
Chris Estreich
6c8b9dfa26
Make CLI auto-approve by default with require-approval opt-in (#11424)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-11 16:12:05 -08:00
Chris Estreich
bd4cd07e88
Release: v1.111.0 (#11421) 2026-02-11 15:55:31 -08:00
Chris Estreich
77b76a891f
Handle cancel/resume abort races without crashing (#11422) 2026-02-11 15:55:08 -08:00
Daniel
b51af98278
fix: make delegation reopen flow Roo v2-native (#11418) 2026-02-11 16:38:57 -05:00
Hannes Rudolph
b759b92f01
refactor: remove built-in skills and built-in skills mechanism (#11414) 2026-02-11 14:32:57 -07:00
Hannes Rudolph
d2c52c9e09
chore: clean up repo-facing mode rules (#11410) 2026-02-11 12:15:55 -07:00
Daniel
e6f0e79c38
feat: implement ModelMessage storage layer with AI SDK response messages (#11409)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-11 13:58:39 -05:00
Matt Rubens
dcb33c47ad
Revert "feat: wire RooMessage storage into Task.ts and all providers" (#11394) 2026-02-10 23:57:42 -05:00
Daniel
a7ba3b5af5
feat: wire RooMessage storage into Task.ts and all providers (#11386) 2026-02-10 21:25:48 -07:00
Hannes Rudolph
4e659b459d
refactor: remove footgun prompting (file-based system prompt override) (#11387) 2026-02-10 18:32:01 -07:00
Hannes Rudolph
5800363903
refactor: delete orphaned per-provider caching transform files (#11388) 2026-02-10 17:39:45 -07:00
Hannes Rudolph
8a69e9e04d
feat: rename search_and_replace tool to edit and unify edit-family UI (#11296) 2026-02-10 17:32:35 -07:00
Hannes Rudolph
097f648349
fix: resolve chat scroll anchoring and task-switch scroll race condit… (#11385) 2026-02-10 16:40:13 -07:00
Hannes Rudolph
8d57da8bc8
roofactor: Migrate Roo provider to AI SDK (#11383) 2026-02-10 16:16:32 -07:00
Hannes Rudolph
08a96af22c
fix: harden command auto-approval against inline JS false positives (#11382) 2026-02-10 14:44:10 -07:00
Daniel
50e5d98f5b
feat: RooMessage type system and storage layer for ModelMessage migration (#11380)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-10 16:41:35 -05:00
Danger Mouse
4438fdadc6
Second Quick Fix for Azure Foundry (#11374) 2026-02-10 10:39:55 -07:00
roomote[bot]
b971fe1a63
fix: preserve pasted images in chatbox during chat activity (#11375)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-10 12:37:41 -05:00
Daniel
cdd1a4dabf
refactor: migrate NativeOllamaHandler to AI SDK (#11355) 2026-02-10 10:36:28 -07:00
Hannes Rudolph
4272a69726
refactor: unify Gemini/Vertex error handling via handleAiSdkError() (#11364) 2026-02-10 11:19:37 -05:00
SannidhyaSah
ff89965f59
fix: prevent chat history loss during cloud/settings navigation (#11371) (#11372)
Co-authored-by: Sannidhya <sann@Sannidhyas-MacBook-Pro.local>
2026-02-10 10:41:53 -05:00
Hannes Rudolph
d4cf3211e7
fix: avoid zsh process-substitution false positives in assignments (#11365) 2026-02-10 10:01:48 -05:00
0xMink
7df1a18ccb
fix(editor): make tab close best-effort in DiffViewProvider.open (#11363) 2026-02-10 09:52:30 -05:00
0xMink
c1a8767adc
fix(checkpoints): canonicalize core.worktree comparison to prevent Windows path mismatch failures (#11346) 2026-02-10 09:51:38 -05:00
Chris Estreich
b02924530c
Fix task resumption in the API module (#11369) 2026-02-10 00:28:17 -08:00
Daniel
5773af8ddd
feat: Refactor OpenRouter provider to use Vercel AI SDK (#10778)
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
2026-02-09 20:50:33 -07:00
Hannes Rudolph
2f9849071d
fix: surface actual API error messages instead of generic NoOutputGeneratedError (#11359) 2026-02-09 19:47:04 -07:00
Hannes Rudolph
938e6994a2
refactor: migrate Qwen Code provider to AI SDK (#11356)
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2026-02-09 18:45:27 -07:00
Hannes Rudolph
b6bf829ad9
feat: migrate MiniMax provider to AI SDK (#11357) 2026-02-09 18:33:22 -07:00