@ai-sdk/provider-utils 5.0.0-beta.2 → 5.0.0-beta.21
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 +226 -0
- package/dist/index.d.ts +433 -174
- package/dist/index.js +322 -284
- package/dist/index.js.map +1 -1
- package/dist/test/index.js +2 -35
- package/dist/test/index.js.map +1 -1
- package/package.json +8 -10
- package/src/convert-image-model-file-to-data-uri.ts +3 -3
- package/src/create-tool-name-mapping.ts +5 -21
- package/src/get-error-message.ts +1 -15
- package/src/has-required-key.ts +6 -0
- package/src/index.ts +17 -7
- package/src/inject-json-instruction.ts +5 -5
- package/src/is-json-serializable.ts +29 -0
- package/src/is-provider-reference.ts +18 -0
- package/src/load-api-key.ts +1 -1
- package/src/load-setting.ts +1 -1
- package/src/map-reasoning-to-provider.ts +105 -0
- package/src/provider-tool-factory.ts +43 -32
- package/src/resolve-provider-reference.ts +27 -0
- package/src/resolve.ts +15 -0
- package/src/response-handler.ts +1 -1
- package/src/secure-json-parse.ts +1 -1
- package/src/serialize-model-options.ts +63 -0
- package/src/to-json-schema/zod3-to-json-schema/parsers/date.ts +1 -1
- package/src/to-json-schema/zod3-to-json-schema/parsers/intersection.ts +1 -1
- package/src/to-json-schema/zod3-to-json-schema/parsers/record.ts +2 -2
- package/src/types/assistant-model-message.ts +4 -0
- package/src/types/content-part.ts +98 -14
- package/src/types/context.ts +4 -0
- package/src/types/executable-tool.ts +17 -0
- package/src/types/execute-tool.ts +28 -9
- package/src/types/index.ts +11 -9
- package/src/types/infer-tool-context.ts +12 -0
- package/src/types/infer-tool-input.ts +7 -0
- package/src/types/infer-tool-output.ts +7 -0
- package/src/types/infer-tool-set-context.ts +17 -0
- package/src/types/provider-options.ts +2 -2
- package/src/types/provider-reference.ts +10 -0
- package/src/types/tool-set.ts +22 -0
- package/src/types/tool.ts +74 -40
- package/src/types/union-to-intersection.ts +17 -0
- package/src/validate-download-url.ts +7 -2
- package/dist/index.d.mts +0 -1433
- package/dist/index.mjs +0 -2759
- package/dist/index.mjs.map +0 -1
- package/dist/test/index.d.mts +0 -17
- package/dist/test/index.mjs +0 -77
- package/dist/test/index.mjs.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,99 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name2 in all)
|
|
10
|
-
__defProp(target, name2, { get: all[name2], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
|
|
30
|
-
// src/index.ts
|
|
31
|
-
var index_exports = {};
|
|
32
|
-
__export(index_exports, {
|
|
33
|
-
DEFAULT_MAX_DOWNLOAD_SIZE: () => DEFAULT_MAX_DOWNLOAD_SIZE,
|
|
34
|
-
DelayedPromise: () => DelayedPromise,
|
|
35
|
-
DownloadError: () => DownloadError,
|
|
36
|
-
EventSourceParserStream: () => import_stream2.EventSourceParserStream,
|
|
37
|
-
VERSION: () => VERSION,
|
|
38
|
-
asSchema: () => asSchema,
|
|
39
|
-
combineHeaders: () => combineHeaders,
|
|
40
|
-
convertAsyncIteratorToReadableStream: () => convertAsyncIteratorToReadableStream,
|
|
41
|
-
convertBase64ToUint8Array: () => convertBase64ToUint8Array,
|
|
42
|
-
convertImageModelFileToDataUri: () => convertImageModelFileToDataUri,
|
|
43
|
-
convertToBase64: () => convertToBase64,
|
|
44
|
-
convertToFormData: () => convertToFormData,
|
|
45
|
-
convertUint8ArrayToBase64: () => convertUint8ArrayToBase64,
|
|
46
|
-
createBinaryResponseHandler: () => createBinaryResponseHandler,
|
|
47
|
-
createEventSourceResponseHandler: () => createEventSourceResponseHandler,
|
|
48
|
-
createIdGenerator: () => createIdGenerator,
|
|
49
|
-
createJsonErrorResponseHandler: () => createJsonErrorResponseHandler,
|
|
50
|
-
createJsonResponseHandler: () => createJsonResponseHandler,
|
|
51
|
-
createProviderToolFactory: () => createProviderToolFactory,
|
|
52
|
-
createProviderToolFactoryWithOutputSchema: () => createProviderToolFactoryWithOutputSchema,
|
|
53
|
-
createStatusCodeErrorResponseHandler: () => createStatusCodeErrorResponseHandler,
|
|
54
|
-
createToolNameMapping: () => createToolNameMapping,
|
|
55
|
-
delay: () => delay,
|
|
56
|
-
downloadBlob: () => downloadBlob,
|
|
57
|
-
dynamicTool: () => dynamicTool,
|
|
58
|
-
executeTool: () => executeTool,
|
|
59
|
-
extractResponseHeaders: () => extractResponseHeaders,
|
|
60
|
-
generateId: () => generateId,
|
|
61
|
-
getErrorMessage: () => getErrorMessage,
|
|
62
|
-
getFromApi: () => getFromApi,
|
|
63
|
-
getRuntimeEnvironmentUserAgent: () => getRuntimeEnvironmentUserAgent,
|
|
64
|
-
injectJsonInstructionIntoMessages: () => injectJsonInstructionIntoMessages,
|
|
65
|
-
isAbortError: () => isAbortError,
|
|
66
|
-
isNonNullable: () => isNonNullable,
|
|
67
|
-
isParsableJson: () => isParsableJson,
|
|
68
|
-
isUrlSupported: () => isUrlSupported,
|
|
69
|
-
jsonSchema: () => jsonSchema,
|
|
70
|
-
lazySchema: () => lazySchema,
|
|
71
|
-
loadApiKey: () => loadApiKey,
|
|
72
|
-
loadOptionalSetting: () => loadOptionalSetting,
|
|
73
|
-
loadSetting: () => loadSetting,
|
|
74
|
-
mediaTypeToExtension: () => mediaTypeToExtension,
|
|
75
|
-
normalizeHeaders: () => normalizeHeaders,
|
|
76
|
-
parseJSON: () => parseJSON,
|
|
77
|
-
parseJsonEventStream: () => parseJsonEventStream,
|
|
78
|
-
parseProviderOptions: () => parseProviderOptions,
|
|
79
|
-
postFormDataToApi: () => postFormDataToApi,
|
|
80
|
-
postJsonToApi: () => postJsonToApi,
|
|
81
|
-
postToApi: () => postToApi,
|
|
82
|
-
readResponseWithSizeLimit: () => readResponseWithSizeLimit,
|
|
83
|
-
removeUndefinedEntries: () => removeUndefinedEntries,
|
|
84
|
-
resolve: () => resolve,
|
|
85
|
-
safeParseJSON: () => safeParseJSON,
|
|
86
|
-
safeValidateTypes: () => safeValidateTypes,
|
|
87
|
-
stripFileExtension: () => stripFileExtension,
|
|
88
|
-
tool: () => tool,
|
|
89
|
-
validateDownloadUrl: () => validateDownloadUrl,
|
|
90
|
-
validateTypes: () => validateTypes,
|
|
91
|
-
withUserAgentSuffix: () => withUserAgentSuffix,
|
|
92
|
-
withoutTrailingSlash: () => withoutTrailingSlash,
|
|
93
|
-
zodSchema: () => zodSchema
|
|
94
|
-
});
|
|
95
|
-
module.exports = __toCommonJS(index_exports);
|
|
96
|
-
|
|
97
1
|
// src/combine-headers.ts
|
|
98
2
|
function combineHeaders(...headers) {
|
|
99
3
|
return headers.reduce(
|
|
@@ -143,33 +47,76 @@ function convertAsyncIteratorToReadableStream(iterator) {
|
|
|
143
47
|
});
|
|
144
48
|
}
|
|
145
49
|
|
|
50
|
+
// src/uint8-utils.ts
|
|
51
|
+
var { btoa, atob } = globalThis;
|
|
52
|
+
function convertBase64ToUint8Array(base64String) {
|
|
53
|
+
const base64Url = base64String.replace(/-/g, "+").replace(/_/g, "/");
|
|
54
|
+
const latin1string = atob(base64Url);
|
|
55
|
+
return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0));
|
|
56
|
+
}
|
|
57
|
+
function convertUint8ArrayToBase64(array) {
|
|
58
|
+
let latin1string = "";
|
|
59
|
+
for (let i = 0; i < array.length; i++) {
|
|
60
|
+
latin1string += String.fromCodePoint(array[i]);
|
|
61
|
+
}
|
|
62
|
+
return btoa(latin1string);
|
|
63
|
+
}
|
|
64
|
+
function convertToBase64(value) {
|
|
65
|
+
return value instanceof Uint8Array ? convertUint8ArrayToBase64(value) : value;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// src/convert-image-model-file-to-data-uri.ts
|
|
69
|
+
function convertImageModelFileToDataUri(file) {
|
|
70
|
+
if (file.type === "url") return file.url;
|
|
71
|
+
return `data:${file.mediaType};base64,${typeof file.data === "string" ? file.data : convertUint8ArrayToBase64(file.data)}`;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// src/convert-to-form-data.ts
|
|
75
|
+
function convertToFormData(input, options = {}) {
|
|
76
|
+
const { useArrayBrackets = true } = options;
|
|
77
|
+
const formData = new FormData();
|
|
78
|
+
for (const [key, value] of Object.entries(input)) {
|
|
79
|
+
if (value == null) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (Array.isArray(value)) {
|
|
83
|
+
if (value.length === 1) {
|
|
84
|
+
formData.append(key, value[0]);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const arrayKey = useArrayBrackets ? `${key}[]` : key;
|
|
88
|
+
for (const item of value) {
|
|
89
|
+
formData.append(arrayKey, item);
|
|
90
|
+
}
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
formData.append(key, value);
|
|
94
|
+
}
|
|
95
|
+
return formData;
|
|
96
|
+
}
|
|
97
|
+
|
|
146
98
|
// src/create-tool-name-mapping.ts
|
|
147
99
|
function createToolNameMapping({
|
|
148
100
|
tools = [],
|
|
149
|
-
providerToolNames
|
|
150
|
-
resolveProviderToolName
|
|
101
|
+
providerToolNames
|
|
151
102
|
}) {
|
|
152
|
-
var _a2;
|
|
153
103
|
const customToolNameToProviderToolName = {};
|
|
154
104
|
const providerToolNameToCustomToolName = {};
|
|
155
105
|
for (const tool2 of tools) {
|
|
156
|
-
if (tool2.type === "provider") {
|
|
157
|
-
const providerToolName =
|
|
158
|
-
if (providerToolName == null) {
|
|
159
|
-
continue;
|
|
160
|
-
}
|
|
106
|
+
if (tool2.type === "provider" && tool2.id in providerToolNames) {
|
|
107
|
+
const providerToolName = providerToolNames[tool2.id];
|
|
161
108
|
customToolNameToProviderToolName[tool2.name] = providerToolName;
|
|
162
109
|
providerToolNameToCustomToolName[providerToolName] = tool2.name;
|
|
163
110
|
}
|
|
164
111
|
}
|
|
165
112
|
return {
|
|
166
113
|
toProviderToolName: (customToolName) => {
|
|
167
|
-
var
|
|
168
|
-
return (
|
|
114
|
+
var _a2;
|
|
115
|
+
return (_a2 = customToolNameToProviderToolName[customToolName]) != null ? _a2 : customToolName;
|
|
169
116
|
},
|
|
170
117
|
toCustomToolName: (providerToolName) => {
|
|
171
|
-
var
|
|
172
|
-
return (
|
|
118
|
+
var _a2;
|
|
119
|
+
return (_a2 = providerToolNameToCustomToolName[providerToolName]) != null ? _a2 : providerToolName;
|
|
173
120
|
}
|
|
174
121
|
};
|
|
175
122
|
}
|
|
@@ -251,66 +198,13 @@ var DelayedPromise = class {
|
|
|
251
198
|
}
|
|
252
199
|
};
|
|
253
200
|
|
|
254
|
-
// src/extract-response-headers.ts
|
|
255
|
-
function extractResponseHeaders(response) {
|
|
256
|
-
return Object.fromEntries([...response.headers]);
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
// src/uint8-utils.ts
|
|
260
|
-
var { btoa, atob } = globalThis;
|
|
261
|
-
function convertBase64ToUint8Array(base64String) {
|
|
262
|
-
const base64Url = base64String.replace(/-/g, "+").replace(/_/g, "/");
|
|
263
|
-
const latin1string = atob(base64Url);
|
|
264
|
-
return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0));
|
|
265
|
-
}
|
|
266
|
-
function convertUint8ArrayToBase64(array) {
|
|
267
|
-
let latin1string = "";
|
|
268
|
-
for (let i = 0; i < array.length; i++) {
|
|
269
|
-
latin1string += String.fromCodePoint(array[i]);
|
|
270
|
-
}
|
|
271
|
-
return btoa(latin1string);
|
|
272
|
-
}
|
|
273
|
-
function convertToBase64(value) {
|
|
274
|
-
return value instanceof Uint8Array ? convertUint8ArrayToBase64(value) : value;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
// src/convert-image-model-file-to-data-uri.ts
|
|
278
|
-
function convertImageModelFileToDataUri(file) {
|
|
279
|
-
if (file.type === "url") return file.url;
|
|
280
|
-
return `data:${file.mediaType};base64,${typeof file.data === "string" ? file.data : convertUint8ArrayToBase64(file.data)}`;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
// src/convert-to-form-data.ts
|
|
284
|
-
function convertToFormData(input, options = {}) {
|
|
285
|
-
const { useArrayBrackets = true } = options;
|
|
286
|
-
const formData = new FormData();
|
|
287
|
-
for (const [key, value] of Object.entries(input)) {
|
|
288
|
-
if (value == null) {
|
|
289
|
-
continue;
|
|
290
|
-
}
|
|
291
|
-
if (Array.isArray(value)) {
|
|
292
|
-
if (value.length === 1) {
|
|
293
|
-
formData.append(key, value[0]);
|
|
294
|
-
continue;
|
|
295
|
-
}
|
|
296
|
-
const arrayKey = useArrayBrackets ? `${key}[]` : key;
|
|
297
|
-
for (const item of value) {
|
|
298
|
-
formData.append(arrayKey, item);
|
|
299
|
-
}
|
|
300
|
-
continue;
|
|
301
|
-
}
|
|
302
|
-
formData.append(key, value);
|
|
303
|
-
}
|
|
304
|
-
return formData;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
201
|
// src/download-error.ts
|
|
308
|
-
|
|
202
|
+
import { AISDKError } from "@ai-sdk/provider";
|
|
309
203
|
var name = "AI_DownloadError";
|
|
310
204
|
var marker = `vercel.ai.error.${name}`;
|
|
311
205
|
var symbol = Symbol.for(marker);
|
|
312
206
|
var _a, _b;
|
|
313
|
-
var DownloadError = class extends (_b =
|
|
207
|
+
var DownloadError = class extends (_b = AISDKError, _a = symbol, _b) {
|
|
314
208
|
constructor({
|
|
315
209
|
url,
|
|
316
210
|
statusCode,
|
|
@@ -325,7 +219,7 @@ var DownloadError = class extends (_b = import_provider.AISDKError, _a = symbol,
|
|
|
325
219
|
this.statusText = statusText;
|
|
326
220
|
}
|
|
327
221
|
static isInstance(error) {
|
|
328
|
-
return
|
|
222
|
+
return AISDKError.hasMarker(error, marker);
|
|
329
223
|
}
|
|
330
224
|
};
|
|
331
225
|
|
|
@@ -395,10 +289,13 @@ function validateDownloadUrl(url) {
|
|
|
395
289
|
message: `Invalid URL: ${url}`
|
|
396
290
|
});
|
|
397
291
|
}
|
|
292
|
+
if (parsed.protocol === "data:") {
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
398
295
|
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
399
296
|
throw new DownloadError({
|
|
400
297
|
url,
|
|
401
|
-
message: `URL scheme must be http or
|
|
298
|
+
message: `URL scheme must be http, https, or data, got ${parsed.protocol}`
|
|
402
299
|
});
|
|
403
300
|
}
|
|
404
301
|
const hostname = parsed.hostname;
|
|
@@ -513,8 +410,13 @@ async function downloadBlob(url, options) {
|
|
|
513
410
|
}
|
|
514
411
|
}
|
|
515
412
|
|
|
413
|
+
// src/extract-response-headers.ts
|
|
414
|
+
function extractResponseHeaders(response) {
|
|
415
|
+
return Object.fromEntries([...response.headers]);
|
|
416
|
+
}
|
|
417
|
+
|
|
516
418
|
// src/generate-id.ts
|
|
517
|
-
|
|
419
|
+
import { InvalidArgumentError } from "@ai-sdk/provider";
|
|
518
420
|
var createIdGenerator = ({
|
|
519
421
|
prefix,
|
|
520
422
|
size = 16,
|
|
@@ -533,7 +435,7 @@ var createIdGenerator = ({
|
|
|
533
435
|
return generator;
|
|
534
436
|
}
|
|
535
437
|
if (alphabet.includes(separator)) {
|
|
536
|
-
throw new
|
|
438
|
+
throw new InvalidArgumentError({
|
|
537
439
|
argument: "separator",
|
|
538
440
|
message: `The separator "${separator}" must not be part of the alphabet "${alphabet}".`
|
|
539
441
|
});
|
|
@@ -543,24 +445,13 @@ var createIdGenerator = ({
|
|
|
543
445
|
var generateId = createIdGenerator();
|
|
544
446
|
|
|
545
447
|
// src/get-error-message.ts
|
|
546
|
-
|
|
547
|
-
if (error == null) {
|
|
548
|
-
return "unknown error";
|
|
549
|
-
}
|
|
550
|
-
if (typeof error === "string") {
|
|
551
|
-
return error;
|
|
552
|
-
}
|
|
553
|
-
if (error instanceof Error) {
|
|
554
|
-
return error.message;
|
|
555
|
-
}
|
|
556
|
-
return JSON.stringify(error);
|
|
557
|
-
}
|
|
448
|
+
import { getErrorMessage } from "@ai-sdk/provider";
|
|
558
449
|
|
|
559
450
|
// src/get-from-api.ts
|
|
560
|
-
|
|
451
|
+
import { APICallError as APICallError2 } from "@ai-sdk/provider";
|
|
561
452
|
|
|
562
453
|
// src/handle-fetch-error.ts
|
|
563
|
-
|
|
454
|
+
import { APICallError } from "@ai-sdk/provider";
|
|
564
455
|
|
|
565
456
|
// src/is-abort-error.ts
|
|
566
457
|
function isAbortError(error) {
|
|
@@ -600,7 +491,7 @@ function handleFetchError({
|
|
|
600
491
|
if (error instanceof TypeError && FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())) {
|
|
601
492
|
const cause = error.cause;
|
|
602
493
|
if (cause != null) {
|
|
603
|
-
return new
|
|
494
|
+
return new APICallError({
|
|
604
495
|
message: `Cannot connect to API: ${cause.message}`,
|
|
605
496
|
cause,
|
|
606
497
|
url,
|
|
@@ -611,7 +502,7 @@ function handleFetchError({
|
|
|
611
502
|
}
|
|
612
503
|
}
|
|
613
504
|
if (isBunNetworkError(error)) {
|
|
614
|
-
return new
|
|
505
|
+
return new APICallError({
|
|
615
506
|
message: `Cannot connect to API: ${error.message}`,
|
|
616
507
|
cause: error,
|
|
617
508
|
url,
|
|
@@ -675,7 +566,7 @@ function withUserAgentSuffix(headers, ...userAgentSuffixParts) {
|
|
|
675
566
|
}
|
|
676
567
|
|
|
677
568
|
// src/version.ts
|
|
678
|
-
var VERSION = true ? "5.0.0-beta.
|
|
569
|
+
var VERSION = true ? "5.0.0-beta.21" : "0.0.0-test";
|
|
679
570
|
|
|
680
571
|
// src/get-from-api.ts
|
|
681
572
|
var getOriginalFetch = () => globalThis.fetch;
|
|
@@ -707,10 +598,10 @@ var getFromApi = async ({
|
|
|
707
598
|
requestBodyValues: {}
|
|
708
599
|
});
|
|
709
600
|
} catch (error) {
|
|
710
|
-
if (isAbortError(error) ||
|
|
601
|
+
if (isAbortError(error) || APICallError2.isInstance(error)) {
|
|
711
602
|
throw error;
|
|
712
603
|
}
|
|
713
|
-
throw new
|
|
604
|
+
throw new APICallError2({
|
|
714
605
|
message: "Failed to process error response",
|
|
715
606
|
cause: error,
|
|
716
607
|
statusCode: response.status,
|
|
@@ -729,11 +620,11 @@ var getFromApi = async ({
|
|
|
729
620
|
});
|
|
730
621
|
} catch (error) {
|
|
731
622
|
if (error instanceof Error) {
|
|
732
|
-
if (isAbortError(error) ||
|
|
623
|
+
if (isAbortError(error) || APICallError2.isInstance(error)) {
|
|
733
624
|
throw error;
|
|
734
625
|
}
|
|
735
626
|
}
|
|
736
|
-
throw new
|
|
627
|
+
throw new APICallError2({
|
|
737
628
|
message: "Failed to process successful response",
|
|
738
629
|
cause: error,
|
|
739
630
|
statusCode: response.status,
|
|
@@ -791,6 +682,11 @@ function isNonNullable(value) {
|
|
|
791
682
|
return value != null;
|
|
792
683
|
}
|
|
793
684
|
|
|
685
|
+
// src/is-provider-reference.ts
|
|
686
|
+
function isProviderReference(data) {
|
|
687
|
+
return typeof data === "object" && !(data instanceof Uint8Array) && !(data instanceof URL);
|
|
688
|
+
}
|
|
689
|
+
|
|
794
690
|
// src/is-url-supported.ts
|
|
795
691
|
function isUrlSupported({
|
|
796
692
|
mediaType,
|
|
@@ -806,7 +702,7 @@ function isUrlSupported({
|
|
|
806
702
|
}
|
|
807
703
|
|
|
808
704
|
// src/load-api-key.ts
|
|
809
|
-
|
|
705
|
+
import { LoadAPIKeyError } from "@ai-sdk/provider";
|
|
810
706
|
function loadApiKey({
|
|
811
707
|
apiKey,
|
|
812
708
|
environmentVariableName,
|
|
@@ -817,23 +713,23 @@ function loadApiKey({
|
|
|
817
713
|
return apiKey;
|
|
818
714
|
}
|
|
819
715
|
if (apiKey != null) {
|
|
820
|
-
throw new
|
|
716
|
+
throw new LoadAPIKeyError({
|
|
821
717
|
message: `${description} API key must be a string.`
|
|
822
718
|
});
|
|
823
719
|
}
|
|
824
720
|
if (typeof process === "undefined") {
|
|
825
|
-
throw new
|
|
826
|
-
message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables
|
|
721
|
+
throw new LoadAPIKeyError({
|
|
722
|
+
message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables are not supported in this environment.`
|
|
827
723
|
});
|
|
828
724
|
}
|
|
829
725
|
apiKey = process.env[environmentVariableName];
|
|
830
726
|
if (apiKey == null) {
|
|
831
|
-
throw new
|
|
727
|
+
throw new LoadAPIKeyError({
|
|
832
728
|
message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`
|
|
833
729
|
});
|
|
834
730
|
}
|
|
835
731
|
if (typeof apiKey !== "string") {
|
|
836
|
-
throw new
|
|
732
|
+
throw new LoadAPIKeyError({
|
|
837
733
|
message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`
|
|
838
734
|
});
|
|
839
735
|
}
|
|
@@ -859,7 +755,7 @@ function loadOptionalSetting({
|
|
|
859
755
|
}
|
|
860
756
|
|
|
861
757
|
// src/load-setting.ts
|
|
862
|
-
|
|
758
|
+
import { LoadSettingError } from "@ai-sdk/provider";
|
|
863
759
|
function loadSetting({
|
|
864
760
|
settingValue,
|
|
865
761
|
environmentVariableName,
|
|
@@ -870,29 +766,86 @@ function loadSetting({
|
|
|
870
766
|
return settingValue;
|
|
871
767
|
}
|
|
872
768
|
if (settingValue != null) {
|
|
873
|
-
throw new
|
|
769
|
+
throw new LoadSettingError({
|
|
874
770
|
message: `${description} setting must be a string.`
|
|
875
771
|
});
|
|
876
772
|
}
|
|
877
773
|
if (typeof process === "undefined") {
|
|
878
|
-
throw new
|
|
879
|
-
message: `${description} setting is missing. Pass it using the '${settingName}' parameter. Environment variables
|
|
774
|
+
throw new LoadSettingError({
|
|
775
|
+
message: `${description} setting is missing. Pass it using the '${settingName}' parameter. Environment variables are not supported in this environment.`
|
|
880
776
|
});
|
|
881
777
|
}
|
|
882
778
|
settingValue = process.env[environmentVariableName];
|
|
883
779
|
if (settingValue == null) {
|
|
884
|
-
throw new
|
|
780
|
+
throw new LoadSettingError({
|
|
885
781
|
message: `${description} setting is missing. Pass it using the '${settingName}' parameter or the ${environmentVariableName} environment variable.`
|
|
886
782
|
});
|
|
887
783
|
}
|
|
888
784
|
if (typeof settingValue !== "string") {
|
|
889
|
-
throw new
|
|
785
|
+
throw new LoadSettingError({
|
|
890
786
|
message: `${description} setting must be a string. The value of the ${environmentVariableName} environment variable is not a string.`
|
|
891
787
|
});
|
|
892
788
|
}
|
|
893
789
|
return settingValue;
|
|
894
790
|
}
|
|
895
791
|
|
|
792
|
+
// src/map-reasoning-to-provider.ts
|
|
793
|
+
function isCustomReasoning(reasoning) {
|
|
794
|
+
return reasoning !== void 0 && reasoning !== "provider-default";
|
|
795
|
+
}
|
|
796
|
+
function mapReasoningToProviderEffort({
|
|
797
|
+
reasoning,
|
|
798
|
+
effortMap,
|
|
799
|
+
warnings
|
|
800
|
+
}) {
|
|
801
|
+
const mapped = effortMap[reasoning];
|
|
802
|
+
if (mapped == null) {
|
|
803
|
+
warnings.push({
|
|
804
|
+
type: "unsupported",
|
|
805
|
+
feature: "reasoning",
|
|
806
|
+
details: `reasoning "${reasoning}" is not supported by this model.`
|
|
807
|
+
});
|
|
808
|
+
return void 0;
|
|
809
|
+
}
|
|
810
|
+
if (mapped !== reasoning) {
|
|
811
|
+
warnings.push({
|
|
812
|
+
type: "compatibility",
|
|
813
|
+
feature: "reasoning",
|
|
814
|
+
details: `reasoning "${reasoning}" is not directly supported by this model. mapped to effort "${mapped}".`
|
|
815
|
+
});
|
|
816
|
+
}
|
|
817
|
+
return mapped;
|
|
818
|
+
}
|
|
819
|
+
var DEFAULT_REASONING_BUDGET_PERCENTAGES = {
|
|
820
|
+
minimal: 0.02,
|
|
821
|
+
low: 0.1,
|
|
822
|
+
medium: 0.3,
|
|
823
|
+
high: 0.6,
|
|
824
|
+
xhigh: 0.9
|
|
825
|
+
};
|
|
826
|
+
function mapReasoningToProviderBudget({
|
|
827
|
+
reasoning,
|
|
828
|
+
maxOutputTokens,
|
|
829
|
+
maxReasoningBudget,
|
|
830
|
+
minReasoningBudget = 1024,
|
|
831
|
+
budgetPercentages = DEFAULT_REASONING_BUDGET_PERCENTAGES,
|
|
832
|
+
warnings
|
|
833
|
+
}) {
|
|
834
|
+
const pct = budgetPercentages[reasoning];
|
|
835
|
+
if (pct == null) {
|
|
836
|
+
warnings.push({
|
|
837
|
+
type: "unsupported",
|
|
838
|
+
feature: "reasoning",
|
|
839
|
+
details: `reasoning "${reasoning}" is not supported by this model.`
|
|
840
|
+
});
|
|
841
|
+
return void 0;
|
|
842
|
+
}
|
|
843
|
+
return Math.min(
|
|
844
|
+
maxReasoningBudget,
|
|
845
|
+
Math.max(minReasoningBudget, Math.round(maxOutputTokens * pct))
|
|
846
|
+
);
|
|
847
|
+
}
|
|
848
|
+
|
|
896
849
|
// src/media-type-to-extension.ts
|
|
897
850
|
function mediaTypeToExtension(mediaType) {
|
|
898
851
|
var _a2;
|
|
@@ -907,7 +860,10 @@ function mediaTypeToExtension(mediaType) {
|
|
|
907
860
|
}
|
|
908
861
|
|
|
909
862
|
// src/parse-json.ts
|
|
910
|
-
|
|
863
|
+
import {
|
|
864
|
+
JSONParseError,
|
|
865
|
+
TypeValidationError as TypeValidationError3
|
|
866
|
+
} from "@ai-sdk/provider";
|
|
911
867
|
|
|
912
868
|
// src/secure-json-parse.ts
|
|
913
869
|
var suspectProtoRx = /"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/;
|
|
@@ -959,11 +915,11 @@ function secureJsonParse(text) {
|
|
|
959
915
|
}
|
|
960
916
|
|
|
961
917
|
// src/validate-types.ts
|
|
962
|
-
|
|
918
|
+
import { TypeValidationError as TypeValidationError2 } from "@ai-sdk/provider";
|
|
963
919
|
|
|
964
920
|
// src/schema.ts
|
|
965
|
-
|
|
966
|
-
|
|
921
|
+
import { TypeValidationError } from "@ai-sdk/provider";
|
|
922
|
+
import * as z4 from "zod/v4";
|
|
967
923
|
|
|
968
924
|
// src/add-additional-properties-to-json-schema.ts
|
|
969
925
|
function addAdditionalPropertiesToJsonSchema(jsonSchema2) {
|
|
@@ -1035,7 +991,7 @@ var getDefaultOptions = (options) => typeof options === "string" ? {
|
|
|
1035
991
|
};
|
|
1036
992
|
|
|
1037
993
|
// src/to-json-schema/zod3-to-json-schema/select-parser.ts
|
|
1038
|
-
|
|
994
|
+
import { ZodFirstPartyTypeKind as ZodFirstPartyTypeKind3 } from "zod/v3";
|
|
1039
995
|
|
|
1040
996
|
// src/to-json-schema/zod3-to-json-schema/parsers/any.ts
|
|
1041
997
|
function parseAnyDef() {
|
|
@@ -1043,13 +999,13 @@ function parseAnyDef() {
|
|
|
1043
999
|
}
|
|
1044
1000
|
|
|
1045
1001
|
// src/to-json-schema/zod3-to-json-schema/parsers/array.ts
|
|
1046
|
-
|
|
1002
|
+
import { ZodFirstPartyTypeKind } from "zod/v3";
|
|
1047
1003
|
function parseArrayDef(def, refs) {
|
|
1048
1004
|
var _a2, _b2, _c;
|
|
1049
1005
|
const res = {
|
|
1050
1006
|
type: "array"
|
|
1051
1007
|
};
|
|
1052
|
-
if (((_a2 = def.type) == null ? void 0 : _a2._def) && ((_c = (_b2 = def.type) == null ? void 0 : _b2._def) == null ? void 0 : _c.typeName) !==
|
|
1008
|
+
if (((_a2 = def.type) == null ? void 0 : _a2._def) && ((_c = (_b2 = def.type) == null ? void 0 : _b2._def) == null ? void 0 : _c.typeName) !== ZodFirstPartyTypeKind.ZodAny) {
|
|
1053
1009
|
res.items = parseDef(def.type._def, {
|
|
1054
1010
|
...refs,
|
|
1055
1011
|
currentPath: [...refs.currentPath, "items"]
|
|
@@ -1119,7 +1075,7 @@ function parseDateDef(def, refs, overrideDateStrategy) {
|
|
|
1119
1075
|
const strategy = overrideDateStrategy != null ? overrideDateStrategy : refs.dateStrategy;
|
|
1120
1076
|
if (Array.isArray(strategy)) {
|
|
1121
1077
|
return {
|
|
1122
|
-
anyOf: strategy.map((item
|
|
1078
|
+
anyOf: strategy.map((item) => parseDateDef(def, refs, item))
|
|
1123
1079
|
};
|
|
1124
1080
|
}
|
|
1125
1081
|
switch (strategy) {
|
|
@@ -1200,7 +1156,7 @@ function parseIntersectionDef(def, refs) {
|
|
|
1200
1156
|
} else {
|
|
1201
1157
|
let nestedSchema = schema;
|
|
1202
1158
|
if ("additionalProperties" in schema && schema.additionalProperties === false) {
|
|
1203
|
-
const { additionalProperties, ...rest } = schema;
|
|
1159
|
+
const { additionalProperties: _additionalProperties, ...rest } = schema;
|
|
1204
1160
|
nestedSchema = rest;
|
|
1205
1161
|
}
|
|
1206
1162
|
mergedAllOf.push(nestedSchema);
|
|
@@ -1224,7 +1180,9 @@ function parseLiteralDef(def) {
|
|
|
1224
1180
|
}
|
|
1225
1181
|
|
|
1226
1182
|
// src/to-json-schema/zod3-to-json-schema/parsers/record.ts
|
|
1227
|
-
|
|
1183
|
+
import {
|
|
1184
|
+
ZodFirstPartyTypeKind as ZodFirstPartyTypeKind2
|
|
1185
|
+
} from "zod/v3";
|
|
1228
1186
|
|
|
1229
1187
|
// src/to-json-schema/zod3-to-json-schema/parsers/string.ts
|
|
1230
1188
|
var emojiRegex = void 0;
|
|
@@ -1572,21 +1530,21 @@ function parseRecordDef(def, refs) {
|
|
|
1572
1530
|
currentPath: [...refs.currentPath, "additionalProperties"]
|
|
1573
1531
|
})) != null ? _a2 : refs.allowedAdditionalProperties
|
|
1574
1532
|
};
|
|
1575
|
-
if (((_b2 = def.keyType) == null ? void 0 : _b2._def.typeName) ===
|
|
1576
|
-
const { type, ...keyType } = parseStringDef(def.keyType._def, refs);
|
|
1533
|
+
if (((_b2 = def.keyType) == null ? void 0 : _b2._def.typeName) === ZodFirstPartyTypeKind2.ZodString && ((_c = def.keyType._def.checks) == null ? void 0 : _c.length)) {
|
|
1534
|
+
const { type: _type, ...keyType } = parseStringDef(def.keyType._def, refs);
|
|
1577
1535
|
return {
|
|
1578
1536
|
...schema,
|
|
1579
1537
|
propertyNames: keyType
|
|
1580
1538
|
};
|
|
1581
|
-
} else if (((_d = def.keyType) == null ? void 0 : _d._def.typeName) ===
|
|
1539
|
+
} else if (((_d = def.keyType) == null ? void 0 : _d._def.typeName) === ZodFirstPartyTypeKind2.ZodEnum) {
|
|
1582
1540
|
return {
|
|
1583
1541
|
...schema,
|
|
1584
1542
|
propertyNames: {
|
|
1585
1543
|
enum: def.keyType._def.values
|
|
1586
1544
|
}
|
|
1587
1545
|
};
|
|
1588
|
-
} else if (((_e = def.keyType) == null ? void 0 : _e._def.typeName) ===
|
|
1589
|
-
const { type, ...keyType } = parseBrandedDef(
|
|
1546
|
+
} else if (((_e = def.keyType) == null ? void 0 : _e._def.typeName) === ZodFirstPartyTypeKind2.ZodBranded && def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind2.ZodString && ((_f = def.keyType._def.type._def.checks) == null ? void 0 : _f.length)) {
|
|
1547
|
+
const { type: _type, ...keyType } = parseBrandedDef(
|
|
1590
1548
|
def.keyType._def,
|
|
1591
1549
|
refs
|
|
1592
1550
|
);
|
|
@@ -1959,73 +1917,73 @@ var parseReadonlyDef = (def, refs) => {
|
|
|
1959
1917
|
// src/to-json-schema/zod3-to-json-schema/select-parser.ts
|
|
1960
1918
|
var selectParser = (def, typeName, refs) => {
|
|
1961
1919
|
switch (typeName) {
|
|
1962
|
-
case
|
|
1920
|
+
case ZodFirstPartyTypeKind3.ZodString:
|
|
1963
1921
|
return parseStringDef(def, refs);
|
|
1964
|
-
case
|
|
1922
|
+
case ZodFirstPartyTypeKind3.ZodNumber:
|
|
1965
1923
|
return parseNumberDef(def);
|
|
1966
|
-
case
|
|
1924
|
+
case ZodFirstPartyTypeKind3.ZodObject:
|
|
1967
1925
|
return parseObjectDef(def, refs);
|
|
1968
|
-
case
|
|
1926
|
+
case ZodFirstPartyTypeKind3.ZodBigInt:
|
|
1969
1927
|
return parseBigintDef(def);
|
|
1970
|
-
case
|
|
1928
|
+
case ZodFirstPartyTypeKind3.ZodBoolean:
|
|
1971
1929
|
return parseBooleanDef();
|
|
1972
|
-
case
|
|
1930
|
+
case ZodFirstPartyTypeKind3.ZodDate:
|
|
1973
1931
|
return parseDateDef(def, refs);
|
|
1974
|
-
case
|
|
1932
|
+
case ZodFirstPartyTypeKind3.ZodUndefined:
|
|
1975
1933
|
return parseUndefinedDef();
|
|
1976
|
-
case
|
|
1934
|
+
case ZodFirstPartyTypeKind3.ZodNull:
|
|
1977
1935
|
return parseNullDef();
|
|
1978
|
-
case
|
|
1936
|
+
case ZodFirstPartyTypeKind3.ZodArray:
|
|
1979
1937
|
return parseArrayDef(def, refs);
|
|
1980
|
-
case
|
|
1981
|
-
case
|
|
1938
|
+
case ZodFirstPartyTypeKind3.ZodUnion:
|
|
1939
|
+
case ZodFirstPartyTypeKind3.ZodDiscriminatedUnion:
|
|
1982
1940
|
return parseUnionDef(def, refs);
|
|
1983
|
-
case
|
|
1941
|
+
case ZodFirstPartyTypeKind3.ZodIntersection:
|
|
1984
1942
|
return parseIntersectionDef(def, refs);
|
|
1985
|
-
case
|
|
1943
|
+
case ZodFirstPartyTypeKind3.ZodTuple:
|
|
1986
1944
|
return parseTupleDef(def, refs);
|
|
1987
|
-
case
|
|
1945
|
+
case ZodFirstPartyTypeKind3.ZodRecord:
|
|
1988
1946
|
return parseRecordDef(def, refs);
|
|
1989
|
-
case
|
|
1947
|
+
case ZodFirstPartyTypeKind3.ZodLiteral:
|
|
1990
1948
|
return parseLiteralDef(def);
|
|
1991
|
-
case
|
|
1949
|
+
case ZodFirstPartyTypeKind3.ZodEnum:
|
|
1992
1950
|
return parseEnumDef(def);
|
|
1993
|
-
case
|
|
1951
|
+
case ZodFirstPartyTypeKind3.ZodNativeEnum:
|
|
1994
1952
|
return parseNativeEnumDef(def);
|
|
1995
|
-
case
|
|
1953
|
+
case ZodFirstPartyTypeKind3.ZodNullable:
|
|
1996
1954
|
return parseNullableDef(def, refs);
|
|
1997
|
-
case
|
|
1955
|
+
case ZodFirstPartyTypeKind3.ZodOptional:
|
|
1998
1956
|
return parseOptionalDef(def, refs);
|
|
1999
|
-
case
|
|
1957
|
+
case ZodFirstPartyTypeKind3.ZodMap:
|
|
2000
1958
|
return parseMapDef(def, refs);
|
|
2001
|
-
case
|
|
1959
|
+
case ZodFirstPartyTypeKind3.ZodSet:
|
|
2002
1960
|
return parseSetDef(def, refs);
|
|
2003
|
-
case
|
|
1961
|
+
case ZodFirstPartyTypeKind3.ZodLazy:
|
|
2004
1962
|
return () => def.getter()._def;
|
|
2005
|
-
case
|
|
1963
|
+
case ZodFirstPartyTypeKind3.ZodPromise:
|
|
2006
1964
|
return parsePromiseDef(def, refs);
|
|
2007
|
-
case
|
|
2008
|
-
case
|
|
1965
|
+
case ZodFirstPartyTypeKind3.ZodNaN:
|
|
1966
|
+
case ZodFirstPartyTypeKind3.ZodNever:
|
|
2009
1967
|
return parseNeverDef();
|
|
2010
|
-
case
|
|
1968
|
+
case ZodFirstPartyTypeKind3.ZodEffects:
|
|
2011
1969
|
return parseEffectsDef(def, refs);
|
|
2012
|
-
case
|
|
1970
|
+
case ZodFirstPartyTypeKind3.ZodAny:
|
|
2013
1971
|
return parseAnyDef();
|
|
2014
|
-
case
|
|
1972
|
+
case ZodFirstPartyTypeKind3.ZodUnknown:
|
|
2015
1973
|
return parseUnknownDef();
|
|
2016
|
-
case
|
|
1974
|
+
case ZodFirstPartyTypeKind3.ZodDefault:
|
|
2017
1975
|
return parseDefaultDef(def, refs);
|
|
2018
|
-
case
|
|
1976
|
+
case ZodFirstPartyTypeKind3.ZodBranded:
|
|
2019
1977
|
return parseBrandedDef(def, refs);
|
|
2020
|
-
case
|
|
1978
|
+
case ZodFirstPartyTypeKind3.ZodReadonly:
|
|
2021
1979
|
return parseReadonlyDef(def, refs);
|
|
2022
|
-
case
|
|
1980
|
+
case ZodFirstPartyTypeKind3.ZodCatch:
|
|
2023
1981
|
return parseCatchDef(def, refs);
|
|
2024
|
-
case
|
|
1982
|
+
case ZodFirstPartyTypeKind3.ZodPipeline:
|
|
2025
1983
|
return parsePipelineDef(def, refs);
|
|
2026
|
-
case
|
|
2027
|
-
case
|
|
2028
|
-
case
|
|
1984
|
+
case ZodFirstPartyTypeKind3.ZodFunction:
|
|
1985
|
+
case ZodFirstPartyTypeKind3.ZodVoid:
|
|
1986
|
+
case ZodFirstPartyTypeKind3.ZodSymbol:
|
|
2029
1987
|
return void 0;
|
|
2030
1988
|
default:
|
|
2031
1989
|
return /* @__PURE__ */ ((_) => void 0)(typeName);
|
|
@@ -2224,7 +2182,7 @@ function standardSchema(standardSchema2) {
|
|
|
2224
2182
|
const result = await standardSchema2["~standard"].validate(value);
|
|
2225
2183
|
return "value" in result ? { success: true, value: result.value } : {
|
|
2226
2184
|
success: false,
|
|
2227
|
-
error: new
|
|
2185
|
+
error: new TypeValidationError({
|
|
2228
2186
|
value,
|
|
2229
2187
|
cause: result.issues
|
|
2230
2188
|
})
|
|
@@ -2288,7 +2246,7 @@ async function validateTypes({
|
|
|
2288
2246
|
}) {
|
|
2289
2247
|
const result = await safeValidateTypes({ value, schema, context });
|
|
2290
2248
|
if (!result.success) {
|
|
2291
|
-
throw
|
|
2249
|
+
throw TypeValidationError2.wrap({ value, cause: result.error, context });
|
|
2292
2250
|
}
|
|
2293
2251
|
return result.value;
|
|
2294
2252
|
}
|
|
@@ -2308,13 +2266,13 @@ async function safeValidateTypes({
|
|
|
2308
2266
|
}
|
|
2309
2267
|
return {
|
|
2310
2268
|
success: false,
|
|
2311
|
-
error:
|
|
2269
|
+
error: TypeValidationError2.wrap({ value, cause: result.error, context }),
|
|
2312
2270
|
rawValue: value
|
|
2313
2271
|
};
|
|
2314
2272
|
} catch (error) {
|
|
2315
2273
|
return {
|
|
2316
2274
|
success: false,
|
|
2317
|
-
error:
|
|
2275
|
+
error: TypeValidationError2.wrap({ value, cause: error, context }),
|
|
2318
2276
|
rawValue: value
|
|
2319
2277
|
};
|
|
2320
2278
|
}
|
|
@@ -2332,10 +2290,10 @@ async function parseJSON({
|
|
|
2332
2290
|
}
|
|
2333
2291
|
return validateTypes({ value, schema });
|
|
2334
2292
|
} catch (error) {
|
|
2335
|
-
if (
|
|
2293
|
+
if (JSONParseError.isInstance(error) || TypeValidationError3.isInstance(error)) {
|
|
2336
2294
|
throw error;
|
|
2337
2295
|
}
|
|
2338
|
-
throw new
|
|
2296
|
+
throw new JSONParseError({ text, cause: error });
|
|
2339
2297
|
}
|
|
2340
2298
|
}
|
|
2341
2299
|
async function safeParseJSON({
|
|
@@ -2351,7 +2309,7 @@ async function safeParseJSON({
|
|
|
2351
2309
|
} catch (error) {
|
|
2352
2310
|
return {
|
|
2353
2311
|
success: false,
|
|
2354
|
-
error:
|
|
2312
|
+
error: JSONParseError.isInstance(error) ? error : new JSONParseError({ text, cause: error }),
|
|
2355
2313
|
rawValue: void 0
|
|
2356
2314
|
};
|
|
2357
2315
|
}
|
|
@@ -2366,12 +2324,14 @@ function isParsableJson(input) {
|
|
|
2366
2324
|
}
|
|
2367
2325
|
|
|
2368
2326
|
// src/parse-json-event-stream.ts
|
|
2369
|
-
|
|
2327
|
+
import {
|
|
2328
|
+
EventSourceParserStream
|
|
2329
|
+
} from "eventsource-parser/stream";
|
|
2370
2330
|
function parseJsonEventStream({
|
|
2371
2331
|
stream,
|
|
2372
2332
|
schema
|
|
2373
2333
|
}) {
|
|
2374
|
-
return stream.pipeThrough(new TextDecoderStream()).pipeThrough(new
|
|
2334
|
+
return stream.pipeThrough(new TextDecoderStream()).pipeThrough(new EventSourceParserStream()).pipeThrough(
|
|
2375
2335
|
new TransformStream({
|
|
2376
2336
|
async transform({ data }, controller) {
|
|
2377
2337
|
if (data === "[DONE]") {
|
|
@@ -2384,7 +2344,7 @@ function parseJsonEventStream({
|
|
|
2384
2344
|
}
|
|
2385
2345
|
|
|
2386
2346
|
// src/parse-provider-options.ts
|
|
2387
|
-
|
|
2347
|
+
import { InvalidArgumentError as InvalidArgumentError2 } from "@ai-sdk/provider";
|
|
2388
2348
|
async function parseProviderOptions({
|
|
2389
2349
|
provider,
|
|
2390
2350
|
providerOptions,
|
|
@@ -2398,7 +2358,7 @@ async function parseProviderOptions({
|
|
|
2398
2358
|
schema
|
|
2399
2359
|
});
|
|
2400
2360
|
if (!parsedProviderOptions.success) {
|
|
2401
|
-
throw new
|
|
2361
|
+
throw new InvalidArgumentError2({
|
|
2402
2362
|
argument: "providerOptions",
|
|
2403
2363
|
message: `invalid ${provider} provider options`,
|
|
2404
2364
|
cause: parsedProviderOptions.error
|
|
@@ -2408,7 +2368,7 @@ async function parseProviderOptions({
|
|
|
2408
2368
|
}
|
|
2409
2369
|
|
|
2410
2370
|
// src/post-to-api.ts
|
|
2411
|
-
|
|
2371
|
+
import { APICallError as APICallError3 } from "@ai-sdk/provider";
|
|
2412
2372
|
var getOriginalFetch2 = () => globalThis.fetch;
|
|
2413
2373
|
var postJsonToApi = async ({
|
|
2414
2374
|
url,
|
|
@@ -2483,10 +2443,10 @@ var postToApi = async ({
|
|
|
2483
2443
|
requestBodyValues: body.values
|
|
2484
2444
|
});
|
|
2485
2445
|
} catch (error) {
|
|
2486
|
-
if (isAbortError(error) ||
|
|
2446
|
+
if (isAbortError(error) || APICallError3.isInstance(error)) {
|
|
2487
2447
|
throw error;
|
|
2488
2448
|
}
|
|
2489
|
-
throw new
|
|
2449
|
+
throw new APICallError3({
|
|
2490
2450
|
message: "Failed to process error response",
|
|
2491
2451
|
cause: error,
|
|
2492
2452
|
statusCode: response.status,
|
|
@@ -2505,11 +2465,11 @@ var postToApi = async ({
|
|
|
2505
2465
|
});
|
|
2506
2466
|
} catch (error) {
|
|
2507
2467
|
if (error instanceof Error) {
|
|
2508
|
-
if (isAbortError(error) ||
|
|
2468
|
+
if (isAbortError(error) || APICallError3.isInstance(error)) {
|
|
2509
2469
|
throw error;
|
|
2510
2470
|
}
|
|
2511
2471
|
}
|
|
2512
|
-
throw new
|
|
2472
|
+
throw new APICallError3({
|
|
2513
2473
|
message: "Failed to process successful response",
|
|
2514
2474
|
cause: error,
|
|
2515
2475
|
statusCode: response.status,
|
|
@@ -2604,8 +2564,26 @@ async function resolve(value) {
|
|
|
2604
2564
|
return Promise.resolve(value);
|
|
2605
2565
|
}
|
|
2606
2566
|
|
|
2567
|
+
// src/resolve-provider-reference.ts
|
|
2568
|
+
import {
|
|
2569
|
+
NoSuchProviderReferenceError
|
|
2570
|
+
} from "@ai-sdk/provider";
|
|
2571
|
+
function resolveProviderReference({
|
|
2572
|
+
reference,
|
|
2573
|
+
provider
|
|
2574
|
+
}) {
|
|
2575
|
+
const id = reference[provider];
|
|
2576
|
+
if (id != null) {
|
|
2577
|
+
return id;
|
|
2578
|
+
}
|
|
2579
|
+
throw new NoSuchProviderReferenceError({
|
|
2580
|
+
provider,
|
|
2581
|
+
reference
|
|
2582
|
+
});
|
|
2583
|
+
}
|
|
2584
|
+
|
|
2607
2585
|
// src/response-handler.ts
|
|
2608
|
-
|
|
2586
|
+
import { APICallError as APICallError4, EmptyResponseBodyError } from "@ai-sdk/provider";
|
|
2609
2587
|
var createJsonErrorResponseHandler = ({
|
|
2610
2588
|
errorSchema,
|
|
2611
2589
|
errorToMessage,
|
|
@@ -2616,7 +2594,7 @@ var createJsonErrorResponseHandler = ({
|
|
|
2616
2594
|
if (responseBody.trim() === "") {
|
|
2617
2595
|
return {
|
|
2618
2596
|
responseHeaders,
|
|
2619
|
-
value: new
|
|
2597
|
+
value: new APICallError4({
|
|
2620
2598
|
message: response.statusText,
|
|
2621
2599
|
url,
|
|
2622
2600
|
requestBodyValues,
|
|
@@ -2634,7 +2612,7 @@ var createJsonErrorResponseHandler = ({
|
|
|
2634
2612
|
});
|
|
2635
2613
|
return {
|
|
2636
2614
|
responseHeaders,
|
|
2637
|
-
value: new
|
|
2615
|
+
value: new APICallError4({
|
|
2638
2616
|
message: errorToMessage(parsedError),
|
|
2639
2617
|
url,
|
|
2640
2618
|
requestBodyValues,
|
|
@@ -2645,10 +2623,10 @@ var createJsonErrorResponseHandler = ({
|
|
|
2645
2623
|
isRetryable: isRetryable == null ? void 0 : isRetryable(response, parsedError)
|
|
2646
2624
|
})
|
|
2647
2625
|
};
|
|
2648
|
-
} catch (
|
|
2626
|
+
} catch (e) {
|
|
2649
2627
|
return {
|
|
2650
2628
|
responseHeaders,
|
|
2651
|
-
value: new
|
|
2629
|
+
value: new APICallError4({
|
|
2652
2630
|
message: response.statusText,
|
|
2653
2631
|
url,
|
|
2654
2632
|
requestBodyValues,
|
|
@@ -2663,7 +2641,7 @@ var createJsonErrorResponseHandler = ({
|
|
|
2663
2641
|
var createEventSourceResponseHandler = (chunkSchema) => async ({ response }) => {
|
|
2664
2642
|
const responseHeaders = extractResponseHeaders(response);
|
|
2665
2643
|
if (response.body == null) {
|
|
2666
|
-
throw new
|
|
2644
|
+
throw new EmptyResponseBodyError({});
|
|
2667
2645
|
}
|
|
2668
2646
|
return {
|
|
2669
2647
|
responseHeaders,
|
|
@@ -2681,7 +2659,7 @@ var createJsonResponseHandler = (responseSchema) => async ({ response, url, requ
|
|
|
2681
2659
|
});
|
|
2682
2660
|
const responseHeaders = extractResponseHeaders(response);
|
|
2683
2661
|
if (!parsedResult.success) {
|
|
2684
|
-
throw new
|
|
2662
|
+
throw new APICallError4({
|
|
2685
2663
|
message: "Invalid JSON response",
|
|
2686
2664
|
cause: parsedResult.error,
|
|
2687
2665
|
statusCode: response.status,
|
|
@@ -2700,7 +2678,7 @@ var createJsonResponseHandler = (responseSchema) => async ({ response, url, requ
|
|
|
2700
2678
|
var createBinaryResponseHandler = () => async ({ response, url, requestBodyValues }) => {
|
|
2701
2679
|
const responseHeaders = extractResponseHeaders(response);
|
|
2702
2680
|
if (!response.body) {
|
|
2703
|
-
throw new
|
|
2681
|
+
throw new APICallError4({
|
|
2704
2682
|
message: "Response body is empty",
|
|
2705
2683
|
url,
|
|
2706
2684
|
requestBodyValues,
|
|
@@ -2716,7 +2694,7 @@ var createBinaryResponseHandler = () => async ({ response, url, requestBodyValue
|
|
|
2716
2694
|
value: new Uint8Array(buffer)
|
|
2717
2695
|
};
|
|
2718
2696
|
} catch (error) {
|
|
2719
|
-
throw new
|
|
2697
|
+
throw new APICallError4({
|
|
2720
2698
|
message: "Failed to read response as array buffer",
|
|
2721
2699
|
url,
|
|
2722
2700
|
requestBodyValues,
|
|
@@ -2732,7 +2710,7 @@ var createStatusCodeErrorResponseHandler = () => async ({ response, url, request
|
|
|
2732
2710
|
const responseBody = await response.text();
|
|
2733
2711
|
return {
|
|
2734
2712
|
responseHeaders,
|
|
2735
|
-
value: new
|
|
2713
|
+
value: new APICallError4({
|
|
2736
2714
|
message: response.statusText,
|
|
2737
2715
|
url,
|
|
2738
2716
|
requestBodyValues,
|
|
@@ -2743,6 +2721,50 @@ var createStatusCodeErrorResponseHandler = () => async ({ response, url, request
|
|
|
2743
2721
|
};
|
|
2744
2722
|
};
|
|
2745
2723
|
|
|
2724
|
+
// src/is-json-serializable.ts
|
|
2725
|
+
function isJSONSerializable(value) {
|
|
2726
|
+
if (value === null || value === void 0) return true;
|
|
2727
|
+
const type = typeof value;
|
|
2728
|
+
if (type === "string" || type === "number" || type === "boolean") return true;
|
|
2729
|
+
if (type === "function" || type === "symbol" || type === "bigint")
|
|
2730
|
+
return false;
|
|
2731
|
+
if (Array.isArray(value)) {
|
|
2732
|
+
return value.every(isJSONSerializable);
|
|
2733
|
+
}
|
|
2734
|
+
if (Object.getPrototypeOf(value) === Object.prototype) {
|
|
2735
|
+
return Object.values(value).every(
|
|
2736
|
+
isJSONSerializable
|
|
2737
|
+
);
|
|
2738
|
+
}
|
|
2739
|
+
return false;
|
|
2740
|
+
}
|
|
2741
|
+
|
|
2742
|
+
// src/serialize-model-options.ts
|
|
2743
|
+
function serializeModelOptions(options) {
|
|
2744
|
+
const serializableConfig = {};
|
|
2745
|
+
for (const [key, value] of Object.entries(options.config)) {
|
|
2746
|
+
if (key === "headers") {
|
|
2747
|
+
const resolvedHeaders = resolveSync(value);
|
|
2748
|
+
if (isJSONSerializable(resolvedHeaders)) {
|
|
2749
|
+
serializableConfig[key] = resolvedHeaders;
|
|
2750
|
+
}
|
|
2751
|
+
} else if (isJSONSerializable(value)) {
|
|
2752
|
+
serializableConfig[key] = value;
|
|
2753
|
+
}
|
|
2754
|
+
}
|
|
2755
|
+
return { modelId: options.modelId, config: serializableConfig };
|
|
2756
|
+
}
|
|
2757
|
+
function resolveSync(value) {
|
|
2758
|
+
let next = value;
|
|
2759
|
+
if (typeof value === "function") {
|
|
2760
|
+
next = value();
|
|
2761
|
+
}
|
|
2762
|
+
if (next instanceof Promise) {
|
|
2763
|
+
throw new Error("Promise returned from resolveSync");
|
|
2764
|
+
}
|
|
2765
|
+
return next;
|
|
2766
|
+
}
|
|
2767
|
+
|
|
2746
2768
|
// src/strip-file-extension.ts
|
|
2747
2769
|
function stripFileExtension(filename) {
|
|
2748
2770
|
const firstDotIndex = filename.indexOf(".");
|
|
@@ -2761,11 +2783,11 @@ function isAsyncIterable(obj) {
|
|
|
2761
2783
|
|
|
2762
2784
|
// src/types/execute-tool.ts
|
|
2763
2785
|
async function* executeTool({
|
|
2764
|
-
|
|
2786
|
+
tool: tool2,
|
|
2765
2787
|
input,
|
|
2766
2788
|
options
|
|
2767
2789
|
}) {
|
|
2768
|
-
const result = execute(input, options);
|
|
2790
|
+
const result = tool2.execute(input, options);
|
|
2769
2791
|
if (isAsyncIterable(result)) {
|
|
2770
2792
|
let lastOutput;
|
|
2771
2793
|
for await (const output of result) {
|
|
@@ -2778,15 +2800,24 @@ async function* executeTool({
|
|
|
2778
2800
|
}
|
|
2779
2801
|
}
|
|
2780
2802
|
|
|
2803
|
+
// src/types/executable-tool.ts
|
|
2804
|
+
function isExecutableTool(tool2) {
|
|
2805
|
+
return tool2 != null && typeof tool2.execute === "function";
|
|
2806
|
+
}
|
|
2807
|
+
|
|
2781
2808
|
// src/index.ts
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2809
|
+
import { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE } from "@workflow/serde";
|
|
2810
|
+
import {
|
|
2811
|
+
EventSourceParserStream as EventSourceParserStream2
|
|
2812
|
+
} from "eventsource-parser/stream";
|
|
2813
|
+
export {
|
|
2785
2814
|
DEFAULT_MAX_DOWNLOAD_SIZE,
|
|
2786
2815
|
DelayedPromise,
|
|
2787
2816
|
DownloadError,
|
|
2788
|
-
EventSourceParserStream,
|
|
2817
|
+
EventSourceParserStream2 as EventSourceParserStream,
|
|
2789
2818
|
VERSION,
|
|
2819
|
+
WORKFLOW_DESERIALIZE,
|
|
2820
|
+
WORKFLOW_SERIALIZE,
|
|
2790
2821
|
asSchema,
|
|
2791
2822
|
combineHeaders,
|
|
2792
2823
|
convertAsyncIteratorToReadableStream,
|
|
@@ -2815,14 +2846,19 @@ var import_stream2 = require("eventsource-parser/stream");
|
|
|
2815
2846
|
getRuntimeEnvironmentUserAgent,
|
|
2816
2847
|
injectJsonInstructionIntoMessages,
|
|
2817
2848
|
isAbortError,
|
|
2849
|
+
isCustomReasoning,
|
|
2850
|
+
isExecutableTool,
|
|
2818
2851
|
isNonNullable,
|
|
2819
2852
|
isParsableJson,
|
|
2853
|
+
isProviderReference,
|
|
2820
2854
|
isUrlSupported,
|
|
2821
2855
|
jsonSchema,
|
|
2822
2856
|
lazySchema,
|
|
2823
2857
|
loadApiKey,
|
|
2824
2858
|
loadOptionalSetting,
|
|
2825
2859
|
loadSetting,
|
|
2860
|
+
mapReasoningToProviderBudget,
|
|
2861
|
+
mapReasoningToProviderEffort,
|
|
2826
2862
|
mediaTypeToExtension,
|
|
2827
2863
|
normalizeHeaders,
|
|
2828
2864
|
parseJSON,
|
|
@@ -2834,8 +2870,10 @@ var import_stream2 = require("eventsource-parser/stream");
|
|
|
2834
2870
|
readResponseWithSizeLimit,
|
|
2835
2871
|
removeUndefinedEntries,
|
|
2836
2872
|
resolve,
|
|
2873
|
+
resolveProviderReference,
|
|
2837
2874
|
safeParseJSON,
|
|
2838
2875
|
safeValidateTypes,
|
|
2876
|
+
serializeModelOptions,
|
|
2839
2877
|
stripFileExtension,
|
|
2840
2878
|
tool,
|
|
2841
2879
|
validateDownloadUrl,
|
|
@@ -2843,5 +2881,5 @@ var import_stream2 = require("eventsource-parser/stream");
|
|
|
2843
2881
|
withUserAgentSuffix,
|
|
2844
2882
|
withoutTrailingSlash,
|
|
2845
2883
|
zodSchema
|
|
2846
|
-
}
|
|
2884
|
+
};
|
|
2847
2885
|
//# sourceMappingURL=index.js.map
|