ai 5.0.0-canary.6 → 5.0.0-canary.7
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 +20 -0
- package/dist/index.d.mts +166 -446
- package/dist/index.d.ts +166 -446
- package/dist/index.js +283 -297
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +203 -217
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.d.mts +259 -311
- package/dist/internal/index.d.ts +259 -311
- package/dist/internal/index.js +139 -155
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +129 -145
- package/dist/internal/index.mjs.map +1 -1
- package/dist/mcp-stdio/index.js.map +1 -1
- package/dist/mcp-stdio/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/internal/index.mjs
CHANGED
@@ -4,10 +4,12 @@ import { safeValidateTypes } from "@ai-sdk/provider-utils";
|
|
4
4
|
import { z as z7 } from "zod";
|
5
5
|
|
6
6
|
// core/prompt/data-content.ts
|
7
|
+
import { AISDKError as AISDKError2 } from "@ai-sdk/provider";
|
7
8
|
import {
|
8
9
|
convertBase64ToUint8Array,
|
9
10
|
convertUint8ArrayToBase64
|
10
11
|
} from "@ai-sdk/provider-utils";
|
12
|
+
import { z } from "zod";
|
11
13
|
|
12
14
|
// core/prompt/invalid-data-content-error.ts
|
13
15
|
import { AISDKError } from "@ai-sdk/provider";
|
@@ -31,8 +33,23 @@ var InvalidDataContentError = class extends AISDKError {
|
|
31
33
|
};
|
32
34
|
_a = symbol;
|
33
35
|
|
36
|
+
// core/prompt/split-data-url.ts
|
37
|
+
function splitDataUrl(dataUrl) {
|
38
|
+
try {
|
39
|
+
const [header, base64Content] = dataUrl.split(",");
|
40
|
+
return {
|
41
|
+
mediaType: header.split(";")[0].split(":")[1],
|
42
|
+
base64Content
|
43
|
+
};
|
44
|
+
} catch (error) {
|
45
|
+
return {
|
46
|
+
mediaType: void 0,
|
47
|
+
base64Content: void 0
|
48
|
+
};
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
34
52
|
// core/prompt/data-content.ts
|
35
|
-
import { z } from "zod";
|
36
53
|
var dataContentSchema = z.union([
|
37
54
|
z.string(),
|
38
55
|
z.instanceof(Uint8Array),
|
@@ -46,14 +63,32 @@ var dataContentSchema = z.union([
|
|
46
63
|
{ message: "Must be a Buffer" }
|
47
64
|
)
|
48
65
|
]);
|
49
|
-
function
|
50
|
-
if (
|
51
|
-
return content;
|
66
|
+
function convertToLanguageModelV2DataContent(content) {
|
67
|
+
if (content instanceof Uint8Array) {
|
68
|
+
return { data: content, mediaType: void 0 };
|
52
69
|
}
|
53
70
|
if (content instanceof ArrayBuffer) {
|
54
|
-
return
|
71
|
+
return { data: new Uint8Array(content), mediaType: void 0 };
|
72
|
+
}
|
73
|
+
if (typeof content === "string") {
|
74
|
+
try {
|
75
|
+
content = new URL(content);
|
76
|
+
} catch (error) {
|
77
|
+
}
|
55
78
|
}
|
56
|
-
|
79
|
+
if (content instanceof URL && content.protocol === "data:") {
|
80
|
+
const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(
|
81
|
+
content.toString()
|
82
|
+
);
|
83
|
+
if (dataUrlMediaType == null || base64Content == null) {
|
84
|
+
throw new AISDKError2({
|
85
|
+
name: "InvalidDataContentError",
|
86
|
+
message: `Invalid data URL format in content ${content.toString()}`
|
87
|
+
});
|
88
|
+
}
|
89
|
+
return { data: base64Content, mediaType: dataUrlMediaType };
|
90
|
+
}
|
91
|
+
return { data: content, mediaType: void 0 };
|
57
92
|
}
|
58
93
|
function convertDataContentToUint8Array(content) {
|
59
94
|
if (content instanceof Uint8Array) {
|
@@ -161,12 +196,12 @@ function attachmentsToParts(attachments) {
|
|
161
196
|
}
|
162
197
|
|
163
198
|
// core/prompt/message-conversion-error.ts
|
164
|
-
import { AISDKError as
|
199
|
+
import { AISDKError as AISDKError3 } from "@ai-sdk/provider";
|
165
200
|
var name2 = "AI_MessageConversionError";
|
166
201
|
var marker2 = `vercel.ai.error.${name2}`;
|
167
202
|
var symbol2 = Symbol.for(marker2);
|
168
203
|
var _a2;
|
169
|
-
var MessageConversionError = class extends
|
204
|
+
var MessageConversionError = class extends AISDKError3 {
|
170
205
|
constructor({
|
171
206
|
originalMessage,
|
172
207
|
message
|
@@ -176,7 +211,7 @@ var MessageConversionError = class extends AISDKError2 {
|
|
176
211
|
this.originalMessage = originalMessage;
|
177
212
|
}
|
178
213
|
static isInstance(error) {
|
179
|
-
return
|
214
|
+
return AISDKError3.hasMarker(error, marker2);
|
180
215
|
}
|
181
216
|
};
|
182
217
|
_a2 = symbol2;
|
@@ -450,7 +485,7 @@ function detectSingleMessageCharacteristics(message) {
|
|
450
485
|
"experimental_attachments" in message)) {
|
451
486
|
return "has-ui-specific-parts";
|
452
487
|
} else if (typeof message === "object" && message !== null && "content" in message && (Array.isArray(message.content) || // Core messages can have array content
|
453
|
-
"
|
488
|
+
"providerOptions" in message)) {
|
454
489
|
return "has-core-specific-parts";
|
455
490
|
} else if (typeof message === "object" && message !== null && "role" in message && "content" in message && typeof message.content === "string" && ["system", "user", "assistant", "tool"].includes(message.role)) {
|
456
491
|
return "message";
|
@@ -504,16 +539,14 @@ var toolResultContentSchema = z4.array(
|
|
504
539
|
var textPartSchema = z5.object({
|
505
540
|
type: z5.literal("text"),
|
506
541
|
text: z5.string(),
|
507
|
-
providerOptions: providerMetadataSchema.optional()
|
508
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
542
|
+
providerOptions: providerMetadataSchema.optional()
|
509
543
|
});
|
510
544
|
var imagePartSchema = z5.object({
|
511
545
|
type: z5.literal("image"),
|
512
546
|
image: z5.union([dataContentSchema, z5.instanceof(URL)]),
|
513
547
|
mediaType: z5.string().optional(),
|
514
548
|
mimeType: z5.string().optional(),
|
515
|
-
providerOptions: providerMetadataSchema.optional()
|
516
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
549
|
+
providerOptions: providerMetadataSchema.optional()
|
517
550
|
});
|
518
551
|
var filePartSchema = z5.object({
|
519
552
|
type: z5.literal("file"),
|
@@ -521,28 +554,24 @@ var filePartSchema = z5.object({
|
|
521
554
|
filename: z5.string().optional(),
|
522
555
|
mediaType: z5.string(),
|
523
556
|
mimeType: z5.string().optional(),
|
524
|
-
providerOptions: providerMetadataSchema.optional()
|
525
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
557
|
+
providerOptions: providerMetadataSchema.optional()
|
526
558
|
});
|
527
559
|
var reasoningPartSchema = z5.object({
|
528
560
|
type: z5.literal("reasoning"),
|
529
561
|
text: z5.string(),
|
530
|
-
providerOptions: providerMetadataSchema.optional()
|
531
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
562
|
+
providerOptions: providerMetadataSchema.optional()
|
532
563
|
});
|
533
564
|
var redactedReasoningPartSchema = z5.object({
|
534
565
|
type: z5.literal("redacted-reasoning"),
|
535
566
|
data: z5.string(),
|
536
|
-
providerOptions: providerMetadataSchema.optional()
|
537
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
567
|
+
providerOptions: providerMetadataSchema.optional()
|
538
568
|
});
|
539
569
|
var toolCallPartSchema = z5.object({
|
540
570
|
type: z5.literal("tool-call"),
|
541
571
|
toolCallId: z5.string(),
|
542
572
|
toolName: z5.string(),
|
543
573
|
args: z5.unknown(),
|
544
|
-
providerOptions: providerMetadataSchema.optional()
|
545
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
574
|
+
providerOptions: providerMetadataSchema.optional()
|
546
575
|
});
|
547
576
|
var toolResultPartSchema = z5.object({
|
548
577
|
type: z5.literal("tool-result"),
|
@@ -551,16 +580,14 @@ var toolResultPartSchema = z5.object({
|
|
551
580
|
result: z5.unknown(),
|
552
581
|
content: toolResultContentSchema.optional(),
|
553
582
|
isError: z5.boolean().optional(),
|
554
|
-
providerOptions: providerMetadataSchema.optional()
|
555
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
583
|
+
providerOptions: providerMetadataSchema.optional()
|
556
584
|
});
|
557
585
|
|
558
586
|
// core/prompt/message.ts
|
559
587
|
var coreSystemMessageSchema = z6.object({
|
560
588
|
role: z6.literal("system"),
|
561
589
|
content: z6.string(),
|
562
|
-
providerOptions: providerMetadataSchema.optional()
|
563
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
590
|
+
providerOptions: providerMetadataSchema.optional()
|
564
591
|
});
|
565
592
|
var coreUserMessageSchema = z6.object({
|
566
593
|
role: z6.literal("user"),
|
@@ -568,8 +595,7 @@ var coreUserMessageSchema = z6.object({
|
|
568
595
|
z6.string(),
|
569
596
|
z6.array(z6.union([textPartSchema, imagePartSchema, filePartSchema]))
|
570
597
|
]),
|
571
|
-
providerOptions: providerMetadataSchema.optional()
|
572
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
598
|
+
providerOptions: providerMetadataSchema.optional()
|
573
599
|
});
|
574
600
|
var coreAssistantMessageSchema = z6.object({
|
575
601
|
role: z6.literal("assistant"),
|
@@ -585,14 +611,12 @@ var coreAssistantMessageSchema = z6.object({
|
|
585
611
|
])
|
586
612
|
)
|
587
613
|
]),
|
588
|
-
providerOptions: providerMetadataSchema.optional()
|
589
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
614
|
+
providerOptions: providerMetadataSchema.optional()
|
590
615
|
});
|
591
616
|
var coreToolMessageSchema = z6.object({
|
592
617
|
role: z6.literal("tool"),
|
593
618
|
content: z6.array(toolResultPartSchema),
|
594
|
-
providerOptions: providerMetadataSchema.optional()
|
595
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
619
|
+
providerOptions: providerMetadataSchema.optional()
|
596
620
|
});
|
597
621
|
var coreMessageSchema = z6.union([
|
598
622
|
coreSystemMessageSchema,
|
@@ -723,7 +747,10 @@ function isSchema(value) {
|
|
723
747
|
return typeof value === "object" && value !== null && schemaSymbol in value && value[schemaSymbol] === true && "jsonSchema" in value && "validate" in value;
|
724
748
|
}
|
725
749
|
function asSchema(schema) {
|
726
|
-
return
|
750
|
+
return schema == null ? jsonSchema({
|
751
|
+
properties: {},
|
752
|
+
additionalProperties: false
|
753
|
+
}) : isSchema(schema) ? schema : zodSchema(schema);
|
727
754
|
}
|
728
755
|
|
729
756
|
// core/util/is-non-empty-object.ts
|
@@ -776,12 +803,12 @@ function prepareToolsAndToolChoice({
|
|
776
803
|
}
|
777
804
|
|
778
805
|
// errors/invalid-argument-error.ts
|
779
|
-
import { AISDKError as
|
806
|
+
import { AISDKError as AISDKError4 } from "@ai-sdk/provider";
|
780
807
|
var name3 = "AI_InvalidArgumentError";
|
781
808
|
var marker3 = `vercel.ai.error.${name3}`;
|
782
809
|
var symbol3 = Symbol.for(marker3);
|
783
810
|
var _a3;
|
784
|
-
var InvalidArgumentError = class extends
|
811
|
+
var InvalidArgumentError = class extends AISDKError4 {
|
785
812
|
constructor({
|
786
813
|
parameter,
|
787
814
|
value,
|
@@ -796,7 +823,7 @@ var InvalidArgumentError = class extends AISDKError3 {
|
|
796
823
|
this.value = value;
|
797
824
|
}
|
798
825
|
static isInstance(error) {
|
799
|
-
return
|
826
|
+
return AISDKError4.hasMarker(error, marker3);
|
800
827
|
}
|
801
828
|
};
|
802
829
|
_a3 = symbol3;
|
@@ -806,12 +833,12 @@ import { APICallError } from "@ai-sdk/provider";
|
|
806
833
|
import { delay, getErrorMessage, isAbortError } from "@ai-sdk/provider-utils";
|
807
834
|
|
808
835
|
// util/retry-error.ts
|
809
|
-
import { AISDKError as
|
836
|
+
import { AISDKError as AISDKError5 } from "@ai-sdk/provider";
|
810
837
|
var name4 = "AI_RetryError";
|
811
838
|
var marker4 = `vercel.ai.error.${name4}`;
|
812
839
|
var symbol4 = Symbol.for(marker4);
|
813
840
|
var _a4;
|
814
|
-
var RetryError = class extends
|
841
|
+
var RetryError = class extends AISDKError5 {
|
815
842
|
constructor({
|
816
843
|
message,
|
817
844
|
reason,
|
@@ -824,7 +851,7 @@ var RetryError = class extends AISDKError4 {
|
|
824
851
|
this.lastError = errors[errors.length - 1];
|
825
852
|
}
|
826
853
|
static isInstance(error) {
|
827
|
-
return
|
854
|
+
return AISDKError5.hasMarker(error, marker4);
|
828
855
|
}
|
829
856
|
};
|
830
857
|
_a4 = symbol4;
|
@@ -911,7 +938,7 @@ function prepareRetries({
|
|
911
938
|
|
912
939
|
// core/prompt/prepare-call-settings.ts
|
913
940
|
function prepareCallSettings({
|
914
|
-
|
941
|
+
maxOutputTokens,
|
915
942
|
temperature,
|
916
943
|
topP,
|
917
944
|
topK,
|
@@ -920,19 +947,19 @@ function prepareCallSettings({
|
|
920
947
|
stopSequences,
|
921
948
|
seed
|
922
949
|
}) {
|
923
|
-
if (
|
924
|
-
if (!Number.isInteger(
|
950
|
+
if (maxOutputTokens != null) {
|
951
|
+
if (!Number.isInteger(maxOutputTokens)) {
|
925
952
|
throw new InvalidArgumentError({
|
926
|
-
parameter: "
|
927
|
-
value:
|
928
|
-
message: "
|
953
|
+
parameter: "maxOutputTokens",
|
954
|
+
value: maxOutputTokens,
|
955
|
+
message: "maxOutputTokens must be an integer"
|
929
956
|
});
|
930
957
|
}
|
931
|
-
if (
|
958
|
+
if (maxOutputTokens < 1) {
|
932
959
|
throw new InvalidArgumentError({
|
933
|
-
parameter: "
|
934
|
-
value:
|
935
|
-
message: "
|
960
|
+
parameter: "maxOutputTokens",
|
961
|
+
value: maxOutputTokens,
|
962
|
+
message: "maxOutputTokens must be >= 1"
|
936
963
|
});
|
937
964
|
}
|
938
965
|
}
|
@@ -991,7 +1018,7 @@ function prepareCallSettings({
|
|
991
1018
|
}
|
992
1019
|
}
|
993
1020
|
return {
|
994
|
-
|
1021
|
+
maxOutputTokens,
|
995
1022
|
// TODO v5 remove default 0 for temperature
|
996
1023
|
temperature: temperature != null ? temperature : 0,
|
997
1024
|
topP,
|
@@ -1003,16 +1030,13 @@ function prepareCallSettings({
|
|
1003
1030
|
};
|
1004
1031
|
}
|
1005
1032
|
|
1006
|
-
// core/prompt/convert-to-language-model-prompt.ts
|
1007
|
-
import { convertUint8ArrayToBase64 as convertUint8ArrayToBase642 } from "@ai-sdk/provider-utils";
|
1008
|
-
|
1009
1033
|
// util/download-error.ts
|
1010
|
-
import { AISDKError as
|
1034
|
+
import { AISDKError as AISDKError6 } from "@ai-sdk/provider";
|
1011
1035
|
var name5 = "AI_DownloadError";
|
1012
1036
|
var marker5 = `vercel.ai.error.${name5}`;
|
1013
1037
|
var symbol5 = Symbol.for(marker5);
|
1014
1038
|
var _a5;
|
1015
|
-
var DownloadError = class extends
|
1039
|
+
var DownloadError = class extends AISDKError6 {
|
1016
1040
|
constructor({
|
1017
1041
|
url,
|
1018
1042
|
statusCode,
|
@@ -1027,7 +1051,7 @@ var DownloadError = class extends AISDKError5 {
|
|
1027
1051
|
this.statusText = statusText;
|
1028
1052
|
}
|
1029
1053
|
static isInstance(error) {
|
1030
|
-
return
|
1054
|
+
return AISDKError6.hasMarker(error, marker5);
|
1031
1055
|
}
|
1032
1056
|
};
|
1033
1057
|
_a5 = symbol5;
|
@@ -1144,12 +1168,12 @@ function detectMediaType({
|
|
1144
1168
|
}
|
1145
1169
|
|
1146
1170
|
// core/prompt/invalid-message-role-error.ts
|
1147
|
-
import { AISDKError as
|
1171
|
+
import { AISDKError as AISDKError7 } from "@ai-sdk/provider";
|
1148
1172
|
var name6 = "AI_InvalidMessageRoleError";
|
1149
1173
|
var marker6 = `vercel.ai.error.${name6}`;
|
1150
1174
|
var symbol6 = Symbol.for(marker6);
|
1151
1175
|
var _a6;
|
1152
|
-
var InvalidMessageRoleError = class extends
|
1176
|
+
var InvalidMessageRoleError = class extends AISDKError7 {
|
1153
1177
|
constructor({
|
1154
1178
|
role,
|
1155
1179
|
message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
|
@@ -1159,27 +1183,11 @@ var InvalidMessageRoleError = class extends AISDKError6 {
|
|
1159
1183
|
this.role = role;
|
1160
1184
|
}
|
1161
1185
|
static isInstance(error) {
|
1162
|
-
return
|
1186
|
+
return AISDKError7.hasMarker(error, marker6);
|
1163
1187
|
}
|
1164
1188
|
};
|
1165
1189
|
_a6 = symbol6;
|
1166
1190
|
|
1167
|
-
// core/prompt/split-data-url.ts
|
1168
|
-
function splitDataUrl(dataUrl) {
|
1169
|
-
try {
|
1170
|
-
const [header, base64Content] = dataUrl.split(",");
|
1171
|
-
return {
|
1172
|
-
mediaType: header.split(";")[0].split(":")[1],
|
1173
|
-
base64Content
|
1174
|
-
};
|
1175
|
-
} catch (error) {
|
1176
|
-
return {
|
1177
|
-
mediaType: void 0,
|
1178
|
-
base64Content: void 0
|
1179
|
-
};
|
1180
|
-
}
|
1181
|
-
}
|
1182
|
-
|
1183
1191
|
// core/prompt/convert-to-language-model-prompt.ts
|
1184
1192
|
async function convertToLanguageModelPrompt({
|
1185
1193
|
prompt,
|
@@ -1201,14 +1209,13 @@ async function convertToLanguageModelPrompt({
|
|
1201
1209
|
];
|
1202
1210
|
}
|
1203
1211
|
function convertToLanguageModelMessage(message, downloadedAssets) {
|
1204
|
-
var _a7, _b, _c, _d, _e, _f;
|
1205
1212
|
const role = message.role;
|
1206
1213
|
switch (role) {
|
1207
1214
|
case "system": {
|
1208
1215
|
return {
|
1209
1216
|
role: "system",
|
1210
1217
|
content: message.content,
|
1211
|
-
providerOptions:
|
1218
|
+
providerOptions: message.providerOptions
|
1212
1219
|
};
|
1213
1220
|
}
|
1214
1221
|
case "user": {
|
@@ -1216,13 +1223,13 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
|
|
1216
1223
|
return {
|
1217
1224
|
role: "user",
|
1218
1225
|
content: [{ type: "text", text: message.content }],
|
1219
|
-
providerOptions:
|
1226
|
+
providerOptions: message.providerOptions
|
1220
1227
|
};
|
1221
1228
|
}
|
1222
1229
|
return {
|
1223
1230
|
role: "user",
|
1224
1231
|
content: message.content.map((part) => convertPartToLanguageModelPart(part, downloadedAssets)).filter((part) => part.type !== "text" || part.text !== ""),
|
1225
|
-
providerOptions:
|
1232
|
+
providerOptions: message.providerOptions
|
1226
1233
|
};
|
1227
1234
|
}
|
1228
1235
|
case "assistant": {
|
@@ -1230,7 +1237,7 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
|
|
1230
1237
|
return {
|
1231
1238
|
role: "assistant",
|
1232
1239
|
content: [{ type: "text", text: message.content }],
|
1233
|
-
providerOptions:
|
1240
|
+
providerOptions: message.providerOptions
|
1234
1241
|
};
|
1235
1242
|
}
|
1236
1243
|
return {
|
@@ -1239,15 +1246,18 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
|
|
1239
1246
|
// remove empty text parts:
|
1240
1247
|
(part) => part.type !== "text" || part.text !== ""
|
1241
1248
|
).map((part) => {
|
1242
|
-
var
|
1243
|
-
const providerOptions =
|
1249
|
+
var _a7;
|
1250
|
+
const providerOptions = part.providerOptions;
|
1244
1251
|
switch (part.type) {
|
1245
1252
|
case "file": {
|
1253
|
+
const { data, mediaType } = convertToLanguageModelV2DataContent(
|
1254
|
+
part.data
|
1255
|
+
);
|
1246
1256
|
return {
|
1247
1257
|
type: "file",
|
1248
|
-
data
|
1258
|
+
data,
|
1249
1259
|
filename: part.filename,
|
1250
|
-
mediaType: (
|
1260
|
+
mediaType: (_a7 = mediaType != null ? mediaType : part.mediaType) != null ? _a7 : part.mimeType,
|
1251
1261
|
providerOptions
|
1252
1262
|
};
|
1253
1263
|
}
|
@@ -1284,25 +1294,22 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
|
|
1284
1294
|
}
|
1285
1295
|
}
|
1286
1296
|
}),
|
1287
|
-
providerOptions:
|
1297
|
+
providerOptions: message.providerOptions
|
1288
1298
|
};
|
1289
1299
|
}
|
1290
1300
|
case "tool": {
|
1291
1301
|
return {
|
1292
1302
|
role: "tool",
|
1293
|
-
content: message.content.map((part) => {
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
|
1303
|
-
};
|
1304
|
-
}),
|
1305
|
-
providerOptions: (_f = message.providerOptions) != null ? _f : message.experimental_providerMetadata
|
1303
|
+
content: message.content.map((part) => ({
|
1304
|
+
type: "tool-result",
|
1305
|
+
toolCallId: part.toolCallId,
|
1306
|
+
toolName: part.toolName,
|
1307
|
+
result: part.result,
|
1308
|
+
content: part.experimental_content,
|
1309
|
+
isError: part.isError,
|
1310
|
+
providerOptions: part.providerOptions
|
1311
|
+
})),
|
1312
|
+
providerOptions: message.providerOptions
|
1306
1313
|
};
|
1307
1314
|
}
|
1308
1315
|
default: {
|
@@ -1335,71 +1342,48 @@ async function downloadAssets(messages, downloadImplementation, modelSupportsIma
|
|
1335
1342
|
);
|
1336
1343
|
}
|
1337
1344
|
function convertPartToLanguageModelPart(part, downloadedAssets) {
|
1338
|
-
var _a7, _b, _c
|
1345
|
+
var _a7, _b, _c;
|
1339
1346
|
if (part.type === "text") {
|
1340
1347
|
return {
|
1341
1348
|
type: "text",
|
1342
1349
|
text: part.text,
|
1343
|
-
providerOptions:
|
1350
|
+
providerOptions: part.providerOptions
|
1344
1351
|
};
|
1345
1352
|
}
|
1346
|
-
let
|
1347
|
-
let data;
|
1348
|
-
let content;
|
1349
|
-
let normalizedData;
|
1353
|
+
let originalData;
|
1350
1354
|
const type = part.type;
|
1351
1355
|
switch (type) {
|
1352
1356
|
case "image":
|
1353
|
-
|
1357
|
+
originalData = part.image;
|
1354
1358
|
break;
|
1355
1359
|
case "file":
|
1356
|
-
|
1360
|
+
originalData = part.data;
|
1357
1361
|
break;
|
1358
1362
|
default:
|
1359
1363
|
throw new Error(`Unsupported part type: ${type}`);
|
1360
1364
|
}
|
1361
|
-
|
1362
|
-
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1367
|
-
|
1368
|
-
|
1369
|
-
content.toString()
|
1370
|
-
);
|
1371
|
-
if (dataUrlMediaType == null || base64Content == null) {
|
1372
|
-
throw new Error(`Invalid data URL format in part ${type}`);
|
1373
|
-
}
|
1374
|
-
mediaType = dataUrlMediaType;
|
1375
|
-
normalizedData = convertDataContentToUint8Array(base64Content);
|
1376
|
-
} else {
|
1377
|
-
const downloadedFile = downloadedAssets[content.toString()];
|
1378
|
-
if (downloadedFile) {
|
1379
|
-
normalizedData = downloadedFile.data;
|
1380
|
-
mediaType != null ? mediaType : mediaType = downloadedFile.mediaType;
|
1381
|
-
} else {
|
1382
|
-
normalizedData = content;
|
1383
|
-
}
|
1365
|
+
const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV2DataContent(originalData);
|
1366
|
+
let mediaType = (_a7 = convertedMediaType != null ? convertedMediaType : part.mediaType) != null ? _a7 : part.mimeType;
|
1367
|
+
let data = convertedData;
|
1368
|
+
if (data instanceof URL) {
|
1369
|
+
const downloadedFile = downloadedAssets[data.toString()];
|
1370
|
+
if (downloadedFile) {
|
1371
|
+
data = downloadedFile.data;
|
1372
|
+
mediaType = (_b = downloadedFile.mediaType) != null ? _b : mediaType;
|
1384
1373
|
}
|
1385
|
-
} else {
|
1386
|
-
normalizedData = convertDataContentToUint8Array(content);
|
1387
1374
|
}
|
1388
1375
|
switch (type) {
|
1389
1376
|
case "image": {
|
1390
|
-
if (
|
1391
|
-
mediaType = (_c = detectMediaType({
|
1392
|
-
data: normalizedData,
|
1393
|
-
signatures: imageMediaTypeSignatures
|
1394
|
-
})) != null ? _c : mediaType;
|
1377
|
+
if (data instanceof Uint8Array || typeof data === "string") {
|
1378
|
+
mediaType = (_c = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _c : mediaType;
|
1395
1379
|
}
|
1396
1380
|
return {
|
1397
1381
|
type: "file",
|
1398
1382
|
mediaType: mediaType != null ? mediaType : "image/*",
|
1399
1383
|
// any image
|
1400
1384
|
filename: void 0,
|
1401
|
-
data
|
1402
|
-
providerOptions:
|
1385
|
+
data,
|
1386
|
+
providerOptions: part.providerOptions
|
1403
1387
|
};
|
1404
1388
|
}
|
1405
1389
|
case "file": {
|
@@ -1410,8 +1394,8 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
1410
1394
|
type: "file",
|
1411
1395
|
mediaType,
|
1412
1396
|
filename: part.filename,
|
1413
|
-
data
|
1414
|
-
providerOptions:
|
1397
|
+
data,
|
1398
|
+
providerOptions: part.providerOptions
|
1415
1399
|
};
|
1416
1400
|
}
|
1417
1401
|
}
|
@@ -1419,13 +1403,13 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
1419
1403
|
|
1420
1404
|
// core/types/usage.ts
|
1421
1405
|
function calculateLanguageModelUsage({
|
1422
|
-
|
1423
|
-
|
1406
|
+
inputTokens,
|
1407
|
+
outputTokens
|
1424
1408
|
}) {
|
1425
1409
|
return {
|
1426
|
-
promptTokens,
|
1427
|
-
completionTokens,
|
1428
|
-
totalTokens:
|
1410
|
+
promptTokens: inputTokens != null ? inputTokens : NaN,
|
1411
|
+
completionTokens: outputTokens != null ? outputTokens : NaN,
|
1412
|
+
totalTokens: (inputTokens != null ? inputTokens : 0) + (outputTokens != null ? outputTokens : 0)
|
1429
1413
|
};
|
1430
1414
|
}
|
1431
1415
|
|