@ai-sdk/provider-utils 3.0.0-alpha.9 → 3.0.0-beta.2

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/dist/index.js CHANGED
@@ -31,6 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  // src/index.ts
32
32
  var src_exports = {};
33
33
  __export(src_exports, {
34
+ EventSourceParserStream: () => import_stream2.EventSourceParserStream,
34
35
  asSchema: () => asSchema,
35
36
  asValidator: () => asValidator,
36
37
  combineHeaders: () => combineHeaders,
@@ -39,12 +40,13 @@ __export(src_exports, {
39
40
  convertToBase64: () => convertToBase64,
40
41
  convertUint8ArrayToBase64: () => convertUint8ArrayToBase64,
41
42
  createBinaryResponseHandler: () => createBinaryResponseHandler,
42
- createEventSourceParserStream: () => createEventSourceParserStream,
43
43
  createEventSourceResponseHandler: () => createEventSourceResponseHandler,
44
44
  createIdGenerator: () => createIdGenerator,
45
45
  createJsonErrorResponseHandler: () => createJsonErrorResponseHandler,
46
46
  createJsonResponseHandler: () => createJsonResponseHandler,
47
47
  createJsonStreamResponseHandler: () => createJsonStreamResponseHandler,
48
+ createProviderDefinedToolFactory: () => createProviderDefinedToolFactory,
49
+ createProviderDefinedToolFactoryWithOutputSchema: () => createProviderDefinedToolFactoryWithOutputSchema,
48
50
  createStatusCodeErrorResponseHandler: () => createStatusCodeErrorResponseHandler,
49
51
  delay: () => delay,
50
52
  extractResponseHeaders: () => extractResponseHeaders,
@@ -70,6 +72,7 @@ __export(src_exports, {
70
72
  safeParseJSON: () => safeParseJSON,
71
73
  safeValidateTypes: () => safeValidateTypes,
72
74
  standardSchemaValidator: () => standardSchemaValidator,
75
+ tool: () => tool,
73
76
  validateTypes: () => validateTypes,
74
77
  validator: () => validator,
75
78
  validatorSymbol: () => validatorSymbol,
@@ -123,98 +126,6 @@ async function delay(delayInMs) {
123
126
  return delayInMs == null ? Promise.resolve() : new Promise((resolve2) => setTimeout(resolve2, delayInMs));
124
127
  }
125
128
 
126
- // src/event-source-parser-stream.ts
127
- function createEventSourceParserStream() {
128
- let buffer = "";
129
- let event = void 0;
130
- let data = [];
131
- let lastEventId = void 0;
132
- let retry = void 0;
133
- function parseLine(line, controller) {
134
- if (line === "") {
135
- dispatchEvent(controller);
136
- return;
137
- }
138
- if (line.startsWith(":")) {
139
- return;
140
- }
141
- const colonIndex = line.indexOf(":");
142
- if (colonIndex === -1) {
143
- handleField(line, "");
144
- return;
145
- }
146
- const field = line.slice(0, colonIndex);
147
- const valueStart = colonIndex + 1;
148
- const value = valueStart < line.length && line[valueStart] === " " ? line.slice(valueStart + 1) : line.slice(valueStart);
149
- handleField(field, value);
150
- }
151
- function dispatchEvent(controller) {
152
- if (data.length > 0) {
153
- controller.enqueue({
154
- event,
155
- data: data.join("\n"),
156
- id: lastEventId,
157
- retry
158
- });
159
- data = [];
160
- event = void 0;
161
- retry = void 0;
162
- }
163
- }
164
- function handleField(field, value) {
165
- switch (field) {
166
- case "event":
167
- event = value;
168
- break;
169
- case "data":
170
- data.push(value);
171
- break;
172
- case "id":
173
- lastEventId = value;
174
- break;
175
- case "retry":
176
- const parsedRetry = parseInt(value, 10);
177
- if (!isNaN(parsedRetry)) {
178
- retry = parsedRetry;
179
- }
180
- break;
181
- }
182
- }
183
- return new TransformStream({
184
- transform(chunk, controller) {
185
- const { lines, incompleteLine } = splitLines(buffer, chunk);
186
- buffer = incompleteLine;
187
- for (let i = 0; i < lines.length; i++) {
188
- parseLine(lines[i], controller);
189
- }
190
- },
191
- flush(controller) {
192
- parseLine(buffer, controller);
193
- dispatchEvent(controller);
194
- }
195
- });
196
- }
197
- function splitLines(buffer, chunk) {
198
- const lines = [];
199
- let currentLine = buffer;
200
- for (let i = 0; i < chunk.length; ) {
201
- const char = chunk[i++];
202
- if (char === "\n") {
203
- lines.push(currentLine);
204
- currentLine = "";
205
- } else if (char === "\r") {
206
- lines.push(currentLine);
207
- currentLine = "";
208
- if (chunk[i] === "\n") {
209
- i++;
210
- }
211
- } else {
212
- currentLine += char;
213
- }
214
- }
215
- return { lines, incompleteLine: currentLine };
216
- }
217
-
218
129
  // src/extract-response-headers.ts
219
130
  function extractResponseHeaders(response) {
220
131
  return Object.fromEntries([...response.headers]);
@@ -264,8 +175,42 @@ function getErrorMessage(error) {
264
175
  }
265
176
 
266
177
  // src/get-from-api.ts
178
+ var import_provider3 = require("@ai-sdk/provider");
179
+
180
+ // src/handle-fetch-error.ts
267
181
  var import_provider2 = require("@ai-sdk/provider");
268
182
 
183
+ // src/is-abort-error.ts
184
+ function isAbortError(error) {
185
+ return error instanceof Error && (error.name === "AbortError" || error.name === "TimeoutError");
186
+ }
187
+
188
+ // src/handle-fetch-error.ts
189
+ var FETCH_FAILED_ERROR_MESSAGES = ["fetch failed", "failed to fetch"];
190
+ function handleFetchError({
191
+ error,
192
+ url,
193
+ requestBodyValues
194
+ }) {
195
+ if (isAbortError(error)) {
196
+ return error;
197
+ }
198
+ if (error instanceof TypeError && FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())) {
199
+ const cause = error.cause;
200
+ if (cause != null) {
201
+ return new import_provider2.APICallError({
202
+ message: `Cannot connect to API: ${cause.message}`,
203
+ cause,
204
+ url,
205
+ requestBodyValues,
206
+ isRetryable: true
207
+ // retry when network error
208
+ });
209
+ }
210
+ }
211
+ return error;
212
+ }
213
+
269
214
  // src/remove-undefined-entries.ts
270
215
  function removeUndefinedEntries(record) {
271
216
  return Object.fromEntries(
@@ -273,11 +218,6 @@ function removeUndefinedEntries(record) {
273
218
  );
274
219
  }
275
220
 
276
- // src/is-abort-error.ts
277
- function isAbortError(error) {
278
- return error instanceof Error && (error.name === "AbortError" || error.name === "TimeoutError");
279
- }
280
-
281
221
  // src/get-from-api.ts
282
222
  var getOriginalFetch = () => globalThis.fetch;
283
223
  var getFromApi = async ({
@@ -304,10 +244,10 @@ var getFromApi = async ({
304
244
  requestBodyValues: {}
305
245
  });
306
246
  } catch (error) {
307
- if (isAbortError(error) || import_provider2.APICallError.isInstance(error)) {
247
+ if (isAbortError(error) || import_provider3.APICallError.isInstance(error)) {
308
248
  throw error;
309
249
  }
310
- throw new import_provider2.APICallError({
250
+ throw new import_provider3.APICallError({
311
251
  message: "Failed to process error response",
312
252
  cause: error,
313
253
  statusCode: response.status,
@@ -326,11 +266,11 @@ var getFromApi = async ({
326
266
  });
327
267
  } catch (error) {
328
268
  if (error instanceof Error) {
329
- if (isAbortError(error) || import_provider2.APICallError.isInstance(error)) {
269
+ if (isAbortError(error) || import_provider3.APICallError.isInstance(error)) {
330
270
  throw error;
331
271
  }
332
272
  }
333
- throw new import_provider2.APICallError({
273
+ throw new import_provider3.APICallError({
334
274
  message: "Failed to process successful response",
335
275
  cause: error,
336
276
  statusCode: response.status,
@@ -340,22 +280,7 @@ var getFromApi = async ({
340
280
  });
341
281
  }
342
282
  } catch (error) {
343
- if (isAbortError(error)) {
344
- throw error;
345
- }
346
- if (error instanceof TypeError && error.message === "fetch failed") {
347
- const cause = error.cause;
348
- if (cause != null) {
349
- throw new import_provider2.APICallError({
350
- message: `Cannot connect to API: ${cause.message}`,
351
- cause,
352
- url,
353
- isRetryable: true,
354
- requestBodyValues: {}
355
- });
356
- }
357
- }
358
- throw error;
283
+ throw handleFetchError({ error, url, requestBodyValues: {} });
359
284
  }
360
285
  };
361
286
 
@@ -374,7 +299,7 @@ function isUrlSupported({
374
299
  }
375
300
 
376
301
  // src/load-api-key.ts
377
- var import_provider3 = require("@ai-sdk/provider");
302
+ var import_provider4 = require("@ai-sdk/provider");
378
303
  function loadApiKey({
379
304
  apiKey,
380
305
  environmentVariableName,
@@ -385,23 +310,23 @@ function loadApiKey({
385
310
  return apiKey;
386
311
  }
387
312
  if (apiKey != null) {
388
- throw new import_provider3.LoadAPIKeyError({
313
+ throw new import_provider4.LoadAPIKeyError({
389
314
  message: `${description} API key must be a string.`
390
315
  });
391
316
  }
392
317
  if (typeof process === "undefined") {
393
- throw new import_provider3.LoadAPIKeyError({
318
+ throw new import_provider4.LoadAPIKeyError({
394
319
  message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`
395
320
  });
396
321
  }
397
322
  apiKey = process.env[environmentVariableName];
398
323
  if (apiKey == null) {
399
- throw new import_provider3.LoadAPIKeyError({
324
+ throw new import_provider4.LoadAPIKeyError({
400
325
  message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`
401
326
  });
402
327
  }
403
328
  if (typeof apiKey !== "string") {
404
- throw new import_provider3.LoadAPIKeyError({
329
+ throw new import_provider4.LoadAPIKeyError({
405
330
  message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`
406
331
  });
407
332
  }
@@ -427,7 +352,7 @@ function loadOptionalSetting({
427
352
  }
428
353
 
429
354
  // src/load-setting.ts
430
- var import_provider4 = require("@ai-sdk/provider");
355
+ var import_provider5 = require("@ai-sdk/provider");
431
356
  function loadSetting({
432
357
  settingValue,
433
358
  environmentVariableName,
@@ -438,23 +363,23 @@ function loadSetting({
438
363
  return settingValue;
439
364
  }
440
365
  if (settingValue != null) {
441
- throw new import_provider4.LoadSettingError({
366
+ throw new import_provider5.LoadSettingError({
442
367
  message: `${description} setting must be a string.`
443
368
  });
444
369
  }
445
370
  if (typeof process === "undefined") {
446
- throw new import_provider4.LoadSettingError({
371
+ throw new import_provider5.LoadSettingError({
447
372
  message: `${description} setting is missing. Pass it using the '${settingName}' parameter. Environment variables is not supported in this environment.`
448
373
  });
449
374
  }
450
375
  settingValue = process.env[environmentVariableName];
451
376
  if (settingValue == null) {
452
- throw new import_provider4.LoadSettingError({
377
+ throw new import_provider5.LoadSettingError({
453
378
  message: `${description} setting is missing. Pass it using the '${settingName}' parameter or the ${environmentVariableName} environment variable.`
454
379
  });
455
380
  }
456
381
  if (typeof settingValue !== "string") {
457
- throw new import_provider4.LoadSettingError({
382
+ throw new import_provider5.LoadSettingError({
458
383
  message: `${description} setting must be a string. The value of the ${environmentVariableName} environment variable is not a string.`
459
384
  });
460
385
  }
@@ -462,7 +387,7 @@ function loadSetting({
462
387
  }
463
388
 
464
389
  // src/parse-json.ts
465
- var import_provider7 = require("@ai-sdk/provider");
390
+ var import_provider8 = require("@ai-sdk/provider");
466
391
 
467
392
  // src/secure-json-parse.ts
468
393
  var suspectProtoRx = /"__proto__"\s*:/;
@@ -510,10 +435,10 @@ function secureJsonParse(text) {
510
435
  }
511
436
 
512
437
  // src/validate-types.ts
513
- var import_provider6 = require("@ai-sdk/provider");
438
+ var import_provider7 = require("@ai-sdk/provider");
514
439
 
515
440
  // src/validator.ts
516
- var import_provider5 = require("@ai-sdk/provider");
441
+ var import_provider6 = require("@ai-sdk/provider");
517
442
  var validatorSymbol = Symbol.for("vercel.ai.validator");
518
443
  function validator(validate) {
519
444
  return { [validatorSymbol]: true, validate };
@@ -529,7 +454,7 @@ function standardSchemaValidator(standardSchema) {
529
454
  const result = await standardSchema["~standard"].validate(value);
530
455
  return result.issues == null ? { success: true, value: result.value } : {
531
456
  success: false,
532
- error: new import_provider5.TypeValidationError({
457
+ error: new import_provider6.TypeValidationError({
533
458
  value,
534
459
  cause: result.issues
535
460
  })
@@ -544,7 +469,7 @@ async function validateTypes({
544
469
  }) {
545
470
  const result = await safeValidateTypes({ value, schema });
546
471
  if (!result.success) {
547
- throw import_provider6.TypeValidationError.wrap({ value, cause: result.error });
472
+ throw import_provider7.TypeValidationError.wrap({ value, cause: result.error });
548
473
  }
549
474
  return result.value;
550
475
  }
@@ -563,20 +488,23 @@ async function safeValidateTypes({
563
488
  }
564
489
  return {
565
490
  success: false,
566
- error: import_provider6.TypeValidationError.wrap({ value, cause: result.error }),
491
+ error: import_provider7.TypeValidationError.wrap({ value, cause: result.error }),
567
492
  rawValue: value
568
493
  };
569
494
  } catch (error) {
570
495
  return {
571
496
  success: false,
572
- error: import_provider6.TypeValidationError.wrap({ value, cause: error }),
497
+ error: import_provider7.TypeValidationError.wrap({ value, cause: error }),
573
498
  rawValue: value
574
499
  };
575
500
  }
576
501
  }
577
502
 
578
503
  // src/parse-json.ts
579
- async function parseJSON({ text, schema }) {
504
+ async function parseJSON({
505
+ text,
506
+ schema
507
+ }) {
580
508
  try {
581
509
  const value = secureJsonParse(text);
582
510
  if (schema == null) {
@@ -584,10 +512,10 @@ async function parseJSON({ text, schema }) {
584
512
  }
585
513
  return validateTypes({ value, schema });
586
514
  } catch (error) {
587
- if (import_provider7.JSONParseError.isInstance(error) || import_provider7.TypeValidationError.isInstance(error)) {
515
+ if (import_provider8.JSONParseError.isInstance(error) || import_provider8.TypeValidationError.isInstance(error)) {
588
516
  throw error;
589
517
  }
590
- throw new import_provider7.JSONParseError({ text, cause: error });
518
+ throw new import_provider8.JSONParseError({ text, cause: error });
591
519
  }
592
520
  }
593
521
  async function safeParseJSON({
@@ -603,7 +531,7 @@ async function safeParseJSON({
603
531
  } catch (error) {
604
532
  return {
605
533
  success: false,
606
- error: import_provider7.JSONParseError.isInstance(error) ? error : new import_provider7.JSONParseError({ text, cause: error }),
534
+ error: import_provider8.JSONParseError.isInstance(error) ? error : new import_provider8.JSONParseError({ text, cause: error }),
607
535
  rawValue: void 0
608
536
  };
609
537
  }
@@ -618,11 +546,12 @@ function isParsableJson(input) {
618
546
  }
619
547
 
620
548
  // src/parse-json-event-stream.ts
549
+ var import_stream = require("eventsource-parser/stream");
621
550
  function parseJsonEventStream({
622
551
  stream,
623
552
  schema
624
553
  }) {
625
- return stream.pipeThrough(new TextDecoderStream()).pipeThrough(createEventSourceParserStream()).pipeThrough(
554
+ return stream.pipeThrough(new TextDecoderStream()).pipeThrough(new import_stream.EventSourceParserStream()).pipeThrough(
626
555
  new TransformStream({
627
556
  async transform({ data }, controller) {
628
557
  if (data === "[DONE]") {
@@ -635,7 +564,7 @@ function parseJsonEventStream({
635
564
  }
636
565
 
637
566
  // src/parse-provider-options.ts
638
- var import_provider8 = require("@ai-sdk/provider");
567
+ var import_provider9 = require("@ai-sdk/provider");
639
568
  async function parseProviderOptions({
640
569
  provider,
641
570
  providerOptions,
@@ -649,7 +578,7 @@ async function parseProviderOptions({
649
578
  schema
650
579
  });
651
580
  if (!parsedProviderOptions.success) {
652
- throw new import_provider8.InvalidArgumentError({
581
+ throw new import_provider9.InvalidArgumentError({
653
582
  argument: "providerOptions",
654
583
  message: `invalid ${provider} provider options`,
655
584
  cause: parsedProviderOptions.error
@@ -659,7 +588,7 @@ async function parseProviderOptions({
659
588
  }
660
589
 
661
590
  // src/post-to-api.ts
662
- var import_provider9 = require("@ai-sdk/provider");
591
+ var import_provider10 = require("@ai-sdk/provider");
663
592
  var getOriginalFetch2 = () => globalThis.fetch;
664
593
  var postJsonToApi = async ({
665
594
  url,
@@ -730,10 +659,10 @@ var postToApi = async ({
730
659
  requestBodyValues: body.values
731
660
  });
732
661
  } catch (error) {
733
- if (isAbortError(error) || import_provider9.APICallError.isInstance(error)) {
662
+ if (isAbortError(error) || import_provider10.APICallError.isInstance(error)) {
734
663
  throw error;
735
664
  }
736
- throw new import_provider9.APICallError({
665
+ throw new import_provider10.APICallError({
737
666
  message: "Failed to process error response",
738
667
  cause: error,
739
668
  statusCode: response.status,
@@ -752,11 +681,11 @@ var postToApi = async ({
752
681
  });
753
682
  } catch (error) {
754
683
  if (error instanceof Error) {
755
- if (isAbortError(error) || import_provider9.APICallError.isInstance(error)) {
684
+ if (isAbortError(error) || import_provider10.APICallError.isInstance(error)) {
756
685
  throw error;
757
686
  }
758
687
  }
759
- throw new import_provider9.APICallError({
688
+ throw new import_provider10.APICallError({
760
689
  message: "Failed to process successful response",
761
690
  cause: error,
762
691
  statusCode: response.status,
@@ -766,26 +695,71 @@ var postToApi = async ({
766
695
  });
767
696
  }
768
697
  } catch (error) {
769
- if (isAbortError(error)) {
770
- throw error;
771
- }
772
- if (error instanceof TypeError && error.message === "fetch failed") {
773
- const cause = error.cause;
774
- if (cause != null) {
775
- throw new import_provider9.APICallError({
776
- message: `Cannot connect to API: ${cause.message}`,
777
- cause,
778
- url,
779
- requestBodyValues: body.values,
780
- isRetryable: true
781
- // retry when network error
782
- });
783
- }
784
- }
785
- throw error;
698
+ throw handleFetchError({ error, url, requestBodyValues: body.values });
786
699
  }
787
700
  };
788
701
 
702
+ // src/types/tool.ts
703
+ function tool(tool2) {
704
+ return tool2;
705
+ }
706
+
707
+ // src/provider-defined-tool-factory.ts
708
+ function createProviderDefinedToolFactory({
709
+ id,
710
+ name,
711
+ inputSchema
712
+ }) {
713
+ return ({
714
+ execute,
715
+ outputSchema,
716
+ toModelOutput,
717
+ onInputStart,
718
+ onInputDelta,
719
+ onInputAvailable,
720
+ ...args
721
+ }) => tool({
722
+ type: "provider-defined",
723
+ id,
724
+ name,
725
+ args,
726
+ inputSchema,
727
+ outputSchema,
728
+ execute,
729
+ toModelOutput,
730
+ onInputStart,
731
+ onInputDelta,
732
+ onInputAvailable
733
+ });
734
+ }
735
+ function createProviderDefinedToolFactoryWithOutputSchema({
736
+ id,
737
+ name,
738
+ inputSchema,
739
+ outputSchema
740
+ }) {
741
+ return ({
742
+ execute,
743
+ toModelOutput,
744
+ onInputStart,
745
+ onInputDelta,
746
+ onInputAvailable,
747
+ ...args
748
+ }) => tool({
749
+ type: "provider-defined",
750
+ id,
751
+ name,
752
+ args,
753
+ inputSchema,
754
+ outputSchema,
755
+ execute,
756
+ toModelOutput,
757
+ onInputStart,
758
+ onInputDelta,
759
+ onInputAvailable
760
+ });
761
+ }
762
+
789
763
  // src/resolve.ts
790
764
  async function resolve(value) {
791
765
  if (typeof value === "function") {
@@ -795,7 +769,7 @@ async function resolve(value) {
795
769
  }
796
770
 
797
771
  // src/response-handler.ts
798
- var import_provider10 = require("@ai-sdk/provider");
772
+ var import_provider11 = require("@ai-sdk/provider");
799
773
  var createJsonErrorResponseHandler = ({
800
774
  errorSchema,
801
775
  errorToMessage,
@@ -806,7 +780,7 @@ var createJsonErrorResponseHandler = ({
806
780
  if (responseBody.trim() === "") {
807
781
  return {
808
782
  responseHeaders,
809
- value: new import_provider10.APICallError({
783
+ value: new import_provider11.APICallError({
810
784
  message: response.statusText,
811
785
  url,
812
786
  requestBodyValues,
@@ -824,7 +798,7 @@ var createJsonErrorResponseHandler = ({
824
798
  });
825
799
  return {
826
800
  responseHeaders,
827
- value: new import_provider10.APICallError({
801
+ value: new import_provider11.APICallError({
828
802
  message: errorToMessage(parsedError),
829
803
  url,
830
804
  requestBodyValues,
@@ -838,7 +812,7 @@ var createJsonErrorResponseHandler = ({
838
812
  } catch (parseError) {
839
813
  return {
840
814
  responseHeaders,
841
- value: new import_provider10.APICallError({
815
+ value: new import_provider11.APICallError({
842
816
  message: response.statusText,
843
817
  url,
844
818
  requestBodyValues,
@@ -853,7 +827,7 @@ var createJsonErrorResponseHandler = ({
853
827
  var createEventSourceResponseHandler = (chunkSchema) => async ({ response }) => {
854
828
  const responseHeaders = extractResponseHeaders(response);
855
829
  if (response.body == null) {
856
- throw new import_provider10.EmptyResponseBodyError({});
830
+ throw new import_provider11.EmptyResponseBodyError({});
857
831
  }
858
832
  return {
859
833
  responseHeaders,
@@ -866,7 +840,7 @@ var createEventSourceResponseHandler = (chunkSchema) => async ({ response }) =>
866
840
  var createJsonStreamResponseHandler = (chunkSchema) => async ({ response }) => {
867
841
  const responseHeaders = extractResponseHeaders(response);
868
842
  if (response.body == null) {
869
- throw new import_provider10.EmptyResponseBodyError({});
843
+ throw new import_provider11.EmptyResponseBodyError({});
870
844
  }
871
845
  let buffer = "";
872
846
  return {
@@ -898,7 +872,7 @@ var createJsonResponseHandler = (responseSchema) => async ({ response, url, requ
898
872
  });
899
873
  const responseHeaders = extractResponseHeaders(response);
900
874
  if (!parsedResult.success) {
901
- throw new import_provider10.APICallError({
875
+ throw new import_provider11.APICallError({
902
876
  message: "Invalid JSON response",
903
877
  cause: parsedResult.error,
904
878
  statusCode: response.status,
@@ -917,7 +891,7 @@ var createJsonResponseHandler = (responseSchema) => async ({ response, url, requ
917
891
  var createBinaryResponseHandler = () => async ({ response, url, requestBodyValues }) => {
918
892
  const responseHeaders = extractResponseHeaders(response);
919
893
  if (!response.body) {
920
- throw new import_provider10.APICallError({
894
+ throw new import_provider11.APICallError({
921
895
  message: "Response body is empty",
922
896
  url,
923
897
  requestBodyValues,
@@ -933,7 +907,7 @@ var createBinaryResponseHandler = () => async ({ response, url, requestBodyValue
933
907
  value: new Uint8Array(buffer)
934
908
  };
935
909
  } catch (error) {
936
- throw new import_provider10.APICallError({
910
+ throw new import_provider11.APICallError({
937
911
  message: "Failed to read response as array buffer",
938
912
  url,
939
913
  requestBodyValues,
@@ -949,7 +923,7 @@ var createStatusCodeErrorResponseHandler = () => async ({ response, url, request
949
923
  const responseBody = await response.text();
950
924
  return {
951
925
  responseHeaders,
952
- value: new import_provider10.APICallError({
926
+ value: new import_provider11.APICallError({
953
927
  message: response.statusText,
954
928
  url,
955
929
  requestBodyValues,
@@ -961,7 +935,7 @@ var createStatusCodeErrorResponseHandler = () => async ({ response, url, request
961
935
  };
962
936
 
963
937
  // src/zod-schema.ts
964
- var z4 = __toESM(require("zod/v4/core"));
938
+ var z4 = __toESM(require("zod/v4"));
965
939
  var import_zod_to_json_schema = __toESM(require("zod-to-json-schema"));
966
940
  function zod3Schema(zodSchema2, options) {
967
941
  var _a;
@@ -1055,8 +1029,10 @@ function withoutTrailingSlash(url) {
1055
1029
 
1056
1030
  // src/index.ts
1057
1031
  __reExport(src_exports, require("@standard-schema/spec"), module.exports);
1032
+ var import_stream2 = require("eventsource-parser/stream");
1058
1033
  // Annotate the CommonJS export names for ESM import in node:
1059
1034
  0 && (module.exports = {
1035
+ EventSourceParserStream,
1060
1036
  asSchema,
1061
1037
  asValidator,
1062
1038
  combineHeaders,
@@ -1065,12 +1041,13 @@ __reExport(src_exports, require("@standard-schema/spec"), module.exports);
1065
1041
  convertToBase64,
1066
1042
  convertUint8ArrayToBase64,
1067
1043
  createBinaryResponseHandler,
1068
- createEventSourceParserStream,
1069
1044
  createEventSourceResponseHandler,
1070
1045
  createIdGenerator,
1071
1046
  createJsonErrorResponseHandler,
1072
1047
  createJsonResponseHandler,
1073
1048
  createJsonStreamResponseHandler,
1049
+ createProviderDefinedToolFactory,
1050
+ createProviderDefinedToolFactoryWithOutputSchema,
1074
1051
  createStatusCodeErrorResponseHandler,
1075
1052
  delay,
1076
1053
  extractResponseHeaders,
@@ -1096,6 +1073,7 @@ __reExport(src_exports, require("@standard-schema/spec"), module.exports);
1096
1073
  safeParseJSON,
1097
1074
  safeValidateTypes,
1098
1075
  standardSchemaValidator,
1076
+ tool,
1099
1077
  validateTypes,
1100
1078
  validator,
1101
1079
  validatorSymbol,