feat: register OrcaRouter as a named provider

Adds OrcaRouter as a first-class provider alongside the existing
OpenRouter wiring: ProviderKind, provider! registration, default
base URL https://api.orcarouter.ai/v1, default model
deepseek/deepseek-v4-pro, flash model deepseek/deepseek-v4-flash,
auto-routing model orcarouter/auto, ORCAROUTER_API_KEY env mapping,
model normalization, ProvidersToml/EnvRuntimeOverrides config, CLI
--provider selector, TUI ApiProvider picker + key/model mappings,
reasoning-effort pass-through, agent model registry entries, docs,
and web facts. Keys start with sk-orca-.

Verified: fmt, clippy (touched crates), provider-registry and web
facts drift checks, config tests, and live L3 calls against the
OrcaRouter endpoint (models catalog, chat completions on the default
and orcarouter/auto models, and auth rejection for an invalid key).

Agent assistance: integration prepared with agent tooling; noted in
plain body per repo policy (no Co-authored-by trailer).

Harvested from PR #5321 by @XiaoHuo888-hue
This commit is contained in:
XiaoHuo888-hue
2026-08-11 23:30:09 +08:00
committed by CodeWhale Bot
parent a27f5cf620
commit 2a7634e8cc
17 changed files with 223 additions and 22 deletions

View File

@@ -21,7 +21,7 @@
# `api_key` / `base_url` are
# still read as DeepSeek defaults when `[providers.deepseek]` is absent
# (backward compatibility).
provider = "deepseek" # deepseek | deepseek-cn | deepseek-anthropic | nvidia-nim | openai | atlascloud | wanjie-ark | volcengine | openrouter | xiaomi-mimo | novita | fireworks | siliconflow | siliconflow-CN | arcee | moonshot | zai | stepfun | minimax | sglang | vllm | ollama | huggingface | together | qianfan | openai-codex | anthropic | openmodel | deepinfra | sakana | longcat | opencode-go | opencode-zen | meta | xai | modelstudio-token-plan | modelstudio-coding-plan
provider = "deepseek" # deepseek | deepseek-cn | deepseek-anthropic | nvidia-nim | openai | atlascloud | wanjie-ark | volcengine | openrouter | orcarouter | xiaomi-mimo | novita | fireworks | siliconflow | siliconflow-CN | arcee | moonshot | zai | stepfun | minimax | sglang | vllm | ollama | huggingface | together | qianfan | openai-codex | anthropic | openmodel | deepinfra | sakana | longcat | opencode-go | opencode-zen | meta | xai | modelstudio-token-plan | modelstudio-coding-plan
api_key = "YOUR_DEEPSEEK_API_KEY" # must be non-empty
base_url = "https://api.deepseek.com/beta"
# provider = "deepseek-cn" # legacy alias (official host is still https://api.deepseek.com)
@@ -529,6 +529,15 @@ max_subagents = 10 # optional (1-20)
# moonshotai/kimi-k2.6,
# nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free, and nvidia/nemotron-3-ultra.
# OrcaRouter — OpenAI-compatible aggregation gateway (https://www.orcarouter.ai)
[providers.orcarouter]
# api_key = "YOUR_ORCAROUTER_API_KEY"
# base_url = "https://api.orcarouter.ai/v1"
# model = "deepseek/deepseek-v4-pro"
# Namespaced wire models pass through verbatim (deepseek/deepseek-v4-pro,
# deepseek/deepseek-v4-flash); OrcaRouter's own auto-routing model is
# selectable as "orcarouter/auto".
# Xiaomi MiMo OpenAI-compatible endpoint (https://platform.xiaomimimo.com)
[providers.xiaomi_mimo]
# api_key = "YOUR_XIAOMI_KEY"