@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
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @ai-sdk/google
|
|
2
2
|
|
|
3
|
+
## 4.0.111
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a32df11: Omit all Google Interactions tools when `toolChoice` is `none`, including provider-defined tools.
|
|
8
|
+
- Updated dependencies [fa15312]
|
|
9
|
+
- @ai-sdk/provider-utils@5.0.74
|
|
10
|
+
|
|
11
|
+
## 4.0.110
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 4ae6986: fix(google): handle cycles and BigInt in functionResponse and parse string functionCall arguments
|
|
16
|
+
- 8ad7873: Map Google RPC status names to HTTP status codes when streamed errors omit a numeric code, so transient failures such as `UNAVAILABLE` and `RESOURCE_EXHAUSTED` are marked retryable.
|
|
17
|
+
- Updated dependencies [51ca5b7]
|
|
18
|
+
- Updated dependencies [dc6f1c3]
|
|
19
|
+
- Updated dependencies [4ae6986]
|
|
20
|
+
- @ai-sdk/provider-utils@5.0.73
|
|
21
|
+
|
|
3
22
|
## 4.0.109
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["DecisionModelV4","BatchV4","SpeechTranslationModelV4","RealtimeFactoryV4","RealtimeModelV4ClientSecretOptions","RealtimeModelV4ClientSecretResult","RealtimeModelV4ServerEvent","RealtimeModelV4ClientEvent","RealtimeModelV4","RealtimeModelV4SessionConfig","TranscriptionModelV4StreamOptions","SpeechTranslationModelV4StreamOptions","SpeechTranslationModelV4"],"sources":["../src/google-error.ts","../src/google-language-model-options.ts","../src/google-language-model.ts","../src/google-prompt.ts","../src/tool/google-search.ts","../src/google-image-model-options.ts","../src/google-embedding-model-options.ts","../src/google-video-model-options.ts","../src/google-video-settings.ts","../src/google-speech-model-options.ts","../src/google-files.ts","../src/interactions/google-interactions-language-model-options.ts","../src/interactions/google-interactions-provider-metadata.ts","../src/interactions/google-interactions-agent.ts","../src/google-tools.ts","../src/google-image-settings.ts","../src/transcription/google-transcription-model-options.ts","../src/speech-translation/google-speech-translation-model-options.ts","../src/google-provider.ts","../src/realtime/google-realtime-model.ts","../src/realtime/google-realtime-model-options.ts","../src/transcription/google-transcription-model.ts","../src/speech-translation/google-speech-translation-model.ts","../src/version.ts"],"mappings":";;;;cAgBM,wDAAqB;;;;;;;;KAQf,kBAAkB,mBAAmB;;;KCjBrC;cAqDC,6DAA0B;;;;;;;;;;;;;;;WAA1B;;;;;;;;;;;;;;;;;;;;;;;;KA+OD,6BAA6B,mBAChC;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["DecisionModelV4","BatchV4","SpeechTranslationModelV4","RealtimeFactoryV4","RealtimeModelV4ClientSecretOptions","RealtimeModelV4ClientSecretResult","RealtimeModelV4ServerEvent","RealtimeModelV4ClientEvent","RealtimeModelV4","RealtimeModelV4SessionConfig","TranscriptionModelV4StreamOptions","SpeechTranslationModelV4StreamOptions","SpeechTranslationModelV4"],"sources":["../src/google-error.ts","../src/google-language-model-options.ts","../src/google-language-model.ts","../src/google-prompt.ts","../src/tool/google-search.ts","../src/google-image-model-options.ts","../src/google-embedding-model-options.ts","../src/google-video-model-options.ts","../src/google-video-settings.ts","../src/google-speech-model-options.ts","../src/google-files.ts","../src/interactions/google-interactions-language-model-options.ts","../src/interactions/google-interactions-provider-metadata.ts","../src/interactions/google-interactions-agent.ts","../src/google-tools.ts","../src/google-image-settings.ts","../src/transcription/google-transcription-model-options.ts","../src/speech-translation/google-speech-translation-model-options.ts","../src/google-provider.ts","../src/realtime/google-realtime-model.ts","../src/realtime/google-realtime-model-options.ts","../src/transcription/google-transcription-model.ts","../src/speech-translation/google-speech-translation-model.ts","../src/version.ts"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { EXPERIMENTAL_EMBEDDING_MODEL_PROVIDER_OPTIONS_TRANSFORMER, WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, combineHeaders, connectToWebSocket, convertAsyncIteratorToReadableStream, convertBase64ToUint8Array, convertInlineFileDataToUint8Array, convertJsonResponseToolStream, convertToBase64, convertUint8ArrayToBase64, createEventSourceResponseHandler, createJsonErrorResponseHandler, createJsonLinesResponseHandler, createJsonResponseHandler, createNullLanguageModelUsage, createProviderExecutedToolFactory, createProviderStreamError, createToolNameMapping, delay, detectMediaType, downloadBlob, encodePathSegment, generateId, getFromApi, getRuntimeEnvironmentUserAgent, getTopLevelMediaType, isAbortError, isCustomReasoning, isFullMediaType, isRecord, isSameOrigin, isUrlSupported, lazySchema, loadApiKey, mapReasoningToProviderBudget, mapReasoningToProviderEffort, normalizeBatchRequestCounts, parseProviderOptions, postJsonToApi, postToApi, resolve, resolveFullMediaType, resolveProviderReference, resolveWith, safeParseJSON, safeValidateTypes, secureJsonParse, serializeModelOptions, waitForWebSocketBufferDrain, withUserAgentSuffix, withoutTrailingSlash, zodSchema } from "@ai-sdk/provider-utils";
|
|
1
|
+
import { EXPERIMENTAL_EMBEDDING_MODEL_PROVIDER_OPTIONS_TRANSFORMER, WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, combineHeaders, connectToWebSocket, convertAsyncIteratorToReadableStream, convertBase64ToUint8Array, convertInlineFileDataToUint8Array, convertJsonResponseToolStream, convertToBase64, convertUint8ArrayToBase64, createEventSourceResponseHandler, createJsonErrorResponseHandler, createJsonLinesResponseHandler, createJsonResponseHandler, createNullLanguageModelUsage, createProviderExecutedToolFactory, createProviderStreamError, createToolNameMapping, delay, detectMediaType, downloadBlob, encodePathSegment, generateId, getFromApi, getRuntimeEnvironmentUserAgent, getTopLevelMediaType, isAbortError, isCustomReasoning, isFullMediaType, isRecord, isSameOrigin, isUrlSupported, lazySchema, loadApiKey, mapReasoningToProviderBudget, mapReasoningToProviderEffort, normalizeBatchRequestCounts, parseProviderOptions, postJsonToApi, postToApi, resolve, resolveFullMediaType, resolveProviderReference, resolveWith, safeParseJSON, safeValidateTypes, secureJsonParse, serializeModelOptions, stringifyWithBigIntAndCycles, waitForWebSocketBufferDrain, withUserAgentSuffix, withoutTrailingSlash, zodSchema } from "@ai-sdk/provider-utils";
|
|
2
2
|
import { Experimental_DecisionLanguageModel } from "@ai-sdk/provider-utils/experimental-decision";
|
|
3
3
|
import { AISDKError, InvalidArgumentError, InvalidResponseDataError, TooManyEmbeddingValuesForCallError, UnsupportedFunctionalityError } from "@ai-sdk/provider";
|
|
4
4
|
import { z } from "zod/v4";
|
|
5
5
|
//#region src/version.ts
|
|
6
|
-
const VERSION = "4.0.
|
|
6
|
+
const VERSION = "4.0.111";
|
|
7
7
|
//#endregion
|
|
8
8
|
//#region src/google-error.ts
|
|
9
9
|
const getGoogleErrorSchema = () => z.object({
|
|
@@ -17,6 +17,27 @@ const googleFailedResponseHandler = createJsonErrorResponseHandler({
|
|
|
17
17
|
errorSchema: googleErrorDataSchema,
|
|
18
18
|
errorToMessage: (data) => data.error.message
|
|
19
19
|
});
|
|
20
|
+
function mapGoogleErrorStatusToHttpStatusCode(status) {
|
|
21
|
+
switch (status) {
|
|
22
|
+
case "CANCELLED": return 499;
|
|
23
|
+
case "INVALID_ARGUMENT":
|
|
24
|
+
case "FAILED_PRECONDITION":
|
|
25
|
+
case "OUT_OF_RANGE": return 400;
|
|
26
|
+
case "DEADLINE_EXCEEDED": return 504;
|
|
27
|
+
case "NOT_FOUND": return 404;
|
|
28
|
+
case "ALREADY_EXISTS":
|
|
29
|
+
case "ABORTED": return 409;
|
|
30
|
+
case "PERMISSION_DENIED": return 403;
|
|
31
|
+
case "UNAUTHENTICATED": return 401;
|
|
32
|
+
case "RESOURCE_EXHAUSTED": return 429;
|
|
33
|
+
case "UNIMPLEMENTED": return 501;
|
|
34
|
+
case "UNKNOWN":
|
|
35
|
+
case "INTERNAL":
|
|
36
|
+
case "DATA_LOSS": return 500;
|
|
37
|
+
case "UNAVAILABLE": return 503;
|
|
38
|
+
default: return;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
20
41
|
//#endregion
|
|
21
42
|
//#region src/google-embedding-model-options.ts
|
|
22
43
|
const googleEmbeddingContentPartSchema = () => z.union([
|
|
@@ -369,13 +390,28 @@ function convertUrlToolResultPart(url) {
|
|
|
369
390
|
data: parsedDataUrl.data
|
|
370
391
|
} };
|
|
371
392
|
}
|
|
372
|
-
function containsJSONSchemaReference(value) {
|
|
373
|
-
if (
|
|
374
|
-
if (
|
|
375
|
-
|
|
393
|
+
function containsJSONSchemaReference(value, seen = /* @__PURE__ */ new WeakSet()) {
|
|
394
|
+
if (value === null || typeof value !== "object") return false;
|
|
395
|
+
if (seen.has(value)) return false;
|
|
396
|
+
seen.add(value);
|
|
397
|
+
if (Array.isArray(value)) return value.some((item) => containsJSONSchemaReference(item, seen));
|
|
398
|
+
return Object.entries(value).some(([key, nestedValue]) => key === "$ref" || containsJSONSchemaReference(nestedValue, seen));
|
|
376
399
|
}
|
|
377
400
|
function serializeFunctionResponseContent(value) {
|
|
378
|
-
|
|
401
|
+
if (containsJSONSchemaReference(value)) return stringifyWithBigIntAndCycles(value);
|
|
402
|
+
return containsNonJsonValue(value) ? secureJsonParse(stringifyWithBigIntAndCycles(value)) : value;
|
|
403
|
+
}
|
|
404
|
+
function containsNonJsonValue(value, ancestors = /* @__PURE__ */ new Set()) {
|
|
405
|
+
if (typeof value === "bigint") return true;
|
|
406
|
+
if (typeof value !== "object" || value === null) return false;
|
|
407
|
+
if (typeof value.toJSON === "function") return true;
|
|
408
|
+
if (ancestors.has(value)) return true;
|
|
409
|
+
ancestors.add(value);
|
|
410
|
+
try {
|
|
411
|
+
return Object.values(value).some((item) => containsNonJsonValue(item, ancestors));
|
|
412
|
+
} finally {
|
|
413
|
+
ancestors.delete(value);
|
|
414
|
+
}
|
|
379
415
|
}
|
|
380
416
|
function appendToolResultParts(parts, toolName, outputValue, toolCallId, includeFunctionCallIds = true, supportedUrls = {}) {
|
|
381
417
|
const functionResponseParts = [];
|
|
@@ -616,7 +652,7 @@ function convertToGoogleMessages(prompt, options) {
|
|
|
616
652
|
functionCall: {
|
|
617
653
|
...includeFunctionCallIds && part.toolCallId != null ? { id: part.toolCallId } : {},
|
|
618
654
|
name: part.toolName,
|
|
619
|
-
args: part.input
|
|
655
|
+
args: parseToolCallInput(part.input)
|
|
620
656
|
},
|
|
621
657
|
thoughtSignature: effectiveThoughtSignature
|
|
622
658
|
};
|
|
@@ -704,6 +740,14 @@ function convertToGoogleMessages(prompt, options) {
|
|
|
704
740
|
contents
|
|
705
741
|
};
|
|
706
742
|
}
|
|
743
|
+
function parseToolCallInput(input) {
|
|
744
|
+
if (typeof input !== "string") return input;
|
|
745
|
+
try {
|
|
746
|
+
return secureJsonParse(input);
|
|
747
|
+
} catch {
|
|
748
|
+
return input;
|
|
749
|
+
}
|
|
750
|
+
}
|
|
707
751
|
//#endregion
|
|
708
752
|
//#region src/download-tool-result-files.ts
|
|
709
753
|
/**
|
|
@@ -2210,14 +2254,15 @@ var GoogleLanguageModel = class GoogleLanguageModel {
|
|
|
2210
2254
|
raw: void 0
|
|
2211
2255
|
};
|
|
2212
2256
|
const error = value.error;
|
|
2257
|
+
const statusCode = error.code ?? mapGoogleErrorStatusToHttpStatusCode(error.status);
|
|
2213
2258
|
controller.enqueue({
|
|
2214
2259
|
type: "error",
|
|
2215
2260
|
error: createProviderStreamError({
|
|
2216
2261
|
message: error.message,
|
|
2217
2262
|
type: error.status,
|
|
2218
2263
|
code: error.code ?? void 0,
|
|
2219
|
-
statusCode
|
|
2220
|
-
isRetryable:
|
|
2264
|
+
statusCode,
|
|
2265
|
+
isRetryable: statusCode != null && (statusCode === 408 || statusCode === 409 || statusCode === 429 || statusCode >= 500),
|
|
2221
2266
|
data: error
|
|
2222
2267
|
})
|
|
2223
2268
|
});
|
|
@@ -6357,7 +6402,7 @@ async function pollGoogleInteractionUntilTerminal({ baseURL, interactionId, head
|
|
|
6357
6402
|
* `toolChoice` shapes:
|
|
6358
6403
|
* - `'auto'` -> `'auto'`
|
|
6359
6404
|
* - `'required'` -> `'any'`
|
|
6360
|
-
* - `'none'` -> `
|
|
6405
|
+
* - `'none'` -> omit all tools and `tool_choice`
|
|
6361
6406
|
* - `{ type: 'tool', toolName }` -> `{ allowed_tools: { mode: 'validated', tools: [name] } }`
|
|
6362
6407
|
* (Interactions `AllowedTools.tools` is an `Array<string>` of function
|
|
6363
6408
|
* names, not tool descriptors -- see `src/interactions/resources/interactions.ts`
|
|
@@ -6365,6 +6410,11 @@ async function pollGoogleInteractionUntilTerminal({ baseURL, interactionId, head
|
|
|
6365
6410
|
*/
|
|
6366
6411
|
function prepareGoogleInteractionsTools({ tools, toolChoice }) {
|
|
6367
6412
|
const toolWarnings = [];
|
|
6413
|
+
if (toolChoice?.type === "none") return {
|
|
6414
|
+
tools: void 0,
|
|
6415
|
+
toolChoice: void 0,
|
|
6416
|
+
toolWarnings
|
|
6417
|
+
};
|
|
6368
6418
|
const normalized = tools?.length ? tools : void 0;
|
|
6369
6419
|
if (normalized == null) return {
|
|
6370
6420
|
tools: void 0,
|
|
@@ -6470,9 +6520,6 @@ function prepareGoogleInteractionsTools({ tools, toolChoice }) {
|
|
|
6470
6520
|
case "required":
|
|
6471
6521
|
mappedToolChoice = "any";
|
|
6472
6522
|
break;
|
|
6473
|
-
case "none":
|
|
6474
|
-
mappedToolChoice = "none";
|
|
6475
|
-
break;
|
|
6476
6523
|
case "tool": mappedToolChoice = { allowed_tools: {
|
|
6477
6524
|
mode: "validated",
|
|
6478
6525
|
tools: [toolChoice.toolName]
|