@ai-sdk/google 4.0.113 → 4.0.116

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.
@@ -246,9 +246,10 @@ export declare class GoogleLanguageModel implements LanguageModelV4 {
246
246
  toolNameMapping: import("@ai-sdk/provider-utils").ToolNameMapping;
247
247
  }>;
248
248
  private getArgs;
249
- static convertGenerateContentResponse({ config, response, warnings, providerOptionsNames, toolNameMapping, jsonResponseToolName, initialPromptTokenCount, groundingMetadataPerRequest }: {
249
+ static convertGenerateContentResponse({ config, response, responseHeaders, warnings, providerOptionsNames, toolNameMapping, jsonResponseToolName, initialPromptTokenCount, groundingMetadataPerRequest }: {
250
250
  config: GoogleLanguageModelConfig;
251
251
  response: InferSchema<typeof responseSchema>;
252
+ responseHeaders?: Record<string, string>;
252
253
  warnings: SharedV4Warning[];
253
254
  providerOptionsNames: readonly string[];
254
255
  toolNameMapping?: ReturnType<typeof createToolNameMapping>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["_$__google_prompt0.GoogleContent","_$__google_prompt0.GoogleSystemInstruction"],"sources":["../../src/google-prompt.ts","../../src/google-language-model-options.ts","../../src/google-language-model.ts","../../src/google-speech-model-options.ts","../../src/google-speech-model.ts","../../src/google-speech-input.ts","../../src/google-tools.ts","../../src/interactions/google-interactions-language-model-options.ts","../../src/interactions/google-interactions-language-model.ts","../../src/interactions/google-interactions-agent.ts","../../src/google-model-catalog.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["_$__google_prompt0.GoogleContent","_$__google_prompt0.GoogleSystemInstruction"],"sources":["../../src/google-prompt.ts","../../src/google-language-model-options.ts","../../src/google-language-model.ts","../../src/google-speech-model-options.ts","../../src/google-speech-model.ts","../../src/google-speech-input.ts","../../src/google-tools.ts","../../src/interactions/google-interactions-language-model-options.ts","../../src/interactions/google-interactions-language-model.ts","../../src/interactions/google-interactions-agent.ts","../../src/google-model-catalog.ts"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, combineHeaders, convertBase64ToUint8Array, convertJsonResponseToolStream, convertToBase64, createEventSourceResponseHandler, createJsonErrorResponseHandler, createJsonResponseHandler, createNullLanguageModelUsage, createProviderExecutedToolFactory, createProviderStreamError, createToolNameMapping, delay, detectMediaType, downloadBlob, generateId, getFromApi, getRuntimeEnvironmentUserAgent, getTopLevelMediaType, isAbortError, isCustomReasoning, isFullMediaType, isUrlSupported, lazySchema, mapReasoningToProviderBudget, mapReasoningToProviderEffort, parseProviderOptions, postJsonToApi, resolve, resolveFullMediaType, resolveProviderReference, secureJsonParse, serializeModelOptions, stringifyWithBigIntAndCycles, withUserAgentSuffix, zodSchema } from "@ai-sdk/provider-utils";
1
+ import { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, combineHeaders, convertBase64ToUint8Array, convertJsonResponseToolStream, convertToBase64, createEventSourceResponseHandler, createJsonErrorResponseHandler, createJsonResponseHandler, createNullLanguageModelUsage, createProviderExecutedToolFactory, createProviderStreamError, createToolNameMapping, delay, detectMediaType, downloadBlob, generateId, getFromApi, getRuntimeEnvironmentUserAgent, getTopLevelMediaType, isAbortError, isCustomReasoning, isFullMediaType, isUrlSupported, lazySchema, mapReasoningToProviderBudget, mapReasoningToProviderEffort, parseProviderOptions, postJsonToApi, resolve, resolveFullMediaType, resolveProviderOptions, resolveProviderReference, secureJsonParse, serializeModelOptions, stringifyWithBigIntAndCycles, withUserAgentSuffix, zodSchema } from "@ai-sdk/provider-utils";
2
2
  import { z } from "zod/v4";
3
3
  import { InvalidArgumentError, UnsupportedFunctionalityError } from "@ai-sdk/provider";
4
4
  //#region src/continue-google-stream.ts
@@ -1067,6 +1067,7 @@ function getGoogleModelCapabilities(modelId) {
1067
1067
  //#endregion
1068
1068
  //#region src/google-prepare-tools.ts
1069
1069
  function prepareTools({ tools, toolChoice, modelId, isVertexProvider = false }) {
1070
+ if (toolChoice?.type === "none") tools = tools?.filter((tool) => tool.type === "function");
1070
1071
  tools = tools?.length ? tools : void 0;
1071
1072
  const toolWarnings = [];
1072
1073
  const { supportsGemini2Tools, supportsFileSearch, usesGemini3Features } = getGoogleModelCapabilities(modelId);
@@ -1263,6 +1264,7 @@ var GoogleJSONAccumulator = class {
1263
1264
  const rawPath = (isArrayTerminator ? arg.jsonPath.slice(0, -2) : arg.jsonPath).replace(/^\$\./, "");
1264
1265
  if (!rawPath || rawPath === "$") continue;
1265
1266
  const segments = parsePath(rawPath);
1267
+ if (!normalizeAndCheckIndexes(this.accumulatedArgs, segments)) continue;
1266
1268
  const existingValue = getNestedValue(this.accumulatedArgs, segments);
1267
1269
  if (arg.stringValue != null && existingValue !== void 0) {
1268
1270
  const escaped = JSON.stringify(arg.stringValue).slice(1, -1);
@@ -1488,6 +1490,35 @@ function getNestedValue(obj, segments) {
1488
1490
  return current;
1489
1491
  }
1490
1492
  /**
1493
+ * Normalizes dotted array indexes in place and checks that every array index
1494
+ * is an existing element or the next one. Arrays are streamed in order, and a
1495
+ * sparse index would make `finalize()` serialize one `null` per hole, so a tiny
1496
+ * response could allocate without bound.
1497
+ * A missing or `null` parent is replaced with a new array, so it starts at 0.
1498
+ *
1499
+ * Input: ({items:["a"]}, ["items",1]) or ({items:["a"]}, ["items",5])
1500
+ * Output: true or false
1501
+ */
1502
+ function normalizeAndCheckIndexes(obj, segments) {
1503
+ let current = obj;
1504
+ for (let i = 0; i < segments.length; i++) {
1505
+ let pathSegment = segments[i];
1506
+ if (Array.isArray(current) && typeof pathSegment === "string") {
1507
+ const index = Number(pathSegment);
1508
+ if (Number.isInteger(index) && index >= 0 && index < 2 ** 32 - 1 && String(index) === pathSegment) {
1509
+ pathSegment = index;
1510
+ segments[i] = index;
1511
+ }
1512
+ }
1513
+ if (typeof pathSegment === "number") {
1514
+ const length = Array.isArray(current) ? current.length : current == null ? 0 : void 0;
1515
+ if (length !== void 0 && pathSegment > length) return false;
1516
+ }
1517
+ current = current != null && typeof current === "object" && hasOwnProperty(current, pathSegment) ? current[pathSegment] : void 0;
1518
+ }
1519
+ return true;
1520
+ }
1521
+ /**
1491
1522
  * Sets a value at a nested path, creating intermediate objects or arrays as needed.
1492
1523
  *
1493
1524
  * Input: obj={}, segments=["recipe","ingredients",0,"name"], value="Noodles"
@@ -1577,18 +1608,10 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1577
1608
  static async prepareRequest({ modelId, config, options: { prompt, maxOutputTokens, temperature, topP, topK, frequencyPenalty, presencePenalty, stopSequences, responseFormat, seed, tools, toolChoice, reasoning, providerOptions, abortSignal }, isStreaming = false }) {
1578
1609
  const warnings = [];
1579
1610
  const providerOptionsNames = config.provider.includes("vertex") ? ["googleVertex", "vertex"] : ["google"];
1580
- let googleOptions;
1581
- for (const name of providerOptionsNames) {
1582
- googleOptions = await parseProviderOptions({
1583
- provider: name,
1584
- providerOptions,
1585
- schema: googleLanguageModelOptions
1586
- });
1587
- if (googleOptions != null) break;
1588
- }
1589
- if (googleOptions == null && !providerOptionsNames.includes("google")) googleOptions = await parseProviderOptions({
1590
- provider: "google",
1611
+ const { options: googleOptions } = await resolveProviderOptions({
1591
1612
  providerOptions,
1613
+ namespaces: [...providerOptionsNames, "google"],
1614
+ resolution: "first",
1592
1615
  schema: googleLanguageModelOptions
1593
1616
  });
1594
1617
  const isVertexProvider = config.provider.startsWith("google.vertex.");
@@ -1724,7 +1747,8 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1724
1747
  };
1725
1748
  }
1726
1749
  async getArgs(options, { isStreaming = false } = {}) {
1727
- const { responseFormat, tools, toolChoice } = options;
1750
+ const { responseFormat, toolChoice } = options;
1751
+ const tools = toolChoice?.type === "none" ? options.tools?.filter((tool) => tool.type === "function") : options.tools;
1728
1752
  const entry = getGoogleLanguageModelEntry(this.modelId);
1729
1753
  const { structuredOutput } = entry.capabilities.language;
1730
1754
  let jsonResponseTool;
@@ -1756,7 +1780,7 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1756
1780
  jsonResponseToolName: jsonResponseTool?.name
1757
1781
  };
1758
1782
  }
1759
- static convertGenerateContentResponse({ config, response, warnings, providerOptionsNames, toolNameMapping, jsonResponseToolName, initialPromptTokenCount, groundingMetadataPerRequest }) {
1783
+ static convertGenerateContentResponse({ config, response, responseHeaders, warnings, providerOptionsNames, toolNameMapping, jsonResponseToolName, initialPromptTokenCount, groundingMetadataPerRequest }) {
1760
1784
  const wrapProviderMetadata = (payload) => Object.fromEntries(providerOptionsNames.map((name) => [name, payload]));
1761
1785
  const candidate = response.candidates?.[0];
1762
1786
  const promptBlockReason = response.promptFeedback?.blockReason;
@@ -1889,7 +1913,7 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1889
1913
  safetyRatings: candidate?.safetyRatings ?? null,
1890
1914
  usageMetadata: usageMetadata ?? null,
1891
1915
  finishMessage: candidate?.finishMessage ?? null,
1892
- serviceTier: usageMetadata?.serviceTier ?? null,
1916
+ serviceTier: usageMetadata?.serviceTier ?? responseHeaders?.["x-gemini-service-tier"] ?? null,
1893
1917
  ...candidate?.continuationToken != null ? { continuationToken: candidate.continuationToken } : {},
1894
1918
  ...initialPromptTokenCount != null ? { initialPromptTokenCount } : {}
1895
1919
  }),
@@ -1939,6 +1963,7 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1939
1963
  ...response,
1940
1964
  usageMetadata
1941
1965
  },
1966
+ responseHeaders,
1942
1967
  warnings,
1943
1968
  providerOptionsNames,
1944
1969
  toolNameMapping,
@@ -2459,7 +2484,7 @@ var GoogleLanguageModel = class GoogleLanguageModel {
2459
2484
  safetyRatings: lastSafetyRatings,
2460
2485
  usageMetadata: usage ?? null,
2461
2486
  finishMessage: lastFinishMessage,
2462
- serviceTier: usage?.serviceTier ?? null,
2487
+ serviceTier: usage?.serviceTier ?? responseHeaders?.["x-gemini-service-tier"] ?? null,
2463
2488
  ...lastContinuationToken != null && (finishReason.raw === "MAX_TOKENS" || finishReason.raw === "CONTINUATION") ? { continuationToken: lastContinuationToken } : {},
2464
2489
  ...initialPromptTokenCount != null ? { initialPromptTokenCount } : {}
2465
2490
  })
@@ -4673,6 +4698,8 @@ const googleInteractionsEventSchema = lazySchema(() => zodSchema((() => {
4673
4698
  * All fields are `.nullish()` per the existing google provider convention.
4674
4699
  */
4675
4700
  const googleInteractionsLanguageModelOptions = lazySchema(() => zodSchema(z.object({
4701
+ /** User-defined request metadata, including `safety_identifier`. */
4702
+ labels: z.record(z.string(), z.string()).nullish(),
4676
4703
  previousInteractionId: z.string().nullish(),
4677
4704
  store: z.boolean().nullish(),
4678
4705
  agent: z.string().nullish(),
@@ -5812,6 +5839,7 @@ var GoogleInteractionsLanguageModel = class GoogleInteractionsLanguageModel {
5812
5839
  args: pruneUndefined({
5813
5840
  ...isAgent ? { agent: this.agent } : { model: this.modelId },
5814
5841
  input,
5842
+ labels: googleOptions?.labels ?? void 0,
5815
5843
  system_instruction: systemInstruction,
5816
5844
  tools: toolsForBody,
5817
5845
  response_format: responseFormatEntries.length > 0 ? responseFormatEntries : void 0,