@ai-sdk/google 4.0.101 → 4.0.103

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.
@@ -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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"}
@@ -9,7 +9,9 @@ import { InvalidArgumentError, UnsupportedFunctionalityError } from "@ai-sdk/pro
9
9
  * Events of the current stream are passed through unchanged. When an event
10
10
  * signals that the per-request cap was reached while budget remains
11
11
  * (`getContinuationToken` returns a token), the next request is sent with that
12
- * token once the current stream ends, and its events are appended. If the
12
+ * token once the current stream ends, and its events are appended after a
13
+ * `continuation-start` marker. The marker orders per-response state changes
14
+ * with buffered events, including when the new stream is empty. If the
13
15
  * continuation request fails, the error is emitted as a failed parse result
14
16
  * and the stream ends.
15
17
  */
@@ -36,6 +38,8 @@ function continueGoogleStream({ stream, getContinuationToken, continueStream })
36
38
  pendingContinuationToken = void 0;
37
39
  try {
38
40
  reader = (await continueStream(continuationToken)).getReader();
41
+ controller.enqueue({ type: "continuation-start" });
42
+ return;
39
43
  } catch (error) {
40
44
  controller.enqueue({
41
45
  success: false,
@@ -1746,7 +1750,7 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1746
1750
  }
1747
1751
  });
1748
1752
  let finishReason = {
1749
- unified: "other",
1753
+ unified: "interrupted",
1750
1754
  raw: void 0
1751
1755
  };
1752
1756
  let usage = void 0;
@@ -1802,11 +1806,22 @@ var GoogleLanguageModel = class GoogleLanguageModel {
1802
1806
  });
1803
1807
  },
