@ai-sdk/google 2.0.103 → 2.0.105

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.
@@ -1288,7 +1288,7 @@ var GoogleGenerativeAILanguageModel = class {
1288
1288
  };
1289
1289
  }
1290
1290
  async doGenerate(options) {
1291
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w;
1291
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
1292
1292
  const { args, warnings } = await this.getArgs(options);
1293
1293
  const body = JSON.stringify(args);
1294
1294
  const mergedHeaders = combineHeaders(
@@ -1312,18 +1312,20 @@ var GoogleGenerativeAILanguageModel = class {
1312
1312
  rawValue: rawResponse
1313
1313
  } = await generateContent(args);
1314
1314
  const continuedParts = [];
1315
+ const groundingMetadataPerRequest = [];
1315
1316
  let continuedUsageMetadata;
1316
1317
  const firstPromptTokenCount = (_a = response.usageMetadata) == null ? void 0 : _a.promptTokenCount;
1317
1318
  while (true) {
1318
1319
  const candidate2 = (_b = response.candidates) == null ? void 0 : _b[0];
1320
+ groundingMetadataPerRequest.push((_c = candidate2 == null ? void 0 : candidate2.groundingMetadata) != null ? _c : null);
1319
1321
  const continuationToken = (candidate2 == null ? void 0 : candidate2.finishReason) === "CONTINUATION" ? candidate2.continuationToken : void 0;
1320
1322
  if (continuationToken == null) {
1321
1323
  break;
1322
1324
  }
1323
- continuedParts.push(...(_d = (_c = candidate2 == null ? void 0 : candidate2.content) == null ? void 0 : _c.parts) != null ? _d : []);
1325
+ continuedParts.push(...(_e = (_d = candidate2 == null ? void 0 : candidate2.content) == null ? void 0 : _d.parts) != null ? _e : []);
1324
1326
  continuedUsageMetadata = addGoogleGenerativeAIUsageMetadata(
1325
1327
  continuedUsageMetadata,
1326
- (_e = response.usageMetadata) != null ? _e : void 0
1328
+ (_f = response.usageMetadata) != null ? _f : void 0
1327
1329
  );
1328
1330
  ({
1329
1331
  responseHeaders,
@@ -1331,18 +1333,18 @@ var GoogleGenerativeAILanguageModel = class {
1331
1333
  rawValue: rawResponse
1332
1334
  } = await generateContent({ ...args, continuationToken }));
1333
1335
  }
1334
- const candidate = (_f = response.candidates) == null ? void 0 : _f[0];
1335
- const promptBlockReason = (_g = response.promptFeedback) == null ? void 0 : _g.blockReason;
1336
+ const candidate = (_g = response.candidates) == null ? void 0 : _g[0];
1337
+ const promptBlockReason = (_h = response.promptFeedback) == null ? void 0 : _h.blockReason;
1336
1338
  const isPromptBlocked = (candidate == null ? void 0 : candidate.finishReason) == null && promptBlockReason != null;
1337
1339
  const content = [];
1338
- const parts = [...continuedParts, ...(_i = (_h = candidate == null ? void 0 : candidate.content) == null ? void 0 : _h.parts) != null ? _i : []];
1340
+ const parts = [...continuedParts, ...(_j = (_i = candidate == null ? void 0 : candidate.content) == null ? void 0 : _i.parts) != null ? _j : []];
1339
1341
  const usageMetadata = addGoogleGenerativeAIUsageMetadata(
1340
1342
  continuedUsageMetadata,
1341
- (_j = response.usageMetadata) != null ? _j : void 0
1343
+ (_k = response.usageMetadata) != null ? _k : void 0
1342
1344
  );
1343
1345
  let lastCodeExecutionToolCallId;
1344
1346
  for (const part of parts) {
1345
- if ("executableCode" in part && ((_k = part.executableCode) == null ? void 0 : _k.code)) {
1347
+ if ("executableCode" in part && ((_l = part.executableCode) == null ? void 0 : _l.code)) {
1346
1348
  const toolCallId = this.config.generateId();
1347
1349
  lastCodeExecutionToolCallId = toolCallId;
1348
1350
  content.push({
@@ -1383,7 +1385,7 @@ var GoogleGenerativeAILanguageModel = class {
1383
1385
  } else if ("functionCall" in part) {
1384
1386
  content.push({
1385
1387
  type: "tool-call",
1386
- toolCallId: (_l = part.functionCall.id) != null ? _l : this.config.generateId(),
1388
+ toolCallId: (_m = part.functionCall.id) != null ? _m : this.config.generateId(),
1387
1389
  toolName: part.functionCall.name,
1388
1390
  input: JSON.stringify(part.functionCall.args),
1389
1391
  providerMetadata: part.thoughtSignature ? { google: { thoughtSignature: part.thoughtSignature } } : void 0
@@ -1396,10 +1398,10 @@ var GoogleGenerativeAILanguageModel = class {
1396
1398
  });
1397
1399
  }
1398
1400
  }
1399
- const sources = (_m = extractSources({
1401
+ const sources = (_n = extractSources({
1400
1402
  groundingMetadata: candidate == null ? void 0 : candidate.groundingMetadata,
1401
1403
  generateId: this.config.generateId
1402
- })) != null ? _m : [];
1404
+ })) != null ? _n : [];
1403
1405
  for (const source of sources) {
1404
1406
  content.push(source);
1405
1407
  }
@@ -1410,21 +1412,22 @@ var GoogleGenerativeAILanguageModel = class {
1410
1412
  hasToolCalls: content.some((part) => part.type === "tool-call")
1411
1413
  }),
1412
1414
  usage: {
1413
- inputTokens: (_n = usageMetadata == null ? void 0 : usageMetadata.promptTokenCount) != null ? _n : void 0,
1414
- outputTokens: (_o = usageMetadata == null ? void 0 : usageMetadata.candidatesTokenCount) != null ? _o : void 0,
1415
- totalTokens: (_p = usageMetadata == null ? void 0 : usageMetadata.totalTokenCount) != null ? _p : void 0,
1416
- reasoningTokens: (_q = usageMetadata == null ? void 0 : usageMetadata.thoughtsTokenCount) != null ? _q : void 0,
1417
- cachedInputTokens: (_r = usageMetadata == null ? void 0 : usageMetadata.cachedContentTokenCount) != null ? _r : void 0
1415
+ inputTokens: (_o = usageMetadata == null ? void 0 : usageMetadata.promptTokenCount) != null ? _o : void 0,
1416
+ outputTokens: (_p = usageMetadata == null ? void 0 : usageMetadata.candidatesTokenCount) != null ? _p : void 0,
1417
+ totalTokens: (_q = usageMetadata == null ? void 0 : usageMetadata.totalTokenCount) != null ? _q : void 0,
1418
+ reasoningTokens: (_r = usageMetadata == null ? void 0 : usageMetadata.thoughtsTokenCount) != null ? _r : void 0,
1419
+ cachedInputTokens: (_s = usageMetadata == null ? void 0 : usageMetadata.cachedContentTokenCount) != null ? _s : void 0
1418
1420
  },
1419
1421
  warnings,
1420
1422
  providerMetadata: {
1421
1423
  google: {
1422
- promptFeedback: (_s = response.promptFeedback) != null ? _s : null,
1423
- groundingMetadata: (_t = candidate == null ? void 0 : candidate.groundingMetadata) != null ? _t : null,
1424
- urlContextMetadata: (_u = candidate == null ? void 0 : candidate.urlContextMetadata) != null ? _u : null,
1425
- safetyRatings: (_v = candidate == null ? void 0 : candidate.safetyRatings) != null ? _v : null,
1426
- serviceTier: (_w = response.serviceTier) != null ? _w : null,
1427
- ...(candidate == null ? void 0 : candidate.continuationToken) != null ? { continuationToken: candidate.continuationToken } : {},
1424
+ promptFeedback: (_t = response.promptFeedback) != null ? _t : null,
1425
+ groundingMetadata: (_u = candidate == null ? void 0 : candidate.groundingMetadata) != null ? _u : null,
1426
+ ...groundingMetadataPerRequest.length > 1 ? { groundingMetadataPerRequest } : {},
1427
+ urlContextMetadata: (_v = candidate == null ? void 0 : candidate.urlContextMetadata) != null ? _v : null,
1428
+ safetyRatings: (_w = candidate == null ? void 0 : candidate.safetyRatings) != null ? _w : null,
1429
+ serviceTier: (_x = response.serviceTier) != null ? _x : null,
1430
+ ...(candidate == null ? void 0 : candidate.continuationToken) != null && candidate.finishReason === "MAX_TOKENS" ? { continuationToken: candidate.continuationToken } : {},
1428
1431
  ...continuedUsageMetadata != null && firstPromptTokenCount != null ? { initialPromptTokenCount: firstPromptTokenCount } : {},
1429
1432
  usageMetadata: usageMetadata != null ? usageMetadata : null
1430
1433
  }
@@ -1456,14 +1459,27 @@ var GoogleGenerativeAILanguageModel = class {
1456
1459
  fetch: this.config.fetch
1457
1460
  });
1458
1461
  const { responseHeaders, value: firstResponse } = await streamGenerateContent(args);
1462
+ const groundingMetadataPerRequest = [];
1463
+ let requestGroundingMetadata = null;
1459
1464
  const response = continueGoogleStream({
1460
1465
  stream: firstResponse,
1461
1466
  getContinuationToken: (chunk) => {
1462
1467
  var _a, _b;
1463
1468
  const candidate = (_a = chunk.candidates) == null ? void 0 : _a[0];
1469
+ if ((candidate == null ? void 0 : candidate.groundingMetadata) != null) {
1470
+ requestGroundingMetadata = candidate.groundingMetadata;
1471
+ }
1464
1472
  return (candidate == null ? void 0 : candidate.finishReason) === "CONTINUATION" ? (_b = candidate.continuationToken) != null ? _b : void 0 : void 0;
1465
1473
  },
1466
- continueStream: async (continuationToken) => (await streamGenerateContent({ ...args, continuationToken })).value
1474
+ continueStream: async (continuationToken) => {
1475
+ const { value } = await streamGenerateContent({
1476
+ ...args,
1477
+ continuationToken
1478
+ });
1479
+ groundingMetadataPerRequest.push(requestGroundingMetadata);
1480
+ requestGroundingMetadata = null;
1481
+ return value;
1482
+ }
1467
1483
  });
1468
1484
  let finishReason = "unknown";
1469
1485
  const usage = {
@@ -1741,6 +1757,18 @@ var GoogleGenerativeAILanguageModel = class {
1741
1757
  id: currentReasoningBlockId
1742
1758
  });
1743
1759
  }
1760
+ if (groundingMetadataPerRequest.length > 0) {
1761
+ providerMetadata = {
1762
+ ...providerMetadata,
1763
+ google: {
1764
+ ...providerMetadata == null ? void 0 : providerMetadata.google,
1765
+ groundingMetadataPerRequest: [
1766
+ ...groundingMetadataPerRequest,
1767
+ requestGroundingMetadata
1768
+ ]
1769
+ }
1770
+ };
1771
+ }
1744
1772
  controller.enqueue({
1745
1773
  type: "finish",
1746
1774
  finishReason,
@@ -1958,13 +1986,13 @@ var getSafetyRatingSchema = () => z3.object({
1958
1986
  severityScore: z3.number().nullish(),
1959
1987
  blocked: z3.boolean().nullish()
1960
1988
  });
1961
- var tokenDetailsSchema = z3.array(
1989
+ var tokenDetailsSchema = () => z3.array(
1962
1990
  z3.object({
1963
1991
  modality: z3.string(),
1964
1992
  tokenCount: z3.number()
1965
1993
  })
1966
1994
  ).nullish();
1967
- var usageSchema = z3.object({
1995
+ var usageSchema = () => z3.object({
1968
1996
  cachedContentTokenCount: z3.number().nullish(),
1969
1997
  thoughtsTokenCount: z3.number().nullish(),
1970
1998
  promptTokenCount: z3.number().nullish(),
@@ -1973,8 +2001,8 @@ var usageSchema = z3.object({
1973
2001
  // https://cloud.google.com/vertex-ai/generative-ai/docs/reference/rest/v1/GenerateContentResponse#TrafficType
1974
2002
  trafficType: z3.string().nullish(),
1975
2003
  // https://ai.google.dev/api/generate-content#Modality
1976
- promptTokensDetails: tokenDetailsSchema,
1977
- candidatesTokensDetails: tokenDetailsSchema
2004
+ promptTokensDetails: tokenDetailsSchema(),
2005
+ candidatesTokensDetails: tokenDetailsSchema()
1978
2006
  });
1979
2007
  var getUrlContextMetadataSchema = () => z3.object({
1980
2008
  urlMetadata: z3.array(
@@ -1997,7 +2025,7 @@ var responseSchema = lazySchema3(
1997
2025
  urlContextMetadata: getUrlContextMetadataSchema().nullish()
1998
2026
  })
1999
2027
  ).nullish(),
2000
- usageMetadata: usageSchema.nullish(),
2028
+ usageMetadata: usageSchema().nullish(),
2001
2029
  promptFeedback: z3.object({
2002
2030
  blockReason: z3.string().nullish(),
2003
2031
  safetyRatings: z3.array(getSafetyRatingSchema()).nullish()
@@ -2019,7 +2047,7 @@ var chunkSchema = lazySchema3(
2019
2047
  urlContextMetadata: getUrlContextMetadataSchema().nullish()
2020
2048
  })
2021
2049
  ).nullish(),
2022
- usageMetadata: usageSchema.nullish(),
2050
+ usageMetadata: usageSchema().nullish(),
2023
2051
  promptFeedback: z3.object({
2024
2052
  blockReason: z3.string().nullish(),
2025
2053
  safetyRatings: z3.array(getSafetyRatingSchema()).nullish()
@@ -2065,7 +2093,7 @@ import {
2065
2093
  zodSchema as zodSchema5
2066
2094
  } from "@ai-sdk/provider-utils";
2067
2095
  import { z as z6 } from "zod/v4";
2068
- var fileSearchArgsBaseSchema = z6.object({
2096
+ var fileSearchArgsBaseSchema = () => z6.object({
2069
2097
  /** The names of the file_search_stores to retrieve from.
2070
2098
  * Example: `fileSearchStores/my-file-search-store-123`
2071
2099
  */
@@ -2082,7 +2110,7 @@ var fileSearchArgsBaseSchema = z6.object({
2082
2110
  ).optional()
2083
2111
  }).passthrough();
2084
2112
  var fileSearchArgsSchema = lazySchema5(
2085
- () => zodSchema5(fileSearchArgsBaseSchema)
2113
+ () => zodSchema5(fileSearchArgsBaseSchema())
2086
2114
  );
2087
2115
  var fileSearch = createProviderDefinedToolFactory2({
2088
2116
  id: "google.file_search",
@@ -2110,7 +2138,7 @@ import {
2110
2138
  zodSchema as zodSchema7
2111
2139
  } from "@ai-sdk/provider-utils";
2112
2140
  import { z as z8 } from "zod/v4";
2113
- var googleSearchToolArgsBaseSchema = z8.object({
2141
+ var googleSearchToolArgsBaseSchema = () => z8.object({
2114
2142
  searchTypes: z8.object({
2115
2143
  webSearch: z8.object({}).optional(),
2116
2144
  imageSearch: z8.object({}).optional()
@@ -2121,7 +2149,7 @@ var googleSearchToolArgsBaseSchema = z8.object({
2121
2149
  }).optional()
2122
2150
  }).passthrough();
2123
2151
  var googleSearchToolArgsSchema = lazySchema7(
2124
- () => zodSchema7(googleSearchToolArgsBaseSchema)
2152
+ () => zodSchema7(googleSearchToolArgsBaseSchema())
2125
2153
  );
2126
2154
  var googleSearch = createProviderDefinedToolFactory4({
2127
2155
  id: "google.google_search",