@ai-sdk/google 4.0.86 → 4.0.88

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.
@@ -196,12 +196,13 @@ export declare class GoogleLanguageModel implements LanguageModelV4 {
196
196
  toolNameMapping: import("@ai-sdk/provider-utils").ToolNameMapping;
197
197
  }>;
198
198
  private getArgs;
199
- static convertGenerateContentResponse({ config, response, warnings, providerOptionsNames, toolNameMapping }: {
199
+ static convertGenerateContentResponse({ config, response, warnings, providerOptionsNames, toolNameMapping, jsonResponseToolName }: {
200
200
  config: GoogleLanguageModelConfig;
201
201
  response: InferSchema<typeof responseSchema>;
202
202
  warnings: SharedV4Warning[];
203
203
  providerOptionsNames: readonly string[];
204
204
  toolNameMapping?: ReturnType<typeof createToolNameMapping>;
205
+ jsonResponseToolName?: string;
205
206
  }): LanguageModelV4GenerateResult;
206
207
  doGenerate(options: LanguageModelV4CallOptions): Promise<LanguageModelV4GenerateResult>;
207
208
  doStream(options: LanguageModelV4CallOptions): Promise<LanguageModelV4StreamResult>;
@@ -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"],"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"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, combineHeaders, convertBase64ToUint8Array, 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, 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, resolveProviderReference, secureJsonParse, serializeModelOptions, 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/convert-google-usage.ts
@@ -1370,15 +1370,38 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1370
1370
  toolNameMapping
1371
1371
  };
1372
1372
  }
1373
- getArgs(options, { isStreaming = false } = {}) {
1374
- return GoogleLanguageModel.prepareRequest({
1375
- modelId: this.modelId,
1376
- config: this.config,
1377
- options,
1378
- isStreaming
1379
- });
1373
+ async getArgs(options, { isStreaming = false } = {}) {
1374
+ const { responseFormat, tools, toolChoice } = options;
1375
+ let jsonResponseTool;
1376
+ if (responseFormat?.type === "json" && responseFormat.schema != null && tools?.some((tool) => tool.type === "function") && /(^|\/)gemini-/i.test(this.modelId) && (!getGoogleModelCapabilities(this.modelId).usesGemini3Features || toolChoice?.type === "required" || toolChoice?.type === "tool")) {
1377
+ let name = "json";
1378
+ for (let suffix = 1; tools.some((tool) => tool.name === name); suffix++) name = `json_${suffix}`;
1379
+ jsonResponseTool = {
1380
+ type: "function",
1381
+ name,
1382
+ description: responseFormat.description ?? "Respond with a JSON object.",
1383
+ inputSchema: responseFormat.schema
1384
+ };
1385
+ }
1386
+ return {
1387
+ ...await GoogleLanguageModel.prepareRequest({
1388
+ modelId: this.modelId,
1389
+ config: this.config,
1390
+ options: jsonResponseTool == null ? options : {
1391
+ ...options,
1392
+ responseFormat: void 0,
1393
+ tools: [...tools ?? [], jsonResponseTool],
1394
+ toolChoice: toolChoice?.type === "tool" ? toolChoice : toolChoice?.type === "none" ? {
1395
+ type: "tool",
1396
+ toolName: jsonResponseTool.name
1397
+ } : { type: "required" }
1398
+ },
1399
+ isStreaming
1400
+ }),
1401
+ jsonResponseToolName: jsonResponseTool?.name
1402
+ };
1380
1403
  }
1381
- static convertGenerateContentResponse({ config, response, warnings, providerOptionsNames, toolNameMapping }) {
1404
+ static convertGenerateContentResponse({ config, response, warnings, providerOptionsNames, toolNameMapping, jsonResponseToolName }) {
1382
1405
  const wrapProviderMetadata = (payload) => Object.fromEntries(providerOptionsNames.map((name) => [name, payload]));
1383
1406
  const candidate = response.candidates?.[0];
1384
1407
  const promptBlockReason = response.promptFeedback?.blockReason;
@@ -1410,6 +1433,7 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1410
1433
  }
1411
1434
  });
