@ai-sdk/google 4.0.113 → 4.0.114
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 +15 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -14
- package/dist/index.js.map +1 -1
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +31 -13
- package/dist/internal/index.js.map +1 -1
- package/docs/15-google.mdx +8 -0
- package/package.json +3 -3
- package/src/google-json-accumulator.ts +34 -0
- package/src/google-language-model.ts +14 -18
- package/src/google-prepare-tools.ts +7 -0
- package/src/interactions/google-interactions-language-model-options.ts +2 -0
- package/src/interactions/google-interactions-language-model.ts +1 -0
- package/src/interactions/google-interactions-prompt.ts +1 -0
|
@@ -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":";;;;KAcY;EACV,OAAO;IAAQ;;;KAGL;EACV;EACA,OAAO,MAAM;;cAGF,2BAAyB,EAAA;;;;GAOpC,EAAA,KAAA;;KAGU,sBAAsB,EAAE,aAAa;KAErC;EACN;EAAc;EAAmB;;EAEjC;IAAc;IAAkB;;EAChC,gBAAgB;EAChB;EACA;;EAGA;IAAgB;IAAa;IAAc;;EAC3C;;EAGA;IACE;IACA;IACA;IACA,QAAQ,MAAM;;;EAIhB;IAAY;IAAkB;;EAC9B,gBAAgB;EAChB;EACA;;EAGA;IACE;IACA;IACA;;EAEF;;EAGA;IACE;IACA;IACA;;EAEF;;EAGA;IACE;IACA;;;EAIF;IACE;IACA;;;KAII;EAEN;IAAc;IAAkB;;;EAGhC;IAAY;IAAkB;;;;;KCxFxB;cAqDC,6DAA0B;;;;;;;;;;;;;;;WAA1B;;;;;;;;;;;;;;;;;;;;;;;;KA+OD,6BAA6B,mBAChC;;;YCvNG;EACV;EACA;EACA,UAAU,WAAW;EACrB,QAAQ;EACR;;;;EAKA,sBAAsB;;;;EAKtB;IACE;IACA;;;qBAIS,+BAA+B;WACjC;WAEA,SAAS;mBAED;mBACA;UAET,oBAAoB,OAAO;;;;UAO3B,sBAAsB;IAC5B;IACA,QAAQ;MACT;EAIW,YAAA,SAAS,eAAe,QAAQ;MAMxC;MAIA,iBAAa,eAAA,YAAA,YAAA,eAAA;SAIJ,iBACX,SACA,QACA,WACE,QACA,iBACA,aACA,MACA,MACA,kBACA,iBACA,eACA,gBACA,MACA,OACA,YACA,WACA,iBACA,eAEF;IAEA,SAAS;IACT,QAAQ;IACR,SAAS;IACT;MACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAFUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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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"}
|
package/dist/internal/index.js
CHANGED
|
@@ -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 (!hasContiguousIndexes(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,26 @@ function getNestedValue(obj, segments) {
|
|
|
1488
1490
|
return current;
|
|
1489
1491
|
}
|
|
1490
1492
|
/**
|
|
1493
|
+
* Checks that every array index on the path is an existing element or the next
|
|
1494
|
+
* one. Arrays are streamed in order, and a sparse index would make `finalize()`
|
|
1495
|
+
* serialize one `null` per hole, so a tiny response could allocate without bound.
|
|
1496
|
+
* A missing or `null` parent is replaced with a new array, so it starts at 0.
|
|
1497
|
+
*
|
|
1498
|
+
* Input: ({items:["a"]}, ["items",1]) or ({items:["a"]}, ["items",5])
|
|
1499
|
+
* Output: true or false
|
|
1500
|
+
*/
|
|
1501
|
+
function hasContiguousIndexes(obj, segments) {
|
|
1502
|
+
let current = obj;
|
|
1503
|
+
for (const pathSegment of segments) {
|
|
1504
|
+
if (typeof pathSegment === "number") {
|
|
1505
|
+
const length = Array.isArray(current) ? current.length : current == null ? 0 : void 0;
|
|
1506
|
+
if (length !== void 0 && pathSegment > length) return false;
|
|
1507
|
+
}
|
|
1508
|
+
current = current != null && typeof current === "object" && hasOwnProperty(current, pathSegment) ? current[pathSegment] : void 0;
|
|
1509
|
+
}
|
|
1510
|
+
return true;
|
|
1511
|
+
}
|
|
1512
|
+
/**
|
|
1491
1513
|
* Sets a value at a nested path, creating intermediate objects or arrays as needed.
|
|
1492
1514
|
*
|
|
1493
1515
|
* Input: obj={}, segments=["recipe","ingredients",0,"name"], value="Noodles"
|
|
@@ -1577,18 +1599,10 @@ var GoogleLanguageModel = class GoogleLanguageModel {
|
|
|
1577
1599
|
static async prepareRequest({ modelId, config, options: { prompt, maxOutputTokens, temperature, topP, topK, frequencyPenalty, presencePenalty, stopSequences, responseFormat, seed, tools, toolChoice, reasoning, providerOptions, abortSignal }, isStreaming = false }) {
|
|
1578
1600
|
const warnings = [];
|
|
1579
1601
|
const providerOptionsNames = config.provider.includes("vertex") ? ["googleVertex", "vertex"] : ["google"];
|
|
1580
|
-
|
|
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",
|
|
1602
|
+
const { options: googleOptions } = await resolveProviderOptions({
|
|
1591
1603
|
providerOptions,
|
|
1604
|
+
namespaces: [...providerOptionsNames, "google"],
|
|
1605
|
+
resolution: "first",
|
|
1592
1606
|
schema: googleLanguageModelOptions
|
|
1593
1607
|
});
|
|
1594
1608
|
const isVertexProvider = config.provider.startsWith("google.vertex.");
|
|
@@ -1724,7 +1738,8 @@ var GoogleLanguageModel = class GoogleLanguageModel {
|
|
|
1724
1738
|
};
|
|
1725
1739
|
}
|
|
1726
1740
|
async getArgs(options, { isStreaming = false } = {}) {
|
|
1727
|
-
const { responseFormat,
|
|
1741
|
+
const { responseFormat, toolChoice } = options;
|
|
1742
|
+
const tools = toolChoice?.type === "none" ? options.tools?.filter((tool) => tool.type === "function") : options.tools;
|
|
1728
1743
|
const entry = getGoogleLanguageModelEntry(this.modelId);
|
|
1729
1744
|
const { structuredOutput } = entry.capabilities.language;
|
|
1730
1745
|
let jsonResponseTool;
|
|
@@ -4673,6 +4688,8 @@ const googleInteractionsEventSchema = lazySchema(() => zodSchema((() => {
|
|
|
4673
4688
|
* All fields are `.nullish()` per the existing google provider convention.
|
|
4674
4689
|
*/
|
|
4675
4690
|
const googleInteractionsLanguageModelOptions = lazySchema(() => zodSchema(z.object({
|
|
4691
|
+
/** User-defined request metadata, including `safety_identifier`. */
|
|
4692
|
+
labels: z.record(z.string(), z.string()).nullish(),
|
|
4676
4693
|
previousInteractionId: z.string().nullish(),
|
|
4677
4694
|
store: z.boolean().nullish(),
|
|
4678
4695
|
agent: z.string().nullish(),
|
|
@@ -5812,6 +5829,7 @@ var GoogleInteractionsLanguageModel = class GoogleInteractionsLanguageModel {
|
|
|
5812
5829
|
args: pruneUndefined({
|
|
5813
5830
|
...isAgent ? { agent: this.agent } : { model: this.modelId },
|
|
5814
5831
|
input,
|
|
5832
|
+
labels: googleOptions?.labels ?? void 0,
|
|
5815
5833
|
system_instruction: systemInstruction,
|
|
5816
5834
|
tools: toolsForBody,
|
|
5817
5835
|
response_format: responseFormatEntries.length > 0 ? responseFormatEntries : void 0,
|