@ai-sdk/google-vertex 1.0.3 → 2.0.0

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.
@@ -0,0 +1,280 @@
1
+ // src/edge/google-vertex-auth-edge.ts
2
+ import { loadOptionalSetting, loadSetting } from "@ai-sdk/provider-utils";
3
+ var loadCredentials = async () => {
4
+ try {
5
+ return {
6
+ clientEmail: loadSetting({
7
+ settingValue: void 0,
8
+ settingName: "clientEmail",
9
+ environmentVariableName: "GOOGLE_CLIENT_EMAIL",
10
+ description: "Google client email"
11
+ }),
12
+ privateKey: loadSetting({
13
+ settingValue: void 0,
14
+ settingName: "privateKey",
15
+ environmentVariableName: "GOOGLE_PRIVATE_KEY",
16
+ description: "Google private key"
17
+ }),
18
+ privateKeyId: loadOptionalSetting({
19
+ settingValue: void 0,
20
+ environmentVariableName: "GOOGLE_PRIVATE_KEY_ID"
21
+ })
22
+ };
23
+ } catch (error) {
24
+ throw new Error(`Failed to load Google credentials: ${error.message}`);
25
+ }
26
+ };
27
+ var base64url = (str) => {
28
+ return btoa(str).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
29
+ };
30
+ var importPrivateKey = async (pemKey) => {
31
+ const pemHeader = "-----BEGIN PRIVATE KEY-----";
32
+ const pemFooter = "-----END PRIVATE KEY-----";
33
+ const pemContents = pemKey.replace(pemHeader, "").replace(pemFooter, "").replace(/\s/g, "");
34
+ const binaryString = atob(pemContents);
35
+ const binaryData = new Uint8Array(binaryString.length);
36
+ for (let i = 0; i < binaryString.length; i++) {
37
+ binaryData[i] = binaryString.charCodeAt(i);
38
+ }
39
+ return await crypto.subtle.importKey(
40
+ "pkcs8",
41
+ binaryData,
42
+ { name: "RSASSA-PKCS1-v1_5", hash: "SHA-256" },
43
+ true,
44
+ ["sign"]
45
+ );
46
+ };
47
+ var buildJwt = async (credentials) => {
48
+ const now = Math.floor(Date.now() / 1e3);
49
+ const header = {
50
+ alg: "RS256",
51
+ typ: "JWT"
52
+ };
53
+ if (credentials.privateKeyId) {
54
+ header.kid = credentials.privateKeyId;
55
+ }
56
+ const payload = {
57
+ iss: credentials.clientEmail,
58
+ scope: "https://www.googleapis.com/auth/cloud-platform",
59
+ aud: "https://oauth2.googleapis.com/token",
60
+ exp: now + 3600,
61
+ iat: now
62
+ };
63
+ const privateKey = await importPrivateKey(credentials.privateKey);
64
+ const signingInput = `${base64url(JSON.stringify(header))}.${base64url(
65
+ JSON.stringify(payload)
66
+ )}`;
67
+ const encoder = new TextEncoder();
68
+ const data = encoder.encode(signingInput);
69
+ const signature = await crypto.subtle.sign(
70
+ "RSASSA-PKCS1-v1_5",
71
+ privateKey,
72
+ data
73
+ );
74
+ const signatureBase64 = base64url(
75
+ String.fromCharCode(...new Uint8Array(signature))
76
+ );
77
+ return `${base64url(JSON.stringify(header))}.${base64url(
78
+ JSON.stringify(payload)
79
+ )}.${signatureBase64}`;
80
+ };
81
+ async function generateAuthToken(credentials) {
82
+ try {
83
+ const creds = credentials || await loadCredentials();
84
+ const jwt = await buildJwt(creds);
85
+ const response = await fetch("https://oauth2.googleapis.com/token", {
86
+ method: "POST",
87
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
88
+ body: new URLSearchParams({
89
+ grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
90
+ assertion: jwt
91
+ })
92
+ });
93
+ if (!response.ok) {
94
+ throw new Error(`Token request failed: ${response.statusText}`);
95
+ }
96
+ const data = await response.json();
97
+ return data.access_token;
98
+ } catch (error) {
99
+ throw error;
100
+ }
101
+ }
102
+
103
+ // src/google-vertex-provider.ts
104
+ import {
105
+ generateId,
106
+ loadSetting as loadSetting2
107
+ } from "@ai-sdk/provider-utils";
108
+
109
+ // src/google-vertex-embedding-model.ts
110
+ import {
111
+ TooManyEmbeddingValuesForCallError
112
+ } from "@ai-sdk/provider";
113
+ import {
114
+ combineHeaders,
115
+ createJsonResponseHandler,
116
+ postJsonToApi,
117
+ resolve
118
+ } from "@ai-sdk/provider-utils";
119
+ import { z as z2 } from "zod";
120
+
121
+ // src/google-vertex-error.ts
122
+ import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
123
+ import { z } from "zod";
124
+ var googleVertexErrorDataSchema = z.object({
125
+ error: z.object({
126
+ code: z.number().nullable(),
127
+ message: z.string(),
128
+ status: z.string()
129
+ })
130
+ });
131
+ var googleVertexFailedResponseHandler = createJsonErrorResponseHandler(
132
+ {
133
+ errorSchema: googleVertexErrorDataSchema,
134
+ errorToMessage: (data) => data.error.message
135
+ }
136
+ );
137
+
138
+ // src/google-vertex-embedding-model.ts
139
+ var GoogleVertexEmbeddingModel = class {
140
+ constructor(modelId, settings, config) {
141
+ this.specificationVersion = "v1";
142
+ this.modelId = modelId;
143
+ this.settings = settings;
144
+ this.config = config;
145
+ }
146
+ get provider() {
147
+ return this.config.provider;
148
+ }
149
+ get maxEmbeddingsPerCall() {
150
+ return 2048;
151
+ }
152
+ get supportsParallelCalls() {
153
+ return true;
154
+ }
155
+ async doEmbed({
156
+ values,
157
+ headers,
158
+ abortSignal
159
+ }) {
160
+ if (values.length > this.maxEmbeddingsPerCall) {
161
+ throw new TooManyEmbeddingValuesForCallError({
162
+ provider: this.provider,
163
+ modelId: this.modelId,
164
+ maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,
165
+ values
166
+ });
167
+ }
168
+ const mergedHeaders = combineHeaders(
169
+ await resolve(this.config.headers),
170
+ headers
171
+ );
172
+ const { responseHeaders, value: response } = await postJsonToApi({
173
+ url: `https://${this.config.region}-aiplatform.googleapis.com/v1/projects/${this.config.project}/locations/${this.config.region}/publishers/google/models/${this.modelId}:predict`,
174
+ headers: mergedHeaders,
175
+ body: {
176
+ instances: values.map((value) => ({ content: value })),
177
+ parameters: {
178
+ outputDimensionality: this.settings.outputDimensionality
179
+ }
180
+ },
181
+ failedResponseHandler: googleVertexFailedResponseHandler,
182
+ successfulResponseHandler: createJsonResponseHandler(
183
+ googleVertexTextEmbeddingResponseSchema
184
+ ),
185
+ abortSignal
186
+ });
187
+ return {
188
+ embeddings: response.predictions.map(
189
+ (prediction) => prediction.embeddings.values
190
+ ),
191
+ usage: {
192
+ tokens: response.predictions.reduce(
193
+ (tokenCount, prediction) => tokenCount + prediction.embeddings.statistics.token_count,
194
+ 0
195
+ )
196
+ },
197
+ rawResponse: { headers: responseHeaders }
198
+ };
199
+ }
200
+ };
201
+ var googleVertexTextEmbeddingResponseSchema = z2.object({
202
+ predictions: z2.array(
203
+ z2.object({
204
+ embeddings: z2.object({
205
+ values: z2.array(z2.number()),
206
+ statistics: z2.object({
207
+ token_count: z2.number()
208
+ })
209
+ })
210
+ })
211
+ )
212
+ });
213
+
214
+ // src/google-vertex-provider.ts
215
+ import { GoogleGenerativeAILanguageModel } from "@ai-sdk/google/internal";
216
+ function createVertex(options = {}) {
217
+ const loadVertexProject = () => loadSetting2({
218
+ settingValue: options.project,
219
+ settingName: "project",
220
+ environmentVariableName: "GOOGLE_VERTEX_PROJECT",
221
+ description: "Google Vertex project"
222
+ });
223
+ const loadVertexLocation = () => loadSetting2({
224
+ settingValue: options.location,
225
+ settingName: "location",
226
+ environmentVariableName: "GOOGLE_VERTEX_LOCATION",
227
+ description: "Google Vertex location"
228
+ });
229
+ const createChatModel = (modelId, settings = {}) => {
230
+ var _a, _b;
231
+ const region = loadVertexLocation();
232
+ const project = loadVertexProject();
233
+ return new GoogleGenerativeAILanguageModel(modelId, settings, {
234
+ provider: `google.vertex.chat`,
235
+ baseURL: `https://${region}-aiplatform.googleapis.com/v1/projects/${project}/locations/${region}/publishers/google`,
236
+ headers: (_a = options.headers) != null ? _a : {},
237
+ generateId: (_b = options.generateId) != null ? _b : generateId,
238
+ fetch: options.fetch
239
+ });
240
+ };
241
+ const createEmbeddingModel = (modelId, settings = {}) => {
242
+ var _a;
243
+ return new GoogleVertexEmbeddingModel(modelId, settings, {
244
+ provider: `google.vertex.embedding`,
245
+ region: loadVertexLocation(),
246
+ project: loadVertexProject(),
247
+ headers: (_a = options.headers) != null ? _a : {}
248
+ });
249
+ };
250
+ const provider = function(modelId, settings) {
251
+ if (new.target) {
252
+ throw new Error(
253
+ "The Google Vertex AI model function cannot be called with the new keyword."
254
+ );
255
+ }
256
+ return createChatModel(modelId, settings);
257
+ };
258
+ provider.languageModel = createChatModel;
259
+ provider.textEmbeddingModel = createEmbeddingModel;
260
+ return provider;
261
+ }
262
+
263
+ // src/edge/google-vertex-provider-edge.ts
264
+ function createVertex2(options = {}) {
265
+ var _a;
266
+ return createVertex({
267
+ ...options,
268
+ headers: (_a = options.headers) != null ? _a : async () => ({
269
+ Authorization: `Bearer ${await generateAuthToken(
270
+ options.googleCredentials
271
+ )}`
272
+ })
273
+ });
274
+ }
275
+ var vertex = createVertex2();
276
+ export {
277
+ createVertex2 as createVertex,
278
+ vertex
279
+ };
280
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/edge/google-vertex-auth-edge.ts","../../src/google-vertex-provider.ts","../../src/google-vertex-embedding-model.ts","../../src/google-vertex-error.ts","../../src/edge/google-vertex-provider-edge.ts"],"sourcesContent":["import { loadOptionalSetting, loadSetting } from '@ai-sdk/provider-utils';\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: { 'Content-Type': 'application/x-www-form-urlencoded' },\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","import { LanguageModelV1, ProviderV1 } from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadSetting,\n Resolvable,\n} from '@ai-sdk/provider-utils';\nimport {\n GoogleVertexModelId,\n GoogleVertexSettings,\n} from './google-vertex-settings';\nimport {\n GoogleVertexEmbeddingModelId,\n GoogleVertexEmbeddingSettings,\n} from './google-vertex-embedding-settings';\nimport { GoogleVertexEmbeddingModel } from './google-vertex-embedding-model';\nimport { GoogleGenerativeAILanguageModel } from '@ai-sdk/google/internal';\n\nexport interface GoogleVertexProvider extends ProviderV1 {\n /**\nCreates a model for text generation.\n */\n (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ): LanguageModelV1;\n\n languageModel: (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ) => LanguageModelV1;\n}\n\nexport interface GoogleVertexProviderSettings {\n /**\nYour Google Vertex location. Defaults to the environment variable `GOOGLE_VERTEX_LOCATION`.\n */\n location?: string;\n\n /**\nYour 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 /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n // for testing\n generateId?: () => string;\n}\n\n/**\nCreate a Google Vertex AI provider instance.\n */\nexport function createVertex(\n options: GoogleVertexProviderSettings = {},\n): GoogleVertexProvider {\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 createChatModel = (\n modelId: GoogleVertexModelId,\n settings: GoogleVertexSettings = {},\n ) => {\n const region = loadVertexLocation();\n const project = loadVertexProject();\n return new GoogleGenerativeAILanguageModel(modelId, settings, {\n provider: `google.vertex.chat`,\n baseURL: `https://${region}-aiplatform.googleapis.com/v1/projects/${project}/locations/${region}/publishers/google`,\n headers: options.headers ?? {},\n generateId: options.generateId ?? generateId,\n fetch: options.fetch,\n });\n };\n\n const createEmbeddingModel = (\n modelId: GoogleVertexEmbeddingModelId,\n settings: GoogleVertexEmbeddingSettings = {},\n ) =>\n new GoogleVertexEmbeddingModel(modelId, settings, {\n provider: `google.vertex.embedding`,\n region: loadVertexLocation(),\n project: loadVertexProject(),\n headers: options.headers ?? {},\n });\n\n const provider = function (\n modelId: GoogleVertexModelId,\n settings?: GoogleVertexSettings,\n ) {\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, settings);\n };\n\n provider.languageModel = createChatModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n\n return provider as GoogleVertexProvider;\n}\n","import {\n EmbeddingModelV1,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n postJsonToApi,\n resolve,\n Resolvable,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { googleVertexFailedResponseHandler } from './google-vertex-error';\nimport {\n GoogleVertexEmbeddingModelId,\n GoogleVertexEmbeddingSettings,\n} from './google-vertex-embedding-settings';\n\ntype GoogleVertexEmbeddingConfig = {\n provider: string;\n region: string;\n project: string;\n headers: Resolvable<Record<string, string | undefined>>;\n};\n\nexport class GoogleVertexEmbeddingModel implements EmbeddingModelV1<string> {\n readonly specificationVersion = 'v1';\n readonly modelId: GoogleVertexEmbeddingModelId;\n\n private readonly config: GoogleVertexEmbeddingConfig;\n private readonly settings: GoogleVertexEmbeddingSettings;\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxEmbeddingsPerCall(): number {\n return 2048;\n }\n\n get supportsParallelCalls(): boolean {\n return true;\n }\n\n constructor(\n modelId: GoogleVertexEmbeddingModelId,\n settings: GoogleVertexEmbeddingSettings,\n config: GoogleVertexEmbeddingConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n }: Parameters<EmbeddingModelV1<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV1<string>['doEmbed']>>\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 { responseHeaders, value: response } = await postJsonToApi({\n url:\n `https://${this.config.region}-aiplatform.googleapis.com/v1/` +\n `projects/${this.config.project}/locations/${this.config.region}/` +\n `publishers/google/models/${this.modelId}:predict`,\n headers: mergedHeaders,\n body: {\n instances: values.map(value => ({ content: value })),\n parameters: {\n outputDimensionality: this.settings.outputDimensionality,\n },\n },\n failedResponseHandler: googleVertexFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n googleVertexTextEmbeddingResponseSchema,\n ),\n abortSignal,\n });\n\n return {\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 rawResponse: { headers: responseHeaders },\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';\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 {\n generateAuthToken,\n GoogleCredentials,\n} from './google-vertex-auth-edge';\nimport {\n createVertex as createVertexOriginal,\n GoogleVertexProvider,\n GoogleVertexProviderSettings as GoogleVertexProviderSettingsOriginal,\n} from '../google-vertex-provider';\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 return createVertexOriginal({\n ...options,\n headers:\n options.headers ??\n (async () => ({\n Authorization: `Bearer ${await generateAuthToken(\n options.googleCredentials,\n )}`,\n })),\n });\n}\n\n/**\nDefault Google Vertex AI provider instance.\n */\nexport const vertex = createVertex();\n"],"mappings":"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","names":["loadSetting","z","z","loadSetting","createVertex"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/google-vertex",
3
- "version": "1.0.3",
3
+ "version": "2.0.0",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
@@ -8,6 +8,7 @@
8
8
  "types": "./dist/index.d.ts",
9
9
  "files": [
10
10
  "dist/**/*",
11
+ "edge/dist/**/*",
11
12
  "CHANGELOG.md"
12
13
  ],
13
14
  "exports": {
@@ -16,14 +17,20 @@
16
17
  "types": "./dist/index.d.ts",
17
18
  "import": "./dist/index.mjs",
18
19
  "require": "./dist/index.js"
20
+ },
21
+ "./edge": {
22
+ "types": "./edge/dist/index.d.ts",
23
+ "import": "./edge/dist/index.mjs",
24
+ "require": "./edge/dist/index.js"
19
25
  }
20
26
  },
21
27
  "dependencies": {
28
+ "@ai-sdk/google": "1.0.5",
22
29
  "@ai-sdk/provider": "1.0.1",
23
- "@ai-sdk/provider-utils": "2.0.2"
30
+ "@ai-sdk/provider-utils": "2.0.3",
31
+ "google-auth-library": "^9.15.0"
24
32
  },
25
33
  "devDependencies": {
26
- "@google-cloud/vertexai": "^1.6.0",
27
34
  "@types/node": "^18",
28
35
  "tsup": "^8",
29
36
  "typescript": "5.6.3",
@@ -31,8 +38,7 @@
31
38
  "@vercel/ai-tsconfig": "0.0.0"
32
39
  },
33
40
  "peerDependencies": {
34
- "zod": "^3.0.0",
35
- "@google-cloud/vertexai": "^1.6.0"
41
+ "zod": "^3.0.0"
36
42
  },
37
43
  "engines": {
38
44
  "node": ">=18"
@@ -54,7 +60,7 @@
54
60
  "scripts": {
55
61
  "build": "tsup",
56
62
  "build:watch": "tsup --watch",
57
- "clean": "rm -rf dist",
63
+ "clean": "rm -rf dist && rm -rf edge/dist",
58
64
  "lint": "eslint \"./**/*.ts*\"",
59
65
  "type-check": "tsc --noEmit",
60
66
  "prettier-check": "prettier --check \"./**/*.ts*\"",