{"version":3,"sources":["../src/azure-openai-provider.ts","../src/azure-openai-tools.ts","../src/version.ts"],"sourcesContent":["import {\n  OpenAIChatLanguageModel,\n  OpenAICompletionLanguageModel,\n  OpenAIEmbeddingModel,\n  OpenAIImageModel,\n  OpenAIResponsesLanguageModel,\n  OpenAISpeechModel,\n  OpenAITranscriptionModel,\n} from '@ai-sdk/openai/internal';\nimport {\n  InvalidArgumentError,\n  type EmbeddingModelV3,\n  type LanguageModelV3,\n  type ProviderV3,\n  type ImageModelV3,\n  type SpeechModelV3,\n  type TranscriptionModelV3,\n} from '@ai-sdk/provider';\nimport {\n  loadApiKey,\n  loadSetting,\n  normalizeHeaders,\n  withUserAgentSuffix,\n  type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { azureOpenaiTools } from './azure-openai-tools';\nimport { VERSION } from './version';\n\nexport interface AzureOpenAIProvider extends ProviderV3 {\n  (deploymentId: string): LanguageModelV3;\n\n  /**\n   * Creates an Azure OpenAI responses API model for text generation.\n   */\n  languageModel(deploymentId: string): LanguageModelV3;\n\n  /**\n   * Creates an Azure OpenAI chat model for text generation.\n   */\n  chat(deploymentId: string): LanguageModelV3;\n\n  /**\n   * Creates an Azure OpenAI responses API model for text generation.\n   */\n  responses(deploymentId: string): LanguageModelV3;\n\n  /**\n   * Creates an Azure OpenAI completion model for text generation.\n   */\n  completion(deploymentId: string): LanguageModelV3;\n\n  /**\n   * Creates an Azure OpenAI model for text embeddings.\n   */\n  embedding(deploymentId: string): EmbeddingModelV3;\n\n  /**\n   * Creates an Azure OpenAI model for text embeddings.\n   */\n  embeddingModel(deploymentId: string): EmbeddingModelV3;\n\n  /**\n   * @deprecated Use `embedding` instead.\n   */\n  textEmbedding(deploymentId: string): EmbeddingModelV3;\n\n  /**\n   * @deprecated Use `embeddingModel` instead.\n   */\n  textEmbeddingModel(deploymentId: string): EmbeddingModelV3;\n\n  /**\n   * Creates an Azure OpenAI DALL-E model for image generation.\n   */\n  image(deploymentId: string): ImageModelV3;\n\n  /**\n   * Creates an Azure OpenAI DALL-E model for image generation.\n   */\n  imageModel(deploymentId: string): ImageModelV3;\n\n  /**\n   * Creates an Azure OpenAI model for audio transcription.\n   */\n  transcription(deploymentId: string): TranscriptionModelV3;\n\n  /**\n   * Creates an Azure OpenAI model for speech generation.\n   */\n  speech(deploymentId: string): SpeechModelV3;\n\n  /**\n   * AzureOpenAI-specific tools.\n   */\n  tools: typeof azureOpenaiTools;\n}\n\nexport interface AzureOpenAIProviderSettings {\n  /**\n   * Name of the Azure OpenAI resource. Either this or `baseURL` can be used.\n   *\n   * The resource name is used in the assembled URL: `https://{resourceName}.openai.azure.com/openai/v1{path}`.\n   */\n  resourceName?: string;\n\n  /**\n   * Use a different URL prefix for API calls, e.g. to use proxy servers. Either this or `resourceName` can be used.\n   * When a baseURL is provided, the resourceName is ignored.\n   *\n   * With a baseURL, the resolved URL is `{baseURL}/v1{path}`.\n   */\n  baseURL?: string;\n\n  /**\n   * API key for authenticating requests.\n   */\n  apiKey?: string;\n\n  /**\n   * A function that returns an access token for Microsoft Entra\n   * (formerly known as Azure Active Directory), which will be invoked\n   * on every request.\n   */\n  tokenProvider?: (() => Promise<string>) | undefined;\n\n  /**\n   * Custom headers to include in the requests.\n   */\n  headers?: Record<string, string>;\n\n  /**\n   * Custom fetch implementation. You can use it as a middleware to intercept requests,\n   * or to provide a custom fetch implementation for e.g. testing.\n   */\n  fetch?: FetchFunction;\n\n  /**\n   * Custom api version to use. Defaults to `preview`.\n   */\n  apiVersion?: string;\n\n  /**\n   * Use deployment-based URLs for specific model types. Set to true to use legacy deployment format:\n   * `{baseURL}/deployments/{deploymentId}{path}?api-version={apiVersion}` instead of\n   * `{baseURL}/v1{path}?api-version={apiVersion}`.\n   */\n  useDeploymentBasedUrls?: boolean;\n}\n\n/**\n * Create an Azure OpenAI provider instance.\n */\nexport function createAzure(\n  options: AzureOpenAIProviderSettings = {},\n): AzureOpenAIProvider {\n  const tokenProvider = options.tokenProvider;\n\n  if (options.apiKey && tokenProvider) {\n    throw new InvalidArgumentError({\n      argument: 'apiKey/tokenProvider',\n      message:\n        'Both apiKey and tokenProvider were provided. Please use only one authentication method.',\n    });\n  }\n\n  const getHeaders = () => {\n    const authHeaders = tokenProvider\n      ? {}\n      : {\n          'api-key': loadApiKey({\n            apiKey: options.apiKey,\n            environmentVariableName: 'AZURE_API_KEY',\n            description: 'Azure OpenAI',\n          }),\n        };\n\n    return withUserAgentSuffix(\n      {\n        ...authHeaders,\n        ...options.headers,\n      },\n      `ai-sdk/azure/${VERSION}`,\n    );\n  };\n\n  const fetch: FetchFunction | undefined = tokenProvider\n    ? async (input, init) => {\n        const headers = normalizeHeaders(init?.headers);\n\n        if (headers.authorization == null) {\n          headers.authorization = `Bearer ${await tokenProvider()}`;\n        }\n\n        return (options.fetch ?? globalThis.fetch)(input, {\n          ...init,\n          headers,\n        });\n      }\n    : options.fetch;\n\n  const getResourceName = () =>\n    loadSetting({\n      settingValue: options.resourceName,\n      settingName: 'resourceName',\n      environmentVariableName: 'AZURE_RESOURCE_NAME',\n      description: 'Azure OpenAI resource name',\n    });\n\n  const apiVersion = options.apiVersion ?? 'v1';\n\n  const url = ({ path, modelId }: { path: string; modelId: string }) => {\n    const baseUrlPrefix =\n      options.baseURL ?? `https://${getResourceName()}.openai.azure.com/openai`;\n\n    let fullUrl: URL;\n    if (options.useDeploymentBasedUrls) {\n      // Use deployment-based format for compatibility with certain Azure OpenAI models\n      fullUrl = new URL(`${baseUrlPrefix}/deployments/${modelId}${path}`);\n    } else {\n      // Use v1 API format - no deployment ID in URL\n      fullUrl = new URL(`${baseUrlPrefix}/v1${path}`);\n    }\n\n    fullUrl.searchParams.set('api-version', apiVersion);\n    return fullUrl.toString();\n  };\n\n  const createChatModel = (deploymentName: string) =>\n    new OpenAIChatLanguageModel(deploymentName, {\n      provider: 'azure.chat',\n      url,\n      headers: getHeaders,\n      fetch,\n    });\n\n  const createCompletionModel = (modelId: string) =>\n    new OpenAICompletionLanguageModel(modelId, {\n      provider: 'azure.completion',\n      url,\n      headers: getHeaders,\n      fetch,\n    });\n\n  const createEmbeddingModel = (modelId: string) =>\n    new OpenAIEmbeddingModel(modelId, {\n      provider: 'azure.embeddings',\n      headers: getHeaders,\n      url,\n      fetch,\n    });\n\n  const createResponsesModel = (modelId: string) =>\n    new OpenAIResponsesLanguageModel(modelId, {\n      provider: 'azure.responses',\n      url,\n      headers: getHeaders,\n      fetch,\n      fileIdPrefixes: ['assistant-'],\n    });\n\n  const createImageModel = (modelId: string) =>\n    new OpenAIImageModel(modelId, {\n      provider: 'azure.image',\n      url,\n      headers: getHeaders,\n      fetch,\n    });\n\n  const createTranscriptionModel = (modelId: string) =>\n    new OpenAITranscriptionModel(modelId, {\n      provider: 'azure.transcription',\n      url,\n      headers: getHeaders,\n      fetch,\n    });\n\n  const createSpeechModel = (modelId: string) =>\n    new OpenAISpeechModel(modelId, {\n      provider: 'azure.speech',\n      url,\n      headers: getHeaders,\n      fetch,\n    });\n\n  const provider = function (deploymentId: string) {\n    if (new.target) {\n      throw new Error(\n        'The Azure OpenAI model function cannot be called with the new keyword.',\n      );\n    }\n\n    return createResponsesModel(deploymentId);\n  };\n\n  provider.specificationVersion = 'v3' as const;\n  provider.languageModel = createResponsesModel;\n  provider.chat = createChatModel;\n  provider.completion = createCompletionModel;\n  provider.embedding = createEmbeddingModel;\n  provider.embeddingModel = createEmbeddingModel;\n  provider.textEmbedding = createEmbeddingModel;\n  provider.textEmbeddingModel = createEmbeddingModel;\n  provider.image = createImageModel;\n  provider.imageModel = createImageModel;\n  provider.responses = createResponsesModel;\n  provider.transcription = createTranscriptionModel;\n  provider.speech = createSpeechModel;\n  provider.tools = azureOpenaiTools;\n  return provider;\n}\n\n/**\n * Default Azure OpenAI provider instance.\n */\nexport const azure = createAzure();\n","import {\n  codeInterpreter,\n  fileSearch,\n  imageGeneration,\n  webSearch,\n  webSearchPreview,\n} from '@ai-sdk/openai/internal';\n\nexport const azureOpenaiTools: {\n  codeInterpreter: typeof codeInterpreter;\n  fileSearch: typeof fileSearch;\n  imageGeneration: typeof imageGeneration;\n  webSearch: typeof webSearch;\n  webSearchPreview: typeof webSearchPreview;\n} = {\n  codeInterpreter,\n  fileSearch,\n  imageGeneration,\n  webSearch,\n  webSearchPreview,\n};\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n  typeof __PACKAGE_VERSION__ !== 'undefined'\n    ? __PACKAGE_VERSION__\n    : '0.0.0-test';\n"],"mappings":"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","names":["_a"]}