@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.
Files changed (48) hide show
  1. package/CHANGELOG.md +220 -0
  2. package/dist/index.d.ts +423 -169
  3. package/dist/index.js +314 -271
  4. package/dist/index.js.map +1 -1
  5. package/dist/test/index.js +2 -35
  6. package/dist/test/index.js.map +1 -1
  7. package/package.json +8 -10
  8. package/src/convert-image-model-file-to-data-uri.ts +3 -3
  9. package/src/create-tool-name-mapping.ts +5 -21
  10. package/src/get-error-message.ts +1 -1
  11. package/src/has-required-key.ts +6 -0
  12. package/src/index.ts +17 -7
  13. package/src/inject-json-instruction.ts +5 -5
  14. package/src/is-json-serializable.ts +29 -0
  15. package/src/is-provider-reference.ts +18 -0
  16. package/src/load-api-key.ts +1 -1
  17. package/src/load-setting.ts +1 -1
  18. package/src/map-reasoning-to-provider.ts +105 -0
  19. package/src/provider-tool-factory.ts +43 -32
  20. package/src/resolve-provider-reference.ts +27 -0
  21. package/src/resolve.ts +15 -0
  22. package/src/response-handler.ts +1 -1
  23. package/src/secure-json-parse.ts +1 -1
  24. package/src/serialize-model-options.ts +63 -0
  25. package/src/to-json-schema/zod3-to-json-schema/parsers/date.ts +1 -1
  26. package/src/to-json-schema/zod3-to-json-schema/parsers/intersection.ts +1 -1
  27. package/src/to-json-schema/zod3-to-json-schema/parsers/record.ts +2 -2
  28. package/src/types/assistant-model-message.ts +4 -0
  29. package/src/types/content-part.ts +98 -14
  30. package/src/types/context.ts +4 -0
  31. package/src/types/execute-tool.ts +24 -4
  32. package/src/types/index.ts +10 -9
  33. package/src/types/infer-tool-context.ts +12 -0
  34. package/src/types/infer-tool-input.ts +7 -0
  35. package/src/types/infer-tool-output.ts +7 -0
  36. package/src/types/infer-tool-set-context.ts +17 -0
  37. package/src/types/provider-options.ts +2 -2
  38. package/src/types/provider-reference.ts +10 -0
  39. package/src/types/tool-set.ts +22 -0
  40. package/src/types/tool.ts +74 -40
  41. package/src/types/union-to-intersection.ts +17 -0
  42. package/src/validate-download-url.ts +7 -2
  43. package/dist/index.d.mts +0 -1433
  44. package/dist/index.mjs +0 -2759
  45. package/dist/index.mjs.map +0 -1
  46. package/dist/test/index.d.mts +0 -17
  47. package/dist/test/index.mjs +0 -77
  48. 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 = (_a2 = resolveProviderToolName == null ? void 0 : resolveProviderToolName(tool2)) != null ? _a2 : tool2.id in providerToolNames ? providerToolNames[tool2.id] : void 0;
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 _a3;
168
- return (_a3 = customToolNameToProviderToolName[customToolName]) != null ? _a3 : customToolName;
114
+ var _a2;
115
+ return (_a2 = customToolNameToProviderToolName[customToolName]) != null ? _a2 : customToolName;
169
116
  },
