ai 5.0.0-beta.20 → 5.0.0-beta.21

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
@@ -1804,7 +1804,11 @@ function toResponseMessages({
1804
1804
  ).filter((part) => part.type !== "text" || part.text.length > 0).map((part) => {
1805
1805
  switch (part.type) {
1806
1806
  case "text":
1807
- return part;
1807
+ return {
1808
+ type: "text",
1809
+ text: part.text,
1810
+ providerOptions: part.providerMetadata
1811
+ };
1808
1812
  case "reasoning":
1809
1813
  return {
1810
1814
  type: "reasoning",
@@ -2552,16 +2556,19 @@ import { z as z7 } from "zod/v4";
2552
2556
  var uiMessageChunkSchema = z7.union([
2553
2557
  z7.strictObject({
2554
2558
  type: z7.literal("text-start"),
2555
- id: z7.string()
2559
+ id: z7.string(),
2560
+ providerMetadata: providerMetadataSchema.optional()
2556
2561
  }),
2557
2562
  z7.strictObject({
2558
2563
  type: z7.literal("text-delta"),
2559
2564
  id: z7.string(),
2560
- delta: z7.string()
2565
+ delta: z7.string(),
2566
+ providerMetadata: providerMetadataSchema.optional()
2561
2567
  }),
2562
2568
  z7.strictObject({
2563
2569
  type: z7.literal("text-end"),
2564
- id: z7.string()
2570
+ id: z7.string(),
2571
+ providerMetadata: providerMetadataSchema.optional()
2565
2572
  }),
2566
2573
  z7.strictObject({
2567
2574
  type: z7.literal("error"),
@@ -2583,7 +2590,8 @@ var uiMessageChunkSchema = z7.union([
2583
2590
  toolCallId: z7.string(),
2584
2591
  toolName: z7.string(),
2585
2592
  input: z7.unknown(),
2586
- providerExecuted: z7.boolean().optional()
2593
+ providerExecuted: z7.boolean().optional(),
2594
+ providerMetadata: providerMetadataSchema.optional()
2587
2595
  }),
2588
2596
  z7.strictObject({
2589
2597
  type: z7.literal("tool-output-available"),
@@ -2600,23 +2608,23 @@ var uiMessageChunkSchema = z7.union([
2600
2608
  z7.strictObject({
2601
2609
  type: z7.literal("reasoning"),
2602
2610
  text: z7.string(),
2603
- providerMetadata: z7.record(z7.string(), z7.any()).optional()
2611
+ providerMetadata: providerMetadataSchema.optional()
2604
2612
  }),
2605
2613
  z7.strictObject({
2606
2614
  type: z7.literal("reasoning-start"),
2607
2615
  id: z7.string(),
2608
- providerMetadata: z7.record(z7.string(), z7.any()).optional()
2616
+ providerMetadata: providerMetadataSchema.optional()
2609
2617
  }),
2610
2618
  z7.strictObject({
2611
2619
  type: z7.literal("reasoning-delta"),
2612
2620
  id: z7.string(),
2613
2621
  delta: z7.string(),
2614
- providerMetadata: z7.record(z7.string(), z7.any()).optional()
2622
+ providerMetadata: providerMetadataSchema.optional()
2615
2623
  }),
2616
2624
  z7.strictObject({
2617
2625
  type: z7.literal("reasoning-end"),
2618
2626
  id: z7.string(),
2619
- providerMetadata: z7.record(z7.string(), z7.any()).optional()
2627
+ providerMetadata: providerMetadataSchema.optional()
2620
2628
  }),
2621
2629
  z7.strictObject({
2622
2630
  type: z7.literal("reasoning-part-finish")
@@ -2626,8 +2634,7 @@ var uiMessageChunkSchema = z7.union([
2626
2634
  sourceId: z7.string(),
2627
2635
  url: z7.string(),
2628
2636
  title: z7.string().optional(),
2629
- providerMetadata: z7.any().optional()
2630
- // Use z.any() for generic metadata
2637
+ providerMetadata: providerMetadataSchema.optional()
2631
2638
  }),
2632
2639
  z7.strictObject({
2633
2640
  type: z7.literal("source-document"),
@@ -2635,13 +2642,13 @@ var uiMessageChunkSchema = z7.union([
2635
2642
  mediaType: z7.string(),
2636
2643
  title: z7.string(),
2637
2644
  filename: z7.string().optional(),
2638
- providerMetadata: z7.any().optional()
2639
- // Use z.any() for generic metadata
2645
+ providerMetadata: providerMetadataSchema.optional()
2640
2646
  }),
2641
2647
  z7.strictObject({
2642
2648
  type: z7.literal("file"),
2643
2649
  url: z7.string(),
2644
- mediaType: z7.string()
2650
+ mediaType: z7.string(),
2651
+ providerMetadata: providerMetadataSchema.optional()
2645
2652
  }),
2646
2653
  z7.strictObject({
2647
2654
  type: z7.string().startsWith("data-"),
@@ -3081,7 +3088,7 @@ function processUIMessageStream({
3081
3088
  new TransformStream({
3082
3089
  async transform(part, controller) {
3083
3090
  await runUpdateMessageJob(async ({ state, write }) => {
3084
- var _a16, _b;
3091
+ var _a16, _b, _c, _d;
3085
3092
  function updateToolInvocationPart(options) {
3086
3093
  var _a17;
3087
3094
  const part2 = state.message.parts.find(
@@ -3095,6 +3102,9 @@ function processUIMessageStream({
3095
3102
  anyPart.output = anyOptions.output;
3096
3103
  anyPart.errorText = anyOptions.errorText;
3097
3104
  anyPart.providerExecuted = (_a17 = anyOptions.providerExecuted) != null ? _a17 : part2.providerExecuted;
3105
+ if (anyOptions.providerMetadata != null && part2.state === "input-available") {
3106
+ part2.callProviderMetadata = anyOptions.providerMetadata;
3107
+ }
3098
3108
  } else {
3099
3109
  state.message.parts.push({
3100
3110
  type: `tool-${options.toolName}`,
@@ -3103,7 +3113,8 @@ function processUIMessageStream({
3103
3113
  input: anyOptions.input,
3104
3114
  output: anyOptions.output,
3105
3115
  errorText: anyOptions.errorText,
3106
- providerExecuted: anyOptions.providerExecuted
3116
+ providerExecuted: anyOptions.providerExecuted,
3117
+ ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}
3107
3118
  });
3108
3119
  }
3109
3120
  }
@@ -3124,6 +3135,7 @@ function processUIMessageStream({
3124
3135
  const textPart = {
3125
3136
  type: "text",
3126
3137
  text: "",
3138
+ providerMetadata: part.providerMetadata,
3127
3139
  state: "streaming"
3128
3140
  };
3129
3141
  state.activeTextParts[part.id] = textPart;
@@ -3132,13 +3144,16 @@ function processUIMessageStream({
3132
3144
  break;
3133
3145
  }
3134
3146
  case "text-delta": {
3135
- state.activeTextParts[part.id].text += part.delta;
3147
+ const textPart = state.activeTextParts[part.id];
3148
+ textPart.text += part.delta;
3149
+ textPart.providerMetadata = (_a16 = part.providerMetadata) != null ? _a16 : textPart.providerMetadata;
3136
3150
  write();
3137
3151
  break;
3138
3152
  }
3139
3153
  case "text-end": {
3140
3154
  const textPart = state.activeTextParts[part.id];
3141
3155
  textPart.state = "done";
3156
+ textPart.providerMetadata = (_b = part.providerMetadata) != null ? _b : textPart.providerMetadata;
3142
3157
  delete state.activeTextParts[part.id];
3143
3158
  write();
3144
3159
  break;
@@ -3158,13 +3173,13 @@ function processUIMessageStream({
3158
3173
  case "reasoning-delta": {
3159
3174
  const reasoningPart = state.activeReasoningParts[part.id];
3160
3175
  reasoningPart.text += part.delta;
3161
- reasoningPart.providerMetadata = (_a16 = part.providerMetadata) != null ? _a16 : reasoningPart.providerMetadata;
3176
+ reasoningPart.providerMetadata = (_c = part.providerMetadata) != null ? _c : reasoningPart.providerMetadata;
3162
3177
  write();
3163
3178
  break;
3164
3179
  }
3165
3180
  case "reasoning-end": {
3166
3181
  const reasoningPart = state.activeReasoningParts[part.id];
3167
- reasoningPart.providerMetadata = (_b = part.providerMetadata) != null ? _b : reasoningPart.providerMetadata;
3182
+ reasoningPart.providerMetadata = (_d = part.providerMetadata) != null ? _d : reasoningPart.providerMetadata;
3168
3183
  reasoningPart.state = "done";
3169
3184
  delete state.activeReasoningParts[part.id];
3170
3185
  write();
@@ -3240,7 +3255,8 @@ function processUIMessageStream({
3240
3255
  toolName: part.toolName,
3241
3256
  state: "input-available",
3242
3257
  input: part.input,
3243
- providerExecuted: part.providerExecuted
3258
+ providerExecuted: part.providerExecuted,
3259
+ providerMetadata: part.providerMetadata
3244
3260
  });
3245
3261
  write();
3246
3262
  if (onToolCall && !part.providerExecuted) {
@@ -4043,7 +4059,7 @@ var DefaultStreamTextResult = class {
4043
4059
  let activeReasoningContent = {};
4044
4060
  const eventProcessor = new TransformStream({
4045
4061
  async transform(chunk, controller) {
4046
- var _a16, _b;
4062
+ var _a16, _b, _c;
4047
4063
  controller.enqueue(chunk);
4048
4064
  const { part } = chunk;
4049
4065
  if (part.type === "text" || part.type === "reasoning" || part.type === "source" || part.type === "tool-call" || part.type === "tool-result" || part.type === "tool-input-start" || part.type === "tool-input-delta" || part.type === "raw") {
@@ -4073,7 +4089,7 @@ var DefaultStreamTextResult = class {
4073
4089
  return;
4074
4090
  }
4075
4091
  activeText.text += part.text;
4076
- activeText.providerMetadata = part.providerMetadata;
4092
+ activeText.providerMetadata = (_a16 = part.providerMetadata) != null ? _a16 : activeText.providerMetadata;
4077
4093
  }
4078
4094
  if (part.type === "text-end") {
4079
4095
  delete activeTextContent[part.id];
@@ -4099,7 +4115,7 @@ var DefaultStreamTextResult = class {
4099
4115
  return;
4100
4116
  }
4101
4117
  activeReasoning.text += part.text;
4102
- activeReasoning.providerMetadata = (_a16 = part.providerMetadata) != null ? _a16 : activeReasoning.providerMetadata;
4118
+ activeReasoning.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeReasoning.providerMetadata;
4103
4119
  }
4104
4120
  if (part.type === "reasoning-end") {
4105
4121
  const activeReasoning = activeReasoningContent[part.id];
@@ -4113,7 +4129,7 @@ var DefaultStreamTextResult = class {
4113
4129
  });
4114
4130
  return;
4115
4131
  }
4116
- activeReasoning.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeReasoning.providerMetadata;
4132
+ activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
4117
4133
  delete activeReasoningContent[part.id];
4118
4134
  }
4119
4135
  if (part.type === "file") {
@@ -4813,26 +4829,35 @@ var DefaultStreamTextResult = class {
4813
4829
  const partType = part.type;
4814
4830
  switch (partType) {
4815
4831
  case "text-start": {
4816
- controller.enqueue({ type: "text-start", id: part.id });
4832
+ controller.enqueue({
4833
+ type: "text-start",
4834
+ id: part.id,
4835
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
4836
+ });
4817
4837
  break;
4818
4838
  }
4819
4839
  case "text": {
4820
4840
  controller.enqueue({
4821
4841
  type: "text-delta",
4822
4842
  id: part.id,
4823
- delta: part.text
4843
+ delta: part.text,
4844
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
4824
4845
  });
4825
4846
  break;
4826
4847
  }
4827
4848
  case "text-end": {
4828
- controller.enqueue({ type: "text-end", id: part.id });
4849
+ controller.enqueue({
4850
+ type: "text-end",
4851
+ id: part.id,
4852
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
4853
+ });
4829
4854
  break;
4830
4855
  }
4831
4856
  case "reasoning-start": {
4832
4857
  controller.enqueue({
4833
4858
  type: "reasoning-start",
4834
4859
  id: part.id,
4835
- providerMetadata: part.providerMetadata
4860
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
4836
4861
  });
4837
4862
  break;
4838
4863
  }
@@ -4842,7 +4867,7 @@ var DefaultStreamTextResult = class {
4842
4867
  type: "reasoning-delta",
4843
4868
  id: part.id,
4844
4869
  delta: part.text,
4845
- providerMetadata: part.providerMetadata
4870
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
4846
4871
  });
4847
4872
  }
4848
4873
  break;
@@ -4851,7 +4876,7 @@ var DefaultStreamTextResult = class {
4851
4876
  controller.enqueue({
4852
4877
  type: "reasoning-end",
4853
4878
  id: part.id,
4854
- providerMetadata: part.providerMetadata
4879
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
4855
4880
  });
4856
4881
  break;
4857
4882
  }
@@ -4870,7 +4895,7 @@ var DefaultStreamTextResult = class {
4870
4895
  sourceId: part.id,
4871
4896
  url: part.url,
4872
4897
  title: part.title,
4873
- providerMetadata: part.providerMetadata
4898
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
4874
4899
  });
4875
4900
  }
4876
4901
  if (sendSources && part.sourceType === "document") {
@@ -4880,7 +4905,7 @@ var DefaultStreamTextResult = class {
4880
4905
  mediaType: part.mediaType,
4881
4906
  title: part.title,
4882
4907
  filename: part.filename,
4883
- providerMetadata: part.providerMetadata
4908
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
4884
4909
  });
4885
4910
  }
4886
4911
  break;
@@ -4908,7 +4933,8 @@ var DefaultStreamTextResult = class {
4908
4933
  toolCallId: part.toolCallId,
4909
4934
  toolName: part.toolName,
4910
4935
  input: part.input,
4911
- providerExecuted: part.providerExecuted
4936
+ providerExecuted: part.providerExecuted,
4937
+ providerMetadata: part.providerMetadata
4912
4938
  });
4913
4939
  break;
4914
4940
  }
@@ -8915,7 +8941,8 @@ function convertToModelMessages(messages, options) {
8915
8941
  if (part.type === "text") {
8916
8942
  content.push({
8917
8943
  type: "text",
8918
- text: part.text
8944
+ text: part.text,
8945
+ ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
8919
8946
  });
8920
8947
  } else if (part.type === "file") {
8921
8948
  content.push({
@@ -8942,7 +8969,8 @@ function convertToModelMessages(messages, options) {
8942
8969
  toolCallId: part.toolCallId,
8943
8970
  toolName,
8944
8971
  input: part.input,
8945
- providerExecuted: part.providerExecuted
8972
+ providerExecuted: part.providerExecuted,
8973
+ ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
8946
8974
  });
8947
8975
  if (part.providerExecuted === true && (part.state === "output-available" || part.state === "output-error")) {
8948
8976
  content.push({