ai 5.0.0-canary.3 → 5.0.0-canary.4

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/dist/index.js CHANGED
@@ -62,7 +62,7 @@ __export(streams_exports, {
62
62
  cosineSimilarity: () => cosineSimilarity,
63
63
  createDataStream: () => createDataStream,
64
64
  createDataStreamResponse: () => createDataStreamResponse,
65
- createIdGenerator: () => import_provider_utils15.createIdGenerator,
65
+ createIdGenerator: () => import_provider_utils16.createIdGenerator,
66
66
  createProviderRegistry: () => createProviderRegistry,
67
67
  customProvider: () => customProvider,
68
68
  defaultSettingsMiddleware: () => defaultSettingsMiddleware,
@@ -72,10 +72,11 @@ __export(streams_exports, {
72
72
  experimental_createProviderRegistry: () => experimental_createProviderRegistry,
73
73
  experimental_customProvider: () => experimental_customProvider,
74
74
  experimental_generateImage: () => generateImage,
75
+ experimental_transcribe: () => transcribe,
75
76
  experimental_wrapLanguageModel: () => experimental_wrapLanguageModel,
76
77
  extractReasoningMiddleware: () => extractReasoningMiddleware,
77
78
  formatDataStreamPart: () => import_ui_utils11.formatDataStreamPart,
78
- generateId: () => import_provider_utils15.generateId,
79
+ generateId: () => import_provider_utils16.generateId,
79
80
  generateObject: () => generateObject,
80
81
  generateText: () => generateText,
81
82
  jsonSchema: () => import_ui_utils11.jsonSchema,
@@ -95,7 +96,7 @@ __export(streams_exports, {
95
96
  module.exports = __toCommonJS(streams_exports);
96
97
 
97
98
  // core/index.ts
98
- var import_provider_utils15 = require("@ai-sdk/provider-utils");
99
+ var import_provider_utils16 = require("@ai-sdk/provider-utils");
99
100
  var import_ui_utils11 = require("@ai-sdk/ui-utils");
100
101
 
101
102
  // core/data-stream/create-data-stream.ts
@@ -910,12 +911,12 @@ var import_provider_utils2 = require("@ai-sdk/provider-utils");
910
911
  var DefaultGeneratedFile = class {
911
912
  constructor({
912
913
  data,
913
- mimeType
914
+ mediaType
914
915
  }) {
915
916
  const isUint8Array = data instanceof Uint8Array;
916
917
  this.base64Data = isUint8Array ? void 0 : data;
917
918
  this.uint8ArrayData = isUint8Array ? data : void 0;
918
- this.mimeType = mimeType;
919
+ this.mediaType = mediaType;
919
920
  }
920
921
  // lazy conversion with caching to avoid unnecessary conversion overhead:
921
922
  get base64() {
@@ -939,45 +940,45 @@ var DefaultGeneratedFileWithType = class extends DefaultGeneratedFile {
939
940
  }
940
941
  };
941
942
 
942
- // core/util/detect-image-mimetype.ts
943
- var mimeTypeSignatures = [
943
+ // core/util/detect-media-type.ts
944
+ var imageMediaTypeSignatures = [
944
945
  {
945
- mimeType: "image/gif",
946
+ mediaType: "image/gif",
946
947
  bytesPrefix: [71, 73, 70],
947
948
  base64Prefix: "R0lG"
948
949
  },
949
950
  {
950
- mimeType: "image/png",
951
+ mediaType: "image/png",
951
952
  bytesPrefix: [137, 80, 78, 71],
952
953
  base64Prefix: "iVBORw"
953
954
  },
954
955
  {
955
- mimeType: "image/jpeg",
956
+ mediaType: "image/jpeg",
956
957
  bytesPrefix: [255, 216],
957
958
  base64Prefix: "/9j/"
958
959
  },
959
960
  {
960
- mimeType: "image/webp",
961
+ mediaType: "image/webp",
961
962
  bytesPrefix: [82, 73, 70, 70],
962
963
  base64Prefix: "UklGRg"
963
964
  },
964
965
  {
965
- mimeType: "image/bmp",
966
+ mediaType: "image/bmp",
966
967
  bytesPrefix: [66, 77],
967
968
  base64Prefix: "Qk"
968
969
  },
969
970
  {
970
- mimeType: "image/tiff",
971
+ mediaType: "image/tiff",
971
972
  bytesPrefix: [73, 73, 42, 0],
972
973
  base64Prefix: "SUkqAA"
973
974
  },
974
975
  {
975
- mimeType: "image/tiff",
976
+ mediaType: "image/tiff",
976
977
  bytesPrefix: [77, 77, 0, 42],
977
978
  base64Prefix: "TU0AKg"
978
979
  },
979
980
  {
980
- mimeType: "image/avif",
981
+ mediaType: "image/avif",
981
982
  bytesPrefix: [
982
983
  0,
983
984
  0,
@@ -995,7 +996,7 @@ var mimeTypeSignatures = [
995
996
  base64Prefix: "AAAAIGZ0eXBhdmlm"
996
997
  },
997
998
  {
998
- mimeType: "image/heic",
999
+ mediaType: "image/heic",
999
1000
  bytesPrefix: [
1000
1001
  0,
1001
1002
  0,
@@ -1013,10 +1014,45 @@ var mimeTypeSignatures = [
1013
1014
  base64Prefix: "AAAAIGZ0eXBoZWlj"
1014
1015
  }
1015
1016
  ];
1016
- function detectImageMimeType(image) {
1017
- for (const signature of mimeTypeSignatures) {
1018
- if (typeof image === "string" ? image.startsWith(signature.base64Prefix) : image.length >= signature.bytesPrefix.length && signature.bytesPrefix.every((byte, index) => image[index] === byte)) {
1019
- return signature.mimeType;
1017
+ var audioMediaTypeSignatures = [
1018
+ {
1019
+ mediaType: "audio/mpeg",
1020
+ bytesPrefix: [255, 251],
1021
+ base64Prefix: "//s="
1022
+ },
1023
+ {
1024
+ mediaType: "audio/wav",
1025
+ bytesPrefix: [82, 73, 70, 70],
1026
+ base64Prefix: "UklGR"
1027
+ },
1028
+ {
1029
+ mediaType: "audio/ogg",
1030
+ bytesPrefix: [79, 103, 103, 83],
1031
+ base64Prefix: "T2dnUw"
1032
+ },
1033
+ {
1034
+ mediaType: "audio/flac",
1035
+ bytesPrefix: [102, 76, 97, 67],
1036
+ base64Prefix: "ZkxhQw"
1037
+ },
1038
+ {
1039
+ mediaType: "audio/aac",
1040
+ bytesPrefix: [64, 21, 0, 0],
1041
+ base64Prefix: "QBUA"
1042
+ },
1043
+ {
1044
+ mediaType: "audio/mp4",
1045
+ bytesPrefix: [102, 116, 121, 112],
1046
+ base64Prefix: "ZnR5cA"
1047
+ }
1048
+ ];
1049
+ function detectMediaType({
1050
+ data,
1051
+ signatures
1052
+ }) {
1053
+ for (const signature of signatures) {
1054
+ if (typeof data === "string" ? data.startsWith(signature.base64Prefix) : data.length >= signature.bytesPrefix.length && signature.bytesPrefix.every((byte, index) => data[index] === byte)) {
1055
+ return signature.mediaType;
1020
1056
  }
1021
1057
  }
1022
1058
  return void 0;
@@ -1072,7 +1108,10 @@ async function generateImage({
1072
1108
  var _a18;
1073
1109
  return new DefaultGeneratedFile({
1074
1110
  data: image,
1075
- mimeType: (_a18 = detectImageMimeType(image)) != null ? _a18 : "image/png"
1111
+ mediaType: (_a18 = detectMediaType({
1112
+ data: image,
1113
+ signatures: imageMediaTypeSignatures
1114
+ })) != null ? _a18 : "image/png"
1076
1115
  });
1077
1116
  }
1078
1117
  )
@@ -1098,7 +1137,7 @@ var DefaultGenerateImageResult = class {
1098
1137
 
1099
1138
  // core/generate-object/generate-object.ts
1100
1139
  var import_provider12 = require("@ai-sdk/provider");
1101
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
1140
+ var import_provider_utils7 = require("@ai-sdk/provider-utils");
1102
1141
 
1103
1142
  // errors/no-object-generated-error.ts
1104
1143
  var import_provider5 = require("@ai-sdk/provider");
@@ -1128,6 +1167,9 @@ var NoObjectGeneratedError = class extends import_provider5.AISDKError {
1128
1167
  };
1129
1168
  _a4 = symbol4;
1130
1169
 
1170
+ // core/prompt/convert-to-language-model-prompt.ts
1171
+ var import_provider_utils4 = require("@ai-sdk/provider-utils");
1172
+
1131
1173
  // util/download-error.ts
1132
1174
  var import_provider6 = require("@ai-sdk/provider");
1133
1175
  var name5 = "AI_DownloadError";
@@ -1169,7 +1211,7 @@ async function download({ url }) {
1169
1211
  }
1170
1212
  return {
1171
1213
  data: new Uint8Array(await response.arrayBuffer()),
1172
- mimeType: (_a17 = response.headers.get("content-type")) != null ? _a17 : void 0
1214
+ mediaType: (_a17 = response.headers.get("content-type")) != null ? _a17 : void 0
1173
1215
  };
1174
1216
  } catch (error) {
1175
1217
  if (DownloadError.isInstance(error)) {
@@ -1282,12 +1324,12 @@ function splitDataUrl(dataUrl) {
1282
1324
  try {
1283
1325
  const [header, base64Content] = dataUrl.split(",");
1284
1326
  return {
1285
- mimeType: header.split(";")[0].split(":")[1],
1327
+ mediaType: header.split(";")[0].split(":")[1],
1286
1328
  base64Content
1287
1329
  };
1288
1330
  } catch (error) {
1289
1331
  return {
1290
- mimeType: void 0,
1332
+ mediaType: void 0,
1291
1333
  base64Content: void 0
1292
1334
  };
1293
1335
  }
@@ -1352,7 +1394,7 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
1352
1394
  // remove empty text parts:
1353
1395
  (part) => part.type !== "text" || part.text !== ""
1354
1396
  ).map((part) => {
1355
- var _a18;
1397
+ var _a18, _b2;
1356
1398
  const providerOptions = (_a18 = part.providerOptions) != null ? _a18 : part.experimental_providerMetadata;
1357
1399
  switch (part.type) {
1358
1400
  case "file": {
@@ -1360,7 +1402,7 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
1360
1402
  type: "file",
1361
1403
  data: part.data instanceof URL ? part.data : convertDataContentToBase64String(part.data),
1362
1404
  filename: part.filename,
1363
- mimeType: part.mimeType,
1405
+ mediaType: (_b2 = part.mediaType) != null ? _b2 : part.mimeType,
1364
1406
  providerOptions
1365
1407
  };
1366
1408
  }
@@ -1448,7 +1490,7 @@ async function downloadAssets(messages, downloadImplementation, modelSupportsIma
1448
1490
  );
1449
1491
  }
1450
1492
  function convertPartToLanguageModelPart(part, downloadedAssets) {
1451
- var _a17, _b, _c, _d;
1493
+ var _a17, _b, _c, _d, _e;
1452
1494
  if (part.type === "text") {
1453
1495
  return {
1454
1496
  type: "text",
@@ -1456,7 +1498,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
1456
1498
  providerOptions: (_a17 = part.providerOptions) != null ? _a17 : part.experimental_providerMetadata
1457
1499
  };
1458
1500
  }
1459
- let mimeType = part.mimeType;
1501
+ let mediaType = (_b = part.mediaType) != null ? _b : part.mimeType;
1460
1502
  let data;
1461
1503
  let content;
1462
1504
  let normalizedData;
@@ -1478,19 +1520,19 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
1478
1520
  }
1479
1521
  if (content instanceof URL) {
1480
1522
  if (content.protocol === "data:") {
1481
- const { mimeType: dataUrlMimeType, base64Content } = splitDataUrl(
1523
+ const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(
1482
1524
  content.toString()
1483
1525
  );
1484
- if (dataUrlMimeType == null || base64Content == null) {
1526
+ if (dataUrlMediaType == null || base64Content == null) {
1485
1527
  throw new Error(`Invalid data URL format in part ${type}`);
1486
1528
  }
1487
- mimeType = dataUrlMimeType;
1529
+ mediaType = dataUrlMediaType;
1488
1530
  normalizedData = convertDataContentToUint8Array(base64Content);
1489
1531
  } else {
1490
1532
  const downloadedFile = downloadedAssets[content.toString()];
1491
1533
  if (downloadedFile) {
1492
1534
  normalizedData = downloadedFile.data;
1493
- mimeType != null ? mimeType : mimeType = downloadedFile.mimeType;
1535
+ mediaType != null ? mediaType : mediaType = downloadedFile.mediaType;
1494
1536
  } else {
1495
1537
  normalizedData = content;
1496
1538
  }
@@ -1501,25 +1543,30 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
1501
1543
  switch (type) {
1502
1544
  case "image": {
1503
1545
  if (normalizedData instanceof Uint8Array) {
1504
- mimeType = (_b = detectImageMimeType(normalizedData)) != null ? _b : mimeType;
1546
+ mediaType = (_c = detectMediaType({
1547
+ data: normalizedData,
1548
+ signatures: imageMediaTypeSignatures
1549
+ })) != null ? _c : mediaType;
1505
1550
  }
1506
1551
  return {
1507
- type: "image",
1508
- image: normalizedData,
1509
- mimeType,
1510
- providerOptions: (_c = part.providerOptions) != null ? _c : part.experimental_providerMetadata
1552
+ type: "file",
1553
+ mediaType: mediaType != null ? mediaType : "image/*",
1554
+ // any image
1555
+ filename: void 0,
1556
+ data: normalizedData instanceof Uint8Array ? (0, import_provider_utils4.convertUint8ArrayToBase64)(normalizedData) : normalizedData,
1557
+ providerOptions: (_d = part.providerOptions) != null ? _d : part.experimental_providerMetadata
1511
1558
  };
1512
1559
  }
1513
1560
  case "file": {
1514
- if (mimeType == null) {
1515
- throw new Error(`Mime type is missing for file part`);
1561
+ if (mediaType == null) {
1562
+ throw new Error(`Media type is missing for file part`);
1516
1563
  }
1517
1564
  return {
1518
1565
  type: "file",
1519
- data: normalizedData instanceof Uint8Array ? convertDataContentToBase64String(normalizedData) : normalizedData,
1566
+ mediaType,
1520
1567
  filename: part.filename,
1521
- mimeType,
1522
- providerOptions: (_d = part.providerOptions) != null ? _d : part.experimental_providerMetadata
1568
+ data: normalizedData instanceof Uint8Array ? convertDataContentToBase64String(normalizedData) : normalizedData,
1569
+ providerOptions: (_e = part.providerOptions) != null ? _e : part.experimental_providerMetadata
1523
1570
  };
1524
1571
  }
1525
1572
  }
@@ -1621,7 +1668,7 @@ function prepareCallSettings({
1621
1668
 
1622
1669
  // core/prompt/standardize-prompt.ts
1623
1670
  var import_provider10 = require("@ai-sdk/provider");
1624
- var import_provider_utils4 = require("@ai-sdk/provider-utils");
1671
+ var import_provider_utils5 = require("@ai-sdk/provider-utils");
1625
1672
  var import_zod7 = require("zod");
1626
1673
 
1627
1674
  // core/prompt/attachments-to-parts.ts
@@ -1649,7 +1696,7 @@ function attachmentsToParts(attachments) {
1649
1696
  parts.push({
1650
1697
  type: "file",
1651
1698
  data: url,
1652
- mimeType: attachment.contentType
1699
+ mediaType: attachment.contentType
1653
1700
  });
1654
1701
  }
1655
1702
  break;
@@ -1657,14 +1704,14 @@ function attachmentsToParts(attachments) {
1657
1704
  case "data:": {
1658
1705
  let header;
1659
1706
  let base64Content;
1660
- let mimeType;
1707
+ let mediaType;
1661
1708
  try {
1662
1709
  [header, base64Content] = attachment.url.split(",");
1663
- mimeType = header.split(";")[0].split(":")[1];
1710
+ mediaType = header.split(";")[0].split(":")[1];
1664
1711
  } catch (error) {
1665
1712
  throw new Error(`Error processing data URL: ${attachment.url}`);
1666
1713
  }
1667
- if (mimeType == null || base64Content == null) {
1714
+ if (mediaType == null || base64Content == null) {
1668
1715
  throw new Error(`Invalid data URL format: ${attachment.url}`);
1669
1716
  }
1670
1717
  if ((_b = attachment.contentType) == null ? void 0 : _b.startsWith("image/")) {
@@ -1688,7 +1735,7 @@ function attachmentsToParts(attachments) {
1688
1735
  parts.push({
1689
1736
  type: "file",
1690
1737
  data: base64Content,
1691
- mimeType: attachment.contentType
1738
+ mediaType: attachment.contentType
1692
1739
  });
1693
1740
  }
1694
1741
  break;
@@ -1763,14 +1810,23 @@ function convertToCoreMessages(messages, options) {
1763
1810
  case "assistant": {
1764
1811
  if (message.parts != null) {
1765
1812
  let processBlock2 = function() {
1813
+ var _a18;
1766
1814
  const content2 = [];
1767
1815
  for (const part of block) {
1768
1816
  switch (part.type) {
1769
- case "file":
1770
1817
  case "text": {
1771
1818
  content2.push(part);
1772
1819
  break;
1773
1820
  }
1821
+ case "file": {
1822
+ content2.push({
1823
+ type: "file",
1824
+ data: part.data,
1825
+ mediaType: (_a18 = part.mediaType) != null ? _a18 : part.mimeType
1826
+ // TODO migration, remove
1827
+ });
1828
+ break;
1829
+ }
1774
1830
  case "reasoning": {
1775
1831
  for (const detail of part.details) {
1776
1832
  switch (detail.type) {
@@ -2027,7 +2083,7 @@ var toolResultContentSchema = import_zod4.z.array(
2027
2083
  import_zod4.z.object({
2028
2084
  type: import_zod4.z.literal("image"),
2029
2085
  data: import_zod4.z.string(),
2030
- mimeType: import_zod4.z.string().optional()
2086
+ mediaType: import_zod4.z.string().optional()
2031
2087
  })
2032
2088
  ])
2033
2089
  );
@@ -2042,6 +2098,7 @@ var textPartSchema = import_zod5.z.object({
2042
2098
  var imagePartSchema = import_zod5.z.object({
2043
2099
  type: import_zod5.z.literal("image"),
2044
2100
  image: import_zod5.z.union([dataContentSchema, import_zod5.z.instanceof(URL)]),
2101
+ mediaType: import_zod5.z.string().optional(),
2045
2102
  mimeType: import_zod5.z.string().optional(),
2046
2103
  providerOptions: providerMetadataSchema.optional(),
2047
2104
  experimental_providerMetadata: providerMetadataSchema.optional()
@@ -2050,7 +2107,8 @@ var filePartSchema = import_zod5.z.object({
2050
2107
  type: import_zod5.z.literal("file"),
2051
2108
  data: import_zod5.z.union([dataContentSchema, import_zod5.z.instanceof(URL)]),
2052
2109
  filename: import_zod5.z.string().optional(),
2053
- mimeType: import_zod5.z.string(),
2110
+ mediaType: import_zod5.z.string(),
2111
+ mimeType: import_zod5.z.string().optional(),
2054
2112
  providerOptions: providerMetadataSchema.optional(),
2055
2113
  experimental_providerMetadata: providerMetadataSchema.optional()
2056
2114
  });
@@ -2189,7 +2247,7 @@ function standardizePrompt({
2189
2247
  message: "messages must not be empty"
2190
2248
  });
2191
2249
  }
2192
- const validationResult = (0, import_provider_utils4.safeValidateTypes)({
2250
+ const validationResult = (0, import_provider_utils5.safeValidateTypes)({
2193
2251
  value: messages,
2194
2252
  schema: import_zod7.z.array(coreMessageSchema)
2195
2253
  });
@@ -2250,7 +2308,7 @@ function injectJsonInstruction({
2250
2308
 
2251
2309
  // core/generate-object/output-strategy.ts
2252
2310
  var import_provider11 = require("@ai-sdk/provider");
2253
- var import_provider_utils5 = require("@ai-sdk/provider-utils");
2311
+ var import_provider_utils6 = require("@ai-sdk/provider-utils");
2254
2312
  var import_ui_utils2 = require("@ai-sdk/ui-utils");
2255
2313
 
2256
2314
  // core/util/async-iterable-stream.ts
@@ -2307,7 +2365,7 @@ var objectOutputStrategy = (schema) => ({
2307
2365
  };
2308
2366
  },
2309
2367
  validateFinalResult(value) {
2310
- return (0, import_provider_utils5.safeValidateTypes)({ value, schema });
2368
+ return (0, import_provider_utils6.safeValidateTypes)({ value, schema });
2311
2369
  },
2312
2370
  createElementStream() {
2313
2371
  throw new import_provider11.UnsupportedFunctionalityError({
@@ -2346,7 +2404,7 @@ var arrayOutputStrategy = (schema) => {
2346
2404
  const resultArray = [];
2347
2405
  for (let i = 0; i < inputArray.length; i++) {
2348
2406
  const element = inputArray[i];
2349
- const result = (0, import_provider_utils5.safeValidateTypes)({ value: element, schema });
2407
+ const result = (0, import_provider_utils6.safeValidateTypes)({ value: element, schema });
2350
2408
  if (i === inputArray.length - 1 && !isFinalDelta) {
2351
2409
  continue;
2352
2410
  }
@@ -2387,7 +2445,7 @@ var arrayOutputStrategy = (schema) => {
2387
2445
  }
2388
2446
  const inputArray = value.elements;
2389
2447
  for (const element of inputArray) {
2390
- const result = (0, import_provider_utils5.safeValidateTypes)({ value: element, schema });
2448
+ const result = (0, import_provider_utils6.safeValidateTypes)({ value: element, schema });
2391
2449
  if (!result.success) {
2392
2450
  return result;
2393
2451
  }
@@ -2620,7 +2678,7 @@ function validateObjectGenerationInput({
2620
2678
  }
2621
2679
 
2622
2680
  // core/generate-object/generate-object.ts
2623
- var originalGenerateId = (0, import_provider_utils6.createIdGenerator)({ prefix: "aiobj", size: 24 });
2681
+ var originalGenerateId = (0, import_provider_utils7.createIdGenerator)({ prefix: "aiobj", size: 24 });
2624
2682
  async function generateObject({
2625
2683
  model,
2626
2684
  enum: enumValues,
@@ -2940,7 +2998,7 @@ async function generateObject({
2940
2998
  }
2941
2999
  }
2942
3000
  function processResult(result2) {
2943
- const parseResult = (0, import_provider_utils6.safeParseJSON)({ text: result2 });
3001
+ const parseResult = (0, import_provider_utils7.safeParseJSON)({ text: result2 });
2944
3002
  if (!parseResult.success) {
2945
3003
  throw new NoObjectGeneratedError({
2946
3004
  message: "No object generated: could not parse the response.",
@@ -3042,7 +3100,7 @@ var DefaultGenerateObjectResult = class {
3042
3100
  };
3043
3101
 
3044
3102
  // core/generate-object/stream-object.ts
3045
- var import_provider_utils7 = require("@ai-sdk/provider-utils");
3103
+ var import_provider_utils8 = require("@ai-sdk/provider-utils");
3046
3104
  var import_ui_utils3 = require("@ai-sdk/ui-utils");
3047
3105
 
3048
3106
  // util/delayed-promise.ts
@@ -3187,7 +3245,7 @@ function now() {
3187
3245
  }
3188
3246
 
3189
3247
  // core/generate-object/stream-object.ts
3190
- var originalGenerateId2 = (0, import_provider_utils7.createIdGenerator)({ prefix: "aiobj", size: 24 });
3248
+ var originalGenerateId2 = (0, import_provider_utils8.createIdGenerator)({ prefix: "aiobj", size: 24 });
3191
3249
  function streamObject({
3192
3250
  model,
3193
3251
  schema: inputSchema,
@@ -3759,7 +3817,7 @@ var DefaultStreamObjectResult = class {
3759
3817
  };
3760
3818
 
3761
3819
  // core/generate-text/generate-text.ts
3762
- var import_provider_utils9 = require("@ai-sdk/provider-utils");
3820
+ var import_provider_utils10 = require("@ai-sdk/provider-utils");
3763
3821
 
3764
3822
  // errors/no-output-specified-error.ts
3765
3823
  var import_provider13 = require("@ai-sdk/provider");
@@ -3871,7 +3929,7 @@ function removeTextAfterLastWhitespace(text2) {
3871
3929
  }
3872
3930
 
3873
3931
  // core/generate-text/parse-tool-call.ts
3874
- var import_provider_utils8 = require("@ai-sdk/provider-utils");
3932
+ var import_provider_utils9 = require("@ai-sdk/provider-utils");
3875
3933
  var import_ui_utils5 = require("@ai-sdk/ui-utils");
3876
3934
 
3877
3935
  // errors/invalid-tool-arguments-error.ts
@@ -3997,7 +4055,7 @@ async function doParseToolCall({
3997
4055
  });
3998
4056
  }
3999
4057
  const schema = (0, import_ui_utils5.asSchema)(tool2.parameters);
4000
- const parseResult = toolCall.args.trim() === "" ? (0, import_provider_utils8.safeValidateTypes)({ value: {}, schema }) : (0, import_provider_utils8.safeParseJSON)({ text: toolCall.args, schema });
4058
+ const parseResult = toolCall.args.trim() === "" ? (0, import_provider_utils9.safeValidateTypes)({ value: {}, schema }) : (0, import_provider_utils9.safeParseJSON)({ text: toolCall.args, schema });
4001
4059
  if (parseResult.success === false) {
4002
4060
  throw new InvalidToolArgumentsError({
4003
4061
  toolName,
@@ -4041,7 +4099,7 @@ function toResponseMessages({
4041
4099
  ...files.map((file) => ({
4042
4100
  type: "file",
4043
4101
  data: file.base64,
4044
- mimeType: file.mimeType
4102
+ mediaType: file.mediaType
4045
4103
  })),
4046
4104
  { type: "text", text: text2 },
4047
4105
  ...toolCalls
@@ -4075,11 +4133,11 @@ function toResponseMessages({
4075
4133
  }
4076
4134
 
4077
4135
  // core/generate-text/generate-text.ts
4078
- var originalGenerateId3 = (0, import_provider_utils9.createIdGenerator)({
4136
+ var originalGenerateId3 = (0, import_provider_utils10.createIdGenerator)({
4079
4137
  prefix: "aitxt",
4080
4138
  size: 24
4081
4139
  });
4082
- var originalGenerateMessageId = (0, import_provider_utils9.createIdGenerator)({
4140
+ var originalGenerateMessageId = (0, import_provider_utils10.createIdGenerator)({
4083
4141
  prefix: "msg",
4084
4142
  size: 24
4085
4143
  });
@@ -4544,7 +4602,7 @@ __export(output_exports, {
4544
4602
  object: () => object,
4545
4603
  text: () => text
4546
4604
  });
4547
- var import_provider_utils10 = require("@ai-sdk/provider-utils");
4605
+ var import_provider_utils11 = require("@ai-sdk/provider-utils");
4548
4606
  var import_ui_utils6 = require("@ai-sdk/ui-utils");
4549
4607
 
4550
4608
  // errors/index.ts
@@ -4641,7 +4699,7 @@ var object = ({
4641
4699
  }
4642
4700
  },
4643
4701
  parseOutput({ text: text2 }, context) {
4644
- const parseResult = (0, import_provider_utils10.safeParseJSON)({ text: text2 });
4702
+ const parseResult = (0, import_provider_utils11.safeParseJSON)({ text: text2 });
4645
4703
  if (!parseResult.success) {
4646
4704
  throw new NoObjectGeneratedError({
4647
4705
  message: "No object generated: could not parse the response.",
@@ -4652,7 +4710,7 @@ var object = ({
4652
4710
  finishReason: context.finishReason
4653
4711
  });
4654
4712
  }
4655
- const validationResult = (0, import_provider_utils10.safeValidateTypes)({
4713
+ const validationResult = (0, import_provider_utils11.safeValidateTypes)({
4656
4714
  value: parseResult.value,
4657
4715
  schema
4658
4716
  });
@@ -4672,7 +4730,7 @@ var object = ({
4672
4730
  };
4673
4731
 
4674
4732
  // core/generate-text/smooth-stream.ts
4675
- var import_provider_utils11 = require("@ai-sdk/provider-utils");
4733
+ var import_provider_utils12 = require("@ai-sdk/provider-utils");
4676
4734
  var import_provider21 = require("@ai-sdk/provider");
4677
4735
  var CHUNKING_REGEXPS = {
4678
4736
  word: /\S+\s+/m,
@@ -4681,7 +4739,7 @@ var CHUNKING_REGEXPS = {
4681
4739
  function smoothStream({
4682
4740
  delayInMs = 10,
4683
4741
  chunking = "word",
4684
- _internal: { delay: delay2 = import_provider_utils11.delay } = {}
4742
+ _internal: { delay: delay2 = import_provider_utils12.delay } = {}
4685
4743
  } = {}) {
4686
4744
  let detectChunk;
4687
4745
  if (typeof chunking === "function") {
@@ -4742,7 +4800,7 @@ function smoothStream({
4742
4800
 
4743
4801
  // core/generate-text/stream-text.ts
4744
4802
  var import_provider22 = require("@ai-sdk/provider");
4745
- var import_provider_utils12 = require("@ai-sdk/provider-utils");
4803
+ var import_provider_utils13 = require("@ai-sdk/provider-utils");
4746
4804
  var import_ui_utils8 = require("@ai-sdk/ui-utils");
4747
4805
 
4748
4806
  // util/as-array.ts
@@ -4906,7 +4964,7 @@ function runToolsTransformation({
4906
4964
  controller.enqueue(
4907
4965
  new DefaultGeneratedFileWithType({
4908
4966
  data: chunk.data,
4909
- mimeType: chunk.mimeType
4967
+ mediaType: chunk.mediaType
4910
4968
  })
4911
4969
  );
4912
4970
  break;
@@ -5061,11 +5119,11 @@ function runToolsTransformation({
5061
5119
  }
5062
5120
 
5063
5121
  // core/generate-text/stream-text.ts
5064
- var originalGenerateId4 = (0, import_provider_utils12.createIdGenerator)({
5122
+ var originalGenerateId4 = (0, import_provider_utils13.createIdGenerator)({
5065
5123
  prefix: "aitxt",
5066
5124
  size: 24
5067
5125
  });
5068
- var originalGenerateMessageId2 = (0, import_provider_utils12.createIdGenerator)({
5126
+ var originalGenerateMessageId2 = (0, import_provider_utils13.createIdGenerator)({
5069
5127
  prefix: "msg",
5070
5128
  size: 24
5071
5129
  });
@@ -6086,7 +6144,7 @@ var DefaultStreamTextResult = class {
6086
6144
  case "file": {
6087
6145
  controller.enqueue(
6088
6146
  (0, import_ui_utils8.formatDataStreamPart)("file", {
6089
- mimeType: chunk.mimeType,
6147
+ mimeType: chunk.mediaType,
6090
6148
  data: chunk.base64
6091
6149
  })
6092
6150
  );
@@ -6290,6 +6348,70 @@ var DefaultStreamTextResult = class {
6290
6348
  }
6291
6349
  };
6292
6350
 
6351
+ // errors/no-transcript-generated-error.ts
6352
+ var import_provider23 = require("@ai-sdk/provider");
6353
+ var NoTranscriptGeneratedError = class extends import_provider23.AISDKError {
6354
+ constructor(options) {
6355
+ super({
6356
+ name: "AI_NoTranscriptGeneratedError",
6357
+ message: "No transcript generated."
6358
+ });
6359
+ this.responses = options.responses;
6360
+ }
6361
+ };
6362
+
6363
+ // core/transcribe/transcribe.ts
6364
+ async function transcribe({
6365
+ model,
6366
+ audio,
6367
+ providerOptions = {},
6368
+ maxRetries: maxRetriesArg,
6369
+ abortSignal,
6370
+ headers
6371
+ }) {
6372
+ const { retry } = prepareRetries({ maxRetries: maxRetriesArg });
6373
+ const audioData = audio instanceof URL ? (await download({ url: audio })).data : convertDataContentToUint8Array(audio);
6374
+ const result = await retry(
6375
+ () => {
6376
+ var _a17;
6377
+ return model.doGenerate({
6378
+ audio: audioData,
6379
+ abortSignal,
6380
+ headers,
6381
+ providerOptions,
6382
+ mediaType: (_a17 = detectMediaType({
6383
+ data: audioData,
6384
+ signatures: audioMediaTypeSignatures
6385
+ })) != null ? _a17 : "audio/wav"
6386
+ });
6387
+ }
6388
+ );
6389
+ if (!result.text) {
6390
+ throw new NoTranscriptGeneratedError({ responses: [result.response] });
6391
+ }
6392
+ return new DefaultTranscriptionResult({
6393
+ text: result.text,
6394
+ segments: result.segments,
6395
+ language: result.language,
6396
+ durationInSeconds: result.durationInSeconds,
6397
+ warnings: result.warnings,
6398
+ responses: [result.response],
6399
+ providerMetadata: result.providerMetadata
6400
+ });
6401
+ }
6402
+ var DefaultTranscriptionResult = class {
6403
+ constructor(options) {
6404
+ var _a17;
6405
+ this.text = options.text;
6406
+ this.segments = options.segments;
6407
+ this.language = options.language;
6408
+ this.durationInSeconds = options.durationInSeconds;
6409
+ this.warnings = options.warnings;
6410
+ this.responses = options.responses;
6411
+ this.providerMetadata = (_a17 = options.providerMetadata) != null ? _a17 : {};
6412
+ }
6413
+ };
6414
+
6293
6415
  // core/util/merge-objects.ts
6294
6416
  function mergeObjects(target, source) {
6295
6417
  if (target === void 0 && source === void 0) {
@@ -6605,13 +6727,13 @@ function appendClientMessage({
6605
6727
 
6606
6728
  // core/prompt/append-response-messages.ts
6607
6729
  var import_ui_utils9 = require("@ai-sdk/ui-utils");
6608
- var import_provider23 = require("@ai-sdk/provider");
6730
+ var import_provider24 = require("@ai-sdk/provider");
6609
6731
  function appendResponseMessages({
6610
6732
  messages,
6611
6733
  responseMessages,
6612
6734
  _internal: { currentDate = () => /* @__PURE__ */ new Date() } = {}
6613
6735
  }) {
6614
- var _a17, _b, _c, _d;
6736
+ var _a17, _b, _c, _d, _e;
6615
6737
  const clonedMessages = structuredClone(messages);
6616
6738
  for (const message of responseMessages) {
6617
6739
  const role = message.role;
@@ -6688,14 +6810,14 @@ function appendResponseMessages({
6688
6810
  break;
6689
6811
  case "file":
6690
6812
  if (part.data instanceof URL) {
6691
- throw new import_provider23.AISDKError({
6813
+ throw new import_provider24.AISDKError({
6692
6814
  name: "InvalidAssistantFileData",
6693
6815
  message: "File data cannot be a URL"
6694
6816
  });
6695
6817
  }
6696
6818
  parts.push({
6697
6819
  type: "file",
6698
- mimeType: part.mimeType,
6820
+ mediaType: (_a17 = part.mediaType) != null ? _a17 : part.mimeType,
6699
6821
  data: convertDataContentToBase64String(part.data)
6700
6822
  });
6701
6823
  break;
@@ -6706,12 +6828,12 @@ function appendResponseMessages({
6706
6828
  const maxStep = (0, import_ui_utils9.extractMaxToolInvocationStep)(
6707
6829
  lastMessage.toolInvocations
6708
6830
  );
6709
- (_a17 = lastMessage.parts) != null ? _a17 : lastMessage.parts = [];
6831
+ (_b = lastMessage.parts) != null ? _b : lastMessage.parts = [];
6710
6832
  lastMessage.content = textContent;
6711
6833
  lastMessage.reasoning = reasoningTextContent;
6712
6834
  lastMessage.parts.push(...parts);
6713
6835
  lastMessage.toolInvocations = [
6714
- ...(_b = lastMessage.toolInvocations) != null ? _b : [],
6836
+ ...(_c = lastMessage.toolInvocations) != null ? _c : [],
6715
6837
  ...getToolInvocations2(maxStep === void 0 ? 0 : maxStep + 1)
6716
6838
  ];
6717
6839
  getToolInvocations2(maxStep === void 0 ? 0 : maxStep + 1).map((call) => ({
@@ -6741,13 +6863,13 @@ function appendResponseMessages({
6741
6863
  break;
6742
6864
  }
6743
6865
  case "tool": {
6744
- (_c = lastMessage.toolInvocations) != null ? _c : lastMessage.toolInvocations = [];
6866
+ (_d = lastMessage.toolInvocations) != null ? _d : lastMessage.toolInvocations = [];
6745
6867
  if (lastMessage.role !== "assistant") {
6746
6868
  throw new Error(
6747
6869
  `Tool result must follow an assistant message: ${lastMessage.role}`
6748
6870
  );
6749
6871
  }
6750
- (_d = lastMessage.parts) != null ? _d : lastMessage.parts = [];
6872
+ (_e = lastMessage.parts) != null ? _e : lastMessage.parts = [];
6751
6873
  for (const contentPart of message.content) {
6752
6874
  const toolCall = lastMessage.toolInvocations.find(
6753
6875
  (call) => call.toolCallId === contentPart.toolCallId
@@ -6782,7 +6904,7 @@ function appendResponseMessages({
6782
6904
  }
6783
6905
 
6784
6906
  // core/registry/custom-provider.ts
6785
- var import_provider24 = require("@ai-sdk/provider");
6907
+ var import_provider25 = require("@ai-sdk/provider");
6786
6908
  function customProvider({
6787
6909
  languageModels,
6788
6910
  textEmbeddingModels,
@@ -6797,7 +6919,7 @@ function customProvider({
6797
6919
  if (fallbackProvider) {
6798
6920
  return fallbackProvider.languageModel(modelId);
6799
6921
  }
6800
- throw new import_provider24.NoSuchModelError({ modelId, modelType: "languageModel" });
6922
+ throw new import_provider25.NoSuchModelError({ modelId, modelType: "languageModel" });
6801
6923
  },
6802
6924
  textEmbeddingModel(modelId) {
6803
6925
  if (textEmbeddingModels != null && modelId in textEmbeddingModels) {
@@ -6806,7 +6928,7 @@ function customProvider({
6806
6928
  if (fallbackProvider) {
6807
6929
  return fallbackProvider.textEmbeddingModel(modelId);
6808
6930
  }
6809
- throw new import_provider24.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
6931
+ throw new import_provider25.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
6810
6932
  },
6811
6933
  imageModel(modelId) {
6812
6934
  if (imageModels != null && modelId in imageModels) {
@@ -6815,19 +6937,19 @@ function customProvider({
6815
6937
  if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {
6816
6938
  return fallbackProvider.imageModel(modelId);
6817
6939
  }
6818
- throw new import_provider24.NoSuchModelError({ modelId, modelType: "imageModel" });
6940
+ throw new import_provider25.NoSuchModelError({ modelId, modelType: "imageModel" });
6819
6941
  }
6820
6942
  };
6821
6943
  }
6822
6944
  var experimental_customProvider = customProvider;
6823
6945
 
6824
6946
  // core/registry/no-such-provider-error.ts
6825
- var import_provider25 = require("@ai-sdk/provider");
6947
+ var import_provider26 = require("@ai-sdk/provider");
6826
6948
  var name16 = "AI_NoSuchProviderError";
6827
6949
  var marker16 = `vercel.ai.error.${name16}`;
6828
6950
  var symbol16 = Symbol.for(marker16);
6829
6951
  var _a16;
6830
- var NoSuchProviderError = class extends import_provider25.NoSuchModelError {
6952
+ var NoSuchProviderError = class extends import_provider26.NoSuchModelError {
6831
6953
  constructor({
6832
6954
  modelId,
6833
6955
  modelType,
@@ -6841,13 +6963,13 @@ var NoSuchProviderError = class extends import_provider25.NoSuchModelError {
6841
6963
  this.availableProviders = availableProviders;
6842
6964
  }
6843
6965
  static isInstance(error) {
6844
- return import_provider25.AISDKError.hasMarker(error, marker16);
6966
+ return import_provider26.AISDKError.hasMarker(error, marker16);
6845
6967
  }
6846
6968
  };
6847
6969
  _a16 = symbol16;
6848
6970
 
6849
6971
  // core/registry/provider-registry.ts
6850
- var import_provider26 = require("@ai-sdk/provider");
6972
+ var import_provider27 = require("@ai-sdk/provider");
6851
6973
  function createProviderRegistry(providers, {
6852
6974
  separator = ":"
6853
6975
  } = {}) {
@@ -6886,7 +7008,7 @@ var DefaultProviderRegistry = class {
6886
7008
  splitId(id, modelType) {
6887
7009
  const index = id.indexOf(this.separator);
6888
7010
  if (index === -1) {
6889
- throw new import_provider26.NoSuchModelError({
7011
+ throw new import_provider27.NoSuchModelError({
6890
7012
  modelId: id,
6891
7013
  modelType,
6892
7014
  message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId${this.separator}modelId")`
@@ -6899,7 +7021,7 @@ var DefaultProviderRegistry = class {
6899
7021
  const [providerId, modelId] = this.splitId(id, "languageModel");
6900
7022
  const model = (_b = (_a17 = this.getProvider(providerId)).languageModel) == null ? void 0 : _b.call(_a17, modelId);
6901
7023
  if (model == null) {
6902
- throw new import_provider26.NoSuchModelError({ modelId: id, modelType: "languageModel" });
7024
+ throw new import_provider27.NoSuchModelError({ modelId: id, modelType: "languageModel" });
6903
7025
  }
6904
7026
  return model;
6905
7027
  }
@@ -6909,7 +7031,7 @@ var DefaultProviderRegistry = class {
6909
7031
  const provider = this.getProvider(providerId);
6910
7032
  const model = (_a17 = provider.textEmbeddingModel) == null ? void 0 : _a17.call(provider, modelId);
6911
7033
  if (model == null) {
6912
- throw new import_provider26.NoSuchModelError({
7034
+ throw new import_provider27.NoSuchModelError({
6913
7035
  modelId: id,
6914
7036
  modelType: "textEmbeddingModel"
6915
7037
  });
@@ -6922,7 +7044,7 @@ var DefaultProviderRegistry = class {
6922
7044
  const provider = this.getProvider(providerId);
6923
7045
  const model = (_a17 = provider.imageModel) == null ? void 0 : _a17.call(provider, modelId);
6924
7046
  if (model == null) {
6925
- throw new import_provider26.NoSuchModelError({ modelId: id, modelType: "imageModel" });
7047
+ throw new import_provider27.NoSuchModelError({ modelId: id, modelType: "imageModel" });
6926
7048
  }
6927
7049
  return model;
6928
7050
  }
@@ -6937,7 +7059,7 @@ function tool(tool2) {
6937
7059
  }
6938
7060
 
6939
7061
  // core/tool/mcp/mcp-sse-transport.ts
6940
- var import_provider_utils13 = require("@ai-sdk/provider-utils");
7062
+ var import_provider_utils14 = require("@ai-sdk/provider-utils");
6941
7063
 
6942
7064
  // core/tool/mcp/json-rpc-message.ts
6943
7065
  var import_zod9 = require("zod");
@@ -7108,7 +7230,7 @@ var SseMCPTransport = class {
7108
7230
  (_b = this.onerror) == null ? void 0 : _b.call(this, error);
7109
7231
  return reject(error);
7110
7232
  }
7111
- const stream = response.body.pipeThrough(new TextDecoderStream()).pipeThrough((0, import_provider_utils13.createEventSourceParserStream)());
7233
+ const stream = response.body.pipeThrough(new TextDecoderStream()).pipeThrough((0, import_provider_utils14.createEventSourceParserStream)());
7112
7234
  const reader = stream.getReader();
7113
7235
  const processEvents = async () => {
7114
7236
  var _a18, _b2, _c2;
@@ -7515,7 +7637,7 @@ function cosineSimilarity(vector1, vector2, options) {
7515
7637
  }
7516
7638
 
7517
7639
  // core/util/simulate-readable-stream.ts
7518
- var import_provider_utils14 = require("@ai-sdk/provider-utils");
7640
+ var import_provider_utils15 = require("@ai-sdk/provider-utils");
7519
7641
  function simulateReadableStream({
7520
7642
  chunks,
7521
7643
  initialDelayInMs = 0,
@@ -7523,7 +7645,7 @@ function simulateReadableStream({
7523
7645
  _internal
7524
7646
  }) {
7525
7647
  var _a17;
7526
- const delay2 = (_a17 = _internal == null ? void 0 : _internal.delay) != null ? _a17 : import_provider_utils14.delay;
7648
+ const delay2 = (_a17 = _internal == null ? void 0 : _internal.delay) != null ? _a17 : import_provider_utils15.delay;
7527
7649
  let index = 0;
7528
7650
  return new ReadableStream({
7529
7651
  async pull(controller) {
@@ -7651,11 +7773,11 @@ __export(llamaindex_adapter_exports, {
7651
7773
  toDataStream: () => toDataStream2,
7652
7774
  toDataStreamResponse: () => toDataStreamResponse2
7653
7775
  });
7654
- var import_provider_utils16 = require("@ai-sdk/provider-utils");
7776
+ var import_provider_utils17 = require("@ai-sdk/provider-utils");
7655
7777
  var import_ui_utils13 = require("@ai-sdk/ui-utils");
7656
7778
  function toDataStreamInternal2(stream, callbacks) {
7657
7779
  const trimStart = trimStartOfStream();
7658
- return (0, import_provider_utils16.convertAsyncIteratorToReadableStream)(stream[Symbol.asyncIterator]()).pipeThrough(
7780
+ return (0, import_provider_utils17.convertAsyncIteratorToReadableStream)(stream[Symbol.asyncIterator]()).pipeThrough(
7659
7781
  new TransformStream({
7660
7782
  async transform(message, controller) {
7661
7783
  controller.enqueue(trimStart(message.delta));
@@ -7827,6 +7949,7 @@ var StreamData = class {
7827
7949
  experimental_createProviderRegistry,
7828
7950
  experimental_customProvider,
7829
7951
  experimental_generateImage,
7952
+ experimental_transcribe,
7830
7953
  experimental_wrapLanguageModel,
7831
7954
  extractReasoningMiddleware,
7832
7955
  formatDataStreamPart,