Commit graph

2908 commits

Author SHA1 Message Date
Daniel
38e3529c1e
fix: make line_ranges optional in read_file tool schema (#9254)
The OpenAI tool schema required both 'path' and 'line_ranges' in FileEntry,
but the TypeScript type definition marks lineRanges as optional. This caused
the AI to fail when trying to read files without specifying line_ranges.

Changes:
- Updated read_file tool schema to only require 'path' parameter
- line_ranges remains available but optional, matching TypeScript types
- Aligns with implementation which treats lineRanges as optional throughout

Fixes issue where read_file tool kept failing with missing parameters.
2025-11-13 21:56:51 -05:00
Hannes Rudolph
01cb12f167
Add GPT-5.1 models and clean up reasoning effort logic (#9252)
* Reasoning effort: capability-driven; add disable/none/minimal; remove GPT-5 minimal special-casing; document UI semantics; remove temporary logs

* Remove Unused supportsReasoningNone

* Roo reasoning: omit field on 'disable'; UI: do not flip enableReasoningEffort when selecting 'disable'

* Update packages/types/src/model.ts

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

* Update webview-ui/src/components/settings/SimpleThinkingBudget.tsx

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

---------

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2025-11-13 20:54:41 -05:00
Daniel
258830967a
fix: Filter native tools by mode restrictions (#9246)
* fix: filter native tools by mode restrictions

Native tools are now filtered based on mode restrictions before being sent to the API, matching the behavior of XML tools. Previously, all native tools were sent to the API regardless of mode, causing the model to attempt using disallowed tools.

Changes:
- Created filterNativeToolsForMode() and filterMcpToolsForMode() utility functions
- Extracted filtering logic from Task.ts into dedicated module
- Applied same filtering approach used for XML tools in system prompt
- Added comprehensive test coverage (10 tests)

Impact:
- Model only sees tools allowed by current mode
- No more failed tool attempts due to mode restrictions
- Consistent behavior between XML and Native protocols
- Better UX with appropriate tool suggestions per mode

* refactor: eliminate repetitive tool checking using group-based approach

- Add getAvailableToolsInGroup() helper to check tools by group instead of individually
- Refactor filterNativeToolsForMode() to reuse getToolsForMode() instead of duplicating logic
- Simplify capabilities.ts by using group-based checks (60% reduction)
- Refactor rules.ts to use group helper (56% reduction)
- Remove debug console.log statements
- Update tests and snapshots

Benefits:
- Eliminates code duplication
- Leverages existing TOOL_GROUPS structure
- More maintainable - new tools in groups work automatically
- All tests passing (26/26)

* fix: add fallback to default mode when mode config not found

Ensures the agent always has functional tools even if:
- A custom mode is deleted while tasks still reference it
- Mode configuration becomes corrupted
- An invalid mode slug is provided

Without this fallback, the agent would have zero tools (not even
ask_followup_question or attempt_completion), completely breaking it.
2025-11-13 20:50:57 -05:00
Hannes Rudolph
aaab2bf4d4
refactor(task): switch to <feedback> wrapper to prevent focus drift after context-management event (condense/truncate) (#9237)
* refactor(task): wrap initial user message in <feedback> instead of <task> to prevent focus drift after context-management

Rationale: After a successful context-management event, framing the next user block as feedback reduces model focus drift. Mentions parsing already supports <feedback>, and tool flows (attemptCompletion, responses) are aligned. No change to loop/persistence.

* refactor(mentions): drop <task> parsing; standardize on <feedback>; update tests
2025-11-13 20:02:57 -05:00
Daniel
5069ce92a0
fix: change tool_choice from required to auto for native protocol (#9242) 2025-11-13 15:16:15 -05:00
Daniel
237c324fcd
fix: resolve 400 error with native tools on OpenRouter (#9238) 2025-11-13 15:10:38 -05:00
Matt Rubens
d270ea1983
Consistently use Package.name for better support of the nightly app (#9240) 2025-11-13 15:07:14 -05:00
Daniel
5e6e601b0a
Add native tool call support (#9159)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-11-13 12:48:35 -05:00
github-actions[bot]
2b26cf3011
Changeset version bump (#9233)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-11-13 09:51:25 -05:00
Hannes Rudolph
7730c6f862
OpenAI Native: gate encrypted_content include; remove gpt-5-chat-latest verbosity flag (fixes #9225) (#9231)
openai-native: include reasoning.encrypted_content only when reasoningEffort is set; prevent Responses API error on non-reasoning models. types: remove supportsVerbosity from gpt-5-chat-latest to avoid invalid verbosity error. Fixes #9225
2025-11-13 09:29:31 -05:00
Hannes Rudolph
4e6cdad052
Fix: Roo Anthropic input token normalization (avoid double-count) (#9224) 2025-11-13 01:46:11 -05:00
Hannes Rudolph
bb6cac4980
rename: sliding-window -> context-management; truncateConversationIfNeeded -> manageContext (#9206) 2025-11-12 22:16:25 -05:00
github-actions[bot]
bbad2dcfdb
Changeset version bump (#9217)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-11-12 22:09:53 -05:00
Hannes Rudolph
0fdbd392e8
Migrate conversation continuity to plugin-side encrypted reasoning items (Responses API) (#9203)
* Migrate conversation continuity to plugin-side encrypted reasoning items (Responses API)

Summary
We moved continuity off OpenAI servers and now maintain conversation state locally by persisting and replaying encrypted reasoning items. Requests are stateless (store=false) while retaining the performance/caching benefits of the Responses API.

Why
This aligns with how Roo manages context and simplifies our Responses API implementation while keeping all the benefits of continuity, caching, and latency improvements.

What changed
- All OpenAI models now use the Responses API; system instructions are passed via the top-level instructions field; requests include store=false and include=["reasoning.encrypted_content"].
- We persist encrypted reasoning items (type: "reasoning", encrypted_content, optional id) into API history and replay them on subsequent turns.
- Reasoning summaries default to summary: "auto" when supported; text.verbosity only when supported.
- Atomic persistence via safeWriteJson.

Removed
- previous_response_id flows, suppressPreviousResponseId/skipPrevResponseIdOnce, persistGpt5Metadata(), and GPT‑5 response ID metadata in UI messages.

Kept
- taskId and mode metadata for cross-provider features.

Result
- ZDR-friendly, stateless continuity with equal or better performance and a simpler codepath.

* fix(webview): remove unused metadata prop from ReasoningBlock render

* Responses API: retain response id for troubleshooting (not continuity)

Continuity is stateless via encrypted reasoning items that we persist and replay. We now capture the top-level response id in OpenAiNativeHandler and persist the assistant message id into api_conversation_history.json solely for debugging/correlation with provider logs; it is not used for continuity or control flow.

Also: silence request-body debug logging to avoid leaking prompts.

* remove DEPRECATED tests

* chore: remove unused Task types file to satisfy knip CI

* fix(task): properly type cleanConversationHistory and createMessage args in Task to address Dan's review
2025-11-12 19:50:24 -05:00
Hannes Rudolph
8902facf49
fix: Apply updated API profile settings when provider/model unchanged (#9208) (#9210)
fix: apply updated API profile settings when provider/model unchanged (#9208)
2025-11-12 19:45:51 -05:00
Chris Estreich
62d8cc0d66
Batch settings updates from the webview to the extension host (#9165)
Co-authored-by: Roo Code <roomote@roocode.com>
2025-11-12 12:29:06 -08:00
Daniel
7323bba658
fix: include mcpServers in getState() for auto-approval (#9199) 2025-11-12 13:03:54 -05:00
github-actions[bot]
69d4efc335
Changeset version bump (#9154)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-11-11 20:32:50 -05:00
Hannes Rudolph
2c917243d1
fix: Model switch re-applies selected profile (sync task.apiConfiguration) (#9179) (#9181) 2025-11-11 20:11:16 -05:00
Chris Estreich
6e6341346e
Move auto-approval from ChatView to Task (#9157) 2025-11-10 17:01:50 -08:00
Daniel
cb9abcf955
Add native tool definitions (#9156) 2025-11-10 17:31:05 -05:00
Daniel
e8ac3bf359
Gate XML out when native tool protocol is ON (#9107) 2025-11-10 14:59:15 -05:00
Daniel
4cd5c9022e
fix: prevent command_output ask from blocking in cloud/headless environments (#9152) 2025-11-10 11:47:26 -05:00
Matt Rubens
b09d0a7640
IPC command for sending messages to the current task (#9149) 2025-11-10 11:44:04 -05:00
github-actions[bot]
e98f4b9057
Changeset version bump (#9112)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-11-07 23:30:28 -05:00
Daniel
78fc2126d3
fix: prevent context condensing on settings save when provider/model unchanged (#9108)
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-11-07 22:58:02 -05:00
Daniel
fc2147ab4f
fix: prevent crash when streaming chunks have null choices array (#9105) 2025-11-07 13:18:38 -05:00
Daniel
247b06186f
feat: Add comprehensive error logging to Roo Cloud provider (#9098)
feat: add comprehensive error logging to Roo Cloud provider

- Add detailed error logging in handleOpenAIError() to capture error details before transformation
- Enhanced getRooModels() to log HTTP response details on failed requests
- Added error context logging to RooHandler streaming and model loading
- All existing tests passing (48 total)
2025-11-07 08:53:10 -08:00
roomote[bot]
2abdad6d55
fix: respect custom OpenRouter URL for all API operations (#8951)
Co-authored-by: Roo Code <roomote@roocode.com>
2025-11-07 10:35:12 -05:00
github-actions[bot]
47415fa19a
Changeset version bump (#9094)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-11-06 23:18:40 -05:00
Daniel
b17760bf57
feat: auto-switch to imported mode with architect fallback (#9003)
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Seth Miller <sethmillerp@gmail.com>
Co-authored-by: heyseth <sethmillerp@gmail.com>
Co-authored-by: Roo Code <roomote@roocode.com>
2025-11-06 16:40:27 -05:00
roomote[bot]
1ba0150f7a
fix: use system role for OpenAI Compatible provider when streaming is disabled (#8216)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2025-11-06 16:39:20 -05:00
Hannes Rudolph
0fd7023ea7
feat(chat): Improve diff appearance in main chat view (#8932)
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2025-11-06 16:18:01 -05:00
Daniel
d631aa643c
fix(task): auto-retry on empty assistant response (#9076) (#9083) 2025-11-06 16:15:31 -05:00
roomote[bot]
bf048492fb
feat: add MiniMax-M2-Stable model and enable prompt caching (#9072)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-11-06 12:34:53 -08:00
github-actions[bot]
7320d79c08
Changeset version bump (#9066)
* changeset version bump

* Revise CHANGELOG for version 3.30.2

Updated changelog for version 3.30.2 with new features and fixes.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-11-05 23:12:44 -05:00
Hannes Rudolph
65230f1f5c
feat: Global Inference for Bedrock models (#8750) (#8940)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <roomote@roocode.com>
2025-11-05 15:56:19 -05:00
roomote[bot]
413ab1a95c
feat: add Qwen3 embedding models (0.6B and 4B) to OpenRouter support (#9060)
Co-authored-by: Roo Code <roomote@roocode.com>
2025-11-05 15:35:25 -05:00
AJ Juaire
c6a02bb8da
Fix Bedrock user agent to report full SDK details (#9043) 2025-11-05 14:08:58 -05:00
Seth Miller
097bc699ba
fix(checkpoints): resolve incorrect commit location when GIT_DIR set in Dev Containers (#8811) 2025-11-04 22:10:07 -05:00
Hannes Rudolph
ea339738e5
Set Claude Sonnet 4.5 as default for key providers (#8922) 2025-11-04 22:07:24 -05:00
Daniel
e25b4e62d1
fix: eliminate UI flicker during task cancellation (#9037)
* fix: eliminate UI flicker during task cancellation

- Modify ClineProvider.createTaskWithHistoryItem() to detect when rehydrating current task
- Implement in-place task replacement to avoid empty stack state that causes UI flicker
- Add comprehensive unit tests for flicker-free cancel behavior
- Maintain backward compatibility and proper event listener cleanup

Fixes the jarring navigation to home view when cancelling tasks

* fix: ensure proper garbage collection of old task during flicker-free rehydration

- Call abortTask(true) on old task before replacement to stop processes and mark as abandoned
- This ensures proper cleanup and prevents memory leaks during task cancellation
- Add test verification for abortTask cleanup
2025-11-04 21:40:39 -05:00
github-actions[bot]
54745fc234
Changeset version bump (#9034)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-11-04 15:39:04 -05:00
Matt Rubens
77971a5e8f
Revert "fix: prevent UI flicker and enable resumption after task cancellation" (#9032) 2025-11-04 15:29:14 -05:00
Daniel
f717863a32
fix: correct OpenRouter Mistral model dimension from 3072 to 1536 (#9028) 2025-11-04 12:29:04 -05:00
github-actions[bot]
8e4b145681
Changeset version bump (#9005)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <cestreich@gmail.com>
2025-11-03 16:27:21 -08:00
Matt Rubens
65bb672d23
chore: add changeset for v3.30.0 (#9006) 2025-11-03 16:09:23 -08:00
Daniel
58edc71672
fix: prevent UI flicker and enable resumption after task cancellation (#8986) 2025-11-03 15:40:39 -05:00
Daniel
ce88b0272a
feat: add preserveReasoning flag to include reasoning in API history (#8934) 2025-11-03 10:38:39 -05:00
Hannes Rudolph
f7856ef5cc
Terminal settings: Cleanup terminal settings tab and change default terminal to inline (#8342)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-03 10:38:09 -05:00