ai 5.0.0-canary.6 → 5.0.0-canary.7

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
@@ -1422,7 +1422,10 @@ function isSchema(value) {
1422
1422
  return typeof value === "object" && value !== null && schemaSymbol in value && value[schemaSymbol] === true && "jsonSchema" in value && "validate" in value;
1423
1423
  }
1424
1424
  function asSchema(schema) {
1425
- return isSchema(schema) ? schema : zodSchema(schema);
1425
+ return schema == null ? jsonSchema({
1426
+ properties: {},
1427
+ additionalProperties: false
1428
+ }) : isSchema(schema) ? schema : zodSchema(schema);
1426
1429
  }
1427
1430
 
1428
1431
  // core/util/should-resubmit-messages.ts
@@ -2552,9 +2555,6 @@ var NoObjectGeneratedError = class extends AISDKError4 {
2552
2555
  };
2553
2556
  _a4 = symbol4;
2554
2557
 
2555
- // core/prompt/convert-to-language-model-prompt.ts
2556
- import { convertUint8ArrayToBase64 as convertUint8ArrayToBase643 } from "@ai-sdk/provider-utils";
2557
-
2558
2558
  // util/download-error.ts
2559
2559
  import { AISDKError as AISDKError5 } from "@ai-sdk/provider";
2560
2560
  var name5 = "AI_DownloadError";
@@ -2607,10 +2607,12 @@ async function download({ url }) {
2607
2607
  }
2608
2608
 
2609
2609
  // core/prompt/data-content.ts
2610
+ import { AISDKError as AISDKError7 } from "@ai-sdk/provider";
2610
2611
  import {
2611
2612
  convertBase64ToUint8Array as convertBase64ToUint8Array2,
2612
2613
  convertUint8ArrayToBase64 as convertUint8ArrayToBase642
2613
2614
  } from "@ai-sdk/provider-utils";
2615
+ import { z } from "zod";
2614
2616
 
2615
2617
  // core/prompt/invalid-data-content-error.ts
2616
2618
  import { AISDKError as AISDKError6 } from "@ai-sdk/provider";
@@ -2634,8 +2636,23 @@ var InvalidDataContentError = class extends AISDKError6 {
2634
2636
  };
2635
2637
  _a6 = symbol6;
2636
2638
 
2639
+ // core/prompt/split-data-url.ts
2640
+ function splitDataUrl(dataUrl) {
2641
+ try {
2642
+ const [header, base64Content] = dataUrl.split(",");
2643
+ return {
2644
+ mediaType: header.split(";")[0].split(":")[1],
2645
+ base64Content
2646
+ };
2647
+ } catch (error) {
2648
+ return {
2649
+ mediaType: void 0,
2650
+ base64Content: void 0
2651
+ };
2652
+ }
2653
+ }
2654
+
2637
2655
  // core/prompt/data-content.ts
