ai 0.0.0-156c9f7b-20250115085202 → 0.0.0-677c097b-20250505090413
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 +774 -2
- package/README.md +22 -9
- package/dist/index.d.mts +3081 -1016
- package/dist/index.d.ts +3081 -1016
- package/dist/index.js +3120 -975
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3060 -931
- package/dist/index.mjs.map +1 -1
- package/mcp-stdio/dist/index.d.mts +169 -0
- package/mcp-stdio/dist/index.d.ts +169 -0
- package/mcp-stdio/dist/index.js +352 -0
- package/mcp-stdio/dist/index.js.map +1 -0
- package/mcp-stdio/dist/index.mjs +337 -0
- package/mcp-stdio/dist/index.mjs.map +1 -0
- package/package.json +15 -11
- package/react/dist/index.d.mts +13 -1
- package/react/dist/index.d.ts +13 -1
- package/react/dist/index.js.map +1 -1
- package/react/dist/index.mjs.map +1 -1
- package/rsc/dist/index.d.ts +108 -18
- package/rsc/dist/rsc-server.d.mts +108 -18
- package/rsc/dist/rsc-server.mjs +603 -274
- package/rsc/dist/rsc-server.mjs.map +1 -1
- package/rsc/dist/rsc-shared.mjs +1 -3
- package/rsc/dist/rsc-shared.mjs.map +1 -1
- package/test/dist/index.d.mts +2 -4
- package/test/dist/index.d.ts +2 -4
- package/test/dist/index.js +4 -14
- package/test/dist/index.js.map +1 -1
- package/test/dist/index.mjs +7 -14
- package/test/dist/index.mjs.map +1 -1
package/rsc/dist/rsc-server.mjs
CHANGED
@@ -240,14 +240,11 @@ var DownloadError = class extends AISDKError {
|
|
240
240
|
_a = symbol;
|
241
241
|
|
242
242
|
// util/download.ts
|
243
|
-
async function download({
|
244
|
-
url,
|
245
|
-
fetchImplementation = fetch
|
246
|
-
}) {
|
243
|
+
async function download({ url }) {
|
247
244
|
var _a9;
|
248
245
|
const urlText = url.toString();
|
249
246
|
try {
|
250
|
-
const response = await
|
247
|
+
const response = await fetch(urlText);
|
251
248
|
if (!response.ok) {
|
252
249
|
throw new DownloadError({
|
253
250
|
url: urlText,
|
@@ -267,17 +264,102 @@ async function download({
|
|
267
264
|
}
|
268
265
|
}
|
269
266
|
|
270
|
-
// core/util/detect-
|
271
|
-
|
272
|
-
|
273
|
-
{
|
274
|
-
|
275
|
-
|
267
|
+
// core/util/detect-mimetype.ts
|
268
|
+
import { convertBase64ToUint8Array } from "@ai-sdk/provider-utils";
|
269
|
+
var imageMimeTypeSignatures = [
|
270
|
+
{
|
271
|
+
mimeType: "image/gif",
|
272
|
+
bytesPrefix: [71, 73, 70],
|
273
|
+
base64Prefix: "R0lG"
|
274
|
+
},
|
275
|
+
{
|
276
|
+
mimeType: "image/png",
|
277
|
+
bytesPrefix: [137, 80, 78, 71],
|
278
|
+
base64Prefix: "iVBORw"
|
279
|
+
},
|
280
|
+
{
|
281
|
+
mimeType: "image/jpeg",
|
282
|
+
bytesPrefix: [255, 216],
|
283
|
+
base64Prefix: "/9j/"
|
284
|
+
},
|
285
|
+
{
|
286
|
+
mimeType: "image/webp",
|
287
|
+
bytesPrefix: [82, 73, 70, 70],
|
288
|
+
base64Prefix: "UklGRg"
|
289
|
+
},
|
290
|
+
{
|
291
|
+
mimeType: "image/bmp",
|
292
|
+
bytesPrefix: [66, 77],
|
293
|
+
base64Prefix: "Qk"
|
294
|
+
},
|
295
|
+
{
|
296
|
+
mimeType: "image/tiff",
|
297
|
+
bytesPrefix: [73, 73, 42, 0],
|
298
|
+
base64Prefix: "SUkqAA"
|
299
|
+
},
|
300
|
+
{
|
301
|
+
mimeType: "image/tiff",
|
302
|
+
bytesPrefix: [77, 77, 0, 42],
|
303
|
+
base64Prefix: "TU0AKg"
|
304
|
+
},
|
305
|
+
{
|
306
|
+
mimeType: "image/avif",
|
307
|
+
bytesPrefix: [
|
308
|
+
0,
|
309
|
+
0,
|
310
|
+
0,
|
311
|
+
32,
|
312
|
+
102,
|
313
|
+
116,
|
314
|
+
121,
|
315
|
+
112,
|
316
|
+
97,
|
317
|
+
118,
|
318
|
+
105,
|
319
|
+
102
|
320
|
+
],
|
321
|
+
base64Prefix: "AAAAIGZ0eXBhdmlm"
|
322
|
+
},
|
323
|
+
{
|
324
|
+
mimeType: "image/heic",
|
325
|
+
bytesPrefix: [
|
326
|
+
0,
|
327
|
+
0,
|
328
|
+
0,
|
329
|
+
32,
|
330
|
+
102,
|
331
|
+
116,
|
332
|
+
121,
|
333
|
+
112,
|
334
|
+
104,
|
335
|
+
101,
|
336
|
+
105,
|
337
|
+
99
|
338
|
+
],
|
339
|
+
base64Prefix: "AAAAIGZ0eXBoZWlj"
|
340
|
+
}
|
276
341
|
];
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
342
|
+
var stripID3 = (data) => {
|
343
|
+
const bytes = typeof data === "string" ? convertBase64ToUint8Array(data) : data;
|
344
|
+
const id3Size = (bytes[6] & 127) << 21 | (bytes[7] & 127) << 14 | (bytes[8] & 127) << 7 | bytes[9] & 127;
|
345
|
+
return bytes.slice(id3Size + 10);
|
346
|
+
};
|
347
|
+
function stripID3TagsIfPresent(data) {
|
348
|
+
const hasId3 = typeof data === "string" && data.startsWith("SUQz") || typeof data !== "string" && data.length > 10 && data[0] === 73 && // 'I'
|
349
|
+
data[1] === 68 && // 'D'
|
350
|
+
data[2] === 51;
|
351
|
+
return hasId3 ? stripID3(data) : data;
|
352
|
+
}
|
353
|
+
function detectMimeType({
|
354
|
+
data,
|
355
|
+
signatures
|
356
|
+
}) {
|
357
|
+
const processedData = stripID3TagsIfPresent(data);
|
358
|
+
for (const signature of signatures) {
|
359
|
+
if (typeof processedData === "string" ? processedData.startsWith(signature.base64Prefix) : processedData.length >= signature.bytesPrefix.length && signature.bytesPrefix.every(
|
360
|
+
(byte, index) => processedData[index] === byte
|
361
|
+
)) {
|
362
|
+
return signature.mimeType;
|
281
363
|
}
|
282
364
|
}
|
283
365
|
return void 0;
|
@@ -285,7 +367,7 @@ function detectImageMimeType(image) {
|
|
285
367
|
|
286
368
|
// core/prompt/data-content.ts
|
287
369
|
import {
|
288
|
-
convertBase64ToUint8Array,
|
370
|
+
convertBase64ToUint8Array as convertBase64ToUint8Array2,
|
289
371
|
convertUint8ArrayToBase64
|
290
372
|
} from "@ai-sdk/provider-utils";
|
291
373
|
|
@@ -341,7 +423,7 @@ function convertDataContentToUint8Array(content) {
|
|
341
423
|
}
|
342
424
|
if (typeof content === "string") {
|
343
425
|
try {
|
344
|
-
return
|
426
|
+
return convertBase64ToUint8Array2(content);
|
345
427
|
} catch (error) {
|
346
428
|
throw new InvalidDataContentError({
|
347
429
|
message: "Invalid data content. Content string is not a base64-encoded media.",
|
@@ -421,13 +503,14 @@ async function convertToLanguageModelPrompt({
|
|
421
503
|
];
|
422
504
|
}
|
423
505
|
function convertToLanguageModelMessage(message, downloadedAssets) {
|
506
|
+
var _a9, _b, _c, _d, _e, _f;
|
424
507
|
const role = message.role;
|
425
508
|
switch (role) {
|
426
509
|
case "system": {
|
427
510
|
return {
|
428
511
|
role: "system",
|
429
512
|
content: message.content,
|
430
|
-
providerMetadata: message.experimental_providerMetadata
|
513
|
+
providerMetadata: (_a9 = message.providerOptions) != null ? _a9 : message.experimental_providerMetadata
|
431
514
|
};
|
432
515
|
}
|
433
516
|
case "user": {
|
@@ -435,13 +518,13 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
|
|
435
518
|
return {
|
436
519
|
role: "user",
|
437
520
|
content: [{ type: "text", text: message.content }],
|
438
|
-
providerMetadata: message.experimental_providerMetadata
|
521
|
+
providerMetadata: (_b = message.providerOptions) != null ? _b : message.experimental_providerMetadata
|
439
522
|
};
|
440
523
|
}
|
441
524
|
return {
|
442
525
|
role: "user",
|
443
526
|
content: message.content.map((part) => convertPartToLanguageModelPart(part, downloadedAssets)).filter((part) => part.type !== "text" || part.text !== ""),
|
444
|
-
providerMetadata: message.experimental_providerMetadata
|
527
|
+
providerMetadata: (_c = message.providerOptions) != null ? _c : message.experimental_providerMetadata
|
445
528
|
};
|
446
529
|
}
|
447
530
|
case "assistant": {
|
@@ -449,7 +532,7 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
|
|
449
532
|
return {
|
450
533
|
role: "assistant",
|
451
534
|
content: [{ type: "text", text: message.content }],
|
452
|
-
providerMetadata: message.experimental_providerMetadata
|
535
|
+
providerMetadata: (_d = message.providerOptions) != null ? _d : message.experimental_providerMetadata
|
453
536
|
};
|
454
537
|
}
|
455
538
|
return {
|
@@ -458,28 +541,70 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
|
|
458
541
|
// remove empty text parts:
|
459
542
|
(part) => part.type !== "text" || part.text !== ""
|
460
543
|
).map((part) => {
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
544
|
+
var _a10;
|
545
|
+
const providerOptions = (_a10 = part.providerOptions) != null ? _a10 : part.experimental_providerMetadata;
|
546
|
+
switch (part.type) {
|
547
|
+
case "file": {
|
548
|
+
return {
|
549
|
+
type: "file",
|
550
|
+
data: part.data instanceof URL ? part.data : convertDataContentToBase64String(part.data),
|
551
|
+
filename: part.filename,
|
552
|
+
mimeType: part.mimeType,
|
553
|
+
providerMetadata: providerOptions
|
554
|
+
};
|
555
|
+
}
|
556
|
+
case "reasoning": {
|
557
|
+
return {
|
558
|
+
type: "reasoning",
|
559
|
+
text: part.text,
|
560
|
+
signature: part.signature,
|
561
|
+
providerMetadata: providerOptions
|
562
|
+
};
|
563
|
+
}
|
564
|
+
case "redacted-reasoning": {
|
565
|
+
return {
|
566
|
+
type: "redacted-reasoning",
|
567
|
+
data: part.data,
|
568
|
+
providerMetadata: providerOptions
|
569
|
+
};
|
570
|
+
}
|
571
|
+
case "text": {
|
572
|
+
return {
|
573
|
+
type: "text",
|
574
|
+
text: part.text,
|
575
|
+
providerMetadata: providerOptions
|
576
|
+
};
|
577
|
+
}
|
578
|
+
case "tool-call": {
|
579
|
+
return {
|
580
|
+
type: "tool-call",
|
581
|
+
toolCallId: part.toolCallId,
|
582
|
+
toolName: part.toolName,
|
583
|
+
args: part.args,
|
584
|
+
providerMetadata: providerOptions
|
585
|
+
};
|
586
|
+
}
|
587
|
+
}
|
466
588
|
}),
|
467
|
-
providerMetadata: message.experimental_providerMetadata
|
589
|
+
providerMetadata: (_e = message.providerOptions) != null ? _e : message.experimental_providerMetadata
|
468
590
|
};
|
469
591
|
}
|
470
592
|
case "tool": {
|
471
593
|
return {
|
472
594
|
role: "tool",
|
473
|
-
content: message.content.map((part) =>
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
595
|
+
content: message.content.map((part) => {
|
596
|
+
var _a10;
|
597
|
+
return {
|
598
|
+
type: "tool-result",
|
599
|
+
toolCallId: part.toolCallId,
|
600
|
+
toolName: part.toolName,
|
601
|
+
result: part.result,
|
602
|
+
content: part.experimental_content,
|
603
|
+
isError: part.isError,
|
604
|
+
providerMetadata: (_a10 = part.providerOptions) != null ? _a10 : part.experimental_providerMetadata
|
605
|
+
};
|
606
|
+
}),
|
607
|
+
providerMetadata: (_f = message.providerOptions) != null ? _f : message.experimental_providerMetadata
|
483
608
|
};
|
484
609
|
}
|
485
610
|
default: {
|
@@ -512,12 +637,12 @@ async function downloadAssets(messages, downloadImplementation, modelSupportsIma
|
|
512
637
|
);
|
513
638
|
}
|
514
639
|
function convertPartToLanguageModelPart(part, downloadedAssets) {
|
515
|
-
var _a9;
|
640
|
+
var _a9, _b, _c, _d;
|
516
641
|
if (part.type === "text") {
|
517
642
|
return {
|
518
643
|
type: "text",
|
519
644
|
text: part.text,
|
520
|
-
providerMetadata: part.experimental_providerMetadata
|
645
|
+
providerMetadata: (_a9 = part.providerOptions) != null ? _a9 : part.experimental_providerMetadata
|
521
646
|
};
|
522
647
|
}
|
523
648
|
let mimeType = part.mimeType;
|
@@ -565,13 +690,16 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
565
690
|
switch (type) {
|
566
691
|
case "image": {
|
567
692
|
if (normalizedData instanceof Uint8Array) {
|
568
|
-
mimeType = (
|
693
|
+
mimeType = (_b = detectMimeType({
|
694
|
+
data: normalizedData,
|
695
|
+
signatures: imageMimeTypeSignatures
|
696
|
+
})) != null ? _b : mimeType;
|
569
697
|
}
|
570
698
|
return {
|
571
699
|
type: "image",
|
572
700
|
image: normalizedData,
|
573
701
|
mimeType,
|
574
|
-
providerMetadata: part.experimental_providerMetadata
|
702
|
+
providerMetadata: (_c = part.providerOptions) != null ? _c : part.experimental_providerMetadata
|
575
703
|
};
|
576
704
|
}
|
577
705
|
case "file": {
|
@@ -581,8 +709,9 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
581
709
|
return {
|
582
710
|
type: "file",
|
583
711
|
data: normalizedData instanceof Uint8Array ? convertDataContentToBase64String(normalizedData) : normalizedData,
|
712
|
+
filename: part.filename,
|
584
713
|
mimeType,
|
585
|
-
providerMetadata: part.experimental_providerMetadata
|
714
|
+
providerMetadata: (_d = part.providerOptions) != null ? _d : part.experimental_providerMetadata
|
586
715
|
};
|
587
716
|
}
|
588
717
|
}
|
@@ -697,6 +826,7 @@ function prepareCallSettings({
|
|
697
826
|
}
|
698
827
|
return {
|
699
828
|
maxTokens,
|
829
|
+
// TODO v5 remove default 0 for temperature
|
700
830
|
temperature: temperature != null ? temperature : 0,
|
701
831
|
topP,
|
702
832
|
topK,
|
@@ -709,12 +839,7 @@ function prepareCallSettings({
|
|
709
839
|
|
710
840
|
// util/retry-with-exponential-backoff.ts
|
711
841
|
import { APICallError } from "@ai-sdk/provider";
|
712
|
-
import { getErrorMessage, isAbortError } from "@ai-sdk/provider-utils";
|
713
|
-
|
714
|
-
// util/delay.ts
|
715
|
-
async function delay(delayInMs) {
|
716
|
-
return delayInMs == null ? Promise.resolve() : new Promise((resolve) => setTimeout(resolve, delayInMs));
|
717
|
-
}
|
842
|
+
import { delay, getErrorMessage, isAbortError } from "@ai-sdk/provider-utils";
|
718
843
|
|
719
844
|
// util/retry-error.ts
|
720
845
|
import { AISDKError as AISDKError5 } from "@ai-sdk/provider";
|
@@ -873,154 +998,10 @@ function prepareToolsAndToolChoice({
|
|
873
998
|
}
|
874
999
|
|
875
1000
|
// core/prompt/standardize-prompt.ts
|
876
|
-
import { InvalidPromptError } from "@ai-sdk/provider";
|
1001
|
+
import { InvalidPromptError as InvalidPromptError2 } from "@ai-sdk/provider";
|
877
1002
|
import { safeValidateTypes } from "@ai-sdk/provider-utils";
|
878
1003
|
import { z as z7 } from "zod";
|
879
1004
|
|
880
|
-
// core/prompt/message.ts
|
881
|
-
import { z as z6 } from "zod";
|
882
|
-
|
883
|
-
// core/types/provider-metadata.ts
|
884
|
-
import { z as z3 } from "zod";
|
885
|
-
|
886
|
-
// core/types/json-value.ts
|
887
|
-
import { z as z2 } from "zod";
|
888
|
-
var jsonValueSchema = z2.lazy(
|
889
|
-
() => z2.union([
|
890
|
-
z2.null(),
|
891
|
-
z2.string(),
|
892
|
-
z2.number(),
|
893
|
-
z2.boolean(),
|
894
|
-
z2.record(z2.string(), jsonValueSchema),
|
895
|
-
z2.array(jsonValueSchema)
|
896
|
-
])
|
897
|
-
);
|
898
|
-
|
899
|
-
// core/types/provider-metadata.ts
|
900
|
-
var providerMetadataSchema = z3.record(
|
901
|
-
z3.string(),
|
902
|
-
z3.record(z3.string(), jsonValueSchema)
|
903
|
-
);
|
904
|
-
|
905
|
-
// core/prompt/content-part.ts
|
906
|
-
import { z as z5 } from "zod";
|
907
|
-
|
908
|
-
// core/prompt/tool-result-content.ts
|
909
|
-
import { z as z4 } from "zod";
|
910
|
-
var toolResultContentSchema = z4.array(
|
911
|
-
z4.union([
|
912
|
-
z4.object({ type: z4.literal("text"), text: z4.string() }),
|
913
|
-
z4.object({
|
914
|
-
type: z4.literal("image"),
|
915
|
-
data: z4.string(),
|
916
|
-
mimeType: z4.string().optional()
|
917
|
-
})
|
918
|
-
])
|
919
|
-
);
|
920
|
-
|
921
|
-
// core/prompt/content-part.ts
|
922
|
-
var textPartSchema = z5.object({
|
923
|
-
type: z5.literal("text"),
|
924
|
-
text: z5.string(),
|
925
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
926
|
-
});
|
927
|
-
var imagePartSchema = z5.object({
|
928
|
-
type: z5.literal("image"),
|
929
|
-
image: z5.union([dataContentSchema, z5.instanceof(URL)]),
|
930
|
-
mimeType: z5.string().optional(),
|
931
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
932
|
-
});
|
933
|
-
var filePartSchema = z5.object({
|
934
|
-
type: z5.literal("file"),
|
935
|
-
data: z5.union([dataContentSchema, z5.instanceof(URL)]),
|
936
|
-
mimeType: z5.string(),
|
937
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
938
|
-
});
|
939
|
-
var toolCallPartSchema = z5.object({
|
940
|
-
type: z5.literal("tool-call"),
|
941
|
-
toolCallId: z5.string(),
|
942
|
-
toolName: z5.string(),
|
943
|
-
args: z5.unknown()
|
944
|
-
});
|
945
|
-
var toolResultPartSchema = z5.object({
|
946
|
-
type: z5.literal("tool-result"),
|
947
|
-
toolCallId: z5.string(),
|
948
|
-
toolName: z5.string(),
|
949
|
-
result: z5.unknown(),
|
950
|
-
content: toolResultContentSchema.optional(),
|
951
|
-
isError: z5.boolean().optional(),
|
952
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
953
|
-
});
|
954
|
-
|
955
|
-
// core/prompt/message.ts
|
956
|
-
var coreSystemMessageSchema = z6.object({
|
957
|
-
role: z6.literal("system"),
|
958
|
-
content: z6.string(),
|
959
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
960
|
-
});
|
961
|
-
var coreUserMessageSchema = z6.object({
|
962
|
-
role: z6.literal("user"),
|
963
|
-
content: z6.union([
|
964
|
-
z6.string(),
|
965
|
-
z6.array(z6.union([textPartSchema, imagePartSchema, filePartSchema]))
|
966
|
-
]),
|
967
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
968
|
-
});
|
969
|
-
var coreAssistantMessageSchema = z6.object({
|
970
|
-
role: z6.literal("assistant"),
|
971
|
-
content: z6.union([
|
972
|
-
z6.string(),
|
973
|
-
z6.array(z6.union([textPartSchema, toolCallPartSchema]))
|
974
|
-
]),
|
975
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
976
|
-
});
|
977
|
-
var coreToolMessageSchema = z6.object({
|
978
|
-
role: z6.literal("tool"),
|
979
|
-
content: z6.array(toolResultPartSchema),
|
980
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
981
|
-
});
|
982
|
-
var coreMessageSchema = z6.union([
|
983
|
-
coreSystemMessageSchema,
|
984
|
-
coreUserMessageSchema,
|
985
|
-
coreAssistantMessageSchema,
|
986
|
-
coreToolMessageSchema
|
987
|
-
]);
|
988
|
-
|
989
|
-
// core/prompt/detect-prompt-type.ts
|
990
|
-
function detectPromptType(prompt) {
|
991
|
-
if (!Array.isArray(prompt)) {
|
992
|
-
return "other";
|
993
|
-
}
|
994
|
-
if (prompt.length === 0) {
|
995
|
-
return "messages";
|
996
|
-
}
|
997
|
-
const characteristics = prompt.map(detectSingleMessageCharacteristics);
|
998
|
-
if (characteristics.some((c) => c === "has-ui-specific-parts")) {
|
999
|
-
return "ui-messages";
|
1000
|
-
} else if (characteristics.every(
|
1001
|
-
(c) => c === "has-core-specific-parts" || c === "message"
|
1002
|
-
)) {
|
1003
|
-
return "messages";
|
1004
|
-
} else {
|
1005
|
-
return "other";
|
1006
|
-
}
|
1007
|
-
}
|
1008
|
-
function detectSingleMessageCharacteristics(message) {
|
1009
|
-
if (typeof message === "object" && message !== null && (message.role === "function" || // UI-only role
|
1010
|
-
message.role === "data" || // UI-only role
|
1011
|
-
"toolInvocations" in message || // UI-specific field
|
1012
|
-
"experimental_attachments" in message)) {
|
1013
|
-
return "has-ui-specific-parts";
|
1014
|
-
} else if (typeof message === "object" && message !== null && "content" in message && (Array.isArray(message.content) || // Core messages can have array content
|
1015
|
-
"experimental_providerMetadata" in message)) {
|
1016
|
-
return "has-core-specific-parts";
|
1017
|
-
} else if (typeof message === "object" && message !== null && "role" in message && "content" in message && typeof message.content === "string" && ["system", "user", "assistant", "tool"].includes(message.role)) {
|
1018
|
-
return "message";
|
1019
|
-
} else {
|
1020
|
-
return "other";
|
1021
|
-
}
|
1022
|
-
}
|
1023
|
-
|
1024
1005
|
// core/prompt/attachments-to-parts.ts
|
1025
1006
|
function attachmentsToParts(attachments) {
|
1026
1007
|
var _a9, _b, _c;
|
@@ -1121,11 +1102,13 @@ _a6 = symbol6;
|
|
1121
1102
|
|
1122
1103
|
// core/prompt/convert-to-core-messages.ts
|
1123
1104
|
function convertToCoreMessages(messages, options) {
|
1124
|
-
var _a9;
|
1105
|
+
var _a9, _b;
|
1125
1106
|
const tools = (_a9 = options == null ? void 0 : options.tools) != null ? _a9 : {};
|
1126
1107
|
const coreMessages = [];
|
1127
|
-
for (
|
1128
|
-
const
|
1108
|
+
for (let i = 0; i < messages.length; i++) {
|
1109
|
+
const message = messages[i];
|
1110
|
+
const isLastMessage = i === messages.length - 1;
|
1111
|
+
const { role, content, experimental_attachments } = message;
|
1129
1112
|
switch (role) {
|
1130
1113
|
case "system": {
|
1131
1114
|
coreMessages.push({
|
@@ -1135,59 +1118,204 @@ function convertToCoreMessages(messages, options) {
|
|
1135
1118
|
break;
|
1136
1119
|
}
|
1137
1120
|
case "user": {
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
1144
|
-
|
1121
|
+
if (message.parts == null) {
|
1122
|
+
coreMessages.push({
|
1123
|
+
role: "user",
|
1124
|
+
content: experimental_attachments ? [
|
1125
|
+
{ type: "text", text: content },
|
1126
|
+
...attachmentsToParts(experimental_attachments)
|
1127
|
+
] : content
|
1128
|
+
});
|
1129
|
+
} else {
|
1130
|
+
const textParts = message.parts.filter((part) => part.type === "text").map((part) => ({
|
1131
|
+
type: "text",
|
1132
|
+
text: part.text
|
1133
|
+
}));
|
1134
|
+
coreMessages.push({
|
1135
|
+
role: "user",
|
1136
|
+
content: experimental_attachments ? [...textParts, ...attachmentsToParts(experimental_attachments)] : textParts
|
1137
|
+
});
|
1138
|
+
}
|
1145
1139
|
break;
|
1146
1140
|
}
|
1147
1141
|
case "assistant": {
|
1148
|
-
if (
|
1142
|
+
if (message.parts != null) {
|
1143
|
+
let processBlock2 = function() {
|
1144
|
+
const content2 = [];
|
1145
|
+
for (const part of block) {
|
1146
|
+
switch (part.type) {
|
1147
|
+
case "file":
|
1148
|
+
case "text": {
|
1149
|
+
content2.push(part);
|
1150
|
+
break;
|
1151
|
+
}
|
1152
|
+
case "reasoning": {
|
1153
|
+
for (const detail of part.details) {
|
1154
|
+
switch (detail.type) {
|
1155
|
+
case "text":
|
1156
|
+
content2.push({
|
1157
|
+
type: "reasoning",
|
1158
|
+
text: detail.text,
|
1159
|
+
signature: detail.signature
|
1160
|
+
});
|
1161
|
+
break;
|
1162
|
+
case "redacted":
|
1163
|
+
content2.push({
|
1164
|
+
type: "redacted-reasoning",
|
1165
|
+
data: detail.data
|
1166
|
+
});
|
1167
|
+
break;
|
1168
|
+
}
|
1169
|
+
}
|
1170
|
+
break;
|
1171
|
+
}
|
1172
|
+
case "tool-invocation":
|
1173
|
+
content2.push({
|
1174
|
+
type: "tool-call",
|
1175
|
+
toolCallId: part.toolInvocation.toolCallId,
|
1176
|
+
toolName: part.toolInvocation.toolName,
|
1177
|
+
args: part.toolInvocation.args
|
1178
|
+
});
|
1179
|
+
break;
|
1180
|
+
default: {
|
1181
|
+
const _exhaustiveCheck = part;
|
1182
|
+
throw new Error(`Unsupported part: ${_exhaustiveCheck}`);
|
1183
|
+
}
|
1184
|
+
}
|
1185
|
+
}
|
1186
|
+
coreMessages.push({
|
1187
|
+
role: "assistant",
|
1188
|
+
content: content2
|
1189
|
+
});
|
1190
|
+
const stepInvocations = block.filter(
|
1191
|
+
(part) => part.type === "tool-invocation"
|
1192
|
+
).map((part) => part.toolInvocation);
|
1193
|
+
if (stepInvocations.length > 0) {
|
1194
|
+
coreMessages.push({
|
1195
|
+
role: "tool",
|
1196
|
+
content: stepInvocations.map(
|
1197
|
+
(toolInvocation) => {
|
1198
|
+
if (!("result" in toolInvocation)) {
|
1199
|
+
throw new MessageConversionError({
|
1200
|
+
originalMessage: message,
|
1201
|
+
message: "ToolInvocation must have a result: " + JSON.stringify(toolInvocation)
|
1202
|
+
});
|
1203
|
+
}
|
1204
|
+
const { toolCallId, toolName, result } = toolInvocation;
|
1205
|
+
const tool = tools[toolName];
|
1206
|
+
return (tool == null ? void 0 : tool.experimental_toToolResultContent) != null ? {
|
1207
|
+
type: "tool-result",
|
1208
|
+
toolCallId,
|
1209
|
+
toolName,
|
1210
|
+
result: tool.experimental_toToolResultContent(result),
|
1211
|
+
experimental_content: tool.experimental_toToolResultContent(result)
|
1212
|
+
} : {
|
1213
|
+
type: "tool-result",
|
1214
|
+
toolCallId,
|
1215
|
+
toolName,
|
1216
|
+
result
|
1217
|
+
};
|
1218
|
+
}
|
1219
|
+
)
|
1220
|
+
});
|
1221
|
+
}
|
1222
|
+
block = [];
|
1223
|
+
blockHasToolInvocations = false;
|
1224
|
+
currentStep++;
|
1225
|
+
};
|
1226
|
+
var processBlock = processBlock2;
|
1227
|
+
let currentStep = 0;
|
1228
|
+
let blockHasToolInvocations = false;
|
1229
|
+
let block = [];
|
1230
|
+
for (const part of message.parts) {
|
1231
|
+
switch (part.type) {
|
1232
|
+
case "text": {
|
1233
|
+
if (blockHasToolInvocations) {
|
1234
|
+
processBlock2();
|
1235
|
+
}
|
1236
|
+
block.push(part);
|
1237
|
+
break;
|
1238
|
+
}
|
1239
|
+
case "file":
|
1240
|
+
case "reasoning": {
|
1241
|
+
block.push(part);
|
1242
|
+
break;
|
1243
|
+
}
|
1244
|
+
case "tool-invocation": {
|
1245
|
+
if (((_b = part.toolInvocation.step) != null ? _b : 0) !== currentStep) {
|
1246
|
+
processBlock2();
|
1247
|
+
}
|
1248
|
+
block.push(part);
|
1249
|
+
blockHasToolInvocations = true;
|
1250
|
+
break;
|
1251
|
+
}
|
1252
|
+
}
|
1253
|
+
}
|
1254
|
+
processBlock2();
|
1255
|
+
break;
|
1256
|
+
}
|
1257
|
+
const toolInvocations = message.toolInvocations;
|
1258
|
+
if (toolInvocations == null || toolInvocations.length === 0) {
|
1149
1259
|
coreMessages.push({ role: "assistant", content });
|
1150
1260
|
break;
|
1151
1261
|
}
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1262
|
+
const maxStep = toolInvocations.reduce((max, toolInvocation) => {
|
1263
|
+
var _a10;
|
1264
|
+
return Math.max(max, (_a10 = toolInvocation.step) != null ? _a10 : 0);
|
1265
|
+
}, 0);
|
1266
|
+
for (let i2 = 0; i2 <= maxStep; i2++) {
|
1267
|
+
const stepInvocations = toolInvocations.filter(
|
1268
|
+
(toolInvocation) => {
|
1269
|
+
var _a10;
|
1270
|
+
return ((_a10 = toolInvocation.step) != null ? _a10 : 0) === i2;
|
1271
|
+
}
|
1272
|
+
);
|
1273
|
+
if (stepInvocations.length === 0) {
|
1274
|
+
continue;
|
1275
|
+
}
|
1276
|
+
coreMessages.push({
|
1277
|
+
role: "assistant",
|
1278
|
+
content: [
|
1279
|
+
...isLastMessage && content && i2 === 0 ? [{ type: "text", text: content }] : [],
|
1280
|
+
...stepInvocations.map(
|
1281
|
+
({ toolCallId, toolName, args }) => ({
|
1282
|
+
type: "tool-call",
|
1283
|
+
toolCallId,
|
1284
|
+
toolName,
|
1285
|
+
args
|
1286
|
+
})
|
1287
|
+
)
|
1288
|
+
]
|
1289
|
+
});
|
1290
|
+
coreMessages.push({
|
1291
|
+
role: "tool",
|
1292
|
+
content: stepInvocations.map((toolInvocation) => {
|
1293
|
+
if (!("result" in toolInvocation)) {
|
1294
|
+
throw new MessageConversionError({
|
1295
|
+
originalMessage: message,
|
1296
|
+
message: "ToolInvocation must have a result: " + JSON.stringify(toolInvocation)
|
1297
|
+
});
|
1298
|
+
}
|
1299
|
+
const { toolCallId, toolName, result } = toolInvocation;
|
1300
|
+
const tool = tools[toolName];
|
1301
|
+
return (tool == null ? void 0 : tool.experimental_toToolResultContent) != null ? {
|
1302
|
+
type: "tool-result",
|
1159
1303
|
toolCallId,
|
1160
1304
|
toolName,
|
1161
|
-
|
1162
|
-
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
const { toolCallId, toolName, result } = toolInvocation;
|
1176
|
-
const tool = tools[toolName];
|
1177
|
-
return (tool == null ? void 0 : tool.experimental_toToolResultContent) != null ? {
|
1178
|
-
type: "tool-result",
|
1179
|
-
toolCallId,
|
1180
|
-
toolName,
|
1181
|
-
result: tool.experimental_toToolResultContent(result),
|
1182
|
-
experimental_content: tool.experimental_toToolResultContent(result)
|
1183
|
-
} : {
|
1184
|
-
type: "tool-result",
|
1185
|
-
toolCallId,
|
1186
|
-
toolName,
|
1187
|
-
result
|
1188
|
-
};
|
1189
|
-
})
|
1190
|
-
});
|
1305
|
+
result: tool.experimental_toToolResultContent(result),
|
1306
|
+
experimental_content: tool.experimental_toToolResultContent(result)
|
1307
|
+
} : {
|
1308
|
+
type: "tool-result",
|
1309
|
+
toolCallId,
|
1310
|
+
toolName,
|
1311
|
+
result
|
1312
|
+
};
|
1313
|
+
})
|
1314
|
+
});
|
1315
|
+
}
|
1316
|
+
if (content && !isLastMessage) {
|
1317
|
+
coreMessages.push({ role: "assistant", content });
|
1318
|
+
}
|
1191
1319
|
break;
|
1192
1320
|
}
|
1193
1321
|
case "data": {
|
@@ -1205,32 +1333,225 @@ function convertToCoreMessages(messages, options) {
|
|
1205
1333
|
return coreMessages;
|
1206
1334
|
}
|
1207
1335
|
|
1336
|
+
// core/prompt/detect-prompt-type.ts
|
1337
|
+
import { InvalidPromptError } from "@ai-sdk/provider";
|
1338
|
+
function detectPromptType(prompt) {
|
1339
|
+
if (!Array.isArray(prompt)) {
|
1340
|
+
throw new InvalidPromptError({
|
1341
|
+
prompt,
|
1342
|
+
message: [
|
1343
|
+
"messages must be an array of CoreMessage or UIMessage",
|
1344
|
+
`Received non-array value: ${JSON.stringify(prompt)}`
|
1345
|
+
].join("\n"),
|
1346
|
+
cause: prompt
|
1347
|
+
});
|
1348
|
+
}
|
1349
|
+
if (prompt.length === 0) {
|
1350
|
+
return "messages";
|
1351
|
+
}
|
1352
|
+
const characteristics = prompt.map(detectSingleMessageCharacteristics);
|
1353
|
+
if (characteristics.some((c) => c === "has-ui-specific-parts")) {
|
1354
|
+
return "ui-messages";
|
1355
|
+
}
|
1356
|
+
const nonMessageIndex = characteristics.findIndex(
|
1357
|
+
(c) => c !== "has-core-specific-parts" && c !== "message"
|
1358
|
+
);
|
1359
|
+
if (nonMessageIndex === -1) {
|
1360
|
+
return "messages";
|
1361
|
+
}
|
1362
|
+
throw new InvalidPromptError({
|
1363
|
+
prompt,
|
1364
|
+
message: [
|
1365
|
+
"messages must be an array of CoreMessage or UIMessage",
|
1366
|
+
`Received message of type: "${characteristics[nonMessageIndex]}" at index ${nonMessageIndex}`,
|
1367
|
+
`messages[${nonMessageIndex}]: ${JSON.stringify(prompt[nonMessageIndex])}`
|
1368
|
+
].join("\n"),
|
1369
|
+
cause: prompt
|
1370
|
+
});
|
1371
|
+
}
|
1372
|
+
function detectSingleMessageCharacteristics(message) {
|
1373
|
+
if (typeof message === "object" && message !== null && (message.role === "function" || // UI-only role
|
1374
|
+
message.role === "data" || // UI-only role
|
1375
|
+
"toolInvocations" in message || // UI-specific field
|
1376
|
+
"parts" in message || // UI-specific field
|
1377
|
+
"experimental_attachments" in message)) {
|
1378
|
+
return "has-ui-specific-parts";
|
1379
|
+
} else if (typeof message === "object" && message !== null && "content" in message && (Array.isArray(message.content) || // Core messages can have array content
|
1380
|
+
"experimental_providerMetadata" in message || "providerOptions" in message)) {
|
1381
|
+
return "has-core-specific-parts";
|
1382
|
+
} else if (typeof message === "object" && message !== null && "role" in message && "content" in message && typeof message.content === "string" && ["system", "user", "assistant", "tool"].includes(message.role)) {
|
1383
|
+
return "message";
|
1384
|
+
} else {
|
1385
|
+
return "other";
|
1386
|
+
}
|
1387
|
+
}
|
1388
|
+
|
1389
|
+
// core/prompt/message.ts
|
1390
|
+
import { z as z6 } from "zod";
|
1391
|
+
|
1392
|
+
// core/types/provider-metadata.ts
|
1393
|
+
import { z as z3 } from "zod";
|
1394
|
+
|
1395
|
+
// core/types/json-value.ts
|
1396
|
+
import { z as z2 } from "zod";
|
1397
|
+
var jsonValueSchema = z2.lazy(
|
1398
|
+
() => z2.union([
|
1399
|
+
z2.null(),
|
1400
|
+
z2.string(),
|
1401
|
+
z2.number(),
|
1402
|
+
z2.boolean(),
|
1403
|
+
z2.record(z2.string(), jsonValueSchema),
|
1404
|
+
z2.array(jsonValueSchema)
|
1405
|
+
])
|
1406
|
+
);
|
1407
|
+
|
1408
|
+
// core/types/provider-metadata.ts
|
1409
|
+
var providerMetadataSchema = z3.record(
|
1410
|
+
z3.string(),
|
1411
|
+
z3.record(z3.string(), jsonValueSchema)
|
1412
|
+
);
|
1413
|
+
|
1414
|
+
// core/prompt/content-part.ts
|
1415
|
+
import { z as z5 } from "zod";
|
1416
|
+
|
1417
|
+
// core/prompt/tool-result-content.ts
|
1418
|
+
import { z as z4 } from "zod";
|
1419
|
+
var toolResultContentSchema = z4.array(
|
1420
|
+
z4.union([
|
1421
|
+
z4.object({ type: z4.literal("text"), text: z4.string() }),
|
1422
|
+
z4.object({
|
1423
|
+
type: z4.literal("image"),
|
1424
|
+
data: z4.string(),
|
1425
|
+
mimeType: z4.string().optional()
|
1426
|
+
})
|
1427
|
+
])
|
1428
|
+
);
|
1429
|
+
|
1430
|
+
// core/prompt/content-part.ts
|
1431
|
+
var textPartSchema = z5.object({
|
1432
|
+
type: z5.literal("text"),
|
1433
|
+
text: z5.string(),
|
1434
|
+
providerOptions: providerMetadataSchema.optional(),
|
1435
|
+
experimental_providerMetadata: providerMetadataSchema.optional()
|
1436
|
+
});
|
1437
|
+
var imagePartSchema = z5.object({
|
1438
|
+
type: z5.literal("image"),
|
1439
|
+
image: z5.union([dataContentSchema, z5.instanceof(URL)]),
|
1440
|
+
mimeType: z5.string().optional(),
|
1441
|
+
providerOptions: providerMetadataSchema.optional(),
|
1442
|
+
experimental_providerMetadata: providerMetadataSchema.optional()
|
1443
|
+
});
|
1444
|
+
var filePartSchema = z5.object({
|
1445
|
+
type: z5.literal("file"),
|
1446
|
+
data: z5.union([dataContentSchema, z5.instanceof(URL)]),
|
1447
|
+
filename: z5.string().optional(),
|
1448
|
+
mimeType: z5.string(),
|
1449
|
+
providerOptions: providerMetadataSchema.optional(),
|
1450
|
+
experimental_providerMetadata: providerMetadataSchema.optional()
|
1451
|
+
});
|
1452
|
+
var reasoningPartSchema = z5.object({
|
1453
|
+
type: z5.literal("reasoning"),
|
1454
|
+
text: z5.string(),
|
1455
|
+
providerOptions: providerMetadataSchema.optional(),
|
1456
|
+
experimental_providerMetadata: providerMetadataSchema.optional()
|
1457
|
+
});
|
1458
|
+
var redactedReasoningPartSchema = z5.object({
|
1459
|
+
type: z5.literal("redacted-reasoning"),
|
1460
|
+
data: z5.string(),
|
1461
|
+
providerOptions: providerMetadataSchema.optional(),
|
1462
|
+
experimental_providerMetadata: providerMetadataSchema.optional()
|
1463
|
+
});
|
1464
|
+
var toolCallPartSchema = z5.object({
|
1465
|
+
type: z5.literal("tool-call"),
|
1466
|
+
toolCallId: z5.string(),
|
1467
|
+
toolName: z5.string(),
|
1468
|
+
args: z5.unknown(),
|
1469
|
+
providerOptions: providerMetadataSchema.optional(),
|
1470
|
+
experimental_providerMetadata: providerMetadataSchema.optional()
|
1471
|
+
});
|
1472
|
+
var toolResultPartSchema = z5.object({
|
1473
|
+
type: z5.literal("tool-result"),
|
1474
|
+
toolCallId: z5.string(),
|
1475
|
+
toolName: z5.string(),
|
1476
|
+
result: z5.unknown(),
|
1477
|
+
content: toolResultContentSchema.optional(),
|
1478
|
+
isError: z5.boolean().optional(),
|
1479
|
+
providerOptions: providerMetadataSchema.optional(),
|
1480
|
+
experimental_providerMetadata: providerMetadataSchema.optional()
|
1481
|
+
});
|
1482
|
+
|
1483
|
+
// core/prompt/message.ts
|
1484
|
+
var coreSystemMessageSchema = z6.object({
|
1485
|
+
role: z6.literal("system"),
|
1486
|
+
content: z6.string(),
|
1487
|
+
providerOptions: providerMetadataSchema.optional(),
|
1488
|
+
experimental_providerMetadata: providerMetadataSchema.optional()
|
1489
|
+
});
|
1490
|
+
var coreUserMessageSchema = z6.object({
|
1491
|
+
role: z6.literal("user"),
|
1492
|
+
content: z6.union([
|
1493
|
+
z6.string(),
|
1494
|
+
z6.array(z6.union([textPartSchema, imagePartSchema, filePartSchema]))
|
1495
|
+
]),
|
1496
|
+
providerOptions: providerMetadataSchema.optional(),
|
1497
|
+
experimental_providerMetadata: providerMetadataSchema.optional()
|
1498
|
+
});
|
1499
|
+
var coreAssistantMessageSchema = z6.object({
|
1500
|
+
role: z6.literal("assistant"),
|
1501
|
+
content: z6.union([
|
1502
|
+
z6.string(),
|
1503
|
+
z6.array(
|
1504
|
+
z6.union([
|
1505
|
+
textPartSchema,
|
1506
|
+
filePartSchema,
|
1507
|
+
reasoningPartSchema,
|
1508
|
+
redactedReasoningPartSchema,
|
1509
|
+
toolCallPartSchema
|
1510
|
+
])
|
1511
|
+
)
|
1512
|
+
]),
|
1513
|
+
providerOptions: providerMetadataSchema.optional(),
|
1514
|
+
experimental_providerMetadata: providerMetadataSchema.optional()
|
1515
|
+
});
|
1516
|
+
var coreToolMessageSchema = z6.object({
|
1517
|
+
role: z6.literal("tool"),
|
1518
|
+
content: z6.array(toolResultPartSchema),
|
1519
|
+
providerOptions: providerMetadataSchema.optional(),
|
1520
|
+
experimental_providerMetadata: providerMetadataSchema.optional()
|
1521
|
+
});
|
1522
|
+
var coreMessageSchema = z6.union([
|
1523
|
+
coreSystemMessageSchema,
|
1524
|
+
coreUserMessageSchema,
|
1525
|
+
coreAssistantMessageSchema,
|
1526
|
+
coreToolMessageSchema
|
1527
|
+
]);
|
1528
|
+
|
1208
1529
|
// core/prompt/standardize-prompt.ts
|
1209
1530
|
function standardizePrompt({
|
1210
1531
|
prompt,
|
1211
1532
|
tools
|
1212
1533
|
}) {
|
1213
1534
|
if (prompt.prompt == null && prompt.messages == null) {
|
1214
|
-
throw new
|
1535
|
+
throw new InvalidPromptError2({
|
1215
1536
|
prompt,
|
1216
1537
|
message: "prompt or messages must be defined"
|
1217
1538
|
});
|
1218
1539
|
}
|
1219
1540
|
if (prompt.prompt != null && prompt.messages != null) {
|
1220
|
-
throw new
|
1541
|
+
throw new InvalidPromptError2({
|
1221
1542
|
prompt,
|
1222
1543
|
message: "prompt and messages cannot be defined at the same time"
|
1223
1544
|
});
|
1224
1545
|
}
|
1225
1546
|
if (prompt.system != null && typeof prompt.system !== "string") {
|
1226
|
-
throw new
|
1547
|
+
throw new InvalidPromptError2({
|
1227
1548
|
prompt,
|
1228
1549
|
message: "system must be a string"
|
1229
1550
|
});
|
1230
1551
|
}
|
1231
1552
|
if (prompt.prompt != null) {
|
1232
1553
|
if (typeof prompt.prompt !== "string") {
|
1233
|
-
throw new
|
1554
|
+
throw new InvalidPromptError2({
|
1234
1555
|
prompt,
|
1235
1556
|
message: "prompt must be a string"
|
1236
1557
|
});
|
@@ -1248,23 +1569,26 @@ function standardizePrompt({
|
|
1248
1569
|
}
|
1249
1570
|
if (prompt.messages != null) {
|
1250
1571
|
const promptType = detectPromptType(prompt.messages);
|
1251
|
-
if (promptType === "other") {
|
1252
|
-
throw new InvalidPromptError({
|
1253
|
-
prompt,
|
1254
|
-
message: "messages must be an array of CoreMessage or UIMessage"
|
1255
|
-
});
|
1256
|
-
}
|
1257
1572
|
const messages = promptType === "ui-messages" ? convertToCoreMessages(prompt.messages, {
|
1258
1573
|
tools
|
1259
1574
|
}) : prompt.messages;
|
1575
|
+
if (messages.length === 0) {
|
1576
|
+
throw new InvalidPromptError2({
|
1577
|
+
prompt,
|
1578
|
+
message: "messages must not be empty"
|
1579
|
+
});
|
1580
|
+
}
|
1260
1581
|
const validationResult = safeValidateTypes({
|
1261
1582
|
value: messages,
|
1262
1583
|
schema: z7.array(coreMessageSchema)
|
1263
1584
|
});
|
1264
1585
|
if (!validationResult.success) {
|
1265
|
-
throw new
|
1586
|
+
throw new InvalidPromptError2({
|
1266
1587
|
prompt,
|
1267
|
-
message:
|
1588
|
+
message: [
|
1589
|
+
"messages must be an array of CoreMessage or UIMessage",
|
1590
|
+
`Validation error: ${validationResult.error.message}`
|
1591
|
+
].join("\n"),
|
1268
1592
|
cause: validationResult.error
|
1269
1593
|
});
|
1270
1594
|
}
|
@@ -1471,7 +1795,8 @@ async function streamUI({
|
|
1471
1795
|
headers,
|
1472
1796
|
initial,
|
1473
1797
|
text,
|
1474
|
-
experimental_providerMetadata
|
1798
|
+
experimental_providerMetadata,
|
1799
|
+
providerOptions = experimental_providerMetadata,
|
1475
1800
|
onFinish,
|
1476
1801
|
...settings
|
1477
1802
|
}) {
|
@@ -1543,26 +1868,30 @@ async function streamUI({
|
|
1543
1868
|
// streamUI tools don't support multi-modal tool result conversion
|
1544
1869
|
});
|
1545
1870
|
const result = await retry(
|
1546
|
-
async () =>
|
1547
|
-
|
1548
|
-
|
1549
|
-
|
1550
|
-
|
1551
|
-
|
1552
|
-
|
1553
|
-
|
1554
|
-
|
1555
|
-
|
1556
|
-
|
1557
|
-
|
1558
|
-
|
1559
|
-
|
1560
|
-
|
1561
|
-
|
1562
|
-
|
1563
|
-
|
1564
|
-
|
1565
|
-
|
1871
|
+
async () => {
|
1872
|
+
var _a9;
|
1873
|
+
return model.doStream({
|
1874
|
+
mode: {
|
1875
|
+
type: "regular",
|
1876
|
+
...prepareToolsAndToolChoice({
|
1877
|
+
tools,
|
1878
|
+
toolChoice,
|
1879
|
+
activeTools: void 0
|
1880
|
+
})
|
1881
|
+
},
|
1882
|
+
...prepareCallSettings(settings),
|
1883
|
+
inputFormat: validatedPrompt.type,
|
1884
|
+
prompt: await convertToLanguageModelPrompt({
|
1885
|
+
prompt: validatedPrompt,
|
1886
|
+
modelSupportsImageUrls: model.supportsImageUrls,
|
1887
|
+
modelSupportsUrl: (_a9 = model.supportsUrl) == null ? void 0 : _a9.bind(model)
|
1888
|
+
// support 'this' context
|
1889
|
+
}),
|
1890
|
+
providerMetadata: providerOptions,
|
1891
|
+
abortSignal,
|
1892
|
+
headers
|
1893
|
+
});
|
1894
|
+
}
|
1566
1895
|
);
|
1567
1896
|
const [stream, forkedStream] = result.stream.tee();
|
1568
1897
|
(async () => {
|