1804
1808
  transform(chunk, controller) {
1809
+ if ("type" in chunk) {
1810
+ finishReason = {
1811
+ unified: "interrupted",
1812
+ raw: void 0
1813
+ };
1814
+ return;
1815
+ }
1805
1816
  if (options.includeRawChunks) controller.enqueue({
1806
1817
  type: "raw",
1807
1818
  rawValue: chunk.rawValue
1808
1819
  });
1809
1820
  if (!chunk.success) {
1821
+ if (finishReason.unified === "interrupted") finishReason = {
1822
+ unified: "error",
1823
+ raw: void 0
1824
+ };
1810
1825
  controller.enqueue({
1811
1826
  type: "error",
1812
1827
  error: chunk.error
@@ -2348,7 +2363,7 @@ const getGroundingMetadataSchema = () => z.object({
2348
2363
  })).nullish(),
2349
2364
  retrievalMetadata: z.union([z.object({ webDynamicRetrievalScore: z.number() }), z.object({})]).nullish()
2350
2365
  });
2351
- const partialArgSchema = z.object({
2366
+ const partialArgSchema = () => z.object({
2352
2367
  jsonPath: z.string(),
2353
2368
  stringValue: z.string().nullish(),
2354
2369
  numberValue: z.number().nullish(),
@@ -2362,7 +2377,7 @@ const getContentSchema = () => z.object({ parts: z.array(z.union([
2362
2377
  id: z.string().nullish(),
2363
2378
  name: z.string().nullish(),
2364
2379
  args: z.unknown().nullish(),
2365
- partialArgs: z.array(partialArgSchema).nullish(),
2380
+ partialArgs: z.array(partialArgSchema()).nullish(),
2366
2381
  willContinue: z.boolean().nullish()
2367
2382
  }),
2368
2383
  thoughtSignature: z.string().nullish()
@@ -2413,11 +2428,11 @@ const getSafetyRatingSchema = () => z.object({
2413
2428
  severityScore: z.number().nullish(),
2414
2429
  blocked: z.boolean().nullish()
2415
2430
  });
2416
- const tokenDetailsSchema = z.array(z.object({
2431
+ const tokenDetailsSchema = () => z.array(z.object({
2417
2432
  modality: z.string(),
2418
2433
  tokenCount: z.number()
2419
2434
  }).loose()).nullish();
2420
- const usageSchema$1 = z.object({
2435
+ const usageSchema$1 = () => z.object({
2421
2436
  cachedContentTokenCount: z.number().nullish(),
2422
2437
  thoughtsTokenCount: z.number().nullish(),
2423
2438
  promptTokenCount: z.number().nullish(),
@@ -2426,10 +2441,10 @@ const usageSchema$1 = z.object({
2426
2441
  totalTokenCount: z.number().nullish(),
2427
2442
  trafficType: z.string().nullish(),
2428
2443
  serviceTier: z.string().nullish(),
2429
- promptTokensDetails: tokenDetailsSchema,
2430
- cacheTokensDetails: tokenDetailsSchema,
2431
- candidatesTokensDetails: tokenDetailsSchema,
2432
- toolUsePromptTokensDetails: tokenDetailsSchema
2444
+ promptTokensDetails: tokenDetailsSchema(),
2445
+ cacheTokensDetails: tokenDetailsSchema(),
2446
+ candidatesTokensDetails: tokenDetailsSchema(),
2447
+ toolUsePromptTokensDetails: tokenDetailsSchema()
2433
2448
  }).loose();
2434
2449
  const getUrlContextMetadataSchema = () => z.object({ urlMetadata: z.array(z.object({
2435
2450
  retrievedUrl: z.string(),
@@ -2446,7 +2461,7 @@ const responseSchema = lazySchema(() => zodSchema(z.object({
2446
2461
  groundingMetadata: getGroundingMetadataSchema().nullish(),
2447
2462
  urlContextMetadata: getUrlContextMetadataSchema().nullish()
2448
2463
  })).nullish(),
2449
- usageMetadata: usageSchema$1.nullish(),
2464
+ usageMetadata: usageSchema$1().nullish(),
2450
2465
  promptFeedback: z.object({
2451
2466
  blockReason: z.string().nullish(),
2452
2467
  safetyRatings: z.array(getSafetyRatingSchema()).nullish()
@@ -2464,7 +2479,7 @@ const chunkSchema = lazySchema(() => zodSchema(z.object({
2464
2479
  groundingMetadata: getGroundingMetadataSchema().nullish(),
2465
2480
  urlContextMetadata: getUrlContextMetadataSchema().nullish()
2466
2481
  })).nullish(),
2467
- usageMetadata: usageSchema$1.nullish(),
2482
+ usageMetadata: usageSchema$1().nullish(),
2468
2483
  promptFeedback: z.object({
2469
2484
  blockReason: z.string().nullish(),
2470
2485
  safetyRatings: z.array(getSafetyRatingSchema()).nullish()
@@ -2516,18 +2531,18 @@ function getGoogleSpeechInput({ text, voice, providerOptions }) {
2516
2531
  }
2517
2532
  //#endregion
2518
2533
  //#region src/google-speech-model-options.ts
2519
- const prebuiltVoiceConfigSchema = z.object({ voiceName: z.string() });
2520
- const voiceConfigSchema = z.object({
2521
- prebuiltVoiceConfig: prebuiltVoiceConfigSchema,
2534
+ const prebuiltVoiceConfigSchema = () => z.object({ voiceName: z.string() });
2535
+ const voiceConfigSchema = () => z.object({
2536
+ prebuiltVoiceConfig: prebuiltVoiceConfigSchema(),
2522
2537
  voice: z.never().optional()
2523
2538
  });
2524
- const speechMetadataSchema = z.object({
2539
+ const speechMetadataSchema = () => z.object({
2525
2540
  speaker: z.string().min(1).optional(),
2526
2541
  style: z.string().optional()
2527
2542
  });
2528
2543
  const googleSpeechProviderOptionsSchema = lazySchema(() => zodSchema(z.object({
2529
2544
  /** Turn-level directions for the top-level text, for Gemini 3.8 TTS. */
2530
- speechMetadata: speechMetadataSchema.optional(),
2545
+ speechMetadata: speechMetadataSchema().optional(),
2531
2546
  /**
2532
2547
  * Structured transcript for Gemini 3.8 TTS. Replaces the top-level text;
2533
2548
  * pass text: '' when using turns. Each multi-speaker turn must name a
@@ -2535,7 +2550,7 @@ const googleSpeechProviderOptionsSchema = lazySchema(() => zodSchema(z.object({
2535
2550
  */
2536
2551
  turns: z.array(z.object({
2537
2552
  text: z.string(),
2538
- speechMetadata: speechMetadataSchema.optional()
2553
+ speechMetadata: speechMetadataSchema().optional()
2539
2554
  })).min(1).optional(),
2540
2555
  /**
2541
2556
  * Multi-speaker configuration for dialogue audio. When provided, this
@@ -2547,7 +2562,7 @@ const googleSpeechProviderOptionsSchema = lazySchema(() => zodSchema(z.object({
2547
2562
  */
2548
2563
  multiSpeakerVoiceConfig: z.object({ speakerVoiceConfigs: z.array(z.object({
2549
2564
  speaker: z.string(),
2550
- voiceConfig: voiceConfigSchema
2565
+ voiceConfig: voiceConfigSchema()
2551
2566
  })) }).optional()
2552
2567
  })));
2553
2568
  //#endregion
@@ -2792,7 +2807,7 @@ const enterpriseWebSearch = createProviderExecutedToolFactory({
2792
2807
  });
2793
2808
  //#endregion
2794
2809
  //#region src/tool/file-search.ts
2795
- z.looseObject({
2810
+ lazySchema(() => zodSchema(z.looseObject({
2796
2811
  /** The names of the file_search_stores to retrieve from.
2797
2812
  * Example: `fileSearchStores/my-file-search-store-123`
2798
2813
  */
@@ -2803,7 +2818,7 @@ z.looseObject({
2803
2818
  * See https://google.aip.dev/160 for the syntax of the filter expression.
2804
2819
  */
2805
2820
  metadataFilter: z.string().describe("Metadata filter to apply to the file search retrieval documents. See https://google.aip.dev/160 for the syntax of the filter expression.").optional()
2806
- });
2821
+ })));
2807
2822
  const fileSearch = createProviderExecutedToolFactory({
2808
2823
  id: "google.file_search",
2809
2824
  inputSchema: lazySchema(() => zodSchema(z.object({}))),
@@ -2816,16 +2831,6 @@ const googleMaps = createProviderExecutedToolFactory({
2816
2831
  inputSchema: lazySchema(() => zodSchema(z.object({}))),
2817
2832
  outputSchema: lazySchema(() => zodSchema(z.object({})))
2818
2833
  });
2819
- z.looseObject({
2820
- searchTypes: z.object({
2821
- webSearch: z.object({}).optional(),
2822
- imageSearch: z.object({}).optional()
2823
- }).optional(),
2824
- timeRangeFilter: z.object({
2825
- startTime: z.string(),
2826
- endTime: z.string()
2827
- }).optional()
2828
- });
2829
2834
  //#endregion
2830
2835
  //#region src/google-tools.ts
2831
2836
  const googleTools = {
@@ -3171,6 +3176,7 @@ function buildGoogleInteractionsStreamTransform({ warnings, generateId, includeR
3171
3176
  let serviceTier = headerServiceTier;
3172
3177
  let finishStatus;
3173
3178
  let hasFunctionCall = false;
3179
+ let hasCompletionEvent = false;
3174
3180
  const openBlocks = /* @__PURE__ */ new Map();
3175
3181
  const emittedSourceKeys = /* @__PURE__ */ new Set();
3176
3182
  function sourceKey(source) {
@@ -3583,6 +3589,7 @@ function buildGoogleInteractionsStreamTransform({ warnings, generateId, includeR
3583
3589
  break;
3584
3590
  }
3585
3591
  case "interaction.completed": {
3592
+ hasCompletionEvent = true;
3586
3593
  const interaction = value.interaction;
3587
3594
  if (interaction?.id != null && interaction.id.length > 0) interactionId = interaction.id;
3588
3595
  if (interaction?.status != null) finishStatus = interaction.status;
@@ -3607,12 +3614,13 @@ function buildGoogleInteractionsStreamTransform({ warnings, generateId, includeR
3607
3614
  }
3608
3615
  },
3609
3616
  flush(controller) {
3617
+ const isInterrupted = !hasCompletionEvent && (finishStatus == null || finishStatus === "in_progress");
3610
3618
  const finishReason = {
3611
- unified: mapGoogleInteractionsFinishReason({
3619
+ unified: isInterrupted ? "interrupted" : mapGoogleInteractionsFinishReason({
3612
3620
  status: finishStatus,
3613
3621
  hasFunctionCall
3614
3622
  }),
3615
- raw: finishStatus
3623
+ raw: isInterrupted ? void 0 : finishStatus
3616
3624
  };
3617
3625
  const outputTokensByModality = getGoogleInteractionsOutputTokensByModality(usage);
3618
3626
  const providerMetadata = { google: {