Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1187 commits
Select commit Hold shift + click to select a range
d2d311e
fix: race condition in new_task tool for native protocol (#9655)
daniel-lxs Nov 27, 2025
b8f2da1
chore: add changeset for v3.34.8 (#9657)
mrubens Nov 27, 2025
b149e69
Changeset version bump (#9658)
github-actions[bot] Nov 27, 2025
5a6dd58
feat: add model-specific tool customization via excludedTools and inc…
daniel-lxs Nov 27, 2025
3f0a697
feat(web-evals): add task log viewing, export failed logs, and new ru…
hannesrudolph Nov 28, 2025
9b5f639
Metadata‑driven subtasks (no UI changes): automatic parent resume and…
hannesrudolph Nov 28, 2025
e682c03
feat: add search_and_replace tool for batch text replacements (#9549)
hannesrudolph Nov 28, 2025
af4921b
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Nov 28, 2025
b111d12
feat: enable native tool support for DeepSeek and Doubao models (#9671)
daniel-lxs Nov 28, 2025
bd2c501
feat: add native tool support to Requesty provider (#9672)
daniel-lxs Nov 28, 2025
53d1f43
Include tool format in environment details (#9661)
mrubens Nov 28, 2025
5d02099
feat(groq): enable native tool support for models that support functi…
daniel-lxs Nov 28, 2025
59ee1c9
feat: add native tools support for OpenAI-compatible providers (#9676)
daniel-lxs Nov 28, 2025
127ecf6
feat: enable native tool calls for Vertex Gemini models (#9678)
daniel-lxs Nov 28, 2025
c688a64
fix: display install count in millions instead of thousands (#9677)
roomote[bot] Nov 29, 2025
9335348
feat: add apply_patch native tool (#9663)
hannesrudolph Nov 29, 2025
f9eb6d9
feat: add debug buttons to view API and UI history (#9684)
hannesrudolph Nov 29, 2025
503d55c
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Nov 29, 2025
e4af301
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Nov 29, 2025
98850c7
test(workflow): update test expectations after removing run_test func…
mini2s Nov 29, 2025
c0c28f0
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Nov 29, 2025
d2017c8
Add web-evals updates and kill run functionality (#9681)
hannesrudolph Nov 29, 2025
ae29777
Add Grok 4 Fast and Grok 4.1 Fast, plus xAI native tool calling (#9690)
mrubens Nov 30, 2025
4591e96
Add native tool calling for deepinfra (#9691)
mrubens Nov 30, 2025
8787da7
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Nov 30, 2025
e51592e
fix(chat): correct message visibility condition filter
mini2s Nov 30, 2025
583b9d7
fix(utils): wrap os-name call in safe fallback for zgsm OS detection
mini2s Nov 30, 2025
1e7305b
refactor(core): clean up unused imports and improve file handling logic
mini2s Nov 30, 2025
26003c8
refactor: adjust file limits and multipliers
mini2s Nov 30, 2025
99da2bc
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Nov 30, 2025
f26d5a4
ux: Improvements to the new, RCC Provider centric onboarding flow (#9…
brunobergher Dec 1, 2025
49aad85
ux: Toolbar cleanup and settings consolidation (#9710)
brunobergher Dec 1, 2025
0eea7c7
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 1, 2025
7590305
Update a couple provider labels (#9711)
mrubens Dec 1, 2025
48d3e4d
Release: v1.88.0 (#9713)
mrubens Dec 1, 2025
af74709
Remove TabContent wrapper from Modes and MCP (#9712)
mrubens Dec 1, 2025
bf3e4d8
fix: preserve tool_use blocks in summary for parallel tool calls (#9714)
SilentFlower Dec 1, 2025
34c524f
feat(chutes): detect native tool support from API supported_features …
daniel-lxs Dec 1, 2025
0a2d1a4
Add NTC support for Cerebras (#9692)
mrubens Dec 1, 2025
eb12054
Add native tools support to Unbound (#9699)
mrubens Dec 1, 2025
b5acebc
Add native tool support for vercel ai gateway (#9697)
mrubens Dec 1, 2025
8244f70
Default grok code fast to native tools (#9717)
mrubens Dec 1, 2025
faa6c40
Bedrock native tool calling (#9698)
mrubens Dec 1, 2025
be76594
Support tool calling in native ollama provider (#9696)
mrubens Dec 1, 2025
ad28e12
feat: add native tool support for LiteLLM provider (#9719)
daniel-lxs Dec 1, 2025
9dac7e7
fix: prevent navigation buttons from wrapping on smaller screens (#9721)
roomote[bot] Dec 1, 2025
bfb3386
chore: add changeset for v3.35.0 (#9724)
mrubens Dec 1, 2025
35d4634
Changeset version bump (#9725)
github-actions[bot] Dec 1, 2025
9b18014
chore: bump version to v1.89.0 (#9718)
cte Dec 1, 2025
edd7cc0
fix: flush pending tool results before task delegation (#9726)
daniel-lxs Dec 1, 2025
3f4f7c0
Better IPC error logging (#9727)
cte Dec 1, 2025
e7043e5
chore: add changeset for v3.35.1 (#9728)
mrubens Dec 1, 2025
ba7340f
Changeset version bump (#9729)
github-actions[bot] Dec 1, 2025
b2b4f64
Pass app version to provider (#9730)
cte Dec 2, 2025
fc28863
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 2, 2025
d2b274a
Allow models to contain default temperature (#9734)
mrubens Dec 2, 2025
700fe42
Look for a tag in the Roo provider to default the model to native too…
mrubens Dec 2, 2025
6f0addf
Assume all LiteLLM models support native tools (#9736)
mrubens Dec 2, 2025
954a6cb
chore: add changeset for v3.35.2 (#9737)
mrubens Dec 2, 2025
906c6f0
Changeset version bump (#9738)
github-actions[bot] Dec 2, 2025
ee076bd
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 2, 2025
a962666
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 2, 2025
9737e4e
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 2, 2025
34faa7e
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 2, 2025
152af14
Switch to new welcome view (#9741)
mrubens Dec 2, 2025
9975a41
web: Homepage changes (#9675)
brunobergher Dec 2, 2025
aa507ad
Add vendor confidentiality section to the system prompt for stealth m…
mrubens Dec 2, 2025
562a799
chore: add changeset for v3.35.3 (#9743)
mrubens Dec 2, 2025
c91a19f
Changeset version bump (#9745)
github-actions[bot] Dec 2, 2025
be69ef9
Refactor: Remove line_count parameter from write_to_file tool (#9667)
hannesrudolph Dec 2, 2025
9a1d7a6
fix: remove reasoning toggles for GLM-4.5 and GLM-4.6 on z.ai provide…
roomote[bot] Dec 2, 2025
adb9dfc
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 2, 2025
a680aa9
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 2, 2025
aa40988
fix: handle malformed native tool calls to prevent hanging (#9758)
daniel-lxs Dec 3, 2025
fbc0f80
chore: add changeset for v3.35.4 (#9763)
mrubens Dec 3, 2025
74d1ed7
Changeset version bump (#9764)
github-actions[bot] Dec 3, 2025
5c893d0
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 3, 2025
5b94eec
Convert the Roo provider tools for OpenAI (#9769)
mrubens Dec 3, 2025
648e009
Update the evals keygen command (#9754)
cte Dec 3, 2025
873a763
feat: Add provider routing selection for OpenRouter embeddings (#9144…
SannidhyaSah Dec 3, 2025
ab75f63
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 3, 2025
1894b69
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 3, 2025
18117f0
ux: Updates to CloudView (#9776)
roomote[bot] Dec 3, 2025
822343c
Update model key for minimax in MODEL_DEFAULTS (#9778)
mrubens Dec 3, 2025
40a8e0c
Release v3.35.5 (#9781)
mrubens Dec 3, 2025
48dc4d9
Changeset version bump (#9783)
github-actions[bot] Dec 3, 2025
a4f4f35
Use search_and_replace for minimax (#9780)
mrubens Dec 3, 2025
23605be
fix: restore context when rewinding after condense (#8295) (#9665)
hannesrudolph Dec 3, 2025
d9525aa
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 3, 2025
86edc01
fix: remove omission detection logic to fix false positives (#9787)
roomote[bot] Dec 3, 2025
1879200
Fix Vercel AI Gateway model fetching (#9791)
cte Dec 3, 2025
ce22901
refactor: remove insert_content tool (#9751)
daniel-lxs Dec 3, 2025
ec551b1
feat: add reasoning_details support to Roo provider (#9796)
roomote[bot] Dec 3, 2025
837ce3f
chore: hide parallel tool calls experiment and disable feature (#9798)
hannesrudolph Dec 4, 2025
72a6805
Update next.js (#9799)
jr Dec 4, 2025
5404013
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 4, 2025
d065b88
Fix the download count on the homepage (#9807)
mrubens Dec 4, 2025
b1d43f0
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 4, 2025
573cfc3
Default to native tools for all models in the Roo provider (#9811)
mrubens Dec 4, 2025
94c997c
Fix/cerebras conservative max tokens (#9804)
sebastiand-cerebras Dec 4, 2025
a698875
Release v3.36.0 (#9814)
mrubens Dec 4, 2025
7df268c
Changeset version bump (#9828)
github-actions[bot] Dec 4, 2025
7ea65e6
Merge branch 'main' of https://github.com/zgsm-ai/costrict into roo-t…
mini2s Dec 4, 2025
6b5e184
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 4, 2025
0eddc97
ux: improved error messages and documentation links (#9777)
brunobergher Dec 4, 2025
0ed5f3c
web: New Pricing Page (#9821)
brunobergher Dec 4, 2025
3178113
Ignore input to the execa terminal process (#9827)
mrubens Dec 4, 2025
29385e0
fix: Overly round follow-up question suggestions (#9829)
brunobergher Dec 4, 2025
ffff38b
Always enabled reasoning for models that require it (#9836)
cte Dec 4, 2025
61aabe7
ChatView: smoother stick-to-bottom during streaming (#8999)
hannesrudolph Dec 4, 2025
63f6fec
feat: add symlink support for slash commands in .roo/commands folder …
mrubens Dec 4, 2025
ae655c5
fix: sanitize reasoning_details IDs to remove invalid characters (#9839)
daniel-lxs Dec 4, 2025
8433eaf
feat(evals-ui): Add filtering, bulk delete, tool consolidation, and r…
hannesrudolph Dec 4, 2025
c719117
Be safer about large file reads (#9843)
jr Dec 4, 2025
1421c2c
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 4, 2025
b9e2fd1
Revert "fix: sanitize reasoning_details IDs to remove invalid charact…
mrubens Dec 5, 2025
003c276
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 5, 2025
581256d
Exclude the ID from Roo reasoning details (#9847)
mrubens Dec 5, 2025
a1d392f
fix: prevent cascading truncation loop by only truncating visible mes…
hannesrudolph Dec 5, 2025
630c8bc
FIX + feat: add MessageManager layer for centralized history coordina…
hannesrudolph Dec 5, 2025
c10d1d9
feat(web-evals): add multi-model launch and UI improvements (#9845)
hannesrudolph Dec 5, 2025
7b8162b
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 5, 2025
7945860
Revert "Exclude the ID from Roo reasoning details" (#9850)
mrubens Dec 5, 2025
9f111e1
fix: handle unknown/invalid native tool calls to prevent extension fr…
daniel-lxs Dec 5, 2025
bea7d81
feat: add gpt-5.1-codex-max model to OpenAI provider (#9848)
hannesrudolph Dec 5, 2025
3e3fa32
Delete .changeset/symlink-commands.md
mrubens Dec 5, 2025
39a549f
Release v3.36.1 (#9851)
mrubens Dec 5, 2025
247bf01
Changeset version bump (#9840)
github-actions[bot] Dec 5, 2025
2c7374b
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 5, 2025
7b37d00
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 5, 2025
a3de293
feat: add dynamic settings support for Roo models from API (#9852)
hannesrudolph Dec 5, 2025
e633c62
chore: restrict gpt-5 tool set to apply_patch (#9853)
hannesrudolph Dec 5, 2025
6bdefb8
Fix chutes model fetching (#9854)
cte Dec 5, 2025
1b151c0
Release v3.36.2 (#9855)
mrubens Dec 5, 2025
65c750d
Changeset version bump (#9856)
github-actions[bot] Dec 5, 2025
5c50160
Better error logs for parseToolCall exceptions (#9857)
cte Dec 5, 2025
1e1d6e8
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 5, 2025
00b1518
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 5, 2025
642a187
(update): Add DeepSeek V3-2 Support for Baseten Provider (#9861)
AlexKer Dec 5, 2025
d285d01
web: Product pages (#9865)
brunobergher Dec 5, 2025
9f4dcfc
fix: sanitize removed/invalid API providers to prevent infinite loop …
hannesrudolph Dec 5, 2025
9d5eca9
Update xAI models catalog (#9872)
hannesrudolph Dec 5, 2025
dd92453
refactor: decouple tools from system prompt (#9784)
daniel-lxs Dec 5, 2025
0227621
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 6, 2025
4a5cbcb
Stop making count_tokens requests (#9884)
mrubens Dec 6, 2025
cf3c70f
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 6, 2025
2eae321
Default to using native tools when supported on openrouter (#9878)
mrubens Dec 6, 2025
07e9966
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 6, 2025
946fd03
feat: change defaultToolProtocol default from xml to native (#9892)
roomote[bot] Dec 6, 2025
c486ecc
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 7, 2025
33bea50
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 7, 2025
8aa1346
Refactor: Unified context-management architecture with improved UX (#…
hannesrudolph Dec 7, 2025
1f7e1ee
Make eval runs deleteable (#9909)
mrubens Dec 8, 2025
7ca15c5
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 8, 2025
7a2976d
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 8, 2025
bea7626
fix: add Kimi, MiniMax, and Qwen model configurations for Bedrock (#9…
roomote[bot] Dec 8, 2025
1370cb0
fix: use foreground color for context-management icons (#9912)
hannesrudolph Dec 8, 2025
efbf427
feat: add xhigh reasoning effort for gpt-5.1-codex-max (#9900)
andrewginns Dec 8, 2025
fba8508
feat: add search_replace native tool for single-replacement operation…
hannesrudolph Dec 8, 2025
6f602fc
Improve cloud job error logging for RCC provider errors (#9924)
cte Dec 8, 2025
754b701
feat: configure tool preferences for xAI models (#9923)
hannesrudolph Dec 8, 2025
88a0bed
fix: process finish_reason to emit tool_call_end events (#9927)
daniel-lxs Dec 8, 2025
ee48b3a
fix: suppress 'ask promise was ignored' error in handleError (#9914)
daniel-lxs Dec 9, 2025
375c103
fix: exclude apply_diff from native tools when diffEnabled is false (…
roomote[bot] Dec 9, 2025
93a43e4
Try to make OpenAI errors more useful (#9639)
mrubens Dec 9, 2025
de00ab1
refactor: consolidate ThinkingBudget components and fix disable handl…
hannesrudolph Dec 9, 2025
3356267
Add timeout to OpenAI Compatible Provider Client (#9898)
dcbartlett Dec 9, 2025
2efebf5
fix: add finish_reason processing to xai.ts provider (#9929)
daniel-lxs Dec 9, 2025
5bde2e5
Remove defaultTemperature from Roo provider configuration (#9932)
mrubens Dec 9, 2025
54a5265
feat: forbid time estimates in architect mode (#9931)
roomote[bot] Dec 9, 2025
c103a4a
feat: streaming tool stats + token usage throttling (#9926)
hannesrudolph Dec 9, 2025
e2fd860
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 9, 2025
2764323
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 9, 2025
94c6430
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 9, 2025
8a98f14
feat: Make Architect save to `/plans` and gitignore it (#9944)
brunobergher Dec 9, 2025
ec7b289
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 9, 2025
fdcb309
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 9, 2025
e142906
feat: add announcement support CTA and social icons (#9945)
hannesrudolph Dec 9, 2025
f89a6be
fix: display actual API error message instead of generic text on retr…
hannesrudolph Dec 9, 2025
83787a7
feat(roo): add versioned settings support with minPluginVersion gatin…
hannesrudolph Dec 9, 2025
0068d1f
Revert "feat: change defaultToolProtocol default from xml to native" …
mrubens Dec 9, 2025
4608c97
fix: return undefined instead of 0 for disabled API timeout (#9960)
hannesrudolph Dec 9, 2025
1898848
feat(deepseek): update DeepSeek models to V3.2 with new pricing (#9962)
hannesrudolph Dec 9, 2025
721b02e
Add a way to save screenshots from the browser tool (#9963)
mrubens Dec 10, 2025
ada7411
Tweaks to baseten model definitions (#9866)
mrubens Dec 10, 2025
29d6f6d
fix: always show tool protocol selector for openai-compatible (#9966)
hannesrudolph Dec 10, 2025
24eb6ae
feat: add API error telemetry to OpenRouter provider (#9953)
daniel-lxs Dec 10, 2025
e3636b0
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 10, 2025
cab9f6b
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 10, 2025
f472a82
fix: validate and fix tool_result IDs before API requests (#9952)
daniel-lxs Dec 10, 2025
df5fdef
fix: respect explicit supportsReasoningEffort array values (#9970)
hannesrudolph Dec 10, 2025
c5c8f2a
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 10, 2025
970c6f0
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 10, 2025
0cf5b28
v3.36.3 (#9972)
cte Dec 10, 2025
295d834
fix(activate): unify webview panel identifier to use consistent tabPa…
mini2s Dec 10, 2025
68811ec
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 10, 2025
048e7f3
feat(gemini): add minimal and medium reasoning effort levels (#9973)
hannesrudolph Dec 10, 2025
03912d8
Delete changeset files (#9977)
cte Dec 10, 2025
36ef603
Add missing release notes for v3.36.3 (#9979)
cte Dec 10, 2025
714c3a7
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 10, 2025
fa8f7aa
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 10, 2025
ab18bf3
feat: add error details modal with on-demand display (#9985)
roomote[bot] Dec 10, 2025
e092e77
Fix: Correct TODO list display order in chat view (ROO-107) (#9991)
roomote[bot] Dec 10, 2025
5a4315f
fix: prevent premature rawChunkTracker clearing for MCP tools (#9993)
daniel-lxs Dec 10, 2025
fda020a
fix: filter out 429 rate limit errors from API error telemetry (#9987)
daniel-lxs Dec 10, 2025
2cd772c
Release v3.36.4 (#9994)
cte Dec 10, 2025
380a578
Changeset version bump (#9995)
github-actions[bot] Dec 10, 2025
1cf6ae6
feat(telemetry): add app version to exception captures and filter 402…
daniel-lxs Dec 10, 2025
f05dd59
Remove Glama provider (#9801)
hannesrudolph Dec 10, 2025
2a70a2e
@roo-code/types v1.90.0 (#9998)
cte Dec 10, 2025
483e70c
fix: apply versioned settings on nightly builds (#9997)
hannesrudolph Dec 10, 2025
0cbaed7
feat: add toggle for Enter key behavior in chat input (#10002)
hannesrudolph Dec 11, 2025
6a30d94
chore: remove list_code_definition_names tool (#10005)
hannesrudolph Dec 11, 2025
a1d3a43
Update roomotes.yml (#10008)
cte Dec 11, 2025
531eb95
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 11, 2025
f9cfc66
fix: add general API endpoints for Z.ai provider (#9894)
roomote[bot] Dec 11, 2025
47320dc
fix: handle empty Gemini responses and reasoning loops (#10007)
hannesrudolph Dec 11, 2025
8731709
fix: add missing tool_result blocks to prevent API errors (#10015)
daniel-lxs Dec 11, 2025
70704eb
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 11, 2025
51dbccf
feat: add gpt-5.2 model to openai-native provider (#10024)
hannesrudolph Dec 11, 2025
706e018
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 11, 2025
63e3625
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 11, 2025
3def1e8
test: update built-in commands count to 9
mini2s Dec 11, 2025
8a68b04
fix: filter orphaned tool_results when more results than tool_uses (#…
daniel-lxs Dec 11, 2025
526e195
Release v3.36.5 (#10029)
cte Dec 11, 2025
21c2d93
Changeset version bump (#10032)
github-actions[bot] Dec 11, 2025
c513df5
fix: merge settings and versionedSettings for Roo provider models (#1…
hannesrudolph Dec 11, 2025
7766b91
Revert "fix: merge settings and versionedSettings for Roo provider mo…
cte Dec 11, 2025
5072ff1
Revert the 3.6.5 release (we halted it) (#10036)
cte Dec 11, 2025
4dabd52
Release v3.36.5 (#10037)
cte Dec 11, 2025
f97b515
Changeset version bump (#10038)
github-actions[bot] Dec 11, 2025
bdce2cc
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 12, 2025
6ba0233
test: adjust terminal count limits in TerminalRegistry tests
mini2s Dec 12, 2025
2d1db85
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 12, 2025
8308cbd
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 12, 2025
495b5c6
ux: improve auto-approve timer visibility in follow-up suggestions (#…
brunobergher Dec 12, 2025
d976a9b
fix: cancel auto-approval timeout when user starts typing (#9937)
roomote[bot] Dec 12, 2025
f67c4cd
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 12, 2025
23a214c
fix: extract raw error message from OpenRouter metadata (#10039)
daniel-lxs Dec 12, 2025
ba7c553
feat: add tool alias support for model-specific tool customization (#…
daniel-lxs Dec 12, 2025
0f8fac9
fix: show tool protocol dropdown for LiteLLM provider (#10053)
daniel-lxs Dec 12, 2025
8da4d3d
feat: add WorkspaceTaskVisibility type for organization cloud setting…
roomote[bot] Dec 12, 2025
f60c14e
Release: v1.91.0 (#10055)
jr Dec 12, 2025
3521270
feat: sanitize MCP server/tool names for API compatibility (#10054)
daniel-lxs Dec 12, 2025
0742335
Release v3.36.6 (#10057)
cte Dec 12, 2025
4771de1
Changeset version bump (#10058)
github-actions[bot] Dec 12, 2025
a3b258a
fix: use JavaScript-based hover for checkpoint menu visibility (#10056)
hannesrudolph Dec 12, 2025
05e64dd
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 13, 2025
312fb62
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Dec 13, 2025
1ae042d
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Dec 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/types/npm/package.metadata.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@roo-code/types",
"version": "1.90.0",
"version": "1.91.0",
"description": "TypeScript type definitions for Roo Code.",
"publishConfig": {
"access": "public",
Expand Down
84 changes: 84 additions & 0 deletions packages/types/src/__tests__/cloud.test.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
// npx vitest run src/__tests__/cloud.test.ts

import {
organizationCloudSettingsSchema,
organizationFeaturesSchema,
organizationSettingsSchema,
type OrganizationCloudSettings,
type OrganizationFeatures,
type OrganizationSettings,
type WorkspaceTaskVisibility,
} from "../cloud.js"

describe("organizationFeaturesSchema", () => {
Expand Down Expand Up @@ -171,3 +174,84 @@ describe("organizationSettingsSchema with features", () => {
expect(result.data).toEqual(input)
})
})

describe("organizationCloudSettingsSchema with workspaceTaskVisibility", () => {
it("should validate without workspaceTaskVisibility property", () => {
const input = {
recordTaskMessages: true,
enableTaskSharing: true,
}
const result = organizationCloudSettingsSchema.safeParse(input)
expect(result.success).toBe(true)
expect(result.data?.workspaceTaskVisibility).toBeUndefined()
})

it("should validate with workspaceTaskVisibility as 'all'", () => {
const input = {
recordTaskMessages: true,
workspaceTaskVisibility: "all" as WorkspaceTaskVisibility,
}
const result = organizationCloudSettingsSchema.safeParse(input)
expect(result.success).toBe(true)
expect(result.data?.workspaceTaskVisibility).toBe("all")
})

it("should validate with workspaceTaskVisibility as 'list-only'", () => {
const input = {
workspaceTaskVisibility: "list-only" as WorkspaceTaskVisibility,
}
const result = organizationCloudSettingsSchema.safeParse(input)
expect(result.success).toBe(true)
expect(result.data?.workspaceTaskVisibility).toBe("list-only")
})

it("should validate with workspaceTaskVisibility as 'full-lockdown'", () => {
const input = {
workspaceTaskVisibility: "full-lockdown" as WorkspaceTaskVisibility,
}
const result = organizationCloudSettingsSchema.safeParse(input)
expect(result.success).toBe(true)
expect(result.data?.workspaceTaskVisibility).toBe("full-lockdown")
})

it("should reject invalid workspaceTaskVisibility value", () => {
const input = {
workspaceTaskVisibility: "invalid-value",
}
const result = organizationCloudSettingsSchema.safeParse(input)
expect(result.success).toBe(false)
})

it("should have correct TypeScript type", () => {
// Type-only test to ensure TypeScript compilation
const settings: OrganizationCloudSettings = {
recordTaskMessages: true,
workspaceTaskVisibility: "all",
}
expect(settings.workspaceTaskVisibility).toBe("all")

const settingsWithoutVisibility: OrganizationCloudSettings = {
recordTaskMessages: false,
}
expect(settingsWithoutVisibility.workspaceTaskVisibility).toBeUndefined()
})

it("should validate in organizationSettingsSchema with workspaceTaskVisibility", () => {
const input = {
version: 1,
cloudSettings: {
recordTaskMessages: true,
enableTaskSharing: true,
workspaceTaskVisibility: "list-only" as WorkspaceTaskVisibility,
},
defaultSettings: {},
allowList: {
allowAll: true,
providers: {},
},
}
const result = organizationSettingsSchema.safeParse(input)
expect(result.success).toBe(true)
expect(result.data?.cloudSettings?.workspaceTaskVisibility).toBe("list-only")
})
})
9 changes: 9 additions & 0 deletions packages/types/src/cloud.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,14 @@ export const organizationDefaultSettingsSchema = globalSettingsSchema

export type OrganizationDefaultSettings = z.infer<typeof organizationDefaultSettingsSchema>

/**
* WorkspaceTaskVisibility
*/

const workspaceTaskVisibilitySchema = z.enum(["all", "list-only", "full-lockdown"])

export type WorkspaceTaskVisibility = z.infer<typeof workspaceTaskVisibilitySchema>

/**
* OrganizationCloudSettings
*/
Expand All @@ -129,6 +137,7 @@ export const organizationCloudSettingsSchema = z.object({
enableTaskSharing: z.boolean().optional(),
taskShareExpirationDays: z.number().int().positive().optional(),
allowMembersViewAllTasks: z.boolean().optional(),
workspaceTaskVisibility: workspaceTaskVisibilitySchema.optional(),
})

export type OrganizationCloudSettings = z.infer<typeof organizationCloudSettingsSchema>
Expand Down
90 changes: 38 additions & 52 deletions src/api/providers/openrouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ type OpenRouterChatCompletionParams = OpenAI.Chat.ChatCompletionCreateParams & {
reasoning?: OpenRouterReasoningParams
}

// OpenRouter error structure that may include metadata.raw with actual upstream error
interface OpenRouterErrorResponse {
message?: string
code?: number
metadata?: { raw?: string }
}

// See `OpenAI.Chat.Completions.ChatCompletionChunk["usage"]`
// `CompletionsAPI.CompletionUsage`
// See also: https://openrouter.ai/docs/use-cases/usage-accounting
Expand Down Expand Up @@ -111,6 +118,29 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH
return this.currentReasoningDetails.length > 0 ? this.currentReasoningDetails : undefined
}

/**
* Handle OpenRouter streaming error response and report to telemetry.
* OpenRouter may include metadata.raw with the actual upstream provider error.
*/
private handleStreamingError(error: OpenRouterErrorResponse, modelId: string, operation: string): never {
const rawErrorMessage = error?.metadata?.raw || error?.message

const apiError = Object.assign(
new ApiProviderError(
rawErrorMessage ?? "Unknown error",
this.providerName,
modelId,
operation,
error?.code,
),
{ status: error?.code, error: { message: error?.message, metadata: error?.metadata } },
)

TelemetryService.instance.captureException(apiError)

throw new Error(`OpenRouter API Error ${error?.code}: ${rawErrorMessage}`)
}

override async *createMessage(
systemPrompt: string,
messages: Anthropic.Messages.MessageParam[],
Expand Down Expand Up @@ -228,15 +258,9 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH
try {
stream = await this.client.chat.completions.create(completionParams, requestOptions)
} catch (error) {
TelemetryService.instance.captureException(
new ApiProviderError(
error instanceof Error ? error.message : String(error),
this.providerName,
modelId,
"createMessage",
),
)

const errorMessage = error instanceof Error ? error.message : String(error)
const apiError = new ApiProviderError(errorMessage, this.providerName, modelId, "createMessage")
TelemetryService.instance.captureException(apiError)
throw handleOpenAIError(error, this.providerName)
}

Expand All @@ -259,23 +283,7 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH
for await (const chunk of stream) {
// OpenRouter returns an error object instead of the OpenAI SDK throwing an error.
if ("error" in chunk) {
const error = chunk.error as { message?: string; code?: number }
console.error(`OpenRouter API Error: ${error?.code} - ${error?.message}`)

TelemetryService.instance.captureException(
Object.assign(
new ApiProviderError(
error?.message ?? "Unknown error",
this.providerName,
modelId,
"createMessage",
error?.code,
),
{ status: error?.code },
),
)

throw new Error(`OpenRouter API Error ${error?.code}: ${error?.message}`)
this.handleStreamingError(chunk.error as OpenRouterErrorResponse, modelId, "createMessage")
}

const delta = chunk.choices[0]?.delta
Expand Down Expand Up @@ -473,36 +481,14 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH
signal: metadata?.signal,
})
} catch (error) {
TelemetryService.instance.captureException(
new ApiProviderError(
error instanceof Error ? error.message : String(error),
this.providerName,
modelId,
"completePrompt",
),
)

const errorMessage = error instanceof Error ? error.message : String(error)
const apiError = new ApiProviderError(errorMessage, this.providerName, modelId, "completePrompt")
TelemetryService.instance.captureException(apiError)
throw handleOpenAIError(error, this.providerName)
}

if ("error" in response) {
const error = response.error as { message?: string; code?: number }
console.error(`OpenRouter API Error: ${error?.code} - ${error?.message}`)

TelemetryService.instance.captureException(
Object.assign(
new ApiProviderError(
error?.message ?? "Unknown error",
this.providerName,
modelId,
"completePrompt",
error?.code,
),
{ status: error?.code },
),
)

throw new Error(`OpenRouter API Error ${error?.code}: ${error?.message}`)
this.handleStreamingError(response.error as OpenRouterErrorResponse, modelId, "completePrompt")
}

const completion = response as OpenAI.Chat.ChatCompletion
Expand Down
Loading