fix(providers): register alibaba-coding-plan as a first-class provider

The alibaba-coding-plan provider (coding-intl.dashscope.aliyuncs.com/v1)
was not registered in providers.py or auth.py. When users set
provider: alibaba_coding or provider: alibaba-coding-plan in config.yaml,
Hermes could not resolve the credentials and fell back to OpenRouter
or rejected the request with HTTP 401/402 (issue #14940).

Changes:
- providers.py: add HermesOverlay for alibaba-coding-plan with
  ALIBABA_CODING_PLAN_BASE_URL env var support
- providers.py: add aliases alibaba_coding, alibaba-coding,
  alibaba_coding_plan -> alibaba-coding-plan
- auth.py: add ProviderConfig for alibaba-coding-plan with:
  - inference_base_url: https://coding-intl.dashscope.aliyuncs.com/v1
  - api_key_env_vars: ALIBABA_CODING_PLAN_API_KEY, DASHSCOPE_API_KEY

Fixes #14940
This commit is contained in:
ygd58 2026-04-24 09:21:10 +02:00 committed by Teknium
parent a9a4416c7c
commit 727d1088c4
2 changed files with 15 additions and 0 deletions

View file

@ -224,6 +224,14 @@ PROVIDER_REGISTRY: Dict[str, ProviderConfig] = {
api_key_env_vars=("DASHSCOPE_API_KEY",), api_key_env_vars=("DASHSCOPE_API_KEY",),
base_url_env_var="DASHSCOPE_BASE_URL", base_url_env_var="DASHSCOPE_BASE_URL",
), ),
"alibaba-coding-plan": ProviderConfig(
id="alibaba-coding-plan",
name="Alibaba Cloud (Coding Plan)",
auth_type="api_key",
inference_base_url="https://coding-intl.dashscope.aliyuncs.com/v1",
api_key_env_vars=("ALIBABA_CODING_PLAN_API_KEY", "DASHSCOPE_API_KEY"),
base_url_env_var="ALIBABA_CODING_PLAN_BASE_URL",
),
"minimax-cn": ProviderConfig( "minimax-cn": ProviderConfig(
id="minimax-cn", id="minimax-cn",
name="MiniMax (China)", name="MiniMax (China)",

View file

@ -116,6 +116,10 @@ HERMES_OVERLAYS: Dict[str, HermesOverlay] = {
transport="openai_chat", transport="openai_chat",
base_url_env_var="DASHSCOPE_BASE_URL", base_url_env_var="DASHSCOPE_BASE_URL",
), ),
"alibaba-coding-plan": HermesOverlay(
transport="openai_chat",
base_url_env_var="ALIBABA_CODING_PLAN_BASE_URL",
),
"vercel": HermesOverlay( "vercel": HermesOverlay(
transport="openai_chat", transport="openai_chat",
is_aggregator=True, is_aggregator=True,
@ -259,6 +263,9 @@ ALIASES: Dict[str, str] = {
"aliyun": "alibaba", "aliyun": "alibaba",
"qwen": "alibaba", "qwen": "alibaba",
"alibaba-cloud": "alibaba", "alibaba-cloud": "alibaba",
"alibaba_coding": "alibaba-coding-plan",
"alibaba-coding": "alibaba-coding-plan",
"alibaba_coding_plan": "alibaba-coding-plan",
# google-gemini-cli (OAuth + Code Assist) # google-gemini-cli (OAuth + Code Assist)
"gemini-cli": "google-gemini-cli", "gemini-cli": "google-gemini-cli",