ai 5.0.0-canary.6 → 5.0.0-canary.8
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 +57 -0
- package/dist/index.d.mts +230 -499
- package/dist/index.d.ts +230 -499
- package/dist/index.js +554 -517
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +474 -437
- 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/dist/test/index.d.mts +14 -14
- package/dist/test/index.d.ts +14 -14
- package/dist/test/index.js +5 -5
- package/dist/test/index.js.map +1 -1
- package/dist/test/index.mjs +4 -4
- package/dist/test/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/internal/index.js
CHANGED
@@ -41,12 +41,14 @@ __export(internal_exports, {
|
|
41
41
|
module.exports = __toCommonJS(internal_exports);
|
42
42
|
|
43
43
|
// core/prompt/standardize-prompt.ts
|
44
|
-
var
|
44
|
+
var import_provider4 = require("@ai-sdk/provider");
|
45
45
|
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
46
46
|
var import_zod7 = require("zod");
|
47
47
|
|
48
48
|
// core/prompt/data-content.ts
|
49
|
+
var import_provider2 = require("@ai-sdk/provider");
|
49
50
|
var import_provider_utils = require("@ai-sdk/provider-utils");
|
51
|
+
var import_zod = require("zod");
|
50
52
|
|
51
53
|
// core/prompt/invalid-data-content-error.ts
|
52
54
|
var import_provider = require("@ai-sdk/provider");
|
@@ -70,8 +72,23 @@ var InvalidDataContentError = class extends import_provider.AISDKError {
|
|
70
72
|
};
|
71
73
|
_a = symbol;
|
72
74
|
|
75
|
+
// core/prompt/split-data-url.ts
|
76
|
+
function splitDataUrl(dataUrl) {
|
77
|
+
try {
|
78
|
+
const [header, base64Content] = dataUrl.split(",");
|
79
|
+
return {
|
80
|
+
mediaType: header.split(";")[0].split(":")[1],
|
81
|
+
base64Content
|
82
|
+
};
|
83
|
+
} catch (error) {
|
84
|
+
return {
|
85
|
+
mediaType: void 0,
|
86
|
+
base64Content: void 0
|
87
|
+
};
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
73
91
|
// core/prompt/data-content.ts
|
74
|
-
var import_zod = require("zod");
|
75
92
|
var dataContentSchema = import_zod.z.union([
|
76
93
|
import_zod.z.string(),
|
77
94
|
import_zod.z.instanceof(Uint8Array),
|
@@ -85,14 +102,32 @@ var dataContentSchema = import_zod.z.union([
|
|
85
102
|
{ message: "Must be a Buffer" }
|
86
103
|
)
|
87
104
|
]);
|
88
|
-
function
|
89
|
-
if (
|
90
|
-
return content;
|
105
|
+
function convertToLanguageModelV2DataContent(content) {
|
106
|
+
if (content instanceof Uint8Array) {
|
107
|
+
return { data: content, mediaType: void 0 };
|
91
108
|
}
|
92
109
|
if (content instanceof ArrayBuffer) {
|
93
|
-
return
|
110
|
+
return { data: new Uint8Array(content), mediaType: void 0 };
|
111
|
+
}
|
112
|
+
if (typeof content === "string") {
|
113
|
+
try {
|
114
|
+
content = new URL(content);
|
115
|
+
} catch (error) {
|
116
|
+
}
|
94
117
|
}
|
95
|
-
|
118
|
+
if (content instanceof URL && content.protocol === "data:") {
|
119
|
+
const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(
|
120
|
+
content.toString()
|
121
|
+
);
|
122
|
+
if (dataUrlMediaType == null || base64Content == null) {
|
123
|
+
throw new import_provider2.AISDKError({
|
124
|
+
name: "InvalidDataContentError",
|
125
|
+
message: `Invalid data URL format in content ${content.toString()}`
|
126
|
+
});
|
127
|
+
}
|
128
|
+
return { data: base64Content, mediaType: dataUrlMediaType };
|
129
|
+
}
|
130
|
+
return { data: content, mediaType: void 0 };
|
96
131
|
}
|
97
132
|
function convertDataContentToUint8Array(content) {
|
98
133
|
if (content instanceof Uint8Array) {
|
@@ -200,12 +235,12 @@ function attachmentsToParts(attachments) {
|
|
200
235
|
}
|
201
236
|
|
202
237
|
// core/prompt/message-conversion-error.ts
|
203
|
-
var
|
238
|
+
var import_provider3 = require("@ai-sdk/provider");
|
204
239
|
var name2 = "AI_MessageConversionError";
|
205
240
|
var marker2 = `vercel.ai.error.${name2}`;
|
206
241
|
var symbol2 = Symbol.for(marker2);
|
207
242
|
var _a2;
|
208
|
-
var MessageConversionError = class extends
|
243
|
+
var MessageConversionError = class extends import_provider3.AISDKError {
|
209
244
|
constructor({
|
210
245
|
originalMessage,
|
211
246
|
message
|
@@ -215,7 +250,7 @@ var MessageConversionError = class extends import_provider2.AISDKError {
|
|
215
250
|
this.originalMessage = originalMessage;
|
216
251
|
}
|
217
252
|
static isInstance(error) {
|
218
|
-
return
|
253
|
+
return import_provider3.AISDKError.hasMarker(error, marker2);
|
219
254
|
}
|
220
255
|
};
|
221
256
|
_a2 = symbol2;
|
@@ -489,7 +524,7 @@ function detectSingleMessageCharacteristics(message) {
|
|
489
524
|
"experimental_attachments" in message)) {
|
490
525
|
return "has-ui-specific-parts";
|
491
526
|
} else if (typeof message === "object" && message !== null && "content" in message && (Array.isArray(message.content) || // Core messages can have array content
|
492
|
-
"
|
527
|
+
"providerOptions" in message)) {
|
493
528
|
return "has-core-specific-parts";
|
494
529
|
} else if (typeof message === "object" && message !== null && "role" in message && "content" in message && typeof message.content === "string" && ["system", "user", "assistant", "tool"].includes(message.role)) {
|
495
530
|
return "message";
|
@@ -543,16 +578,14 @@ var toolResultContentSchema = import_zod4.z.array(
|
|
543
578
|
var textPartSchema = import_zod5.z.object({
|
544
579
|
type: import_zod5.z.literal("text"),
|
545
580
|
text: import_zod5.z.string(),
|
546
|
-
providerOptions: providerMetadataSchema.optional()
|
547
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
581
|
+
providerOptions: providerMetadataSchema.optional()
|
548
582
|
});
|
549
583
|
var imagePartSchema = import_zod5.z.object({
|
550
584
|
type: import_zod5.z.literal("image"),
|
551
585
|
image: import_zod5.z.union([dataContentSchema, import_zod5.z.instanceof(URL)]),
|
552
586
|
mediaType: import_zod5.z.string().optional(),
|
553
587
|
mimeType: import_zod5.z.string().optional(),
|
554
|
-
providerOptions: providerMetadataSchema.optional()
|
555
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
588
|
+
providerOptions: providerMetadataSchema.optional()
|
556
589
|
});
|
557
590
|
var filePartSchema = import_zod5.z.object({
|
558
591
|
type: import_zod5.z.literal("file"),
|
@@ -560,28 +593,24 @@ var filePartSchema = import_zod5.z.object({
|
|
560
593
|
filename: import_zod5.z.string().optional(),
|
561
594
|
mediaType: import_zod5.z.string(),
|
562
595
|
mimeType: import_zod5.z.string().optional(),
|
563
|
-
providerOptions: providerMetadataSchema.optional()
|
564
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
596
|
+
providerOptions: providerMetadataSchema.optional()
|
565
597
|
});
|
566
598
|
var reasoningPartSchema = import_zod5.z.object({
|
567
599
|
type: import_zod5.z.literal("reasoning"),
|
568
600
|
text: import_zod5.z.string(),
|
569
|
-
providerOptions: providerMetadataSchema.optional()
|
570
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
601
|
+
providerOptions: providerMetadataSchema.optional()
|
571
602
|
});
|
572
603
|
var redactedReasoningPartSchema = import_zod5.z.object({
|
573
604
|
type: import_zod5.z.literal("redacted-reasoning"),
|
574
605
|
data: import_zod5.z.string(),
|
575
|
-
providerOptions: providerMetadataSchema.optional()
|
576
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
606
|
+
providerOptions: providerMetadataSchema.optional()
|
577
607
|
});
|
578
608
|
var toolCallPartSchema = import_zod5.z.object({
|
579
609
|
type: import_zod5.z.literal("tool-call"),
|
580
610
|
toolCallId: import_zod5.z.string(),
|
581
611
|
toolName: import_zod5.z.string(),
|
582
612
|
args: import_zod5.z.unknown(),
|
583
|
-
providerOptions: providerMetadataSchema.optional()
|
584
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
613
|
+
providerOptions: providerMetadataSchema.optional()
|
585
614
|
});
|
586
615
|
var toolResultPartSchema = import_zod5.z.object({
|
587
616
|
type: import_zod5.z.literal("tool-result"),
|
@@ -590,16 +619,14 @@ var toolResultPartSchema = import_zod5.z.object({
|
|
590
619
|
result: import_zod5.z.unknown(),
|
591
620
|
content: toolResultContentSchema.optional(),
|
592
621
|
isError: import_zod5.z.boolean().optional(),
|
593
|
-
providerOptions: providerMetadataSchema.optional()
|
594
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
622
|
+
providerOptions: providerMetadataSchema.optional()
|
595
623
|
});
|
596
624
|
|
597
625
|
// core/prompt/message.ts
|
598
626
|
var coreSystemMessageSchema = import_zod6.z.object({
|
599
627
|
role: import_zod6.z.literal("system"),
|
600
628
|
content: import_zod6.z.string(),
|
601
|
-
providerOptions: providerMetadataSchema.optional()
|
602
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
629
|
+
providerOptions: providerMetadataSchema.optional()
|
603
630
|
});
|
604
631
|
var coreUserMessageSchema = import_zod6.z.object({
|
605
632
|
role: import_zod6.z.literal("user"),
|
@@ -607,8 +634,7 @@ var coreUserMessageSchema = import_zod6.z.object({
|
|
607
634
|
import_zod6.z.string(),
|
608
635
|
import_zod6.z.array(import_zod6.z.union([textPartSchema, imagePartSchema, filePartSchema]))
|
609
636
|
]),
|
610
|
-
providerOptions: providerMetadataSchema.optional()
|
611
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
637
|
+
providerOptions: providerMetadataSchema.optional()
|
612
638
|
});
|
613
639
|
var coreAssistantMessageSchema = import_zod6.z.object({
|
614
640
|
role: import_zod6.z.literal("assistant"),
|
@@ -624,14 +650,12 @@ var coreAssistantMessageSchema = import_zod6.z.object({
|
|
624
650
|
])
|
625
651
|
)
|
626
652
|
]),
|
627
|
-
providerOptions: providerMetadataSchema.optional()
|
628
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
653
|
+
providerOptions: providerMetadataSchema.optional()
|
629
654
|
});
|
630
655
|
var coreToolMessageSchema = import_zod6.z.object({
|
631
656
|
role: import_zod6.z.literal("tool"),
|
632
657
|
content: import_zod6.z.array(toolResultPartSchema),
|
633
|
-
providerOptions: providerMetadataSchema.optional()
|
634
|
-
experimental_providerMetadata: providerMetadataSchema.optional()
|
658
|
+
providerOptions: providerMetadataSchema.optional()
|
635
659
|
});
|
636
660
|
var coreMessageSchema = import_zod6.z.union([
|
637
661
|
coreSystemMessageSchema,
|
@@ -646,26 +670,26 @@ function standardizePrompt({
|
|
646
670
|
tools
|
647
671
|
}) {
|
648
672
|
if (prompt.prompt == null && prompt.messages == null) {
|
649
|
-
throw new
|
673
|
+
throw new import_provider4.InvalidPromptError({
|
650
674
|
prompt,
|
651
675
|
message: "prompt or messages must be defined"
|
652
676
|
});
|
653
677
|
}
|
654
678
|
if (prompt.prompt != null && prompt.messages != null) {
|
655
|
-
throw new
|
679
|
+
throw new import_provider4.InvalidPromptError({
|
656
680
|
prompt,
|
657
681
|
message: "prompt and messages cannot be defined at the same time"
|
658
682
|
});
|
659
683
|
}
|
660
684
|
if (prompt.system != null && typeof prompt.system !== "string") {
|
661
|
-
throw new
|
685
|
+
throw new import_provider4.InvalidPromptError({
|
662
686
|
prompt,
|
663
687
|
message: "system must be a string"
|
664
688
|
});
|
665
689
|
}
|
666
690
|
if (prompt.prompt != null) {
|
667
691
|
if (typeof prompt.prompt !== "string") {
|
668
|
-
throw new
|
692
|
+
throw new import_provider4.InvalidPromptError({
|
669
693
|
prompt,
|
670
694
|
message: "prompt must be a string"
|
671
695
|
});
|
@@ -684,7 +708,7 @@ function standardizePrompt({
|
|
684
708
|
if (prompt.messages != null) {
|
685
709
|
const promptType = detectPromptType(prompt.messages);
|
686
710
|
if (promptType === "other") {
|
687
|
-
throw new
|
711
|
+
throw new import_provider4.InvalidPromptError({
|
688
712
|
prompt,
|
689
713
|
message: "messages must be an array of CoreMessage or UIMessage"
|
690
714
|
});
|
@@ -693,7 +717,7 @@ function standardizePrompt({
|
|
693
717
|
tools
|
694
718
|
}) : prompt.messages;
|
695
719
|
if (messages.length === 0) {
|
696
|
-
throw new
|
720
|
+
throw new import_provider4.InvalidPromptError({
|
697
721
|
prompt,
|
698
722
|
message: "messages must not be empty"
|
699
723
|
});
|
@@ -703,7 +727,7 @@ function standardizePrompt({
|
|
703
727
|
schema: import_zod7.z.array(coreMessageSchema)
|
704
728
|
});
|
705
729
|
if (!validationResult.success) {
|
706
|
-
throw new
|
730
|
+
throw new import_provider4.InvalidPromptError({
|
707
731
|
prompt,
|
708
732
|
message: "messages must be an array of CoreMessage or UIMessage",
|
709
733
|
cause: validationResult.error
|
@@ -762,7 +786,10 @@ function isSchema(value) {
|
|
762
786
|
return typeof value === "object" && value !== null && schemaSymbol in value && value[schemaSymbol] === true && "jsonSchema" in value && "validate" in value;
|
763
787
|
}
|
764
788
|
function asSchema(schema) {
|
765
|
-
return
|
789
|
+
return schema == null ? jsonSchema({
|
790
|
+
properties: {},
|
791
|
+
additionalProperties: false
|
792
|
+
}) : isSchema(schema) ? schema : zodSchema(schema);
|
766
793
|
}
|
767
794
|
|
768
795
|
// core/util/is-non-empty-object.ts
|
@@ -815,12 +842,12 @@ function prepareToolsAndToolChoice({
|
|
815
842
|
}
|
816
843
|
|
817
844
|
// errors/invalid-argument-error.ts
|
818
|
-
var
|
845
|
+
var import_provider5 = require("@ai-sdk/provider");
|
819
846
|
var name3 = "AI_InvalidArgumentError";
|
820
847
|
var marker3 = `vercel.ai.error.${name3}`;
|
821
848
|
var symbol3 = Symbol.for(marker3);
|
822
849
|
var _a3;
|
823
|
-
var InvalidArgumentError = class extends
|
850
|
+
var InvalidArgumentError = class extends import_provider5.AISDKError {
|
824
851
|
constructor({
|
825
852
|
parameter,
|
826
853
|
value,
|
@@ -835,22 +862,22 @@ var InvalidArgumentError = class extends import_provider4.AISDKError {
|
|
835
862
|
this.value = value;
|
836
863
|
}
|
837
864
|
static isInstance(error) {
|
838
|
-
return
|
865
|
+
return import_provider5.AISDKError.hasMarker(error, marker3);
|
839
866
|
}
|
840
867
|
};
|
841
868
|
_a3 = symbol3;
|
842
869
|
|
843
870
|
// util/retry-with-exponential-backoff.ts
|
844
|
-
var
|
871
|
+
var import_provider7 = require("@ai-sdk/provider");
|
845
872
|
var import_provider_utils5 = require("@ai-sdk/provider-utils");
|
846
873
|
|
847
874
|
// util/retry-error.ts
|
848
|
-
var
|
875
|
+
var import_provider6 = require("@ai-sdk/provider");
|
849
876
|
var name4 = "AI_RetryError";
|
850
877
|
var marker4 = `vercel.ai.error.${name4}`;
|
851
878
|
var symbol4 = Symbol.for(marker4);
|
852
879
|
var _a4;
|
853
|
-
var RetryError = class extends
|
880
|
+
var RetryError = class extends import_provider6.AISDKError {
|
854
881
|
constructor({
|
855
882
|
message,
|
856
883
|
reason,
|
@@ -863,7 +890,7 @@ var RetryError = class extends import_provider5.AISDKError {
|
|
863
890
|
this.lastError = errors[errors.length - 1];
|
864
891
|
}
|
865
892
|
static isInstance(error) {
|
866
|
-
return
|
893
|
+
return import_provider6.AISDKError.hasMarker(error, marker4);
|
867
894
|
}
|
868
895
|
};
|
869
896
|
_a4 = symbol4;
|
@@ -902,7 +929,7 @@ async function _retryWithExponentialBackoff(f, {
|
|
902
929
|
errors: newErrors
|
903
930
|
});
|
904
931
|
}
|
905
|
-
if (error instanceof Error &&
|
932
|
+
if (error instanceof Error && import_provider7.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
|
906
933
|
await (0, import_provider_utils5.delay)(delayInMs);
|
907
934
|
return _retryWithExponentialBackoff(
|
908
935
|
f,
|
@@ -950,7 +977,7 @@ function prepareRetries({
|
|
950
977
|
|
951
978
|
// core/prompt/prepare-call-settings.ts
|
952
979
|
function prepareCallSettings({
|
953
|
-
|
980
|
+
maxOutputTokens,
|
954
981
|
temperature,
|
955
982
|
topP,
|
956
983
|
topK,
|
@@ -959,19 +986,19 @@ function prepareCallSettings({
|
|
959
986
|
stopSequences,
|
960
987
|
seed
|
961
988
|
}) {
|
962
|
-
if (
|
963
|
-
if (!Number.isInteger(
|
989
|
+
if (maxOutputTokens != null) {
|
990
|
+
if (!Number.isInteger(maxOutputTokens)) {
|
964
991
|
throw new InvalidArgumentError({
|
965
|
-
parameter: "
|
966
|
-
value:
|
967
|
-
message: "
|
992
|
+
parameter: "maxOutputTokens",
|
993
|
+
value: maxOutputTokens,
|
994
|
+
message: "maxOutputTokens must be an integer"
|
968
995
|
});
|
969
996
|
}
|
970
|
-
if (
|
997
|
+
if (maxOutputTokens < 1) {
|
971
998
|
throw new InvalidArgumentError({
|
972
|
-
parameter: "
|
973
|
-
value:
|
974
|
-
message: "
|
999
|
+
parameter: "maxOutputTokens",
|
1000
|
+
value: maxOutputTokens,
|
1001
|
+
message: "maxOutputTokens must be >= 1"
|
975
1002
|
});
|
976
1003
|
}
|
977
1004
|
}
|
@@ -1030,7 +1057,7 @@ function prepareCallSettings({
|
|
1030
1057
|
}
|
1031
1058
|
}
|
1032
1059
|
return {
|
1033
|
-
|
1060
|
+
maxOutputTokens,
|
1034
1061
|
// TODO v5 remove default 0 for temperature
|
1035
1062
|
temperature: temperature != null ? temperature : 0,
|
1036
1063
|
topP,
|
@@ -1042,16 +1069,13 @@ function prepareCallSettings({
|
|
1042
1069
|
};
|
1043
1070
|
}
|
1044
1071
|
|
1045
|
-
// core/prompt/convert-to-language-model-prompt.ts
|
1046
|
-
var import_provider_utils6 = require("@ai-sdk/provider-utils");
|
1047
|
-
|
1048
1072
|
// util/download-error.ts
|
1049
|
-
var
|
1073
|
+
var import_provider8 = require("@ai-sdk/provider");
|
1050
1074
|
var name5 = "AI_DownloadError";
|
1051
1075
|
var marker5 = `vercel.ai.error.${name5}`;
|
1052
1076
|
var symbol5 = Symbol.for(marker5);
|
1053
1077
|
var _a5;
|
1054
|
-
var DownloadError = class extends
|
1078
|
+
var DownloadError = class extends import_provider8.AISDKError {
|
1055
1079
|
constructor({
|
1056
1080
|
url,
|
1057
1081
|
statusCode,
|
@@ -1066,7 +1090,7 @@ var DownloadError = class extends import_provider7.AISDKError {
|
|
1066
1090
|
this.statusText = statusText;
|
1067
1091
|
}
|
1068
1092
|
static isInstance(error) {
|
1069
|
-
return
|
1093
|
+
return import_provider8.AISDKError.hasMarker(error, marker5);
|
1070
1094
|
}
|
1071
1095
|
};
|
1072
1096
|
_a5 = symbol5;
|
@@ -1183,12 +1207,12 @@ function detectMediaType({
|
|
1183
1207
|
}
|
1184
1208
|
|
1185
1209
|
// core/prompt/invalid-message-role-error.ts
|
1186
|
-
var
|
1210
|
+
var import_provider9 = require("@ai-sdk/provider");
|
1187
1211
|
var name6 = "AI_InvalidMessageRoleError";
|
1188
1212
|
var marker6 = `vercel.ai.error.${name6}`;
|
1189
1213
|
var symbol6 = Symbol.for(marker6);
|
1190
1214
|
var _a6;
|
1191
|
-
var InvalidMessageRoleError = class extends
|
1215
|
+
var InvalidMessageRoleError = class extends import_provider9.AISDKError {
|
1192
1216
|
constructor({
|
1193
1217
|
role,
|
1194
1218
|
message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
|
@@ -1198,27 +1222,11 @@ var InvalidMessageRoleError = class extends import_provider8.AISDKError {
|
|
1198
1222
|
this.role = role;
|
1199
1223
|
}
|
1200
1224
|
static isInstance(error) {
|
1201
|
-
return
|
1225
|
+
return import_provider9.AISDKError.hasMarker(error, marker6);
|
1202
1226
|
}
|
1203
1227
|
};
|
1204
1228
|
_a6 = symbol6;
|
1205
1229
|
|
1206
|
-
// core/prompt/split-data-url.ts
|
1207
|
-
function splitDataUrl(dataUrl) {
|
1208
|
-
try {
|
1209
|
-
const [header, base64Content] = dataUrl.split(",");
|
1210
|
-
return {
|
1211
|
-
mediaType: header.split(";")[0].split(":")[1],
|
1212
|
-
base64Content
|
1213
|
-
};
|
1214
|
-
} catch (error) {
|
1215
|
-
return {
|
1216
|
-
mediaType: void 0,
|
1217
|
-
base64Content: void 0
|
1218
|
-
};
|
1219
|
-
}
|
1220
|
-
}
|
1221
|
-
|
1222
1230
|
// core/prompt/convert-to-language-model-prompt.ts
|
1223
1231
|
async function convertToLanguageModelPrompt({
|
1224
1232
|
prompt,
|
@@ -1240,14 +1248,13 @@ async function convertToLanguageModelPrompt({
|
|
1240
1248
|
];
|
1241
1249
|
}
|
1242
1250
|
function convertToLanguageModelMessage(message, downloadedAssets) {
|
1243
|
-
var _a7, _b, _c, _d, _e, _f;
|
1244
1251
|
const role = message.role;
|
1245
1252
|
switch (role) {
|
1246
1253
|
case "system": {
|
1247
1254
|
return {
|
1248
1255
|
role: "system",
|
1249
1256
|
content: message.content,
|
1250
|
-
providerOptions:
|
1257
|
+
providerOptions: message.providerOptions
|
1251
1258
|
};
|
1252
1259
|
}
|
1253
1260
|
case "user": {
|
@@ -1255,13 +1262,13 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
|
|
1255
1262
|
return {
|
1256
1263
|
role: "user",
|
1257
1264
|
content: [{ type: "text", text: message.content }],
|
1258
|
-
providerOptions:
|
1265
|
+
providerOptions: message.providerOptions
|
1259
1266
|
};
|
1260
1267
|
}
|
1261
1268
|
return {
|
1262
1269
|
role: "user",
|
1263
1270
|
content: message.content.map((part) => convertPartToLanguageModelPart(part, downloadedAssets)).filter((part) => part.type !== "text" || part.text !== ""),
|
1264
|
-
providerOptions:
|
1271
|
+
providerOptions: message.providerOptions
|
1265
1272
|
};
|
1266
1273
|
}
|
1267
1274
|
case "assistant": {
|
@@ -1269,7 +1276,7 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
|
|
1269
1276
|
return {
|
1270
1277
|
role: "assistant",
|
1271
1278
|
content: [{ type: "text", text: message.content }],
|
1272
|
-
providerOptions:
|
1279
|
+
providerOptions: message.providerOptions
|
1273
1280
|
};
|
1274
1281
|
}
|
1275
1282
|
return {
|
@@ -1278,15 +1285,18 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
|
|
1278
1285
|
// remove empty text parts:
|
1279
1286
|
(part) => part.type !== "text" || part.text !== ""
|
1280
1287
|
).map((part) => {
|
1281
|
-
var
|
1282
|
-
const providerOptions =
|
1288
|
+
var _a7;
|
1289
|
+
const providerOptions = part.providerOptions;
|
1283
1290
|
switch (part.type) {
|
1284
1291
|
case "file": {
|
1292
|
+
const { data, mediaType } = convertToLanguageModelV2DataContent(
|
1293
|
+
part.data
|
1294
|
+
);
|
1285
1295
|
return {
|
1286
1296
|
type: "file",
|
1287
|
-
data
|
1297
|
+
data,
|
1288
1298
|
filename: part.filename,
|
1289
|
-
mediaType: (
|
1299
|
+
mediaType: (_a7 = mediaType != null ? mediaType : part.mediaType) != null ? _a7 : part.mimeType,
|
1290
1300
|
providerOptions
|
1291
1301
|
};
|
1292
1302
|
}
|
@@ -1323,25 +1333,22 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
|
|
1323
1333
|
}
|
1324
1334
|
}
|
1325
1335
|
}),
|
1326
|
-
providerOptions:
|
1336
|
+
providerOptions: message.providerOptions
|
1327
1337
|
};
|
1328
1338
|
}
|
1329
1339
|
case "tool": {
|
1330
1340
|
return {
|
1331
1341
|
role: "tool",
|
1332
|
-
content: message.content.map((part) => {
|
1333
|
-
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
};
|
1343
|
-
}),
|
1344
|
-
providerOptions: (_f = message.providerOptions) != null ? _f : message.experimental_providerMetadata
|
1342
|
+
content: message.content.map((part) => ({
|
1343
|
+
type: "tool-result",
|
1344
|
+
toolCallId: part.toolCallId,
|
1345
|
+
toolName: part.toolName,
|
1346
|
+
result: part.result,
|
1347
|
+
content: part.experimental_content,
|
1348
|
+
isError: part.isError,
|
1349
|
+
providerOptions: part.providerOptions
|
1350
|
+
})),
|
1351
|
+
providerOptions: message.providerOptions
|
1345
1352
|
};
|
1346
1353
|
}
|
1347
1354
|
default: {
|
@@ -1374,71 +1381,48 @@ async function downloadAssets(messages, downloadImplementation, modelSupportsIma
|
|
1374
1381
|
);
|
1375
1382
|
}
|
1376
1383
|
function convertPartToLanguageModelPart(part, downloadedAssets) {
|
1377
|
-
var _a7, _b, _c
|
1384
|
+
var _a7, _b, _c;
|
1378
1385
|
if (part.type === "text") {
|
1379
1386
|
return {
|
1380
1387
|
type: "text",
|
1381
1388
|
text: part.text,
|
1382
|
-
providerOptions:
|
1389
|
+
providerOptions: part.providerOptions
|
1383
1390
|
};
|
1384
1391
|
}
|
1385
|
-
let
|
1386
|
-
let data;
|
1387
|
-
let content;
|
1388
|
-
let normalizedData;
|
1392
|
+
let originalData;
|
1389
1393
|
const type = part.type;
|
1390
1394
|
switch (type) {
|
1391
1395
|
case "image":
|
1392
|
-
|
1396
|
+
originalData = part.image;
|
1393
1397
|
break;
|
1394
1398
|
case "file":
|
1395
|
-
|
1399
|
+
originalData = part.data;
|
1396
1400
|
break;
|
1397
1401
|
default:
|
1398
1402
|
throw new Error(`Unsupported part type: ${type}`);
|
1399
1403
|
}
|
1400
|
-
|
1401
|
-
|
1402
|
-
|
1403
|
-
|
1404
|
-
|
1405
|
-
|
1406
|
-
|
1407
|
-
|
1408
|
-
content.toString()
|
1409
|
-
);
|
1410
|
-
if (dataUrlMediaType == null || base64Content == null) {
|
1411
|
-
throw new Error(`Invalid data URL format in part ${type}`);
|
1412
|
-
}
|
1413
|
-
mediaType = dataUrlMediaType;
|
1414
|
-
normalizedData = convertDataContentToUint8Array(base64Content);
|
1415
|
-
} else {
|
1416
|
-
const downloadedFile = downloadedAssets[content.toString()];
|
1417
|
-
if (downloadedFile) {
|
1418
|
-
normalizedData = downloadedFile.data;
|
1419
|
-
mediaType != null ? mediaType : mediaType = downloadedFile.mediaType;
|
1420
|
-
} else {
|
1421
|
-
normalizedData = content;
|
1422
|
-
}
|
1404
|
+
const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV2DataContent(originalData);
|
1405
|
+
let mediaType = (_a7 = convertedMediaType != null ? convertedMediaType : part.mediaType) != null ? _a7 : part.mimeType;
|
1406
|
+
let data = convertedData;
|
1407
|
+
if (data instanceof URL) {
|
1408
|
+
const downloadedFile = downloadedAssets[data.toString()];
|
1409
|
+
if (downloadedFile) {
|
1410
|
+
data = downloadedFile.data;
|
1411
|
+
mediaType = (_b = downloadedFile.mediaType) != null ? _b : mediaType;
|
1423
1412
|
}
|
1424
|
-
} else {
|
1425
|
-
normalizedData = convertDataContentToUint8Array(content);
|
1426
1413
|
}
|
1427
1414
|
switch (type) {
|
1428
1415
|
case "image": {
|
1429
|
-
if (
|
1430
|
-
mediaType = (_c = detectMediaType({
|
1431
|
-
data: normalizedData,
|
1432
|
-
signatures: imageMediaTypeSignatures
|
1433
|
-
})) != null ? _c : mediaType;
|
1416
|
+
if (data instanceof Uint8Array || typeof data === "string") {
|
1417
|
+
mediaType = (_c = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _c : mediaType;
|
1434
1418
|
}
|
1435
1419
|
return {
|
1436
1420
|
type: "file",
|
1437
1421
|
mediaType: mediaType != null ? mediaType : "image/*",
|
1438
1422
|
// any image
|
1439
1423
|
filename: void 0,
|
1440
|
-
data
|
1441
|
-
providerOptions:
|
1424
|
+
data,
|
1425
|
+
providerOptions: part.providerOptions
|
1442
1426
|
};
|
1443
1427
|
}
|
1444
1428
|
case "file": {
|
@@ -1449,8 +1433,8 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
1449
1433
|
type: "file",
|
1450
1434
|
mediaType,
|
1451
1435
|
filename: part.filename,
|
1452
|
-
data
|
1453
|
-
providerOptions:
|
1436
|
+
data,
|
1437
|
+
providerOptions: part.providerOptions
|
1454
1438
|
};
|
1455
1439
|
}
|
1456
1440
|
}
|
@@ -1458,13 +1442,13 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
1458
1442
|
|
1459
1443
|
// core/types/usage.ts
|
1460
1444
|
function calculateLanguageModelUsage({
|
1461
|
-
|
1462
|
-
|
1445
|
+
inputTokens,
|
1446
|
+
outputTokens
|
1463
1447
|
}) {
|
1464
1448
|
return {
|
1465
|
-
promptTokens,
|
1466
|
-
completionTokens,
|
1467
|
-
totalTokens:
|
1449
|
+
promptTokens: inputTokens != null ? inputTokens : NaN,
|
1450
|
+
completionTokens: outputTokens != null ? outputTokens : NaN,
|
1451
|
+
totalTokens: (inputTokens != null ? inputTokens : 0) + (outputTokens != null ? outputTokens : 0)
|
1468
1452
|
};
|
1469
1453
|
}
|
1470
1454
|
|