@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.
- package/CHANGELOG.md +26 -0
- package/dist/index.d.ts +10 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +64 -50
- package/dist/index.js.map +1 -1
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +41 -33
- package/dist/internal/index.js.map +1 -1
- package/docs/15-google.mdx +1 -1
- package/package.json +3 -3
- package/src/continue-google-stream.ts +11 -3
- package/src/google-batch.ts +37 -34
- package/src/google-embedding-model-options.ts +15 -14
- package/src/google-files.ts +1 -11
- package/src/google-image-model-options.ts +1 -1
- package/src/google-language-model.ts +60 -44
- package/src/google-speech-model-options.ts +17 -14
- package/src/google-video-model.ts +34 -27
- package/src/interactions/build-google-interactions-stream-transform.ts +12 -5
- package/src/tool/file-search.ts +34 -27
- package/src/tool/google-search.ts +16 -15
- package/src/transcription/google-transcription-model-options.ts +40 -31
- package/src/transcription/google-transcription-model.ts +37 -30
|
@@ -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":";;;;KAaY;EACV,OAAO;IAAQ;;;KAGL;EACV;EACA,OAAO,MAAM;;KAGH;EACN;EAAc;EAAmB;;EAEjC;IAAc;IAAkB;;EAChC;EACA;;EAGA;IAAgB;IAAa;IAAc;;EAC3C;;EAGA;IACE;IACA;IACA;IACA,QAAQ,MAAM;;;EAIhB;IAAY;IAAkB;;EAC9B;EACA;;EAGA;IACE;IACA;IACA;;EAEF;;EAGA;IACE;IACA;IACA;;EAEF;;EAGA;IACE;IACA;;;EAIF;IACE;IACA;;;KAII;EAEN;IAAc;IAAkB;;;EAGhC;IAAY;IAAkB;;;;;KCzExB;;;
|
|
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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"}
|
package/dist/internal/index.js
CHANGED
|
@@ -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
|
|
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: "
|
|
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: {
|