@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/CHANGELOG.md +79 -0
- package/dist/index.d.mts +465 -100
- package/dist/index.d.ts +465 -100
- package/dist/index.js +154 -176
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +130 -151
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -2
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) ||
|
247
|
+
if (isAbortError(error) || import_provider3.APICallError.isInstance(error)) {
|
308
248
|
throw error;
|
309
249
|
}
|
310
|
-
throw new
|
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) ||
|
269
|
+
if (isAbortError(error) || import_provider3.APICallError.isInstance(error)) {
|
330
270
|
throw error;
|
331
271
|
}
|
332
272
|
}
|
333
|
-
throw new
|
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
|
-
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
438
|
+
var import_provider7 = require("@ai-sdk/provider");
|
514
439
|
|
515
440
|
// src/validator.ts
|
516
|
-
var
|
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
|
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
|
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:
|
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:
|
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({
|
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 (
|
515
|
+
if (import_provider8.JSONParseError.isInstance(error) || import_provider8.TypeValidationError.isInstance(error)) {
|
588
516
|
throw error;
|
589
517
|
}
|
590
|
-
throw new
|
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:
|
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(
|
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
|
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
|
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
|
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) ||
|
662
|
+
if (isAbortError(error) || import_provider10.APICallError.isInstance(error)) {
|
734
663
|
throw error;
|
735
664
|
}
|
736
|
-
throw new
|
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) ||
|
684
|
+
if (isAbortError(error) || import_provider10.APICallError.isInstance(error)) {
|
756
685
|
throw error;
|
757
686
|
}
|
758
687
|
}
|
759
|
-
throw new
|
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
|
-
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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,
|