ai 4.3.7 → 4.3.9

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # ai
2
2
 
3
+ ## 4.3.9
4
+
5
+ ### Patch Changes
6
+
7
+ - b69a253: fix(utils/detect-mimetype): add support for detecting id3 tags
8
+
9
+ ## 4.3.8
10
+
11
+ ### Patch Changes
12
+
13
+ - 6e8a73b: feat(providers/fal): add transcribe
14
+
3
15
  ## 4.3.7
4
16
 
5
17
  ### Patch Changes
package/dist/index.js CHANGED
@@ -63,7 +63,7 @@ __export(streams_exports, {
63
63
  cosineSimilarity: () => cosineSimilarity,
64
64
  createDataStream: () => createDataStream,
65
65
  createDataStreamResponse: () => createDataStreamResponse,
66
- createIdGenerator: () => import_provider_utils15.createIdGenerator,
66
+ createIdGenerator: () => import_provider_utils16.createIdGenerator,
67
67
  createProviderRegistry: () => createProviderRegistry,
68
68
  customProvider: () => customProvider,
69
69
  defaultSettingsMiddleware: () => defaultSettingsMiddleware,
@@ -79,7 +79,7 @@ __export(streams_exports, {
79
79
  extractReasoningMiddleware: () => extractReasoningMiddleware,
80
80
  formatAssistantStreamPart: () => import_ui_utils11.formatAssistantStreamPart,
81
81
  formatDataStreamPart: () => import_ui_utils11.formatDataStreamPart,
82
- generateId: () => import_provider_utils15.generateId,
82
+ generateId: () => import_provider_utils16.generateId,
83
83
  generateObject: () => generateObject,
84
84
  generateText: () => generateText,
85
85
  jsonSchema: () => import_ui_utils11.jsonSchema,
@@ -100,7 +100,7 @@ __export(streams_exports, {
100
100
  module.exports = __toCommonJS(streams_exports);
101
101
 
102
102
  // core/index.ts
103
- var import_provider_utils15 = require("@ai-sdk/provider-utils");
103
+ var import_provider_utils16 = require("@ai-sdk/provider-utils");
104
104
  var import_ui_utils11 = require("@ai-sdk/ui-utils");
105
105
 
106
106
  // core/data-stream/create-data-stream.ts
@@ -945,6 +945,7 @@ var DefaultGeneratedFileWithType = class extends DefaultGeneratedFile {
945
945
  };
946
946
 
947
947
  // core/util/detect-mimetype.ts
948
+ var import_provider_utils3 = require("@ai-sdk/provider-utils");
948
949
  var imageMimeTypeSignatures = [
949
950
  {
950
951
  mimeType: "image/gif",
@@ -1050,12 +1051,26 @@ var audioMimeTypeSignatures = [
1050
1051
  base64Prefix: "ZnR5cA"
1051
1052
  }
1052
1053
  ];
1054
+ var stripID3 = (data) => {
1055
+ const bytes = typeof data === "string" ? (0, import_provider_utils3.convertBase64ToUint8Array)(data) : data;
1056
+ const id3Size = (bytes[6] & 127) << 21 | (bytes[7] & 127) << 14 | (bytes[8] & 127) << 7 | bytes[9] & 127;
1057
+ return bytes.slice(id3Size + 10);
1058
+ };
1059
+ function stripID3TagsIfPresent(data) {
1060
+ const hasId3 = typeof data === "string" && data.startsWith("SUQz") || typeof data !== "string" && data.length > 10 && data[0] === 73 && // 'I'
1061
+ data[1] === 68 && // 'D'
1062
+ data[2] === 51;
1063
+ return hasId3 ? stripID3(data) : data;
1064
+ }
1053
1065
  function detectMimeType({
1054
1066
  data,
1055
1067
  signatures
1056
1068
  }) {
1069
+ const processedData = stripID3TagsIfPresent(data);
1057
1070
  for (const signature of signatures) {
1058
- if (typeof data === "string" ? data.startsWith(signature.base64Prefix) : data.length >= signature.bytesPrefix.length && signature.bytesPrefix.every((byte, index) => data[index] === byte)) {
1071
+ if (typeof processedData === "string" ? processedData.startsWith(signature.base64Prefix) : processedData.length >= signature.bytesPrefix.length && signature.bytesPrefix.every(
1072
+ (byte, index) => processedData[index] === byte
1073
+ )) {
1059
1074
  return signature.mimeType;
1060
1075
  }
1061
1076
  }
@@ -1141,7 +1156,7 @@ var DefaultGenerateImageResult = class {
1141
1156
 
1142
1157
  // core/generate-object/generate-object.ts
1143
1158
  var import_provider12 = require("@ai-sdk/provider");
1144
- var import_provider_utils6 = require("@ai-sdk/provider-utils");
1159
+ var import_provider_utils7 = require("@ai-sdk/provider-utils");
1145
1160
 
1146
1161
  // errors/no-object-generated-error.ts
1147
1162
  var import_provider5 = require("@ai-sdk/provider");
@@ -1223,7 +1238,7 @@ async function download({ url }) {
1223
1238
  }
1224
1239
 
1225
1240
  // core/prompt/data-content.ts
1226
- var import_provider_utils3 = require("@ai-sdk/provider-utils");
1241
+ var import_provider_utils4 = require("@ai-sdk/provider-utils");
1227
1242
 
1228
1243
  // core/prompt/invalid-data-content-error.ts
1229
1244
  var import_provider7 = require("@ai-sdk/provider");
@@ -1267,9 +1282,9 @@ function convertDataContentToBase64String(content) {
1267
1282
  return content;
1268
1283
  }
1269
1284
  if (content instanceof ArrayBuffer) {
1270
- return (0, import_provider_utils3.convertUint8ArrayToBase64)(new Uint8Array(content));
1285
+ return (0, import_provider_utils4.convertUint8ArrayToBase64)(new Uint8Array(content));
1271
1286
  }
1272
- return (0, import_provider_utils3.convertUint8ArrayToBase64)(content);
1287
+ return (0, import_provider_utils4.convertUint8ArrayToBase64)(content);
1273
1288
  }
1274
1289
  function convertDataContentToUint8Array(content) {
1275
1290
  if (content instanceof Uint8Array) {
@@ -1277,7 +1292,7 @@ function convertDataContentToUint8Array(content) {
1277
1292
  }
1278
1293
  if (typeof content === "string") {
1279
1294
  try {
1280
- return (0, import_provider_utils3.convertBase64ToUint8Array)(content);
1295
+ return (0, import_provider_utils4.convertBase64ToUint8Array)(content);
1281
1296
  } catch (error) {
1282
1297
  throw new InvalidDataContentError({
1283
1298
  message: "Invalid data content. Content string is not a base64-encoded media.",
@@ -1667,7 +1682,7 @@ function prepareCallSettings({
1667
1682
 
1668
1683
  // core/prompt/standardize-prompt.ts
1669
1684
  var import_provider10 = require("@ai-sdk/provider");
1670
- var import_provider_utils4 = require("@ai-sdk/provider-utils");
1685
+ var import_provider_utils5 = require("@ai-sdk/provider-utils");
1671
1686
  var import_zod7 = require("zod");
1672
1687
 
1673
1688
  // core/prompt/attachments-to-parts.ts
@@ -2235,7 +2250,7 @@ function standardizePrompt({
2235
2250
  message: "messages must not be empty"
2236
2251
  });
2237
2252
  }
2238
- const validationResult = (0, import_provider_utils4.safeValidateTypes)({
2253
+ const validationResult = (0, import_provider_utils5.safeValidateTypes)({
2239
2254
  value: messages,
2240
2255
  schema: import_zod7.z.array(coreMessageSchema)
2241
2256
  });
@@ -2296,7 +2311,7 @@ function injectJsonInstruction({
2296
2311
 
2297
2312
  // core/generate-object/output-strategy.ts
2298
2313
  var import_provider11 = require("@ai-sdk/provider");
2299
- var import_provider_utils5 = require("@ai-sdk/provider-utils");
2314
+ var import_provider_utils6 = require("@ai-sdk/provider-utils");
2300
2315
  var import_ui_utils2 = require("@ai-sdk/ui-utils");
2301
2316
 
2302
2317
  // core/util/async-iterable-stream.ts
@@ -2353,7 +2368,7 @@ var objectOutputStrategy = (schema) => ({
2353
2368
  };
2354
2369
  },
2355
2370
  validateFinalResult(value) {
2356
- return (0, import_provider_utils5.safeValidateTypes)({ value, schema });
2371
+ return (0, import_provider_utils6.safeValidateTypes)({ value, schema });
2357
2372
  },
2358
2373
  createElementStream() {
2359
2374
  throw new import_provider11.UnsupportedFunctionalityError({
@@ -2392,7 +2407,7 @@ var arrayOutputStrategy = (schema) => {
2392
2407
  const resultArray = [];
2393
2408
  for (let i = 0; i < inputArray.length; i++) {
2394
2409
  const element = inputArray[i];
2395
- const result = (0, import_provider_utils5.safeValidateTypes)({ value: element, schema });
2410
+ const result = (0, import_provider_utils6.safeValidateTypes)({ value: element, schema });
2396
2411
  if (i === inputArray.length - 1 && !isFinalDelta) {
2397
2412
  continue;
2398
2413
  }
@@ -2433,7 +2448,7 @@ var arrayOutputStrategy = (schema) => {
2433
2448
  }
2434
2449
  const inputArray = value.elements;
2435
2450
  for (const element of inputArray) {
2436
- const result = (0, import_provider_utils5.safeValidateTypes)({ value: element, schema });
2451
+ const result = (0, import_provider_utils6.safeValidateTypes)({ value: element, schema });
2437
2452
  if (!result.success) {
2438
2453
  return result;
2439
2454
  }
@@ -2666,7 +2681,7 @@ function validateObjectGenerationInput({
2666
2681
  }
2667
2682
 
2668
2683
  // core/generate-object/generate-object.ts
2669
- var originalGenerateId = (0, import_provider_utils6.createIdGenerator)({ prefix: "aiobj", size: 24 });
2684
+ var originalGenerateId = (0, import_provider_utils7.createIdGenerator)({ prefix: "aiobj", size: 24 });
2670
2685
  async function generateObject({
2671
2686
  model,
2672
2687
  enum: enumValues,
@@ -2986,7 +3001,7 @@ async function generateObject({
2986
3001
  }
2987
3002
  }
2988
3003
  function processResult(result2) {
2989
- const parseResult = (0, import_provider_utils6.safeParseJSON)({ text: result2 });
3004
+ const parseResult = (0, import_provider_utils7.safeParseJSON)({ text: result2 });
2990
3005
  if (!parseResult.success) {
2991
3006
  throw new NoObjectGeneratedError({
2992
3007
  message: "No object generated: could not parse the response.",
@@ -3088,7 +3103,7 @@ var DefaultGenerateObjectResult = class {
3088
3103
  };
3089
3104
 
3090
3105
  // core/generate-object/stream-object.ts
3091
- var import_provider_utils7 = require("@ai-sdk/provider-utils");
3106
+ var import_provider_utils8 = require("@ai-sdk/provider-utils");
3092
3107
  var import_ui_utils3 = require("@ai-sdk/ui-utils");
3093
3108
 
3094
3109
  // util/delayed-promise.ts
@@ -3233,7 +3248,7 @@ function now() {
3233
3248
  }
3234
3249
 
3235
3250
  // core/generate-object/stream-object.ts
3236
- var originalGenerateId2 = (0, import_provider_utils7.createIdGenerator)({ prefix: "aiobj", size: 24 });
3251
+ var originalGenerateId2 = (0, import_provider_utils8.createIdGenerator)({ prefix: "aiobj", size: 24 });
3237
3252
  function streamObject({
3238
3253
  model,
3239
3254
  schema: inputSchema,
@@ -3805,7 +3820,7 @@ var DefaultStreamObjectResult = class {
3805
3820
  };
3806
3821
 
3807
3822
  // core/generate-text/generate-text.ts
3808
- var import_provider_utils9 = require("@ai-sdk/provider-utils");
3823
+ var import_provider_utils10 = require("@ai-sdk/provider-utils");
3809
3824
 
3810
3825
  // errors/no-output-specified-error.ts
3811
3826
  var import_provider13 = require("@ai-sdk/provider");
@@ -3917,7 +3932,7 @@ function removeTextAfterLastWhitespace(text2) {
3917
3932
  }
3918
3933
 
3919
3934
  // core/generate-text/parse-tool-call.ts
3920
- var import_provider_utils8 = require("@ai-sdk/provider-utils");
3935
+ var import_provider_utils9 = require("@ai-sdk/provider-utils");
3921
3936
  var import_ui_utils5 = require("@ai-sdk/ui-utils");
3922
3937
 
3923
3938
  // errors/invalid-tool-arguments-error.ts
@@ -4043,7 +4058,7 @@ async function doParseToolCall({
4043
4058
  });
4044
4059
  }
4045
4060
  const schema = (0, import_ui_utils5.asSchema)(tool2.parameters);
4046
- const parseResult = toolCall.args.trim() === "" ? (0, import_provider_utils8.safeValidateTypes)({ value: {}, schema }) : (0, import_provider_utils8.safeParseJSON)({ text: toolCall.args, schema });
4061
+ const parseResult = toolCall.args.trim() === "" ? (0, import_provider_utils9.safeValidateTypes)({ value: {}, schema }) : (0, import_provider_utils9.safeParseJSON)({ text: toolCall.args, schema });
4047
4062
  if (parseResult.success === false) {
4048
4063
  throw new InvalidToolArgumentsError({
4049
4064
  toolName,
@@ -4134,11 +4149,11 @@ function toResponseMessages({
4134
4149
  }
4135
4150
 
4136
4151
  // core/generate-text/generate-text.ts
4137
- var originalGenerateId3 = (0, import_provider_utils9.createIdGenerator)({
4152
+ var originalGenerateId3 = (0, import_provider_utils10.createIdGenerator)({
4138
4153
  prefix: "aitxt",
4139
4154
  size: 24
4140
4155
  });
4141
- var originalGenerateMessageId = (0, import_provider_utils9.createIdGenerator)({
4156
+ var originalGenerateMessageId = (0, import_provider_utils10.createIdGenerator)({
4142
4157
  prefix: "msg",
4143
4158
  size: 24
4144
4159
  });
@@ -4604,7 +4619,7 @@ __export(output_exports, {
4604
4619
  object: () => object,
4605
4620
  text: () => text
4606
4621
  });
4607
- var import_provider_utils10 = require("@ai-sdk/provider-utils");
4622
+ var import_provider_utils11 = require("@ai-sdk/provider-utils");
4608
4623
  var import_ui_utils6 = require("@ai-sdk/ui-utils");
4609
4624
 
4610
4625
  // errors/index.ts
@@ -4701,7 +4716,7 @@ var object = ({
4701
4716
  }
4702
4717
  },
4703
4718
  parseOutput({ text: text2 }, context) {
4704
- const parseResult = (0, import_provider_utils10.safeParseJSON)({ text: text2 });
4719
+ const parseResult = (0, import_provider_utils11.safeParseJSON)({ text: text2 });
4705
4720
  if (!parseResult.success) {
4706
4721
  throw new NoObjectGeneratedError({
4707
4722
  message: "No object generated: could not parse the response.",
@@ -4712,7 +4727,7 @@ var object = ({
4712
4727
  finishReason: context.finishReason
4713
4728
  });
4714
4729
  }
4715
- const validationResult = (0, import_provider_utils10.safeValidateTypes)({
4730
+ const validationResult = (0, import_provider_utils11.safeValidateTypes)({
4716
4731
  value: parseResult.value,
4717
4732
  schema
4718
4733
  });
@@ -4732,7 +4747,7 @@ var object = ({
4732
4747
  };
4733
4748
 
4734
4749
  // core/generate-text/smooth-stream.ts
4735
- var import_provider_utils11 = require("@ai-sdk/provider-utils");
4750
+ var import_provider_utils12 = require("@ai-sdk/provider-utils");
4736
4751
  var import_provider21 = require("@ai-sdk/provider");
4737
4752
  var CHUNKING_REGEXPS = {
4738
4753
  word: /\S+\s+/m,
@@ -4741,7 +4756,7 @@ var CHUNKING_REGEXPS = {
4741
4756
  function smoothStream({
4742
4757
  delayInMs = 10,
4743
4758
  chunking = "word",
4744
- _internal: { delay: delay2 = import_provider_utils11.delay } = {}
4759
+ _internal: { delay: delay2 = import_provider_utils12.delay } = {}
4745
4760
  } = {}) {
4746
4761
  let detectChunk;
4747
4762
  if (typeof chunking === "function") {
@@ -4802,7 +4817,7 @@ function smoothStream({
4802
4817
 
4803
4818
  // core/generate-text/stream-text.ts
4804
4819
  var import_provider22 = require("@ai-sdk/provider");
4805
- var import_provider_utils12 = require("@ai-sdk/provider-utils");
4820
+ var import_provider_utils13 = require("@ai-sdk/provider-utils");
4806
4821
  var import_ui_utils8 = require("@ai-sdk/ui-utils");
4807
4822
 
4808
4823
  // util/as-array.ts
@@ -5121,11 +5136,11 @@ function runToolsTransformation({
5121
5136
  }
5122
5137
 
5123
5138
  // core/generate-text/stream-text.ts
5124
- var originalGenerateId4 = (0, import_provider_utils12.createIdGenerator)({
5139
+ var originalGenerateId4 = (0, import_provider_utils13.createIdGenerator)({
5125
5140
  prefix: "aitxt",
5126
5141
  size: 24
5127
5142
  });
5128
- var originalGenerateMessageId2 = (0, import_provider_utils12.createIdGenerator)({
5143
+ var originalGenerateMessageId2 = (0, import_provider_utils13.createIdGenerator)({
5129
5144
  prefix: "msg",
5130
5145
  size: 24
5131
5146
  });
@@ -7150,7 +7165,7 @@ function tool(tool2) {
7150
7165
  }
7151
7166
 
7152
7167
  // core/tool/mcp/mcp-sse-transport.ts
7153
- var import_provider_utils13 = require("@ai-sdk/provider-utils");
7168
+ var import_provider_utils14 = require("@ai-sdk/provider-utils");
7154
7169
 
7155
7170
  // core/tool/mcp/json-rpc-message.ts
7156
7171
  var import_zod9 = require("zod");
@@ -7321,7 +7336,7 @@ var SseMCPTransport = class {
7321
7336
  (_b = this.onerror) == null ? void 0 : _b.call(this, error);
7322
7337
  return reject(error);
7323
7338
  }
7324
- const stream = response.body.pipeThrough(new TextDecoderStream()).pipeThrough((0, import_provider_utils13.createEventSourceParserStream)());
7339
+ const stream = response.body.pipeThrough(new TextDecoderStream()).pipeThrough((0, import_provider_utils14.createEventSourceParserStream)());
7325
7340
  const reader = stream.getReader();
7326
7341
  const processEvents = async () => {
7327
7342
  var _a18, _b2, _c2;
@@ -7733,7 +7748,7 @@ function cosineSimilarity(vector1, vector2, options) {
7733
7748
  }
7734
7749
 
7735
7750
  // core/util/simulate-readable-stream.ts
7736
- var import_provider_utils14 = require("@ai-sdk/provider-utils");
7751
+ var import_provider_utils15 = require("@ai-sdk/provider-utils");
7737
7752
  function simulateReadableStream({
7738
7753
  chunks,
7739
7754
  initialDelayInMs = 0,
@@ -7741,7 +7756,7 @@ function simulateReadableStream({
7741
7756
  _internal
7742
7757
  }) {
7743
7758
  var _a17;
7744
- const delay2 = (_a17 = _internal == null ? void 0 : _internal.delay) != null ? _a17 : import_provider_utils14.delay;
7759
+ const delay2 = (_a17 = _internal == null ? void 0 : _internal.delay) != null ? _a17 : import_provider_utils15.delay;
7745
7760
  let index = 0;
7746
7761
  return new ReadableStream({
7747
7762
  async pull(controller) {
@@ -7965,11 +7980,11 @@ __export(llamaindex_adapter_exports, {
7965
7980
  toDataStream: () => toDataStream2,
7966
7981
  toDataStreamResponse: () => toDataStreamResponse2
7967
7982
  });
7968
- var import_provider_utils16 = require("@ai-sdk/provider-utils");
7983
+ var import_provider_utils17 = require("@ai-sdk/provider-utils");
7969
7984
  var import_ui_utils14 = require("@ai-sdk/ui-utils");
7970
7985
  function toDataStreamInternal2(stream, callbacks) {
7971
7986
  const trimStart = trimStartOfStream();
7972
- return (0, import_provider_utils16.convertAsyncIteratorToReadableStream)(stream[Symbol.asyncIterator]()).pipeThrough(
7987
+ return (0, import_provider_utils17.convertAsyncIteratorToReadableStream)(stream[Symbol.asyncIterator]()).pipeThrough(
7973
7988
  new TransformStream({
7974
7989
  async transform(message, controller) {
7975
7990
  controller.enqueue(trimStart(message.delta));