@ai-sdk/google 4.0.109 → 4.0.111
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 +19 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -14
- package/dist/index.js.map +1 -1
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +60 -13
- package/dist/internal/index.js.map +1 -1
- package/docs/15-google.mdx +14 -10
- package/package.json +2 -2
- package/src/convert-to-google-messages.ts +61 -7
- package/src/google-error.ts +37 -0
- package/src/google-language-model.ts +10 -6
- package/src/interactions/prepare-google-interactions-tools.ts +7 -4
|
@@ -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":";;;;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;;;
|
|
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":";;;;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;;;YC8EA;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4SG;SAuDP,iCACL,QACA,UACA,UACA,sBACA,iBACA,sBACA,yBACA;IAEA,QAAQ;IACR,UAAU,mBAAmB;IAC7B,UAAU;IACV;IACA,kBAAkB,kBAAkB;IACpC;IACA;IACA,8BAA8B,MAAM;MAClC;EAkNE,WACJ,SAAS,6BACR,QAAQ;EAiHL,SACJ,SAAS,6BACR,QAAQ;;qBAm5BA,kCAA0B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EnC,EAAA,KAAA;qBAsHS,mCAA2B,EAAA;;;;;GAUpC,EAAA,KAAA;qBAES,iDAAc;;;cAAd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BR,kBAAkB,YACrB,mBAAmB;YAGT,0BAA0B,YACpC;YAGU,2BAA2B,YACrC;YAGU,qBAAqB,YAC/B;YAGU,uBAAuB,YACjC,mBAAmB;YAGT,sBAAsB,YAChC,mBAAmB;;;KC9+DT;;;UCoBF;EACR;EACA;EACA,UAAU,WAAW;EACrB,QAAQ;EACR;IACE,oBAAoB;;;qBAQX,6BAA6B;WAsB7B,SAAS;mBACD;WAtBV;UAED,oBAAoB,OAAO;;;;UAO3B,sBAAsB;IAC5B,SAAS;IACT,QAAQ;MACT;MAIG;EAKO,YAAA,SAAS,qBACD,QAAQ;UAGb;EAmNR,WACJ,SAAS,WAAW,kCACnB,QAAQ,QAAQ,WAAW;;;;;;;;;wBCnRhB,uBACd,MACA,OACA;EAEA;EACA;EACA,kBAAkB;;EACd;EAAc;;;;qBCLP;;;;;;;;kBAAA;oBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KCQD;;;KC2CA;EACV;EACA;EACA,UAAU,WAAW;EACrB,QAAQ;EACR;EACA,sBAAsB;;KAGZ,+BACR;EACE;;EACA;;qBAEO,2CAA2C;WAC7C;WAEA;;;;;WAMA;mBAEQ;UAET,oBAAoB,OAAO;;;;;UAU3B,sBAAsB;IAC5B;IACA;IACA,QAAQ;MACT;EAQC,YAAA,cAAc,8BACd,QAAQ;MAeN;MAIA,iBAAa,eAAA,YAAA,YAAA,eAAA;UAgBH;EAiVR,WACJ,SAAS,6BACR,QAAQ;EAiIL,SACJ,SAAS,6BACR,QAAQ;UAkFG;;;;;;;;;;;;;KC9qBJ"}
|
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, 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, 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
|
|
@@ -175,13 +175,28 @@ function convertUrlToolResultPart(url) {
|
|
|
175
175
|
data: parsedDataUrl.data
|
|
176
176
|
} };
|
|
177
177
|
}
|
|
178
|
-
function containsJSONSchemaReference(value) {
|
|
179
|
-
if (
|
|
180
|
-
if (
|
|
181
|
-
|
|
178
|
+
function containsJSONSchemaReference(value, seen = /* @__PURE__ */ new WeakSet()) {
|
|
179
|
+
if (value === null || typeof value !== "object") return false;
|
|
180
|
+
if (seen.has(value)) return false;
|
|
181
|
+
seen.add(value);
|
|
182
|
+
if (Array.isArray(value)) return value.some((item) => containsJSONSchemaReference(item, seen));
|
|
183
|
+
return Object.entries(value).some(([key, nestedValue]) => key === "$ref" || containsJSONSchemaReference(nestedValue, seen));
|
|
182
184
|
}
|
|
183
185
|
function serializeFunctionResponseContent(value) {
|
|
184
|
-
|
|
186
|
+
if (containsJSONSchemaReference(value)) return stringifyWithBigIntAndCycles(value);
|
|
187
|
+
return containsNonJsonValue(value) ? secureJsonParse(stringifyWithBigIntAndCycles(value)) : value;
|
|
188
|
+
}
|
|
189
|
+
function containsNonJsonValue(value, ancestors = /* @__PURE__ */ new Set()) {
|
|
190
|
+
if (typeof value === "bigint") return true;
|
|
191
|
+
if (typeof value !== "object" || value === null) return false;
|
|
192
|
+
if (typeof value.toJSON === "function") return true;
|
|
193
|
+
if (ancestors.has(value)) return true;
|
|
194
|
+
ancestors.add(value);
|
|
195
|
+
try {
|
|
196
|
+
return Object.values(value).some((item) => containsNonJsonValue(item, ancestors));
|
|
197
|
+
} finally {
|
|
198
|
+
ancestors.delete(value);
|
|
199
|
+
}
|
|
185
200
|
}
|
|
186
201
|
function appendToolResultParts(parts, toolName, outputValue, toolCallId, includeFunctionCallIds = true, supportedUrls = {}) {
|
|
187
202
|
const functionResponseParts = [];
|
|
@@ -422,7 +437,7 @@ function convertToGoogleMessages(prompt, options) {
|
|
|
422
437
|
functionCall: {
|
|
423
438
|
...includeFunctionCallIds && part.toolCallId != null ? { id: part.toolCallId } : {},
|
|
424
439
|
name: part.toolName,
|
|
425
|
-
args: part.input
|
|
440
|
+
args: parseToolCallInput(part.input)
|
|
426
441
|
},
|
|
427
442
|
thoughtSignature: effectiveThoughtSignature
|
|
428
443
|
};
|
|
@@ -510,6 +525,14 @@ function convertToGoogleMessages(prompt, options) {
|
|
|
510
525
|
contents
|
|
511
526
|
};
|
|
512
527
|
}
|
|
528
|
+
function parseToolCallInput(input) {
|
|
529
|
+
if (typeof input !== "string") return input;
|
|
530
|
+
try {
|
|
531
|
+
return secureJsonParse(input);
|
|
532
|
+
} catch {
|
|
533
|
+
return input;
|
|
534
|
+
}
|
|
535
|
+
}
|
|
513
536
|
//#endregion
|
|
514
537
|
//#region src/download-tool-result-files.ts
|
|
515
538
|
/**
|
|
@@ -618,6 +641,27 @@ const googleFailedResponseHandler = createJsonErrorResponseHandler({
|
|
|
618
641
|
errorSchema: googleErrorDataSchema,
|
|
619
642
|
errorToMessage: (data) => data.error.message
|
|
620
643
|
});
|
|
644
|
+
function mapGoogleErrorStatusToHttpStatusCode(status) {
|
|
645
|
+
switch (status) {
|
|
646
|
+
case "CANCELLED": return 499;
|
|
647
|
+
case "INVALID_ARGUMENT":
|
|
648
|
+
case "FAILED_PRECONDITION":
|
|
649
|
+
case "OUT_OF_RANGE": return 400;
|
|
650
|
+
case "DEADLINE_EXCEEDED": return 504;
|
|
651
|
+
case "NOT_FOUND": return 404;
|
|
652
|
+
case "ALREADY_EXISTS":
|
|
653
|
+
case "ABORTED": return 409;
|
|
654
|
+
case "PERMISSION_DENIED": return 403;
|
|
655
|
+
case "UNAUTHENTICATED": return 401;
|
|
656
|
+
case "RESOURCE_EXHAUSTED": return 429;
|
|
657
|
+
case "UNIMPLEMENTED": return 501;
|
|
658
|
+
case "UNKNOWN":
|
|
659
|
+
case "INTERNAL":
|
|
660
|
+
case "DATA_LOSS": return 500;
|
|
661
|
+
case "UNAVAILABLE": return 503;
|
|
662
|
+
default: return;
|
|
663
|
+
}
|
|
664
|
+
}
|
|
621
665
|
//#endregion
|
|
622
666
|
//#region src/sanitize-response-json-schema.ts
|
|
623
667
|
/**
|
|
@@ -2034,14 +2078,15 @@ var GoogleLanguageModel = class GoogleLanguageModel {
|
|
|
2034
2078
|
raw: void 0
|
|
2035
2079
|
};
|
|
2036
2080
|
const error = value.error;
|
|
2081
|
+
const statusCode = error.code ?? mapGoogleErrorStatusToHttpStatusCode(error.status);
|
|
2037
2082
|
controller.enqueue({
|
|
2038
2083
|
type: "error",
|
|
2039
2084
|
error: createProviderStreamError({
|
|
2040
2085
|
message: error.message,
|
|
2041
2086
|
type: error.status,
|
|
2042
2087
|
code: error.code ?? void 0,
|
|
2043
|
-
statusCode
|
|
2044
|
-
isRetryable:
|
|
2088
|
+
statusCode,
|
|
2089
|
+
isRetryable: statusCode != null && (statusCode === 408 || statusCode === 409 || statusCode === 429 || statusCode >= 500),
|
|
2045
2090
|
data: error
|
|
2046
2091
|
})
|
|
2047
2092
|
});
|
|
@@ -5083,7 +5128,7 @@ async function pollGoogleInteractionUntilTerminal({ baseURL, interactionId, head
|
|
|
5083
5128
|
* `toolChoice` shapes:
|
|
5084
5129
|
* - `'auto'` -> `'auto'`
|
|
5085
5130
|
* - `'required'` -> `'any'`
|
|
5086
|
-
* - `'none'` -> `
|
|
5131
|
+
* - `'none'` -> omit all tools and `tool_choice`
|
|
5087
5132
|
* - `{ type: 'tool', toolName }` -> `{ allowed_tools: { mode: 'validated', tools: [name] } }`
|
|
5088
5133
|
* (Interactions `AllowedTools.tools` is an `Array<string>` of function
|
|
5089
5134
|
* names, not tool descriptors -- see `src/interactions/resources/interactions.ts`
|
|
@@ -5091,6 +5136,11 @@ async function pollGoogleInteractionUntilTerminal({ baseURL, interactionId, head
|
|
|
5091
5136
|
*/
|
|
5092
5137
|
function prepareGoogleInteractionsTools({ tools, toolChoice }) {
|
|
5093
5138
|
const toolWarnings = [];
|
|
5139
|
+
if (toolChoice?.type === "none") return {
|
|
5140
|
+
tools: void 0,
|
|
5141
|
+
toolChoice: void 0,
|
|
5142
|
+
toolWarnings
|
|
5143
|
+
};
|
|
5094
5144
|
const normalized = tools?.length ? tools : void 0;
|
|
5095
5145
|
if (normalized == null) return {
|
|
5096
5146
|
tools: void 0,
|
|
@@ -5196,9 +5246,6 @@ function prepareGoogleInteractionsTools({ tools, toolChoice }) {
|
|
|
5196
5246
|
case "required":
|
|
5197
5247
|
mappedToolChoice = "any";
|
|
5198
5248
|
break;
|
|
5199
|
-
case "none":
|
|
5200
|
-
mappedToolChoice = "none";
|
|
5201
|
-
break;
|
|
5202
5249
|
case "tool": mappedToolChoice = { allowed_tools: {
|
|
5203
5250
|
mode: "validated",
|
|
5204
5251
|
tools: [toolChoice.toolName]
|