From 723592d7ee1e6413b13bac76cf9c2611fc95eada Mon Sep 17 00:00:00 2001 From: Hannes Rudolph Date: Fri, 6 Feb 2026 15:32:09 -0700 Subject: [PATCH] refactor(azure): replace resourceName with baseURL and fix translations --- packages/types/src/provider-settings.ts | 2 +- src/api/providers/__tests__/azure.spec.ts | 2 +- src/api/providers/azure.ts | 9 +++++---- src/shared/checkExistApiConfig.ts | 4 ++-- webview-ui/src/components/settings/providers/Azure.tsx | 10 +++++----- webview-ui/src/i18n/locales/ca/settings.json | 8 ++++---- webview-ui/src/i18n/locales/de/settings.json | 8 ++++---- webview-ui/src/i18n/locales/en/settings.json | 8 ++++---- webview-ui/src/i18n/locales/es/settings.json | 8 ++++---- webview-ui/src/i18n/locales/fr/settings.json | 8 ++++---- webview-ui/src/i18n/locales/hi/settings.json | 8 ++++---- webview-ui/src/i18n/locales/id/settings.json | 8 ++++---- webview-ui/src/i18n/locales/it/settings.json | 8 ++++---- webview-ui/src/i18n/locales/ja/settings.json | 8 ++++---- webview-ui/src/i18n/locales/ko/settings.json | 8 ++++---- webview-ui/src/i18n/locales/nl/settings.json | 8 ++++---- webview-ui/src/i18n/locales/pl/settings.json | 8 ++++---- webview-ui/src/i18n/locales/pt-BR/settings.json | 8 ++++---- webview-ui/src/i18n/locales/ru/settings.json | 8 ++++---- webview-ui/src/i18n/locales/tr/settings.json | 8 ++++---- webview-ui/src/i18n/locales/vi/settings.json | 8 ++++---- webview-ui/src/i18n/locales/zh-CN/settings.json | 8 ++++---- webview-ui/src/i18n/locales/zh-TW/settings.json | 8 ++++---- webview-ui/src/utils/validate.ts | 6 +++--- 24 files changed, 89 insertions(+), 88 deletions(-) diff --git a/packages/types/src/provider-settings.ts b/packages/types/src/provider-settings.ts index f4a19c532d..97edd2c807 100644 --- a/packages/types/src/provider-settings.ts +++ b/packages/types/src/provider-settings.ts @@ -416,7 +416,7 @@ const basetenSchema = apiModelIdProviderModelSchema.extend({ const azureSchema = apiModelIdProviderModelSchema.extend({ azureApiKey: z.string().optional(), - azureResourceName: z.string().optional(), + azureBaseUrl: z.string().optional(), azureDeploymentName: z.string().optional(), azureApiVersion: z.string().optional(), }) diff --git a/src/api/providers/__tests__/azure.spec.ts b/src/api/providers/__tests__/azure.spec.ts index 0f794a6089..3d1171a8e2 100644 --- a/src/api/providers/__tests__/azure.spec.ts +++ b/src/api/providers/__tests__/azure.spec.ts @@ -36,7 +36,7 @@ describe("AzureHandler", () => { beforeEach(() => { mockOptions = { azureApiKey: "test-api-key", - azureResourceName: "test-resource", + azureBaseUrl: "https://test-resource.openai.azure.com/openai", azureDeploymentName: "gpt-4o", azureApiVersion: "2024-08-01-preview", } diff --git a/src/api/providers/azure.ts b/src/api/providers/azure.ts index d8d0e513df..9da21cf4c5 100644 --- a/src/api/providers/azure.ts +++ b/src/api/providers/azure.ts @@ -35,12 +35,13 @@ export class AzureHandler extends BaseProvider implements SingleCompletionHandle this.options = options // Create the Azure provider using AI SDK - // The @ai-sdk/azure package uses resourceName-based routing. + // baseURL supports both classic Azure OpenAI resources + // (.openai.azure.com) and newer AI Foundry resources + // (.cognitiveservices.azure.com). // useDeploymentBasedUrls produces the universally compatible - // /deployments/{id}/{path} URL shape that works on both classic - // Azure OpenAI resources and newer AI Foundry resources. + // /deployments/{id}/{path} URL shape. this.provider = createAzure({ - resourceName: options.azureResourceName ?? "", + baseURL: options.azureBaseUrl ?? "", apiKey: options.azureApiKey, // Optional — Azure supports managed identity / Entra ID auth apiVersion: options.azureApiVersion ?? azureOpenAiDefaultApiVersion, useDeploymentBasedUrls: true, diff --git a/src/shared/checkExistApiConfig.ts b/src/shared/checkExistApiConfig.ts index 54e5bcc036..222c8648fe 100644 --- a/src/shared/checkExistApiConfig.ts +++ b/src/shared/checkExistApiConfig.ts @@ -11,9 +11,9 @@ export function checkExistKey(config: ProviderSettings | undefined) { } // Azure supports managed identity / Entra ID auth (no API key needed). - // Consider it configured if resource name or deployment name is set. + // Consider it configured if base URL or deployment name is set. if (config.apiProvider === "azure") { - return !!(config.azureResourceName || config.azureDeploymentName || config.azureApiKey) + return !!(config.azureBaseUrl || config.azureDeploymentName || config.azureApiKey) } // Check all secret keys from the centralized SECRET_STATE_KEYS array. diff --git a/webview-ui/src/components/settings/providers/Azure.tsx b/webview-ui/src/components/settings/providers/Azure.tsx index ed0ca3f2e4..22918c0ac9 100644 --- a/webview-ui/src/components/settings/providers/Azure.tsx +++ b/webview-ui/src/components/settings/providers/Azure.tsx @@ -30,14 +30,14 @@ export const Azure = ({ apiConfiguration, setApiConfigurationField }: AzureProps return ( <> - +
- {t("settings:providers.azureResourceNameDescription")} + {t("settings:providers.azureBaseUrlDescription")}