* feat(docs): mirror every docs/ page in all 65 locales Extends the documentation mirrors from the 22-page core set (#13940) to every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors (6,208 new), language bars rewritten for the full locale list, state adopted so the blocking drift gate now covers all 152 pages. run-translation.mjs: an oversized block made only of table rows or list items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is cut at item boundaries and rejoined without a blank line — the single 16-40 KB request outlived the backend socket for verbose scripts. 48 older mirrors whose tables had lost rows were retranslated with --force. * docs(i18n): refresh mirrors for the sources the base changed since the branch cut Section-level retranslation of the 29 docs (and README.md) whose source or mirrors moved on release/v3.8.51 during the run, then state adoption; the drift gate is green again on the merged tree.
13 KiB
OpenCode Integration (Yorùbá)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Ìpò: Ó wà fún lílò ní gbogbogbò. Àwọn olùkà: Àwọn olùṣàkóso tó ń so OpenCode pọ̀ mọ́ ìmúṣiṣẹ́ OmniRoute. Orísun òtítọ́ (schema àtúnṣe):
src/shared/services/opencodeConfig.tsOrísun òtítọ́ (package npm):@omniroute/opencode-provider/(workspace tí a lè tẹ̀ jáde)
OpenCode jẹ́ oníbàárà AI CLI/desktop tó ń ṣiṣẹ́ gẹ́gẹ́ bí aṣojú. Ó ń ka àkójọ àwọn provider rẹ̀ láti ~/.config/opencode/opencode.json (tàbí opencode.jsonc) ó sì ń tẹ̀lé schema tó wà ní https://opencode.ai/config.json. OmniRoute ń fi ara rẹ̀ hàn sí OpenCode gẹ́gẹ́ bí ọ̀kan lára àwọn provider wọ̀nyẹn — gbogbo ìbéèrè ń gba ojú-ọ̀nà /v1 boṣewa OmniRoute tó bá OpenAI mu, nítorí náà OpenCode ń rí àǹfààní ìdarí Auto-Combo, àwọn circuit breaker, àwọn ìlànà key, àkíyèsí iṣẹ́, àti bẹ́ẹ̀ bẹ́ẹ̀ lọ láìfọwọ́sí.
Àwọn ọ̀nà ìsopọ̀ méjì ni a ṣe àtìlẹ́yìn fún. Yan ọ̀kan — àtúnṣe kan náà ni wọ́n ń ṣe.
Ọ̀nà 1 — Ẹ̀rọ amújáde CLI (kò nílò fifi npm sílẹ̀)
A dábàá rẹ̀ fún àwọn olùlò. Ó wà pẹ̀lú OmniRoute. Ó ń kọ opencode.json sí ibi rẹ̀.
# Lẹ́yìn fífi OmniRoute sílẹ̀ (npm i -g @omniroute/cli tàbí ẹ̀dà abẹ́lé)
omniroute config opencode \
--base-url http://localhost:20128 \
--api-key "$OMNIROUTE_API_KEY"
Ní abẹ́lẹ̀, CLI náà ń pe mergeOpenCodeConfigText() (src/shared/services/opencodeConfig.ts:104), nítorí náà opencode.json tó ti wà tẹ́lẹ̀ yóò pa àwọn provider mìíràn àti àwọn àlàyé rẹ̀ mọ́. A máa fi àkọsílẹ̀ OmniRoute kún un tàbí rọ́pò ó ní ọ̀nà atomic.
Fáìlì tí yóò jáde (àkójọ model àìyípadà):
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"omniroute": {
"npm": "@ai-sdk/openai-compatible",
"name": "OmniRoute",
"options": {
"baseURL": "http://localhost:20128/v1",
"apiKey": "<your-key>",
},
"models": {
"claude-opus-4-5-thinking": { "name": "claude-opus-4-5-thinking" },
"claude-sonnet-4-5-thinking": { "name": "claude-sonnet-4-5-thinking" },
"gemini-3.1-pro-high": { "name": "gemini-3.1-pro-high" },
"gemini-3-flash": { "name": "gemini-3-flash" },
},
},
},
}
Ọ̀nà 2 — package npm @omniroute/opencode-provider
A dábàá rẹ̀ nígbà tí o bá ń kọ script fún àtúnṣe náà láti Node/TS (àwọn pipeline CI, monorepo, àwọn ìṣàn olùfisílẹ̀ àdáni).
npm install --save-dev @omniroute/opencode-provider
import { writeFileSync } from "node:fs";
import { buildOmniRouteOpenCodeConfig } from "@omniroute/opencode-provider";
const config = buildOmniRouteOpenCodeConfig({
baseURL: "http://localhost:20128",
apiKey: process.env.OMNIROUTE_API_KEY ?? "sk_omniroute",
// Àṣàyàn: yí àkójọ model tí a fi hàn sí OpenCode padà
models: ["auto", "claude-opus-4-7", "gpt-5.5"],
modelLabels: { auto: "Auto-Combo" },
});
writeFileSync("opencode.json", JSON.stringify(config, null, 2));
Fún ìdapọ̀ tí kò ní ba fáìlì tó ti wà jẹ́, tún mergeOpenCodeConfigText() láti opencodeConfig.ts ṣe tàbí pe ẹ̀rọ amújáde CLI náà.
Wo README package náà fún API ẹ̀kúnrẹ́rẹ́.
Ohun tí runtime ń ṣe ní tòótọ́
Àwọn ọ̀nà méjèèjì ń ṣe provider.omniroute.npm: "@ai-sdk/openai-compatible" kan náà. Ní runtime, OpenCode ń gbé @ai-sdk/openai-compatible wọlé (èyí tó ti jẹ́ transitive dependency ti OpenCode) ó sì ń ṣètò rẹ̀ pẹ̀lú baseURL + apiKey. Láti ibẹ̀:
UI/aṣojú OpenCode
→ @ai-sdk/openai-compatible
→ HTTP POST {baseURL}/chat/completions (ojú-ọ̀nà OpenAI ti OmniRoute)
→ OmniRoute /v1/chat/completions handler (open-sse/handlers/chatCore.ts)
→ ìdarí combo / Auto-Combo / executor
→ provider òkè
Plugin náà kì í wọ HTTP rárá. Àtúnṣe nìkan ló ń ṣe jáde.
Àwọn àiyípadà àkọ́kọ́ ti àkójọ model
export const OMNIROUTE_DEFAULT_OPENCODE_MODELS = [
"claude-opus-4-5-thinking",
"claude-sonnet-4-5-thinking",
"gemini-3.1-pro-high",
"gemini-3-flash",
] as const;
O lè ṣe àtúnṣe rẹ̀ nípasẹ̀ models: [...]. Àwọn àfikún tí a dámọ̀ràn:
"auto"— ń mú router Auto-Combo ti OmniRoute tí kò nílò ìṣètò wá sí ojú. Ó ń jẹ́ kí OpenCode yan “model tó dára jù lọ tó wà” láìjẹ́ pé o fi àkójọ náà sínú kóòdù ní tààrà."<combo-name>"— combo èyíkéyìí tí o ti ṣàlàyé nínú dashboard; OmniRoute yóò yanjú rẹ̀ láìsí ìdíwọ́.
Ìṣọ̀kan URL
Olùrànlọ́wọ́ náà gba àwọn fọ́ọ̀mù méjèèjì, ó sì ń ṣe ìjáde /v1 kan ṣoṣo:
| Ìwọlé | Ìjáde (options.baseURL) |
|---|---|
http://localhost:20128 |
http://localhost:20128/v1 |
http://localhost:20128/ |
http://localhost:20128/v1 |
http://localhost:20128/v1 |
http://localhost:20128/v1 |
http://localhost:20128/v1/// |
http://localhost:20128/v1 |
Yíyọ àtúnṣe méjì yìí kúrò ni ìṣòro tó wọ́pọ̀ jù lọ tí a rí nínú àwọn config àtijọ́. Tí o bá ní opencode.json láti ìgbà ṣáájú v3.8.0 tí ó tọ́ka sí /v1/v1/..., tún generator náà ṣiṣẹ́ tàbí pe createOmniRouteProvider lẹ́ẹ̀kan sí i.
Àwọn ọ̀nà ìfàṣẹsí
| Ètò OmniRoute | Iye apiKey tí a dámọ̀ràn |
|---|---|
REQUIRE_API_KEY=false (àiyípadà àkọ́kọ́ fún local) |
sk_omniroute (ààyè ìgbà díẹ̀ gẹ́gẹ́ bí ó ṣe wà) |
REQUIRE_API_KEY=true |
API key gidi fún olùlò kọ̀ọ̀kan láti Dashboard → API Keys. |
Fún àwọn client ara Anthropic tí ń fi x-api-key + anthropic-version ránṣẹ́, extractApiKey ti OmniRoute tún ń gba key láti x-api-key. OpenCode ń lo ojú OpenAI, nítorí náà yóò máa fi Authorization: Bearer ${apiKey} ránṣẹ́ nígbà gbogbo — kò sí ìmúlò pàtàkì Anthropic níbí.
Yíyanjú ìṣòro
| Ààmì ìṣòro | Ohun tó fà á | Àtúnṣe |
|---|---|---|
404 lórí gbogbo ìbéèrè pẹ̀lú URL tó ní /v1/v1/ |
Config àtijọ́ láti plugin ṣáájú v3.8 tó fi /v1 kún un lẹ́ẹ̀mejì. |
Tún un ṣẹ̀dá nípasẹ̀ Ọ̀nà 1 tàbí 2. |
401 Invalid API key |
OmniRoute ní REQUIRE_API_KEY=true, key náà kò sì jẹ́ mímọ̀. |
Ṣẹ̀dá key náà nínú dashboard, tàbí ṣètò REQUIRE_API_KEY=false (local nìkan), kí o sì lo sk_omniroute. |
| Àkójọ model ṣófo nínú UI OpenCode | Gbogbo model àiyípadà àkọ́kọ́ mẹ́rẹ̀ẹ̀rin ni a fi pamọ́ nínú ìfarahàn provider ti OmniRoute. | Fi models: ["auto", ...] ránṣẹ́ láti mú àwọn tí o ti mú ṣiṣẹ́ hàn. |
OpenCode 500 pẹ̀lú cannot read property 'models' |
OpenCode àtijọ́ (< 0.1.x) kò gba models inú-láìnì. |
Ṣe ìgbésókè OpenCode sí version tó tẹ̀lé schema v1 (opencode.ai/config.json). |
Wo pẹ̀lú
- Ìtọ́kasí API — gbogbo ojú-iṣẹ́ OmniRoute REST
- Auto-Combo — ohun tí
model: "auto"túmọ̀ sí @omniroute/opencode-providerREADME- Kóòdù ìpilẹ̀ṣẹ̀:
src/shared/services/opencodeConfig.ts,src/lib/cli-helper/config-generator/opencode.ts,@omniroute/opencode-provider/src/index.ts