From a6aa576d5a6e11d53cdd1d85f22b57a63fbe9b47 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Tue, 14 Apr 2026 23:49:34 -0400 Subject: [PATCH] fix(proxy): detect dashscope compatible-mode profiles --- src/proxy/profile-router.ts | 19 +++++++++++++------ src/targets/droid-provider.ts | 2 ++ tests/unit/proxy/profile-router.test.ts | 13 +++++++++++++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/proxy/profile-router.ts b/src/proxy/profile-router.ts index da856f6f..9fe6b092 100644 --- a/src/proxy/profile-router.ts +++ b/src/proxy/profile-router.ts @@ -1,4 +1,8 @@ -import { resolveDroidProvider, type DroidProvider } from '../targets/droid-provider'; +import { + inferDroidProviderFromBaseUrl, + resolveDroidProvider, + type DroidProvider, +} from '../targets/droid-provider'; export interface OpenAICompatProfileConfig { profileName: string; @@ -41,11 +45,14 @@ export function resolveOpenAICompatProfileConfig( return null; } - const provider = resolveDroidProvider({ - provider: env.CCS_DROID_PROVIDER, - baseUrl, - model: env.ANTHROPIC_MODEL, - }); + const providerFromUrl = inferDroidProviderFromBaseUrl(baseUrl); + const provider = isOpenAICompatProvider(providerFromUrl) + ? providerFromUrl + : resolveDroidProvider({ + provider: env.CCS_DROID_PROVIDER, + baseUrl, + model: env.ANTHROPIC_MODEL, + }); if (!isOpenAICompatProvider(provider)) { return null; } diff --git a/src/targets/droid-provider.ts b/src/targets/droid-provider.ts index 22a8d8c2..1c5f9850 100644 --- a/src/targets/droid-provider.ts +++ b/src/targets/droid-provider.ts @@ -86,8 +86,10 @@ export function inferDroidProviderFromBaseUrl( host.includes('api.deepinfra.com') || host.includes('api.fireworks.ai') || host.includes('inference.baseten.co') || + host.includes('dashscope') || host.includes('huggingface.co') || host.includes('ollama.com') || + pathname.includes('/compatible-mode') || pathname.includes('/openai') || pathname.includes('/chat/completions') ) { diff --git a/tests/unit/proxy/profile-router.test.ts b/tests/unit/proxy/profile-router.test.ts index 76bfe7be..ba523ed9 100644 --- a/tests/unit/proxy/profile-router.test.ts +++ b/tests/unit/proxy/profile-router.test.ts @@ -37,4 +37,17 @@ describe('resolveOpenAICompatProfileConfig', () => { expect(result).toBeNull(); }); + + it('prefers OpenAI-compatible URL inference over stale anthropic provider hints', () => { + const result = resolveOpenAICompatProfileConfig('q', '/tmp/q.settings.json', { + ANTHROPIC_BASE_URL: 'https://dashscope-us.aliyuncs.com/compatible-mode/v1', + ANTHROPIC_AUTH_TOKEN: 'q-token', + ANTHROPIC_MODEL: 'qwen3.6-plus', + CCS_DROID_PROVIDER: 'anthropic', + }); + + expect(result).not.toBeNull(); + expect(result?.provider).toBe('generic-chat-completion-api'); + expect(result?.model).toBe('qwen3.6-plus'); + }); });