ai 5.0.26 → 5.0.27

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.mjs CHANGED
@@ -344,7 +344,7 @@ var MessageConversionError = class extends AISDKError14 {
344
344
  };
345
345
  _a13 = symbol13;
346
346
 
347
- // src/util/download-error.ts
347
+ // src/util/download/download-error.ts
348
348
  import { AISDKError as AISDKError15 } from "@ai-sdk/provider";
349
349
  var name14 = "AI_DownloadError";
350
350
  var marker14 = `vercel.ai.error.${name14}`;
@@ -596,8 +596,8 @@ function detectMediaType({
596
596
  return void 0;
597
597
  }
598
598
 
599
- // src/util/download.ts
600
- async function download({ url }) {
599
+ // src/util/download/download.ts
600
+ var download = async ({ url }) => {
601
601
  var _a17;
602
602
  const urlText = url.toString();
603
603
  try {
@@ -619,7 +619,14 @@ async function download({ url }) {
619
619
  }
620
620
  throw new DownloadError({ url: urlText, cause: error });
621
621
  }
622
- }
622
+ };
623
+
624
+ // src/util/download/download-function.ts
625
+ var createDefaultDownloadFunction = (download2 = download) => (requestedDownloads) => Promise.all(
626
+ requestedDownloads.map(
627
+ async (requestedDownload) => requestedDownload.isUrlSupportedByModel ? null : download2(requestedDownload)
628
+ )
629
+ );
623
630
 
624
631
  // src/prompt/data-content.ts
625
632
  import { AISDKError as AISDKError18 } from "@ai-sdk/provider";
@@ -720,11 +727,11 @@ function convertDataContentToUint8Array(content) {
720
727
  async function convertToLanguageModelPrompt({
721
728
  prompt,
722
729
  supportedUrls,
723
- downloadImplementation = download
730
+ download: download2 = createDefaultDownloadFunction()
724
731
  }) {
725
732
  const downloadedAssets = await downloadAssets(
726
733
  prompt.messages,
727
- downloadImplementation,
734
+ download2,
728
735
  supportedUrls
729
736
  );
730
737
  return [
@@ -846,8 +853,8 @@ function convertToLanguageModelMessage({
846
853
  }
847
854
  }
848
855
  }
849
- async function downloadAssets(messages, downloadImplementation, supportedUrls) {
850
- const urls = messages.filter((message) => message.role === "user").map((message) => message.content).filter(
856
+ async function downloadAssets(messages, download2, supportedUrls) {
857
+ const plannedDownloads = messages.filter((message) => message.role === "user").map((message) => message.content).filter(
851
858
  (content) => Array.isArray(content)
852
859
  ).flat().filter(
853
860
  (part) => part.type === "image" || part.type === "file"
@@ -863,20 +870,23 @@ async function downloadAssets(messages, downloadImplementation, supportedUrls) {
863
870
  }
864
871
  return { mediaType, data };
865
872
  }).filter(
866
- (part) => part.data instanceof URL && part.mediaType != null && !isUrlSupported({
873
+ (part) => part.data instanceof URL
874
+ ).map((part) => ({
875
+ url: part.data,
876
+ isUrlSupportedByModel: part.mediaType != null && isUrlSupported({
867
877
  url: part.data.toString(),
868
878
  mediaType: part.mediaType,
869
879
  supportedUrls
870
880
  })
871
- ).map((part) => part.data);
872
- const downloadedImages = await Promise.all(
873
- urls.map(async (url) => ({
874
- url,
875
- data: await downloadImplementation({ url })
876
- }))
877
- );
881
+ }));
882
+ const downloadedFiles = await download2(plannedDownloads);
878
883
  return Object.fromEntries(
879
- downloadedImages.map(({ url, data }) => [url.toString(), data])
884
+ downloadedFiles.filter(
885
+ (downloadedFile) => (downloadedFile == null ? void 0 : downloadedFile.data) != null
886
+ ).map(({ data, mediaType }, index) => [
887
+ plannedDownloads[index].url.toString(),
888
+ { data, mediaType }
889
+ ])
880
890
  );
881
891
  }
882
892
  function convertPartToLanguageModelPart(part, downloadedAssets) {
@@ -2044,6 +2054,7 @@ async function generateText({
2044
2054
  experimental_prepareStep,
2045
2055
  prepareStep = experimental_prepareStep,
2046
2056
  experimental_repairToolCall: repairToolCall,
2057
+ experimental_download: download2,
2047
2058
  experimental_context,
2048
2059
  _internal: {
2049
2060
  generateId: generateId3 = originalGenerateId,
@@ -2116,7 +2127,8 @@ async function generateText({
2116
2127
  system: (_a17 = prepareStepResult == null ? void 0 : prepareStepResult.system) != null ? _a17 : initialPrompt.system,
2117
2128
  messages: (_b = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _b : stepInputMessages
2118
2129
  },
2119
- supportedUrls: await model.supportedUrls
2130
+ supportedUrls: await model.supportedUrls,
2131
+ download: download2
2120
2132
  });
2121
2133
  const stepModel = resolveLanguageModel(
2122
2134
  (_c = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _c : model
@@ -4325,6 +4337,7 @@ function streamText({
4325
4337
  activeTools = experimental_activeTools,
4326
4338
  experimental_repairToolCall: repairToolCall,
4327
4339
  experimental_transform: transform,
4340
+ experimental_download: download2,
4328
4341
  includeRawChunks = false,
4329
4342
  onChunk,
4330
4343
  onError = ({ error }) => {
@@ -4369,7 +4382,8 @@ function streamText({
4369
4382
  now: now2,
4370
4383
  currentDate,
4371
4384
  generateId: generateId3,
4372
- experimental_context
4385
+ experimental_context,
4386
+ download: download2
4373
4387
  });
4374
4388
  }
4375
4389
  function createOutputTransformStream(output) {
@@ -4466,7 +4480,8 @@ var DefaultStreamTextResult = class {
4466
4480
  onFinish,
4467
4481
  onAbort,
4468
4482
  onStepFinish,
4469
- experimental_context
4483
+ experimental_context,
4484
+ download: download2
4470
4485
  }) {
4471
4486
  this._totalUsage = new DelayedPromise();
4472
4487
  this._finishReason = new DelayedPromise();
@@ -4788,7 +4803,8 @@ var DefaultStreamTextResult = class {
4788
4803
  system: (_a17 = prepareStepResult == null ? void 0 : prepareStepResult.system) != null ? _a17 : initialPrompt.system,
4789
4804
  messages: (_b = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _b : stepInputMessages
4790
4805
  },
4791
- supportedUrls: await model.supportedUrls
4806
+ supportedUrls: await model.supportedUrls,
4807
+ download: download2
4792
4808
  });
4793
4809
  const stepModel = resolveLanguageModel(
4794
4810
  (_c = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _c : model
@@ -6562,6 +6578,7 @@ async function generateObject(options) {
6562
6578
  headers,
6563
6579
  experimental_repairText: repairText,
6564
6580
  experimental_telemetry: telemetry,
6581
+ experimental_download: download2,
6565
6582
  providerOptions,
6566
6583
  _internal: {
6567
6584
  generateId: generateId3 = originalGenerateId3,
@@ -6639,7 +6656,8 @@ async function generateObject(options) {
6639
6656
  });
6640
6657
  const promptMessages = await convertToLanguageModelPrompt({
6641
6658
  prompt: standardizedPrompt,
6642
- supportedUrls: await model.supportedUrls
6659
+ supportedUrls: await model.supportedUrls,
6660
+ download: download2
6643
6661
  });
6644
6662
  const generateResult = await retry(
6645
6663
  () => recordSpan({
@@ -6954,6 +6972,7 @@ function streamObject(options) {
6954
6972
  headers,
6955
6973
  experimental_repairText: repairText,
6956
6974
  experimental_telemetry: telemetry,
6975
+ experimental_download: download2,
6957
6976
  providerOptions,
6958
6977
  onError = ({ error }) => {
6959
6978
  console.error(error);
@@ -7001,6 +7020,7 @@ function streamObject(options) {
7001
7020
  repairText,
7002
7021
  onError,
7003
7022
  onFinish,
7023
+ download: download2,
7004
7024
  generateId: generateId3,
7005
7025
  currentDate,
7006
7026
  now: now2
@@ -7024,6 +7044,7 @@ var DefaultStreamObjectResult = class {
7024
7044
  repairText,
7025
7045
  onError,
7026
7046
  onFinish,
7047
+ download: download2,
7027
7048
  generateId: generateId3,
7028
7049
  currentDate,
7029
7050
  now: now2
@@ -7097,7 +7118,8 @@ var DefaultStreamObjectResult = class {
7097
7118
  ...prepareCallSettings(settings),
7098
7119
  prompt: await convertToLanguageModelPrompt({
7099
7120
  prompt: standardizedPrompt,
7100
- supportedUrls: await model.supportedUrls
7121
+ supportedUrls: await model.supportedUrls,
7122
+ download: download2
7101
7123
  }),
7102
7124
  providerOptions,
7103
7125
  abortSignal,