mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-10-07 02:58:15 +00:00
Compare commits
6 commits
ffd9db72b3
...
dca49643d1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dca49643d1 | ||
|
|
7adbfec2a4 | ||
|
|
9cfaf38d8a | ||
|
|
92a1be40df | ||
|
|
5b93bc7dc3 | ||
|
|
5762ad7e9b |
66 changed files with 1163 additions and 145 deletions
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
"roo-cline": patch
|
||||
"@roo-code/types": patch
|
||||
---
|
||||
|
||||
Add support for OpenAI `gpt-5.4-mini` and `gpt-5.4-nano` models.
|
||||
15
CHANGELOG.md
15
CHANGELOG.md
|
|
@ -1,5 +1,20 @@
|
|||
# Roo Code Changelog
|
||||
|
||||
## 3.52.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- Add Poe as an AI provider so users can access Poe models directly in Roo Code (PR #12015 by @kamilio)
|
||||
- Improve the xAI provider by migrating it to the Responses API with reusable transform utilities (#11961 by @carlesso, PR #11962 by @carlesso)
|
||||
- Fix MiniMax model listings and context window handling for more reliable configuration (#11999 by @Rexarrior, PR #12069 by @Rexarrior)
|
||||
- Add xAI Grok-4.20 models and update the default xAI model selection (#11955 by @carlesso, PR #11956 by @carlesso)
|
||||
- Add OpenAI GPT-5.4 mini and nano models to expand the available OpenAI model lineup (PR #11946 by @PeterDaveHello)
|
||||
- Chore: include the automated version bump PR from the previous release cycle for complete release accounting (PR #11892 by @app/github-actions)
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Add support for OpenAI `gpt-5.4-mini` and `gpt-5.4-nano` models.
|
||||
|
||||
## 3.51.1
|
||||
|
||||
### Patch Changes
|
||||
|
|
|
|||
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> Your AI-Powered Dev Team, Right in Your Editor
|
||||
|
||||
## What's New in v3.51.0
|
||||
## What's New in v3.52.0
|
||||
|
||||
- Add support for OpenAI GPT-5.4 and GPT-5.3 Chat Latest so you can use the newest OpenAI chat models in Roo Code.
|
||||
- Expose skills as slash commands with fallback execution to make reusable workflows faster to trigger.
|
||||
- Add Poe as an AI provider so you can access Poe models directly in Roo Code.
|
||||
- Improve the xAI provider with a Responses API migration, reusable transform utilities, and updated Grok-4.20 defaults.
|
||||
- Fix MiniMax model listings and context window handling for more reliable setup.
|
||||
|
||||
<details>
|
||||
<summary>🌐 Available languages</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](locales/zh-CN/README.md)
|
||||
- [繁體中文](locales/zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
3
apps/web-evals/CHANGELOG.md
Normal file
3
apps/web-evals/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# @roo-code/web-evals
|
||||
|
||||
## 0.0.1
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@roo-code/web-evals",
|
||||
"version": "0.0.0",
|
||||
"version": "0.0.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"lint": "eslint src --ext=ts,tsx --max-warnings=0",
|
||||
|
|
|
|||
3
apps/web-roo-code/CHANGELOG.md
Normal file
3
apps/web-roo-code/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# @roo-code/web-roo-code
|
||||
|
||||
## 0.0.1
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@roo-code/web-roo-code",
|
||||
"version": "0.0.0",
|
||||
"version": "0.0.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"lint": "eslint src --ext=ts,tsx --max-warnings=0",
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
"@radix-ui/react-navigation-menu": "^1.2.14",
|
||||
"@radix-ui/react-slot": "^1.2.4",
|
||||
"@roo-code/evals": "workspace:^",
|
||||
"@roo-code/types": "^1.108.0",
|
||||
"@roo-code/types": "workspace:^",
|
||||
"@tanstack/react-query": "^5.90.20",
|
||||
"@vercel/og": "^0.8.6",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
|
|
|
|||
9
locales/ca/README.md
generated
9
locales/ca/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> El teu equip de desenvolupament impulsat per IA, directament al teu editor
|
||||
|
||||
## Novetats de la v3.51.0
|
||||
## Novetats de la v3.52.0
|
||||
|
||||
- S'ha afegit compatibilitat amb OpenAI GPT-5.4 i GPT-5.3 Chat Latest perquè puguis utilitzar els models de xat més nous d'OpenAI a Roo Code.
|
||||
- Les skills es poden exposar com a ordres slash amb execució de reserva perquè els fluxos de treball reutilitzables s'activin més de pressa.
|
||||
- S'ha afegit Poe com a proveïdor d'IA perquè puguis accedir directament als models de Poe a Roo Code.
|
||||
- S'ha millorat el proveïdor xAI amb una migració a la Responses API, utilitats de transformació reutilitzables i els valors per defecte actualitzats de Grok-4.20.
|
||||
- S'han corregit els llistats de models de MiniMax i la gestió de la finestra de context per oferir una configuració més fiable.
|
||||
|
||||
<details>
|
||||
<summary>🌐 Idiomes disponibles</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/de/README.md
generated
9
locales/de/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> Dein KI-gestütztes Dev-Team – direkt in deinem Editor
|
||||
|
||||
## Neu in v3.51.0
|
||||
## Neu in v3.52.0
|
||||
|
||||
- Unterstützung für OpenAI GPT-5.4 und GPT-5.3 Chat Latest hinzugefügt, damit du die neuesten OpenAI-Chatmodelle in Roo Code nutzen kannst.
|
||||
- Skills als Slash-Commands mit Fallback-Ausführung verfügbar gemacht, damit wiederverwendbare Workflows schneller ausgelöst werden können.
|
||||
- Poe als KI-Anbieter hinzugefügt, damit du direkt in Roo Code auf Poe-Modelle zugreifen kannst.
|
||||
- Den xAI-Anbieter mit einer Migration auf die Responses API, wiederverwendbaren Transformations-Utilities und aktualisierten Grok-4.20-Standards verbessert.
|
||||
- MiniMax-Modelllisten und die Handhabung des Kontextfensters korrigiert, damit die Einrichtung zuverlässiger funktioniert.
|
||||
|
||||
<details>
|
||||
<summary>🌐 Verfügbare Sprachen</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/es/README.md
generated
9
locales/es/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> Tu equipo de desarrollo con IA, directamente en tu editor
|
||||
|
||||
## Novedades de la v3.51.0
|
||||
## Novedades de la v3.52.0
|
||||
|
||||
- Se añadió compatibilidad con OpenAI GPT-5.4 y GPT-5.3 Chat Latest para que puedas usar los modelos de chat más recientes de OpenAI en Roo Code.
|
||||
- Las skills ahora pueden exponerse como comandos slash con ejecución de respaldo para activar más rápido los flujos de trabajo reutilizables.
|
||||
- Se añadió Poe como proveedor de IA para que puedas acceder directamente a los modelos de Poe en Roo Code.
|
||||
- Se mejoró el proveedor xAI con una migración a la Responses API, utilidades de transformación reutilizables y valores predeterminados actualizados de Grok-4.20.
|
||||
- Se corrigieron los listados de modelos de MiniMax y el manejo de la ventana de contexto para una configuración más fiable.
|
||||
|
||||
<details>
|
||||
<summary>🌐 Idiomas disponibles</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/fr/README.md
generated
9
locales/fr/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> Ton équipe de dev propulsée par l'IA, directement dans ton éditeur
|
||||
|
||||
## Nouveautés de la v3.51.0
|
||||
## Nouveautés de la v3.52.0
|
||||
|
||||
- Ajout de la prise en charge d’OpenAI GPT-5.4 et de GPT-5.3 Chat Latest pour que tu puisses utiliser les modèles de chat OpenAI les plus récents dans Roo Code.
|
||||
- Les skills peuvent désormais être exposées comme slash commands avec une exécution de secours pour déclencher plus vite des workflows réutilisables.
|
||||
- Ajout de Poe comme fournisseur d’IA pour que tu puisses accéder directement aux modèles Poe dans Roo Code.
|
||||
- Amélioration du fournisseur xAI avec une migration vers la Responses API, des utilitaires de transformation réutilisables et des valeurs par défaut Grok-4.20 mises à jour.
|
||||
- Correction des listes de modèles MiniMax et de la gestion de la fenêtre de contexte pour une configuration plus fiable.
|
||||
|
||||
<details>
|
||||
<summary>🌐 Langues disponibles</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/hi/README.md
generated
9
locales/hi/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> तुम्हारी AI-संचालित डेवलपमेंट टीम, सीधे तुम्हारे एडिटर में
|
||||
|
||||
## v3.51.0 में नया क्या है
|
||||
## v3.52.0 में नया क्या है
|
||||
|
||||
- OpenAI GPT-5.4 और GPT-5.3 Chat Latest के लिए सपोर्ट जोड़ा गया है, ताकि आप Roo Code में OpenAI के सबसे नए chat models इस्तेमाल कर सकें।
|
||||
- अब skills को slash commands के रूप में fallback execution के साथ expose किया जा सकता है, जिससे reusable workflows को तेज़ी से trigger किया जा सके।
|
||||
- Poe को AI provider के रूप में जोड़ा गया है, ताकि आप Roo Code में सीधे Poe models तक पहुँच सकें।
|
||||
- xAI provider को Responses API migration, reusable transform utilities, और updated Grok-4.20 defaults के साथ बेहतर बनाया गया है।
|
||||
- ज़्यादा भरोसेमंद setup के लिए MiniMax model listings और context window handling को ठीक किया गया है।
|
||||
|
||||
<details>
|
||||
<summary>🌐 उपलब्ध भाषाएँ</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/id/README.md
generated
9
locales/id/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> Tim dev bertenaga AI-mu, langsung di editor kamu
|
||||
|
||||
## Yang Baru di v3.51.0
|
||||
## Yang Baru di v3.52.0
|
||||
|
||||
- Menambahkan dukungan untuk OpenAI GPT-5.4 dan GPT-5.3 Chat Latest agar kamu bisa memakai model chat OpenAI terbaru di Roo Code.
|
||||
- Skill kini bisa diekspos sebagai slash command dengan eksekusi fallback supaya workflow yang bisa dipakai ulang lebih cepat dijalankan.
|
||||
- Menambahkan Poe sebagai provider AI agar kamu bisa langsung mengakses model Poe di Roo Code.
|
||||
- Meningkatkan provider xAI dengan migrasi ke Responses API, utilitas transformasi yang bisa dipakai ulang, dan default Grok-4.20 yang diperbarui.
|
||||
- Memperbaiki daftar model MiniMax dan penanganan context window agar penyiapannya lebih andal.
|
||||
|
||||
<details>
|
||||
<summary>🌐 Bahasa yang tersedia</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/it/README.md
generated
9
locales/it/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> Il tuo team di sviluppo con IA, direttamente nel tuo editor
|
||||
|
||||
## Novità in v3.51.0
|
||||
## Novità in v3.52.0
|
||||
|
||||
- Aggiunto il supporto per OpenAI GPT-5.4 e GPT-5.3 Chat Latest così puoi usare i modelli di chat OpenAI più recenti in Roo Code.
|
||||
- Le skill ora possono essere esposte come slash command con esecuzione di fallback per attivare più rapidamente i workflow riutilizzabili.
|
||||
- Aggiunto Poe come provider AI così puoi accedere direttamente ai modelli Poe in Roo Code.
|
||||
- Migliorato il provider xAI con una migrazione alla Responses API, utility di trasformazione riutilizzabili e valori predefiniti aggiornati per Grok-4.20.
|
||||
- Corretti gli elenchi dei modelli MiniMax e la gestione della finestra di contesto per una configurazione più affidabile.
|
||||
|
||||
<details>
|
||||
<summary>🌐 Lingue disponibili</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/ja/README.md
generated
9
locales/ja/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> あなたのエディタの中に、AIで強化された開発チームを
|
||||
|
||||
## v3.51.0 の新機能
|
||||
## v3.52.0 の新機能
|
||||
|
||||
- OpenAI GPT-5.4 と GPT-5.3 Chat Latest のサポートを追加し、Roo Code で OpenAI の最新チャットモデルを使えるようにしました。
|
||||
- スキルをスラッシュコマンドとして公開し、フォールバック実行にも対応したことで、再利用可能なワークフローをより素早く呼び出せます。
|
||||
- Poe を AI プロバイダーとして追加し、Roo Code から Poe のモデルに直接アクセスできるようにしました。
|
||||
- xAI プロバイダーを Responses API への移行、再利用可能な変換ユーティリティ、更新された Grok-4.20 のデフォルト設定で改善しました。
|
||||
- より信頼性の高いセットアップのために、MiniMax のモデル一覧とコンテキストウィンドウの扱いを修正しました。
|
||||
|
||||
<details>
|
||||
<summary>🌐 利用可能な言語</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/ko/README.md
generated
9
locales/ko/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> AI로 강화된 너의 개발 팀, 네 에디터 안에
|
||||
|
||||
## v3.51.0의 새로운 기능
|
||||
## v3.52.0의 새로운 기능
|
||||
|
||||
- OpenAI GPT-5.4와 GPT-5.3 Chat Latest 지원을 추가해 Roo Code에서 최신 OpenAI 채팅 모델을 사용할 수 있어요.
|
||||
- 이제 스킬을 슬래시 명령어로 노출하고 fallback 실행도 지원해 재사용 가능한 워크플로를 더 빠르게 트리거할 수 있어요.
|
||||
- Poe를 AI 제공업체로 추가해 Roo Code에서 Poe 모델에 직접 접근할 수 있게 했어요.
|
||||
- Responses API 마이그레이션, 재사용 가능한 변환 유틸리티, 업데이트된 Grok-4.20 기본값으로 xAI 제공업체를 개선했어요.
|
||||
- 더 안정적인 설정을 위해 MiniMax 모델 목록과 컨텍스트 윈도우 처리를 수정했어요.
|
||||
|
||||
<details>
|
||||
<summary>🌐 사용 가능한 언어</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/nl/README.md
generated
9
locales/nl/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> Jouw AI-aangedreven dev-team, rechtstreeks in je editor
|
||||
|
||||
## Nieuw in v3.51.0
|
||||
## Nieuw in v3.52.0
|
||||
|
||||
- Ondersteuning toegevoegd voor OpenAI GPT-5.4 en GPT-5.3 Chat Latest, zodat je de nieuwste OpenAI-chatmodellen in Roo Code kunt gebruiken.
|
||||
- Skills beschikbaar gemaakt als slash-commands met fallback-uitvoering, zodat herbruikbare workflows sneller te starten zijn.
|
||||
- Poe toegevoegd als AI-provider, zodat je in Roo Code direct toegang hebt tot Poe-modellen.
|
||||
- De xAI-provider verbeterd met een migratie naar de Responses API, herbruikbare transformatiehulpmiddelen en bijgewerkte Grok-4.20-standaardinstellingen.
|
||||
- MiniMax-modellijsten en de afhandeling van het contextvenster gerepareerd voor een betrouwbaardere configuratie.
|
||||
|
||||
<details>
|
||||
<summary>🌐 Beschikbare talen</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/pl/README.md
generated
9
locales/pl/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> Twój zespół deweloperski zasilany AI — prosto w edytorze
|
||||
|
||||
## Nowości w v3.51.0
|
||||
## Nowości w v3.52.0
|
||||
|
||||
- Dodano obsługę OpenAI GPT-5.4 i GPT-5.3 Chat Latest, żebyś mógł używać najnowszych modeli czatu OpenAI w Roo Code.
|
||||
- Skills można teraz udostępniać jako slash commandy z wykonaniem awaryjnym, żeby szybciej uruchamiać wielokrotnego użytku workflowy.
|
||||
- Dodano Poe jako dostawcę AI, żebyś mógł bezpośrednio uzyskać dostęp do modeli Poe w Roo Code.
|
||||
- Ulepszono dostawcę xAI dzięki migracji do Responses API, narzędziom transformacji wielokrotnego użytku i zaktualizowanym domyślnym ustawieniom Grok-4.20.
|
||||
- Naprawiono listy modeli MiniMax i obsługę okna kontekstu, żeby konfiguracja była bardziej niezawodna.
|
||||
|
||||
<details>
|
||||
<summary>🌐 Dostępne języki</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/pt-BR/README.md
generated
9
locales/pt-BR/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> Seu time de desenvolvimento com IA, direto no seu editor
|
||||
|
||||
## Novidades na v3.51.0
|
||||
## Novidades na v3.52.0
|
||||
|
||||
- Adicionamos suporte ao OpenAI GPT-5.4 e ao GPT-5.3 Chat Latest para você usar os modelos de chat mais novos da OpenAI no Roo Code.
|
||||
- Agora as skills podem ser expostas como comandos slash com execução de fallback para acionar workflows reutilizáveis mais rápido.
|
||||
- Adicionamos o Poe como provedor de IA para você acessar os modelos do Poe diretamente no Roo Code.
|
||||
- Melhoramos o provedor xAI com uma migração para a Responses API, utilitários de transformação reutilizáveis e padrões atualizados do Grok-4.20.
|
||||
- Corrigimos as listagens de modelos do MiniMax e o tratamento da janela de contexto para uma configuração mais confiável.
|
||||
|
||||
<details>
|
||||
<summary>🌐 Idiomas disponíveis</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/ru/README.md
generated
9
locales/ru/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> Твоя команда разработчиков на ИИ — прямо в редакторе
|
||||
|
||||
## Что нового в v3.51.0
|
||||
## Что нового в v3.52.0
|
||||
|
||||
- Добавлена поддержка OpenAI GPT-5.4 и GPT-5.3 Chat Latest, чтобы ты мог использовать новейшие чат-модели OpenAI в Roo Code.
|
||||
- Skills теперь можно открывать как slash-команды с резервным выполнением, чтобы быстрее запускать переиспользуемые рабочие процессы.
|
||||
- Добавлен Poe как AI-провайдер, чтобы ты мог напрямую получать доступ к моделям Poe в Roo Code.
|
||||
- Улучшен провайдер xAI: выполнена миграция на Responses API, добавлены переиспользуемые утилиты трансформации и обновлены настройки Grok-4.20 по умолчанию.
|
||||
- Исправлены списки моделей MiniMax и обработка окна контекста для более надёжной настройки.
|
||||
|
||||
<details>
|
||||
<summary>🌐 Доступные языки</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/tr/README.md
generated
9
locales/tr/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> AI destekli dev ekibin, doğrudan editörünün içinde
|
||||
|
||||
## v3.51.0'daki Yenilikler
|
||||
## v3.52.0'daki Yenilikler
|
||||
|
||||
- Roo Code içinde en yeni OpenAI sohbet modellerini kullanabilmen için OpenAI GPT-5.4 ve GPT-5.3 Chat Latest desteği eklendi.
|
||||
- Skills artık fallback yürütmeyle slash komutları olarak sunulabiliyor, böylece yeniden kullanılabilir iş akışları daha hızlı tetiklenebiliyor.
|
||||
- Poe, Roo Code içinde Poe modellerine doğrudan erişebilmen için bir AI sağlayıcısı olarak eklendi.
|
||||
- xAI sağlayıcısı, Responses API geçişi, yeniden kullanılabilir dönüştürme yardımcıları ve güncellenmiş Grok-4.20 varsayılanlarıyla iyileştirildi.
|
||||
- Daha güvenilir bir kurulum için MiniMax model listeleri ve context window işleme düzeltildi.
|
||||
|
||||
<details>
|
||||
<summary>🌐 Mevcut diller</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/vi/README.md
generated
9
locales/vi/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> Đội ngũ dev dùng AI của bạn, ngay trong trình chỉnh sửa
|
||||
|
||||
## Điểm mới trong v3.51.0
|
||||
## Điểm mới trong v3.52.0
|
||||
|
||||
- Đã thêm hỗ trợ cho OpenAI GPT-5.4 và GPT-5.3 Chat Latest để bạn có thể dùng các mô hình chat OpenAI mới nhất trong Roo Code.
|
||||
- Skills giờ có thể được cung cấp dưới dạng lệnh slash kèm thực thi dự phòng để kích hoạt các quy trình tái sử dụng nhanh hơn.
|
||||
- Đã thêm Poe làm nhà cung cấp AI để bạn có thể truy cập trực tiếp các model Poe trong Roo Code.
|
||||
- Đã cải thiện nhà cung cấp xAI với quá trình chuyển sang Responses API, các tiện ích chuyển đổi có thể tái sử dụng và các giá trị mặc định Grok-4.20 đã được cập nhật.
|
||||
- Đã sửa danh sách model MiniMax và cách xử lý context window để thiết lập đáng tin cậy hơn.
|
||||
|
||||
<details>
|
||||
<summary>🌐 Các ngôn ngữ có sẵn</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/zh-CN/README.md
generated
9
locales/zh-CN/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> 你的 AI 驱动开发团队,就在你的编辑器里
|
||||
|
||||
## v3.51.0 新增内容
|
||||
## v3.52.0 新增内容
|
||||
|
||||
- 已添加对 OpenAI GPT-5.4 和 GPT-5.3 Chat Latest 的支持,让你可以在 Roo Code 中使用 OpenAI 最新的聊天模型。
|
||||
- 现在可以将 skills 公开为 slash 命令,并支持 fallback execution,让可复用工作流触发得更快。
|
||||
- 已将 Poe 添加为 AI 提供商,让你可以在 Roo Code 中直接访问 Poe 模型。
|
||||
- 已改进 xAI 提供商,完成了向 Responses API 的迁移,加入了可复用的转换工具,并更新了 Grok-4.20 默认设置。
|
||||
- 已修复 MiniMax 模型列表和上下文窗口处理方式,让配置更加可靠。
|
||||
|
||||
<details>
|
||||
<summary>🌐 可用语言</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
9
locales/zh-TW/README.md
generated
9
locales/zh-TW/README.md
generated
|
|
@ -13,10 +13,11 @@
|
|||
|
||||
> 您的 AI 驅動開發團隊,就在您的編輯器中
|
||||
|
||||
## v3.51.0 新功能
|
||||
## v3.52.0 新功能
|
||||
|
||||
- 已新增對 OpenAI GPT-5.4 和 GPT-5.3 Chat Latest 的支援,讓你可以在 Roo Code 中使用 OpenAI 最新的聊天模型。
|
||||
- 現在可以將 skills 公開為 slash 指令,並支援 fallback execution,讓可重用工作流程觸發得更快。
|
||||
- 已將 Poe 新增為 AI 供應商,讓你可以在 Roo Code 中直接存取 Poe 模型。
|
||||
- 已改善 xAI 供應商,完成 Responses API 遷移、加入可重複使用的轉換工具,並更新了 Grok-4.20 預設值。
|
||||
- 已修正 MiniMax 模型清單和上下文視窗處理方式,讓設定更加可靠。
|
||||
|
||||
<details>
|
||||
<summary>🌐 支援語言</summary>
|
||||
|
|
@ -40,7 +41,7 @@
|
|||
- [简体中文](../zh-CN/README.md)
|
||||
- [繁體中文](../zh-TW/README.md)
|
||||
- ...
|
||||
</details>
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
3
packages/cloud/CHANGELOG.md
Normal file
3
packages/cloud/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# @roo-code/cloud
|
||||
|
||||
## 0.0.1
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@roo-code/cloud",
|
||||
"description": "Roo Code Cloud services.",
|
||||
"version": "0.0.0",
|
||||
"version": "0.0.1",
|
||||
"type": "module",
|
||||
"exports": "./src/index.ts",
|
||||
"scripts": {
|
||||
|
|
|
|||
3
packages/core/CHANGELOG.md
Normal file
3
packages/core/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# @roo-code/core
|
||||
|
||||
## 0.0.1
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@roo-code/core",
|
||||
"description": "Platform agnostic core functionality for Roo Code.",
|
||||
"version": "0.0.0",
|
||||
"version": "0.0.1",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
".": "./src/index.ts",
|
||||
|
|
|
|||
3
packages/evals/CHANGELOG.md
Normal file
3
packages/evals/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# @roo-code/evals
|
||||
|
||||
## 0.0.1
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@roo-code/evals",
|
||||
"description": "Roo Code evals.",
|
||||
"version": "0.0.0",
|
||||
"version": "0.0.1",
|
||||
"type": "module",
|
||||
"exports": "./src/index.ts",
|
||||
"scripts": {
|
||||
|
|
|
|||
3
packages/ipc/CHANGELOG.md
Normal file
3
packages/ipc/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# @roo-code/ipc
|
||||
|
||||
## 0.0.1
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@roo-code/ipc",
|
||||
"description": "IPC server and client for remote Roo Code access.",
|
||||
"version": "0.0.0",
|
||||
"version": "0.0.1",
|
||||
"type": "module",
|
||||
"exports": "./src/index.ts",
|
||||
"scripts": {
|
||||
|
|
|
|||
3
packages/telemetry/CHANGELOG.md
Normal file
3
packages/telemetry/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# @roo-code/telemetry
|
||||
|
||||
## 0.0.1
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@roo-code/telemetry",
|
||||
"description": "Roo Code telemetry service and clients.",
|
||||
"version": "0.0.0",
|
||||
"version": "0.0.1",
|
||||
"type": "module",
|
||||
"exports": "./src/index.ts",
|
||||
"scripts": {
|
||||
|
|
|
|||
7
packages/types/CHANGELOG.md
Normal file
7
packages/types/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# @roo-code/types
|
||||
|
||||
## 0.0.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Add support for OpenAI `gpt-5.4-mini` and `gpt-5.4-nano` models.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@roo-code/types",
|
||||
"version": "0.0.0",
|
||||
"version": "0.0.1",
|
||||
"type": "module",
|
||||
"main": "./dist/index.cjs",
|
||||
"exports": {
|
||||
|
|
@ -20,7 +20,8 @@
|
|||
"build": "tsup",
|
||||
"build:watch": "tsup --watch --outDir npm/dist --onSuccess 'echo ✅ Types rebuilt to npm/dist'",
|
||||
"npm:publish": "node scripts/publish-npm.cjs",
|
||||
"clean": "rimraf dist .turbo"
|
||||
"clean": "rimraf dist .turbo",
|
||||
"generate:schema": "tsx scripts/generate-roomodes-schema.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"ai-sdk-provider-poe": "2.0.18",
|
||||
|
|
@ -32,6 +33,8 @@
|
|||
"@types/node": "^24.1.0",
|
||||
"globals": "^16.3.0",
|
||||
"tsup": "^8.4.0",
|
||||
"vitest": "^3.2.3"
|
||||
"ajv": "^8.18.0",
|
||||
"vitest": "^3.2.3",
|
||||
"zod-to-json-schema": "^3.25.1"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
25
packages/types/scripts/generate-roomodes-schema.ts
Normal file
25
packages/types/scripts/generate-roomodes-schema.ts
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
/**
|
||||
* Generates the JSON Schema for .roomodes configuration files from the Zod
|
||||
* schemas defined in packages/types/src/mode.ts.
|
||||
*
|
||||
* This ensures the schema stays in sync with the TypeScript types. Run via:
|
||||
* pnpm --filter @roo-code/types generate:schema
|
||||
*
|
||||
* The output is written to schemas/roomodes.json at the repository root.
|
||||
*/
|
||||
|
||||
import * as fs from "fs"
|
||||
import * as path from "path"
|
||||
import { fileURLToPath } from "url"
|
||||
|
||||
import { generateRoomodesJsonSchema } from "../src/roomodes-schema.js"
|
||||
|
||||
const jsonSchema = generateRoomodesJsonSchema()
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||
const repoRoot = path.resolve(__dirname, "../../..")
|
||||
const outPath = path.join(repoRoot, "schemas", "roomodes.json")
|
||||
fs.mkdirSync(path.dirname(outPath), { recursive: true })
|
||||
fs.writeFileSync(outPath, JSON.stringify(jsonSchema, null, "\t") + "\n", "utf-8")
|
||||
|
||||
console.log(`Generated ${path.relative(repoRoot, outPath)}`)
|
||||
26
packages/types/src/__tests__/roomodes-schema-sync.spec.ts
Normal file
26
packages/types/src/__tests__/roomodes-schema-sync.spec.ts
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import { describe, it, expect } from "vitest"
|
||||
import * as fs from "fs"
|
||||
import * as path from "path"
|
||||
import { fileURLToPath } from "url"
|
||||
|
||||
import { generateRoomodesJsonSchema } from "../roomodes-schema.js"
|
||||
|
||||
/**
|
||||
* This test verifies that the checked-in schemas/roomodes.json matches what
|
||||
* would be generated from the current Zod schemas. If this test fails, run:
|
||||
*
|
||||
* pnpm --filter @roo-code/types generate:schema
|
||||
*
|
||||
* to regenerate the schema file.
|
||||
*/
|
||||
describe("roomodes schema sync", () => {
|
||||
it("should match the dynamically generated schema from Zod types", () => {
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||
const schemaPath = path.resolve(__dirname, "../../../../schemas/roomodes.json")
|
||||
const checkedIn = JSON.parse(fs.readFileSync(schemaPath, "utf-8"))
|
||||
|
||||
const generated = generateRoomodesJsonSchema()
|
||||
|
||||
expect(checkedIn).toEqual(generated)
|
||||
})
|
||||
})
|
||||
438
packages/types/src/__tests__/roomodes-schema.spec.ts
Normal file
438
packages/types/src/__tests__/roomodes-schema.spec.ts
Normal file
|
|
@ -0,0 +1,438 @@
|
|||
/**
|
||||
* Validates the generated schemas/roomodes.json against sample configurations
|
||||
* using AJV. The schema itself is dynamically generated from the Zod types in
|
||||
* packages/types/src/mode.ts -- see packages/types/scripts/generate-roomodes-schema.ts.
|
||||
*
|
||||
* A separate drift-detection test (roomodes-schema-sync.spec.ts) ensures the
|
||||
* checked-in schema stays in sync with the Zod source of truth.
|
||||
*/
|
||||
import { describe, it, expect, beforeAll } from "vitest"
|
||||
import Ajv, { type ValidateFunction } from "ajv"
|
||||
import * as fs from "fs"
|
||||
import * as path from "path"
|
||||
import { fileURLToPath } from "url"
|
||||
|
||||
describe("roomodes JSON schema", () => {
|
||||
let schema: Record<string, unknown>
|
||||
let validate: ValidateFunction
|
||||
|
||||
beforeAll(() => {
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||
const schemaPath = path.resolve(__dirname, "../../../../schemas/roomodes.json")
|
||||
schema = JSON.parse(fs.readFileSync(schemaPath, "utf-8"))
|
||||
const ajv = new Ajv.default({ strict: false })
|
||||
validate = ajv.compile(schema)
|
||||
})
|
||||
|
||||
it("should be a valid JSON Schema", () => {
|
||||
expect(validate).toBeDefined()
|
||||
})
|
||||
|
||||
it("should accept a minimal valid .roomodes config", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "my-mode",
|
||||
name: "My Mode",
|
||||
roleDefinition: "You are a helpful assistant.",
|
||||
groups: ["read"],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(validate.errors).toBeNull()
|
||||
expect(valid).toBe(true)
|
||||
})
|
||||
|
||||
it("should accept a mode with all optional properties", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "full-mode",
|
||||
name: "Full Mode",
|
||||
roleDefinition: "A complete mode definition.",
|
||||
whenToUse: "Use when you need everything.",
|
||||
description: "A mode with all properties.",
|
||||
customInstructions: "Follow these additional rules.",
|
||||
groups: ["read", "edit", "command", "mcp"],
|
||||
source: "project",
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(validate.errors).toBeNull()
|
||||
expect(valid).toBe(true)
|
||||
})
|
||||
|
||||
it("should accept the built-in architect mode with tuple-style edit group", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "architect",
|
||||
name: "Architect",
|
||||
roleDefinition: "You are an experienced technical leader.",
|
||||
whenToUse: "Use this mode when you need to plan.",
|
||||
description: "Plan and design before implementation",
|
||||
groups: ["read", ["edit", { fileRegex: "\\.md$", description: "Markdown files only" }], "mcp"],
|
||||
source: "project",
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(validate.errors).toBeNull()
|
||||
expect(valid).toBe(true)
|
||||
})
|
||||
|
||||
it("should accept a tuple group entry with only fileRegex", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "restricted",
|
||||
name: "Restricted",
|
||||
roleDefinition: "Limited editor.",
|
||||
groups: [["edit", { fileRegex: "\\.ts$" }]],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(validate.errors).toBeNull()
|
||||
expect(valid).toBe(true)
|
||||
})
|
||||
|
||||
it("should accept a tuple group entry with empty options", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "empty-opts",
|
||||
name: "Empty Options",
|
||||
roleDefinition: "Mode with empty group options.",
|
||||
groups: [["edit", {}]],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(validate.errors).toBeNull()
|
||||
expect(valid).toBe(true)
|
||||
})
|
||||
|
||||
it("should accept the modes tool group", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "orchestrator",
|
||||
name: "Orchestrator",
|
||||
roleDefinition: "You orchestrate other modes.",
|
||||
groups: ["read", "modes"],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(validate.errors).toBeNull()
|
||||
expect(valid).toBe(true)
|
||||
})
|
||||
|
||||
it("should reject a config missing customModes", () => {
|
||||
const config = {}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(valid).toBe(false)
|
||||
})
|
||||
|
||||
it("should reject a mode missing required slug", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
name: "No Slug",
|
||||
roleDefinition: "Missing slug.",
|
||||
groups: ["read"],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(valid).toBe(false)
|
||||
})
|
||||
|
||||
it("should reject a mode missing required groups", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "no-groups",
|
||||
name: "No Groups",
|
||||
roleDefinition: "Missing groups.",
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(valid).toBe(false)
|
||||
})
|
||||
|
||||
it("should reject a slug with invalid characters", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "invalid slug!",
|
||||
name: "Bad Slug",
|
||||
roleDefinition: "Invalid slug characters.",
|
||||
groups: ["read"],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(valid).toBe(false)
|
||||
})
|
||||
|
||||
it("should reject an invalid tool group name", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "bad-group",
|
||||
name: "Bad Group",
|
||||
roleDefinition: "Invalid group name.",
|
||||
groups: ["nonexistent"],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(valid).toBe(false)
|
||||
})
|
||||
|
||||
it("should reject additional properties on CustomMode", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "extra-props",
|
||||
name: "Extra Props",
|
||||
roleDefinition: "Has extra properties.",
|
||||
groups: ["read"],
|
||||
unknownField: true,
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(valid).toBe(false)
|
||||
})
|
||||
|
||||
it("should reject additional properties on GroupOptions", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "bad-opts",
|
||||
name: "Bad Options",
|
||||
roleDefinition: "Extra options properties.",
|
||||
groups: [["edit", { fileRegex: "\\.md$", unknownOpt: true }]],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(valid).toBe(false)
|
||||
})
|
||||
|
||||
it("should reject a tuple with more than 2 elements", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "big-tuple",
|
||||
name: "Big Tuple",
|
||||
roleDefinition: "Too many tuple elements.",
|
||||
groups: [["edit", { fileRegex: "\\.md$" }, "extra"]],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(valid).toBe(false)
|
||||
})
|
||||
|
||||
it("should reject an invalid source value", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "bad-source",
|
||||
name: "Bad Source",
|
||||
roleDefinition: "Invalid source.",
|
||||
groups: ["read"],
|
||||
source: "unknown",
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(valid).toBe(false)
|
||||
})
|
||||
|
||||
it("should accept an empty customModes array", () => {
|
||||
const config = {
|
||||
customModes: [],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(validate.errors).toBeNull()
|
||||
expect(valid).toBe(true)
|
||||
})
|
||||
|
||||
it("should accept the browser tool group (deprecated but valid)", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "browser-mode",
|
||||
name: "Browser Mode",
|
||||
roleDefinition: "A mode that uses the browser tool group.",
|
||||
groups: ["read", "browser", "command"],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(validate.errors).toBeNull()
|
||||
expect(valid).toBe(true)
|
||||
})
|
||||
|
||||
it("should accept a browser tuple group entry", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "browser-tuple",
|
||||
name: "Browser Tuple",
|
||||
roleDefinition: "A mode with browser tuple.",
|
||||
groups: [["browser", { fileRegex: "\\.html$", description: "HTML files only" }]],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(validate.errors).toBeNull()
|
||||
expect(valid).toBe(true)
|
||||
})
|
||||
|
||||
it("should accept a mode with rulesFiles", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "rules-mode",
|
||||
name: "Rules Mode",
|
||||
roleDefinition: "A mode with rules files.",
|
||||
groups: ["read"],
|
||||
rulesFiles: [
|
||||
{
|
||||
relativePath: "rule1.md",
|
||||
content: "# Rule 1\nFollow this rule.",
|
||||
},
|
||||
{
|
||||
relativePath: "subfolder/rule2.md",
|
||||
content: "# Rule 2\nFollow this other rule.",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(validate.errors).toBeNull()
|
||||
expect(valid).toBe(true)
|
||||
})
|
||||
|
||||
it("should accept a mode with empty rulesFiles array", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "empty-rules",
|
||||
name: "Empty Rules",
|
||||
roleDefinition: "A mode with empty rules files.",
|
||||
groups: ["read"],
|
||||
rulesFiles: [],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(validate.errors).toBeNull()
|
||||
expect(valid).toBe(true)
|
||||
})
|
||||
|
||||
it("should accept rulesFiles entries with only relativePath (content is optional)", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "path-only-rules",
|
||||
name: "Path Only Rules",
|
||||
roleDefinition: "A mode with rules files that only have relativePath.",
|
||||
groups: ["read"],
|
||||
rulesFiles: [{ relativePath: "rule1.md" }],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(validate.errors).toBeNull()
|
||||
expect(valid).toBe(true)
|
||||
})
|
||||
|
||||
it("should reject rulesFiles entries missing required relativePath", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "bad-rules",
|
||||
name: "Bad Rules",
|
||||
roleDefinition: "A mode with invalid rules files.",
|
||||
groups: ["read"],
|
||||
rulesFiles: [{ content: "some content" }],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(valid).toBe(false)
|
||||
})
|
||||
|
||||
it("should reject rulesFiles entries with extra properties", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "extra-rules",
|
||||
name: "Extra Rules",
|
||||
roleDefinition: "A mode with extra rule properties.",
|
||||
groups: ["read"],
|
||||
rulesFiles: [{ relativePath: "rule1.md", content: "content", extra: true }],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(valid).toBe(false)
|
||||
})
|
||||
|
||||
it("should accept multiple modes", () => {
|
||||
const config = {
|
||||
customModes: [
|
||||
{
|
||||
slug: "mode-a",
|
||||
name: "Mode A",
|
||||
roleDefinition: "First mode.",
|
||||
groups: ["read"],
|
||||
},
|
||||
{
|
||||
slug: "mode-b",
|
||||
name: "Mode B",
|
||||
roleDefinition: "Second mode.",
|
||||
groups: ["read", "edit"],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
const valid = validate(config)
|
||||
expect(validate.errors).toBeNull()
|
||||
expect(valid).toBe(true)
|
||||
})
|
||||
})
|
||||
58
packages/types/src/roomodes-schema.ts
Normal file
58
packages/types/src/roomodes-schema.ts
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
/**
|
||||
* Builds the Zod schema for .roomodes configuration files and converts it
|
||||
* to JSON Schema (draft-07). This module is the single source of truth for
|
||||
* both the generator script (scripts/generate-roomodes-schema.ts) and the
|
||||
* drift-detection test.
|
||||
*/
|
||||
|
||||
import { z } from "zod"
|
||||
import { zodToJsonSchema } from "zod-to-json-schema"
|
||||
|
||||
import { toolGroups, deprecatedToolGroups } from "./tool.js"
|
||||
import { groupOptionsSchema, modeConfigSchema } from "./mode.js"
|
||||
|
||||
// Build a ToolGroup enum that includes deprecated groups so existing configs
|
||||
// still validate.
|
||||
const allToolGroups = [...toolGroups, ...deprecatedToolGroups] as [string, ...string[]]
|
||||
const allToolGroupsSchema = z.enum(allToolGroups)
|
||||
|
||||
// Build a GroupEntry schema that uses the extended tool group list.
|
||||
const groupEntrySchema = z.union([allToolGroupsSchema, z.tuple([allToolGroupsSchema, groupOptionsSchema])])
|
||||
|
||||
// Build the RuleFile schema (used during import/export but not part of the
|
||||
// core Zod types).
|
||||
const ruleFileSchema = z.object({
|
||||
relativePath: z.string(),
|
||||
content: z.string().optional(),
|
||||
})
|
||||
|
||||
// Build an extended ModeConfig schema that includes rulesFiles and uses the
|
||||
// extended groups (with deprecated entries).
|
||||
const exportedModeConfigSchema = modeConfigSchema.omit({ groups: true }).extend({
|
||||
groups: z.array(groupEntrySchema),
|
||||
rulesFiles: z.array(ruleFileSchema).optional(),
|
||||
})
|
||||
|
||||
// Build the top-level .roomodes schema.
|
||||
const roomodesZodSchema = z
|
||||
.object({
|
||||
customModes: z.array(exportedModeConfigSchema),
|
||||
})
|
||||
.strict()
|
||||
|
||||
/**
|
||||
* Generates the JSON Schema object for .roomodes configuration files.
|
||||
* Includes metadata fields ($id, title, description).
|
||||
*/
|
||||
export function generateRoomodesJsonSchema(): Record<string, unknown> {
|
||||
const jsonSchema = zodToJsonSchema(roomodesZodSchema, {
|
||||
$refStrategy: "none",
|
||||
target: "jsonSchema7",
|
||||
}) as Record<string, unknown>
|
||||
|
||||
jsonSchema["$id"] = "https://github.com/RooCodeInc/Roo-Code/blob/main/schemas/roomodes.json"
|
||||
jsonSchema["title"] = "Roo Code Custom Modes"
|
||||
jsonSchema["description"] = "Schema for .roomodes configuration files used by Roo Code to define custom modes."
|
||||
|
||||
return jsonSchema
|
||||
}
|
||||
53
pnpm-lock.yaml
generated
53
pnpm-lock.yaml
generated
|
|
@ -350,8 +350,8 @@ importers:
|
|||
specifier: workspace:^
|
||||
version: link:../../packages/evals
|
||||
'@roo-code/types':
|
||||
specifier: ^1.108.0
|
||||
version: 1.108.0
|
||||
specifier: workspace:^
|
||||
version: link:../../packages/types
|
||||
'@tanstack/react-query':
|
||||
specifier: ^5.90.20
|
||||
version: 5.90.20(react@18.3.1)
|
||||
|
|
@ -725,6 +725,9 @@ importers:
|
|||
'@types/node':
|
||||
specifier: ^24.1.0
|
||||
version: 24.2.1
|
||||
ajv:
|
||||
specifier: ^8.18.0
|
||||
version: 8.18.0
|
||||
globals:
|
||||
specifier: ^16.3.0
|
||||
version: 16.3.0
|
||||
|
|
@ -734,6 +737,9 @@ importers:
|
|||
vitest:
|
||||
specifier: ^3.2.3
|
||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.1)(@vitest/ui@3.2.4)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.30.1)(tsx@4.19.4)(yaml@2.8.0)
|
||||
zod-to-json-schema:
|
||||
specifier: ^3.25.1
|
||||
version: 3.25.1(zod@3.25.76)
|
||||
|
||||
packages/vscode-shim:
|
||||
devDependencies:
|
||||
|
|
@ -3892,9 +3898,6 @@ packages:
|
|||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@roo-code/types@1.108.0':
|
||||
resolution: {integrity: sha512-0Of0DOuU125i1VTI2OTdL0j47xA+JrQr6KyYinYS+CPwUsszUJt2PeWyy/AZYI1w23FYrcCvh8FqycDuwXocSA==}
|
||||
|
||||
'@sec-ant/readable-stream@0.4.1':
|
||||
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
|
||||
|
||||
|
|
@ -4942,6 +4945,9 @@ packages:
|
|||
ajv@6.12.6:
|
||||
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
|
||||
|
||||
ajv@8.18.0:
|
||||
resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==}
|
||||
|
||||
ansi-colors@4.1.3:
|
||||
resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
|
||||
engines: {node: '>=6'}
|
||||
|
|
@ -5177,6 +5183,7 @@ packages:
|
|||
basic-ftp@5.0.5:
|
||||
resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
deprecated: Security vulnerability fixed in 5.2.0, please upgrade
|
||||
|
||||
better-path-resolve@1.0.0:
|
||||
resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
|
||||
|
|
@ -6624,6 +6631,9 @@ packages:
|
|||
fast-shallow-equal@1.0.0:
|
||||
resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==}
|
||||
|
||||
fast-uri@3.1.0:
|
||||
resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
|
||||
|
||||
fast-xml-parser@5.2.3:
|
||||
resolution: {integrity: sha512-OdCYfRqfpuLUFonTNjvd30rCBZUneHpSQkCqfaeWQ9qrKcl6XlWeDBNVwGb+INAIxRshuN2jF+BE0L6gbBO2mw==}
|
||||
hasBin: true
|
||||
|
|
@ -7652,6 +7662,9 @@ packages:
|
|||
json-schema-traverse@0.4.1:
|
||||
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
|
||||
|
||||
json-schema-traverse@1.0.0:
|
||||
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
|
||||
|
||||
json-schema@0.4.0:
|
||||
resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
|
||||
|
||||
|
|
@ -9434,6 +9447,10 @@ packages:
|
|||
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
require-from-string@2.0.2:
|
||||
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
resize-observer-polyfill@1.5.1:
|
||||
resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
|
||||
|
||||
|
|
@ -11067,6 +11084,11 @@ packages:
|
|||
peerDependencies:
|
||||
zod: 3.25.76
|
||||
|
||||
zod-to-json-schema@3.25.1:
|
||||
resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==}
|
||||
peerDependencies:
|
||||
zod: 3.25.76
|
||||
|
||||
zod-to-ts@1.2.0:
|
||||
resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==}
|
||||
peerDependencies:
|
||||
|
|
@ -13963,10 +13985,6 @@ snapshots:
|
|||
'@rollup/rollup-win32-x64-msvc@4.40.2':
|
||||
optional: true
|
||||
|
||||
'@roo-code/types@1.108.0':
|
||||
dependencies:
|
||||
zod: 3.25.76
|
||||
|
||||
'@sec-ant/readable-stream@0.4.1': {}
|
||||
|
||||
'@sevinf/maybe@0.5.0': {}
|
||||
|
|
@ -15255,6 +15273,13 @@ snapshots:
|
|||
json-schema-traverse: 0.4.1
|
||||
uri-js: 4.4.1
|
||||
|
||||
ajv@8.18.0:
|
||||
dependencies:
|
||||
fast-deep-equal: 3.1.3
|
||||
fast-uri: 3.1.0
|
||||
json-schema-traverse: 1.0.0
|
||||
require-from-string: 2.0.2
|
||||
|
||||
ansi-colors@4.1.3: {}
|
||||
|
||||
ansi-escapes@7.0.0:
|
||||
|
|
@ -17097,6 +17122,8 @@ snapshots:
|
|||
|
||||
fast-shallow-equal@1.0.0: {}
|
||||
|
||||
fast-uri@3.1.0: {}
|
||||
|
||||
fast-xml-parser@5.2.3:
|
||||
dependencies:
|
||||
strnum: 2.1.1
|
||||
|
|
@ -18226,6 +18253,8 @@ snapshots:
|
|||
|
||||
json-schema-traverse@0.4.1: {}
|
||||
|
||||
json-schema-traverse@1.0.0: {}
|
||||
|
||||
json-schema@0.4.0: {}
|
||||
|
||||
json-stable-stringify-without-jsonify@1.0.1: {}
|
||||
|
|
@ -20439,6 +20468,8 @@ snapshots:
|
|||
|
||||
require-directory@2.1.1: {}
|
||||
|
||||
require-from-string@2.0.2: {}
|
||||
|
||||
resize-observer-polyfill@1.5.1: {}
|
||||
|
||||
resolve-from@4.0.0: {}
|
||||
|
|
@ -22384,6 +22415,10 @@ snapshots:
|
|||
dependencies:
|
||||
zod: 3.25.76
|
||||
|
||||
zod-to-json-schema@3.25.1(zod@3.25.76):
|
||||
dependencies:
|
||||
zod: 3.25.76
|
||||
|
||||
zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.25.76):
|
||||
dependencies:
|
||||
typescript: 5.8.3
|
||||
|
|
|
|||
96
schemas/roomodes.json
Normal file
96
schemas/roomodes.json
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"customModes": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"slug": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-zA-Z0-9-]+$"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"roleDefinition": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"whenToUse": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"customInstructions": {
|
||||
"type": "string"
|
||||
},
|
||||
"source": {
|
||||
"type": "string",
|
||||
"enum": ["global", "project"]
|
||||
},
|
||||
"groups": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"enum": ["read", "edit", "command", "mcp", "modes", "browser"]
|
||||
},
|
||||
{
|
||||
"type": "array",
|
||||
"minItems": 2,
|
||||
"maxItems": 2,
|
||||
"items": [
|
||||
{
|
||||
"type": "string",
|
||||
"enum": ["read", "edit", "command", "mcp", "modes", "browser"]
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"fileRegex": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"rulesFiles": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"relativePath": {
|
||||
"type": "string"
|
||||
},
|
||||
"content": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": ["relativePath"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["slug", "name", "roleDefinition", "groups"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["customModes"],
|
||||
"additionalProperties": false,
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"$id": "https://github.com/RooCodeInc/Roo-Code/blob/main/schemas/roomodes.json",
|
||||
"title": "Roo Code Custom Modes",
|
||||
"description": "Schema for .roomodes configuration files used by Roo Code to define custom modes."
|
||||
}
|
||||
|
|
@ -605,4 +605,233 @@ describe("NativeOllamaHandler", () => {
|
|||
expect(firstEndIndex).toBeGreaterThan(lastPartialIndex)
|
||||
})
|
||||
})
|
||||
|
||||
describe("native thinking support", () => {
|
||||
it("should yield reasoning from native thinking field", async () => {
|
||||
// Mock response with native thinking field (Ollama 0.5.0+)
|
||||
mockChat.mockImplementation(async function* () {
|
||||
yield {
|
||||
message: {
|
||||
content: "",
|
||||
thinking: "Let me analyze this problem...",
|
||||
},
|
||||
}
|
||||
yield {
|
||||
message: {
|
||||
content: "",
|
||||
thinking: " First, I need to consider X.",
|
||||
},
|
||||
}
|
||||
yield {
|
||||
message: {
|
||||
content: "The answer is 42",
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
const stream = handler.createMessage("System", [{ role: "user" as const, content: "What is the answer?" }])
|
||||
const results = []
|
||||
|
||||
for await (const chunk of stream) {
|
||||
results.push(chunk)
|
||||
}
|
||||
|
||||
// Should have reasoning chunks from native thinking field
|
||||
const reasoningChunks = results.filter((r) => r.type === "reasoning")
|
||||
expect(reasoningChunks).toHaveLength(2)
|
||||
expect(reasoningChunks[0]).toEqual({ type: "reasoning", text: "Let me analyze this problem..." })
|
||||
expect(reasoningChunks[1]).toEqual({ type: "reasoning", text: " First, I need to consider X." })
|
||||
|
||||
// Should also have the text response
|
||||
const textChunks = results.filter((r) => r.type === "text")
|
||||
expect(textChunks.some((c) => c.text === "The answer is 42")).toBe(true)
|
||||
})
|
||||
|
||||
it("should pass think option when reasoning is enabled with model support", async () => {
|
||||
mockGetOllamaModels.mockResolvedValue({
|
||||
"thinking-model": {
|
||||
contextWindow: 4096,
|
||||
maxTokens: 4096,
|
||||
supportsImages: false,
|
||||
supportsPromptCache: false,
|
||||
supportsReasoningEffort: true,
|
||||
},
|
||||
})
|
||||
|
||||
const options: ApiHandlerOptions = {
|
||||
apiModelId: "thinking-model",
|
||||
ollamaModelId: "thinking-model",
|
||||
ollamaBaseUrl: "http://localhost:11434",
|
||||
enableReasoningEffort: true,
|
||||
reasoningEffort: "high",
|
||||
}
|
||||
|
||||
handler = new NativeOllamaHandler(options)
|
||||
|
||||
mockChat.mockImplementation(async function* () {
|
||||
yield { message: { content: "Response" } }
|
||||
})
|
||||
|
||||
const stream = handler.createMessage("System", [{ role: "user" as const, content: "Test" }])
|
||||
|
||||
for await (const _ of stream) {
|
||||
// consume stream
|
||||
}
|
||||
|
||||
// Verify think option was passed with high value
|
||||
expect(mockChat).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
think: "high",
|
||||
}),
|
||||
)
|
||||
})
|
||||
|
||||
it("should pass think: medium when reasoningEffort is medium", async () => {
|
||||
mockGetOllamaModels.mockResolvedValue({
|
||||
"thinking-model": {
|
||||
contextWindow: 4096,
|
||||
maxTokens: 4096,
|
||||
supportsImages: false,
|
||||
supportsPromptCache: false,
|
||||
supportsReasoningEffort: true,
|
||||
},
|
||||
})
|
||||
|
||||
const options: ApiHandlerOptions = {
|
||||
apiModelId: "thinking-model",
|
||||
ollamaModelId: "thinking-model",
|
||||
ollamaBaseUrl: "http://localhost:11434",
|
||||
enableReasoningEffort: true,
|
||||
reasoningEffort: "medium",
|
||||
}
|
||||
|
||||
handler = new NativeOllamaHandler(options)
|
||||
|
||||
mockChat.mockImplementation(async function* () {
|
||||
yield { message: { content: "Response" } }
|
||||
})
|
||||
|
||||
const stream = handler.createMessage("System", [{ role: "user" as const, content: "Test" }])
|
||||
|
||||
for await (const _ of stream) {
|
||||
// consume stream
|
||||
}
|
||||
|
||||
expect(mockChat).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
think: "medium",
|
||||
}),
|
||||
)
|
||||
})
|
||||
|
||||
it("should pass think: low when reasoningEffort is low or minimal", async () => {
|
||||
mockGetOllamaModels.mockResolvedValue({
|
||||
"thinking-model": {
|
||||
contextWindow: 4096,
|
||||
maxTokens: 4096,
|
||||
supportsImages: false,
|
||||
supportsPromptCache: false,
|
||||
supportsReasoningEffort: true,
|
||||
},
|
||||
})
|
||||
|
||||
const options: ApiHandlerOptions = {
|
||||
apiModelId: "thinking-model",
|
||||
ollamaModelId: "thinking-model",
|
||||
ollamaBaseUrl: "http://localhost:11434",
|
||||
enableReasoningEffort: true,
|
||||
reasoningEffort: "low",
|
||||
}
|
||||
|
||||
handler = new NativeOllamaHandler(options)
|
||||
|
||||
mockChat.mockImplementation(async function* () {
|
||||
yield { message: { content: "Response" } }
|
||||
})
|
||||
|
||||
const stream = handler.createMessage("System", [{ role: "user" as const, content: "Test" }])
|
||||
|
||||
for await (const _ of stream) {
|
||||
// consume stream
|
||||
}
|
||||
|
||||
expect(mockChat).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
think: "low",
|
||||
}),
|
||||
)
|
||||
})
|
||||
|
||||
it("should not pass think option when reasoning is not enabled", async () => {
|
||||
mockGetOllamaModels.mockResolvedValue({
|
||||
llama2: {
|
||||
contextWindow: 4096,
|
||||
maxTokens: 4096,
|
||||
supportsImages: false,
|
||||
supportsPromptCache: false,
|
||||
// No supportsReasoningEffort
|
||||
},
|
||||
})
|
||||
|
||||
const options: ApiHandlerOptions = {
|
||||
apiModelId: "llama2",
|
||||
ollamaModelId: "llama2",
|
||||
ollamaBaseUrl: "http://localhost:11434",
|
||||
// No enableReasoningEffort
|
||||
}
|
||||
|
||||
handler = new NativeOllamaHandler(options)
|
||||
|
||||
mockChat.mockImplementation(async function* () {
|
||||
yield { message: { content: "Response" } }
|
||||
})
|
||||
|
||||
const stream = handler.createMessage("System", [{ role: "user" as const, content: "Test" }])
|
||||
|
||||
for await (const _ of stream) {
|
||||
// consume stream
|
||||
}
|
||||
|
||||
// Verify think option was NOT passed (or is undefined)
|
||||
expect(mockChat).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
think: undefined,
|
||||
}),
|
||||
)
|
||||
})
|
||||
|
||||
it("should handle both native thinking and tag-based reasoning", async () => {
|
||||
// Some models might use both methods
|
||||
mockChat.mockImplementation(async function* () {
|
||||
yield {
|
||||
message: {
|
||||
content: "",
|
||||
thinking: "Native thinking here",
|
||||
},
|
||||
}
|
||||
yield {
|
||||
message: {
|
||||
content: "<think>Tag-based thinking</think>The final answer",
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
const stream = handler.createMessage("System", [{ role: "user" as const, content: "Test" }])
|
||||
const results = []
|
||||
|
||||
for await (const chunk of stream) {
|
||||
results.push(chunk)
|
||||
}
|
||||
|
||||
// Should have reasoning from both sources
|
||||
const reasoningChunks = results.filter((r) => r.type === "reasoning")
|
||||
expect(reasoningChunks.length).toBeGreaterThanOrEqual(2)
|
||||
|
||||
// Check native thinking was captured
|
||||
expect(reasoningChunks.some((c) => c.text === "Native thinking here")).toBe(true)
|
||||
|
||||
// Check tag-based thinking was captured
|
||||
expect(reasoningChunks.some((c) => c.text === "Tag-based thinking")).toBe(true)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import { ModelInfo, openAiModelInfoSaneDefaults, DEEP_SEEK_DEFAULT_TEMPERATURE }
|
|||
import { ApiStream } from "../transform/stream"
|
||||
import { BaseProvider } from "./base-provider"
|
||||
import type { ApiHandlerOptions } from "../../shared/api"
|
||||
import { shouldUseReasoningEffort } from "../../shared/api"
|
||||
import { getOllamaModels } from "./fetchers/ollama"
|
||||
import { TagMatcher } from "../../utils/tag-matcher"
|
||||
import type { SingleCompletionHandler, ApiHandlerCreateMessageMetadata } from "../index"
|
||||
|
|
@ -14,6 +15,9 @@ interface OllamaChatOptions {
|
|||
num_ctx?: number
|
||||
}
|
||||
|
||||
// Ollama think option type: boolean or effort level
|
||||
type OllamaThinkOption = boolean | "high" | "medium" | "low"
|
||||
|
||||
function convertToOllamaMessages(anthropicMessages: Anthropic.Messages.MessageParam[]): Message[] {
|
||||
const ollamaMessages: Message[] = []
|
||||
|
||||
|
|
@ -155,6 +159,37 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio
|
|||
this.options = options
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines the Ollama `think` option value based on model and settings.
|
||||
* Returns undefined if thinking is not enabled, otherwise returns the
|
||||
* appropriate effort level or true for basic thinking.
|
||||
*/
|
||||
private getThinkOption(modelInfo: ModelInfo): OllamaThinkOption | undefined {
|
||||
// Check if reasoning should be enabled based on model and settings
|
||||
const useReasoning = shouldUseReasoningEffort({
|
||||
model: modelInfo,
|
||||
settings: this.options,
|
||||
})
|
||||
|
||||
if (!useReasoning) {
|
||||
return undefined
|
||||
}
|
||||
|
||||
// Map reasoning effort to Ollama think option
|
||||
const effort = this.options.reasoningEffort
|
||||
|
||||
if (effort === "high" || effort === "xhigh") {
|
||||
return "high"
|
||||
} else if (effort === "medium") {
|
||||
return "medium"
|
||||
} else if (effort === "low" || effort === "minimal") {
|
||||
return "low"
|
||||
}
|
||||
|
||||
// Default to true (let Ollama decide) when reasoning is enabled but no specific effort
|
||||
return true
|
||||
}
|
||||
|
||||
private ensureClient(): Ollama {
|
||||
if (!this.client) {
|
||||
try {
|
||||
|
|
@ -206,7 +241,7 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio
|
|||
metadata?: ApiHandlerCreateMessageMetadata,
|
||||
): ApiStream {
|
||||
const client = this.ensureClient()
|
||||
const { id: modelId } = await this.fetchModel()
|
||||
const { id: modelId, info: modelInfo } = await this.fetchModel()
|
||||
const useR1Format = modelId.toLowerCase().includes("deepseek-r1")
|
||||
|
||||
const ollamaMessages: Message[] = [
|
||||
|
|
@ -214,6 +249,9 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio
|
|||
...convertToOllamaMessages(messages),
|
||||
]
|
||||
|
||||
// Determine if native thinking should be enabled
|
||||
const thinkOption = this.getThinkOption(modelInfo)
|
||||
|
||||
const matcher = new TagMatcher(
|
||||
"think",
|
||||
(chunk) =>
|
||||
|
|
@ -235,12 +273,14 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio
|
|||
}
|
||||
|
||||
// Create the actual API request promise
|
||||
// Include think option if reasoning is enabled (Ollama 0.5.0+)
|
||||
const stream = await client.chat({
|
||||
model: modelId,
|
||||
messages: ollamaMessages,
|
||||
stream: true,
|
||||
options: chatOptions,
|
||||
tools: this.convertToolsToOllama(metadata?.tools),
|
||||
think: thinkOption,
|
||||
})
|
||||
|
||||
let totalInputTokens = 0
|
||||
|
|
@ -252,8 +292,15 @@ export class NativeOllamaHandler extends BaseProvider implements SingleCompletio
|
|||
|
||||
try {
|
||||
for await (const chunk of stream) {
|
||||
// Handle native thinking field (Ollama 0.5.0+)
|
||||
// This is the preferred method for models that support it
|
||||
const thinking = (chunk.message as Message & { thinking?: string }).thinking
|
||||
if (typeof thinking === "string" && thinking.length > 0) {
|
||||
yield { type: "reasoning", text: thinking }
|
||||
}
|
||||
|
||||
if (typeof chunk.message.content === "string" && chunk.message.content.length > 0) {
|
||||
// Process content through matcher for reasoning detection
|
||||
// Process content through matcher for reasoning detection (fallback for <think> tags)
|
||||
for (const matcherChunk of matcher.update(chunk.message.content)) {
|
||||
yield matcherChunk
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,6 +69,12 @@ export class QwenCodeHandler extends BaseProvider implements SingleCompletionHan
|
|||
this.client = new OpenAI({
|
||||
apiKey: "dummy-key-will-be-replaced",
|
||||
baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1",
|
||||
defaultHeaders: {
|
||||
"User-Agent": `QwenCode/1.0.0 (${os.platform()}; ${os.arch()})`,
|
||||
"X-DashScope-CacheControl": "enable",
|
||||
"X-DashScope-UserAgent": `QwenCode/1.0.0 (${os.platform()}; ${os.arch()})`,
|
||||
"X-DashScope-AuthType": "qwen-oauth",
|
||||
},
|
||||
})
|
||||
}
|
||||
return this.client
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ export class ClineProvider
|
|||
|
||||
public isViewLaunched = false
|
||||
public settingsImportedAt?: number
|
||||
public readonly latestAnnouncementId = "mar-2026-v3.51.0-gpt-54-slash-skills" // v3.51.0 OpenAI GPT-5.4 support and slash command skills
|
||||
public readonly latestAnnouncementId = "apr-2026-v3.52.0-poe-xai-minimax" // v3.52.0 Poe provider, xAI improvements, and MiniMax fixes
|
||||
public readonly providerSettingsManager: ProviderSettingsManager
|
||||
public readonly customModesManager: CustomModesManager
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
"displayName": "%extension.displayName%",
|
||||
"description": "%extension.description%",
|
||||
"publisher": "RooVeterinaryInc",
|
||||
"version": "3.51.1",
|
||||
"version": "3.52.0",
|
||||
"icon": "assets/icons/icon.png",
|
||||
"galleryBanner": {
|
||||
"color": "#617A91",
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ vi.mock("@src/utils/vscode", () => ({
|
|||
|
||||
vi.mock("@roo/package", () => ({
|
||||
Package: {
|
||||
version: "3.51.0",
|
||||
version: "3.52.0",
|
||||
},
|
||||
}))
|
||||
|
||||
|
|
@ -34,9 +34,9 @@ vi.mock("@src/i18n/TranslationContext", () => ({
|
|||
const translations: Record<string, string> = {
|
||||
"chat:announcement.release.heading": "What's New:",
|
||||
"chat:announcement.release.gpt54":
|
||||
"OpenAI GPT-5.4 Support: Added OpenAI GPT-5.4 and GPT-5.3 Chat Latest so you can use the newest OpenAI chat models in Roo Code.",
|
||||
"Poe Provider: Added Poe as an AI provider so you can access Poe models directly in Roo Code.",
|
||||
"chat:announcement.release.slashSkills":
|
||||
"Slash Command Skills: Skills can now be exposed as slash commands with fallback execution for faster workflows.",
|
||||
"xAI and MiniMax Improvements: Migrated the xAI provider to the Responses API, added Grok-4.20 defaults, and fixed MiniMax model listings and context window handling for a more reliable setup.",
|
||||
}
|
||||
|
||||
if (key === "chat:announcement.title") {
|
||||
|
|
@ -49,18 +49,18 @@ vi.mock("@src/i18n/TranslationContext", () => ({
|
|||
}))
|
||||
|
||||
describe("Announcement", () => {
|
||||
it("renders the v3.51.0 announcement title and highlights", () => {
|
||||
it("renders the v3.52.0 announcement title and highlights", () => {
|
||||
render(<Announcement hideAnnouncement={vi.fn()} />)
|
||||
|
||||
expect(screen.getByText("Roo Code 3.51.0 Released")).toBeInTheDocument()
|
||||
expect(screen.getByText("Roo Code 3.52.0 Released")).toBeInTheDocument()
|
||||
expect(
|
||||
screen.getByText(
|
||||
"OpenAI GPT-5.4 Support: Added OpenAI GPT-5.4 and GPT-5.3 Chat Latest so you can use the newest OpenAI chat models in Roo Code.",
|
||||
"Poe Provider: Added Poe as an AI provider so you can access Poe models directly in Roo Code.",
|
||||
),
|
||||
).toBeInTheDocument()
|
||||
expect(
|
||||
screen.getByText(
|
||||
"Slash Command Skills: Skills can now be exposed as slash commands with fallback execution for faster workflows.",
|
||||
"xAI and MiniMax Improvements: Migrated the xAI provider to the Responses API, added Grok-4.20 defaults, and fixed MiniMax model listings and context window handling for a more reliable setup.",
|
||||
),
|
||||
).toBeInTheDocument()
|
||||
})
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/ca/chat.json
generated
4
webview-ui/src/i18n/locales/ca/chat.json
generated
|
|
@ -348,8 +348,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "Què hi ha de nou:",
|
||||
"gpt54": "Compatibilitat amb OpenAI GPT-5.4: Hem afegit OpenAI GPT-5.4 i GPT-5.3 Chat Latest perquè puguis fer servir els models de xat més nous d’OpenAI a Roo Code.",
|
||||
"slashSkills": "Skills com a ordres slash: Ara les skills es poden exposar com a ordres slash amb execució de reserva per accelerar els fluxos de treball.",
|
||||
"gpt54": "Proveïdor Poe: S'ha afegit Poe com a proveïdor d’IA perquè puguis accedir directament als models de Poe a Roo Code.",
|
||||
"slashSkills": "Millores a xAI i MiniMax: S'ha migrat el proveïdor xAI a la Responses API, s'hi han afegit utilitats de transformació reutilitzables, s'han actualitzat els valors per defecte de Grok-4.20 i s'han corregit els llistats de models de MiniMax i la gestió de la finestra de context per oferir una configuració més fiable.",
|
||||
"geminiPro": "Suport per Gemini 3.1 Pro: S'ha afegit el suport per al model Gemini 3.1 Pro i s'ha establert com a model Gemini per defecte per a un millor rendiment.",
|
||||
"cliNdjson": "Protocol NDJSON del CLI: Nou protocol NDJSON via stdin, subcomandes de llistat i comanda d'execució modularitzada per a fluxos de treball CLI més flexibles.",
|
||||
"cliRelease": "CLI v0.1.0: El CLI de Roo Code arriba a la seva primera versió oficial amb una interfície de comandes estable."
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/de/chat.json
generated
4
webview-ui/src/i18n/locales/de/chat.json
generated
|
|
@ -348,8 +348,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "Was ist neu:",
|
||||
"gpt54": "OpenAI GPT-5.4-Unterstützung: OpenAI GPT-5.4 und GPT-5.3 Chat Latest wurden hinzugefügt, damit du die neuesten OpenAI-Chatmodelle in Roo Code nutzen kannst.",
|
||||
"slashSkills": "Slash-Command-Skills: Skills können jetzt als Slash-Commands mit Fallback-Ausführung verfügbar gemacht werden, damit Workflows schneller ablaufen.",
|
||||
"gpt54": "Poe-Anbieter: Poe als KI-Anbieter hinzugefügt, damit du direkt in Roo Code auf Poe-Modelle zugreifen kannst.",
|
||||
"slashSkills": "xAI- und MiniMax-Verbesserungen: Den xAI-Anbieter auf die Responses API migriert, wiederverwendbare Transformations-Utilities hinzugefügt, Grok-4.20-Standards aktualisiert und MiniMax-Modelllisten sowie die Handhabung des Kontextfensters für eine zuverlässigere Einrichtung korrigiert.",
|
||||
"geminiPro": "Gemini 3.1 Pro Unterstützung: Gemini 3.1 Pro wurde als Modell hinzugefügt und als Standard-Gemini-Modell für bessere Leistung festgelegt.",
|
||||
"cliNdjson": "CLI NDJSON-Protokoll: Neues NDJSON-stdin-Protokoll, List-Unterbefehle und modularisierter Run-Befehl für flexiblere CLI-Workflows.",
|
||||
"cliRelease": "CLI v0.1.0: Das Roo Code CLI erreicht seine erste offizielle Veröffentlichung mit einer stabilen Befehlsoberfläche."
|
||||
|
|
|
|||
|
|
@ -367,8 +367,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "What's New:",
|
||||
"gpt54": "OpenAI GPT-5.4 Support: Added OpenAI GPT-5.4 and GPT-5.3 Chat Latest so you can use the newest OpenAI chat models in Roo Code.",
|
||||
"slashSkills": "Slash Command Skills: Skills can now be exposed as slash commands with fallback execution for faster workflows."
|
||||
"gpt54": "Poe Provider: Added Poe as an AI provider so you can access Poe models directly in Roo Code.",
|
||||
"slashSkills": "xAI and MiniMax Improvements: Migrated the xAI provider to the Responses API, added Grok-4.20 defaults, and fixed MiniMax model listings and context window handling for a more reliable setup."
|
||||
},
|
||||
"cloudAgents": {
|
||||
"heading": "New in the Cloud:",
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/es/chat.json
generated
4
webview-ui/src/i18n/locales/es/chat.json
generated
|
|
@ -348,8 +348,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "Qué hay de nuevo:",
|
||||
"gpt54": "Compatibilidad con OpenAI GPT-5.4: Se añadieron OpenAI GPT-5.4 y GPT-5.3 Chat Latest para que puedas usar los modelos de chat más recientes de OpenAI en Roo Code.",
|
||||
"slashSkills": "Skills como comandos slash: Ahora las skills pueden exponerse como comandos slash con ejecución de respaldo para activar flujos de trabajo más rápido.",
|
||||
"gpt54": "Proveedor Poe: Se añadió Poe como proveedor de IA para que puedas acceder directamente a los modelos de Poe en Roo Code.",
|
||||
"slashSkills": "Mejoras en xAI y MiniMax: Se migró el proveedor xAI a la Responses API, se añadieron utilidades de transformación reutilizables, se actualizaron los valores predeterminados de Grok-4.20 y se corrigieron los listados de modelos de MiniMax y el manejo de la ventana de contexto para una configuración más fiable.",
|
||||
"geminiPro": "Soporte para Gemini 3.1 Pro: Se añadió soporte para el modelo Gemini 3.1 Pro y se estableció como modelo Gemini predeterminado para un mejor rendimiento.",
|
||||
"cliNdjson": "Protocolo NDJSON del CLI: Nuevo protocolo NDJSON por stdin, subcomandos de listado y comando de ejecución modularizado para flujos de trabajo CLI más flexibles.",
|
||||
"cliRelease": "CLI v0.1.0: El CLI de Roo Code alcanza su primera versión oficial con una interfaz de comandos estable."
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/fr/chat.json
generated
4
webview-ui/src/i18n/locales/fr/chat.json
generated
|
|
@ -348,8 +348,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "Quoi de neuf :",
|
||||
"gpt54": "Prise en charge d’OpenAI GPT-5.4 : OpenAI GPT-5.4 et GPT-5.3 Chat Latest ont été ajoutés pour que tu puisses utiliser les modèles de chat OpenAI les plus récents dans Roo Code.",
|
||||
"slashSkills": "Skills en slash commands : Les skills peuvent maintenant être exposées comme slash commands avec une exécution de secours pour accélérer les workflows.",
|
||||
"gpt54": "Fournisseur Poe : Poe a été ajouté comme fournisseur d’IA pour que tu puisses accéder directement aux modèles Poe dans Roo Code.",
|
||||
"slashSkills": "Améliorations xAI et MiniMax : Le fournisseur xAI a été migré vers la Responses API, des utilitaires de transformation réutilisables ont été ajoutés, les valeurs par défaut de Grok-4.20 ont été mises à jour et les listes de modèles MiniMax ainsi que la gestion de la fenêtre de contexte ont été corrigées pour une configuration plus fiable.",
|
||||
"geminiPro": "Support de Gemini 3.1 Pro : Le modèle Gemini 3.1 Pro a été ajouté et défini comme modèle Gemini par défaut pour de meilleures performances.",
|
||||
"cliNdjson": "Protocole NDJSON du CLI : Nouveau protocole NDJSON via stdin, sous-commandes de liste et commande d'exécution modularisée pour des workflows CLI plus flexibles.",
|
||||
"cliRelease": "CLI v0.1.0 : Le CLI de Roo Code atteint sa première version officielle avec une interface de commandes stable."
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/hi/chat.json
generated
4
webview-ui/src/i18n/locales/hi/chat.json
generated
|
|
@ -348,8 +348,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "नया क्या है:",
|
||||
"gpt54": "OpenAI GPT-5.4 सपोर्ट: OpenAI GPT-5.4 और GPT-5.3 Chat Latest जोड़े गए हैं, ताकि आप Roo Code में OpenAI के सबसे नए chat models इस्तेमाल कर सकें।",
|
||||
"slashSkills": "Slash command skills: अब skills को slash commands के रूप में fallback execution के साथ expose किया जा सकता है, जिससे workflows तेज़ हो जाते हैं।",
|
||||
"gpt54": "Poe provider: Poe को AI provider के रूप में जोड़ा गया है, ताकि आप Roo Code में सीधे Poe models तक पहुँच सकें।",
|
||||
"slashSkills": "xAI और MiniMax में सुधार: xAI provider को Responses API पर migrate किया गया है, reusable transform utilities जोड़ी गई हैं, Grok-4.20 defaults अपडेट किए गए हैं, और ज़्यादा भरोसेमंद setup के लिए MiniMax model listings व context window handling को ठीक किया गया है।",
|
||||
"geminiPro": "Gemini 3.1 Pro सपोर्ट: Gemini 3.1 Pro मॉडल का सपोर्ट जोड़ा गया और बेहतर प्रदर्शन के लिए इसे डिफ़ॉल्ट Gemini मॉडल के रूप में सेट किया गया।",
|
||||
"cliNdjson": "CLI NDJSON प्रोटोकॉल: नया NDJSON stdin प्रोटोकॉल, list सबकमांड, और अधिक लचीले CLI वर्कफ़्लो के लिए मॉड्यूलर run कमांड।",
|
||||
"cliRelease": "CLI v0.1.0: Roo Code CLI एक स्थिर कमांड इंटरफ़ेस के साथ अपनी पहली आधिकारिक रिलीज़ तक पहुँचा।"
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/id/chat.json
generated
4
webview-ui/src/i18n/locales/id/chat.json
generated
|
|
@ -377,8 +377,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "Yang Baru:",
|
||||
"gpt54": "Dukungan OpenAI GPT-5.4: OpenAI GPT-5.4 dan GPT-5.3 Chat Latest kini ditambahkan agar kamu bisa memakai model chat OpenAI terbaru di Roo Code.",
|
||||
"slashSkills": "Skill sebagai slash command: Skill sekarang bisa diekspos sebagai slash command dengan eksekusi fallback supaya workflow bisa berjalan lebih cepat.",
|
||||
"gpt54": "Provider Poe: Poe ditambahkan sebagai provider AI agar kamu bisa langsung mengakses model Poe di Roo Code.",
|
||||
"slashSkills": "Peningkatan xAI dan MiniMax: Provider xAI dimigrasikan ke Responses API, utilitas transformasi yang bisa dipakai ulang ditambahkan, default Grok-4.20 diperbarui, dan daftar model MiniMax serta penanganan context window diperbaiki agar setup lebih andal.",
|
||||
"geminiPro": "Dukungan Gemini 3.1 Pro: Dukungan model Gemini 3.1 Pro telah ditambahkan dan ditetapkan sebagai model Gemini default untuk performa yang lebih baik.",
|
||||
"cliNdjson": "Protokol NDJSON CLI: Protokol NDJSON stdin baru, subperintah list, dan perintah run yang dimodularisasi untuk alur kerja CLI yang lebih fleksibel.",
|
||||
"cliRelease": "CLI v0.1.0: CLI Roo Code mencapai rilis resmi pertamanya dengan antarmuka perintah yang stabil."
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/it/chat.json
generated
4
webview-ui/src/i18n/locales/it/chat.json
generated
|
|
@ -348,8 +348,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "Novità:",
|
||||
"gpt54": "Supporto per OpenAI GPT-5.4: abbiamo aggiunto OpenAI GPT-5.4 e GPT-5.3 Chat Latest così puoi usare i modelli di chat OpenAI più recenti in Roo Code.",
|
||||
"slashSkills": "Skill come slash command: ora le skill possono essere esposte come slash command con esecuzione di fallback per attivare i workflow più rapidamente.",
|
||||
"gpt54": "Provider Poe: abbiamo aggiunto Poe come provider AI così puoi accedere direttamente ai modelli Poe in Roo Code.",
|
||||
"slashSkills": "Miglioramenti per xAI e MiniMax: il provider xAI è stato migrato alla Responses API, sono state aggiunte utility di trasformazione riutilizzabili, sono stati aggiornati i valori predefiniti di Grok-4.20 e sono stati corretti gli elenchi dei modelli MiniMax e la gestione della finestra di contesto per una configurazione più affidabile.",
|
||||
"geminiPro": "Supporto Gemini 3.1 Pro: Aggiunto il supporto per il modello Gemini 3.1 Pro e impostato come modello Gemini predefinito per prestazioni migliori.",
|
||||
"cliNdjson": "Protocollo NDJSON del CLI: Nuovo protocollo NDJSON via stdin, sottocomandi di elenco e comando di esecuzione modularizzato per flussi di lavoro CLI più flessibili.",
|
||||
"cliRelease": "CLI v0.1.0: Il CLI di Roo Code raggiunge la sua prima release ufficiale con un'interfaccia di comandi stabile."
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/ja/chat.json
generated
4
webview-ui/src/i18n/locales/ja/chat.json
generated
|
|
@ -348,8 +348,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "新機能:",
|
||||
"gpt54": "OpenAI GPT-5.4 サポート: OpenAI GPT-5.4 と GPT-5.3 Chat Latest を追加し、Roo Code で OpenAI の最新チャットモデルを使えるようにしました。",
|
||||
"slashSkills": "スラッシュコマンド対応スキル: スキルをスラッシュコマンドとして公開し、フォールバック実行にも対応したことで、ワークフローをより素早く実行できます。",
|
||||
"gpt54": "Poe プロバイダー: Poe を AI プロバイダーとして追加し、Roo Code から Poe のモデルに直接アクセスできるようにしました。",
|
||||
"slashSkills": "xAI と MiniMax の改善: xAI プロバイダーを Responses API へ移行し、再利用可能な変換ユーティリティを追加し、Grok-4.20 のデフォルト設定を更新し、MiniMax のモデル一覧とコンテキストウィンドウの扱いを修正して、より信頼性の高いセットアップにしました。",
|
||||
"geminiPro": "Gemini 3.1 Pro サポート: Gemini 3.1 Pro モデルのサポートを追加し、パフォーマンス向上のためデフォルトの Gemini モデルに設定しました。",
|
||||
"cliNdjson": "CLI NDJSON プロトコル: 新しい NDJSON stdin プロトコル、list サブコマンド、より柔軟な CLI ワークフローのためのモジュール化された run コマンド。",
|
||||
"cliRelease": "CLI v0.1.0: Roo Code CLI が安定したコマンドインターフェースで初の正式リリースに到達しました。"
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/ko/chat.json
generated
4
webview-ui/src/i18n/locales/ko/chat.json
generated
|
|
@ -348,8 +348,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "새로운 기능:",
|
||||
"gpt54": "OpenAI GPT-5.4 지원: OpenAI GPT-5.4와 GPT-5.3 Chat Latest를 추가해 Roo Code에서 최신 OpenAI 채팅 모델을 사용할 수 있게 했어요.",
|
||||
"slashSkills": "슬래시 명령어 스킬: 이제 스킬을 슬래시 명령어로 노출하고 fallback 실행도 지원해 워크플로를 더 빠르게 실행할 수 있어요.",
|
||||
"gpt54": "Poe 제공업체: Poe를 AI 제공업체로 추가해 Roo Code에서 Poe 모델에 직접 접근할 수 있게 했어요.",
|
||||
"slashSkills": "xAI 및 MiniMax 개선: xAI 제공업체를 Responses API로 마이그레이션하고, 재사용 가능한 변환 유틸리티를 추가하고, Grok-4.20 기본값을 업데이트하고, MiniMax 모델 목록과 컨텍스트 윈도우 처리를 수정해 더 안정적인 설정을 제공해요.",
|
||||
"geminiPro": "Gemini 3.1 Pro 지원: Gemini 3.1 Pro 모델 지원이 추가되었으며, 향상된 성능을 위해 기본 Gemini 모델로 설정되었습니다.",
|
||||
"cliNdjson": "CLI NDJSON 프로토콜: 새로운 NDJSON stdin 프로토콜, list 하위 명령어, 더 유연한 CLI 워크플로를 위한 모듈화된 run 명령어.",
|
||||
"cliRelease": "CLI v0.1.0: Roo Code CLI가 안정적인 명령어 인터페이스로 첫 공식 릴리스에 도달했습니다."
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/nl/chat.json
generated
4
webview-ui/src/i18n/locales/nl/chat.json
generated
|
|
@ -321,8 +321,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "Wat is er nieuw:",
|
||||
"gpt54": "Ondersteuning voor OpenAI GPT-5.4: OpenAI GPT-5.4 en GPT-5.3 Chat Latest zijn toegevoegd, zodat je de nieuwste OpenAI-chatmodellen in Roo Code kunt gebruiken.",
|
||||
"slashSkills": "Skills als slash-commands: Skills kunnen nu als slash-commands worden aangeboden met fallback-uitvoering voor snellere workflows.",
|
||||
"gpt54": "Poe-provider: Poe toegevoegd als AI-provider, zodat je in Roo Code direct toegang hebt tot Poe-modellen.",
|
||||
"slashSkills": "xAI- en MiniMax-verbeteringen: De xAI-provider gemigreerd naar de Responses API, herbruikbare transformatiehulpmiddelen toegevoegd, Grok-4.20-standaardinstellingen bijgewerkt en MiniMax-modellijsten plus de afhandeling van het contextvenster gerepareerd voor een betrouwbaardere configuratie.",
|
||||
"geminiPro": "Gemini 3.1 Pro ondersteuning: Ondersteuning voor het Gemini 3.1 Pro model is toegevoegd en ingesteld als standaard Gemini-model voor betere prestaties.",
|
||||
"cliNdjson": "CLI NDJSON-protocol: Nieuw NDJSON stdin-protocol, list-subopdrachten en gemodulariseerd run-commando voor flexibelere CLI-workflows.",
|
||||
"cliRelease": "CLI v0.1.0: De Roo Code CLI bereikt zijn eerste officiële release met een stabiele opdrachtinterface."
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/pl/chat.json
generated
4
webview-ui/src/i18n/locales/pl/chat.json
generated
|
|
@ -348,8 +348,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "Co nowego:",
|
||||
"gpt54": "Obsługa OpenAI GPT-5.4: Dodaliśmy OpenAI GPT-5.4 i GPT-5.3 Chat Latest, żebyś mógł używać najnowszych modeli czatu OpenAI w Roo Code.",
|
||||
"slashSkills": "Umiejętności jako slash commandy: Skills można teraz udostępniać jako slash commandy z wykonaniem awaryjnym, żeby szybciej uruchamiać workflowy.",
|
||||
"gpt54": "Dostawca Poe: Dodano Poe jako dostawcę AI, żebyś mógł bezpośrednio uzyskać dostęp do modeli Poe w Roo Code.",
|
||||
"slashSkills": "Usprawnienia xAI i MiniMax: Przeniesiono dostawcę xAI do Responses API, dodano narzędzia transformacji wielokrotnego użytku, zaktualizowano domyślne ustawienia Grok-4.20 oraz naprawiono listy modeli MiniMax i obsługę okna kontekstu, żeby konfiguracja była bardziej niezawodna.",
|
||||
"geminiPro": "Wsparcie dla Gemini 3.1 Pro: Dodano wsparcie dla modelu Gemini 3.1 Pro i ustawiono go jako domyślny model Gemini dla lepszej wydajności.",
|
||||
"cliNdjson": "Protokół NDJSON w CLI: Nowy protokół NDJSON przez stdin, podkomendy list oraz zmodularyzowana komenda run dla bardziej elastycznych przepływów pracy CLI.",
|
||||
"cliRelease": "CLI v0.1.0: CLI Roo Code osiąga swoją pierwszą oficjalną wersję ze stabilnym interfejsem poleceń."
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/pt-BR/chat.json
generated
4
webview-ui/src/i18n/locales/pt-BR/chat.json
generated
|
|
@ -348,8 +348,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "Novidades:",
|
||||
"gpt54": "Suporte ao OpenAI GPT-5.4: adicionamos OpenAI GPT-5.4 e GPT-5.3 Chat Latest para você usar os modelos de chat mais novos da OpenAI no Roo Code.",
|
||||
"slashSkills": "Skills como comandos slash: agora as skills podem ser expostas como comandos slash com execução de fallback para acionar workflows reutilizáveis mais rápido.",
|
||||
"gpt54": "Provedor Poe: adicionamos o Poe como provedor de IA para você acessar os modelos do Poe diretamente no Roo Code.",
|
||||
"slashSkills": "Melhorias em xAI e MiniMax: migramos o provedor xAI para a Responses API, adicionamos utilitários de transformação reutilizáveis, atualizamos os padrões do Grok-4.20 e corrigimos as listagens de modelos do MiniMax e o tratamento da janela de contexto para uma configuração mais confiável.",
|
||||
"geminiPro": "Suporte ao Gemini 3.1 Pro: Adicionado suporte ao modelo Gemini 3.1 Pro e definido como modelo Gemini padrão para melhor desempenho.",
|
||||
"cliNdjson": "Protocolo NDJSON do CLI: Novo protocolo NDJSON via stdin, subcomandos de listagem e comando de execução modularizado para fluxos de trabalho CLI mais flexíveis.",
|
||||
"cliRelease": "CLI v0.1.0: O CLI do Roo Code alcança sua primeira versão oficial com uma interface de comandos estável."
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/ru/chat.json
generated
4
webview-ui/src/i18n/locales/ru/chat.json
generated
|
|
@ -322,8 +322,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "Что нового:",
|
||||
"gpt54": "Поддержка OpenAI GPT-5.4: мы добавили OpenAI GPT-5.4 и GPT-5.3 Chat Latest, чтобы ты мог использовать новейшие чат-модели OpenAI в Roo Code.",
|
||||
"slashSkills": "Skills как slash-команды: теперь skills можно открывать как slash-команды с резервным выполнением, чтобы быстрее запускать рабочие процессы.",
|
||||
"gpt54": "Провайдер Poe: мы добавили Poe как AI-провайдера, чтобы ты мог напрямую получать доступ к моделям Poe в Roo Code.",
|
||||
"slashSkills": "Улучшения xAI и MiniMax: провайдер xAI мигрирован на Responses API, добавлены переиспользуемые утилиты трансформации, обновлены настройки Grok-4.20 по умолчанию, а также исправлены списки моделей MiniMax и обработка окна контекста для более надёжной настройки.",
|
||||
"geminiPro": "Поддержка Gemini 3.1 Pro: Добавлена поддержка модели Gemini 3.1 Pro и установлена как модель Gemini по умолчанию для лучшей производительности.",
|
||||
"cliNdjson": "Протокол NDJSON в CLI: Новый протокол NDJSON через stdin, подкоманды list и модульная команда run для более гибких CLI-процессов.",
|
||||
"cliRelease": "CLI v0.1.0: CLI Roo Code достиг своего первого официального релиза со стабильным интерфейсом командной строки."
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/tr/chat.json
generated
4
webview-ui/src/i18n/locales/tr/chat.json
generated
|
|
@ -349,8 +349,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "Yenilikler:",
|
||||
"gpt54": "OpenAI GPT-5.4 Desteği: Roo Code içinde en yeni OpenAI sohbet modellerini kullanabilmen için OpenAI GPT-5.4 ve GPT-5.3 Chat Latest eklendi.",
|
||||
"slashSkills": "Slash komutu olarak skills: Skills artık daha hızlı iş akışları için fallback yürütmeyle slash komutları olarak kullanılabiliyor.",
|
||||
"gpt54": "Poe Sağlayıcısı: Poe, Roo Code içinde Poe modellerine doğrudan erişebilmen için bir AI sağlayıcısı olarak eklendi.",
|
||||
"slashSkills": "xAI ve MiniMax İyileştirmeleri: xAI sağlayıcısı Responses API'ye taşındı, yeniden kullanılabilir dönüştürme yardımcıları eklendi, Grok-4.20 varsayılanları güncellendi ve daha güvenilir bir kurulum için MiniMax model listeleriyle context window işleme düzeltildi.",
|
||||
"geminiPro": "Gemini 3.1 Pro Desteği: Gemini 3.1 Pro model desteği eklendi ve daha iyi performans için varsayılan Gemini modeli olarak ayarlandı.",
|
||||
"cliNdjson": "CLI NDJSON Protokolü: Yeni NDJSON stdin protokolü, list alt komutları ve daha esnek CLI iş akışları için modüler run komutu.",
|
||||
"cliRelease": "CLI v0.1.0: Roo Code CLI, kararlı bir komut arayüzüyle ilk resmi sürümüne ulaştı."
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/vi/chat.json
generated
4
webview-ui/src/i18n/locales/vi/chat.json
generated
|
|
@ -349,8 +349,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "Tính năng mới:",
|
||||
"gpt54": "Hỗ trợ OpenAI GPT-5.4: Đã thêm OpenAI GPT-5.4 và GPT-5.3 Chat Latest để bạn có thể dùng các mô hình chat OpenAI mới nhất trong Roo Code.",
|
||||
"slashSkills": "Skills dưới dạng lệnh slash: Giờ đây skills có thể được cung cấp dưới dạng lệnh slash kèm thực thi dự phòng để kích hoạt quy trình nhanh hơn.",
|
||||
"gpt54": "Nhà cung cấp Poe: Đã thêm Poe làm nhà cung cấp AI để bạn có thể truy cập trực tiếp các model Poe trong Roo Code.",
|
||||
"slashSkills": "Cải tiến xAI và MiniMax: Đã chuyển nhà cung cấp xAI sang Responses API, thêm các tiện ích chuyển đổi có thể tái sử dụng, cập nhật các giá trị mặc định của Grok-4.20 và sửa danh sách model MiniMax cùng cách xử lý context window để thiết lập đáng tin cậy hơn.",
|
||||
"geminiPro": "Hỗ trợ Gemini 3.1 Pro: Đã thêm hỗ trợ model Gemini 3.1 Pro và đặt làm model Gemini mặc định để cải thiện hiệu suất.",
|
||||
"cliNdjson": "Giao thức NDJSON CLI: Giao thức NDJSON stdin mới, lệnh con list, và lệnh run được module hóa cho quy trình CLI linh hoạt hơn.",
|
||||
"cliRelease": "CLI v0.1.0: CLI Roo Code đạt bản phát hành chính thức đầu tiên với giao diện lệnh ổn định."
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/zh-CN/chat.json
generated
4
webview-ui/src/i18n/locales/zh-CN/chat.json
generated
|
|
@ -349,8 +349,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "新增功能:",
|
||||
"gpt54": "OpenAI GPT-5.4 支持:已添加 OpenAI GPT-5.4 和 GPT-5.3 Chat Latest,让你可以在 Roo Code 中使用 OpenAI 最新的聊天模型。",
|
||||
"slashSkills": "Slash 命令技能:现在 skills 可以作为 slash 命令公开,并支持 fallback execution,让工作流触发更快。",
|
||||
"gpt54": "Poe 提供商:已将 Poe 添加为 AI 提供商,让你可以在 Roo Code 中直接访问 Poe 模型。",
|
||||
"slashSkills": "xAI 和 MiniMax 改进:已将 xAI 提供商迁移到 Responses API,加入了可复用的转换工具,更新了 Grok-4.20 默认设置,并修复了 MiniMax 模型列表和上下文窗口处理方式,让配置更加可靠。",
|
||||
"geminiPro": "Gemini 3.1 Pro 支持:添加了 Gemini 3.1 Pro 模型支持,并将其设为默认 Gemini 模型以提升性能。",
|
||||
"cliNdjson": "CLI NDJSON 协议:新增 NDJSON stdin 协议、list 子命令,以及模块化的 run 命令,提供更灵活的 CLI 工作流。",
|
||||
"cliRelease": "CLI v0.1.0:Roo Code CLI 以稳定的命令接口达成首个正式版本。"
|
||||
|
|
|
|||
4
webview-ui/src/i18n/locales/zh-TW/chat.json
generated
4
webview-ui/src/i18n/locales/zh-TW/chat.json
generated
|
|
@ -370,8 +370,8 @@
|
|||
},
|
||||
"release": {
|
||||
"heading": "新增功能:",
|
||||
"gpt54": "OpenAI GPT-5.4 支援:已新增 OpenAI GPT-5.4 和 GPT-5.3 Chat Latest,讓你可以在 Roo Code 中使用 OpenAI 最新的聊天模型。",
|
||||
"slashSkills": "Slash 指令技能:現在 skills 可以作為 slash 指令公開,並支援 fallback execution,讓工作流程觸發更快。",
|
||||
"gpt54": "Poe 供應商:已將 Poe 新增為 AI 供應商,讓你可以在 Roo Code 中直接存取 Poe 模型。",
|
||||
"slashSkills": "xAI 與 MiniMax 改進:已將 xAI 供應商遷移至 Responses API,加入可重複使用的轉換工具,更新了 Grok-4.20 預設值,並修正 MiniMax 模型清單和上下文視窗處理方式,讓設定更加可靠。",
|
||||
"geminiPro": "Gemini 3.1 Pro 支援:新增 Gemini 3.1 Pro 模型支援,並設為預設 Gemini 模型以提升效能。",
|
||||
"cliNdjson": "CLI NDJSON 協定:新增 NDJSON stdin 協定、list 子指令,以及模組化的 run 指令,提供更彈性的 CLI 工作流程。",
|
||||
"cliRelease": "CLI v0.1.0:Roo Code CLI 以穩定的指令介面達成首個正式版本。"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue