From 727d1088c4e28d0906719e5a7291caba1ba40119 Mon Sep 17 00:00:00 2001 From: ygd58 Date: Fri, 24 Apr 2026 09:21:10 +0200 Subject: [PATCH] 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 --- hermes_cli/auth.py | 8 ++++++++ hermes_cli/providers.py | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/hermes_cli/auth.py b/hermes_cli/auth.py index 28c5bd9a6..9a6723c65 100644 --- a/hermes_cli/auth.py +++ b/hermes_cli/auth.py @@ -224,6 +224,14 @@ PROVIDER_REGISTRY: Dict[str, ProviderConfig] = { api_key_env_vars=("DASHSCOPE_API_KEY",), 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( id="minimax-cn", name="MiniMax (China)", diff --git a/hermes_cli/providers.py b/hermes_cli/providers.py index e842086a4..f65ceac7a 100644 --- a/hermes_cli/providers.py +++ b/hermes_cli/providers.py @@ -116,6 +116,10 @@ HERMES_OVERLAYS: Dict[str, HermesOverlay] = { transport="openai_chat", 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( transport="openai_chat", is_aggregator=True, @@ -259,6 +263,9 @@ ALIASES: Dict[str, str] = { "aliyun": "alibaba", "qwen": "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) "gemini-cli": "google-gemini-cli",