@ai-sdk/provider-utils 5.0.0-beta.2 → 5.0.0-beta.20
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 +220 -0
- package/dist/index.d.ts +423 -169
- package/dist/index.js +314 -271
- 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 -1
- 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/execute-tool.ts +24 -4
- package/src/types/index.ts +10 -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
|
});
|
|
@@ -551,16 +453,16 @@ function getErrorMessage(error) {
|
|
|
551
453
|
return error;
|
|
552
454
|
}
|
|
553
455
|
if (error instanceof Error) {
|
|
554
|
-
return error.
|
|
456
|
+
return error.toString();
|
|
555
457
|
}
|
|
556
458
|
return JSON.stringify(error);
|
|
557
459
|
}
|
|
558
460
|
|
|
559
461
|
// src/get-from-api.ts
|
|
560
|
-
|
|
462
|
+
import { APICallError as APICallError2 } from "@ai-sdk/provider";
|
|
561
463
|
|
|
562
464
|
// src/handle-fetch-error.ts
|
|
563
|
-
|
|
465
|
+
import { APICallError } from "@ai-sdk/provider";
|
|
564
466
|
|
|
565
467
|
// src/is-abort-error.ts
|
|
566
468
|
function isAbortError(error) {
|
|
@@ -600,7 +502,7 @@ function handleFetchError({
|
|
|
600
502
|
if (error instanceof TypeError && FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())) {
|
|
601
503
|
const cause = error.cause;
|
|
602
504
|
if (cause != null) {
|
|
603
|
-
return new
|
|
505
|
+
return new APICallError({
|
|
604
506
|
message: `Cannot connect to API: ${cause.message}`,
|
|
605
507
|
cause,
|
|
606
508
|
url,
|
|
@@ -611,7 +513,7 @@ function handleFetchError({
|
|
|
611
513
|
}
|
|
612
514
|
}
|
|
613
515
|
if (isBunNetworkError(error)) {
|
|
614
|
-
return new
|
|
516
|
+
return new APICallError({
|
|
615
517
|
message: `Cannot connect to API: ${error.message}`,
|
|
616
518
|
cause: error,
|
|
617
519
|
url,
|
|
@@ -675,7 +577,7 @@ function withUserAgentSuffix(headers, ...userAgentSuffixParts) {
|
|
|
675
577
|
}
|
|
676
578
|
|
|
677
579
|
// src/version.ts
|
|
678
|
-
var VERSION = true ? "5.0.0-beta.
|
|
580
|
+
var VERSION = true ? "5.0.0-beta.20" : "0.0.0-test";
|
|
679
581
|
|
|
680
582
|
// src/get-from-api.ts
|
|
681
583
|
var getOriginalFetch = () => globalThis.fetch;
|
|
@@ -707,10 +609,10 @@ var getFromApi = async ({
|
|
|
707
609
|
requestBodyValues: {}
|
|
708
610
|
});
|
|
709
611
|
} catch (error) {
|
|
710
|
-
if (isAbortError(error) ||
|
|
612
|
+
if (isAbortError(error) || APICallError2.isInstance(error)) {
|
|
711
613
|
throw error;
|
|
712
614
|
}
|
|
713
|
-
throw new
|
|
615
|
+
throw new APICallError2({
|
|
714
616
|
message: "Failed to process error response",
|
|
715
617
|
cause: error,
|
|
716
618
|
statusCode: response.status,
|
|
@@ -729,11 +631,11 @@ var getFromApi = async ({
|
|
|
729
631
|
});
|
|
730
632
|
} catch (error) {
|
|
731
633
|
if (error instanceof Error) {
|
|
732
|
-
if (isAbortError(error) ||
|
|
634
|
+
if (isAbortError(error) || APICallError2.isInstance(error)) {
|
|
733
635
|
throw error;
|
|
734
636
|
}
|
|
735
637
|
}
|
|
736
|
-
throw new
|
|
638
|
+
throw new APICallError2({
|
|
737
639
|
message: "Failed to process successful response",
|
|
738
640
|
cause: error,
|
|
739
641
|
statusCode: response.status,
|
|
@@ -791,6 +693,11 @@ function isNonNullable(value) {
|
|
|
791
693
|
return value != null;
|
|
792
694
|
}
|
|
793
695
|
|
|
696
|
+
// src/is-provider-reference.ts
|
|
697
|
+
function isProviderReference(data) {
|
|
698
|
+
return typeof data === "object" && !(data instanceof Uint8Array) && !(data instanceof URL);
|
|
699
|
+
}
|
|
700
|
+
|
|
794
701
|
// src/is-url-supported.ts
|
|
795
702
|
function isUrlSupported({
|
|
796
703
|
mediaType,
|
|
@@ -806,7 +713,7 @@ function isUrlSupported({
|
|
|
806
713
|
}
|
|
807
714
|
|
|
808
715
|
// src/load-api-key.ts
|
|
809
|
-
|
|
716
|
+
import { LoadAPIKeyError } from "@ai-sdk/provider";
|
|
810
717
|
function loadApiKey({
|
|
811
718
|
apiKey,
|
|
812
719
|
environmentVariableName,
|
|
@@ -817,23 +724,23 @@ function loadApiKey({
|
|
|
817
724
|
return apiKey;
|
|
818
725
|
}
|
|
819
726
|
if (apiKey != null) {
|
|
820
|
-
throw new
|
|
727
|
+
throw new LoadAPIKeyError({
|
|
821
728
|
message: `${description} API key must be a string.`
|
|
822
729
|
});
|
|
823
730
|
}
|
|
824
731
|
if (typeof process === "undefined") {
|
|
825
|
-
throw new
|
|
826
|
-
message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables
|
|
732
|
+
throw new LoadAPIKeyError({
|
|
733
|
+
message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables are not supported in this environment.`
|
|
827
734
|
});
|
|
828
735
|
}
|
|
829
736
|
apiKey = process.env[environmentVariableName];
|
|
830
737
|
if (apiKey == null) {
|
|
831
|
-
throw new
|
|
738
|
+
throw new LoadAPIKeyError({
|
|
832
739
|
message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`
|
|
833
740
|
});
|
|
834
741
|
}
|
|
835
742
|
if (typeof apiKey !== "string") {
|
|
836
|
-
throw new
|
|
743
|
+
throw new LoadAPIKeyError({
|
|
837
744
|
message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`
|
|
838
745
|
});
|
|
839
746
|
}
|
|
@@ -859,7 +766,7 @@ function loadOptionalSetting({
|
|
|
859
766
|
}
|
|
860
767
|
|
|
861
768
|
// src/load-setting.ts
|
|
862
|
-
|
|
769
|
+
import { LoadSettingError } from "@ai-sdk/provider";
|
|
863
770
|
function loadSetting({
|
|
864
771
|
settingValue,
|
|
865
772
|
environmentVariableName,
|
|
@@ -870,29 +777,86 @@ function loadSetting({
|
|
|
870
777
|
return settingValue;
|
|
871
778
|
}
|
|
872
779
|
if (settingValue != null) {
|
|
873
|
-
throw new
|
|
780
|
+
throw new LoadSettingError({
|
|
874
781
|
message: `${description} setting must be a string.`
|
|
875
782
|
});
|
|
876
783
|
}
|
|
877
784
|
if (typeof process === "undefined") {
|
|
878
|
-
throw new
|
|
879
|
-
message: `${description} setting is missing. Pass it using the '${settingName}' parameter. Environment variables
|
|
785
|
+
throw new LoadSettingError({
|
|
786
|
+
message: `${description} setting is missing. Pass it using the '${settingName}' parameter. Environment variables are not supported in this environment.`
|
|
880
787
|
});
|
|
881
788
|
}
|
|
882
789
|
settingValue = process.env[environmentVariableName];
|
|
883
790
|
if (settingValue == null) {
|
|
884
|
-
throw new
|
|
791
|
+
throw new LoadSettingError({
|
|
885
792
|
message: `${description} setting is missing. Pass it using the '${settingName}' parameter or the ${environmentVariableName} environment variable.`
|
|
886
793
|
});
|
|
887
794
|
}
|
|
888
795
|
if (typeof settingValue !== "string") {
|
|
889
|
-
throw new
|
|
796
|
+
throw new LoadSettingError({
|
|
890
797
|
message: `${description} setting must be a string. The value of the ${environmentVariableName} environment variable is not a string.`
|
|
891
798
|
});
|
|
892
799
|
}
|
|
893
800
|
return settingValue;
|
|
894
801
|
}
|
|
895
802
|
|
|
803
|
+
// src/map-reasoning-to-provider.ts
|
|
804
|
+
function isCustomReasoning(reasoning) {
|
|
805
|
+
return reasoning !== void 0 && reasoning !== "provider-default";
|
|
806
|
+
}
|
|
807
|
+
function mapReasoningToProviderEffort({
|
|
808
|
+
reasoning,
|
|
809
|
+
effortMap,
|
|
810
|
+
warnings
|
|
811
|
+
}) {
|
|
812
|
+
const mapped = effortMap[reasoning];
|
|
813
|
+
if (mapped == null) {
|
|
814
|
+
warnings.push({
|
|
815
|
+
type: "unsupported",
|
|
816
|
+
feature: "reasoning",
|
|
817
|
+
details: `reasoning "${reasoning}" is not supported by this model.`
|
|
818
|
+
});
|
|
819
|
+
return void 0;
|
|
820
|
+
}
|
|
821
|
+
if (mapped !== reasoning) {
|
|
822
|
+
warnings.push({
|
|
823
|
+
type: "compatibility",
|
|
824
|
+
feature: "reasoning",
|
|
825
|
+
details: `reasoning "${reasoning}" is not directly supported by this model. mapped to effort "${mapped}".`
|
|
826
|
+
});
|
|
827
|
+
}
|
|
828
|
+
return mapped;
|
|
829
|
+
}
|
|
830
|
+
var DEFAULT_REASONING_BUDGET_PERCENTAGES = {
|
|
831
|
+
minimal: 0.02,
|
|
832
|
+
low: 0.1,
|
|
833
|
+
medium: 0.3,
|
|
834
|
+
high: 0.6,
|
|
835
|
+
xhigh: 0.9
|
|
836
|
+
};
|
|
837
|
+
function mapReasoningToProviderBudget({
|
|
838
|
+
reasoning,
|
|
839
|
+
maxOutputTokens,
|
|
840
|
+
maxReasoningBudget,
|
|
841
|
+
minReasoningBudget = 1024,
|
|
842
|
+
budgetPercentages = DEFAULT_REASONING_BUDGET_PERCENTAGES,
|
|
843
|
+
warnings
|
|
844
|
+
}) {
|
|
845
|
+
const pct = budgetPercentages[reasoning];
|
|
846
|
+
if (pct == null) {
|
|
847
|
+
warnings.push({
|
|
848
|
+
type: "unsupported",
|
|
849
|
+
feature: "reasoning",
|
|
850
|
+
details: `reasoning "${reasoning}" is not supported by this model.`
|
|
851
|
+
});
|
|
852
|
+
return void 0;
|
|
853
|
+
}
|
|
854
|
+
return Math.min(
|
|
855
|
+
maxReasoningBudget,
|
|
856
|
+
Math.max(minReasoningBudget, Math.round(maxOutputTokens * pct))
|
|
857
|
+
);
|
|
858
|
+
}
|
|
859
|
+
|
|
896
860
|
// src/media-type-to-extension.ts
|
|
897
861
|
function mediaTypeToExtension(mediaType) {
|
|
898
862
|
var _a2;
|
|
@@ -907,7 +871,10 @@ function mediaTypeToExtension(mediaType) {
|
|
|
907
871
|
}
|
|
908
872
|
|
|
909
873
|
// src/parse-json.ts
|
|
910
|
-
|
|
874
|
+
import {
|
|
875
|
+
JSONParseError,
|
|
876
|
+
TypeValidationError as TypeValidationError3
|
|
877
|
+
} from "@ai-sdk/provider";
|
|
911
878
|
|
|
912
879
|
// src/secure-json-parse.ts
|
|
913
880
|
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 +926,11 @@ function secureJsonParse(text) {
|
|
|
959
926
|
}
|
|
960
927
|
|
|
961
928
|
// src/validate-types.ts
|
|
962
|
-
|
|
929
|
+
import { TypeValidationError as TypeValidationError2 } from "@ai-sdk/provider";
|
|
963
930
|
|
|
964
931
|
// src/schema.ts
|
|
965
|
-
|
|
966
|
-
|
|
932
|
+
import { TypeValidationError } from "@ai-sdk/provider";
|
|
933
|
+
import * as z4 from "zod/v4";
|
|
967
934
|
|
|
968
935
|
// src/add-additional-properties-to-json-schema.ts
|
|
969
936
|
function addAdditionalPropertiesToJsonSchema(jsonSchema2) {
|
|
@@ -1035,7 +1002,7 @@ var getDefaultOptions = (options) => typeof options === "string" ? {
|
|
|
1035
1002
|
};
|
|
1036
1003
|
|
|
1037
1004
|
// src/to-json-schema/zod3-to-json-schema/select-parser.ts
|
|
1038
|
-
|
|
1005
|
+
import { ZodFirstPartyTypeKind as ZodFirstPartyTypeKind3 } from "zod/v3";
|
|
1039
1006
|
|
|
1040
1007
|
// src/to-json-schema/zod3-to-json-schema/parsers/any.ts
|
|
1041
1008
|
function parseAnyDef() {
|
|
@@ -1043,13 +1010,13 @@ function parseAnyDef() {
|
|
|
1043
1010
|
}
|
|
1044
1011
|
|
|
1045
1012
|
// src/to-json-schema/zod3-to-json-schema/parsers/array.ts
|
|
1046
|
-
|
|
1013
|
+
import { ZodFirstPartyTypeKind } from "zod/v3";
|
|
1047
1014
|
function parseArrayDef(def, refs) {
|
|
1048
1015
|
var _a2, _b2, _c;
|
|
1049
1016
|
const res = {
|
|
1050
1017
|
type: "array"
|
|
1051
1018
|
};
|
|
1052
|
-
if (((_a2 = def.type) == null ? void 0 : _a2._def) && ((_c = (_b2 = def.type) == null ? void 0 : _b2._def) == null ? void 0 : _c.typeName) !==
|
|
1019
|
+
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
1020
|
res.items = parseDef(def.type._def, {
|
|
1054
1021
|
...refs,
|
|
1055
1022
|
currentPath: [...refs.currentPath, "items"]
|
|
@@ -1119,7 +1086,7 @@ function parseDateDef(def, refs, overrideDateStrategy) {
|
|
|
1119
1086
|
const strategy = overrideDateStrategy != null ? overrideDateStrategy : refs.dateStrategy;
|
|
1120
1087
|
if (Array.isArray(strategy)) {
|
|
1121
1088
|
return {
|
|
1122
|
-
anyOf: strategy.map((item
|
|
1089
|
+
anyOf: strategy.map((item) => parseDateDef(def, refs, item))
|
|
1123
1090
|
};
|
|
1124
1091
|
}
|
|
1125
1092
|
switch (strategy) {
|
|
@@ -1200,7 +1167,7 @@ function parseIntersectionDef(def, refs) {
|
|
|
1200
1167
|
} else {
|
|
1201
1168
|
let nestedSchema = schema;
|
|
1202
1169
|
if ("additionalProperties" in schema && schema.additionalProperties === false) {
|
|
1203
|
-
const { additionalProperties, ...rest } = schema;
|
|
1170
|
+
const { additionalProperties: _additionalProperties, ...rest } = schema;
|
|
1204
1171
|
nestedSchema = rest;
|
|
1205
1172
|
}
|
|
1206
1173
|
mergedAllOf.push(nestedSchema);
|
|
@@ -1224,7 +1191,9 @@ function parseLiteralDef(def) {
|
|
|
1224
1191
|
}
|
|
1225
1192
|
|
|
1226
1193
|
// src/to-json-schema/zod3-to-json-schema/parsers/record.ts
|
|
1227
|
-
|
|
1194
|
+
import {
|
|
1195
|
+
ZodFirstPartyTypeKind as ZodFirstPartyTypeKind2
|
|
1196
|
+
} from "zod/v3";
|
|
1228
1197
|
|
|
1229
1198
|
// src/to-json-schema/zod3-to-json-schema/parsers/string.ts
|
|
1230
1199
|
var emojiRegex = void 0;
|
|
@@ -1572,21 +1541,21 @@ function parseRecordDef(def, refs) {
|
|
|
1572
1541
|
currentPath: [...refs.currentPath, "additionalProperties"]
|
|
1573
1542
|
})) != null ? _a2 : refs.allowedAdditionalProperties
|
|
1574
1543
|
};
|
|
1575
|
-
if (((_b2 = def.keyType) == null ? void 0 : _b2._def.typeName) ===
|
|
1576
|
-
const { type, ...keyType } = parseStringDef(def.keyType._def, refs);
|
|
1544
|
+
if (((_b2 = def.keyType) == null ? void 0 : _b2._def.typeName) === ZodFirstPartyTypeKind2.ZodString && ((_c = def.keyType._def.checks) == null ? void 0 : _c.length)) {
|
|
1545
|
+
const { type: _type, ...keyType } = parseStringDef(def.keyType._def, refs);
|
|
1577
1546
|
return {
|
|
1578
1547
|
...schema,
|
|
1579
1548
|
propertyNames: keyType
|
|
1580
1549
|
};
|
|
1581
|
-
} else if (((_d = def.keyType) == null ? void 0 : _d._def.typeName) ===
|
|
1550
|
+
} else if (((_d = def.keyType) == null ? void 0 : _d._def.typeName) === ZodFirstPartyTypeKind2.ZodEnum) {
|
|
1582
1551
|
return {
|
|
1583
1552
|
...schema,
|
|
1584
1553
|
propertyNames: {
|
|
1585
1554
|
enum: def.keyType._def.values
|
|
1586
1555
|
}
|
|
1587
1556
|
};
|
|
1588
|
-
} else if (((_e = def.keyType) == null ? void 0 : _e._def.typeName) ===
|
|
1589
|
-
const { type, ...keyType } = parseBrandedDef(
|
|
1557
|
+
} 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)) {
|
|
1558
|
+
const { type: _type, ...keyType } = parseBrandedDef(
|
|
1590
1559
|
def.keyType._def,
|
|
1591
1560
|
refs
|
|
1592
1561
|
);
|
|
@@ -1959,73 +1928,73 @@ var parseReadonlyDef = (def, refs) => {
|
|
|
1959
1928
|
// src/to-json-schema/zod3-to-json-schema/select-parser.ts
|
|
1960
1929
|
var selectParser = (def, typeName, refs) => {
|
|
1961
1930
|
switch (typeName) {
|
|
1962
|
-
case
|
|
1931
|
+
case ZodFirstPartyTypeKind3.ZodString:
|
|
1963
1932
|
return parseStringDef(def, refs);
|
|
1964
|
-
case
|
|
1933
|
+
case ZodFirstPartyTypeKind3.ZodNumber:
|
|
1965
1934
|
return parseNumberDef(def);
|
|
1966
|
-
case
|
|
1935
|
+
case ZodFirstPartyTypeKind3.ZodObject:
|
|
1967
1936
|
return parseObjectDef(def, refs);
|
|
1968
|
-
case
|
|
1937
|
+
case ZodFirstPartyTypeKind3.ZodBigInt:
|
|
1969
1938
|
return parseBigintDef(def);
|
|
1970
|
-
case
|
|
1939
|
+
case ZodFirstPartyTypeKind3.ZodBoolean:
|
|
1971
1940
|
return parseBooleanDef();
|
|
1972
|
-
case
|
|
1941
|
+
case ZodFirstPartyTypeKind3.ZodDate:
|
|
1973
1942
|
return parseDateDef(def, refs);
|
|
1974
|
-
case
|
|
1943
|
+
case ZodFirstPartyTypeKind3.ZodUndefined:
|
|
1975
1944
|
return parseUndefinedDef();
|
|
1976
|
-
case
|
|
1945
|
+
case ZodFirstPartyTypeKind3.ZodNull:
|
|
1977
1946
|
return parseNullDef();
|
|
1978
|
-
case
|
|
1947
|
+
case ZodFirstPartyTypeKind3.ZodArray:
|
|
1979
1948
|
return parseArrayDef(def, refs);
|
|
1980
|
-
case
|
|
1981
|
-
case
|
|
1949
|
+
case ZodFirstPartyTypeKind3.ZodUnion:
|
|
1950
|
+
case ZodFirstPartyTypeKind3.ZodDiscriminatedUnion:
|
|
1982
1951
|
return parseUnionDef(def, refs);
|
|
1983
|
-
case
|
|
1952
|
+
case ZodFirstPartyTypeKind3.ZodIntersection:
|
|
1984
1953
|
return parseIntersectionDef(def, refs);
|
|
1985
|
-
case
|
|
1954
|
+
case ZodFirstPartyTypeKind3.ZodTuple:
|
|
1986
1955
|
return parseTupleDef(def, refs);
|
|
1987
|
-
case
|
|
1956
|
+
case ZodFirstPartyTypeKind3.ZodRecord:
|
|
1988
1957
|
return parseRecordDef(def, refs);
|
|
1989
|
-
case
|
|
1958
|
+
case ZodFirstPartyTypeKind3.ZodLiteral:
|
|
1990
1959
|
return parseLiteralDef(def);
|
|
1991
|
-
case
|
|
1960
|
+
case ZodFirstPartyTypeKind3.ZodEnum:
|
|
1992
1961
|
return parseEnumDef(def);
|
|
1993
|
-
case
|
|
1962
|
+
case ZodFirstPartyTypeKind3.ZodNativeEnum:
|
|
1994
1963
|
return parseNativeEnumDef(def);
|
|
1995
|
-
case
|
|
1964
|
+
case ZodFirstPartyTypeKind3.ZodNullable:
|
|
1996
1965
|
return parseNullableDef(def, refs);
|
|
1997
|
-
case
|
|
1966
|
+
case ZodFirstPartyTypeKind3.ZodOptional:
|
|
1998
1967
|
return parseOptionalDef(def, refs);
|
|
1999
|
-
case
|
|
1968
|
+
case ZodFirstPartyTypeKind3.ZodMap:
|
|
2000
1969
|
return parseMapDef(def, refs);
|
|
2001
|
-
case
|
|
1970
|
+
case ZodFirstPartyTypeKind3.ZodSet:
|
|
2002
1971
|
return parseSetDef(def, refs);
|
|
2003
|
-
case
|
|
1972
|
+
case ZodFirstPartyTypeKind3.ZodLazy:
|
|
2004
1973
|
return () => def.getter()._def;
|
|
2005
|
-
case
|
|
1974
|
+
case ZodFirstPartyTypeKind3.ZodPromise:
|
|
2006
1975
|
return parsePromiseDef(def, refs);
|
|
2007
|
-
case
|
|
2008
|
-
case
|
|
1976
|
+
case ZodFirstPartyTypeKind3.ZodNaN:
|
|
1977
|
+
case ZodFirstPartyTypeKind3.ZodNever:
|
|
2009
1978
|
return parseNeverDef();
|
|
2010
|
-
case
|
|
1979
|
+
case ZodFirstPartyTypeKind3.ZodEffects:
|
|
2011
1980
|
return parseEffectsDef(def, refs);
|
|
2012
|
-
case
|
|
1981
|
+
case ZodFirstPartyTypeKind3.ZodAny:
|
|
2013
1982
|
return parseAnyDef();
|
|
2014
|
-
case
|
|
1983
|
+
case ZodFirstPartyTypeKind3.ZodUnknown:
|
|
2015
1984
|
return parseUnknownDef();
|
|
2016
|
-
case
|
|
1985
|
+
case ZodFirstPartyTypeKind3.ZodDefault:
|
|
2017
1986
|
return parseDefaultDef(def, refs);
|
|
2018
|
-
case
|
|
1987
|
+
case ZodFirstPartyTypeKind3.ZodBranded:
|
|
2019
1988
|
return parseBrandedDef(def, refs);
|
|
2020
|
-
case
|
|
1989
|
+
case ZodFirstPartyTypeKind3.ZodReadonly:
|
|
2021
1990
|
return parseReadonlyDef(def, refs);
|
|
2022
|
-
case
|
|
1991
|
+
case ZodFirstPartyTypeKind3.ZodCatch:
|
|
2023
1992
|
return parseCatchDef(def, refs);
|
|
2024
|
-
case
|
|
1993
|
+
case ZodFirstPartyTypeKind3.ZodPipeline:
|
|
2025
1994
|
return parsePipelineDef(def, refs);
|
|
2026
|
-
case
|
|
2027
|
-
case
|
|
2028
|
-
case
|
|
1995
|
+
case ZodFirstPartyTypeKind3.ZodFunction:
|
|
1996
|
+
case ZodFirstPartyTypeKind3.ZodVoid:
|
|
1997
|
+
case ZodFirstPartyTypeKind3.ZodSymbol:
|
|
2029
1998
|
return void 0;
|
|
2030
1999
|
default:
|
|
2031
2000
|
return /* @__PURE__ */ ((_) => void 0)(typeName);
|
|
@@ -2224,7 +2193,7 @@ function standardSchema(standardSchema2) {
|
|
|
2224
2193
|
const result = await standardSchema2["~standard"].validate(value);
|
|
2225
2194
|
return "value" in result ? { success: true, value: result.value } : {
|
|
2226
2195
|
success: false,
|
|
2227
|
-
error: new
|
|
2196
|
+
error: new TypeValidationError({
|
|
2228
2197
|
value,
|
|
2229
2198
|
cause: result.issues
|
|
2230
2199
|
})
|
|
@@ -2288,7 +2257,7 @@ async function validateTypes({
|
|
|
2288
2257
|
}) {
|
|
2289
2258
|
const result = await safeValidateTypes({ value, schema, context });
|
|
2290
2259
|
if (!result.success) {
|
|
2291
|
-
throw
|
|
2260
|
+
throw TypeValidationError2.wrap({ value, cause: result.error, context });
|
|
2292
2261
|
}
|
|
2293
2262
|
return result.value;
|
|
2294
2263
|
}
|
|
@@ -2308,13 +2277,13 @@ async function safeValidateTypes({
|
|
|
2308
2277
|
}
|
|
2309
2278
|
return {
|
|
2310
2279
|
success: false,
|
|
2311
|
-
error:
|
|
2280
|
+
error: TypeValidationError2.wrap({ value, cause: result.error, context }),
|
|
2312
2281
|
rawValue: value
|
|
2313
2282
|
};
|
|
2314
2283
|
} catch (error) {
|
|
2315
2284
|
return {
|
|
2316
2285
|
success: false,
|
|
2317
|
-
error:
|
|
2286
|
+
error: TypeValidationError2.wrap({ value, cause: error, context }),
|
|
2318
2287
|
rawValue: value
|
|
2319
2288
|
};
|
|
2320
2289
|
}
|
|
@@ -2332,10 +2301,10 @@ async function parseJSON({
|
|
|
2332
2301
|
}
|
|
2333
2302
|
return validateTypes({ value, schema });
|
|
2334
2303
|
} catch (error) {
|
|
2335
|
-
if (
|
|
2304
|
+
if (JSONParseError.isInstance(error) || TypeValidationError3.isInstance(error)) {
|
|
2336
2305
|
throw error;
|
|
2337
2306
|
}
|
|
2338
|
-
throw new
|
|
2307
|
+
throw new JSONParseError({ text, cause: error });
|
|
2339
2308
|
}
|
|
2340
2309
|
}
|
|
2341
2310
|
async function safeParseJSON({
|
|
@@ -2351,7 +2320,7 @@ async function safeParseJSON({
|
|
|
2351
2320
|
} catch (error) {
|
|
2352
2321
|
return {
|
|
2353
2322
|
success: false,
|
|
2354
|
-
error:
|
|
2323
|
+
error: JSONParseError.isInstance(error) ? error : new JSONParseError({ text, cause: error }),
|
|
2355
2324
|
rawValue: void 0
|
|
2356
2325
|
};
|
|
2357
2326
|
}
|
|
@@ -2366,12 +2335,14 @@ function isParsableJson(input) {
|
|
|
2366
2335
|
}
|
|
2367
2336
|
|
|
2368
2337
|
// src/parse-json-event-stream.ts
|
|
2369
|
-
|
|
2338
|
+
import {
|
|
2339
|
+
EventSourceParserStream
|
|
2340
|
+
} from "eventsource-parser/stream";
|
|
2370
2341
|
function parseJsonEventStream({
|
|
2371
2342
|
stream,
|
|
2372
2343
|
schema
|
|
2373
2344
|
}) {
|
|
2374
|
-
return stream.pipeThrough(new TextDecoderStream()).pipeThrough(new
|
|
2345
|
+
return stream.pipeThrough(new TextDecoderStream()).pipeThrough(new EventSourceParserStream()).pipeThrough(
|
|
2375
2346
|
new TransformStream({
|
|
2376
2347
|
async transform({ data }, controller) {
|
|
2377
2348
|
if (data === "[DONE]") {
|
|
@@ -2384,7 +2355,7 @@ function parseJsonEventStream({
|
|
|
2384
2355
|
}
|
|
2385
2356
|
|
|
2386
2357
|
// src/parse-provider-options.ts
|
|
2387
|
-
|
|
2358
|
+
import { InvalidArgumentError as InvalidArgumentError2 } from "@ai-sdk/provider";
|
|
2388
2359
|
async function parseProviderOptions({
|
|
2389
2360
|
provider,
|
|
2390
2361
|
providerOptions,
|
|
@@ -2398,7 +2369,7 @@ async function parseProviderOptions({
|
|
|
2398
2369
|
schema
|
|
2399
2370
|
});
|
|
2400
2371
|
if (!parsedProviderOptions.success) {
|
|
2401
|
-
throw new
|
|
2372
|
+
throw new InvalidArgumentError2({
|
|
2402
2373
|
argument: "providerOptions",
|
|
2403
2374
|
message: `invalid ${provider} provider options`,
|
|
2404
2375
|
cause: parsedProviderOptions.error
|
|
@@ -2408,7 +2379,7 @@ async function parseProviderOptions({
|
|
|
2408
2379
|
}
|
|
2409
2380
|
|
|
2410
2381
|
// src/post-to-api.ts
|
|
2411
|
-
|
|
2382
|
+
import { APICallError as APICallError3 } from "@ai-sdk/provider";
|
|
2412
2383
|
var getOriginalFetch2 = () => globalThis.fetch;
|
|
2413
2384
|
var postJsonToApi = async ({
|
|
2414
2385
|
url,
|
|
@@ -2483,10 +2454,10 @@ var postToApi = async ({
|
|
|
2483
2454
|
requestBodyValues: body.values
|
|
2484
2455
|
});
|
|
2485
2456
|
} catch (error) {
|
|
2486
|
-
if (isAbortError(error) ||
|
|
2457
|
+
if (isAbortError(error) || APICallError3.isInstance(error)) {
|
|
2487
2458
|
throw error;
|
|
2488
2459
|
}
|
|
2489
|
-
throw new
|
|
2460
|
+
throw new APICallError3({
|
|
2490
2461
|
message: "Failed to process error response",
|
|
2491
2462
|
cause: error,
|
|
2492
2463
|
statusCode: response.status,
|
|
@@ -2505,11 +2476,11 @@ var postToApi = async ({
|
|
|
2505
2476
|
});
|
|
2506
2477
|
} catch (error) {
|
|
2507
2478
|
if (error instanceof Error) {
|
|
2508
|
-
if (isAbortError(error) ||
|
|
2479
|
+
if (isAbortError(error) || APICallError3.isInstance(error)) {
|
|
2509
2480
|
throw error;
|
|
2510
2481
|
}
|
|
2511
2482
|
}
|
|
2512
|
-
throw new
|
|
2483
|
+
throw new APICallError3({
|
|
2513
2484
|
message: "Failed to process successful response",
|
|
2514
2485
|
cause: error,
|
|
2515
2486
|
statusCode: response.status,
|
|
@@ -2604,8 +2575,26 @@ async function resolve(value) {
|
|
|
2604
2575
|
return Promise.resolve(value);
|
|
2605
2576
|
}
|
|
2606
2577
|
|
|
2578
|
+
// src/resolve-provider-reference.ts
|
|
2579
|
+
import {
|
|
2580
|
+
NoSuchProviderReferenceError
|
|
2581
|
+
} from "@ai-sdk/provider";
|
|
2582
|
+
function resolveProviderReference({
|
|
2583
|
+
reference,
|
|
2584
|
+
provider
|
|
2585
|
+
}) {
|
|
2586
|
+
const id = reference[provider];
|
|
2587
|
+
if (id != null) {
|
|
2588
|
+
return id;
|
|
2589
|
+
}
|
|
2590
|
+
throw new NoSuchProviderReferenceError({
|
|
2591
|
+
provider,
|
|
2592
|
+
reference
|
|
2593
|
+
});
|
|
2594
|
+
}
|
|
2595
|
+
|
|
2607
2596
|
// src/response-handler.ts
|
|
2608
|
-
|
|
2597
|
+
import { APICallError as APICallError4, EmptyResponseBodyError } from "@ai-sdk/provider";
|
|
2609
2598
|
var createJsonErrorResponseHandler = ({
|
|
2610
2599
|
errorSchema,
|
|
2611
2600
|
errorToMessage,
|
|
@@ -2616,7 +2605,7 @@ var createJsonErrorResponseHandler = ({
|
|
|
2616
2605
|
if (responseBody.trim() === "") {
|
|
2617
2606
|
return {
|
|
2618
2607
|
responseHeaders,
|
|
2619
|
-
value: new
|
|
2608
|
+
value: new APICallError4({
|
|
2620
2609
|
message: response.statusText,
|
|
2621
2610
|
url,
|
|
2622
2611
|
requestBodyValues,
|
|
@@ -2634,7 +2623,7 @@ var createJsonErrorResponseHandler = ({
|
|
|
2634
2623
|
});
|
|
2635
2624
|
return {
|
|
2636
2625
|
responseHeaders,
|
|
2637
|
-
value: new
|
|
2626
|
+
value: new APICallError4({
|
|
2638
2627
|
message: errorToMessage(parsedError),
|
|
2639
2628
|
url,
|
|
2640
2629
|
requestBodyValues,
|
|
@@ -2645,10 +2634,10 @@ var createJsonErrorResponseHandler = ({
|
|
|
2645
2634
|
isRetryable: isRetryable == null ? void 0 : isRetryable(response, parsedError)
|
|
2646
2635
|
})
|
|
2647
2636
|
};
|
|
2648
|
-
} catch (
|
|
2637
|
+
} catch (e) {
|
|
2649
2638
|
return {
|
|
2650
2639
|
responseHeaders,
|
|
2651
|
-
value: new
|
|
2640
|
+
value: new APICallError4({
|
|
2652
2641
|
message: response.statusText,
|
|
2653
2642
|
url,
|
|
2654
2643
|
requestBodyValues,
|
|
@@ -2663,7 +2652,7 @@ var createJsonErrorResponseHandler = ({
|
|
|
2663
2652
|
var createEventSourceResponseHandler = (chunkSchema) => async ({ response }) => {
|
|
2664
2653
|
const responseHeaders = extractResponseHeaders(response);
|
|
2665
2654
|
if (response.body == null) {
|
|
2666
|
-
throw new
|
|
2655
|
+
throw new EmptyResponseBodyError({});
|
|
2667
2656
|
}
|
|
2668
2657
|
return {
|
|
2669
2658
|
responseHeaders,
|
|
@@ -2681,7 +2670,7 @@ var createJsonResponseHandler = (responseSchema) => async ({ response, url, requ
|
|
|
2681
2670
|
});
|
|
2682
2671
|
const responseHeaders = extractResponseHeaders(response);
|
|
2683
2672
|
if (!parsedResult.success) {
|
|
2684
|
-
throw new
|
|
2673
|
+
throw new APICallError4({
|
|
2685
2674
|
message: "Invalid JSON response",
|
|
2686
2675
|
cause: parsedResult.error,
|
|
2687
2676
|
statusCode: response.status,
|
|
@@ -2700,7 +2689,7 @@ var createJsonResponseHandler = (responseSchema) => async ({ response, url, requ
|
|
|
2700
2689
|
var createBinaryResponseHandler = () => async ({ response, url, requestBodyValues }) => {
|
|
2701
2690
|
const responseHeaders = extractResponseHeaders(response);
|
|
2702
2691
|
if (!response.body) {
|
|
2703
|
-
throw new
|
|
2692
|
+
throw new APICallError4({
|
|
2704
2693
|
message: "Response body is empty",
|
|
2705
2694
|
url,
|
|
2706
2695
|
requestBodyValues,
|
|
@@ -2716,7 +2705,7 @@ var createBinaryResponseHandler = () => async ({ response, url, requestBodyValue
|
|
|
2716
2705
|
value: new Uint8Array(buffer)
|
|
2717
2706
|
};
|
|
2718
2707
|
} catch (error) {
|
|
2719
|
-
throw new
|
|
2708
|
+
throw new APICallError4({
|
|
2720
2709
|
message: "Failed to read response as array buffer",
|
|
2721
2710
|
url,
|
|
2722
2711
|
requestBodyValues,
|
|
@@ -2732,7 +2721,7 @@ var createStatusCodeErrorResponseHandler = () => async ({ response, url, request
|
|
|
2732
2721
|
const responseBody = await response.text();
|
|
2733
2722
|
return {
|
|
2734
2723
|
responseHeaders,
|
|
2735
|
-
value: new
|
|
2724
|
+
value: new APICallError4({
|
|
2736
2725
|
message: response.statusText,
|
|
2737
2726
|
url,
|
|
2738
2727
|
requestBodyValues,
|
|
@@ -2743,6 +2732,50 @@ var createStatusCodeErrorResponseHandler = () => async ({ response, url, request
|
|
|
2743
2732
|
};
|
|
2744
2733
|
};
|
|
2745
2734
|
|
|
2735
|
+
// src/is-json-serializable.ts
|
|
2736
|
+
function isJSONSerializable(value) {
|
|
2737
|
+
if (value === null || value === void 0) return true;
|
|
2738
|
+
const type = typeof value;
|
|
2739
|
+
if (type === "string" || type === "number" || type === "boolean") return true;
|
|
2740
|
+
if (type === "function" || type === "symbol" || type === "bigint")
|
|
2741
|
+
return false;
|
|
2742
|
+
if (Array.isArray(value)) {
|
|
2743
|
+
return value.every(isJSONSerializable);
|
|
2744
|
+
}
|
|
2745
|
+
if (Object.getPrototypeOf(value) === Object.prototype) {
|
|
2746
|
+
return Object.values(value).every(
|
|
2747
|
+
isJSONSerializable
|
|
2748
|
+
);
|
|
2749
|
+
}
|
|
2750
|
+
return false;
|
|
2751
|
+
}
|
|
2752
|
+
|
|
2753
|
+
// src/serialize-model-options.ts
|
|
2754
|
+
function serializeModelOptions(options) {
|
|
2755
|
+
const serializableConfig = {};
|
|
2756
|
+
for (const [key, value] of Object.entries(options.config)) {
|
|
2757
|
+
if (key === "headers") {
|
|
2758
|
+
const resolvedHeaders = resolveSync(value);
|
|
2759
|
+
if (isJSONSerializable(resolvedHeaders)) {
|
|
2760
|
+
serializableConfig[key] = resolvedHeaders;
|
|
2761
|
+
}
|
|
2762
|
+
} else if (isJSONSerializable(value)) {
|
|
2763
|
+
serializableConfig[key] = value;
|
|
2764
|
+
}
|
|
2765
|
+
}
|
|
2766
|
+
return { modelId: options.modelId, config: serializableConfig };
|
|
2767
|
+
}
|
|
2768
|
+
function resolveSync(value) {
|
|
2769
|
+
let next = value;
|
|
2770
|
+
if (typeof value === "function") {
|
|
2771
|
+
next = value();
|
|
2772
|
+
}
|
|
2773
|
+
if (next instanceof Promise) {
|
|
2774
|
+
throw new Error("Promise returned from resolveSync");
|
|
2775
|
+
}
|
|
2776
|
+
return next;
|
|
2777
|
+
}
|
|
2778
|
+
|
|
2746
2779
|
// src/strip-file-extension.ts
|
|
2747
2780
|
function stripFileExtension(filename) {
|
|
2748
2781
|
const firstDotIndex = filename.indexOf(".");
|
|
@@ -2779,14 +2812,18 @@ async function* executeTool({
|
|
|
2779
2812
|
}
|
|
2780
2813
|
|
|
2781
2814
|
// src/index.ts
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2815
|
+
import { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE } from "@workflow/serde";
|
|
2816
|
+
import {
|
|
2817
|
+
EventSourceParserStream as EventSourceParserStream2
|
|
2818
|
+
} from "eventsource-parser/stream";
|
|
2819
|
+
export {
|
|
2785
2820
|
DEFAULT_MAX_DOWNLOAD_SIZE,
|
|
2786
2821
|
DelayedPromise,
|
|
2787
2822
|
DownloadError,
|
|
2788
|
-
EventSourceParserStream,
|
|
2823
|
+
EventSourceParserStream2 as EventSourceParserStream,
|
|
2789
2824
|
VERSION,
|
|
2825
|
+
WORKFLOW_DESERIALIZE,
|
|
2826
|
+
WORKFLOW_SERIALIZE,
|
|
2790
2827
|
asSchema,
|
|
2791
2828
|
combineHeaders,
|
|
2792
2829
|
convertAsyncIteratorToReadableStream,
|
|
@@ -2815,14 +2852,18 @@ var import_stream2 = require("eventsource-parser/stream");
|
|
|
2815
2852
|
getRuntimeEnvironmentUserAgent,
|
|
2816
2853
|
injectJsonInstructionIntoMessages,
|
|
2817
2854
|
isAbortError,
|
|
2855
|
+
isCustomReasoning,
|
|
2818
2856
|
isNonNullable,
|
|
2819
2857
|
isParsableJson,
|
|
2858
|
+
isProviderReference,
|
|
2820
2859
|
isUrlSupported,
|
|
2821
2860
|
jsonSchema,
|
|
2822
2861
|
lazySchema,
|
|
2823
2862
|
loadApiKey,
|
|
2824
2863
|
loadOptionalSetting,
|
|
2825
2864
|
loadSetting,
|
|
2865
|
+
mapReasoningToProviderBudget,
|
|
2866
|
+
mapReasoningToProviderEffort,
|
|
2826
2867
|
mediaTypeToExtension,
|
|
2827
2868
|
normalizeHeaders,
|
|
2828
2869
|
parseJSON,
|
|
@@ -2834,8 +2875,10 @@ var import_stream2 = require("eventsource-parser/stream");
|
|
|
2834
2875
|
readResponseWithSizeLimit,
|
|
2835
2876
|
removeUndefinedEntries,
|
|
2836
2877
|
resolve,
|
|
2878
|
+
resolveProviderReference,
|
|
2837
2879
|
safeParseJSON,
|
|
2838
2880
|
safeValidateTypes,
|
|
2881
|
+
serializeModelOptions,
|
|
2839
2882
|
stripFileExtension,
|
|
2840
2883
|
tool,
|
|
2841
2884
|
validateDownloadUrl,
|
|
@@ -2843,5 +2886,5 @@ var import_stream2 = require("eventsource-parser/stream");
|
|
|
2843
2886
|
withUserAgentSuffix,
|
|
2844
2887
|
withoutTrailingSlash,
|
|
2845
2888
|
zodSchema
|
|
2846
|
-
}
|
|
2889
|
+
};
|
|
2847
2890
|
//# sourceMappingURL=index.js.map
|