1412
1435
  else if ("text" in part && part.text != null) {
1436
+ if (jsonResponseToolName != null && part.thought !== true) continue;
1413
1437
  const thoughtSignatureMetadata = part.thoughtSignature ? wrapProviderMetadata({ thoughtSignature: part.thoughtSignature }) : void 0;
1414
1438
  if (part.text.length === 0) {
1415
1439
  if (thoughtSignatureMetadata != null && content.length > 0) {
@@ -1421,14 +1445,23 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1421
1445
  text: part.text,
1422
1446
  providerMetadata: thoughtSignatureMetadata
1423
1447
  });
1424
- } else if ("functionCall" in part && part.functionCall.name != null) content.push({
1425
- type: "tool-call",
1426
- toolCallId: part.functionCall.id || config.generateId(),
1427
- toolName: part.functionCall.name,
1428
- input: JSON.stringify(part.functionCall.args ?? {}),
1429
- providerMetadata: part.thoughtSignature ? wrapProviderMetadata({ thoughtSignature: part.thoughtSignature }) : void 0
1430
- });
1431
- else if ("inlineData" in part) {
1448
+ } else if ("functionCall" in part && part.functionCall.name != null) {
1449
+ if (part.functionCall.name === jsonResponseToolName) {
1450
+ content.push({
1451
+ type: "text",
1452
+ text: typeof part.functionCall.args === "string" ? part.functionCall.args : JSON.stringify(part.functionCall.args ?? {}),
1453
+ ...part.thoughtSignature ? { providerMetadata: wrapProviderMetadata({ thoughtSignature: part.thoughtSignature }) } : {}
1454
+ });
1455
+ continue;
1456
+ }
1457
+ content.push({
1458
+ type: "tool-call",
1459
+ toolCallId: part.functionCall.id || config.generateId(),
1460
+ toolName: part.functionCall.name,
1461
+ input: JSON.stringify(part.functionCall.args ?? {}),
1462
+ providerMetadata: part.thoughtSignature ? wrapProviderMetadata({ thoughtSignature: part.thoughtSignature }) : void 0
1463
+ });
1464
+ } else if ("inlineData" in part) {
1432
1465
  const hasThought = part.thought === true;
1433
1466
  const hasThoughtSignature = !!part.thoughtSignature;
1434
1467
  content.push({
@@ -1506,7 +1539,7 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1506
1539
  };
1507
1540
  }
1508
1541
  async doGenerate(options) {
1509
- const { args, warnings, providerOptionsNames, extraHeaders, toolNameMapping } = await this.getArgs(options);
1542
+ const { args, warnings, providerOptionsNames, extraHeaders, toolNameMapping, jsonResponseToolName } = await this.getArgs(options);
1510
1543
  const mergedHeaders = combineHeaders(this.config.headers ? await resolve(this.config.headers) : void 0, options.headers, extraHeaders);
1511
1544
  const { responseHeaders, value: response, rawValue: rawResponse } = await postJsonToApi({
1512
1545
  url: `${this.config.baseURL}/${getModelPath(this.modelId)}:generateContent`,
@@ -1522,7 +1555,8 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1522
1555
  response,
1523
1556
  warnings,
1524
1557
  providerOptionsNames,
1525
- toolNameMapping
1558
+ toolNameMapping,
1559
+ jsonResponseToolName
1526
1560
  });
1527
1561
  return {
1528
1562
  ...result,
@@ -1535,7 +1569,7 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1535
1569
  };
1536
1570
  }
1537
1571
  async doStream(options) {
1538
- const { args, warnings, providerOptionsNames, extraHeaders, toolNameMapping } = await this.getArgs(options, { isStreaming: true });
1572
+ const { args, warnings, providerOptionsNames, extraHeaders, toolNameMapping, jsonResponseToolName } = await this.getArgs(options, { isStreaming: true });
1539
1573
  const wrapProviderMetadata = (payload) => Object.fromEntries(providerOptionsNames.map((name) => [name, payload]));
1540
1574
  const headers = combineHeaders(this.config.headers ? await resolve(this.config.headers) : void 0, options.headers, extraHeaders);
1541
1575
  const { responseHeaders, value: response } = await postJsonToApi({
@@ -1592,7 +1626,7 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1592
1626
  });
1593
1627
  hasToolCalls = true;
1594
1628
  };
1595
- return {
1629
+ const result = {
1596
1630
  stream: response.pipeThrough(new TransformStream({
1597
1631
  start(controller) {
1598
1632
  controller.enqueue({
@@ -1924,6 +1958,10 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1924
1958
  response: { headers: responseHeaders },
1925
1959
  request: { body: args }
1926
1960
  };
1961
+ return {
1962
+ ...result,
1963
+ stream: jsonResponseToolName == null ? result.stream : result.stream.pipeThrough(convertJsonResponseToolStream(jsonResponseToolName))
1964
+ };
1927
1965
  }
1928
1966
  };
1929
1967
  function getMaxOutputTokensForGemini25Model() {
@@ -2235,10 +2273,13 @@ function isConfirmedPromptBlockReason(blockReason) {
2235
2273
  * encoded audio in the first inline-data part (WAV by default on Gemini 3.8,
2236
2274
  * raw PCM on older models).
2237
2275
  */
2238
- const googleSpeechResponseSchema = lazySchema(() => zodSchema(z.object({ candidates: z.array(z.object({ content: z.object({ parts: z.array(z.object({ inlineData: z.object({
2239
- mimeType: z.string().nullish(),
2240
- data: z.string().nullish()
2241
- }).nullish() })).nullish() }).nullish() })).nullish() })));
2276
+ const googleSpeechResponseSchema = lazySchema(() => zodSchema(z.object({
2277
+ candidates: z.array(z.object({ content: z.object({ parts: z.array(z.object({ inlineData: z.object({
2278
+ mimeType: z.string().nullish(),
2279
+ data: z.string().nullish()
2280
+ }).nullish() })).nullish() }).nullish() })).nullish(),
2281
+ usageMetadata: z.record(z.string(), z.json()).nullish()
2282
+ })));
2242
2283
  //#endregion
2243
2284
  //#region src/google-speech-input.ts
2244
2285
  /**
@@ -2479,6 +2520,7 @@ var GoogleSpeechModel = class GoogleSpeechModel {
2479
2520
  return {
2480
2521
  audio,
2481
2522
  warnings,
2523
+ ...response.usageMetadata != null && { usage: response.usageMetadata },
2482
2524
  request: { body: JSON.stringify(requestBody) },
2483
2525
  response: {
2484
2526
  timestamp: currentDate,