170
117
  toCustomToolName: (providerToolName) => {
171
- var _a3;
172
- return (_a3 = providerToolNameToCustomToolName[providerToolName]) != null ? _a3 : providerToolName;
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
- var import_provider = require("@ai-sdk/provider");
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 = import_provider.AISDKError, _a = symbol, _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 import_provider.AISDKError.hasMarker(error, marker);
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 https, got ${parsed.protocol}`
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
- var import_provider2 = require("@ai-sdk/provider");
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 import_provider2.InvalidArgumentError({
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.message;
456
+ return error.toString();
555
457
  }
556
458
  return JSON.stringify(error);
557
459
  }
558
460
 
559
461
  // src/get-from-api.ts
560
- var import_provider4 = require("@ai-sdk/provider");
462
+ import { APICallError as APICallError2 } from "@ai-sdk/provider";
561
463
 
562
464
  // src/handle-fetch-error.ts
563
- var import_provider3 = require("@ai-sdk/provider");
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 import_provider3.APICallError({
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 import_provider3.APICallError({
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.2" : "0.0.0-test";
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) || import_provider4.APICallError.isInstance(error)) {
612
+ if (isAbortError(error) || APICallError2.isInstance(error)) {
711
613
  throw error;
712
614
  }
713
- throw new import_provider4.APICallError({
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) || import_provider4.APICallError.isInstance(error)) {
634
+ if (isAbortError(error) || APICallError2.isInstance(error)) {
733
635
  throw error;
734
636
  }
735
637
  }
736
- throw new import_provider4.APICallError({
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
- var import_provider5 = require("@ai-sdk/provider");
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 import_provider5.LoadAPIKeyError({
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 import_provider5.LoadAPIKeyError({
826
- message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`
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 import_provider5.LoadAPIKeyError({
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 import_provider5.LoadAPIKeyError({
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
- var import_provider6 = require("@ai-sdk/provider");
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 import_provider6.LoadSettingError({
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 import_provider6.LoadSettingError({
879
- message: `${description} setting is missing. Pass it using the '${settingName}' parameter. Environment variables is not supported in this environment.`
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 import_provider6.LoadSettingError({
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 import_provider6.LoadSettingError({
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
- var import_provider9 = require("@ai-sdk/provider");
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
- var import_provider8 = require("@ai-sdk/provider");
929
+ import { TypeValidationError as TypeValidationError2 } from "@ai-sdk/provider";
963
930
 
964
931
  // src/schema.ts
965
- var import_provider7 = require("@ai-sdk/provider");
966
- var z4 = __toESM(require("zod/v4"));
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
- var import_v33 = require("zod/v3");
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
- var import_v3 = require("zod/v3");
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) !== import_v3.ZodFirstPartyTypeKind.ZodAny) {
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, i) => parseDateDef(def, refs, 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
- var import_v32 = require("zod/v3");
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) === import_v32.ZodFirstPartyTypeKind.ZodString && ((_c = def.keyType._def.checks) == null ? void 0 : _c.length)) {
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) === import_v32.ZodFirstPartyTypeKind.ZodEnum) {
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) === import_v32.ZodFirstPartyTypeKind.ZodBranded && def.keyType._def.type._def.typeName === import_v32.ZodFirstPartyTypeKind.ZodString && ((_f = def.keyType._def.type._def.checks) == null ? void 0 : _f.length)) {
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 import_v33.ZodFirstPartyTypeKind.ZodString:
1931
+ case ZodFirstPartyTypeKind3.ZodString:
1963
1932
  return parseStringDef(def, refs);
1964
- case import_v33.ZodFirstPartyTypeKind.ZodNumber:
1933
+ case ZodFirstPartyTypeKind3.ZodNumber:
1965
1934
  return parseNumberDef(def);
1966
- case import_v33.ZodFirstPartyTypeKind.ZodObject:
1935
+ case ZodFirstPartyTypeKind3.ZodObject:
1967
1936
  return parseObjectDef(def, refs);
1968
- case import_v33.ZodFirstPartyTypeKind.ZodBigInt:
1937
+ case ZodFirstPartyTypeKind3.ZodBigInt:
1969
1938
  return parseBigintDef(def);
1970
- case import_v33.ZodFirstPartyTypeKind.ZodBoolean:
1939
+ case ZodFirstPartyTypeKind3.ZodBoolean:
1971
1940
  return parseBooleanDef();
1972
- case import_v33.ZodFirstPartyTypeKind.ZodDate:
1941
+ case ZodFirstPartyTypeKind3.ZodDate:
1973
1942
  return parseDateDef(def, refs);
1974
- case import_v33.ZodFirstPartyTypeKind.ZodUndefined:
1943
+ case ZodFirstPartyTypeKind3.ZodUndefined:
1975
1944
  return parseUndefinedDef();
1976
- case import_v33.ZodFirstPartyTypeKind.ZodNull:
1945
+ case ZodFirstPartyTypeKind3.ZodNull:
1977
1946
  return parseNullDef();
1978
- case import_v33.ZodFirstPartyTypeKind.ZodArray:
1947
+ case ZodFirstPartyTypeKind3.ZodArray:
1979
1948
  return parseArrayDef(def, refs);
1980
- case import_v33.ZodFirstPartyTypeKind.ZodUnion:
1981
- case import_v33.ZodFirstPartyTypeKind.ZodDiscriminatedUnion:
1949
+ case ZodFirstPartyTypeKind3.ZodUnion:
1950
+ case ZodFirstPartyTypeKind3.ZodDiscriminatedUnion:
1982
1951
  return parseUnionDef(def, refs);
1983
- case import_v33.ZodFirstPartyTypeKind.ZodIntersection:
1952
+ case ZodFirstPartyTypeKind3.ZodIntersection:
1984
1953
  return parseIntersectionDef(def, refs);
1985
- case import_v33.ZodFirstPartyTypeKind.ZodTuple:
1954
+ case ZodFirstPartyTypeKind3.ZodTuple:
1986
1955
  return parseTupleDef(def, refs);
1987
- case import_v33.ZodFirstPartyTypeKind.ZodRecord:
1956
+ case ZodFirstPartyTypeKind3.ZodRecord:
1988
1957
  return parseRecordDef(def, refs);
1989
- case import_v33.ZodFirstPartyTypeKind.ZodLiteral:
1958
+ case ZodFirstPartyTypeKind3.ZodLiteral:
1990
1959
  return parseLiteralDef(def);
1991
- case import_v33.ZodFirstPartyTypeKind.ZodEnum:
1960
+ case ZodFirstPartyTypeKind3.ZodEnum:
1992
1961
  return parseEnumDef(def);
1993
- case import_v33.ZodFirstPartyTypeKind.ZodNativeEnum:
1962
+ case ZodFirstPartyTypeKind3.ZodNativeEnum:
1994
1963
  return parseNativeEnumDef(def);
1995
- case import_v33.ZodFirstPartyTypeKind.ZodNullable:
1964
+ case ZodFirstPartyTypeKind3.ZodNullable:
1996
1965
  return parseNullableDef(def, refs);
1997
- case import_v33.ZodFirstPartyTypeKind.ZodOptional:
1966
+ case ZodFirstPartyTypeKind3.ZodOptional:
1998
1967
  return parseOptionalDef(def, refs);
1999
- case import_v33.ZodFirstPartyTypeKind.ZodMap:
1968
+ case ZodFirstPartyTypeKind3.ZodMap:
2000
1969
  return parseMapDef(def, refs);
2001
- case import_v33.ZodFirstPartyTypeKind.ZodSet:
1970
+ case ZodFirstPartyTypeKind3.ZodSet:
2002
1971
  return parseSetDef(def, refs);
2003
- case import_v33.ZodFirstPartyTypeKind.ZodLazy:
1972
+ case ZodFirstPartyTypeKind3.ZodLazy:
2004
1973
  return () => def.getter()._def;
2005
- case import_v33.ZodFirstPartyTypeKind.ZodPromise:
1974
+ case ZodFirstPartyTypeKind3.ZodPromise:
2006
1975
  return parsePromiseDef(def, refs);
2007
- case import_v33.ZodFirstPartyTypeKind.ZodNaN:
2008
- case import_v33.ZodFirstPartyTypeKind.ZodNever:
1976
+ case ZodFirstPartyTypeKind3.ZodNaN:
1977
+ case ZodFirstPartyTypeKind3.ZodNever:
2009
1978
  return parseNeverDef();
2010
- case import_v33.ZodFirstPartyTypeKind.ZodEffects:
1979
+ case ZodFirstPartyTypeKind3.ZodEffects:
2011
1980
  return parseEffectsDef(def, refs);
2012
- case import_v33.ZodFirstPartyTypeKind.ZodAny:
1981
+ case ZodFirstPartyTypeKind3.ZodAny:
2013
1982
  return parseAnyDef();
2014
- case import_v33.ZodFirstPartyTypeKind.ZodUnknown:
1983
+ case ZodFirstPartyTypeKind3.ZodUnknown:
2015
1984
  return parseUnknownDef();
2016
- case import_v33.ZodFirstPartyTypeKind.ZodDefault:
1985
+ case ZodFirstPartyTypeKind3.ZodDefault:
2017
1986
  return parseDefaultDef(def, refs);
2018
- case import_v33.ZodFirstPartyTypeKind.ZodBranded:
1987
+ case ZodFirstPartyTypeKind3.ZodBranded:
2019
1988
  return parseBrandedDef(def, refs);
2020
- case import_v33.ZodFirstPartyTypeKind.ZodReadonly:
1989
+ case ZodFirstPartyTypeKind3.ZodReadonly:
2021
1990
  return parseReadonlyDef(def, refs);
2022
- case import_v33.ZodFirstPartyTypeKind.ZodCatch:
1991
+ case ZodFirstPartyTypeKind3.ZodCatch:
2023
1992
  return parseCatchDef(def, refs);
2024
- case import_v33.ZodFirstPartyTypeKind.ZodPipeline:
1993
+ case ZodFirstPartyTypeKind3.ZodPipeline:
2025
1994
  return parsePipelineDef(def, refs);
2026
- case import_v33.ZodFirstPartyTypeKind.ZodFunction:
2027
- case import_v33.ZodFirstPartyTypeKind.ZodVoid:
2028
- case import_v33.ZodFirstPartyTypeKind.ZodSymbol:
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 import_provider7.TypeValidationError({
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 import_provider8.TypeValidationError.wrap({ value, cause: result.error, context });
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: import_provider8.TypeValidationError.wrap({ value, cause: result.error, context }),
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: import_provider8.TypeValidationError.wrap({ value, cause: error, context }),
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 (import_provider9.JSONParseError.isInstance(error) || import_provider9.TypeValidationError.isInstance(error)) {
2304
+ if (JSONParseError.isInstance(error) || TypeValidationError3.isInstance(error)) {
2336
2305
  throw error;
2337
2306
  }
2338
- throw new import_provider9.JSONParseError({ text, cause: error });
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: import_provider9.JSONParseError.isInstance(error) ? error : new import_provider9.JSONParseError({ text, cause: 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
- var import_stream = require("eventsource-parser/stream");
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 import_stream.EventSourceParserStream()).pipeThrough(
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
- var import_provider10 = require("@ai-sdk/provider");
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 import_provider10.InvalidArgumentError({
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
- var import_provider11 = require("@ai-sdk/provider");
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) || import_provider11.APICallError.isInstance(error)) {
2457
+ if (isAbortError(error) || APICallError3.isInstance(error)) {
2487
2458
  throw error;
2488
2459
  }
2489
- throw new import_provider11.APICallError({
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) || import_provider11.APICallError.isInstance(error)) {
2479
+ if (isAbortError(error) || APICallError3.isInstance(error)) {
2509
2480
  throw error;
2510
2481
  }
2511
2482
  }
2512
- throw new import_provider11.APICallError({
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
- var import_provider12 = require("@ai-sdk/provider");
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 import_provider12.APICallError({
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 import_provider12.APICallError({
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 (parseError) {
2637
+ } catch (e) {
2649
2638
  return {
2650
2639
  responseHeaders,
2651
- value: new import_provider12.APICallError({
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 import_provider12.EmptyResponseBodyError({});
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 import_provider12.APICallError({
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 import_provider12.APICallError({
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 import_provider12.APICallError({
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 import_provider12.APICallError({
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
- var import_stream2 = require("eventsource-parser/stream");
2783
- // Annotate the CommonJS export names for ESM import in node:
2784
- 0 && (module.exports = {
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