{"version":3,"sources":["../../src/maas/google-vertex-maas-provider-node.ts","../../src/google-vertex-auth-google-auth-library.ts","../../src/maas/google-vertex-maas-provider.ts"],"sourcesContent":["import { resolve, type FetchFunction } from '@ai-sdk/provider-utils';\nimport type { GoogleAuthOptions } from 'google-auth-library';\nimport { createAuthTokenGenerator } from '../google-vertex-auth-google-auth-library';\nimport {\n  createVertexMaas as createVertexMaasOriginal,\n  type GoogleVertexMaasProvider,\n  type GoogleVertexMaasProviderSettings as GoogleVertexMaasProviderSettingsOriginal,\n} from './google-vertex-maas-provider';\n\nexport type { GoogleVertexMaasProvider };\n\nexport interface GoogleVertexMaasProviderSettings extends GoogleVertexMaasProviderSettingsOriginal {\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\n/**\n * Create a Google Vertex AI MaaS (Model as a Service) provider instance for Node.js.\n * Uses the OpenAI-compatible Chat Completions API for partner and open models.\n * Automatically handles Google Cloud authentication.\n *\n * @see https://cloud.google.com/vertex-ai/generative-ai/docs/maas/use-open-models\n */\nexport function createVertexMaas(\n  options: GoogleVertexMaasProviderSettings = {},\n): GoogleVertexMaasProvider {\n  const generateAuthToken = createAuthTokenGenerator(options.googleAuthOptions);\n\n  // Create a custom fetch wrapper that adds auth headers\n  const customFetch: FetchFunction = async (url, init) => {\n    const token = await generateAuthToken();\n    const resolvedHeaders = await resolve(options.headers);\n    const authHeaders = {\n      ...resolvedHeaders,\n      Authorization: `Bearer ${token}`,\n    };\n\n    // Merge auth headers with existing headers from init\n    const fetchInit = {\n      ...init,\n      headers: {\n        ...init?.headers,\n        ...authHeaders,\n      },\n    };\n\n    // Call the original fetch or user's custom fetch\n    return (options.fetch ?? fetch)(url, fetchInit);\n  };\n\n  return createVertexMaasOriginal({\n    ...options,\n    fetch: customFetch,\n    headers: undefined, // Don't pass headers, we handle them in fetch\n  });\n}\n\n/**\n * Default Google Vertex AI MaaS provider instance for Node.js.\n */\nexport const vertexMaas = createVertexMaas();\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  createOpenAICompatible,\n  type OpenAICompatibleProvider,\n} from '@ai-sdk/openai-compatible';\nimport {\n  loadOptionalSetting,\n  loadSetting,\n  withoutTrailingSlash,\n  type FetchFunction,\n  type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport type { GoogleVertexMaasModelId } from './google-vertex-maas-options';\n\nexport interface GoogleVertexMaasProvider extends OpenAICompatibleProvider<\n  GoogleVertexMaasModelId,\n  string,\n  string,\n  string\n> {}\n\nexport interface GoogleVertexMaasProviderSettings {\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 location/region. Defaults to the value of the `GOOGLE_VERTEX_LOCATION` environment variable.\n   * Use 'global' for the global endpoint.\n   */\n  location?: string;\n\n  /**\n   * Base URL for the API calls. If not provided, will be constructed from project and location.\n   */\n  baseURL?: string;\n\n  /**\n   * Headers to use for requests. Can be:\n   * - A headers object\n   * - A Promise that resolves to a headers object\n   * - A function that returns a headers object\n   * - A function that returns a Promise of a headers object\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 AI MaaS (Model as a Service) provider instance.\n * Uses the OpenAI-compatible Chat Completions API for partner and open models.\n *\n * @see https://cloud.google.com/vertex-ai/generative-ai/docs/maas/use-open-models\n */\nexport function createVertexMaas(\n  options: GoogleVertexMaasProviderSettings = {},\n): GoogleVertexMaasProvider {\n  // Lazy-load settings to support loading from environment variables at runtime\n  const loadLocation = () =>\n    loadOptionalSetting({\n      settingValue: options.location,\n      environmentVariableName: 'GOOGLE_VERTEX_LOCATION',\n    });\n\n  const loadProject = () =>\n    loadSetting({\n      settingValue: options.project,\n      settingName: 'project',\n      environmentVariableName: 'GOOGLE_VERTEX_PROJECT',\n      description: 'Google Vertex project',\n    });\n\n  // Construct base URL: https://aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/endpoints/openapi\n  const constructBaseURL = () => {\n    const projectId = loadProject();\n    const location = loadLocation() ?? 'global';\n\n    return `https://aiplatform.googleapis.com/v1/projects/${projectId}/locations/${location}/endpoints/openapi`;\n  };\n\n  const loadBaseURL = () =>\n    withoutTrailingSlash(options.baseURL ?? '') || constructBaseURL();\n\n  let cachedProvider: GoogleVertexMaasProvider | undefined;\n  const getProvider = () =>\n    (cachedProvider ??= createOpenAICompatible({\n      name: 'vertex.maas',\n      baseURL: loadBaseURL(),\n      fetch: options.fetch,\n    }));\n\n  const provider = (modelId: GoogleVertexMaasModelId) => getProvider()(modelId);\n\n  provider.specificationVersion = 'v3' as const;\n  provider.languageModel = (modelId: GoogleVertexMaasModelId) =>\n    getProvider().languageModel(modelId);\n  provider.chatModel = (modelId: GoogleVertexMaasModelId) =>\n    getProvider().chatModel(modelId);\n  provider.completionModel = (modelId: string) =>\n    getProvider().completionModel(modelId);\n  provider.embeddingModel = (modelId: string) =>\n    getProvider().embeddingModel(modelId);\n  provider.textEmbeddingModel = (modelId: string) =>\n    getProvider().textEmbeddingModel(modelId);\n  provider.imageModel = (modelId: string) => getProvider().imageModel(modelId);\n\n  return provider as GoogleVertexMaasProvider;\n}\n"],"mappings":";AAAA,SAAS,eAAmC;;;ACA5C,SAAS,kBAA0C;AAE5C,SAAS,yBAAyB,SAA6B;AACpE,QAAM,OAAO,IAAI,WAAW;AAAA,IAC1B,QAAQ,CAAC,gDAAgD;AAAA,IACzD,GAAG;AAAA,EACL,CAAC;AAED,SAAO,eAAe,oBAAoB;AAR5C;AASI,UAAM,SAAS,MAAM,KAAK,UAAU;AACpC,UAAM,QAAQ,MAAM,OAAO,eAAe;AAC1C,YAAO,oCAAO,UAAP,YAAgB;AAAA,EACzB;AACF;;;ACbA;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAiDA,SAAS,iBACd,UAA4C,CAAC,GACnB;AAE1B,QAAM,eAAe,MACnB,oBAAoB;AAAA,IAClB,cAAc,QAAQ;AAAA,IACtB,yBAAyB;AAAA,EAC3B,CAAC;AAEH,QAAM,cAAc,MAClB,YAAY;AAAA,IACV,cAAc,QAAQ;AAAA,IACtB,aAAa;AAAA,IACb,yBAAyB;AAAA,IACzB,aAAa;AAAA,EACf,CAAC;AAGH,QAAM,mBAAmB,MAAM;AA9EjC;AA+EI,UAAM,YAAY,YAAY;AAC9B,UAAM,YAAW,kBAAa,MAAb,YAAkB;AAEnC,WAAO,iDAAiD,SAAS,cAAc,QAAQ;AAAA,EACzF;AAEA,QAAM,cAAc,MAAG;AArFzB;AAsFI,iCAAqB,aAAQ,YAAR,YAAmB,EAAE,KAAK,iBAAiB;AAAA;AAElE,MAAI;AACJ,QAAM,cAAc,MACjB,2DAAmB,uBAAuB;AAAA,IACzC,MAAM;AAAA,IACN,SAAS,YAAY;AAAA,IACrB,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,WAAW,CAAC,YAAqC,YAAY,EAAE,OAAO;AAE5E,WAAS,uBAAuB;AAChC,WAAS,gBAAgB,CAAC,YACxB,YAAY,EAAE,cAAc,OAAO;AACrC,WAAS,YAAY,CAAC,YACpB,YAAY,EAAE,UAAU,OAAO;AACjC,WAAS,kBAAkB,CAAC,YAC1B,YAAY,EAAE,gBAAgB,OAAO;AACvC,WAAS,iBAAiB,CAAC,YACzB,YAAY,EAAE,eAAe,OAAO;AACtC,WAAS,qBAAqB,CAAC,YAC7B,YAAY,EAAE,mBAAmB,OAAO;AAC1C,WAAS,aAAa,CAAC,YAAoB,YAAY,EAAE,WAAW,OAAO;AAE3E,SAAO;AACT;;;AFpFO,SAASA,kBACd,UAA4C,CAAC,GACnB;AAC1B,QAAM,oBAAoB,yBAAyB,QAAQ,iBAAiB;AAG5E,QAAM,cAA6B,OAAO,KAAK,SAAS;AAlC1D;AAmCI,UAAM,QAAQ,MAAM,kBAAkB;AACtC,UAAM,kBAAkB,MAAM,QAAQ,QAAQ,OAAO;AACrD,UAAM,cAAc;AAAA,MAClB,GAAG;AAAA,MACH,eAAe,UAAU,KAAK;AAAA,IAChC;AAGA,UAAM,YAAY;AAAA,MAChB,GAAG;AAAA,MACH,SAAS;AAAA,QACP,GAAG,6BAAM;AAAA,QACT,GAAG;AAAA,MACL;AAAA,IACF;AAGA,aAAQ,aAAQ,UAAR,YAAiB,OAAO,KAAK,SAAS;AAAA,EAChD;AAEA,SAAO,iBAAyB;AAAA,IAC9B,GAAG;AAAA,IACH,OAAO;AAAA,IACP,SAAS;AAAA;AAAA,EACX,CAAC;AACH;AAKO,IAAM,aAAaA,kBAAiB;","names":["createVertexMaas"]}