ai 4.1.62 → 4.1.64
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 +1828 -1807
- package/dist/index.d.ts +1828 -1807
- package/dist/index.js +261 -70
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +254 -63
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
- package/rsc/dist/index.d.ts +3 -2
- package/rsc/dist/rsc-server.d.mts +3 -2
- package/rsc/dist/rsc-server.mjs +129 -20
- package/rsc/dist/rsc-server.mjs.map +1 -1
package/dist/index.mjs
CHANGED
@@ -802,12 +802,6 @@ var DefaultEmbedManyResult = class {
|
|
802
802
|
}
|
803
803
|
};
|
804
804
|
|
805
|
-
// core/generate-image/generate-image.ts
|
806
|
-
import {
|
807
|
-
convertBase64ToUint8Array,
|
808
|
-
convertUint8ArrayToBase64
|
809
|
-
} from "@ai-sdk/provider-utils";
|
810
|
-
|
811
805
|
// errors/no-image-generated-error.ts
|
812
806
|
import { AISDKError as AISDKError3 } from "@ai-sdk/provider";
|
813
807
|
var name3 = "AI_NoImageGeneratedError";
|
@@ -830,6 +824,126 @@ var NoImageGeneratedError = class extends AISDKError3 {
|
|
830
824
|
};
|
831
825
|
_a3 = symbol3;
|
832
826
|
|
827
|
+
// core/generate-text/generated-file.ts
|
828
|
+
import {
|
829
|
+
convertBase64ToUint8Array,
|
830
|
+
convertUint8ArrayToBase64
|
831
|
+
} from "@ai-sdk/provider-utils";
|
832
|
+
var DefaultGeneratedFile = class {
|
833
|
+
constructor({
|
834
|
+
data,
|
835
|
+
mimeType
|
836
|
+
}) {
|
837
|
+
const isUint8Array = data instanceof Uint8Array;
|
838
|
+
this.base64Data = isUint8Array ? void 0 : data;
|
839
|
+
this.uint8ArrayData = isUint8Array ? data : void 0;
|
840
|
+
this.mimeType = mimeType;
|
841
|
+
}
|
842
|
+
// lazy conversion with caching to avoid unnecessary conversion overhead:
|
843
|
+
get base64() {
|
844
|
+
if (this.base64Data == null) {
|
845
|
+
this.base64Data = convertUint8ArrayToBase64(this.uint8ArrayData);
|
846
|
+
}
|
847
|
+
return this.base64Data;
|
848
|
+
}
|
849
|
+
// lazy conversion with caching to avoid unnecessary conversion overhead:
|
850
|
+
get uint8Array() {
|
851
|
+
if (this.uint8ArrayData == null) {
|
852
|
+
this.uint8ArrayData = convertBase64ToUint8Array(this.base64Data);
|
853
|
+
}
|
854
|
+
return this.uint8ArrayData;
|
855
|
+
}
|
856
|
+
};
|
857
|
+
var DefaultGeneratedFileWithType = class extends DefaultGeneratedFile {
|
858
|
+
constructor(options) {
|
859
|
+
super(options);
|
860
|
+
this.type = "file";
|
861
|
+
}
|
862
|
+
};
|
863
|
+
|
864
|
+
// core/util/detect-image-mimetype.ts
|
865
|
+
var mimeTypeSignatures = [
|
866
|
+
{
|
867
|
+
mimeType: "image/gif",
|
868
|
+
bytesPrefix: [71, 73, 70],
|
869
|
+
base64Prefix: "R0lG"
|
870
|
+
},
|
871
|
+
{
|
872
|
+
mimeType: "image/png",
|
873
|
+
bytesPrefix: [137, 80, 78, 71],
|
874
|
+
base64Prefix: "iVBORw"
|
875
|
+
},
|
876
|
+
{
|
877
|
+
mimeType: "image/jpeg",
|
878
|
+
bytesPrefix: [255, 216],
|
879
|
+
base64Prefix: "/9j/"
|
880
|
+
},
|
881
|
+
{
|
882
|
+
mimeType: "image/webp",
|
883
|
+
bytesPrefix: [82, 73, 70, 70],
|
884
|
+
base64Prefix: "UklGRg"
|
885
|
+
},
|
886
|
+
{
|
887
|
+
mimeType: "image/bmp",
|
888
|
+
bytesPrefix: [66, 77],
|
889
|
+
base64Prefix: "Qk"
|
890
|
+
},
|
891
|
+
{
|
892
|
+
mimeType: "image/tiff",
|
893
|
+
bytesPrefix: [73, 73, 42, 0],
|
894
|
+
base64Prefix: "SUkqAA"
|
895
|
+
},
|
896
|
+
{
|
897
|
+
mimeType: "image/tiff",
|
898
|
+
bytesPrefix: [77, 77, 0, 42],
|
899
|
+
base64Prefix: "TU0AKg"
|
900
|
+
},
|
901
|
+
{
|
902
|
+
mimeType: "image/avif",
|
903
|
+
bytesPrefix: [
|
904
|
+
0,
|
905
|
+
0,
|
906
|
+
0,
|
907
|
+
32,
|
908
|
+
102,
|
909
|
+
116,
|
910
|
+
121,
|
911
|
+
112,
|
912
|
+
97,
|
913
|
+
118,
|
914
|
+
105,
|
915
|
+
102
|
916
|
+
],
|
917
|
+
base64Prefix: "AAAAIGZ0eXBhdmlm"
|
918
|
+
},
|
919
|
+
{
|
920
|
+
mimeType: "image/heic",
|
921
|
+
bytesPrefix: [
|
922
|
+
0,
|
923
|
+
0,
|
924
|
+
0,
|
925
|
+
32,
|
926
|
+
102,
|
927
|
+
116,
|
928
|
+
121,
|
929
|
+
112,
|
930
|
+
104,
|
931
|
+
101,
|
932
|
+
105,
|
933
|
+
99
|
934
|
+
],
|
935
|
+
base64Prefix: "AAAAIGZ0eXBoZWlj"
|
936
|
+
}
|
937
|
+
];
|
938
|
+
function detectImageMimeType(image) {
|
939
|
+
for (const signature of mimeTypeSignatures) {
|
940
|
+
if (typeof image === "string" ? image.startsWith(signature.base64Prefix) : image.length >= signature.bytesPrefix.length && signature.bytesPrefix.every((byte, index) => image[index] === byte)) {
|
941
|
+
return signature.mimeType;
|
942
|
+
}
|
943
|
+
}
|
944
|
+
return void 0;
|
945
|
+
}
|
946
|
+
|
833
947
|
// core/generate-image/generate-image.ts
|
834
948
|
async function generateImage({
|
835
949
|
model,
|
@@ -841,10 +955,7 @@ async function generateImage({
|
|
841
955
|
providerOptions,
|
842
956
|
maxRetries: maxRetriesArg,
|
843
957
|
abortSignal,
|
844
|
-
headers
|
845
|
-
_internal = {
|
846
|
-
currentDate: () => /* @__PURE__ */ new Date()
|
847
|
-
}
|
958
|
+
headers
|
848
959
|
}) {
|
849
960
|
var _a17;
|
850
961
|
const { retry } = prepareRetries({ maxRetries: maxRetriesArg });
|
@@ -878,7 +989,15 @@ async function generateImage({
|
|
878
989
|
const responses = [];
|
879
990
|
for (const result of results) {
|
880
991
|
images.push(
|
881
|
-
...result.images.map(
|
992
|
+
...result.images.map(
|
993
|
+
(image) => {
|
994
|
+
var _a18;
|
995
|
+
return new DefaultGeneratedFile({
|
996
|
+
data: image,
|
997
|
+
mimeType: (_a18 = detectImageMimeType(image)) != null ? _a18 : "image/png"
|
998
|
+
});
|
999
|
+
}
|
1000
|
+
)
|
882
1001
|
);
|
883
1002
|
warnings.push(...result.warnings);
|
884
1003
|
responses.push(result.response);
|
@@ -898,27 +1017,6 @@ var DefaultGenerateImageResult = class {
|
|
898
1017
|
return this.images[0];
|
899
1018
|
}
|
900
1019
|
};
|
901
|
-
var DefaultGeneratedImage = class {
|
902
|
-
constructor({ image }) {
|
903
|
-
const isUint8Array = image instanceof Uint8Array;
|
904
|
-
this.base64Data = isUint8Array ? void 0 : image;
|
905
|
-
this.uint8ArrayData = isUint8Array ? image : void 0;
|
906
|
-
}
|
907
|
-
// lazy conversion with caching to avoid unnecessary conversion overhead:
|
908
|
-
get base64() {
|
909
|
-
if (this.base64Data == null) {
|
910
|
-
this.base64Data = convertUint8ArrayToBase64(this.uint8ArrayData);
|
911
|
-
}
|
912
|
-
return this.base64Data;
|
913
|
-
}
|
914
|
-
// lazy conversion with caching to avoid unnecessary conversion overhead:
|
915
|
-
get uint8Array() {
|
916
|
-
if (this.uint8ArrayData == null) {
|
917
|
-
this.uint8ArrayData = convertBase64ToUint8Array(this.base64Data);
|
918
|
-
}
|
919
|
-
return this.uint8ArrayData;
|
920
|
-
}
|
921
|
-
};
|
922
1020
|
|
923
1021
|
// core/generate-object/generate-object.ts
|
924
1022
|
import {
|
@@ -1007,22 +1105,6 @@ async function download({
|
|
1007
1105
|
}
|
1008
1106
|
}
|
1009
1107
|
|
1010
|
-
// core/util/detect-image-mimetype.ts
|
1011
|
-
var mimeTypeSignatures = [
|
1012
|
-
{ mimeType: "image/gif", bytes: [71, 73, 70] },
|
1013
|
-
{ mimeType: "image/png", bytes: [137, 80, 78, 71] },
|
1014
|
-
{ mimeType: "image/jpeg", bytes: [255, 216] },
|
1015
|
-
{ mimeType: "image/webp", bytes: [82, 73, 70, 70] }
|
1016
|
-
];
|
1017
|
-
function detectImageMimeType(image) {
|
1018
|
-
for (const { bytes, mimeType } of mimeTypeSignatures) {
|
1019
|
-
if (image.length >= bytes.length && bytes.every((byte, index) => image[index] === byte)) {
|
1020
|
-
return mimeType;
|
1021
|
-
}
|
1022
|
-
}
|
1023
|
-
return void 0;
|
1024
|
-
}
|
1025
|
-
|
1026
1108
|
// core/prompt/data-content.ts
|
1027
1109
|
import {
|
1028
1110
|
convertBase64ToUint8Array as convertBase64ToUint8Array2,
|
@@ -1199,11 +1281,50 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
|
|
1199
1281
|
// remove empty text parts:
|
1200
1282
|
(part) => part.type !== "text" || part.text !== ""
|
1201
1283
|
).map((part) => {
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1284
|
+
var _a18;
|
1285
|
+
const providerOptions = (_a18 = part.providerOptions) != null ? _a18 : part.experimental_providerMetadata;
|
1286
|
+
switch (part.type) {
|
1287
|
+
case "file": {
|
1288
|
+
return {
|
1289
|
+
type: "file",
|
1290
|
+
data: part.data instanceof URL ? part.data : convertDataContentToBase64String(part.data),
|
1291
|
+
filename: part.filename,
|
1292
|
+
mimeType: part.mimeType,
|
1293
|
+
providerMetadata: providerOptions
|
1294
|
+
};
|
1295
|
+
}
|
1296
|
+
case "reasoning": {
|
1297
|
+
return {
|
1298
|
+
type: "reasoning",
|
1299
|
+
text: part.text,
|
1300
|
+
signature: part.signature,
|
1301
|
+
providerMetadata: providerOptions
|
1302
|
+
};
|
1303
|
+
}
|
1304
|
+
case "redacted-reasoning": {
|
1305
|
+
return {
|
1306
|
+
type: "redacted-reasoning",
|
1307
|
+
data: part.data,
|
1308
|
+
providerMetadata: providerOptions
|
1309
|
+
};
|
1310
|
+
}
|
1311
|
+
case "text": {
|
1312
|
+
return {
|
1313
|
+
type: "text",
|
1314
|
+
text: part.text,
|
1315
|
+
providerMetadata: providerOptions
|
1316
|
+
};
|
1317
|
+
}
|
1318
|
+
case "tool-call": {
|
1319
|
+
return {
|
1320
|
+
type: "tool-call",
|
1321
|
+
toolCallId: part.toolCallId,
|
1322
|
+
toolName: part.toolName,
|
1323
|
+
args: part.args,
|
1324
|
+
providerMetadata: providerOptions
|
1325
|
+
};
|
1326
|
+
}
|
1327
|
+
}
|
1207
1328
|
}),
|
1208
1329
|
providerMetadata: (_e = message.providerOptions) != null ? _e : message.experimental_providerMetadata
|
1209
1330
|
};
|
@@ -1563,12 +1684,11 @@ function convertToCoreMessages(messages, options) {
|
|
1563
1684
|
const content2 = [];
|
1564
1685
|
for (const part of block) {
|
1565
1686
|
switch (part.type) {
|
1566
|
-
case "
|
1567
|
-
|
1568
|
-
|
1569
|
-
text: part.text
|
1570
|
-
});
|
1687
|
+
case "file":
|
1688
|
+
case "text": {
|
1689
|
+
content2.push(part);
|
1571
1690
|
break;
|
1691
|
+
}
|
1572
1692
|
case "reasoning": {
|
1573
1693
|
for (const detail of part.details) {
|
1574
1694
|
switch (detail.type) {
|
@@ -1649,9 +1769,6 @@ function convertToCoreMessages(messages, options) {
|
|
1649
1769
|
let block = [];
|
1650
1770
|
for (const part of message.parts) {
|
1651
1771
|
switch (part.type) {
|
1652
|
-
case "reasoning":
|
1653
|
-
block.push(part);
|
1654
|
-
break;
|
1655
1772
|
case "text": {
|
1656
1773
|
if (blockHasToolInvocations) {
|
1657
1774
|
processBlock2();
|
@@ -1659,6 +1776,11 @@ function convertToCoreMessages(messages, options) {
|
|
1659
1776
|
block.push(part);
|
1660
1777
|
break;
|
1661
1778
|
}
|
1779
|
+
case "file":
|
1780
|
+
case "reasoning": {
|
1781
|
+
block.push(part);
|
1782
|
+
break;
|
1783
|
+
}
|
1662
1784
|
case "tool-invocation": {
|
1663
1785
|
if (((_b = part.toolInvocation.step) != null ? _b : 0) !== currentStep) {
|
1664
1786
|
processBlock2();
|
@@ -1774,6 +1896,7 @@ function detectSingleMessageCharacteristics(message) {
|
|
1774
1896
|
if (typeof message === "object" && message !== null && (message.role === "function" || // UI-only role
|
1775
1897
|
message.role === "data" || // UI-only role
|
1776
1898
|
"toolInvocations" in message || // UI-specific field
|
1899
|
+
"parts" in message || // UI-specific field
|
1777
1900
|
"experimental_attachments" in message)) {
|
1778
1901
|
return "has-ui-specific-parts";
|
1779
1902
|
} else if (typeof message === "object" && message !== null && "content" in message && (Array.isArray(message.content) || // Core messages can have array content
|
@@ -1903,6 +2026,7 @@ var coreAssistantMessageSchema = z6.object({
|
|
1903
2026
|
z6.array(
|
1904
2027
|
z6.union([
|
1905
2028
|
textPartSchema,
|
2029
|
+
filePartSchema,
|
1906
2030
|
reasoningPartSchema,
|
1907
2031
|
redactedReasoningPartSchema,
|
1908
2032
|
toolCallPartSchema
|
@@ -3812,6 +3936,7 @@ function asReasoningText(reasoning) {
|
|
3812
3936
|
// core/generate-text/to-response-messages.ts
|
3813
3937
|
function toResponseMessages({
|
3814
3938
|
text: text2 = "",
|
3939
|
+
files,
|
3815
3940
|
reasoning,
|
3816
3941
|
tools,
|
3817
3942
|
toolCalls,
|
@@ -3826,6 +3951,12 @@ function toResponseMessages({
|
|
3826
3951
|
...reasoning.map(
|
3827
3952
|
(part) => part.type === "text" ? { ...part, type: "reasoning" } : { ...part, type: "redacted-reasoning" }
|
3828
3953
|
),
|
3954
|
+
// TODO language model v2: switch to order response content (instead of type-based ordering)
|
3955
|
+
...files.map((file) => ({
|
3956
|
+
type: "file",
|
3957
|
+
data: file.base64,
|
3958
|
+
mimeType: file.mimeType
|
3959
|
+
})),
|
3829
3960
|
{ type: "text", text: text2 },
|
3830
3961
|
...toolCalls
|
3831
3962
|
],
|
@@ -4115,6 +4246,7 @@ async function generateText({
|
|
4115
4246
|
responseMessages.push(
|
4116
4247
|
...toResponseMessages({
|
4117
4248
|
text: text2,
|
4249
|
+
files: asFiles(currentModelResponse.files),
|
4118
4250
|
reasoning: asReasoningDetails(currentModelResponse.reasoning),
|
4119
4251
|
tools: tools != null ? tools : {},
|
4120
4252
|
toolCalls: currentToolCalls,
|
@@ -4130,6 +4262,7 @@ async function generateText({
|
|
4130
4262
|
// TODO v5: rename reasoning to reasoningText (and use reasoning for composite array)
|
4131
4263
|
reasoning: asReasoningText(currentReasoningDetails),
|
4132
4264
|
reasoningDetails: currentReasoningDetails,
|
4265
|
+
files: asFiles(currentModelResponse.files),
|
4133
4266
|
sources: (_e = currentModelResponse.sources) != null ? _e : [],
|
4134
4267
|
toolCalls: currentToolCalls,
|
4135
4268
|
toolResults: currentToolResults,
|
@@ -4171,6 +4304,7 @@ async function generateText({
|
|
4171
4304
|
);
|
4172
4305
|
return new DefaultGenerateTextResult({
|
4173
4306
|
text: text2,
|
4307
|
+
files: asFiles(currentModelResponse.files),
|
4174
4308
|
reasoning: asReasoningText(currentReasoningDetails),
|
4175
4309
|
reasoningDetails: currentReasoningDetails,
|
4176
4310
|
sources,
|
@@ -4280,6 +4414,7 @@ async function executeTools({
|
|
4280
4414
|
var DefaultGenerateTextResult = class {
|
4281
4415
|
constructor(options) {
|
4282
4416
|
this.text = options.text;
|
4417
|
+
this.files = options.files;
|
4283
4418
|
this.reasoning = options.reasoning;
|
4284
4419
|
this.reasoningDetails = options.reasoningDetails;
|
4285
4420
|
this.toolCalls = options.toolCalls;
|
@@ -4309,6 +4444,10 @@ function asReasoningDetails(reasoning) {
|
|
4309
4444
|
}
|
4310
4445
|
return reasoning;
|
4311
4446
|
}
|
4447
|
+
function asFiles(files) {
|
4448
|
+
var _a17;
|
4449
|
+
return (_a17 = files == null ? void 0 : files.map((file) => new DefaultGeneratedFile(file))) != null ? _a17 : [];
|
4450
|
+
}
|
4312
4451
|
|
4313
4452
|
// core/generate-text/output.ts
|
4314
4453
|
var output_exports = {};
|
@@ -4647,6 +4786,15 @@ function runToolsTransformation({
|
|
4647
4786
|
controller.enqueue(chunk);
|
4648
4787
|
break;
|
4649
4788
|
}
|
4789
|
+
case "file": {
|
4790
|
+
controller.enqueue(
|
4791
|
+
new DefaultGeneratedFileWithType({
|
4792
|
+
data: chunk.data,
|
4793
|
+
mimeType: chunk.mimeType
|
4794
|
+
})
|
4795
|
+
);
|
4796
|
+
break;
|
4797
|
+
}
|
4650
4798
|
case "tool-call-delta": {
|
4651
4799
|
if (toolCallStreaming) {
|
4652
4800
|
if (!activeToolCalls[chunk.toolCallId]) {
|
@@ -4954,6 +5102,7 @@ var DefaultStreamTextResult = class {
|
|
4954
5102
|
this.reasoningPromise = new DelayedPromise();
|
4955
5103
|
this.reasoningDetailsPromise = new DelayedPromise();
|
4956
5104
|
this.sourcesPromise = new DelayedPromise();
|
5105
|
+
this.filesPromise = new DelayedPromise();
|
4957
5106
|
this.toolCallsPromise = new DelayedPromise();
|
4958
5107
|
this.toolResultsPromise = new DelayedPromise();
|
4959
5108
|
this.requestPromise = new DelayedPromise();
|
@@ -4972,6 +5121,7 @@ var DefaultStreamTextResult = class {
|
|
4972
5121
|
let recordedContinuationText = "";
|
4973
5122
|
let recordedFullText = "";
|
4974
5123
|
let stepReasoning = [];
|
5124
|
+
let stepFiles = [];
|
4975
5125
|
let activeReasoningText = void 0;
|
4976
5126
|
let recordedStepSources = [];
|
4977
5127
|
const recordedSources = [];
|
@@ -5024,6 +5174,9 @@ var DefaultStreamTextResult = class {
|
|
5024
5174
|
if (part.type === "redacted-reasoning") {
|
5025
5175
|
stepReasoning.push({ type: "redacted", data: part.data });
|
5026
5176
|
}
|
5177
|
+
if (part.type === "file") {
|
5178
|
+
stepFiles.push(part);
|
5179
|
+
}
|
5027
5180
|
if (part.type === "source") {
|
5028
5181
|
recordedSources.push(part.source);
|
5029
5182
|
recordedStepSources.push(part.source);
|
@@ -5037,6 +5190,7 @@ var DefaultStreamTextResult = class {
|
|
5037
5190
|
if (part.type === "step-finish") {
|
5038
5191
|
const stepMessages = toResponseMessages({
|
5039
5192
|
text: recordedContinuationText,
|
5193
|
+
files: stepFiles,
|
5040
5194
|
reasoning: stepReasoning,
|
5041
5195
|
tools: tools != null ? tools : {},
|
5042
5196
|
toolCalls: recordedToolCalls,
|
@@ -5063,6 +5217,7 @@ var DefaultStreamTextResult = class {
|
|
5063
5217
|
text: recordedStepText,
|
5064
5218
|
reasoning: asReasoningText(stepReasoning),
|
5065
5219
|
reasoningDetails: stepReasoning,
|
5220
|
+
files: stepFiles,
|
5066
5221
|
sources: recordedStepSources,
|
5067
5222
|
toolCalls: recordedToolCalls,
|
5068
5223
|
toolResults: recordedToolResults,
|
@@ -5086,6 +5241,7 @@ var DefaultStreamTextResult = class {
|
|
5086
5241
|
recordedStepText = "";
|
5087
5242
|
recordedStepSources = [];
|
5088
5243
|
stepReasoning = [];
|
5244
|
+
stepFiles = [];
|
5089
5245
|
activeReasoningText = void 0;
|
5090
5246
|
if (nextStepType !== "done") {
|
5091
5247
|
stepType = nextStepType;
|
@@ -5131,6 +5287,7 @@ var DefaultStreamTextResult = class {
|
|
5131
5287
|
self.usagePromise.resolve(usage);
|
5132
5288
|
self.textPromise.resolve(recordedFullText);
|
5133
5289
|
self.sourcesPromise.resolve(recordedSources);
|
5290
|
+
self.filesPromise.resolve(lastStep.files);
|
5134
5291
|
self.stepsPromise.resolve(recordedSteps);
|
5135
5292
|
await (onFinish == null ? void 0 : onFinish({
|
5136
5293
|
finishReason,
|
@@ -5139,6 +5296,7 @@ var DefaultStreamTextResult = class {
|
|
5139
5296
|
text: recordedFullText,
|
5140
5297
|
reasoning: lastStep.reasoning,
|
5141
5298
|
reasoningDetails: lastStep.reasoningDetails,
|
5299
|
+
files: lastStep.files,
|
5142
5300
|
sources: lastStep.sources,
|
5143
5301
|
toolCalls: lastStep.toolCalls,
|
5144
5302
|
toolResults: lastStep.toolResults,
|
@@ -5331,6 +5489,7 @@ var DefaultStreamTextResult = class {
|
|
5331
5489
|
const stepToolCalls = [];
|
5332
5490
|
const stepToolResults = [];
|
5333
5491
|
const stepReasoning2 = [];
|
5492
|
+
const stepFiles2 = [];
|
5334
5493
|
let activeReasoningText2 = void 0;
|
5335
5494
|
let stepFinishReason = "unknown";
|
5336
5495
|
let stepUsage = {
|
@@ -5476,6 +5635,11 @@ var DefaultStreamTextResult = class {
|
|
5476
5635
|
});
|
5477
5636
|
break;
|
5478
5637
|
}
|
5638
|
+
case "file": {
|
5639
|
+
stepFiles2.push(chunk);
|
5640
|
+
controller.enqueue(chunk);
|
5641
|
+
break;
|
5642
|
+
}
|
5479
5643
|
case "source":
|
5480
5644
|
case "tool-call-streaming-start":
|
5481
5645
|
case "tool-call-delta": {
|
@@ -5594,6 +5758,7 @@ var DefaultStreamTextResult = class {
|
|
5594
5758
|
responseMessages.push(
|
5595
5759
|
...toResponseMessages({
|
5596
5760
|
text: stepText,
|
5761
|
+
files: stepFiles2,
|
5597
5762
|
reasoning: stepReasoning2,
|
5598
5763
|
tools: tools != null ? tools : {},
|
5599
5764
|
toolCalls: stepToolCalls,
|
@@ -5674,6 +5839,9 @@ var DefaultStreamTextResult = class {
|
|
5674
5839
|
get sources() {
|
5675
5840
|
return this.sourcesPromise.value;
|
5676
5841
|
}
|
5842
|
+
get files() {
|
5843
|
+
return this.filesPromise.value;
|
5844
|
+
}
|
5677
5845
|
get toolCalls() {
|
5678
5846
|
return this.toolCallsPromise.value;
|
5679
5847
|
}
|
@@ -5792,6 +5960,15 @@ var DefaultStreamTextResult = class {
|
|
5792
5960
|
}
|
5793
5961
|
break;
|
5794
5962
|
}
|
5963
|
+
case "file": {
|
5964
|
+
controller.enqueue(
|
5965
|
+
formatDataStreamPart2("file", {
|
5966
|
+
mimeType: chunk.mimeType,
|
5967
|
+
data: chunk.base64
|
5968
|
+
})
|
5969
|
+
);
|
5970
|
+
break;
|
5971
|
+
}
|
5795
5972
|
case "source": {
|
5796
5973
|
if (sendSources) {
|
5797
5974
|
controller.enqueue(
|
@@ -6307,6 +6484,7 @@ function appendClientMessage({
|
|
6307
6484
|
import {
|
6308
6485
|
extractMaxToolInvocationStep
|
6309
6486
|
} from "@ai-sdk/ui-utils";
|
6487
|
+
import { AISDKError as AISDKError18 } from "@ai-sdk/provider";
|
6310
6488
|
function appendResponseMessages({
|
6311
6489
|
messages,
|
6312
6490
|
responseMessages,
|
@@ -6387,6 +6565,19 @@ function appendResponseMessages({
|
|
6387
6565
|
}
|
6388
6566
|
case "tool-call":
|
6389
6567
|
break;
|
6568
|
+
case "file":
|
6569
|
+
if (part.data instanceof URL) {
|
6570
|
+
throw new AISDKError18({
|
6571
|
+
name: "InvalidAssistantFileData",
|
6572
|
+
message: "File data cannot be a URL"
|
6573
|
+
});
|
6574
|
+
}
|
6575
|
+
parts.push({
|
6576
|
+
type: "file",
|
6577
|
+
mimeType: part.mimeType,
|
6578
|
+
data: convertDataContentToBase64String(part.data)
|
6579
|
+
});
|
6580
|
+
break;
|
6390
6581
|
}
|
6391
6582
|
}
|
6392
6583
|
}
|
@@ -6510,7 +6701,7 @@ function customProvider({
|
|
6510
6701
|
var experimental_customProvider = customProvider;
|
6511
6702
|
|
6512
6703
|
// core/registry/no-such-provider-error.ts
|
6513
|
-
import { AISDKError as
|
6704
|
+
import { AISDKError as AISDKError19, NoSuchModelError as NoSuchModelError3 } from "@ai-sdk/provider";
|
6514
6705
|
var name16 = "AI_NoSuchProviderError";
|
6515
6706
|
var marker16 = `vercel.ai.error.${name16}`;
|
6516
6707
|
var symbol16 = Symbol.for(marker16);
|
@@ -6529,7 +6720,7 @@ var NoSuchProviderError = class extends NoSuchModelError3 {
|
|
6529
6720
|
this.availableProviders = availableProviders;
|
6530
6721
|
}
|
6531
6722
|
static isInstance(error) {
|
6532
|
-
return
|
6723
|
+
return AISDKError19.hasMarker(error, marker16);
|
6533
6724
|
}
|
6534
6725
|
};
|
6535
6726
|
_a16 = symbol16;
|