@ai-sdk/google-vertex 5.0.0-beta.10 → 5.0.0-beta.109
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +937 -8
- package/README.md +65 -2
- package/dist/anthropic/edge/index.d.ts +18 -151
- package/dist/anthropic/edge/index.js +88 -70
- package/dist/anthropic/edge/index.js.map +1 -1
- package/dist/anthropic/index.d.ts +18 -151
- package/dist/anthropic/index.js +88 -81
- package/dist/anthropic/index.js.map +1 -1
- package/dist/edge/index.d.ts +58 -29
- package/dist/edge/index.js +581 -278
- package/dist/edge/index.js.map +1 -1
- package/dist/index.d.ts +70 -32
- package/dist/index.js +590 -296
- package/dist/index.js.map +1 -1
- package/dist/maas/edge/index.d.ts +76 -0
- package/dist/maas/edge/index.js +209 -0
- package/dist/maas/edge/index.js.map +1 -0
- package/dist/maas/index.d.ts +60 -0
- package/dist/maas/index.js +109 -0
- package/dist/maas/index.js.map +1 -0
- package/dist/xai/edge/index.d.ts +92 -0
- package/dist/xai/edge/index.js +259 -0
- package/dist/xai/edge/index.js.map +1 -0
- package/dist/xai/index.d.ts +76 -0
- package/dist/xai/index.js +159 -0
- package/dist/xai/index.js.map +1 -0
- package/docs/16-google-vertex.mdx +640 -102
- package/maas/edge.d.ts +1 -0
- package/maas/index.d.ts +1 -0
- package/package.json +49 -24
- package/src/anthropic/edge/google-vertex-anthropic-provider-edge.ts +17 -13
- package/src/anthropic/edge/index.ts +6 -2
- package/src/anthropic/{google-vertex-anthropic-messages-options.ts → google-vertex-anthropic-options.ts} +4 -1
- package/src/anthropic/google-vertex-anthropic-provider-node.ts +18 -13
- package/src/anthropic/google-vertex-anthropic-provider.ts +68 -19
- package/src/anthropic/index.ts +6 -2
- package/src/edge/google-vertex-provider-edge.ts +10 -12
- package/src/edge/index.ts +8 -1
- package/src/google-vertex-auth-google-auth-library.ts +13 -26
- package/src/google-vertex-config.ts +2 -2
- package/src/{google-vertex-embedding-options.ts → google-vertex-embedding-model-options.ts} +1 -0
- package/src/google-vertex-embedding-model.ts +35 -10
- package/src/google-vertex-image-model-options.ts +74 -0
- package/src/google-vertex-image-model.ts +106 -133
- package/src/google-vertex-options.ts +1 -1
- package/src/google-vertex-provider-base.ts +311 -0
- package/src/google-vertex-provider.ts +43 -233
- package/src/google-vertex-speech-model-options.ts +11 -0
- package/src/google-vertex-transcription-model-options.ts +46 -0
- package/src/google-vertex-transcription-model.ts +231 -0
- package/src/google-vertex-video-model-options.ts +49 -0
- package/src/google-vertex-video-model.ts +39 -75
- package/src/index.ts +20 -5
- package/src/maas/edge/google-vertex-maas-provider-edge.ts +64 -0
- package/src/maas/edge/index.ts +13 -0
- package/src/maas/google-vertex-maas-options.ts +15 -0
- package/src/maas/google-vertex-maas-provider-node.ts +65 -0
- package/src/maas/google-vertex-maas-provider.ts +122 -0
- package/src/maas/index.ts +13 -0
- package/src/xai/edge/google-vertex-xai-provider-edge.ts +61 -0
- package/src/xai/edge/index.ts +9 -0
- package/src/xai/google-vertex-xai-options.ts +7 -0
- package/src/xai/google-vertex-xai-provider-node.ts +62 -0
- package/src/xai/google-vertex-xai-provider.ts +212 -0
- package/src/xai/index.ts +9 -0
- package/xai/edge.d.ts +1 -0
- package/xai/index.d.ts +1 -0
- package/dist/anthropic/edge/index.d.mts +0 -231
- package/dist/anthropic/edge/index.mjs +0 -259
- package/dist/anthropic/edge/index.mjs.map +0 -1
- package/dist/anthropic/index.d.mts +0 -215
- package/dist/anthropic/index.mjs +0 -164
- package/dist/anthropic/index.mjs.map +0 -1
- package/dist/edge/index.d.mts +0 -160
- package/dist/edge/index.mjs +0 -1049
- package/dist/edge/index.mjs.map +0 -1
- package/dist/index.d.mts +0 -219
- package/dist/index.mjs +0 -960
- package/dist/index.mjs.map +0 -1
- package/src/google-vertex-provider-node.ts +0 -49
package/dist/edge/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/edge/index.ts","../../src/edge/google-vertex-provider-edge.ts","../../src/google-vertex-provider.ts","../../src/version.ts","../../src/google-vertex-embedding-model.ts","../../src/google-vertex-error.ts","../../src/google-vertex-embedding-options.ts","../../src/google-vertex-image-model.ts","../../src/google-vertex-tools.ts","../../src/google-vertex-video-model.ts","../../src/edge/google-vertex-auth-edge.ts"],"sourcesContent":["export { createVertex, vertex } from './google-vertex-provider-edge';\nexport type {\n GoogleVertexProviderSettings,\n GoogleVertexProvider,\n} from './google-vertex-provider-edge';\n","import { loadOptionalSetting, resolve } from '@ai-sdk/provider-utils';\nimport {\n createVertex as createVertexOriginal,\n GoogleVertexProvider,\n GoogleVertexProviderSettings as GoogleVertexProviderSettingsOriginal,\n} from '../google-vertex-provider';\nimport {\n generateAuthToken,\n GoogleCredentials,\n} from './google-vertex-auth-edge';\n\nexport type { GoogleVertexProvider };\n\nexport interface GoogleVertexProviderSettings\n extends GoogleVertexProviderSettingsOriginal {\n /**\n * Optional. The Google credentials for the Google Cloud service account. If\n * not provided, the Google Vertex provider will use environment variables to\n * load the credentials.\n */\n googleCredentials?: GoogleCredentials;\n}\n\nexport function createVertex(\n options: GoogleVertexProviderSettings = {},\n): GoogleVertexProvider {\n const apiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: 'GOOGLE_VERTEX_API_KEY',\n });\n\n if (apiKey) {\n return createVertexOriginal(options);\n }\n\n return createVertexOriginal({\n ...options,\n headers: async () => ({\n Authorization: `Bearer ${await generateAuthToken(\n options.googleCredentials,\n )}`,\n ...(await resolve(options.headers)),\n }),\n });\n}\n\n/**\n * Default Google Vertex AI provider instance.\n */\nexport const vertex = createVertex();\n","import { GoogleGenerativeAILanguageModel } from '@ai-sdk/google/internal';\nimport {\n Experimental_VideoModelV3,\n ImageModelV3,\n LanguageModelV3,\n ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadOptionalSetting,\n loadSetting,\n normalizeHeaders,\n resolve,\n Resolvable,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { VERSION } from './version';\nimport { GoogleVertexConfig } from './google-vertex-config';\nimport { GoogleVertexEmbeddingModel } from './google-vertex-embedding-model';\nimport { GoogleVertexEmbeddingModelId } from './google-vertex-embedding-options';\nimport { GoogleVertexImageModel } from './google-vertex-image-model';\nimport { GoogleVertexImageModelId } from './google-vertex-image-settings';\nimport { GoogleVertexModelId } from './google-vertex-options';\nimport { googleVertexTools } from './google-vertex-tools';\nimport { GoogleVertexVideoModel } from './google-vertex-video-model';\nimport { GoogleVertexVideoModelId } from './google-vertex-video-settings';\n\nconst EXPRESS_MODE_BASE_URL =\n 'https://aiplatform.googleapis.com/v1/publishers/google';\n\n// set `x-goog-api-key` header to API key for express mode\nfunction createExpressModeFetch(\n apiKey: string,\n customFetch?: FetchFunction,\n): FetchFunction {\n return async (url, init) => {\n const modifiedInit: RequestInit = {\n ...init,\n headers: {\n ...(init?.headers ? normalizeHeaders(init.headers) : {}),\n 'x-goog-api-key': apiKey,\n },\n };\n return (customFetch ?? fetch)(url.toString(), modifiedInit);\n };\n}\n\nexport interface GoogleVertexProvider extends ProviderV3 {\n /**\n * Creates a model for text generation.\n */\n (modelId: GoogleVertexModelId): LanguageModelV3;\n\n languageModel: (modelId: GoogleVertexModelId) => LanguageModelV3;\n\n /**\n * Creates a model for image generation.\n */\n image(modelId: GoogleVertexImageModelId): ImageModelV3;\n\n /**\n * Creates a model for image generation.\n */\n imageModel(modelId: GoogleVertexImageModelId): ImageModelV3;\n\n tools: typeof googleVertexTools;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(\n modelId: GoogleVertexEmbeddingModelId,\n ): GoogleVertexEmbeddingModel;\n\n /**\n * Creates a model for video generation.\n */\n video(modelId: GoogleVertexVideoModelId): Experimental_VideoModelV3;\n\n /**\n * Creates a model for video generation.\n */\n videoModel(modelId: GoogleVertexVideoModelId): Experimental_VideoModelV3;\n}\n\nexport interface GoogleVertexProviderSettings {\n /**\n * Optional. The API key for the Google Cloud project. If provided, the\n * provider will use express mode with API key authentication. Defaults to\n * the value of the `GOOGLE_VERTEX_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\n * Your Google Vertex location. Defaults to the environment variable `GOOGLE_VERTEX_LOCATION`.\n */\n location?: string;\n\n /**\n * Your Google Vertex project. Defaults to the environment variable `GOOGLE_VERTEX_PROJECT`.\n */\n project?: 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 // for testing\n generateId?: () => string;\n\n /**\n * Base URL for the Google Vertex API calls.\n */\n baseURL?: string;\n}\n\n/**\n * Create a Google Vertex AI provider instance.\n */\nexport function createVertex(\n options: GoogleVertexProviderSettings = {},\n): GoogleVertexProvider {\n const apiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: 'GOOGLE_VERTEX_API_KEY',\n });\n\n const loadVertexProject = () =>\n loadSetting({\n settingValue: options.project,\n settingName: 'project',\n environmentVariableName: 'GOOGLE_VERTEX_PROJECT',\n description: 'Google Vertex project',\n });\n\n const loadVertexLocation = () =>\n loadSetting({\n settingValue: options.location,\n settingName: 'location',\n environmentVariableName: 'GOOGLE_VERTEX_LOCATION',\n description: 'Google Vertex location',\n });\n\n const loadBaseURL = () => {\n if (apiKey) {\n return withoutTrailingSlash(options.baseURL) ?? EXPRESS_MODE_BASE_URL;\n }\n\n const region = loadVertexLocation();\n const project = loadVertexProject();\n\n // For global region, use aiplatform.googleapis.com directly\n // For other regions, use region-aiplatform.googleapis.com\n const baseHost = `${region === 'global' ? '' : region + '-'}aiplatform.googleapis.com`;\n\n return (\n withoutTrailingSlash(options.baseURL) ??\n `https://${baseHost}/v1beta1/projects/${project}/locations/${region}/publishers/google`\n );\n };\n\n const createConfig = (name: string): GoogleVertexConfig => {\n const getHeaders = async () => {\n const originalHeaders = await resolve(options.headers ?? {});\n return withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/google-vertex/${VERSION}`,\n );\n };\n\n return {\n provider: `google.vertex.${name}`,\n headers: getHeaders,\n fetch: apiKey\n ? createExpressModeFetch(apiKey, options.fetch)\n : options.fetch,\n baseURL: loadBaseURL(),\n };\n };\n\n const createChatModel = (modelId: GoogleVertexModelId) => {\n return new GoogleGenerativeAILanguageModel(modelId, {\n ...createConfig('chat'),\n generateId: options.generateId ?? generateId,\n supportedUrls: () => ({\n '*': [\n // HTTP URLs:\n /^https?:\\/\\/.*$/,\n // Google Cloud Storage URLs:\n /^gs:\\/\\/.*$/,\n ],\n }),\n });\n };\n\n const createEmbeddingModel = (modelId: GoogleVertexEmbeddingModelId) =>\n new GoogleVertexEmbeddingModel(modelId, createConfig('embedding'));\n\n const createImageModel = (modelId: GoogleVertexImageModelId) =>\n new GoogleVertexImageModel(modelId, {\n ...createConfig('image'),\n generateId: options.generateId ?? generateId,\n });\n\n const createVideoModel = (modelId: GoogleVertexVideoModelId) =>\n new GoogleVertexVideoModel(modelId, {\n ...createConfig('video'),\n generateId: options.generateId ?? generateId,\n });\n\n const provider = function (modelId: GoogleVertexModelId) {\n if (new.target) {\n throw new Error(\n 'The Google Vertex AI 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.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.video = createVideoModel;\n provider.videoModel = createVideoModel;\n provider.tools = googleVertexTools;\n\n return provider;\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","import {\n EmbeddingModelV3,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n postJsonToApi,\n resolve,\n parseProviderOptions,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { googleVertexFailedResponseHandler } from './google-vertex-error';\nimport {\n GoogleVertexEmbeddingModelId,\n googleVertexEmbeddingModelOptions,\n} from './google-vertex-embedding-options';\nimport { GoogleVertexConfig } from './google-vertex-config';\n\nexport class GoogleVertexEmbeddingModel implements EmbeddingModelV3 {\n readonly specificationVersion = 'v3';\n readonly modelId: GoogleVertexEmbeddingModelId;\n readonly maxEmbeddingsPerCall = 2048;\n readonly supportsParallelCalls = true;\n\n private readonly config: GoogleVertexConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n modelId: GoogleVertexEmbeddingModelId,\n config: GoogleVertexConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n > {\n let googleOptions = await parseProviderOptions({\n provider: 'vertex',\n providerOptions,\n schema: googleVertexEmbeddingModelOptions,\n });\n\n if (googleOptions == null) {\n googleOptions = await parseProviderOptions({\n provider: 'google',\n providerOptions,\n schema: googleVertexEmbeddingModelOptions,\n });\n }\n\n googleOptions = googleOptions ?? {};\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const mergedHeaders = combineHeaders(\n await resolve(this.config.headers),\n headers,\n );\n\n const url = `${this.config.baseURL}/models/${this.modelId}:predict`;\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url,\n headers: mergedHeaders,\n body: {\n instances: values.map(value => ({\n content: value,\n task_type: googleOptions.taskType,\n title: googleOptions.title,\n })),\n parameters: {\n outputDimensionality: googleOptions.outputDimensionality,\n autoTruncate: googleOptions.autoTruncate,\n },\n },\n failedResponseHandler: googleVertexFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n googleVertexTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n warnings: [],\n embeddings: response.predictions.map(\n prediction => prediction.embeddings.values,\n ),\n usage: {\n tokens: response.predictions.reduce(\n (tokenCount, prediction) =>\n tokenCount + prediction.embeddings.statistics.token_count,\n 0,\n ),\n },\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst googleVertexTextEmbeddingResponseSchema = z.object({\n predictions: z.array(\n z.object({\n embeddings: z.object({\n values: z.array(z.number()),\n statistics: z.object({\n token_count: z.number(),\n }),\n }),\n }),\n ),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst googleVertexErrorDataSchema = z.object({\n error: z.object({\n code: z.number().nullable(),\n message: z.string(),\n status: z.string(),\n }),\n});\n\nexport type GoogleVertexErrorData = z.infer<typeof googleVertexErrorDataSchema>;\n\nexport const googleVertexFailedResponseHandler = createJsonErrorResponseHandler(\n {\n errorSchema: googleVertexErrorDataSchema,\n errorToMessage: data => data.error.message,\n },\n);\n","import { z } from 'zod/v4';\n\n// https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/text-embeddings-api\nexport type GoogleVertexEmbeddingModelId =\n | 'textembedding-gecko'\n | 'textembedding-gecko@001'\n | 'textembedding-gecko@003'\n | 'textembedding-gecko-multilingual'\n | 'textembedding-gecko-multilingual@001'\n | 'text-multilingual-embedding-002'\n | 'text-embedding-004'\n | 'text-embedding-005'\n | 'gemini-embedding-001'\n | 'gemini-embedding-2-preview'\n | (string & {});\n\nexport const googleVertexEmbeddingModelOptions = z.object({\n /**\n * Optional. Optional reduced dimension for the output embedding.\n * If set, excessive values in the output embedding are truncated from the end.\n */\n outputDimensionality: z.number().optional(),\n\n /**\n * Optional. Specifies the task type for generating embeddings.\n * Supported task types:\n * - SEMANTIC_SIMILARITY: Optimized for text similarity.\n * - CLASSIFICATION: Optimized for text classification.\n * - CLUSTERING: Optimized for clustering texts based on similarity.\n * - RETRIEVAL_DOCUMENT: Optimized for document retrieval.\n * - RETRIEVAL_QUERY: Optimized for query-based retrieval.\n * - QUESTION_ANSWERING: Optimized for answering questions.\n * - FACT_VERIFICATION: Optimized for verifying factual information.\n * - CODE_RETRIEVAL_QUERY: Optimized for retrieving code blocks based on natural language queries.\n */\n taskType: z\n .enum([\n 'SEMANTIC_SIMILARITY',\n 'CLASSIFICATION',\n 'CLUSTERING',\n 'RETRIEVAL_DOCUMENT',\n 'RETRIEVAL_QUERY',\n 'QUESTION_ANSWERING',\n 'FACT_VERIFICATION',\n 'CODE_RETRIEVAL_QUERY',\n ])\n .optional(),\n\n /**\n * Optional. The title of the document being embedded.\n * Only valid when task_type is set to 'RETRIEVAL_DOCUMENT'.\n * Helps the model produce better embeddings by providing additional context.\n */\n title: z.string().optional(),\n\n /**\n * Optional. When set to true, input text will be truncated. When set to false,\n * an error is returned if the input text is longer than the maximum length supported by the model. Defaults to true.\n */\n autoTruncate: z.boolean().optional(),\n});\n\nexport type GoogleVertexEmbeddingModelOptions = z.infer<\n typeof googleVertexEmbeddingModelOptions\n>;\n","import type { GoogleLanguageModelOptions } from '@ai-sdk/google';\nimport { GoogleGenerativeAILanguageModel } from '@ai-sdk/google/internal';\nimport {\n ImageModelV3,\n ImageModelV3File,\n LanguageModelV3Prompt,\n SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n Resolvable,\n combineHeaders,\n convertToBase64,\n convertUint8ArrayToBase64,\n createJsonResponseHandler,\n generateId as defaultGenerateId,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { googleVertexFailedResponseHandler } from './google-vertex-error';\nimport { GoogleVertexImageModelId } from './google-vertex-image-settings';\n\ninterface GoogleVertexImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: typeof fetch;\n generateId?: () => string;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// https://cloud.google.com/vertex-ai/generative-ai/docs/image/generate-images\nexport class GoogleVertexImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n\n get maxImagesPerCall(): number {\n if (isGeminiModel(this.modelId)) {\n return 10;\n }\n return 4;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: GoogleVertexImageModelId,\n private config: GoogleVertexImageModelConfig,\n ) {}\n\n async doGenerate(\n options: Parameters<ImageModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<ImageModelV3['doGenerate']>>> {\n if (isGeminiModel(this.modelId)) {\n return this.doGenerateGemini(options);\n }\n return this.doGenerateImagen(options);\n }\n\n private async doGenerateImagen({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\n\n if (size != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n\n const vertexImageOptions = await parseProviderOptions({\n provider: 'vertex',\n providerOptions,\n schema: googleVertexImageModelOptionsSchema,\n });\n\n // Extract edit-specific options from provider options\n const { edit, ...otherOptions } = vertexImageOptions ?? {};\n const { mode: editMode, baseSteps, maskMode, maskDilation } = edit ?? {};\n\n // Build the request body based on whether we're editing or generating\n const isEditMode = files != null && files.length > 0;\n\n let body: Record<string, unknown>;\n\n if (isEditMode) {\n // Build reference images for editing\n const referenceImages: Array<Record<string, unknown>> = [];\n\n // Add the source image(s)\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n referenceImages.push({\n referenceType: 'REFERENCE_TYPE_RAW',\n referenceId: i + 1,\n referenceImage: {\n bytesBase64Encoded: getBase64Data(file),\n },\n });\n }\n\n // Add mask if provided\n if (mask != null) {\n referenceImages.push({\n referenceType: 'REFERENCE_TYPE_MASK',\n referenceId: files.length + 1,\n referenceImage: {\n bytesBase64Encoded: getBase64Data(mask),\n },\n maskImageConfig: {\n maskMode: maskMode ?? 'MASK_MODE_USER_PROVIDED',\n ...(maskDilation != null ? { dilation: maskDilation } : {}),\n },\n });\n }\n\n body = {\n instances: [\n {\n prompt,\n referenceImages,\n },\n ],\n parameters: {\n sampleCount: n,\n ...(aspectRatio != null ? { aspectRatio } : {}),\n ...(seed != null ? { seed } : {}),\n editMode: editMode ?? 'EDIT_MODE_INPAINT_INSERTION',\n ...(baseSteps != null ? { editConfig: { baseSteps } } : {}),\n ...otherOptions,\n },\n };\n } else {\n // Standard image generation\n body = {\n instances: [{ prompt }],\n parameters: {\n sampleCount: n,\n ...(aspectRatio != null ? { aspectRatio } : {}),\n ...(seed != null ? { seed } : {}),\n ...otherOptions,\n },\n };\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/models/${this.modelId}:predict`,\n headers: combineHeaders(await resolve(this.config.headers), headers),\n body,\n failedResponseHandler: googleVertexFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n vertexImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images:\n response.predictions?.map(\n ({ bytesBase64Encoded }) => bytesBase64Encoded,\n ) ?? [],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n vertex: {\n images:\n response.predictions?.map(prediction => {\n const {\n // normalize revised prompt property\n prompt: revisedPrompt,\n } = prediction;\n\n return { ...(revisedPrompt != null && { revisedPrompt }) };\n }) ?? [],\n },\n },\n };\n }\n\n private async doGenerateGemini({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\n\n if (mask != null) {\n throw new Error(\n 'Gemini image models do not support mask-based image editing.',\n );\n }\n\n if (n != null && n > 1) {\n throw new Error(\n 'Gemini image models do not support generating a set number of images per call. Use n=1 or omit the n parameter.',\n );\n }\n\n if (size != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n\n const userContent: Array<\n | { type: 'text'; text: string }\n | { type: 'file'; data: string | Uint8Array | URL; mediaType: string }\n > = [];\n\n if (prompt != null) {\n userContent.push({ type: 'text', text: prompt });\n }\n\n if (files != null && files.length > 0) {\n for (const file of files) {\n if (file.type === 'url') {\n userContent.push({\n type: 'file',\n data: new URL(file.url),\n mediaType: 'image/*',\n });\n } else {\n userContent.push({\n type: 'file',\n data:\n typeof file.data === 'string'\n ? file.data\n : new Uint8Array(file.data),\n mediaType: file.mediaType,\n });\n }\n }\n }\n\n const languageModelPrompt: LanguageModelV3Prompt = [\n { role: 'user', content: userContent },\n ];\n\n const languageModel = new GoogleGenerativeAILanguageModel(this.modelId, {\n provider: this.config.provider,\n baseURL: this.config.baseURL,\n headers: this.config.headers ?? {},\n fetch: this.config.fetch,\n generateId: this.config.generateId ?? defaultGenerateId,\n supportedUrls: () => ({\n '*': [/^https?:\\/\\/.*$/, /^gs:\\/\\/.*$/],\n }),\n });\n\n const result = await languageModel.doGenerate({\n prompt: languageModelPrompt,\n seed,\n providerOptions: {\n vertex: {\n responseModalities: ['IMAGE'],\n imageConfig: aspectRatio\n ? {\n aspectRatio: aspectRatio as NonNullable<\n GoogleLanguageModelOptions['imageConfig']\n >['aspectRatio'],\n }\n : undefined,\n ...((providerOptions?.vertex as Omit<\n GoogleLanguageModelOptions,\n 'responseModalities' | 'imageConfig'\n >) ?? {}),\n } satisfies GoogleLanguageModelOptions,\n },\n headers,\n abortSignal,\n });\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n const images: string[] = [];\n for (const part of result.content) {\n if (part.type === 'file' && part.mediaType.startsWith('image/')) {\n images.push(convertToBase64(part.data));\n }\n }\n\n return {\n images,\n warnings,\n providerMetadata: {\n vertex: {\n images: images.map(() => ({})),\n },\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: result.response?.headers,\n },\n usage: result.usage\n ? {\n inputTokens: result.usage.inputTokens.total,\n outputTokens: result.usage.outputTokens.total,\n totalTokens:\n (result.usage.inputTokens.total ?? 0) +\n (result.usage.outputTokens.total ?? 0),\n }\n : undefined,\n };\n }\n}\n\nfunction isGeminiModel(modelId: string): boolean {\n return modelId.startsWith('gemini-');\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst vertexImageResponseSchema = z.object({\n predictions: z\n .array(\n z.object({\n bytesBase64Encoded: z.string(),\n mimeType: z.string(),\n prompt: z.string().nullish(),\n }),\n )\n .nullish(),\n});\n\nconst googleVertexImageModelOptionsSchema = z.object({\n negativePrompt: z.string().nullish(),\n personGeneration: z\n .enum(['dont_allow', 'allow_adult', 'allow_all'])\n .nullish(),\n safetySetting: z\n .enum([\n 'block_low_and_above',\n 'block_medium_and_above',\n 'block_only_high',\n 'block_none',\n ])\n .nullish(),\n addWatermark: z.boolean().nullish(),\n storageUri: z.string().nullish(),\n sampleImageSize: z.enum(['1K', '2K']).nullish(),\n /**\n * Configuration for image editing operations\n */\n edit: z\n .object({\n /**\n * An integer that represents the number of sampling steps.\n * A higher value offers better image quality, a lower value offers better latency.\n * Try 35 steps to start. If the quality doesn't meet your requirements,\n * increase the value towards an upper limit of 75.\n */\n baseSteps: z.number().nullish(),\n\n // Edit mode options\n // https://cloud.google.com/vertex-ai/generative-ai/docs/image/edit-insert-objects\n mode: z\n .enum([\n 'EDIT_MODE_INPAINT_INSERTION',\n 'EDIT_MODE_INPAINT_REMOVAL',\n 'EDIT_MODE_OUTPAINT',\n 'EDIT_MODE_CONTROLLED_EDITING',\n 'EDIT_MODE_PRODUCT_IMAGE',\n 'EDIT_MODE_BGSWAP',\n ])\n .nullish(),\n\n /**\n * The mask mode to use.\n * - `MASK_MODE_DEFAULT` - Default value for mask mode.\n * - `MASK_MODE_USER_PROVIDED` - User provided mask. No segmentation needed.\n * - `MASK_MODE_DETECTION_BOX` - Mask from detected bounding boxes.\n * - `MASK_MODE_CLOTHING_AREA` - Masks from segmenting the clothing area with open-vocab segmentation.\n * - `MASK_MODE_PARSED_PERSON` - Masks from segmenting the person body and clothing using the person-parsing model.\n */\n maskMode: z\n .enum([\n 'MASK_MODE_DEFAULT',\n 'MASK_MODE_USER_PROVIDED',\n 'MASK_MODE_DETECTION_BOX',\n 'MASK_MODE_CLOTHING_AREA',\n 'MASK_MODE_PARSED_PERSON',\n ])\n .nullish(),\n\n /**\n * Optional. A float value between 0 and 1, inclusive, that represents the\n * percentage of the image width to grow the mask by. Using dilation helps\n * compensate for imprecise masks. We recommend a value of 0.01.\n */\n maskDilation: z.number().nullish(),\n })\n .nullish(),\n});\nexport type GoogleVertexImageModelOptions = z.infer<\n typeof googleVertexImageModelOptionsSchema\n>;\n\n/**\n * Helper to convert ImageModelV3File data to base64 string\n */\nfunction getBase64Data(file: ImageModelV3File): string {\n if (file.type === 'url') {\n throw new Error(\n 'URL-based images are not supported for Google Vertex image editing. Please provide the image data directly.',\n );\n }\n\n if (typeof file.data === 'string') {\n return file.data;\n }\n\n // Convert Uint8Array to base64\n return convertUint8ArrayToBase64(file.data);\n}\n","import { googleTools } from '@ai-sdk/google/internal';\n\nexport const googleVertexTools = {\n googleSearch: googleTools.googleSearch,\n enterpriseWebSearch: googleTools.enterpriseWebSearch,\n googleMaps: googleTools.googleMaps,\n urlContext: googleTools.urlContext,\n fileSearch: googleTools.fileSearch,\n codeExecution: googleTools.codeExecution,\n vertexRagStore: googleTools.vertexRagStore,\n};\n","import {\n AISDKError,\n type Experimental_VideoModelV3,\n type SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertUint8ArrayToBase64,\n createJsonResponseHandler,\n delay,\n type FetchFunction,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n type Resolvable,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { googleVertexFailedResponseHandler } from './google-vertex-error';\nimport type { GoogleVertexVideoModelId } from './google-vertex-video-settings';\n\nexport type GoogleVertexVideoModelOptions = {\n // Polling configuration\n pollIntervalMs?: number | null;\n pollTimeoutMs?: number | null;\n\n // Video generation options\n personGeneration?: 'dont_allow' | 'allow_adult' | 'allow_all' | null;\n negativePrompt?: string | null;\n generateAudio?: boolean | null;\n\n // Output configuration\n gcsOutputDirectory?: string | null;\n\n // Reference images (for style/asset reference)\n referenceImages?: Array<{\n bytesBase64Encoded?: string;\n gcsUri?: string;\n }> | null;\n\n [key: string]: unknown; // For passthrough\n};\n\ninterface GoogleVertexVideoModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n generateId?: () => string;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class GoogleVertexVideoModel implements Experimental_VideoModelV3 {\n readonly specificationVersion = 'v3';\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxVideosPerCall(): number {\n // Vertex supports multiple videos via sampleCount\n return 4;\n }\n\n constructor(\n readonly modelId: GoogleVertexVideoModelId,\n private readonly config: GoogleVertexVideoModelConfig,\n ) {}\n\n async doGenerate(\n options: Parameters<Experimental_VideoModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<Experimental_VideoModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const warnings: SharedV3Warning[] = [];\n\n const vertexOptions = (await parseProviderOptions({\n provider: 'vertex',\n providerOptions: options.providerOptions,\n schema: googleVertexVideoModelOptionsSchema,\n })) as GoogleVertexVideoModelOptions | undefined;\n\n const instances: Array<Record<string, unknown>> = [{}];\n const instance = instances[0];\n\n if (options.prompt != null) {\n instance.prompt = options.prompt;\n }\n\n if (options.image != null) {\n if (options.image.type === 'url') {\n warnings.push({\n type: 'unsupported',\n feature: 'URL-based image input',\n details:\n 'Vertex AI video models require base64-encoded images or GCS URIs. URL will be ignored.',\n });\n } else {\n const base64Data =\n typeof options.image.data === 'string'\n ? options.image.data\n : convertUint8ArrayToBase64(options.image.data);\n\n instance.image = {\n bytesBase64Encoded: base64Data,\n mimeType: options.image.mediaType,\n };\n }\n }\n\n if (vertexOptions?.referenceImages != null) {\n instance.referenceImages = vertexOptions.referenceImages;\n }\n\n const parameters: Record<string, unknown> = {\n sampleCount: options.n,\n };\n\n if (options.aspectRatio) {\n parameters.aspectRatio = options.aspectRatio;\n }\n\n if (options.resolution) {\n const resolutionMap: Record<string, string> = {\n '1280x720': '720p',\n '1920x1080': '1080p',\n '3840x2160': '4k',\n };\n parameters.resolution =\n resolutionMap[options.resolution] || options.resolution;\n }\n\n if (options.duration) {\n parameters.durationSeconds = options.duration;\n }\n\n if (options.seed) {\n parameters.seed = options.seed;\n }\n\n if (vertexOptions != null) {\n const opts = vertexOptions;\n\n if (\n opts.personGeneration !== undefined &&\n opts.personGeneration !== null\n ) {\n parameters.personGeneration = opts.personGeneration;\n }\n if (opts.negativePrompt !== undefined && opts.negativePrompt !== null) {\n parameters.negativePrompt = opts.negativePrompt;\n }\n if (opts.generateAudio !== undefined && opts.generateAudio !== null) {\n parameters.generateAudio = opts.generateAudio;\n }\n if (\n opts.gcsOutputDirectory !== undefined &&\n opts.gcsOutputDirectory !== null\n ) {\n parameters.gcsOutputDirectory = opts.gcsOutputDirectory;\n }\n\n for (const [key, value] of Object.entries(opts)) {\n if (\n ![\n 'pollIntervalMs',\n 'pollTimeoutMs',\n 'personGeneration',\n 'negativePrompt',\n 'generateAudio',\n 'gcsOutputDirectory',\n 'referenceImages',\n ].includes(key)\n ) {\n parameters[key] = value;\n }\n }\n }\n\n const { value: operation } = await postJsonToApi({\n url: `${this.config.baseURL}/models/${this.modelId}:predictLongRunning`,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\n body: {\n instances,\n parameters,\n },\n successfulResponseHandler: createJsonResponseHandler(\n vertexOperationSchema,\n ),\n failedResponseHandler: googleVertexFailedResponseHandler,\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const operationName = operation.name;\n if (!operationName) {\n throw new AISDKError({\n name: 'VERTEX_VIDEO_GENERATION_ERROR',\n message: 'No operation name returned from API',\n });\n }\n\n const pollIntervalMs = vertexOptions?.pollIntervalMs ?? 10000; // 10 seconds\n const pollTimeoutMs = vertexOptions?.pollTimeoutMs ?? 600000; // 10 minutes\n\n const startTime = Date.now();\n let finalOperation = operation;\n let responseHeaders: Record<string, string> | undefined;\n\n while (!finalOperation.done) {\n if (Date.now() - startTime > pollTimeoutMs) {\n throw new AISDKError({\n name: 'VERTEX_VIDEO_GENERATION_TIMEOUT',\n message: `Video generation timed out after ${pollTimeoutMs}ms`,\n });\n }\n\n await delay(pollIntervalMs);\n\n if (options.abortSignal?.aborted) {\n throw new AISDKError({\n name: 'VERTEX_VIDEO_GENERATION_ABORTED',\n message: 'Video generation request was aborted',\n });\n }\n\n const { value: statusOperation, responseHeaders: pollHeaders } =\n await postJsonToApi({\n url: `${this.config.baseURL}/models/${this.modelId}:fetchPredictOperation`,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\n body: {\n operationName,\n },\n successfulResponseHandler: createJsonResponseHandler(\n vertexOperationSchema,\n ),\n failedResponseHandler: googleVertexFailedResponseHandler,\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n finalOperation = statusOperation;\n responseHeaders = pollHeaders;\n }\n\n if (finalOperation.error) {\n throw new AISDKError({\n name: 'VERTEX_VIDEO_GENERATION_FAILED',\n message: `Video generation failed: ${finalOperation.error.message}`,\n });\n }\n\n const response = finalOperation.response;\n if (!response?.videos || response.videos.length === 0) {\n throw new AISDKError({\n name: 'VERTEX_VIDEO_GENERATION_ERROR',\n message: `No videos in response. Response: ${JSON.stringify(finalOperation)}`,\n });\n }\n\n // Process videos - Vertex returns base64 encoded videos or GCS URIs\n const videos: Array<\n | { type: 'base64'; data: string; mediaType: string }\n | { type: 'url'; url: string; mediaType: string }\n > = [];\n const videoMetadata: Array<{\n gcsUri?: string | null | undefined;\n mimeType?: string | null | undefined;\n }> = [];\n\n for (const video of response.videos) {\n if (video.bytesBase64Encoded) {\n videos.push({\n type: 'base64',\n data: video.bytesBase64Encoded,\n mediaType: video.mimeType || 'video/mp4',\n });\n videoMetadata.push({\n mimeType: video.mimeType,\n });\n } else if (video.gcsUri) {\n videos.push({\n type: 'url',\n url: video.gcsUri,\n mediaType: video.mimeType || 'video/mp4',\n });\n videoMetadata.push({\n gcsUri: video.gcsUri,\n mimeType: video.mimeType,\n });\n }\n }\n\n if (videos.length === 0) {\n throw new AISDKError({\n name: 'VERTEX_VIDEO_GENERATION_ERROR',\n message: 'No valid videos in response',\n });\n }\n\n return {\n videos,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n 'google-vertex': {\n videos: videoMetadata,\n },\n },\n };\n }\n}\n\nconst vertexOperationSchema = z.object({\n name: z.string().nullish(),\n done: z.boolean().nullish(),\n error: z\n .object({\n code: z.number().nullish(),\n message: z.string(),\n status: z.string().nullish(),\n })\n .nullish(),\n response: z\n .object({\n videos: z\n .array(\n z.object({\n bytesBase64Encoded: z.string().nullish(),\n gcsUri: z.string().nullish(),\n mimeType: z.string().nullish(),\n }),\n )\n .nullish(),\n raiMediaFilteredCount: z.number().nullish(),\n })\n .nullish(),\n});\n\nconst googleVertexVideoModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n pollIntervalMs: z.number().positive().nullish(),\n pollTimeoutMs: z.number().positive().nullish(),\n personGeneration: z\n .enum(['dont_allow', 'allow_adult', 'allow_all'])\n .nullish(),\n negativePrompt: z.string().nullish(),\n generateAudio: z.boolean().nullish(),\n gcsOutputDirectory: z.string().nullish(),\n referenceImages: z\n .array(\n z.object({\n bytesBase64Encoded: z.string().nullish(),\n gcsUri: z.string().nullish(),\n }),\n )\n .nullish(),\n })\n .passthrough(),\n ),\n);\n","import {\n loadOptionalSetting,\n loadSetting,\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent,\n} from '@ai-sdk/provider-utils';\nimport { VERSION } from '../version';\n\nexport interface GoogleCredentials {\n /**\n * The client email for the Google Cloud service account. Defaults to the\n * value of the `GOOGLE_CLIENT_EMAIL` environment variable.\n */\n clientEmail: string;\n\n /**\n * The private key for the Google Cloud service account. Defaults to the\n * value of the `GOOGLE_PRIVATE_KEY` environment variable.\n */\n privateKey: string;\n\n /**\n * Optional. The private key ID for the Google Cloud service account. Defaults\n * to the value of the `GOOGLE_PRIVATE_KEY_ID` environment variable.\n */\n privateKeyId?: string;\n}\n\nconst loadCredentials = async (): Promise<GoogleCredentials> => {\n try {\n return {\n clientEmail: loadSetting({\n settingValue: undefined,\n settingName: 'clientEmail',\n environmentVariableName: 'GOOGLE_CLIENT_EMAIL',\n description: 'Google client email',\n }),\n privateKey: loadSetting({\n settingValue: undefined,\n settingName: 'privateKey',\n environmentVariableName: 'GOOGLE_PRIVATE_KEY',\n description: 'Google private key',\n }),\n privateKeyId: loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'GOOGLE_PRIVATE_KEY_ID',\n }),\n };\n } catch (error: any) {\n throw new Error(`Failed to load Google credentials: ${error.message}`);\n }\n};\n\n// Convert a string to base64url\nconst base64url = (str: string) => {\n return btoa(str).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n};\nconst importPrivateKey = async (pemKey: string) => {\n const pemHeader = '-----BEGIN PRIVATE KEY-----';\n const pemFooter = '-----END PRIVATE KEY-----';\n\n // Remove header, footer, and any whitespace/newlines\n const pemContents = pemKey\n .replace(pemHeader, '')\n .replace(pemFooter, '')\n .replace(/\\s/g, '');\n\n // Decode base64 to binary\n const binaryString = atob(pemContents);\n\n // Convert binary string to Uint8Array\n const binaryData = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n binaryData[i] = binaryString.charCodeAt(i);\n }\n\n return await crypto.subtle.importKey(\n 'pkcs8',\n binaryData,\n { name: 'RSASSA-PKCS1-v1_5', hash: 'SHA-256' },\n true,\n ['sign'],\n );\n};\n\nconst buildJwt = async (credentials: GoogleCredentials) => {\n const now = Math.floor(Date.now() / 1000);\n\n // Only include kid in header if privateKeyId is provided\n const header: { alg: string; typ: string; kid?: string } = {\n alg: 'RS256',\n typ: 'JWT',\n };\n\n if (credentials.privateKeyId) {\n header.kid = credentials.privateKeyId;\n }\n\n const payload = {\n iss: credentials.clientEmail,\n scope: 'https://www.googleapis.com/auth/cloud-platform',\n aud: 'https://oauth2.googleapis.com/token',\n exp: now + 3600,\n iat: now,\n };\n\n const privateKey = await importPrivateKey(credentials.privateKey);\n\n const signingInput = `${base64url(JSON.stringify(header))}.${base64url(\n JSON.stringify(payload),\n )}`;\n const encoder = new TextEncoder();\n const data = encoder.encode(signingInput);\n\n const signature = await crypto.subtle.sign(\n 'RSASSA-PKCS1-v1_5',\n privateKey,\n data,\n );\n\n const signatureBase64 = base64url(\n String.fromCharCode(...new Uint8Array(signature)),\n );\n\n return `${base64url(JSON.stringify(header))}.${base64url(\n JSON.stringify(payload),\n )}.${signatureBase64}`;\n};\n\n/**\n * Generate an authentication token for Google Vertex AI in a manner compatible\n * with the Edge runtime.\n */\nexport async function generateAuthToken(credentials?: GoogleCredentials) {\n try {\n const creds = credentials || (await loadCredentials());\n const jwt = await buildJwt(creds);\n\n const response = await fetch('https://oauth2.googleapis.com/token', {\n method: 'POST',\n headers: withUserAgentSuffix(\n { 'Content-Type': 'application/x-www-form-urlencoded' },\n `ai-sdk/google-vertex/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n ),\n body: new URLSearchParams({\n grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',\n assertion: jwt,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Token request failed: ${response.statusText}`);\n }\n\n const data = await response.json();\n return data.access_token;\n } catch (error) {\n throw error;\n }\n}\n"],"mappings":"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","names":["createVertex","import_provider_utils","import_internal","import_provider_utils","import_provider_utils","import_v4","import_v4","import_provider_utils","import_v4","defaultGenerateId","import_internal","import_provider","import_provider_utils","import_v4","import_provider_utils","createVertex"]}
|
|
1
|
+
{"version":3,"sources":["../../src/edge/google-vertex-provider-edge.ts","../../src/google-vertex-provider-base.ts","../../src/version.ts","../../src/google-vertex-embedding-model.ts","../../src/google-vertex-error.ts","../../src/google-vertex-embedding-model-options.ts","../../src/google-vertex-image-model.ts","../../src/google-vertex-image-model-options.ts","../../src/google-vertex-tools.ts","../../src/google-vertex-transcription-model.ts","../../src/google-vertex-transcription-model-options.ts","../../src/google-vertex-video-model.ts","../../src/google-vertex-video-model-options.ts","../../src/edge/google-vertex-auth-edge.ts"],"sourcesContent":["import { loadOptionalSetting, resolve } from '@ai-sdk/provider-utils';\nimport {\n createGoogleVertex as createGoogleVertexOriginal,\n type GoogleVertexProvider,\n type GoogleVertexProviderSettings as GoogleVertexProviderSettingsOriginal,\n} from '../google-vertex-provider-base';\nimport {\n generateAuthToken,\n type GoogleCredentials,\n} from './google-vertex-auth-edge';\nexport type { GoogleVertexProvider };\n\nexport interface GoogleVertexProviderSettings extends GoogleVertexProviderSettingsOriginal {\n /**\n * Optional. The Google credentials for the Google Cloud service account. If\n * not provided, the Google Vertex provider will use environment variables to\n * load the credentials.\n */\n googleCredentials?: GoogleCredentials;\n}\n\nexport function createGoogleVertex(\n options: GoogleVertexProviderSettings = {},\n): GoogleVertexProvider {\n const apiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: 'GOOGLE_VERTEX_API_KEY',\n });\n\n if (apiKey) {\n return createGoogleVertexOriginal(options);\n }\n\n return createGoogleVertexOriginal({\n ...options,\n headers: async () => ({\n Authorization: `Bearer ${await generateAuthToken(\n options.googleCredentials,\n )}`,\n ...(await resolve(options.headers)),\n }),\n });\n}\n\n/**\n * Default Google Vertex AI provider instance.\n */\nexport const googleVertex = createGoogleVertex();\n","import {\n GoogleLanguageModel,\n GoogleSpeechModel,\n} from '@ai-sdk/google/internal';\nimport type {\n Experimental_VideoModelV4,\n ImageModelV4,\n LanguageModelV4,\n ProviderV4,\n SpeechModelV4,\n TranscriptionModelV4,\n} from '@ai-sdk/provider';\nimport {\n generateId,\n loadOptionalSetting,\n loadSetting,\n normalizeHeaders,\n resolve,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { VERSION } from './version';\nimport type { GoogleVertexConfig } from './google-vertex-config';\nimport { GoogleVertexEmbeddingModel } from './google-vertex-embedding-model';\nimport type { GoogleVertexEmbeddingModelId } from './google-vertex-embedding-model-options';\nimport { GoogleVertexImageModel } from './google-vertex-image-model';\nimport type { GoogleVertexImageModelId } from './google-vertex-image-settings';\nimport type { GoogleVertexModelId } from './google-vertex-options';\nimport { googleVertexTools } from './google-vertex-tools';\nimport { GoogleVertexTranscriptionModel } from './google-vertex-transcription-model';\nimport type { GoogleVertexTranscriptionModelId } from './google-vertex-transcription-model-options';\nimport { GoogleVertexVideoModel } from './google-vertex-video-model';\nimport type { GoogleVertexVideoModelId } from './google-vertex-video-settings';\nimport type { GoogleVertexSpeechModelId } from './google-vertex-speech-model-options';\n\nconst EXPRESS_MODE_BASE_URL =\n 'https://aiplatform.googleapis.com/v1/publishers/google';\n\n// set `x-goog-api-key` header to API key for express mode\nfunction createExpressModeFetch(\n apiKey: string,\n customFetch?: FetchFunction,\n): FetchFunction {\n return async (url, init) => {\n const modifiedInit: RequestInit = {\n ...init,\n headers: {\n ...(init?.headers ? normalizeHeaders(init.headers) : {}),\n 'x-goog-api-key': apiKey,\n },\n };\n return (customFetch ?? fetch)(url.toString(), modifiedInit);\n };\n}\n\nexport interface GoogleVertexProvider extends ProviderV4 {\n /**\n * Creates a model for text generation.\n */\n (modelId: GoogleVertexModelId): LanguageModelV4;\n\n languageModel: (modelId: GoogleVertexModelId) => LanguageModelV4;\n\n /**\n * Creates a model for image generation.\n */\n image(modelId: GoogleVertexImageModelId): ImageModelV4;\n\n /**\n * Creates a model for image generation.\n */\n imageModel(modelId: GoogleVertexImageModelId): ImageModelV4;\n\n tools: typeof googleVertexTools;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(\n modelId: GoogleVertexEmbeddingModelId,\n ): GoogleVertexEmbeddingModel;\n\n /**\n * Creates a model for video generation.\n */\n video(modelId: GoogleVertexVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Creates a model for video generation.\n */\n videoModel(modelId: GoogleVertexVideoModelId): Experimental_VideoModelV4;\n\n /**\n * Creates a model for speech generation (text-to-speech).\n */\n speech(modelId: GoogleVertexSpeechModelId): SpeechModelV4;\n\n /**\n * Creates a model for speech generation (text-to-speech).\n */\n speechModel(modelId: GoogleVertexSpeechModelId): SpeechModelV4;\n\n /**\n * Creates a model for transcription (speech-to-text).\n */\n transcription(\n modelId: GoogleVertexTranscriptionModelId,\n ): TranscriptionModelV4;\n\n /**\n * Creates a model for transcription (speech-to-text).\n */\n transcriptionModel(\n modelId: GoogleVertexTranscriptionModelId,\n ): TranscriptionModelV4;\n}\n\nexport interface GoogleVertexProviderSettings {\n /**\n * Optional. The API key for the Google Cloud project. If provided, the\n * provider will use express mode with API key authentication. Defaults to\n * the value of the `GOOGLE_VERTEX_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\n * Your Google Vertex location. Defaults to the environment variable `GOOGLE_VERTEX_LOCATION`.\n */\n location?: string;\n\n /**\n * Your Google Vertex project. Defaults to the environment variable `GOOGLE_VERTEX_PROJECT`.\n */\n project?: 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 // for testing\n generateId?: () => string;\n\n /**\n * Base URL for the Google Vertex API calls.\n */\n baseURL?: string;\n}\n\n/**\n * Create a Google Vertex AI provider instance.\n */\nexport function createGoogleVertex(\n options: GoogleVertexProviderSettings = {},\n): GoogleVertexProvider {\n const apiKey = loadOptionalSetting({\n settingValue: options.apiKey,\n environmentVariableName: 'GOOGLE_VERTEX_API_KEY',\n });\n\n const loadGoogleVertexProject = () =>\n loadSetting({\n settingValue: options.project,\n settingName: 'project',\n environmentVariableName: 'GOOGLE_VERTEX_PROJECT',\n description: 'Google Vertex project',\n });\n\n const loadGoogleVertexLocation = () =>\n loadSetting({\n settingValue: options.location,\n settingName: 'location',\n environmentVariableName: 'GOOGLE_VERTEX_LOCATION',\n description: 'Google Vertex location',\n });\n\n const loadBaseURL = () => {\n if (apiKey) {\n return withoutTrailingSlash(options.baseURL) ?? EXPRESS_MODE_BASE_URL;\n }\n\n const region = loadGoogleVertexLocation();\n const project = loadGoogleVertexProject();\n\n const getHost = () => {\n if (region === 'global') {\n return 'aiplatform.googleapis.com';\n } else if (region === 'eu' || region === 'us') {\n return `aiplatform.${region}.rep.googleapis.com`;\n } else {\n return `${region}-aiplatform.googleapis.com`;\n }\n };\n\n return (\n withoutTrailingSlash(options.baseURL) ??\n `https://${getHost()}/v1beta1/projects/${project}/locations/${region}/publishers/google`\n );\n };\n\n const createConfig = (name: string): GoogleVertexConfig => {\n const getHeaders = async () => {\n const originalHeaders = await resolve(options.headers ?? {});\n return withUserAgentSuffix(\n originalHeaders,\n `ai-sdk/google-vertex/${VERSION}`,\n );\n };\n\n return {\n provider: `google.vertex.${name}`,\n headers: getHeaders,\n fetch: apiKey\n ? createExpressModeFetch(apiKey, options.fetch)\n : options.fetch,\n baseURL: loadBaseURL(),\n };\n };\n\n const createChatModel = (modelId: GoogleVertexModelId) => {\n return new GoogleLanguageModel(modelId, {\n ...createConfig('chat'),\n generateId: options.generateId ?? generateId,\n supportedUrls: () => ({\n '*': [\n // HTTP URLs:\n /^https?:\\/\\/.*$/,\n // Google Cloud Storage URLs:\n /^gs:\\/\\/.*$/,\n ],\n }),\n });\n };\n\n const createEmbeddingModel = (modelId: GoogleVertexEmbeddingModelId) =>\n new GoogleVertexEmbeddingModel(modelId, createConfig('embedding'));\n\n const createImageModel = (modelId: GoogleVertexImageModelId) =>\n new GoogleVertexImageModel(modelId, {\n ...createConfig('image'),\n generateId: options.generateId ?? generateId,\n });\n\n const createVideoModel = (modelId: GoogleVertexVideoModelId) =>\n new GoogleVertexVideoModel(modelId, {\n ...createConfig('video'),\n generateId: options.generateId ?? generateId,\n });\n\n const createSpeechModel = (modelId: GoogleVertexSpeechModelId) =>\n new GoogleSpeechModel(modelId, createConfig('speech'));\n\n // Cloud Speech-to-Text reuses the Vertex auth headers from createConfig, but\n // targets the Speech-to-Text API.\n const createTranscriptionModel = (\n modelId: GoogleVertexTranscriptionModelId,\n ) => {\n if (apiKey) {\n throw new Error(\n 'Google Vertex transcription models do not support Express Mode API keys. Use standard Google Cloud credentials instead.',\n );\n }\n\n const config = createConfig('transcription');\n return new GoogleVertexTranscriptionModel(modelId, {\n provider: config.provider,\n headers: config.headers,\n fetch: config.fetch,\n project: loadGoogleVertexProject(),\n location: loadGoogleVertexLocation(),\n });\n };\n\n const provider = function (modelId: GoogleVertexModelId) {\n if (new.target) {\n throw new Error(\n 'The Google Vertex AI model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.specificationVersion = 'v4' as const;\n provider.languageModel = createChatModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.video = createVideoModel;\n provider.videoModel = createVideoModel;\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.tools = googleVertexTools;\n\n return provider;\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","import {\n TooManyEmbeddingValuesForCallError,\n type EmbeddingModelV4,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n postJsonToApi,\n resolve,\n parseProviderOptions,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { googleVertexFailedResponseHandler } from './google-vertex-error';\nimport {\n googleVertexEmbeddingModelOptions,\n type GoogleVertexEmbeddingModelId,\n} from './google-vertex-embedding-model-options';\nimport type { GoogleVertexConfig } from './google-vertex-config';\n\nexport class GoogleVertexEmbeddingModel implements EmbeddingModelV4 {\n readonly specificationVersion = 'v4';\n readonly modelId: GoogleVertexEmbeddingModelId;\n readonly maxEmbeddingsPerCall = 2048;\n readonly supportsParallelCalls = true;\n\n private readonly config: GoogleVertexConfig;\n\n static [WORKFLOW_SERIALIZE](model: GoogleVertexEmbeddingModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: string;\n config: GoogleVertexConfig;\n }) {\n return new GoogleVertexEmbeddingModel(options.modelId, options.config);\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n modelId: GoogleVertexEmbeddingModelId,\n config: GoogleVertexConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV4['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>\n > {\n let googleOptions = await parseProviderOptions({\n provider: 'googleVertex',\n providerOptions,\n schema: googleVertexEmbeddingModelOptions,\n });\n\n if (googleOptions == null) {\n googleOptions = await parseProviderOptions({\n provider: 'vertex',\n providerOptions,\n schema: googleVertexEmbeddingModelOptions,\n });\n }\n\n if (googleOptions == null) {\n googleOptions = await parseProviderOptions({\n provider: 'google',\n providerOptions,\n schema: googleVertexEmbeddingModelOptions,\n });\n }\n\n googleOptions = googleOptions ?? {};\n\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const mergedHeaders = combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n headers,\n );\n\n const url = `${this.config.baseURL}/models/${this.modelId}:predict`;\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url,\n headers: mergedHeaders,\n body: {\n instances: values.map(value => ({\n content: value,\n task_type: googleOptions.taskType,\n title: googleOptions.title,\n })),\n parameters: {\n outputDimensionality: googleOptions.outputDimensionality,\n autoTruncate: googleOptions.autoTruncate,\n },\n },\n failedResponseHandler: googleVertexFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n googleVertexTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n warnings: [],\n embeddings: response.predictions.map(\n prediction => prediction.embeddings.values,\n ),\n usage: {\n tokens: response.predictions.reduce(\n (tokenCount, prediction) =>\n tokenCount + prediction.embeddings.statistics.token_count,\n 0,\n ),\n },\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst googleVertexTextEmbeddingResponseSchema = z.object({\n predictions: z.array(\n z.object({\n embeddings: z.object({\n values: z.array(z.number()),\n statistics: z.object({\n token_count: z.number(),\n }),\n }),\n }),\n ),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst googleVertexErrorDataSchema = z.object({\n error: z.object({\n code: z.number().nullable(),\n message: z.string(),\n status: z.string(),\n }),\n});\n\nexport type GoogleVertexErrorData = z.infer<typeof googleVertexErrorDataSchema>;\n\nexport const googleVertexFailedResponseHandler = createJsonErrorResponseHandler(\n {\n errorSchema: googleVertexErrorDataSchema,\n errorToMessage: data => data.error.message,\n },\n);\n","import { z } from 'zod/v4';\n\n// https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/text-embeddings-api\nexport type GoogleVertexEmbeddingModelId =\n | 'textembedding-gecko'\n | 'textembedding-gecko@001'\n | 'textembedding-gecko@003'\n | 'textembedding-gecko-multilingual'\n | 'textembedding-gecko-multilingual@001'\n | 'text-multilingual-embedding-002'\n | 'text-embedding-004'\n | 'text-embedding-005'\n | 'gemini-embedding-001'\n | 'gemini-embedding-2'\n | 'gemini-embedding-2-preview'\n | (string & {});\n\nexport const googleVertexEmbeddingModelOptions = z.object({\n /**\n * Optional. Optional reduced dimension for the output embedding.\n * If set, excessive values in the output embedding are truncated from the end.\n */\n outputDimensionality: z.number().optional(),\n\n /**\n * Optional. Specifies the task type for generating embeddings.\n * Supported task types:\n * - SEMANTIC_SIMILARITY: Optimized for text similarity.\n * - CLASSIFICATION: Optimized for text classification.\n * - CLUSTERING: Optimized for clustering texts based on similarity.\n * - RETRIEVAL_DOCUMENT: Optimized for document retrieval.\n * - RETRIEVAL_QUERY: Optimized for query-based retrieval.\n * - QUESTION_ANSWERING: Optimized for answering questions.\n * - FACT_VERIFICATION: Optimized for verifying factual information.\n * - CODE_RETRIEVAL_QUERY: Optimized for retrieving code blocks based on natural language queries.\n */\n taskType: z\n .enum([\n 'SEMANTIC_SIMILARITY',\n 'CLASSIFICATION',\n 'CLUSTERING',\n 'RETRIEVAL_DOCUMENT',\n 'RETRIEVAL_QUERY',\n 'QUESTION_ANSWERING',\n 'FACT_VERIFICATION',\n 'CODE_RETRIEVAL_QUERY',\n ])\n .optional(),\n\n /**\n * Optional. The title of the document being embedded.\n * Only valid when task_type is set to 'RETRIEVAL_DOCUMENT'.\n * Helps the model produce better embeddings by providing additional context.\n */\n title: z.string().optional(),\n\n /**\n * Optional. When set to true, input text will be truncated. When set to false,\n * an error is returned if the input text is longer than the maximum length supported by the model. Defaults to true.\n */\n autoTruncate: z.boolean().optional(),\n});\n\nexport type GoogleVertexEmbeddingModelOptions = z.infer<\n typeof googleVertexEmbeddingModelOptions\n>;\n","import type { GoogleLanguageModelOptions } from '@ai-sdk/google';\nimport { GoogleLanguageModel } from '@ai-sdk/google/internal';\nimport type {\n ImageModelV4,\n ImageModelV4File,\n LanguageModelV4Prompt,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertToBase64,\n convertUint8ArrayToBase64,\n createJsonResponseHandler,\n generateId as defaultGenerateId,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { googleVertexFailedResponseHandler } from './google-vertex-error';\nimport { googleVertexImageModelOptionsSchema } from './google-vertex-image-model-options';\nimport type { GoogleVertexImageModelId } from './google-vertex-image-settings';\n\ninterface GoogleVertexImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: typeof fetch;\n generateId?: () => string;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// https://cloud.google.com/vertex-ai/generative-ai/docs/image/generate-images\nexport class GoogleVertexImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n\n static [WORKFLOW_SERIALIZE](model: GoogleVertexImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: string;\n config: GoogleVertexImageModelConfig;\n }) {\n return new GoogleVertexImageModel(options.modelId, options.config);\n }\n\n get maxImagesPerCall(): number {\n if (isGeminiModel(this.modelId)) {\n return 10;\n }\n return 4;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: GoogleVertexImageModelId,\n private config: GoogleVertexImageModelConfig,\n ) {}\n\n async doGenerate(\n options: Parameters<ImageModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<ImageModelV4['doGenerate']>>> {\n if (isGeminiModel(this.modelId)) {\n return this.doGenerateGemini(options);\n }\n return this.doGenerateImagen(options);\n }\n\n private async doGenerateImagen({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\n\n if (size != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n\n const googleVertexImageOptions =\n (await parseProviderOptions({\n provider: 'googleVertex',\n providerOptions,\n schema: googleVertexImageModelOptionsSchema,\n })) ??\n (await parseProviderOptions({\n provider: 'vertex',\n providerOptions,\n schema: googleVertexImageModelOptionsSchema,\n }));\n\n // Extract edit-specific options from provider options\n const { edit, ...otherOptions } = googleVertexImageOptions ?? {};\n const { mode: editMode, baseSteps, maskMode, maskDilation } = edit ?? {};\n\n // Build the request body based on whether we're editing or generating\n const isEditMode = files != null && files.length > 0;\n\n let body: Record<string, unknown>;\n\n if (isEditMode) {\n // Build reference images for editing\n const referenceImages: Array<Record<string, unknown>> = [];\n\n // Add the source image(s)\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n referenceImages.push({\n referenceType: 'REFERENCE_TYPE_RAW',\n referenceId: i + 1,\n referenceImage: {\n bytesBase64Encoded: getBase64Data(file),\n },\n });\n }\n\n // Add mask if provided\n if (mask != null) {\n referenceImages.push({\n referenceType: 'REFERENCE_TYPE_MASK',\n referenceId: files.length + 1,\n referenceImage: {\n bytesBase64Encoded: getBase64Data(mask),\n },\n maskImageConfig: {\n maskMode: maskMode ?? 'MASK_MODE_USER_PROVIDED',\n ...(maskDilation != null ? { dilation: maskDilation } : {}),\n },\n });\n }\n\n body = {\n instances: [\n {\n prompt,\n referenceImages,\n },\n ],\n parameters: {\n sampleCount: n,\n ...(aspectRatio != null ? { aspectRatio } : {}),\n ...(seed != null ? { seed } : {}),\n editMode: editMode ?? 'EDIT_MODE_INPAINT_INSERTION',\n ...(baseSteps != null ? { editConfig: { baseSteps } } : {}),\n ...otherOptions,\n },\n };\n } else {\n // Standard image generation\n body = {\n instances: [{ prompt }],\n parameters: {\n sampleCount: n,\n ...(aspectRatio != null ? { aspectRatio } : {}),\n ...(seed != null ? { seed } : {}),\n ...otherOptions,\n },\n };\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/models/${this.modelId}:predict`,\n headers: combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n headers,\n ),\n body,\n failedResponseHandler: googleVertexFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n googleVertexImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images:\n response.predictions?.map(\n ({ bytesBase64Encoded }) => bytesBase64Encoded,\n ) ?? [],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: (() => {\n const payload = {\n images:\n response.predictions?.map(prediction => {\n const {\n // normalize revised prompt property\n prompt: revisedPrompt,\n } = prediction;\n\n return { ...(revisedPrompt != null && { revisedPrompt }) };\n }) ?? [],\n };\n return { googleVertex: payload, vertex: payload };\n })(),\n };\n }\n\n private async doGenerateGemini({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\n\n if (mask != null) {\n throw new Error(\n 'Gemini image models do not support mask-based image editing.',\n );\n }\n\n if (n != null && n > 1) {\n throw new Error(\n 'Gemini image models do not support generating a set number of images per call. Use n=1 or omit the n parameter.',\n );\n }\n\n if (size != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n\n const userContent: Array<\n | { type: 'text'; text: string }\n | {\n type: 'file';\n data:\n | { type: 'data'; data: string | Uint8Array }\n | { type: 'url'; url: URL };\n mediaType: string;\n }\n > = [];\n\n if (prompt != null) {\n userContent.push({ type: 'text', text: prompt });\n }\n\n if (files != null && files.length > 0) {\n for (const file of files) {\n if (file.type === 'url') {\n userContent.push({\n type: 'file',\n data: { type: 'url', url: new URL(file.url) },\n mediaType: 'image/*',\n });\n } else {\n userContent.push({\n type: 'file',\n data: {\n type: 'data',\n data:\n typeof file.data === 'string'\n ? file.data\n : new Uint8Array(file.data),\n },\n mediaType: file.mediaType,\n });\n }\n }\n }\n\n const languageModelPrompt: LanguageModelV4Prompt = [\n { role: 'user', content: userContent },\n ];\n\n const languageModel = new GoogleLanguageModel(this.modelId, {\n provider: this.config.provider,\n baseURL: this.config.baseURL,\n headers: this.config.headers ?? {},\n fetch: this.config.fetch,\n generateId: this.config.generateId ?? defaultGenerateId,\n supportedUrls: () => ({\n '*': [/^https?:\\/\\/.*$/, /^gs:\\/\\/.*$/],\n }),\n });\n\n const userVertexOptions = (providerOptions?.googleVertex ??\n providerOptions?.vertex) as\n | Omit<GoogleLanguageModelOptions, 'responseModalities' | 'imageConfig'>\n | undefined;\n const innerVertexOptions: GoogleLanguageModelOptions = {\n responseModalities: ['IMAGE'],\n imageConfig: aspectRatio\n ? {\n aspectRatio: aspectRatio as NonNullable<\n GoogleLanguageModelOptions['imageConfig']\n >['aspectRatio'],\n }\n : undefined,\n ...(userVertexOptions ?? {}),\n };\n const result = await languageModel.doGenerate({\n prompt: languageModelPrompt,\n seed,\n providerOptions: {\n googleVertex: innerVertexOptions,\n vertex: innerVertexOptions,\n },\n headers,\n abortSignal,\n });\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n const images: string[] = [];\n for (const part of result.content) {\n if (\n part.type === 'file' &&\n part.mediaType.startsWith('image/') &&\n part.data.type === 'data'\n ) {\n images.push(convertToBase64(part.data.data));\n }\n }\n\n const geminiPayload = {\n images: images.map(() => ({})),\n };\n return {\n images,\n warnings,\n providerMetadata: {\n googleVertex: geminiPayload,\n vertex: geminiPayload,\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: result.response?.headers,\n },\n usage: result.usage\n ? {\n inputTokens: result.usage.inputTokens.total,\n outputTokens: result.usage.outputTokens.total,\n totalTokens:\n (result.usage.inputTokens.total ?? 0) +\n (result.usage.outputTokens.total ?? 0),\n }\n : undefined,\n };\n }\n}\n\nfunction isGeminiModel(modelId: string): boolean {\n return modelId.startsWith('gemini-');\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst googleVertexImageResponseSchema = z.object({\n predictions: z\n .array(\n z.object({\n bytesBase64Encoded: z.string(),\n mimeType: z.string(),\n prompt: z.string().nullish(),\n }),\n )\n .nullish(),\n});\n\n/**\n * Helper to convert ImageModelV4File data to base64 string\n */\nfunction getBase64Data(file: ImageModelV4File): string {\n if (file.type === 'url') {\n throw new Error(\n 'URL-based images are not supported for Google Vertex image editing. Please provide the image data directly.',\n );\n }\n\n if (typeof file.data === 'string') {\n return file.data;\n }\n\n // Convert Uint8Array to base64\n return convertUint8ArrayToBase64(file.data);\n}\n","import { z } from 'zod/v4';\n\nexport const googleVertexImageModelOptionsSchema = z.object({\n negativePrompt: z.string().nullish(),\n personGeneration: z\n .enum(['dont_allow', 'allow_adult', 'allow_all'])\n .nullish(),\n safetySetting: z\n .enum([\n 'block_low_and_above',\n 'block_medium_and_above',\n 'block_only_high',\n 'block_none',\n ])\n .nullish(),\n addWatermark: z.boolean().nullish(),\n storageUri: z.string().nullish(),\n sampleImageSize: z.enum(['1K', '2K']).nullish(),\n /**\n * Configuration for image editing operations\n */\n edit: z\n .object({\n /**\n * An integer that represents the number of sampling steps.\n * A higher value offers better image quality, a lower value offers better latency.\n * Try 35 steps to start. If the quality doesn't meet your requirements,\n * increase the value towards an upper limit of 75.\n */\n baseSteps: z.number().nullish(),\n\n // Edit mode options\n // https://cloud.google.com/vertex-ai/generative-ai/docs/image/edit-insert-objects\n mode: z\n .enum([\n 'EDIT_MODE_INPAINT_INSERTION',\n 'EDIT_MODE_INPAINT_REMOVAL',\n 'EDIT_MODE_OUTPAINT',\n 'EDIT_MODE_CONTROLLED_EDITING',\n 'EDIT_MODE_PRODUCT_IMAGE',\n 'EDIT_MODE_BGSWAP',\n ])\n .nullish(),\n\n /**\n * The mask mode to use.\n * - `MASK_MODE_DEFAULT` - Default value for mask mode.\n * - `MASK_MODE_USER_PROVIDED` - User provided mask. No segmentation needed.\n * - `MASK_MODE_DETECTION_BOX` - Mask from detected bounding boxes.\n * - `MASK_MODE_CLOTHING_AREA` - Masks from segmenting the clothing area with open-vocab segmentation.\n * - `MASK_MODE_PARSED_PERSON` - Masks from segmenting the person body and clothing using the person-parsing model.\n */\n maskMode: z\n .enum([\n 'MASK_MODE_DEFAULT',\n 'MASK_MODE_USER_PROVIDED',\n 'MASK_MODE_DETECTION_BOX',\n 'MASK_MODE_CLOTHING_AREA',\n 'MASK_MODE_PARSED_PERSON',\n ])\n .nullish(),\n\n /**\n * Optional. A float value between 0 and 1, inclusive, that represents the\n * percentage of the image width to grow the mask by. Using dilation helps\n * compensate for imprecise masks. We recommend a value of 0.01.\n */\n maskDilation: z.number().nullish(),\n })\n .nullish(),\n});\nexport type GoogleVertexImageModelOptions = z.infer<\n typeof googleVertexImageModelOptionsSchema\n>;\n","import { googleTools } from '@ai-sdk/google/internal';\n\nexport const googleVertexTools = {\n googleSearch: googleTools.googleSearch,\n enterpriseWebSearch: googleTools.enterpriseWebSearch,\n googleMaps: googleTools.googleMaps,\n urlContext: googleTools.urlContext,\n fileSearch: googleTools.fileSearch,\n codeExecution: googleTools.codeExecution,\n vertexRagStore: googleTools.vertexRagStore,\n};\n","import type { SharedV4Warning, TranscriptionModelV4 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertUint8ArrayToBase64,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n serializeModelOptions,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { googleVertexFailedResponseHandler } from './google-vertex-error';\nimport {\n googleVertexTranscriptionProviderOptionsSchema,\n type GoogleVertexTranscriptionModelId,\n type GoogleVertexTranscriptionModelOptions,\n} from './google-vertex-transcription-model-options';\n\ninterface GoogleVertexTranscriptionModelConfig {\n provider: string;\n /** Google Cloud project id. */\n project: string;\n /** Default Speech-to-Text region (overridable via provider options). */\n location: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// Speech-to-Text Durations are strings like `\"1.200s\"`; parse to seconds.\nfunction parseDurationSeconds(\n value: string | null | undefined,\n): number | undefined {\n if (value == null) {\n return undefined;\n }\n const seconds = Number.parseFloat(value);\n return Number.isFinite(seconds) ? seconds : undefined;\n}\n\nfunction convertBcp47ToIso6391(\n value: string | null | undefined,\n): string | undefined {\n if (value == null) {\n return undefined;\n }\n\n try {\n const language = new Intl.Locale(value).language;\n return language.length === 2 ? language : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport class GoogleVertexTranscriptionModel implements TranscriptionModelV4 {\n readonly specificationVersion = 'v4';\n\n static [WORKFLOW_SERIALIZE](model: GoogleVertexTranscriptionModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: GoogleVertexTranscriptionModelId;\n config: GoogleVertexTranscriptionModelConfig;\n }) {\n return new GoogleVertexTranscriptionModel(options.modelId, options.config);\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: GoogleVertexTranscriptionModelId,\n private readonly config: GoogleVertexTranscriptionModelConfig,\n ) {}\n\n async doGenerate(\n options: Parameters<TranscriptionModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const warnings: SharedV4Warning[] = [];\n\n // Provider options may be passed under `googleVertex`, `vertex`, or `google`\n // (matching the Vertex language + embedding models).\n let googleOptions: GoogleVertexTranscriptionModelOptions | undefined;\n for (const provider of ['googleVertex', 'vertex', 'google'] as const) {\n googleOptions = await parseProviderOptions({\n provider,\n providerOptions: options.providerOptions,\n schema: googleVertexTranscriptionProviderOptionsSchema,\n });\n if (googleOptions != null) {\n break;\n }\n }\n\n const region = googleOptions?.region ?? this.config.location;\n const languageCodes = googleOptions?.languageCodes ?? ['auto'];\n\n // The recognize API takes base64-encoded audio in the `content` field. A\n // string audio input is already base64-encoded per the spec.\n const content =\n typeof options.audio === 'string'\n ? options.audio\n : convertUint8ArrayToBase64(options.audio);\n\n const requestBody = {\n config: {\n model: this.modelId,\n languageCodes,\n // Let Speech-to-Text auto-detect the audio encoding (wav/mp3/flac/…).\n autoDecodingConfig: {},\n features: {\n // Word timing populates `segments`.\n enableWordTimeOffsets: googleOptions?.enableWordTimeOffsets ?? true,\n enableAutomaticPunctuation:\n googleOptions?.enableAutomaticPunctuation ?? true,\n },\n },\n content,\n };\n\n const host =\n region === 'global'\n ? 'speech.googleapis.com'\n : `${region}-speech.googleapis.com`;\n\n const url =\n `https://${host}/v2/projects/` +\n `${this.config.project}/locations/${region}/recognizers/_:recognize`;\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url,\n headers: combineHeaders(\n this.config.headers ? await resolve(this.config.headers) : undefined,\n options.headers,\n ),\n body: requestBody,\n failedResponseHandler: googleVertexFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n googleVertexTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n // Results are sequential portions of the audio; concatenate their primary\n // alternatives into the full transcript and collect word-level segments.\n const results = response.results ?? [];\n const text = results\n .map(result => result.alternatives?.[0]?.transcript ?? '')\n .join(' ')\n .trim();\n const segments = results.flatMap(\n result =>\n result.alternatives?.[0]?.words?.flatMap(word => {\n const startSecond = parseDurationSeconds(word.startOffset);\n const endSecond = parseDurationSeconds(word.endOffset);\n\n return word.word == null || startSecond == null || endSecond == null\n ? []\n : [{ text: word.word, startSecond, endSecond }];\n }) ?? [],\n );\n const language = convertBcp47ToIso6391(results[0]?.languageCode);\n\n return {\n text,\n segments,\n language,\n durationInSeconds: parseDurationSeconds(\n response.metadata?.totalBilledDuration,\n ),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\n// Minimal schema: only the fields the implementation reads, with `.nullish()`\n// so provider API changes don't break parsing.\nconst googleVertexTranscriptionResponseSchema = z.object({\n results: z\n .array(\n z.object({\n alternatives: z\n .array(\n z.object({\n transcript: z.string().nullish(),\n words: z\n .array(\n z.object({\n word: z.string().nullish(),\n startOffset: z.string().nullish(),\n endOffset: z.string().nullish(),\n }),\n )\n .nullish(),\n }),\n )\n .nullish(),\n languageCode: z.string().nullish(),\n }),\n )\n .nullish(),\n metadata: z\n .object({\n totalBilledDuration: z.string().nullish(),\n })\n .nullish(),\n});\n","import { z } from 'zod/v4';\n\n// Google Cloud Speech-to-Text transcription models (Speech-to-Text v2).\n// https://docs.cloud.google.com/speech-to-text/docs/transcription-model\nexport type GoogleVertexTranscriptionModelId =\n | 'chirp_2'\n | 'chirp_3'\n | 'telephony'\n | (string & {});\n\nexport const googleVertexTranscriptionProviderOptionsSchema = z.object({\n /**\n * BCP-47 language codes to recognize (e.g. `['en-US']`), or `['auto']` to let\n * Chirp auto-detect the spoken language. Defaults to `['auto']`. For\n * `telephony`, pass a supported explicit language code.\n */\n languageCodes: z.array(z.string()).optional(),\n\n /**\n * Whether to add punctuation to the transcript. Defaults to `true`.\n */\n enableAutomaticPunctuation: z.boolean().optional(),\n\n /**\n * Whether to include word-level timestamps. Defaults to `true` so the\n * transcription result can include segments.\n *\n * Enabling word-level timestamps can reduce transcription quality and speed\n * for Chirp models.\n */\n enableWordTimeOffsets: z.boolean().optional(),\n\n /**\n * The Cloud Speech-to-Text region for the request (e.g. `'us'`, `'eu'`,\n * `'us-central1'`). Defaults to the provider `location`.\n *\n * Note: Speech-to-Text regions differ from Vertex AI regions. Chirp is only\n * available in specific Speech-to-Text regions and is not available in the\n * `global` location.\n */\n region: z.string().optional(),\n});\n\nexport type GoogleVertexTranscriptionModelOptions = z.infer<\n typeof googleVertexTranscriptionProviderOptionsSchema\n>;\n","import {\n AISDKError,\n type Experimental_VideoModelV4,\n type SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertUint8ArrayToBase64,\n createJsonResponseHandler,\n delay,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n type FetchFunction,\n type Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { googleVertexFailedResponseHandler } from './google-vertex-error';\nimport {\n googleVertexVideoModelOptionsSchema,\n type GoogleVertexVideoModelOptions,\n} from './google-vertex-video-model-options';\nimport type { GoogleVertexVideoModelId } from './google-vertex-video-settings';\n\ninterface GoogleVertexVideoModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n generateId?: () => string;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class GoogleVertexVideoModel implements Experimental_VideoModelV4 {\n readonly specificationVersion = 'v4';\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxVideosPerCall(): number {\n // Vertex supports multiple videos via sampleCount\n return 4;\n }\n\n constructor(\n readonly modelId: GoogleVertexVideoModelId,\n private readonly config: GoogleVertexVideoModelConfig,\n ) {}\n\n async doGenerate(\n options: Parameters<Experimental_VideoModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<Experimental_VideoModelV4['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const warnings: SharedV4Warning[] = [];\n\n const googleVertexOptions = ((await parseProviderOptions({\n provider: 'googleVertex',\n providerOptions: options.providerOptions,\n schema: googleVertexVideoModelOptionsSchema,\n })) ??\n (await parseProviderOptions({\n provider: 'vertex',\n providerOptions: options.providerOptions,\n schema: googleVertexVideoModelOptionsSchema,\n }))) as GoogleVertexVideoModelOptions | undefined;\n\n const instances: Array<Record<string, unknown>> = [{}];\n const instance = instances[0];\n\n if (options.prompt != null) {\n instance.prompt = options.prompt;\n }\n\n if (options.image != null) {\n if (options.image.type === 'url') {\n warnings.push({\n type: 'unsupported',\n feature: 'URL-based image input',\n details:\n 'Vertex AI video models require base64-encoded images or GCS URIs. URL will be ignored.',\n });\n } else {\n const base64Data =\n typeof options.image.data === 'string'\n ? options.image.data\n : convertUint8ArrayToBase64(options.image.data);\n\n instance.image = {\n bytesBase64Encoded: base64Data,\n mimeType: options.image.mediaType,\n };\n }\n }\n\n if (googleVertexOptions?.referenceImages != null) {\n instance.referenceImages = googleVertexOptions.referenceImages;\n }\n\n const parameters: Record<string, unknown> = {\n sampleCount: options.n,\n };\n\n if (options.aspectRatio) {\n parameters.aspectRatio = options.aspectRatio;\n }\n\n if (options.resolution) {\n const resolutionMap: Record<string, string> = {\n '1280x720': '720p',\n '1920x1080': '1080p',\n '3840x2160': '4k',\n };\n parameters.resolution =\n resolutionMap[options.resolution] || options.resolution;\n }\n\n if (options.duration) {\n parameters.durationSeconds = options.duration;\n }\n\n if (options.seed) {\n parameters.seed = options.seed;\n }\n\n if (googleVertexOptions != null) {\n const opts = googleVertexOptions;\n\n if (\n opts.personGeneration !== undefined &&\n opts.personGeneration !== null\n ) {\n parameters.personGeneration = opts.personGeneration;\n }\n if (opts.negativePrompt !== undefined && opts.negativePrompt !== null) {\n parameters.negativePrompt = opts.negativePrompt;\n }\n if (opts.generateAudio !== undefined && opts.generateAudio !== null) {\n parameters.generateAudio = opts.generateAudio;\n }\n if (\n opts.gcsOutputDirectory !== undefined &&\n opts.gcsOutputDirectory !== null\n ) {\n parameters.gcsOutputDirectory = opts.gcsOutputDirectory;\n }\n\n for (const [key, value] of Object.entries(opts)) {\n if (\n ![\n 'pollIntervalMs',\n 'pollTimeoutMs',\n 'personGeneration',\n 'negativePrompt',\n 'generateAudio',\n 'gcsOutputDirectory',\n 'referenceImages',\n ].includes(key)\n ) {\n parameters[key] = value;\n }\n }\n }\n\n const { value: operation } = await postJsonToApi({\n url: `${this.config.baseURL}/models/${this.modelId}:predictLongRunning`,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\n body: {\n instances,\n parameters,\n },\n successfulResponseHandler: createJsonResponseHandler(\n googleVertexOperationSchema,\n ),\n failedResponseHandler: googleVertexFailedResponseHandler,\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const operationName = operation.name;\n if (!operationName) {\n throw new AISDKError({\n name: 'VERTEX_VIDEO_GENERATION_ERROR',\n message: 'No operation name returned from API',\n });\n }\n\n const pollIntervalMs = googleVertexOptions?.pollIntervalMs ?? 10000; // 10 seconds\n const pollTimeoutMs = googleVertexOptions?.pollTimeoutMs ?? 600000; // 10 minutes\n\n const startTime = Date.now();\n let finalOperation = operation;\n let responseHeaders: Record<string, string> | undefined;\n\n while (!finalOperation.done) {\n if (Date.now() - startTime > pollTimeoutMs) {\n throw new AISDKError({\n name: 'VERTEX_VIDEO_GENERATION_TIMEOUT',\n message: `Video generation timed out after ${pollTimeoutMs}ms`,\n });\n }\n\n await delay(pollIntervalMs);\n\n if (options.abortSignal?.aborted) {\n throw new AISDKError({\n name: 'VERTEX_VIDEO_GENERATION_ABORTED',\n message: 'Video generation request was aborted',\n });\n }\n\n const { value: statusOperation, responseHeaders: pollHeaders } =\n await postJsonToApi({\n url: `${this.config.baseURL}/models/${this.modelId}:fetchPredictOperation`,\n headers: combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n ),\n body: {\n operationName,\n },\n successfulResponseHandler: createJsonResponseHandler(\n googleVertexOperationSchema,\n ),\n failedResponseHandler: googleVertexFailedResponseHandler,\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n finalOperation = statusOperation;\n responseHeaders = pollHeaders;\n }\n\n if (finalOperation.error) {\n throw new AISDKError({\n name: 'VERTEX_VIDEO_GENERATION_FAILED',\n message: `Video generation failed: ${finalOperation.error.message}`,\n });\n }\n\n const response = finalOperation.response;\n if (!response?.videos || response.videos.length === 0) {\n throw new AISDKError({\n name: 'VERTEX_VIDEO_GENERATION_ERROR',\n message: `No videos in response. Response: ${JSON.stringify(finalOperation)}`,\n });\n }\n\n // Process videos - Vertex returns base64 encoded videos or GCS URIs\n const videos: Array<\n | { type: 'base64'; data: string; mediaType: string }\n | { type: 'url'; url: string; mediaType: string }\n > = [];\n const videoMetadata: Array<{\n gcsUri?: string | null | undefined;\n mimeType?: string | null | undefined;\n }> = [];\n\n for (const video of response.videos) {\n if (video.bytesBase64Encoded) {\n videos.push({\n type: 'base64',\n data: video.bytesBase64Encoded,\n mediaType: video.mimeType || 'video/mp4',\n });\n videoMetadata.push({\n mimeType: video.mimeType,\n });\n } else if (video.gcsUri) {\n videos.push({\n type: 'url',\n url: video.gcsUri,\n mediaType: video.mimeType || 'video/mp4',\n });\n videoMetadata.push({\n gcsUri: video.gcsUri,\n mimeType: video.mimeType,\n });\n }\n }\n\n if (videos.length === 0) {\n throw new AISDKError({\n name: 'VERTEX_VIDEO_GENERATION_ERROR',\n message: 'No valid videos in response',\n });\n }\n\n return {\n videos,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: (() => {\n const payload = { videos: videoMetadata };\n return {\n googleVertex: payload,\n // Legacy keys preserved for backward compatibility.\n 'google-vertex': payload,\n vertex: payload,\n };\n })(),\n };\n }\n}\n\nconst googleVertexOperationSchema = z.object({\n name: z.string().nullish(),\n done: z.boolean().nullish(),\n error: z\n .object({\n code: z.number().nullish(),\n message: z.string(),\n status: z.string().nullish(),\n })\n .nullish(),\n response: z\n .object({\n videos: z\n .array(\n z.object({\n bytesBase64Encoded: z.string().nullish(),\n gcsUri: z.string().nullish(),\n mimeType: z.string().nullish(),\n }),\n )\n .nullish(),\n raiMediaFilteredCount: z.number().nullish(),\n })\n .nullish(),\n});\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type GoogleVertexVideoModelOptions = {\n // Polling configuration\n pollIntervalMs?: number | null;\n pollTimeoutMs?: number | null;\n\n // Video generation options\n personGeneration?: 'dont_allow' | 'allow_adult' | 'allow_all' | null;\n negativePrompt?: string | null;\n generateAudio?: boolean | null;\n\n // Output configuration\n gcsOutputDirectory?: string | null;\n\n // Reference images (for style/asset reference)\n referenceImages?: Array<{\n bytesBase64Encoded?: string;\n gcsUri?: string;\n }> | null;\n\n [key: string]: unknown; // For passthrough\n};\n\nexport const googleVertexVideoModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n pollIntervalMs: z.number().positive().nullish(),\n pollTimeoutMs: z.number().positive().nullish(),\n personGeneration: z\n .enum(['dont_allow', 'allow_adult', 'allow_all'])\n .nullish(),\n negativePrompt: z.string().nullish(),\n generateAudio: z.boolean().nullish(),\n gcsOutputDirectory: z.string().nullish(),\n referenceImages: z\n .array(\n z.object({\n bytesBase64Encoded: z.string().nullish(),\n gcsUri: z.string().nullish(),\n }),\n )\n .nullish(),\n })\n .passthrough(),\n ),\n);\n","import {\n loadOptionalSetting,\n loadSetting,\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent,\n} from '@ai-sdk/provider-utils';\nimport { VERSION } from '../version';\n\nexport interface GoogleCredentials {\n /**\n * The client email for the Google Cloud service account. Defaults to the\n * value of the `GOOGLE_CLIENT_EMAIL` environment variable.\n */\n clientEmail: string;\n\n /**\n * The private key for the Google Cloud service account. Defaults to the\n * value of the `GOOGLE_PRIVATE_KEY` environment variable.\n */\n privateKey: string;\n\n /**\n * Optional. The private key ID for the Google Cloud service account. Defaults\n * to the value of the `GOOGLE_PRIVATE_KEY_ID` environment variable.\n */\n privateKeyId?: string;\n}\n\nconst loadCredentials = async (): Promise<GoogleCredentials> => {\n try {\n return {\n clientEmail: loadSetting({\n settingValue: undefined,\n settingName: 'clientEmail',\n environmentVariableName: 'GOOGLE_CLIENT_EMAIL',\n description: 'Google client email',\n }),\n privateKey: loadSetting({\n settingValue: undefined,\n settingName: 'privateKey',\n environmentVariableName: 'GOOGLE_PRIVATE_KEY',\n description: 'Google private key',\n }),\n privateKeyId: loadOptionalSetting({\n settingValue: undefined,\n environmentVariableName: 'GOOGLE_PRIVATE_KEY_ID',\n }),\n };\n } catch (error: any) {\n throw new Error(`Failed to load Google credentials: ${error.message}`);\n }\n};\n\n// Convert a string to base64url\nconst base64url = (str: string) => {\n return btoa(str).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n};\nconst importPrivateKey = async (pemKey: string) => {\n const pemHeader = '-----BEGIN PRIVATE KEY-----';\n const pemFooter = '-----END PRIVATE KEY-----';\n\n // Remove header, footer, and any whitespace/newlines\n const pemContents = pemKey\n .replace(pemHeader, '')\n .replace(pemFooter, '')\n .replace(/\\s/g, '');\n\n // Decode base64 to binary\n const binaryString = atob(pemContents);\n\n // Convert binary string to Uint8Array\n const binaryData = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n binaryData[i] = binaryString.charCodeAt(i);\n }\n\n return await crypto.subtle.importKey(\n 'pkcs8',\n binaryData,\n { name: 'RSASSA-PKCS1-v1_5', hash: 'SHA-256' },\n true,\n ['sign'],\n );\n};\n\nconst buildJwt = async (credentials: GoogleCredentials) => {\n const now = Math.floor(Date.now() / 1000);\n\n // Only include kid in header if privateKeyId is provided\n const header: { alg: string; typ: string; kid?: string } = {\n alg: 'RS256',\n typ: 'JWT',\n };\n\n if (credentials.privateKeyId) {\n header.kid = credentials.privateKeyId;\n }\n\n const payload = {\n iss: credentials.clientEmail,\n scope: 'https://www.googleapis.com/auth/cloud-platform',\n aud: 'https://oauth2.googleapis.com/token',\n exp: now + 3600,\n iat: now,\n };\n\n const privateKey = await importPrivateKey(credentials.privateKey);\n\n const signingInput = `${base64url(JSON.stringify(header))}.${base64url(\n JSON.stringify(payload),\n )}`;\n const encoder = new TextEncoder();\n const data = encoder.encode(signingInput);\n\n const signature = await crypto.subtle.sign(\n 'RSASSA-PKCS1-v1_5',\n privateKey,\n data,\n );\n\n const signatureBase64 = base64url(\n String.fromCharCode(...new Uint8Array(signature)),\n );\n\n return `${base64url(JSON.stringify(header))}.${base64url(\n JSON.stringify(payload),\n )}.${signatureBase64}`;\n};\n\n/**\n * Generate an authentication token for Google Vertex AI in a manner compatible\n * with the Edge runtime.\n */\nexport async function generateAuthToken(credentials?: GoogleCredentials) {\n try {\n const creds = credentials || (await loadCredentials());\n const jwt = await buildJwt(creds);\n\n const response = await fetch('https://oauth2.googleapis.com/token', {\n method: 'POST',\n headers: withUserAgentSuffix(\n { 'Content-Type': 'application/x-www-form-urlencoded' },\n `ai-sdk/google-vertex/${VERSION}`,\n getRuntimeEnvironmentUserAgent(),\n ),\n body: new URLSearchParams({\n grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',\n assertion: jwt,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Token request failed: ${response.statusText}`);\n }\n\n const data = await response.json();\n return data.access_token;\n } catch (error) {\n throw error;\n }\n}\n"],"mappings":"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","names":["loadOptionalSetting","resolve","GoogleLanguageModel","resolve","z","z","z","combineHeaders","createJsonResponseHandler","parseProviderOptions","postJsonToApi","resolve","serializeModelOptions","WORKFLOW_SERIALIZE","WORKFLOW_DESERIALIZE","z","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","postJsonToApi","combineHeaders","resolve","createJsonResponseHandler","_a","_b","z","combineHeaders","convertUint8ArrayToBase64","createJsonResponseHandler","parseProviderOptions","postJsonToApi","resolve","serializeModelOptions","WORKFLOW_DESERIALIZE","WORKFLOW_SERIALIZE","z","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","convertUint8ArrayToBase64","postJsonToApi","combineHeaders","resolve","createJsonResponseHandler","_a","_b","_c","_d","z","combineHeaders","convertUint8ArrayToBase64","createJsonResponseHandler","parseProviderOptions","postJsonToApi","resolve","z","z","parseProviderOptions","convertUint8ArrayToBase64","postJsonToApi","combineHeaders","resolve","createJsonResponseHandler","z","resolve","GoogleLanguageModel","loadOptionalSetting","loadSetting","withUserAgentSuffix","loadSetting","loadOptionalSetting","withUserAgentSuffix","createGoogleVertex","loadOptionalSetting","resolve"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { z } from 'zod/v4';
|
|
2
|
+
import { GoogleSpeechModelOptions } from '@ai-sdk/google';
|
|
2
3
|
import { GoogleAuthOptions } from 'google-auth-library';
|
|
3
|
-
import
|
|
4
|
+
import * as _ai_sdk_provider from '@ai-sdk/provider';
|
|
5
|
+
import { EmbeddingModelV4, ProviderV4, LanguageModelV4, ImageModelV4, Experimental_VideoModelV4, SpeechModelV4, TranscriptionModelV4 } from '@ai-sdk/provider';
|
|
4
6
|
import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
|
|
5
|
-
import { Resolvable, FetchFunction } from '@ai-sdk/provider-utils';
|
|
7
|
+
import { Resolvable, FetchFunction, WORKFLOW_SERIALIZE, WORKFLOW_DESERIALIZE } from '@ai-sdk/provider-utils';
|
|
6
8
|
|
|
7
|
-
type GoogleVertexEmbeddingModelId = 'textembedding-gecko' | 'textembedding-gecko@001' | 'textembedding-gecko@003' | 'textembedding-gecko-multilingual' | 'textembedding-gecko-multilingual@001' | 'text-multilingual-embedding-002' | 'text-embedding-004' | 'text-embedding-005' | 'gemini-embedding-001' | 'gemini-embedding-2-preview' | (string & {});
|
|
9
|
+
type GoogleVertexEmbeddingModelId = 'textembedding-gecko' | 'textembedding-gecko@001' | 'textembedding-gecko@003' | 'textembedding-gecko-multilingual' | 'textembedding-gecko-multilingual@001' | 'text-multilingual-embedding-002' | 'text-embedding-004' | 'text-embedding-005' | 'gemini-embedding-001' | 'gemini-embedding-2' | 'gemini-embedding-2-preview' | (string & {});
|
|
8
10
|
declare const googleVertexEmbeddingModelOptions: z.ZodObject<{
|
|
9
11
|
outputDimensionality: z.ZodOptional<z.ZodNumber>;
|
|
10
12
|
taskType: z.ZodOptional<z.ZodEnum<{
|
|
@@ -22,7 +24,14 @@ declare const googleVertexEmbeddingModelOptions: z.ZodObject<{
|
|
|
22
24
|
}, z.core.$strip>;
|
|
23
25
|
type GoogleVertexEmbeddingModelOptions = z.infer<typeof googleVertexEmbeddingModelOptions>;
|
|
24
26
|
|
|
25
|
-
type
|
|
27
|
+
type GoogleVertexTranscriptionModelId = 'chirp_2' | 'chirp_3' | 'telephony' | (string & {});
|
|
28
|
+
declare const googleVertexTranscriptionProviderOptionsSchema: z.ZodObject<{
|
|
29
|
+
languageCodes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
30
|
+
enableAutomaticPunctuation: z.ZodOptional<z.ZodBoolean>;
|
|
31
|
+
enableWordTimeOffsets: z.ZodOptional<z.ZodBoolean>;
|
|
32
|
+
region: z.ZodOptional<z.ZodString>;
|
|
33
|
+
}, z.core.$strip>;
|
|
34
|
+
type GoogleVertexTranscriptionModelOptions = z.infer<typeof googleVertexTranscriptionProviderOptionsSchema>;
|
|
26
35
|
|
|
27
36
|
declare const googleVertexImageModelOptionsSchema: z.ZodObject<{
|
|
28
37
|
negativePrompt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -65,8 +74,6 @@ declare const googleVertexImageModelOptionsSchema: z.ZodObject<{
|
|
|
65
74
|
}, z.core.$strip>;
|
|
66
75
|
type GoogleVertexImageModelOptions = z.infer<typeof googleVertexImageModelOptionsSchema>;
|
|
67
76
|
|
|
68
|
-
type GoogleVertexVideoModelId = 'veo-2.0-generate-preview' | 'veo-2.0-generate-exp' | 'veo-2.0-generate-001' | 'veo-3.0-generate-001' | 'veo-3.0-fast-generate-001' | 'veo-3.0-generate-preview' | 'veo-3.0-fast-generate-preview' | 'veo-3.1-generate-001' | 'veo-3.1-fast-generate-001' | 'veo-3.1-generate-preview' | 'veo-3.1-fast-generate-preview' | (string & {});
|
|
69
|
-
|
|
70
77
|
type GoogleVertexVideoModelOptions = {
|
|
71
78
|
pollIntervalMs?: number | null;
|
|
72
79
|
pollTimeoutMs?: number | null;
|
|
@@ -81,28 +88,43 @@ type GoogleVertexVideoModelOptions = {
|
|
|
81
88
|
[key: string]: unknown;
|
|
82
89
|
};
|
|
83
90
|
|
|
91
|
+
type GoogleVertexVideoModelId = 'veo-2.0-generate-preview' | 'veo-2.0-generate-exp' | 'veo-2.0-generate-001' | 'veo-3.0-generate-001' | 'veo-3.0-fast-generate-001' | 'veo-3.0-generate-preview' | 'veo-3.0-fast-generate-preview' | 'veo-3.1-generate-001' | 'veo-3.1-fast-generate-001' | 'veo-3.1-generate-preview' | 'veo-3.1-fast-generate-preview' | (string & {});
|
|
92
|
+
|
|
93
|
+
type GoogleVertexSpeechModelId = 'gemini-2.5-flash-tts' | 'gemini-2.5-pro-tts' | 'gemini-2.5-flash-lite-preview-tts' | 'gemini-3.1-flash-tts-preview' | (string & {});
|
|
94
|
+
type GoogleVertexSpeechModelOptions = GoogleSpeechModelOptions;
|
|
95
|
+
|
|
84
96
|
interface GoogleVertexConfig {
|
|
85
97
|
provider: string;
|
|
86
98
|
baseURL: string;
|
|
87
|
-
headers
|
|
99
|
+
headers?: Resolvable<Record<string, string | undefined>>;
|
|
88
100
|
fetch?: FetchFunction;
|
|
89
101
|
}
|
|
90
102
|
|
|
91
|
-
declare class GoogleVertexEmbeddingModel implements
|
|
92
|
-
readonly specificationVersion = "
|
|
103
|
+
declare class GoogleVertexEmbeddingModel implements EmbeddingModelV4 {
|
|
104
|
+
readonly specificationVersion = "v4";
|
|
93
105
|
readonly modelId: GoogleVertexEmbeddingModelId;
|
|
94
106
|
readonly maxEmbeddingsPerCall = 2048;
|
|
95
107
|
readonly supportsParallelCalls = true;
|
|
96
108
|
private readonly config;
|
|
109
|
+
static [WORKFLOW_SERIALIZE](model: GoogleVertexEmbeddingModel): {
|
|
110
|
+
modelId: string;
|
|
111
|
+
config: _ai_sdk_provider.JSONObject;
|
|
112
|
+
};
|
|
113
|
+
static [WORKFLOW_DESERIALIZE](options: {
|
|
114
|
+
modelId: string;
|
|
115
|
+
config: GoogleVertexConfig;
|
|
116
|
+
}): GoogleVertexEmbeddingModel;
|
|
97
117
|
get provider(): string;
|
|
98
118
|
constructor(modelId: GoogleVertexEmbeddingModelId, config: GoogleVertexConfig);
|
|
99
|
-
doEmbed({ values, headers, abortSignal, providerOptions, }: Parameters<
|
|
119
|
+
doEmbed({ values, headers, abortSignal, providerOptions, }: Parameters<EmbeddingModelV4['doEmbed']>[0]): Promise<Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>>;
|
|
100
120
|
}
|
|
101
121
|
|
|
102
|
-
type
|
|
122
|
+
type GoogleVertexImageModelId = 'imagen-3.0-generate-001' | 'imagen-3.0-generate-002' | 'imagen-3.0-fast-generate-001' | 'imagen-4.0-generate-001' | 'imagen-4.0-ultra-generate-001' | 'imagen-4.0-fast-generate-001' | 'gemini-2.5-flash-image' | 'gemini-3-pro-image-preview' | 'gemini-3.1-flash-image-preview' | (string & {});
|
|
123
|
+
|
|
124
|
+
type GoogleVertexModelId = 'gemini-3.5-flash' | 'gemini-2.5-pro' | 'gemini-2.5-flash' | 'gemini-2.5-flash-lite' | 'gemini-2.0-flash-lite' | 'gemini-2.0-flash' | 'gemini-2.0-flash-001' | 'gemini-1.5-flash' | 'gemini-1.5-flash-001' | 'gemini-1.5-flash-002' | 'gemini-1.5-pro' | 'gemini-1.5-pro-001' | 'gemini-1.5-pro-002' | 'gemini-1.0-pro-001' | 'gemini-1.0-pro-vision-001' | 'gemini-1.0-pro' | 'gemini-1.0-pro-002' | 'gemini-2.0-flash-lite-preview-02-05' | 'gemini-2.5-flash-preview-09-2025' | 'gemini-3-pro-preview' | 'gemini-3-pro-image-preview' | 'gemini-3-flash-preview' | 'gemini-3.1-pro-preview' | 'gemini-3.1-flash-image-preview' | 'gemini-3.1-flash-lite-preview' | 'gemini-2.0-pro-exp-02-05' | 'gemini-2.0-flash-exp' | (string & {});
|
|
103
125
|
|
|
104
126
|
declare const googleVertexTools: {
|
|
105
|
-
googleSearch: _ai_sdk_provider_utils.
|
|
127
|
+
googleSearch: _ai_sdk_provider_utils.ProviderExecutedToolFactory<{}, {}, {
|
|
106
128
|
[x: string]: unknown;
|
|
107
129
|
searchTypes?: {
|
|
108
130
|
webSearch?: Record<string, never> | undefined;
|
|
@@ -112,43 +134,43 @@ declare const googleVertexTools: {
|
|
|
112
134
|
startTime: string;
|
|
113
135
|
endTime: string;
|
|
114
136
|
} | undefined;
|
|
115
|
-
}>;
|
|
116
|
-
enterpriseWebSearch: _ai_sdk_provider_utils.
|
|
117
|
-
googleMaps: _ai_sdk_provider_utils.
|
|
118
|
-
urlContext: _ai_sdk_provider_utils.
|
|
119
|
-
fileSearch: _ai_sdk_provider_utils.
|
|
137
|
+
}, {}>;
|
|
138
|
+
enterpriseWebSearch: _ai_sdk_provider_utils.ProviderExecutedToolFactory<{}, {}, {}, {}>;
|
|
139
|
+
googleMaps: _ai_sdk_provider_utils.ProviderExecutedToolFactory<{}, {}, {}, {}>;
|
|
140
|
+
urlContext: _ai_sdk_provider_utils.ProviderExecutedToolFactory<{}, {}, {}, {}>;
|
|
141
|
+
fileSearch: _ai_sdk_provider_utils.ProviderExecutedToolFactory<{}, {}, {
|
|
120
142
|
[x: string]: unknown;
|
|
121
143
|
fileSearchStoreNames: string[];
|
|
122
144
|
topK?: number | undefined;
|
|
123
145
|
metadataFilter?: string | undefined;
|
|
124
|
-
}>;
|
|
125
|
-
codeExecution: _ai_sdk_provider_utils.
|
|
146
|
+
}, {}>;
|
|
147
|
+
codeExecution: _ai_sdk_provider_utils.ProviderExecutedToolFactory<{
|
|
126
148
|
language: string;
|
|
127
149
|
code: string;
|
|
128
150
|
}, {
|
|
129
151
|
outcome: string;
|
|
130
152
|
output: string;
|
|
131
|
-
}, {}>;
|
|
132
|
-
vertexRagStore: _ai_sdk_provider_utils.
|
|
153
|
+
}, {}, {}>;
|
|
154
|
+
vertexRagStore: _ai_sdk_provider_utils.ProviderExecutedToolFactory<{}, {}, {
|
|
133
155
|
ragCorpus: string;
|
|
134
156
|
topK?: number;
|
|
135
|
-
}>;
|
|
157
|
+
}, {}>;
|
|
136
158
|
};
|
|
137
159
|
|
|
138
|
-
interface GoogleVertexProvider extends
|
|
160
|
+
interface GoogleVertexProvider extends ProviderV4 {
|
|
139
161
|
/**
|
|
140
162
|
* Creates a model for text generation.
|
|
141
163
|
*/
|
|
142
|
-
(modelId: GoogleVertexModelId):
|
|
143
|
-
languageModel: (modelId: GoogleVertexModelId) =>
|
|
164
|
+
(modelId: GoogleVertexModelId): LanguageModelV4;
|
|
165
|
+
languageModel: (modelId: GoogleVertexModelId) => LanguageModelV4;
|
|
144
166
|
/**
|
|
145
167
|
* Creates a model for image generation.
|
|
146
168
|
*/
|
|
147
|
-
image(modelId: GoogleVertexImageModelId):
|
|
169
|
+
image(modelId: GoogleVertexImageModelId): ImageModelV4;
|
|
148
170
|
/**
|
|
149
171
|
* Creates a model for image generation.
|
|
150
172
|
*/
|
|
151
|
-
imageModel(modelId: GoogleVertexImageModelId):
|
|
173
|
+
imageModel(modelId: GoogleVertexImageModelId): ImageModelV4;
|
|
152
174
|
tools: typeof googleVertexTools;
|
|
153
175
|
/**
|
|
154
176
|
* @deprecated Use `embeddingModel` instead.
|
|
@@ -157,11 +179,27 @@ interface GoogleVertexProvider extends ProviderV3 {
|
|
|
157
179
|
/**
|
|
158
180
|
* Creates a model for video generation.
|
|
159
181
|
*/
|
|
160
|
-
video(modelId: GoogleVertexVideoModelId):
|
|
182
|
+
video(modelId: GoogleVertexVideoModelId): Experimental_VideoModelV4;
|
|
161
183
|
/**
|
|
162
184
|
* Creates a model for video generation.
|
|
163
185
|
*/
|
|
164
|
-
videoModel(modelId: GoogleVertexVideoModelId):
|
|
186
|
+
videoModel(modelId: GoogleVertexVideoModelId): Experimental_VideoModelV4;
|
|
187
|
+
/**
|
|
188
|
+
* Creates a model for speech generation (text-to-speech).
|
|
189
|
+
*/
|
|
190
|
+
speech(modelId: GoogleVertexSpeechModelId): SpeechModelV4;
|
|
191
|
+
/**
|
|
192
|
+
* Creates a model for speech generation (text-to-speech).
|
|
193
|
+
*/
|
|
194
|
+
speechModel(modelId: GoogleVertexSpeechModelId): SpeechModelV4;
|
|
195
|
+
/**
|
|
196
|
+
* Creates a model for transcription (speech-to-text).
|
|
197
|
+
*/
|
|
198
|
+
transcription(modelId: GoogleVertexTranscriptionModelId): TranscriptionModelV4;
|
|
199
|
+
/**
|
|
200
|
+
* Creates a model for transcription (speech-to-text).
|
|
201
|
+
*/
|
|
202
|
+
transcriptionModel(modelId: GoogleVertexTranscriptionModelId): TranscriptionModelV4;
|
|
165
203
|
}
|
|
166
204
|
interface GoogleVertexProviderSettings$1 {
|
|
167
205
|
/**
|
|
@@ -208,12 +246,12 @@ interface GoogleVertexProviderSettings extends GoogleVertexProviderSettings$1 {
|
|
|
208
246
|
googleAuthOptions?: GoogleAuthOptions;
|
|
209
247
|
}
|
|
210
248
|
|
|
211
|
-
declare function
|
|
249
|
+
declare function createGoogleVertex(options?: GoogleVertexProviderSettings): GoogleVertexProvider;
|
|
212
250
|
/**
|
|
213
251
|
* Default Google Vertex AI provider instance.
|
|
214
252
|
*/
|
|
215
|
-
declare const
|
|
253
|
+
declare const googleVertex: GoogleVertexProvider;
|
|
216
254
|
|
|
217
255
|
declare const VERSION: string;
|
|
218
256
|
|
|
219
|
-
export { type GoogleVertexEmbeddingModelOptions, type GoogleVertexImageModelOptions, type GoogleVertexImageModelOptions as GoogleVertexImageProviderOptions, type GoogleVertexProvider, type GoogleVertexProviderSettings, type GoogleVertexVideoModelId, type GoogleVertexVideoModelOptions, type GoogleVertexVideoModelOptions as GoogleVertexVideoProviderOptions, VERSION, createVertex, vertex };
|
|
257
|
+
export { type GoogleVertexEmbeddingModelOptions, type GoogleVertexImageModelOptions, type GoogleVertexImageModelOptions as GoogleVertexImageProviderOptions, type GoogleVertexProvider, type GoogleVertexProviderSettings, type GoogleVertexSpeechModelId, type GoogleVertexSpeechModelOptions, type GoogleVertexTranscriptionModelId, type GoogleVertexTranscriptionModelOptions, type GoogleVertexVideoModelId, type GoogleVertexVideoModelOptions, type GoogleVertexVideoModelOptions as GoogleVertexVideoProviderOptions, VERSION, createGoogleVertex, createGoogleVertex as createVertex, googleVertex, googleVertex as vertex };
|