Commit graph

6827 commits

Author SHA1 Message Date
Matt Rubens
c30952fb8a
Update CHANGELOG for version 3.47.1
Updated changelog for version 3.47.1 with fixes and cleanup.
2026-02-05 18:01:25 -08:00
Matt Rubens
2d59f0bc05
Update CHANGELOG for version 3.47.2
Updated version number and added patch changes for 3.47.2.
2026-02-05 18:01:11 -08:00
github-actions[bot]
02b40e805a changeset version bump 2026-02-06 01:57:28 +00:00
Matt Rubens
dfb4e39306
Release v3.47.2 (#11239)
chore: add changeset for v3.47.2
2026-02-05 17:56:28 -08:00
Hannes Rudolph
87f6d908c6
fix: capture and round-trip thinking signature for Bedrock Claude (#11238)
* fix: capture and round-trip thinking signature for Bedrock Claude models

Bedrock handler streams reasoning text from Claude's extended thinking but
never captures the cryptographic signature. This causes 400 errors on
multi-turn conversations with tool use: 'Expected thinking or
redacted_thinking, but found tool_use'.

Changes:
- bedrock.ts: Capture reasoningContent.signature from Converse API stream
  deltas, implement getThoughtSignature() so Task.ts stores it as a proper
  thinking content block
- bedrock-converse-format.ts: Convert thinking blocks to Bedrock's
  reasoningContent format with signature, skip reasoning/redacted_thinking/
  thoughtSignature blocks that aren't valid for the API

* fix: add redacted_thinking round-trip, fix interface types, add tests

Address PR review feedback:
- Update ContentBlockDeltaEvent interface to include signature and
  redactedContent fields (removes type assertions)
- Add 6 tests for thinking/reasoning block conversions in
  bedrock-converse-format.ts

Also add redacted_thinking round-trip support:
- bedrock.ts: Capture redactedContent from stream deltas, base64 encode,
  expose via getRedactedThinkingBlocks()
- Task.ts: Insert redacted_thinking blocks after thinking block in
  assistant messages
- bedrock-converse-format.ts: Convert redacted_thinking blocks back to
  reasoningContent.redactedContent (base64 → Uint8Array)
2026-02-05 17:53:00 -08:00
Hannes Rudolph
6a32b2e6fe
fix: restore Gemini thought signature round-tripping after AI SDK migration (#11237)
PR #11180 migrated Gemini/Vertex providers to the AI SDK and deleted
gemini-format.ts which contained the working thought signature round-trip
logic (originally added in PR #10590). This broke all Gemini 3 tool use
with a 400 error: 'Function call is missing a thought_signature'.

Changes:
- Gemini/Vertex handlers: capture thoughtSignature from providerMetadata
  on tool-call stream events, expose via getThoughtSignature()
- convertToAiSdkMessages(): extract thoughtSignature content blocks from
  history, attach as providerOptions on first tool-call part (per Gemini 3
  parallel call rules)
- Add 3 tests verifying thought signature round-trip behavior
2026-02-05 18:17:13 -07:00
roomote[bot]
a266834ee2
feat: add support for .agents/skills directory (#11181)
* feat: add support for .agents/skills directory

This change adds support for discovering skills from the .agents/skills
directory, following the Agent Skills convention for sharing skills
across different AI coding tools.

Priority order (later entries override earlier ones):
1. Global ~/.agents/skills (shared across AI coding tools, lowest priority)
2. Project .agents/skills
3. Global ~/.roo/skills (Roo-specific)
4. Project .roo/skills (highest priority)

Changes:
- Add getGlobalAgentsDirectory() and getProjectAgentsDirectoryForCwd()
  functions to roo-config
- Update SkillsManager.getSkillsDirectories() to include .agents/skills
- Update SkillsManager.setupFileWatchers() to watch .agents/skills
- Add tests for new functionality

* fix: clarify skill priority comment to match actual behavior

* fix: clarify skill priority comment to explain Map.set replacement mechanism

---------

Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-05 16:40:06 -08:00
github-actions[bot]
590fef711c
Changeset version bump (#11236)
* changeset version bump

* Update CHANGELOG for version 3.47.1

Updated changelog for version 3.47.1 with patch changes.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: John Richmond <5629+jr@users.noreply.github.com>
2026-02-05 16:17:47 -08:00
John Richmond
08f3b5ac17
Release v3.47.1 (#11234)
chore: add changeset for v3.47.1
2026-02-05 15:47:26 -08:00
Hannes Rudolph
23d34154d0
fix: guard against empty-string baseURL in provider constructors (#11233)
When the 'custom base URL' checkbox is unchecked in the UI, the setting
is set to '' (empty string). Providers that passed this directly to their
SDK constructors caused 'Failed to parse URL' errors because the SDK
treated '' as a valid but broken base URL override.

- gemini.ts: use || undefined (was passing raw option)
- openai-native.ts: use || undefined (was passing raw option)
- openai.ts: change ?? to || for fallback default
- deepseek.ts: change ?? to || for fallback default
- moonshot.ts: change ?? to || for fallback default

Adds test coverage for Gemini and OpenAI Native constructors verifying
empty-string baseURL is coerced to undefined.
2026-02-05 15:30:59 -08:00
roomote[bot]
8c6d1ef15d
fix: correct Bedrock model ID for Claude Opus 4.6 (#11232)
Remove the :0 suffix from the Claude Opus 4.6 model ID to match
the correct AWS Bedrock model identifier.

The model ID was "anthropic.claude-opus-4-6-v1:0" but should be
"anthropic.claude-opus-4-6-v1" per AWS Bedrock documentation.

Fixes #11231

Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-05 15:08:31 -08:00
Hannes Rudolph
2d5e633781
chore: remove unused stripAppendedEnvironmentDetails and helpers (#11226)
Remove three functions from appendEnvironmentDetails.ts that were
defined and tested but never imported or called in production code:

- stripAppendedEnvironmentDetails (exported, 0 call sites)
- stripEnvDetailsFromText (private helper)
- stripEnvDetailsFromToolResult (private helper)

Also removes the corresponding describe block (7 tests) from the
spec file. The remaining 19 tests pass.
2026-02-05 13:18:11 -08:00
Matt Rubens
5c5686d98b
Update CHANGELOG for Claude Opus 4.6 support
Updated the changelog to reflect additional contributors for Claude Opus 4.6 support.
2026-02-05 12:55:59 -08:00
github-actions[bot]
c23e2717a4
Changeset version bump (#11229)
* changeset version bump

* Update CHANGELOG for version 3.47.0 release

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-02-05 12:54:40 -08:00
Matt Rubens
846d66880a
Release v3.47.0 (#11227)
chore: add changeset for v3.47.0
2026-02-05 12:50:52 -08:00
Hannes Rudolph
b0dc6ae918
refactor(task): append environment details into existing blocks (#11198)
* refactor(task): append environment details into existing blocks

Add appendEnvironmentDetails() helper that merges environment details
into the last text block or tool_result instead of adding a standalone
trailing text block.

This avoids message shapes that can break interleaved-thinking models
like DeepSeek reasoner, which expect specific message structures.

Changes:
- Add appendEnvironmentDetails() and removeEnvironmentDetailsBlocks() helpers
- Update Task.resumeAfterDelegation() to use the helper
- Update Task.recursivelyMakeClineRequests() to use the helper
- Add comprehensive unit tests (26 test cases)

* fix: use named import for Anthropic SDK to match codebase convention
2026-02-05 12:33:00 -08:00
roomote[bot]
d5b7fdcfa7
feat: add gpt-5.3-codex model to OpenAI Codex provider (#11225)
feat: add gpt-5.3-codex model and make it default for OpenAI Codex provider

Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-05 12:28:45 -08:00
roomote[bot]
f73b103b87
chore: remove dead toolFormat code from getEnvironmentDetails (#11207)
Remove the toolFormat constant and <tool_format> line from environment
details output. Native tool calling is now the only supported protocol,
making this code unnecessary.

Fixes #11206

Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-05 12:28:34 -08:00
Hannes Rudolph
47bba1c2f7
feat: add Claude Opus 4.6 support across all providers (#11224)
* feat: add Claude Opus 4.6 support across all providers

Add Claude Opus 4.6 (claude-opus-4-6) model definitions and 1M context
support across Anthropic, Bedrock, Vertex AI, OpenRouter, and Vercel AI
Gateway providers.

- Anthropic: 128K max output, /5 pricing, 1M context tiers
- Bedrock: anthropic.claude-opus-4-6-v1:0 with 1M context + global inference
- Vertex: claude-opus-4-6 with 1M context tiers
- OpenRouter: prompt caching + reasoning budget sets
- Vercel AI Gateway: Opus 4.5 and 4.6 added to capability sets
- UI: 1M context checkbox for Opus 4.6 on all providers
- i18n: Updated 1M context descriptions across 18 locales

Also adds Opus 4.5 to Vercel AI Gateway (previously missing) and
OpenRouter maxTokens overrides for Opus 4.5/4.6.

Closes #11223

* fix: apply tier pricing when 1M context is enabled on Bedrock

When awsBedrock1MContext is enabled for tiered models like Opus 4.6,
also apply the 1M tier pricing (inputPrice, outputPrice, cache prices)
instead of only updating contextWindow. This ensures cost calculations
and UI display use the correct >200K rates.
2026-02-05 13:18:40 -07:00
Hannes Rudolph
1b75d59a68
fix(ai-sdk): preserve reasoning parts in message conversion (#11217)
* fix(ai-sdk): preserve reasoning parts in message conversion

* fix(ai-sdk): convert message-level reasoning_content to reasoning part

* fix(task): remove invalid openai-compatible from reasoning allowlist

* feat: add isAiSdkProvider() method for dynamic AI SDK provider detection

- Add isAiSdkProvider() method to ApiHandler interface
- Default implementation in BaseProvider returns false
- Override to return true in 11 AI SDK providers:
  deepseek, fireworks, mistral, groq, xai, cerebras,
  sambanova, huggingface, gemini, vertex, openai-compatible
- Update Task.ts to use dynamic detection instead of hardcoded Set
- Add method to FakeAIHandler and update test mocks

* fix: handle reasoning parts in flattenAiSdkMessagesToStringContent

- Strip reasoning parts when flattening messages for string-only models
- Allow flattening when message contains only text and reasoning parts
- Add tests for reasoning part handling in string-only model contexts

This addresses the review feedback about ensuring flattenAiSdkMessagesToStringContent
works correctly when reasoning parts are present (e.g., SambaNova DeepSeek).

---------

Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2026-02-05 10:48:21 -07:00
Matt Rubens
934f34ea87
Revert "fix(ai-sdk): preserve reasoning parts in message conversion" (#11216)
Revert "fix(ai-sdk): preserve reasoning parts in message conversion (#11196)"

This reverts commit 227b9796d3.
2026-02-05 07:40:36 -08:00
Hannes Rudolph
227b9796d3
fix(ai-sdk): preserve reasoning parts in message conversion (#11196)
* fix(ai-sdk): preserve reasoning parts in message conversion

* fix(ai-sdk): convert message-level reasoning_content to reasoning part

* fix(task): remove invalid openai-compatible from reasoning allowlist
2026-02-04 22:00:11 -08:00
Chris Estreich
aa49871a5d
fix(cli): resolve race condition causing provider switch during mode changes (#11205)
When using slash commands with `mode:` frontmatter (e.g., `/cli-release`
with `mode: code`), the CLI would fail with "Could not resolve
authentication method" from the Anthropic SDK, even when using a
non-Anthropic provider like `--provider roo`.

Root cause: In `markWebviewReady()`, the `webviewDidLaunch` message was
sent before `updateSettings`, creating a race condition. The
`webviewDidLaunch` handler's "first-time init" sync would read
`getState()` before CLI-provided settings were applied to the context
proxy. Since `getState()` defaults `apiProvider` to "anthropic" when
unset, this default was saved to the provider profile. When a slash
command triggered `handleModeSwitch()`, it found this corrupted profile
with `apiProvider: "anthropic"` (but no API key) and activated it,
overwriting the CLI's working roo provider configuration.

Fix:
1. Reorder `markWebviewReady()` to send `updateSettings` before
   `webviewDidLaunch`, ensuring the context proxy has CLI-provided
   values when the initialization handler runs.
2. Guard the first-time init sync with `checkExistKey(apiConfiguration)`
   to prevent saving a profile with only the default "anthropic"
   fallback and no actual API keys configured.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 18:26:41 -08:00
Chris Estreich
6214f4c162
Roo Code CLI v0.0.50 (#11204)
* Roo Code CLI v0.0.50

* docs(cli): add --exit-on-error to changelog

---------

Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-04 18:14:15 -08:00
Hannes Rudolph
dcba685097
refactor(docs-extractor): simplify mode to focus on raw fact extraction (#11129) 2026-02-04 17:14:31 -08:00
Daniel
afe51e0fe8
feat: migrate Gemini and Vertex providers to AI SDK (#11180)
* feat: migrate Gemini and Vertex providers to AI SDK

- Migrate GeminiHandler from @google/genai to @ai-sdk/google
- Create standalone VertexHandler using @ai-sdk/google-vertex
- Use shared AI SDK utilities (streamText, generateText, convertToAiSdkMessages)
- Support thinkingConfig via providerOptions.google.thinkingConfig
- Support Google Search and URL Context grounding tools
- Preserve cost calculation with tiered pricing
- Remove gemini-format.ts (AI SDK handles message conversion)

EXT-643

* fix: remove unused import and implement allowedFunctionNames tool filtering

- Remove unused handleAiSdkError import from gemini.ts
- Implement tool filtering based on allowedFunctionNames in both
  GeminiHandler and VertexHandler createMessage methods
- Filter tools before converting to AI SDK format to restrict
  model access to only allowed functions
2026-02-04 17:31:48 -07:00
Chris Estreich
6e56619417
feat(cli): improve dev experience and roo provider API key support (#11203)
- Allow --api-key and ROO_API_KEY env var for the roo provider instead of
  requiring cloud auth token
- Switch dev/start scripts to use tsx for running directly from source
  without building first
- Fix path resolution (version.ts, extension.ts, extension-host.ts) to
  work from both source and bundled locations
- Disable debug log file (~/.roo/cli-debug.log) unless --debug is passed
- Update README with complete env var table and dev workflow docs

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 16:17:29 -08:00
roomote[bot]
1da2b1c457
feat: add support for AGENTS.local.md personal override files (#11183)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2026-02-04 12:53:13 -08:00
Daniel
7f6272afb9
feat: add Kimi K2.5 model to Fireworks provider (#11177) 2026-02-03 14:15:31 -05:00
Bruno Bergher
54ea34e2c1
ux: improve Skills and Slash Commands settings UI with multi-mode support (#11157)
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-03 12:11:58 -05:00
roomote[bot]
460cff4c3b
feat: migrate HuggingFace provider to AI SDK (#11156)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2026-02-03 11:59:26 -05:00
github-actions[bot]
658034323b
Changeset version bump (#11176)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-02-03 11:57:43 -05:00
Matt Rubens
957600ab8c
chore: add changeset for v3.46.2 (#11175) 2026-02-03 11:46:34 -05:00
Chris Estreich
4647d0f3c5
fix(cli): correct example in install script (#11170)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 23:04:41 -08:00
Chris Estreich
1c7ccb7b3d
Drop MacOS-13 cli support (#11169) 2026-02-02 22:33:56 -08:00
Chris Estreich
304b1c213c
fix: replace heredocs with echo statements in cli-release workflow (#11168)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 22:02:57 -08:00
Chris Estreich
4592133624
Add cli support for linux (#11167) 2026-02-02 21:00:52 -08:00
roomote[bot]
e90e6178e3
feat: migrate xAI provider to use dedicated @ai-sdk/xai package (#11158)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2026-02-02 23:56:07 -05:00
roomote[bot]
67fb150727
feat: use custom Base URL for OpenRouter model list fetch (#11154)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-02 23:03:47 -05:00
roomote[bot]
c5874fc764
feat: migrate SambaNova provider to AI SDK (#11153)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2026-02-02 23:02:32 -05:00
Daniel
b4b8cef859
fix: transform tool blocks to text before condensing (EXT-624) (#10975) 2026-02-02 22:31:09 -05:00
roomote[bot]
1e790b0d39
fix(code-index): remove deprecated text-embedding-004 and migrate to gemini-embedding-001 (#11038)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
2026-02-02 22:30:07 -05:00
Chris Estreich
cfb6041648
chore: bump version to v1.107.0 (#11164) 2026-02-02 11:16:27 -08:00
Chris Estreich
e5fa5e8e46
IPC fixes for task cancellation and queued messages (#11162) 2026-02-02 11:13:56 -08:00
Daniel
b020f6be43
feat(api): migrate Mistral provider to AI SDK (#11089)
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
Co-authored-by: Roo Code <roomote@roocode.com>
2026-02-02 10:45:51 -05:00
Matt Rubens
ede1d29299
fix: queue messages during command execution instead of losing them (#11140) 2026-01-31 12:47:28 -05:00
roomote[bot]
8cf82cd3a9
chore: remove Feature Request from issue template options (#11141)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-31 11:30:54 -05:00
roomote[bot]
e46fae7ad7
fix: add image content support to MCP tool responses (#10874)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-31 07:22:59 -05:00
github-actions[bot]
f97a5c2212
Changeset version bump (#11136)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-31 00:37:38 -05:00
Matt Rubens
db0bcbec89
chore: add changeset for v3.46.1 (#11135) 2026-01-31 00:33:09 -05:00