ai 5.0.75 → 5.0.77

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
@@ -696,7 +696,7 @@ import {
696
696
  } from "@ai-sdk/provider-utils";
697
697
 
698
698
  // src/version.ts
699
- var VERSION = true ? "5.0.75" : "0.0.0-test";
699
+ var VERSION = true ? "5.0.77" : "0.0.0-test";
700
700
 
701
701
  // src/util/download/download.ts
702
702
  var download = async ({ url }) => {
@@ -3398,6 +3398,18 @@ async function parsePartialJson(jsonText) {
3398
3398
  }
3399
3399
 
3400
3400
  // src/ui/ui-messages.ts
3401
+ function isDataUIPart(part) {
3402
+ return part.type.startsWith("data-");
3403
+ }
3404
+ function isTextUIPart(part) {
3405
+ return part.type === "text";
3406
+ }
3407
+ function isFileUIPart(part) {
3408
+ return part.type === "file";
3409
+ }
3410
+ function isReasoningUIPart(part) {
3411
+ return part.type === "reasoning";
3412
+ }
3401
3413
  function isToolUIPart(part) {
3402
3414
  return part.type.startsWith("tool-");
3403
3415
  }
@@ -5778,7 +5790,9 @@ function convertToModelMessages(messages, options) {
5778
5790
  for (const message of messages) {
5779
5791
  switch (message.role) {
5780
5792
  case "system": {
5781
- const textParts = message.parts.filter((part) => part.type === "text");
5793
+ const textParts = message.parts.filter(
5794
+ (part) => part.type === "text"
5795
+ );
5782
5796
  const providerMetadata = textParts.reduce((acc, part) => {
5783
5797
  if (part.providerMetadata != null) {
5784
5798
  return { ...acc, ...part.providerMetadata };
@@ -5795,60 +5809,63 @@ function convertToModelMessages(messages, options) {
5795
5809
  case "user": {
5796
5810
  modelMessages.push({
5797
5811
  role: "user",
5798
- content: message.parts.filter(
5799
- (part) => part.type === "text" || part.type === "file"
5800
- ).map((part) => {
5801
- switch (part.type) {
5802
- case "text":
5803
- return {
5804
- type: "text",
5805
- text: part.text,
5806
- ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
5807
- };
5808
- case "file":
5809
- return {
5810
- type: "file",
5811
- mediaType: part.mediaType,
5812
- filename: part.filename,
5813
- data: part.url,
5814
- ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
5815
- };
5816
- default:
5817
- return part;
5812
+ content: message.parts.map((part) => {
5813
+ var _a17;
5814
+ if (isTextUIPart(part)) {
5815
+ return {
5816
+ type: "text",
5817
+ text: part.text,
5818
+ ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
5819
+ };
5818
5820
  }
5819
- })
5821
+ if (isFileUIPart(part)) {
5822
+ return {
5823
+ type: "file",
5824
+ mediaType: part.mediaType,
5825
+ filename: part.filename,
5826
+ data: part.url,
5827
+ ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
5828
+ };
5829
+ }
5830
+ if (isDataUIPart(part)) {
5831
+ return (_a17 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a17.call(
5832
+ options,
5833
+ part
5834
+ );
5835
+ }
5836
+ }).filter((part) => part != null)
5820
5837
  });
5821
5838
  break;
5822
5839
  }
5823
5840
  case "assistant": {
5824
5841
  if (message.parts != null) {
5825
5842
  let processBlock2 = function() {
5826
- var _a17, _b;
5843
+ var _a17, _b, _c;
5827
5844
  if (block.length === 0) {
5828
5845
  return;
5829
5846
  }
5830
5847
  const content = [];
5831
5848
  for (const part of block) {
5832
- if (part.type === "text") {
5849
+ if (isTextUIPart(part)) {
5833
5850
  content.push({
5834
5851
  type: "text",
5835
5852
  text: part.text,
5836
5853
  ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
5837
5854
  });
5838
- } else if (part.type === "file") {
5855
+ } else if (isFileUIPart(part)) {
5839
5856
  content.push({
5840
5857
  type: "file",
5841
5858
  mediaType: part.mediaType,
5842
5859
  filename: part.filename,
5843
5860
  data: part.url
5844
5861
  });
5845
- } else if (part.type === "reasoning") {
5862
+ } else if (isReasoningUIPart(part)) {
5846
5863
  content.push({
5847
5864
  type: "reasoning",
5848
5865
  text: part.text,
5849
5866
  providerOptions: part.providerMetadata
5850
5867
  });
5851
- } else if (part.type === "dynamic-tool") {
5868
+ } else if (isDynamicToolUIPart(part)) {
5852
5869
  const toolName = part.toolName;
5853
5870
  if (part.state !== "input-streaming") {
5854
5871
  content.push({
@@ -5883,6 +5900,14 @@ function convertToModelMessages(messages, options) {
5883
5900
  });
5884
5901
  }
5885
5902
  }
5903
+ } else if (isDataUIPart(part)) {
5904
+ const dataPart = (_c = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _c.call(
5905
+ options,
5906
+ part
5907
+ );
5908
+ if (dataPart != null) {
5909
+ content.push(dataPart);
5910
+ }
5886
5911
  } else {
5887
5912
  const _exhaustiveCheck = part;
5888
5913
  throw new Error(`Unsupported part: ${_exhaustiveCheck}`);
@@ -5903,7 +5928,7 @@ function convertToModelMessages(messages, options) {
5903
5928
  switch (toolPart.state) {
5904
5929
  case "output-error":
5905
5930
  case "output-available": {
5906
- const toolName = toolPart.type === "dynamic-tool" ? toolPart.toolName : getToolName(toolPart);
5931
+ const toolName = getToolOrDynamicToolName(toolPart);
5907
5932
  return {
5908
5933
  type: "tool-result",
5909
5934
  toolCallId: toolPart.toolCallId,
@@ -5929,7 +5954,7 @@ function convertToModelMessages(messages, options) {
5929
5954
  var processBlock = processBlock2;
5930
5955
  let block = [];
5931
5956
  for (const part of message.parts) {
5932
- if (part.type === "text" || part.type === "reasoning" || part.type === "file" || part.type === "dynamic-tool" || isToolUIPart(part)) {
5957
+ if (isTextUIPart(part) || isReasoningUIPart(part) || isFileUIPart(part) || isToolOrDynamicToolUIPart(part) || isDataUIPart(part)) {
5933
5958
  block.push(part);
5934
5959
  } else if (part.type === "step-start") {
5935
5960
  processBlock2();
@@ -10604,7 +10629,11 @@ export {
10604
10629
  getToolName,
10605
10630
  getToolOrDynamicToolName,
10606
10631
  hasToolCall,
10632
+ isDataUIPart,
10607
10633
  isDeepEqualData,
10634
+ isFileUIPart,
10635
+ isReasoningUIPart,
10636
+ isTextUIPart,
10608
10637
  isToolOrDynamicToolUIPart,
10609
10638
  isToolUIPart,
10610
10639
  jsonSchema2 as jsonSchema,