From 774248be1e9ebde67077a77371ba0b8095914fc6 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Wed, 12 Mar 2025 14:08:17 -0400 Subject: [PATCH] Fix more hard-coded openrouter urls --- src/api/providers/openrouter.ts | 6 ++++-- src/core/webview/ClineProvider.ts | 15 +++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/api/providers/openrouter.ts b/src/api/providers/openrouter.ts index 33feba5db7..1e4ade134f 100644 --- a/src/api/providers/openrouter.ts +++ b/src/api/providers/openrouter.ts @@ -226,11 +226,13 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH } } -export async function getOpenRouterModels() { +export async function getOpenRouterModels(options?: ApiHandlerOptions) { const models: Record = {} + const baseURL = options?.openRouterBaseUrl || "https://openrouter.ai/api/v1" + try { - const response = await axios.get("https://openrouter.ai/api/v1/models") + const response = await axios.get(`${baseURL}/models`) const rawModels = response.data.data for (const rawModel of rawModels) { diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index d0362cf8d7..f14de1dda4 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -789,7 +789,8 @@ export class ClineProvider implements vscode.WebviewViewProvider { // to OpenRouter it would be showing outdated model info // if we hadn't retrieved the latest at this point // (see normalizeApiConfiguration > openrouter). - getOpenRouterModels().then(async (openRouterModels) => { + const { apiConfiguration: currentApiConfig } = await this.getState() + getOpenRouterModels(currentApiConfig).then(async (openRouterModels) => { if (Object.keys(openRouterModels).length > 0) { await fs.writeFile( path.join(cacheDir, GlobalFileNames.openRouterModels), @@ -1038,8 +1039,9 @@ export class ClineProvider implements vscode.WebviewViewProvider { case "resetState": await this.resetState() break - case "refreshOpenRouterModels": - const openRouterModels = await getOpenRouterModels() + case "refreshOpenRouterModels": { + const { apiConfiguration: configForRefresh } = await this.getState() + const openRouterModels = await getOpenRouterModels(configForRefresh) if (Object.keys(openRouterModels).length > 0) { const cacheDir = await this.ensureCacheDirectoryExists() @@ -1051,6 +1053,7 @@ export class ClineProvider implements vscode.WebviewViewProvider { } break + } case "refreshGlamaModels": const glamaModels = await getGlamaModels() @@ -2154,7 +2157,11 @@ export class ClineProvider implements vscode.WebviewViewProvider { async handleOpenRouterCallback(code: string) { let apiKey: string try { - const response = await axios.post("https://openrouter.ai/api/v1/auth/keys", { code }) + const { apiConfiguration } = await this.getState() + const baseUrl = apiConfiguration.openRouterBaseUrl || "https://openrouter.ai/api/v1" + // Extract the base domain for the auth endpoint + const baseUrlDomain = baseUrl.match(/^(https?:\/\/[^\/]+)/)?.[1] || "https://openrouter.ai" + const response = await axios.post(`${baseUrlDomain}/api/v1/auth/keys`, { code }) if (response.data && response.data.key) { apiKey = response.data.key } else {