diff --git a/open-sse/executors/default.ts b/open-sse/executors/default.ts index b9b52e64e3..249f3253e0 100644 --- a/open-sse/executors/default.ts +++ b/open-sse/executors/default.ts @@ -46,6 +46,10 @@ export class DefaultExecutor extends BaseExecutor { return `${this.config.baseUrl}?beta=true`; case "gemini": return `${this.config.baseUrl}/${model}:${stream ? "streamGenerateContent?alt=sse" : "generateContent"}`; + case "qwen": { + const resourceUrl = credentials?.providerSpecificData?.resourceUrl; + return `https://${resourceUrl || "portal.qwen.ai"}/v1/chat/completions`; + } default: return this.config.baseUrl; } diff --git a/open-sse/services/tokenRefresh.ts b/open-sse/services/tokenRefresh.ts index cb2f020e14..b0d9b0c858 100644 --- a/open-sse/services/tokenRefresh.ts +++ b/open-sse/services/tokenRefresh.ts @@ -327,6 +327,9 @@ export async function refreshQwenToken(refreshToken, log) { accessToken: tokens.access_token, refreshToken: tokens.refresh_token || refreshToken, expiresIn: tokens.expires_in, + providerSpecificData: tokens.resource_url + ? { resourceUrl: tokens.resource_url } + : undefined, }; } else { const errorText = await response.text().catch(() => ""); diff --git a/package-lock.json b/package-lock.json index 8e0e86e1d4..bfc09a0030 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "omniroute", - "version": "3.4.3", + "version": "3.4.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "omniroute", - "version": "3.4.3", + "version": "3.4.4", "hasInstallScript": true, "license": "MIT", "workspaces": [ diff --git a/package.json b/package.json index a7296f56b5..790ca29f0b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "omniroute", - "version": "3.4.3", + "version": "3.4.4", "description": "Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.", "type": "module", "bin": {