2638
- import { z } from "zod";
2639
2656
  var dataContentSchema = z.union([
2640
2657
  z.string(),
2641
2658
  z.instanceof(Uint8Array),
@@ -2649,6 +2666,33 @@ var dataContentSchema = z.union([
2649
2666
  { message: "Must be a Buffer" }
2650
2667
  )
2651
2668
  ]);
2669
+ function convertToLanguageModelV2DataContent(content) {
2670
+ if (content instanceof Uint8Array) {
2671
+ return { data: content, mediaType: void 0 };
2672
+ }
2673
+ if (content instanceof ArrayBuffer) {
2674
+ return { data: new Uint8Array(content), mediaType: void 0 };
2675
+ }
2676
+ if (typeof content === "string") {
2677
+ try {
2678
+ content = new URL(content);
2679
+ } catch (error) {
2680
+ }
2681
+ }
2682
+ if (content instanceof URL && content.protocol === "data:") {
2683
+ const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(
2684
+ content.toString()
2685
+ );
2686
+ if (dataUrlMediaType == null || base64Content == null) {
2687
+ throw new AISDKError7({
2688
+ name: "InvalidDataContentError",
2689
+ message: `Invalid data URL format in content ${content.toString()}`
2690
+ });
2691
+ }
2692
+ return { data: base64Content, mediaType: dataUrlMediaType };
2693
+ }
2694
+ return { data: content, mediaType: void 0 };
2695
+ }
2652
2696
  function convertDataContentToBase64String(content) {
2653
2697
  if (typeof content === "string") {
2654
2698
  return content;
@@ -2687,12 +2731,12 @@ function convertUint8ArrayToText(uint8Array) {
2687
2731
  }
2688
2732
 
2689
2733
  // core/prompt/invalid-message-role-error.ts
2690
- import { AISDKError as AISDKError7 } from "@ai-sdk/provider";
2734
+ import { AISDKError as AISDKError8 } from "@ai-sdk/provider";
2691
2735
  var name7 = "AI_InvalidMessageRoleError";
2692
2736
  var marker7 = `vercel.ai.error.${name7}`;
2693
2737
  var symbol7 = Symbol.for(marker7);
2694
2738
  var _a7;
2695
- var InvalidMessageRoleError = class extends AISDKError7 {
2739
+ var InvalidMessageRoleError = class extends AISDKError8 {
2696
2740
  constructor({
2697
2741
  role,
2698
2742
  message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
@@ -2702,27 +2746,11 @@ var InvalidMessageRoleError = class extends AISDKError7 {
2702
2746
  this.role = role;
2703
2747
  }
2704
2748
  static isInstance(error) {
2705
- return AISDKError7.hasMarker(error, marker7);
2749
+ return AISDKError8.hasMarker(error, marker7);
2706
2750
  }
2707
2751
  };
2708
2752
  _a7 = symbol7;
2709
2753
 
2710
- // core/prompt/split-data-url.ts
2711
- function splitDataUrl(dataUrl) {
2712
- try {
2713
- const [header, base64Content] = dataUrl.split(",");
2714
- return {
2715
- mediaType: header.split(";")[0].split(":")[1],
2716
- base64Content
2717
- };
2718
- } catch (error) {
2719
- return {
2720
- mediaType: void 0,
2721
- base64Content: void 0
2722
- };
2723
- }
2724
- }
2725
-
2726
2754
  // core/prompt/convert-to-language-model-prompt.ts
2727
2755
  async function convertToLanguageModelPrompt({
2728
2756
  prompt,
@@ -2744,14 +2772,13 @@ async function convertToLanguageModelPrompt({
2744
2772
  ];
2745
2773
  }
2746
2774
  function convertToLanguageModelMessage(message, downloadedAssets) {
2747
- var _a17, _b, _c, _d, _e, _f;
2748
2775
  const role = message.role;
2749
2776
  switch (role) {
2750
2777
  case "system": {
2751
2778
  return {
2752
2779
  role: "system",
2753
2780
  content: message.content,
2754
- providerOptions: (_a17 = message.providerOptions) != null ? _a17 : message.experimental_providerMetadata
2781
+ providerOptions: message.providerOptions
2755
2782
  };
2756
2783
  }
2757
2784
  case "user": {
@@ -2759,13 +2786,13 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
2759
2786
  return {
2760
2787
  role: "user",
2761
2788
  content: [{ type: "text", text: message.content }],
2762
- providerOptions: (_b = message.providerOptions) != null ? _b : message.experimental_providerMetadata
2789
+ providerOptions: message.providerOptions
2763
2790
  };
2764
2791
  }
2765
2792
  return {
2766
2793
  role: "user",
2767
2794
  content: message.content.map((part) => convertPartToLanguageModelPart(part, downloadedAssets)).filter((part) => part.type !== "text" || part.text !== ""),
2768
- providerOptions: (_c = message.providerOptions) != null ? _c : message.experimental_providerMetadata
2795
+ providerOptions: message.providerOptions
2769
2796
  };
2770
2797
  }
2771
2798
  case "assistant": {
@@ -2773,7 +2800,7 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
2773
2800
  return {
2774
2801
  role: "assistant",
2775
2802
  content: [{ type: "text", text: message.content }],
2776
- providerOptions: (_d = message.providerOptions) != null ? _d : message.experimental_providerMetadata
2803
+ providerOptions: message.providerOptions
2777
2804
  };
2778
2805
  }
2779
2806
  return {
@@ -2782,15 +2809,18 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
2782
2809
  // remove empty text parts:
2783
2810
  (part) => part.type !== "text" || part.text !== ""
2784
2811
  ).map((part) => {
2785
- var _a18, _b2;
2786
- const providerOptions = (_a18 = part.providerOptions) != null ? _a18 : part.experimental_providerMetadata;
2812
+ var _a17;
2813
+ const providerOptions = part.providerOptions;
2787
2814
  switch (part.type) {
2788
2815
  case "file": {
2816
+ const { data, mediaType } = convertToLanguageModelV2DataContent(
2817
+ part.data
2818
+ );
2789
2819
  return {
2790
2820
  type: "file",
2791
- data: part.data instanceof URL ? part.data : convertDataContentToBase64String(part.data),
2821
+ data,
2792
2822
  filename: part.filename,
2793
- mediaType: (_b2 = part.mediaType) != null ? _b2 : part.mimeType,
2823
+ mediaType: (_a17 = mediaType != null ? mediaType : part.mediaType) != null ? _a17 : part.mimeType,
2794
2824
  providerOptions
2795
2825
  };
2796
2826
  }
@@ -2827,25 +2857,22 @@ function convertToLanguageModelMessage(message, downloadedAssets) {
2827
2857
  }
2828
2858
  }
2829
2859
  }),
2830
- providerOptions: (_e = message.providerOptions) != null ? _e : message.experimental_providerMetadata
2860
+ providerOptions: message.providerOptions
2831
2861
  };
2832
2862
  }
2833
2863
  case "tool": {
2834
2864
  return {
2835
2865
  role: "tool",
2836
- content: message.content.map((part) => {
2837
- var _a18;
2838
- return {
2839
- type: "tool-result",
2840
- toolCallId: part.toolCallId,
2841
- toolName: part.toolName,
2842
- result: part.result,
2843
- content: part.experimental_content,
2844
- isError: part.isError,
2845
- providerOptions: (_a18 = part.providerOptions) != null ? _a18 : part.experimental_providerMetadata
2846
- };
2847
- }),
2848
- providerOptions: (_f = message.providerOptions) != null ? _f : message.experimental_providerMetadata
2866
+ content: message.content.map((part) => ({
2867
+ type: "tool-result",
2868
+ toolCallId: part.toolCallId,
2869
+ toolName: part.toolName,
2870
+ result: part.result,
2871
+ content: part.experimental_content,
2872
+ isError: part.isError,
2873
+ providerOptions: part.providerOptions
2874
+ })),
2875
+ providerOptions: message.providerOptions
2849
2876
  };
2850
2877
  }
2851
2878
  default: {
@@ -2878,71 +2905,48 @@ async function downloadAssets(messages, downloadImplementation, modelSupportsIma
2878
2905
  );
2879
2906
  }
2880
2907
  function convertPartToLanguageModelPart(part, downloadedAssets) {
2881
- var _a17, _b, _c, _d, _e;
2908
+ var _a17, _b, _c;
2882
2909
  if (part.type === "text") {
2883
2910
  return {
2884
2911
  type: "text",
2885
2912
  text: part.text,
2886
- providerOptions: (_a17 = part.providerOptions) != null ? _a17 : part.experimental_providerMetadata
2913
+ providerOptions: part.providerOptions
2887
2914
  };
2888
2915
  }
2889
- let mediaType = (_b = part.mediaType) != null ? _b : part.mimeType;
2890
- let data;
2891
- let content;
2892
- let normalizedData;
2916
+ let originalData;
2893
2917
  const type = part.type;
2894
2918
  switch (type) {
2895
2919
  case "image":
2896
- data = part.image;
2920
+ originalData = part.image;
2897
2921
  break;
2898
2922
  case "file":
2899
- data = part.data;
2923
+ originalData = part.data;
2900
2924
  break;
2901
2925
  default:
2902
2926
  throw new Error(`Unsupported part type: ${type}`);
2903
2927
  }
2904
- try {
2905
- content = typeof data === "string" ? new URL(data) : data;
2906
- } catch (error) {
2907
- content = data;
2908
- }
2909
- if (content instanceof URL) {
2910
- if (content.protocol === "data:") {
2911
- const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(
2912
- content.toString()
2913
- );
2914
- if (dataUrlMediaType == null || base64Content == null) {
2915
- throw new Error(`Invalid data URL format in part ${type}`);
2916
- }
2917
- mediaType = dataUrlMediaType;
2918
- normalizedData = convertDataContentToUint8Array(base64Content);
2919
- } else {
2920
- const downloadedFile = downloadedAssets[content.toString()];
2921
- if (downloadedFile) {
2922
- normalizedData = downloadedFile.data;
2923
- mediaType != null ? mediaType : mediaType = downloadedFile.mediaType;
2924
- } else {
2925
- normalizedData = content;
2926
- }
2928
+ const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV2DataContent(originalData);
2929
+ let mediaType = (_a17 = convertedMediaType != null ? convertedMediaType : part.mediaType) != null ? _a17 : part.mimeType;
2930
+ let data = convertedData;
2931
+ if (data instanceof URL) {
2932
+ const downloadedFile = downloadedAssets[data.toString()];
2933
+ if (downloadedFile) {
2934
+ data = downloadedFile.data;
2935
+ mediaType = (_b = downloadedFile.mediaType) != null ? _b : mediaType;
2927
2936
  }
2928
- } else {
2929
- normalizedData = convertDataContentToUint8Array(content);
2930
2937
  }
2931
2938
  switch (type) {
2932
2939
  case "image": {
2933
- if (normalizedData instanceof Uint8Array) {
2934
- mediaType = (_c = detectMediaType({
2935
- data: normalizedData,
2936
- signatures: imageMediaTypeSignatures
2937
- })) != null ? _c : mediaType;
2940
+ if (data instanceof Uint8Array || typeof data === "string") {
2941
+ mediaType = (_c = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _c : mediaType;
2938
2942
  }
2939
2943
  return {
2940
2944
  type: "file",
2941
2945
  mediaType: mediaType != null ? mediaType : "image/*",
2942
2946
  // any image
2943
2947
  filename: void 0,
2944
- data: normalizedData instanceof Uint8Array ? convertUint8ArrayToBase643(normalizedData) : normalizedData,
2945
- providerOptions: (_d = part.providerOptions) != null ? _d : part.experimental_providerMetadata
2948
+ data,
2949
+ providerOptions: part.providerOptions
2946
2950
  };
2947
2951
  }
2948
2952
  case "file": {
@@ -2953,8 +2957,8 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
2953
2957
  type: "file",
2954
2958
  mediaType,
2955
2959
  filename: part.filename,
2956
- data: normalizedData instanceof Uint8Array ? convertDataContentToBase64String(normalizedData) : normalizedData,
2957
- providerOptions: (_e = part.providerOptions) != null ? _e : part.experimental_providerMetadata
2960
+ data,
2961
+ providerOptions: part.providerOptions
2958
2962
  };
2959
2963
  }
2960
2964
  }
@@ -2962,7 +2966,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
2962
2966
 
2963
2967
  // core/prompt/prepare-call-settings.ts
2964
2968
  function prepareCallSettings({
2965
- maxTokens,
2969
+ maxOutputTokens,
2966
2970
  temperature,
2967
2971
  topP,
2968
2972
  topK,
@@ -2971,19 +2975,19 @@ function prepareCallSettings({
2971
2975
  stopSequences,
2972
2976
  seed
2973
2977
  }) {
2974
- if (maxTokens != null) {
2975
- if (!Number.isInteger(maxTokens)) {
2978
+ if (maxOutputTokens != null) {
2979
+ if (!Number.isInteger(maxOutputTokens)) {
2976
2980
  throw new InvalidArgumentError({
2977
- parameter: "maxTokens",
2978
- value: maxTokens,
2979
- message: "maxTokens must be an integer"
2981
+ parameter: "maxOutputTokens",
2982
+ value: maxOutputTokens,
2983
+ message: "maxOutputTokens must be an integer"
2980
2984
  });
2981
2985
  }
2982
- if (maxTokens < 1) {
2986
+ if (maxOutputTokens < 1) {
2983
2987
  throw new InvalidArgumentError({
2984
- parameter: "maxTokens",
2985
- value: maxTokens,
2986
- message: "maxTokens must be >= 1"
2988
+ parameter: "maxOutputTokens",
2989
+ value: maxOutputTokens,
2990
+ message: "maxOutputTokens must be >= 1"
2987
2991
  });
2988
2992
  }
2989
2993
  }
@@ -3042,7 +3046,7 @@ function prepareCallSettings({
3042
3046
  }
3043
3047
  }
3044
3048
  return {
3045
- maxTokens,
3049
+ maxOutputTokens,
3046
3050
  // TODO v5 remove default 0 for temperature
3047
3051
  temperature: temperature != null ? temperature : 0,
3048
3052
  topP,
@@ -3137,12 +3141,12 @@ function attachmentsToParts(attachments) {
3137
3141
  }
3138
3142
 
3139
3143
  // core/prompt/message-conversion-error.ts
3140
- import { AISDKError as AISDKError8 } from "@ai-sdk/provider";
3144
+ import { AISDKError as AISDKError9 } from "@ai-sdk/provider";
3141
3145
  var name8 = "AI_MessageConversionError";
3142
3146
  var marker8 = `vercel.ai.error.${name8}`;
3143
3147
  var symbol8 = Symbol.for(marker8);
3144
3148
  var _a8;
3145
- var MessageConversionError = class extends AISDKError8 {
3149
+ var MessageConversionError = class extends AISDKError9 {
3146
3150
  constructor({
3147
3151
  originalMessage,
3148
3152
  message
@@ -3152,7 +3156,7 @@ var MessageConversionError = class extends AISDKError8 {
3152
3156
  this.originalMessage = originalMessage;
3153
3157
  }
3154
3158
  static isInstance(error) {
3155
- return AISDKError8.hasMarker(error, marker8);
3159
+ return AISDKError9.hasMarker(error, marker8);
3156
3160
  }
3157
3161
  };
3158
3162
  _a8 = symbol8;
@@ -3426,7 +3430,7 @@ function detectSingleMessageCharacteristics(message) {
3426
3430
  "experimental_attachments" in message)) {
3427
3431
  return "has-ui-specific-parts";
3428
3432
  } else if (typeof message === "object" && message !== null && "content" in message && (Array.isArray(message.content) || // Core messages can have array content
3429
- "experimental_providerMetadata" in message || "providerOptions" in message)) {
3433
+ "providerOptions" in message)) {
3430
3434
  return "has-core-specific-parts";
3431
3435
  } else if (typeof message === "object" && message !== null && "role" in message && "content" in message && typeof message.content === "string" && ["system", "user", "assistant", "tool"].includes(message.role)) {
3432
3436
  return "message";
@@ -3480,16 +3484,14 @@ var toolResultContentSchema = z4.array(
3480
3484
  var textPartSchema = z5.object({
3481
3485
  type: z5.literal("text"),
3482
3486
  text: z5.string(),
3483
- providerOptions: providerMetadataSchema.optional(),
3484
- experimental_providerMetadata: providerMetadataSchema.optional()
3487
+ providerOptions: providerMetadataSchema.optional()
3485
3488
  });
3486
3489
  var imagePartSchema = z5.object({
3487
3490
  type: z5.literal("image"),
3488
3491
  image: z5.union([dataContentSchema, z5.instanceof(URL)]),
3489
3492
  mediaType: z5.string().optional(),
3490
3493
  mimeType: z5.string().optional(),
3491
- providerOptions: providerMetadataSchema.optional(),
3492
- experimental_providerMetadata: providerMetadataSchema.optional()
3494
+ providerOptions: providerMetadataSchema.optional()
3493
3495
  });
3494
3496
  var filePartSchema = z5.object({
3495
3497
  type: z5.literal("file"),
@@ -3497,28 +3499,24 @@ var filePartSchema = z5.object({
3497
3499
  filename: z5.string().optional(),
3498
3500
  mediaType: z5.string(),
3499
3501
  mimeType: z5.string().optional(),
3500
- providerOptions: providerMetadataSchema.optional(),
3501
- experimental_providerMetadata: providerMetadataSchema.optional()
3502
+ providerOptions: providerMetadataSchema.optional()
3502
3503
  });
3503
3504
  var reasoningPartSchema = z5.object({
3504
3505
  type: z5.literal("reasoning"),
3505
3506
  text: z5.string(),
3506
- providerOptions: providerMetadataSchema.optional(),
3507
- experimental_providerMetadata: providerMetadataSchema.optional()
3507
+ providerOptions: providerMetadataSchema.optional()
3508
3508
  });
3509
3509
  var redactedReasoningPartSchema = z5.object({
3510
3510
  type: z5.literal("redacted-reasoning"),
3511
3511
  data: z5.string(),
3512
- providerOptions: providerMetadataSchema.optional(),
3513
- experimental_providerMetadata: providerMetadataSchema.optional()
3512
+ providerOptions: providerMetadataSchema.optional()
3514
3513
  });
3515
3514
  var toolCallPartSchema = z5.object({
3516
3515
  type: z5.literal("tool-call"),
3517
3516
  toolCallId: z5.string(),
3518
3517
  toolName: z5.string(),
3519
3518
  args: z5.unknown(),
3520
- providerOptions: providerMetadataSchema.optional(),
3521
- experimental_providerMetadata: providerMetadataSchema.optional()
3519
+ providerOptions: providerMetadataSchema.optional()
3522
3520
  });
3523
3521
  var toolResultPartSchema = z5.object({
3524
3522
  type: z5.literal("tool-result"),
@@ -3527,16 +3525,14 @@ var toolResultPartSchema = z5.object({
3527
3525
  result: z5.unknown(),
3528
3526
  content: toolResultContentSchema.optional(),
3529
3527
  isError: z5.boolean().optional(),
3530
- providerOptions: providerMetadataSchema.optional(),
3531
- experimental_providerMetadata: providerMetadataSchema.optional()
3528
+ providerOptions: providerMetadataSchema.optional()
3532
3529
  });
3533
3530
 
3534
3531
  // core/prompt/message.ts
3535
3532
  var coreSystemMessageSchema = z6.object({
3536
3533
  role: z6.literal("system"),
3537
3534
  content: z6.string(),
3538
- providerOptions: providerMetadataSchema.optional(),
3539
- experimental_providerMetadata: providerMetadataSchema.optional()
3535
+ providerOptions: providerMetadataSchema.optional()
3540
3536
  });
3541
3537
  var coreUserMessageSchema = z6.object({
3542
3538
  role: z6.literal("user"),
@@ -3544,8 +3540,7 @@ var coreUserMessageSchema = z6.object({
3544
3540
  z6.string(),
3545
3541
  z6.array(z6.union([textPartSchema, imagePartSchema, filePartSchema]))
3546
3542
  ]),
3547
- providerOptions: providerMetadataSchema.optional(),
3548
- experimental_providerMetadata: providerMetadataSchema.optional()
3543
+ providerOptions: providerMetadataSchema.optional()
3549
3544
  });
3550
3545
  var coreAssistantMessageSchema = z6.object({
3551
3546
  role: z6.literal("assistant"),
@@ -3561,14 +3556,12 @@ var coreAssistantMessageSchema = z6.object({
3561
3556
  ])
3562
3557
  )
3563
3558
  ]),
3564
- providerOptions: providerMetadataSchema.optional(),
3565
- experimental_providerMetadata: providerMetadataSchema.optional()
3559
+ providerOptions: providerMetadataSchema.optional()
3566
3560
  });
3567
3561
  var coreToolMessageSchema = z6.object({
3568
3562
  role: z6.literal("tool"),
3569
3563
  content: z6.array(toolResultPartSchema),
3570
- providerOptions: providerMetadataSchema.optional(),
3571
- experimental_providerMetadata: providerMetadataSchema.optional()
3564
+ providerOptions: providerMetadataSchema.optional()
3572
3565
  });
3573
3566
  var coreMessageSchema = z6.union([
3574
3567
  coreSystemMessageSchema,
@@ -3657,13 +3650,13 @@ function standardizePrompt({
3657
3650
 
3658
3651
  // core/types/usage.ts
3659
3652
  function calculateLanguageModelUsage2({
3660
- promptTokens,
3661
- completionTokens
3653
+ inputTokens,
3654
+ outputTokens
3662
3655
  }) {
3663
3656
  return {
3664
- promptTokens,
3665
- completionTokens,
3666
- totalTokens: promptTokens + completionTokens
3657
+ promptTokens: inputTokens != null ? inputTokens : NaN,
3658
+ completionTokens: outputTokens != null ? outputTokens : NaN,
3659
+ totalTokens: (inputTokens != null ? inputTokens : 0) + (outputTokens != null ? outputTokens : 0)
3667
3660
  };
3668
3661
  }
3669
3662
  function addLanguageModelUsage(usage1, usage2) {
@@ -4088,8 +4081,7 @@ async function generateObject({
4088
4081
  headers,
4089
4082
  experimental_repairText: repairText,
4090
4083
  experimental_telemetry: telemetry,
4091
- experimental_providerMetadata,
4092
- providerOptions = experimental_providerMetadata,
4084
+ providerOptions,
4093
4085
  _internal: {
4094
4086
  generateId: generateId3 = originalGenerateId,
4095
4087
  currentDate = () => /* @__PURE__ */ new Date()
@@ -4196,7 +4188,7 @@ async function generateObject({
4196
4188
  "gen_ai.system": model.provider,
4197
4189
  "gen_ai.request.model": model.modelId,
4198
4190
  "gen_ai.request.frequency_penalty": settings.frequencyPenalty,
4199
- "gen_ai.request.max_tokens": settings.maxTokens,
4191
+ "gen_ai.request.max_tokens": settings.maxOutputTokens,
4200
4192
  "gen_ai.request.presence_penalty": settings.presencePenalty,
4201
4193
  "gen_ai.request.temperature": settings.temperature,
4202
4194
  "gen_ai.request.top_k": settings.topK,
@@ -4244,14 +4236,15 @@ async function generateObject({
4244
4236
  "ai.response.id": responseData.id,
4245
4237
  "ai.response.model": responseData.modelId,
4246
4238
  "ai.response.timestamp": responseData.timestamp.toISOString(),
4247
- "ai.usage.promptTokens": result2.usage.promptTokens,
4248
- "ai.usage.completionTokens": result2.usage.completionTokens,
4239
+ // TODO rename telemetry attributes to inputTokens and outputTokens
4240
+ "ai.usage.promptTokens": result2.usage.inputTokens,
4241
+ "ai.usage.completionTokens": result2.usage.outputTokens,
4249
4242
  // standardized gen-ai llm span attributes:
4250
4243
  "gen_ai.response.finish_reasons": [result2.finishReason],
4251
4244
  "gen_ai.response.id": responseData.id,
4252
4245
  "gen_ai.response.model": responseData.modelId,
4253
- "gen_ai.usage.prompt_tokens": result2.usage.promptTokens,
4254
- "gen_ai.usage.completion_tokens": result2.usage.completionTokens
4246
+ "gen_ai.usage.input_tokens": result2.usage.inputTokens,
4247
+ "gen_ai.usage.output_tokens": result2.usage.outputTokens
4255
4248
  }
4256
4249
  })
4257
4250
  );
@@ -4303,7 +4296,7 @@ async function generateObject({
4303
4296
  "gen_ai.system": model.provider,
4304
4297
  "gen_ai.request.model": model.modelId,
4305
4298
  "gen_ai.request.frequency_penalty": settings.frequencyPenalty,
4306
- "gen_ai.request.max_tokens": settings.maxTokens,
4299
+ "gen_ai.request.max_tokens": settings.maxOutputTokens,
4307
4300
  "gen_ai.request.presence_penalty": settings.presencePenalty,
4308
4301
  "gen_ai.request.temperature": settings.temperature,
4309
4302
  "gen_ai.request.top_k": settings.topK,
@@ -4355,14 +4348,15 @@ async function generateObject({
4355
4348
  "ai.response.id": responseData.id,
4356
4349
  "ai.response.model": responseData.modelId,
4357
4350
  "ai.response.timestamp": responseData.timestamp.toISOString(),
4358
- "ai.usage.promptTokens": result2.usage.promptTokens,
4359
- "ai.usage.completionTokens": result2.usage.completionTokens,
4351
+ // TODO rename telemetry attributes to inputTokens and outputTokens
4352
+ "ai.usage.promptTokens": result2.usage.inputTokens,
4353
+ "ai.usage.completionTokens": result2.usage.outputTokens,
4360
4354
  // standardized gen-ai llm span attributes:
4361
4355
  "gen_ai.response.finish_reasons": [result2.finishReason],
4362
4356
  "gen_ai.response.id": responseData.id,
4363
4357
  "gen_ai.response.model": responseData.modelId,
4364
- "gen_ai.usage.input_tokens": result2.usage.promptTokens,
4365
- "gen_ai.usage.output_tokens": result2.usage.completionTokens
4358
+ "gen_ai.usage.input_tokens": result2.usage.inputTokens,
4359
+ "gen_ai.usage.output_tokens": result2.usage.outputTokens
4366
4360
  }
4367
4361
  })
4368
4362
  );
@@ -4447,8 +4441,9 @@ async function generateObject({
4447
4441
  "ai.response.object": {
4448
4442
  output: () => JSON.stringify(object2)
4449
4443
  },
4450
- "ai.usage.promptTokens": usage.promptTokens,
4451
- "ai.usage.completionTokens": usage.completionTokens
4444
+ // TODO rename telemetry attributes to inputTokens and outputTokens
4445
+ "ai.usage.promptTokens": usage.inputTokens,
4446
+ "ai.usage.completionTokens": usage.outputTokens
4452
4447
  }
4453
4448
  })
4454
4449
  );
@@ -4472,7 +4467,6 @@ var DefaultGenerateObjectResult = class {
4472
4467
  this.usage = options.usage;
4473
4468
  this.warnings = options.warnings;
4474
4469
  this.providerMetadata = options.providerMetadata;
4475
- this.experimental_providerMetadata = options.providerMetadata;
4476
4470
  this.response = options.response;
4477
4471
  this.request = options.request;
4478
4472
  this.logprobs = options.logprobs;
@@ -4648,8 +4642,7 @@ function streamObject({
4648
4642
  abortSignal,
4649
4643
  headers,
4650
4644
  experimental_telemetry: telemetry,
4651
- experimental_providerMetadata,
4652
- providerOptions = experimental_providerMetadata,
4645
+ providerOptions,
4653
4646
  onError,
4654
4647
  onFinish,
4655
4648
  _internal: {
@@ -4898,7 +4891,7 @@ var DefaultStreamObjectResult = class {
4898
4891
  "gen_ai.system": model.provider,
4899
4892
  "gen_ai.request.model": model.modelId,
4900
4893
  "gen_ai.request.frequency_penalty": settings.frequencyPenalty,
4901
- "gen_ai.request.max_tokens": settings.maxTokens,
4894
+ "gen_ai.request.max_tokens": settings.maxOutputTokens,
4902
4895
  "gen_ai.request.presence_penalty": settings.presencePenalty,
4903
4896
  "gen_ai.request.temperature": settings.temperature,
4904
4897
  "gen_ai.request.top_k": settings.topK,
@@ -5086,8 +5079,7 @@ var DefaultStreamObjectResult = class {
5086
5079
  headers: response == null ? void 0 : response.headers
5087
5080
  },
5088
5081
  warnings,
5089
- providerMetadata,
5090
- experimental_providerMetadata: providerMetadata
5082
+ providerMetadata
5091
5083
  }));
5092
5084
  } catch (error2) {
5093
5085
  controller.enqueue({ type: "error", error: error2 });
@@ -5119,9 +5111,6 @@ var DefaultStreamObjectResult = class {
5119
5111
  get usage() {
5120
5112
  return this.usagePromise.value;
5121
5113
  }
5122
- get experimental_providerMetadata() {
5123
- return this.providerMetadataPromise.value;
5124
- }
5125
5114
  get providerMetadata() {
5126
5115
  return this.providerMetadataPromise.value;
5127
5116
  }
@@ -5212,30 +5201,30 @@ var DefaultStreamObjectResult = class {
5212
5201
  import { createIdGenerator as createIdGenerator3 } from "@ai-sdk/provider-utils";
5213
5202
 
5214
5203
  // errors/no-output-specified-error.ts
5215
- import { AISDKError as AISDKError9 } from "@ai-sdk/provider";
5204
+ import { AISDKError as AISDKError10 } from "@ai-sdk/provider";
5216
5205
  var name9 = "AI_NoOutputSpecifiedError";
5217
5206
  var marker9 = `vercel.ai.error.${name9}`;
5218
5207
  var symbol9 = Symbol.for(marker9);
5219
5208
  var _a9;
5220
- var NoOutputSpecifiedError = class extends AISDKError9 {
5209
+ var NoOutputSpecifiedError = class extends AISDKError10 {
5221
5210
  // used in isInstance
5222
5211
  constructor({ message = "No output specified." } = {}) {
5223
5212
  super({ name: name9, message });
5224
5213
  this[_a9] = true;
5225
5214
  }
5226
5215
  static isInstance(error) {
5227
- return AISDKError9.hasMarker(error, marker9);
5216
+ return AISDKError10.hasMarker(error, marker9);
5228
5217
  }
5229
5218
  };
5230
5219
  _a9 = symbol9;
5231
5220
 
5232
5221
  // errors/tool-execution-error.ts
5233
- import { AISDKError as AISDKError10, getErrorMessage as getErrorMessage2 } from "@ai-sdk/provider";
5222
+ import { AISDKError as AISDKError11, getErrorMessage as getErrorMessage2 } from "@ai-sdk/provider";
5234
5223
  var name10 = "AI_ToolExecutionError";
5235
5224
  var marker10 = `vercel.ai.error.${name10}`;
5236
5225
  var symbol10 = Symbol.for(marker10);
5237
5226
  var _a10;
5238
- var ToolExecutionError = class extends AISDKError10 {
5227
+ var ToolExecutionError = class extends AISDKError11 {
5239
5228
  constructor({
5240
5229
  toolArgs,
5241
5230
  toolName,
@@ -5250,7 +5239,7 @@ var ToolExecutionError = class extends AISDKError10 {
5250
5239
  this.toolCallId = toolCallId;
5251
5240
  }
5252
5241
  static isInstance(error) {
5253
- return AISDKError10.hasMarker(error, marker10);
5242
+ return AISDKError11.hasMarker(error, marker10);
5254
5243
  }
5255
5244
  };
5256
5245
  _a10 = symbol10;
@@ -5321,12 +5310,12 @@ function removeTextAfterLastWhitespace(text2) {
5321
5310
  import { safeParseJSON as safeParseJSON3, safeValidateTypes as safeValidateTypes3 } from "@ai-sdk/provider-utils";
5322
5311
 
5323
5312
  // errors/invalid-tool-arguments-error.ts
5324
- import { AISDKError as AISDKError11, getErrorMessage as getErrorMessage3 } from "@ai-sdk/provider";
5313
+ import { AISDKError as AISDKError12, getErrorMessage as getErrorMessage3 } from "@ai-sdk/provider";
5325
5314
  var name11 = "AI_InvalidToolArgumentsError";
5326
5315
  var marker11 = `vercel.ai.error.${name11}`;
5327
5316
  var symbol11 = Symbol.for(marker11);
5328
5317
  var _a11;
5329
- var InvalidToolArgumentsError = class extends AISDKError11 {
5318
+ var InvalidToolArgumentsError = class extends AISDKError12 {
5330
5319
  constructor({
5331
5320
  toolArgs,
5332
5321
  toolName,
@@ -5341,18 +5330,18 @@ var InvalidToolArgumentsError = class extends AISDKError11 {
5341
5330
  this.toolName = toolName;
5342
5331
  }
5343
5332
  static isInstance(error) {
5344
- return AISDKError11.hasMarker(error, marker11);
5333
+ return AISDKError12.hasMarker(error, marker11);
5345
5334
  }
5346
5335
  };
5347
5336
  _a11 = symbol11;
5348
5337
 
5349
5338
  // errors/no-such-tool-error.ts
5350
- import { AISDKError as AISDKError12 } from "@ai-sdk/provider";
5339
+ import { AISDKError as AISDKError13 } from "@ai-sdk/provider";
5351
5340
  var name12 = "AI_NoSuchToolError";
5352
5341
  var marker12 = `vercel.ai.error.${name12}`;
5353
5342
  var symbol12 = Symbol.for(marker12);
5354
5343
  var _a12;
5355
- var NoSuchToolError = class extends AISDKError12 {
5344
+ var NoSuchToolError = class extends AISDKError13 {
5356
5345
  constructor({
5357
5346
  toolName,
5358
5347
  availableTools = void 0,
@@ -5364,18 +5353,18 @@ var NoSuchToolError = class extends AISDKError12 {
5364
5353
  this.availableTools = availableTools;
5365
5354
  }
5366
5355
  static isInstance(error) {
5367
- return AISDKError12.hasMarker(error, marker12);
5356
+ return AISDKError13.hasMarker(error, marker12);
5368
5357
  }
5369
5358
  };
5370
5359
  _a12 = symbol12;
5371
5360
 
5372
5361
  // errors/tool-call-repair-error.ts
5373
- import { AISDKError as AISDKError13, getErrorMessage as getErrorMessage4 } from "@ai-sdk/provider";
5362
+ import { AISDKError as AISDKError14, getErrorMessage as getErrorMessage4 } from "@ai-sdk/provider";
5374
5363
  var name13 = "AI_ToolCallRepairError";
5375
5364
  var marker13 = `vercel.ai.error.${name13}`;
5376
5365
  var symbol13 = Symbol.for(marker13);
5377
5366
  var _a13;
5378
- var ToolCallRepairError = class extends AISDKError13 {
5367
+ var ToolCallRepairError = class extends AISDKError14 {
5379
5368
  constructor({
5380
5369
  cause,
5381
5370
  originalError,
@@ -5386,7 +5375,7 @@ var ToolCallRepairError = class extends AISDKError13 {
5386
5375
  this.originalError = originalError;
5387
5376
  }
5388
5377
  static isInstance(error) {
5389
- return AISDKError13.hasMarker(error, marker13);
5378
+ return AISDKError14.hasMarker(error, marker13);
5390
5379
  }
5391
5380
  };
5392
5381
  _a13 = symbol13;
@@ -5413,7 +5402,10 @@ async function parseToolCall({
5413
5402
  repairedToolCall = await repairToolCall({
5414
5403
  toolCall,
5415
5404
  tools,
5416
- parameterSchema: ({ toolName }) => asSchema(tools[toolName].parameters).jsonSchema,
5405
+ parameterSchema: ({ toolName }) => {
5406
+ const { parameters } = tools[toolName];
5407
+ return asSchema(parameters).jsonSchema;
5408
+ },
5417
5409
  system,
5418
5410
  messages,
5419
5411
  error
@@ -5455,7 +5447,7 @@ async function doParseToolCall({
5455
5447
  type: "tool-call",
5456
5448
  toolCallId: toolCall.toolCallId,
5457
5449
  toolName,
5458
- args: parseResult.value
5450
+ args: parseResult == null ? void 0 : parseResult.value
5459
5451
  };
5460
5452
  }
5461
5453
 
@@ -5544,8 +5536,7 @@ async function generateText({
5544
5536
  experimental_output: output,
5545
5537
  experimental_continueSteps: continueSteps = false,
5546
5538
  experimental_telemetry: telemetry,
5547
- experimental_providerMetadata,
5548
- providerOptions = experimental_providerMetadata,
5539
+ providerOptions,
5549
5540
  experimental_activeTools: activeTools,
5550
5541
  experimental_repairToolCall: repairToolCall,
5551
5542
  _internal: {
@@ -5663,7 +5654,7 @@ async function generateText({
5663
5654
  "gen_ai.system": model.provider,
5664
5655
  "gen_ai.request.model": model.modelId,
5665
5656
  "gen_ai.request.frequency_penalty": settings.frequencyPenalty,
5666
- "gen_ai.request.max_tokens": settings.maxTokens,
5657
+ "gen_ai.request.max_tokens": settings.maxOutputTokens,
5667
5658
  "gen_ai.request.presence_penalty": settings.presencePenalty,
5668
5659
  "gen_ai.request.stop_sequences": settings.stopSequences,
5669
5660
  "gen_ai.request.temperature": settings.temperature,
@@ -5705,14 +5696,15 @@ async function generateText({
5705
5696
  "ai.response.id": responseData.id,
5706
5697
  "ai.response.model": responseData.modelId,
5707
5698
  "ai.response.timestamp": responseData.timestamp.toISOString(),
5708
- "ai.usage.promptTokens": result.usage.promptTokens,
5709
- "ai.usage.completionTokens": result.usage.completionTokens,
5699
+ // TODO rename telemetry attributes to inputTokens and outputTokens
5700
+ "ai.usage.promptTokens": result.usage.inputTokens,
5701
+ "ai.usage.completionTokens": result.usage.outputTokens,
5710
5702
  // standardized gen-ai llm span attributes:
5711
5703
  "gen_ai.response.finish_reasons": [result.finishReason],
5712
5704
  "gen_ai.response.id": responseData.id,
5713
5705
  "gen_ai.response.model": responseData.modelId,
5714
- "gen_ai.usage.input_tokens": result.usage.promptTokens,
5715
- "gen_ai.usage.output_tokens": result.usage.completionTokens
5706
+ "gen_ai.usage.input_tokens": result.usage.inputTokens,
5707
+ "gen_ai.usage.output_tokens": result.usage.outputTokens
5716
5708
  }
5717
5709
  })
5718
5710
  );
@@ -5810,7 +5802,6 @@ async function generateText({
5810
5802
  messages: structuredClone(responseMessages)
5811
5803
  },
5812
5804
  providerMetadata: currentModelResponse.providerMetadata,
5813
- experimental_providerMetadata: currentModelResponse.providerMetadata,
5814
5805
  isContinued: nextStepType === "continue"
5815
5806
  };
5816
5807
  steps.push(currentStepResult);
@@ -5828,8 +5819,9 @@ async function generateText({
5828
5819
  "ai.response.toolCalls": {
5829
5820
  output: () => JSON.stringify(currentModelResponse.toolCalls)
5830
5821
  },
5831
- "ai.usage.promptTokens": currentModelResponse.usage.promptTokens,
5832
- "ai.usage.completionTokens": currentModelResponse.usage.completionTokens
5822
+ // TODO rename telemetry attributes to inputTokens and outputTokens
5823
+ "ai.usage.promptTokens": currentModelResponse.usage.inputTokens,
5824
+ "ai.usage.completionTokens": currentModelResponse.usage.outputTokens
5833
5825
  }
5834
5826
  })
5835
5827
  );
@@ -5958,7 +5950,6 @@ var DefaultGenerateTextResult = class {
5958
5950
  this.request = options.request;
5959
5951
  this.response = options.response;
5960
5952
  this.steps = options.steps;
5961
- this.experimental_providerMetadata = options.providerMetadata;
5962
5953
  this.providerMetadata = options.providerMetadata;
5963
5954
  this.logprobs = options.logprobs;
5964
5955
  this.outputResolver = options.outputResolver;
@@ -5992,7 +5983,7 @@ import { safeParseJSON as safeParseJSON4, safeValidateTypes as safeValidateTypes
5992
5983
 
5993
5984
  // errors/index.ts
5994
5985
  import {
5995
- AISDKError as AISDKError16,
5986
+ AISDKError as AISDKError17,
5996
5987
  APICallError as APICallError2,
5997
5988
  EmptyResponseBodyError,
5998
5989
  InvalidPromptError as InvalidPromptError2,
@@ -6006,12 +5997,12 @@ import {
6006
5997
  } from "@ai-sdk/provider";
6007
5998
 
6008
5999
  // errors/invalid-stream-part-error.ts
6009
- import { AISDKError as AISDKError14 } from "@ai-sdk/provider";
6000
+ import { AISDKError as AISDKError15 } from "@ai-sdk/provider";
6010
6001
  var name14 = "AI_InvalidStreamPartError";
6011
6002
  var marker14 = `vercel.ai.error.${name14}`;
6012
6003
  var symbol14 = Symbol.for(marker14);
6013
6004
  var _a14;
6014
- var InvalidStreamPartError = class extends AISDKError14 {
6005
+ var InvalidStreamPartError = class extends AISDKError15 {
6015
6006
  constructor({
6016
6007
  chunk,
6017
6008
  message
@@ -6021,18 +6012,18 @@ var InvalidStreamPartError = class extends AISDKError14 {
6021
6012
  this.chunk = chunk;
6022
6013
  }
6023
6014
  static isInstance(error) {
6024
- return AISDKError14.hasMarker(error, marker14);
6015
+ return AISDKError15.hasMarker(error, marker14);
6025
6016
  }
6026
6017
  };
6027
6018
  _a14 = symbol14;
6028
6019
 
6029
6020
  // errors/mcp-client-error.ts
6030
- import { AISDKError as AISDKError15 } from "@ai-sdk/provider";
6021
+ import { AISDKError as AISDKError16 } from "@ai-sdk/provider";
6031
6022
  var name15 = "AI_MCPClientError";
6032
6023
  var marker15 = `vercel.ai.error.${name15}`;
6033
6024
  var symbol15 = Symbol.for(marker15);
6034
6025
  var _a15;
6035
- var MCPClientError = class extends AISDKError15 {
6026
+ var MCPClientError = class extends AISDKError16 {
6036
6027
  constructor({
6037
6028
  name: name17 = "MCPClientError",
6038
6029
  message,
@@ -6042,7 +6033,7 @@ var MCPClientError = class extends AISDKError15 {
6042
6033
  this[_a15] = true;
6043
6034
  }
6044
6035
  static isInstance(error) {
6045
- return AISDKError15.hasMarker(error, marker15);
6036
+ return AISDKError16.hasMarker(error, marker15);
6046
6037
  }
6047
6038
  };
6048
6039
  _a15 = symbol15;
@@ -6196,7 +6187,7 @@ function smoothStream({
6196
6187
  }
6197
6188
 
6198
6189
  // core/generate-text/stream-text.ts
6199
- import { AISDKError as AISDKError17 } from "@ai-sdk/provider";
6190
+ import { AISDKError as AISDKError18 } from "@ai-sdk/provider";
6200
6191
  import { createIdGenerator as createIdGenerator4 } from "@ai-sdk/provider-utils";
6201
6192
 
6202
6193
  // util/as-array.ts
@@ -6471,7 +6462,7 @@ function runToolsTransformation({
6471
6462
  finishReason: chunk.finishReason,
6472
6463
  logprobs: chunk.logprobs,
6473
6464
  usage: calculateLanguageModelUsage2(chunk.usage),
6474
- experimental_providerMetadata: chunk.providerMetadata
6465
+ providerMetadata: chunk.providerMetadata
6475
6466
  };
6476
6467
  break;
6477
6468
  }
@@ -6537,8 +6528,7 @@ function streamText({
6537
6528
  experimental_output: output,
6538
6529
  experimental_continueSteps: continueSteps = false,
6539
6530
  experimental_telemetry: telemetry,
6540
- experimental_providerMetadata,
6541
- providerOptions = experimental_providerMetadata,
6531
+ providerOptions,
6542
6532
  experimental_toolCallStreaming = false,
6543
6533
  toolCallStreaming = experimental_toolCallStreaming,
6544
6534
  experimental_activeTools: activeTools,
@@ -6732,7 +6722,7 @@ var DefaultStreamTextResult = class {
6732
6722
  }
6733
6723
  if (part.type === "reasoning-signature") {
6734
6724
  if (activeReasoningText == null) {
6735
- throw new AISDKError17({
6725
+ throw new AISDKError18({
6736
6726
  name: "InvalidStreamPart",
6737
6727
  message: "reasoning-signature without reasoning"
6738
6728
  });
@@ -6799,8 +6789,7 @@ var DefaultStreamTextResult = class {
6799
6789
  ...part.response,
6800
6790
  messages: [...recordedResponse.messages, ...stepMessages]
6801
6791
  },
6802
- providerMetadata: part.experimental_providerMetadata,
6803
- experimental_providerMetadata: part.experimental_providerMetadata,
6792
+ providerMetadata: part.providerMetadata,
6804
6793
  isContinued: part.isContinued
6805
6794
  };
6806
6795
  await (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));
@@ -6841,9 +6830,7 @@ var DefaultStreamTextResult = class {
6841
6830
  self.responsePromise.resolve(lastStep.response);
6842
6831
  self.toolCallsPromise.resolve(lastStep.toolCalls);
6843
6832
  self.toolResultsPromise.resolve(lastStep.toolResults);
6844
- self.providerMetadataPromise.resolve(
6845
- lastStep.experimental_providerMetadata
6846
- );
6833
+ self.providerMetadataPromise.resolve(lastStep.providerMetadata);
6847
6834
  self.reasoningPromise.resolve(lastStep.reasoning);
6848
6835
  self.reasoningDetailsPromise.resolve(lastStep.reasoningDetails);
6849
6836
  const finishReason = recordedFinishReason != null ? recordedFinishReason : "unknown";
@@ -6873,7 +6860,6 @@ var DefaultStreamTextResult = class {
6873
6860
  response: lastStep.response,
6874
6861
  warnings: lastStep.warnings,
6875
6862
  providerMetadata: lastStep.providerMetadata,
6876
- experimental_providerMetadata: lastStep.experimental_providerMetadata,
6877
6863
  steps: recordedSteps
6878
6864
  }));
6879
6865
  rootSpan.setAttributes(
@@ -7017,7 +7003,7 @@ var DefaultStreamTextResult = class {
7017
7003
  "gen_ai.system": model.provider,
7018
7004
  "gen_ai.request.model": model.modelId,
7019
7005
  "gen_ai.request.frequency_penalty": settings.frequencyPenalty,
7020
- "gen_ai.request.max_tokens": settings.maxTokens,
7006
+ "gen_ai.request.max_tokens": settings.maxOutputTokens,
7021
7007
  "gen_ai.request.presence_penalty": settings.presencePenalty,
7022
7008
  "gen_ai.request.stop_sequences": settings.stopSequences,
7023
7009
  "gen_ai.request.temperature": settings.temperature,
@@ -7195,7 +7181,7 @@ var DefaultStreamTextResult = class {
7195
7181
  case "finish": {
7196
7182
  stepUsage = chunk.usage;
7197
7183
  stepFinishReason = chunk.finishReason;
7198
- stepProviderMetadata = chunk.experimental_providerMetadata;
7184
+ stepProviderMetadata = chunk.providerMetadata;
7199
7185
  stepLogProbs = chunk.logprobs;
7200
7186
  const msToFinish = now2() - startTimestampMs;
7201
7187
  doStreamSpan.addEvent("ai.stream.finish");
@@ -7287,7 +7273,6 @@ var DefaultStreamTextResult = class {
7287
7273
  finishReason: stepFinishReason,
7288
7274
  usage: stepUsage,
7289
7275
  providerMetadata: stepProviderMetadata,
7290
- experimental_providerMetadata: stepProviderMetadata,
7291
7276
  logprobs: stepLogProbs,
7292
7277
  request: stepRequest,
7293
7278
  response: {
@@ -7305,7 +7290,6 @@ var DefaultStreamTextResult = class {
7305
7290
  finishReason: stepFinishReason,
7306
7291
  usage: combinedUsage,
7307
7292
  providerMetadata: stepProviderMetadata,
7308
- experimental_providerMetadata: stepProviderMetadata,
7309
7293
  logprobs: stepLogProbs,
7310
7294
  response: {
7311
7295
  ...stepResponse,
@@ -7391,9 +7375,6 @@ var DefaultStreamTextResult = class {
7391
7375
  get finishReason() {
7392
7376
  return this.finishReasonPromise.value;
7393
7377
  }
7394
- get experimental_providerMetadata() {
7395
- return this.providerMetadataPromise.value;
7396
- }
7397
7378
  get providerMetadata() {
7398
7379
  return this.providerMetadataPromise.value;
7399
7380
  }
@@ -7744,8 +7725,8 @@ var DefaultStreamTextResult = class {
7744
7725
  };
7745
7726
 
7746
7727
  // errors/no-transcript-generated-error.ts
7747
- import { AISDKError as AISDKError18 } from "@ai-sdk/provider";
7748
- var NoTranscriptGeneratedError = class extends AISDKError18 {
7728
+ import { AISDKError as AISDKError19 } from "@ai-sdk/provider";
7729
+ var NoTranscriptGeneratedError = class extends AISDKError19 {
7749
7730
  constructor(options) {
7750
7731
  super({
7751
7732
  name: "AI_NoTranscriptGeneratedError",
@@ -8121,7 +8102,7 @@ function appendClientMessage({
8121
8102
  }
8122
8103
 
8123
8104
  // core/prompt/append-response-messages.ts
8124
- import { AISDKError as AISDKError19 } from "@ai-sdk/provider";
8105
+ import { AISDKError as AISDKError20 } from "@ai-sdk/provider";
8125
8106
  function appendResponseMessages({
8126
8107
  messages,
8127
8108
  responseMessages,
@@ -8204,7 +8185,7 @@ function appendResponseMessages({
8204
8185
  break;
8205
8186
  case "file":
8206
8187
  if (part.data instanceof URL) {
8207
- throw new AISDKError19({
8188
+ throw new AISDKError20({
8208
8189
  name: "InvalidAssistantFileData",
8209
8190
  message: "File data cannot be a URL"
8210
8191
  });
@@ -8338,7 +8319,7 @@ function customProvider({
8338
8319
  var experimental_customProvider = customProvider;
8339
8320
 
8340
8321
  // core/registry/no-such-provider-error.ts
8341
- import { AISDKError as AISDKError20, NoSuchModelError as NoSuchModelError3 } from "@ai-sdk/provider";
8322
+ import { AISDKError as AISDKError21, NoSuchModelError as NoSuchModelError3 } from "@ai-sdk/provider";
8342
8323
  var name16 = "AI_NoSuchProviderError";
8343
8324
  var marker16 = `vercel.ai.error.${name16}`;
8344
8325
  var symbol16 = Symbol.for(marker16);
@@ -8357,7 +8338,7 @@ var NoSuchProviderError = class extends NoSuchModelError3 {
8357
8338
  this.availableProviders = availableProviders;
8358
8339
  }
8359
8340
  static isInstance(error) {
8360
- return AISDKError20.hasMarker(error, marker16);
8341
+ return AISDKError21.hasMarker(error, marker16);
8361
8342
  }
8362
8343
  };
8363
8344
  _a16 = symbol16;
@@ -8928,6 +8909,7 @@ var MCPClient = class {
8928
8909
  async tools({
8929
8910
  schemas = "automatic"
8930
8911
  } = {}) {
8912
+ var _a17;
8931
8913
  const tools = {};
8932
8914
  try {
8933
8915
  const listToolsResult = await this.listTools();
@@ -8935,14 +8917,18 @@ var MCPClient = class {
8935
8917
  if (schemas !== "automatic" && !(name17 in schemas)) {
8936
8918
  continue;
8937
8919
  }
8938
- const parameters = schemas === "automatic" ? jsonSchema(inputSchema) : schemas[name17].parameters;
8920
+ const parameters = schemas === "automatic" ? jsonSchema({
8921
+ ...inputSchema,
8922
+ properties: (_a17 = inputSchema.properties) != null ? _a17 : {},
8923
+ additionalProperties: false
8924
+ }) : schemas[name17].parameters;
8939
8925
  const self = this;
8940
8926
  const toolWithExecute = tool({
8941
8927
  description,
8942
8928
  parameters,
8943
8929
  execute: async (args, options) => {
8944
- var _a17;
8945
- (_a17 = options == null ? void 0 : options.abortSignal) == null ? void 0 : _a17.throwIfAborted();
8930
+ var _a18;
8931
+ (_a18 = options == null ? void 0 : options.abortSignal) == null ? void 0 : _a18.throwIfAborted();
8946
8932
  return self.callTool({
8947
8933
  name: name17,
8948
8934
  args,
@@ -9282,7 +9268,7 @@ var StreamData = class {
9282
9268
  }
9283
9269
  };
9284
9270
  export {
9285
- AISDKError16 as AISDKError,
9271
+ AISDKError17 as AISDKError,
9286
9272
  APICallError2 as APICallError,
9287
9273
  DownloadError,
9288
9274
  EmptyResponseBodyError,