{"version":3,"sources":["../../src/anthropic/google-vertex-anthropic-provider-node.ts","../../src/google-vertex-auth-google-auth-library.ts","../../src/anthropic/google-vertex-anthropic-provider.ts"],"sourcesContent":["import { resolve } from '@ai-sdk/provider-utils';\nimport type { GoogleAuthOptions } from 'google-auth-library';\nimport { createAuthTokenGenerator } from '../google-vertex-auth-google-auth-library';\nimport {\n  createVertexAnthropic as createVertexAnthropicOriginal,\n  type GoogleVertexAnthropicProvider,\n  type GoogleVertexAnthropicProviderSettings as GoogleVertexAnthropicProviderSettingsOriginal,\n} from './google-vertex-anthropic-provider';\n\nexport type { GoogleVertexAnthropicProvider };\n\nexport interface GoogleVertexAnthropicProviderSettings extends GoogleVertexAnthropicProviderSettingsOriginal {\n  /**\n   * Optional. The Authentication options provided by google-auth-library.\n   * Complete list of authentication options is documented in the\n   * GoogleAuthOptions interface:\n   * https://github.com/googleapis/google-auth-library-nodejs/blob/main/src/auth/googleauth.ts.\n   */\n  googleAuthOptions?: GoogleAuthOptions;\n  /**\n   * Optional. Override the Bearer token generator. Defaults to OAuth exchange\n   * via `google-auth-library` with `googleAuthOptions`.\n   */\n  generateAuthToken?: () => Promise<string | null>;\n}\n\nexport function createVertexAnthropic(\n  options: GoogleVertexAnthropicProviderSettings = {},\n): GoogleVertexAnthropicProvider {\n  const generateAuthToken =\n    options.generateAuthToken ??\n    createAuthTokenGenerator(options.googleAuthOptions);\n\n  return createVertexAnthropicOriginal({\n    ...options,\n    headers: async () => ({\n      Authorization: `Bearer ${await generateAuthToken()}`,\n      ...(await resolve(options.headers)),\n    }),\n  });\n}\n\n/**\n * Default Google Vertex Anthropic provider instance.\n */\nexport const vertexAnthropic = createVertexAnthropic();\n","import { GoogleAuth, type GoogleAuthOptions } from 'google-auth-library';\n\nexport function createAuthTokenGenerator(options?: GoogleAuthOptions) {\n  const auth = new GoogleAuth({\n    scopes: ['https://www.googleapis.com/auth/cloud-platform'],\n    ...options,\n  });\n\n  return async function generateAuthToken() {\n    const client = await auth.getClient();\n    const token = await client.getAccessToken();\n    return token?.token ?? null;\n  };\n}\n","import {\n  NoSuchModelError,\n  type LanguageModelV3,\n  type ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n  loadOptionalSetting,\n  withoutTrailingSlash,\n  type FetchFunction,\n  type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport {\n  anthropicTools,\n  AnthropicMessagesLanguageModel,\n} from '@ai-sdk/anthropic/internal';\nimport type { GoogleVertexAnthropicMessagesModelId } from './google-vertex-anthropic-messages-options';\n\n/**\n * Tools supported by Google Vertex Anthropic.\n * This is a subset of the full Anthropic tools - only these are recognized by the Vertex API.\n */\nexport const vertexAnthropicTools = {\n  /**\n   * The bash tool enables Claude to execute shell commands in a persistent bash session,\n   * allowing system operations, script execution, and command-line automation.\n   *\n   * Image results are supported.\n   */\n  bash_20241022: anthropicTools.bash_20241022,\n\n  /**\n   * The bash tool enables Claude to execute shell commands in a persistent bash session,\n   * allowing system operations, script execution, and command-line automation.\n   *\n   * Image results are supported.\n   */\n  bash_20250124: anthropicTools.bash_20250124,\n\n  /**\n   * Claude can use an Anthropic-defined text editor tool to view and modify text files,\n   * helping you debug, fix, and improve your code or other text documents.\n   *\n   * Supported models: Claude Sonnet 3.5\n   */\n  textEditor_20241022: anthropicTools.textEditor_20241022,\n\n  /**\n   * Claude can use an Anthropic-defined text editor tool to view and modify text files,\n   * helping you debug, fix, and improve your code or other text documents.\n   *\n   * Supported models: Claude Sonnet 3.7\n   */\n  textEditor_20250124: anthropicTools.textEditor_20250124,\n\n  /**\n   * Claude can use an Anthropic-defined text editor tool to view and modify text files.\n   * Note: This version does not support the \"undo_edit\" command.\n   * @deprecated Use textEditor_20250728 instead\n   */\n  textEditor_20250429: anthropicTools.textEditor_20250429,\n\n  /**\n   * Claude can use an Anthropic-defined text editor tool to view and modify text files.\n   * Note: This version does not support the \"undo_edit\" command and adds optional max_characters parameter.\n   * Supported models: Claude Sonnet 4, Opus 4, and Opus 4.1\n   */\n  textEditor_20250728: anthropicTools.textEditor_20250728,\n\n  /**\n   * Claude can interact with computer environments through the computer use tool, which\n   * provides screenshot capabilities and mouse/keyboard control for autonomous desktop interaction.\n   *\n   * Image results are supported.\n   */\n  computer_20241022: anthropicTools.computer_20241022,\n\n  /**\n   * Creates a web search tool that gives Claude direct access to real-time web content.\n   */\n  webSearch_20250305: anthropicTools.webSearch_20250305,\n\n  /**\n   * Creates a tool search tool that uses regex patterns to find tools.\n   *\n   * The tool search tool enables Claude to work with hundreds or thousands of tools\n   * by dynamically discovering and loading them on-demand.\n   *\n   * Use `providerOptions: { anthropic: { deferLoading: true } }` on other tools\n   * to mark them for deferred loading.\n   */\n  toolSearchRegex_20251119: anthropicTools.toolSearchRegex_20251119,\n\n  /**\n   * Creates a tool search tool that uses BM25 (natural language) to find tools.\n   *\n   * The tool search tool enables Claude to work with hundreds or thousands of tools\n   * by dynamically discovering and loading them on-demand.\n   *\n   * Use `providerOptions: { anthropic: { deferLoading: true } }` on other tools\n   * to mark them for deferred loading.\n   */\n  toolSearchBm25_20251119: anthropicTools.toolSearchBm25_20251119,\n};\nexport interface GoogleVertexAnthropicProvider extends ProviderV3 {\n  /**\n   * Creates a model for text generation.\n   */\n  (modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV3;\n\n  /**\n   * Creates a model for text generation.\n   */\n  languageModel(modelId: GoogleVertexAnthropicMessagesModelId): LanguageModelV3;\n\n  /**\n   * Anthropic tools supported by Google Vertex.\n   * Note: Only a subset of Anthropic tools are available on Vertex.\n   * Supported tools: bash_20241022, bash_20250124, textEditor_20241022,\n   * textEditor_20250124, textEditor_20250429, textEditor_20250728,\n   * computer_20241022, webSearch_20250305, toolSearchRegex_20251119,\n   * toolSearchBm25_20251119\n   */\n  tools: typeof vertexAnthropicTools;\n\n  /**\n   * @deprecated Use `embeddingModel` instead.\n   */\n  textEmbeddingModel(modelId: string): never;\n}\n\nexport interface GoogleVertexAnthropicProviderSettings {\n  /**\n   * Google Cloud project ID. Defaults to the value of the `GOOGLE_VERTEX_PROJECT` environment variable.\n   */\n  project?: string;\n\n  /**\n   * Google Cloud region. Defaults to the value of the `GOOGLE_VERTEX_LOCATION` environment variable.\n   */\n  location?: string;\n\n  /**\n   * Use a different URL prefix for API calls, e.g. to use proxy servers.\n   * The default prefix is `https://api.anthropic.com/v1`.\n   */\n  baseURL?: string;\n\n  /**\n   * Custom headers to include in the requests.\n   */\n  headers?: Resolvable<Record<string, string | undefined>>;\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/**\n * Create a Google Vertex Anthropic provider instance.\n */\nexport function createVertexAnthropic(\n  options: GoogleVertexAnthropicProviderSettings = {},\n): GoogleVertexAnthropicProvider {\n  const getBaseURL = () => {\n    const location = loadOptionalSetting({\n      settingValue: options.location,\n      environmentVariableName: 'GOOGLE_VERTEX_LOCATION',\n    });\n    const project = loadOptionalSetting({\n      settingValue: options.project,\n      environmentVariableName: 'GOOGLE_VERTEX_PROJECT',\n    });\n\n    return (\n      withoutTrailingSlash(options.baseURL) ??\n      `https://${location === 'global' ? '' : location + '-'}aiplatform.googleapis.com/v1/projects/${project}/locations/${location}/publishers/anthropic/models`\n    );\n  };\n\n  const createChatModel = (modelId: GoogleVertexAnthropicMessagesModelId) =>\n    new AnthropicMessagesLanguageModel(modelId, {\n      provider: 'vertex.anthropic.messages',\n      baseURL: getBaseURL(),\n      headers: options.headers ?? {},\n      fetch: options.fetch,\n\n      buildRequestUrl: (baseURL, isStreaming) =>\n        `${baseURL}/${modelId}:${\n          isStreaming ? 'streamRawPredict' : 'rawPredict'\n        }`,\n      transformRequestBody: args => {\n        // Remove model from args and add anthropic version\n        const { model, ...rest } = args;\n        return {\n          ...rest,\n          anthropic_version: 'vertex-2023-10-16',\n        };\n      },\n      // Google Vertex Anthropic doesn't support URL sources, force download and base64 conversion\n      supportedUrls: () => ({}),\n      // force the use of JSON tool fallback for structured outputs since beta header isn't supported\n      supportsNativeStructuredOutput: false,\n      // Vertex Anthropic doesn't support strict mode on tool definitions.\n      supportsStrictTools: false,\n    });\n\n  const provider = function (modelId: GoogleVertexAnthropicMessagesModelId) {\n    if (new.target) {\n      throw new Error(\n        'The Anthropic model function cannot be called with the new keyword.',\n      );\n    }\n\n    return createChatModel(modelId);\n  };\n\n  provider.specificationVersion = 'v3' as const;\n  provider.languageModel = createChatModel;\n  provider.chat = createChatModel;\n  provider.messages = createChatModel;\n\n  provider.embeddingModel = (modelId: string) => {\n    throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n  };\n  provider.textEmbeddingModel = provider.embeddingModel;\n  provider.imageModel = (modelId: string) => {\n    throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n  };\n\n  provider.tools = vertexAnthropicTools;\n\n  return provider;\n}\n"],"mappings":"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","names":["createVertexAnthropic"]}