ai 7.0.0-beta.6 → 7.0.0-beta.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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # ai
2
2
 
3
+ ## 7.0.0-beta.7
4
+
5
+ ### Patch Changes
6
+
7
+ - 210ed3d: feat(ai): pass result provider metadata across the stream
8
+
3
9
  ## 7.0.0-beta.6
4
10
 
5
11
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1865,6 +1865,7 @@ type UIToolInvocation<TOOL extends UITool | Tool> = {
1865
1865
  output: asUITool<TOOL>['output'];
1866
1866
  errorText?: never;
1867
1867
  callProviderMetadata?: ProviderMetadata;
1868
+ resultProviderMetadata?: ProviderMetadata;
1868
1869
  preliminary?: boolean;
1869
1870
  approval?: {
1870
1871
  id: string;
@@ -1878,6 +1879,7 @@ type UIToolInvocation<TOOL extends UITool | Tool> = {
1878
1879
  output?: never;
1879
1880
  errorText: string;
1880
1881
  callProviderMetadata?: ProviderMetadata;
1882
+ resultProviderMetadata?: ProviderMetadata;
1881
1883
  approval?: {
1882
1884
  id: string;
1883
1885
  approved: true;
@@ -1957,6 +1959,7 @@ type DynamicToolUIPart = {
1957
1959
  output: unknown;
1958
1960
  errorText?: never;
1959
1961
  callProviderMetadata?: ProviderMetadata;
1962
+ resultProviderMetadata?: ProviderMetadata;
1960
1963
  preliminary?: boolean;
1961
1964
  approval?: {
1962
1965
  id: string;
@@ -1969,6 +1972,7 @@ type DynamicToolUIPart = {
1969
1972
  output?: never;
1970
1973
  errorText: string;
1971
1974
  callProviderMetadata?: ProviderMetadata;
1975
+ resultProviderMetadata?: ProviderMetadata;
1972
1976
  approval?: {
1973
1977
  id: string;
1974
1978
  approved: true;
@@ -2102,6 +2106,7 @@ declare const uiMessageChunkSchema: _ai_sdk_provider_utils.LazySchema<{
2102
2106
  toolCallId: string;
2103
2107
  output: unknown;
2104
2108
  providerExecuted?: boolean | undefined;
2109
+ providerMetadata?: _ai_sdk_provider.SharedV4ProviderMetadata | undefined;
2105
2110
  dynamic?: boolean | undefined;
2106
2111
  preliminary?: boolean | undefined;
2107
2112
  } | {
@@ -2109,6 +2114,7 @@ declare const uiMessageChunkSchema: _ai_sdk_provider_utils.LazySchema<{
2109
2114
  toolCallId: string;
2110
2115
  errorText: string;
2111
2116
  providerExecuted?: boolean | undefined;
2117
+ providerMetadata?: _ai_sdk_provider.SharedV4ProviderMetadata | undefined;
2112
2118
  dynamic?: boolean | undefined;
2113
2119
  } | {
2114
2120
  type: "tool-output-denied";
@@ -2233,6 +2239,7 @@ type UIMessageChunk<METADATA = unknown, DATA_TYPES extends UIDataTypes = UIDataT
2233
2239
  toolCallId: string;
2234
2240
  output: unknown;
2235
2241
  providerExecuted?: boolean;
2242
+ providerMetadata?: ProviderMetadata;
2236
2243
  dynamic?: boolean;
2237
2244
  preliminary?: boolean;
2238
2245
  } | {
@@ -2240,6 +2247,7 @@ type UIMessageChunk<METADATA = unknown, DATA_TYPES extends UIDataTypes = UIDataT
2240
2247
  toolCallId: string;
2241
2248
  errorText: string;
2242
2249
  providerExecuted?: boolean;
2250
+ providerMetadata?: ProviderMetadata;
2243
2251
  dynamic?: boolean;
2244
2252
  } | {
2245
2253
  type: 'tool-output-denied';
package/dist/index.d.ts CHANGED
@@ -1865,6 +1865,7 @@ type UIToolInvocation<TOOL extends UITool | Tool> = {
1865
1865
  output: asUITool<TOOL>['output'];
1866
1866
  errorText?: never;
1867
1867
  callProviderMetadata?: ProviderMetadata;
1868
+ resultProviderMetadata?: ProviderMetadata;
1868
1869
  preliminary?: boolean;
1869
1870
  approval?: {
1870
1871
  id: string;
@@ -1878,6 +1879,7 @@ type UIToolInvocation<TOOL extends UITool | Tool> = {
1878
1879
  output?: never;
1879
1880
  errorText: string;
1880
1881
  callProviderMetadata?: ProviderMetadata;
1882
+ resultProviderMetadata?: ProviderMetadata;
1881
1883
  approval?: {
1882
1884
  id: string;
1883
1885
  approved: true;
@@ -1957,6 +1959,7 @@ type DynamicToolUIPart = {
1957
1959
  output: unknown;
1958
1960
  errorText?: never;
1959
1961
  callProviderMetadata?: ProviderMetadata;
1962
+ resultProviderMetadata?: ProviderMetadata;
1960
1963
  preliminary?: boolean;
1961
1964
  approval?: {
1962
1965
  id: string;
@@ -1969,6 +1972,7 @@ type DynamicToolUIPart = {
1969
1972
  output?: never;
1970
1973
  errorText: string;
1971
1974
  callProviderMetadata?: ProviderMetadata;
1975
+ resultProviderMetadata?: ProviderMetadata;
1972
1976
  approval?: {
1973
1977
  id: string;
1974
1978
  approved: true;
@@ -2102,6 +2106,7 @@ declare const uiMessageChunkSchema: _ai_sdk_provider_utils.LazySchema<{
2102
2106
  toolCallId: string;
2103
2107
  output: unknown;
2104
2108
  providerExecuted?: boolean | undefined;
2109
+ providerMetadata?: _ai_sdk_provider.SharedV4ProviderMetadata | undefined;
2105
2110
  dynamic?: boolean | undefined;
2106
2111
  preliminary?: boolean | undefined;
2107
2112
  } | {
@@ -2109,6 +2114,7 @@ declare const uiMessageChunkSchema: _ai_sdk_provider_utils.LazySchema<{
2109
2114
  toolCallId: string;
2110
2115
  errorText: string;
2111
2116
  providerExecuted?: boolean | undefined;
2117
+ providerMetadata?: _ai_sdk_provider.SharedV4ProviderMetadata | undefined;
2112
2118
  dynamic?: boolean | undefined;
2113
2119
  } | {
2114
2120
  type: "tool-output-denied";
@@ -2233,6 +2239,7 @@ type UIMessageChunk<METADATA = unknown, DATA_TYPES extends UIDataTypes = UIDataT
2233
2239
  toolCallId: string;
2234
2240
  output: unknown;
2235
2241
  providerExecuted?: boolean;
2242
+ providerMetadata?: ProviderMetadata;
2236
2243
  dynamic?: boolean;
2237
2244
  preliminary?: boolean;
2238
2245
  } | {
@@ -2240,6 +2247,7 @@ type UIMessageChunk<METADATA = unknown, DATA_TYPES extends UIDataTypes = UIDataT
2240
2247
  toolCallId: string;
2241
2248
  errorText: string;
2242
2249
  providerExecuted?: boolean;
2250
+ providerMetadata?: ProviderMetadata;
2243
2251
  dynamic?: boolean;
2244
2252
  } | {
2245
2253
  type: 'tool-output-denied';
package/dist/index.js CHANGED
@@ -1370,7 +1370,7 @@ var import_provider_utils3 = require("@ai-sdk/provider-utils");
1370
1370
  var import_provider_utils4 = require("@ai-sdk/provider-utils");
1371
1371
 
1372
1372
  // src/version.ts
1373
- var VERSION = true ? "7.0.0-beta.6" : "0.0.0-test";
1373
+ var VERSION = true ? "7.0.0-beta.7" : "0.0.0-test";
1374
1374
 
1375
1375
  // src/util/download/download.ts
1376
1376
  var download = async ({
@@ -5058,7 +5058,8 @@ function asContent({
5058
5058
  input: void 0,
5059
5059
  error: part.result,
5060
5060
  providerExecuted: true,
5061
- dynamic: part.dynamic
5061
+ dynamic: part.dynamic,
5062
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
5062
5063
  });
5063
5064
  } else {
5064
5065
  contentParts.push({
@@ -5068,7 +5069,8 @@ function asContent({
5068
5069
  input: void 0,
5069
5070
  output: part.result,
5070
5071
  providerExecuted: true,
5071
- dynamic: part.dynamic
5072
+ dynamic: part.dynamic,
5073
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
5072
5074
  });
5073
5075
  }
5074
5076
  break;
@@ -5081,7 +5083,8 @@ function asContent({
5081
5083
  input: toolCall.input,
5082
5084
  error: part.result,
5083
5085
  providerExecuted: true,
5084
- dynamic: toolCall.dynamic
5086
+ dynamic: toolCall.dynamic,
5087
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
5085
5088
  });
5086
5089
  } else {
5087
5090
  contentParts.push({
@@ -5091,7 +5094,8 @@ function asContent({
5091
5094
  input: toolCall.input,
5092
5095
  output: part.result,
5093
5096
  providerExecuted: true,
5094
- dynamic: toolCall.dynamic
5097
+ dynamic: toolCall.dynamic,
5098
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
5095
5099
  });
5096
5100
  }
5097
5101
  break;
@@ -5340,6 +5344,7 @@ var uiMessageChunkSchema = (0, import_provider_utils16.lazySchema)(
5340
5344
  toolCallId: import_v47.z.string(),
5341
5345
  output: import_v47.z.unknown(),
5342
5346
  providerExecuted: import_v47.z.boolean().optional(),
5347
+ providerMetadata: providerMetadataSchema.optional(),
5343
5348
  dynamic: import_v47.z.boolean().optional(),
5344
5349
  preliminary: import_v47.z.boolean().optional()
5345
5350
  }),
@@ -5348,6 +5353,7 @@ var uiMessageChunkSchema = (0, import_provider_utils16.lazySchema)(
5348
5353
  toolCallId: import_v47.z.string(),
5349
5354
  errorText: import_v47.z.string(),
5350
5355
  providerExecuted: import_v47.z.boolean().optional(),
5356
+ providerMetadata: providerMetadataSchema.optional(),
5351
5357
  dynamic: import_v47.z.boolean().optional()
5352
5358
  }),
5353
5359
  import_v47.z.strictObject({
@@ -5532,8 +5538,14 @@ function processUIMessageStream({
5532
5538
  anyPart.title = options.title;
5533
5539
  }
5534
5540
  anyPart.providerExecuted = (_a22 = anyOptions.providerExecuted) != null ? _a22 : part.providerExecuted;
5535
- if (anyOptions.providerMetadata != null) {
5536
- part.callProviderMetadata = anyOptions.providerMetadata;
5541
+ const providerMetadata = anyOptions.providerMetadata;
5542
+ if (providerMetadata != null) {
5543
+ if (options.state === "output-available" || options.state === "output-error") {
5544
+ const resultPart = part;
5545
+ resultPart.resultProviderMetadata = providerMetadata;
5546
+ } else {
5547
+ part.callProviderMetadata = providerMetadata;
5548
+ }
5537
5549
  }
5538
5550
  } else {
5539
5551
  state.message.parts.push({
@@ -5547,7 +5559,8 @@ function processUIMessageStream({
5547
5559
  errorText: anyOptions.errorText,
5548
5560
  providerExecuted: anyOptions.providerExecuted,
5549
5561
  preliminary: anyOptions.preliminary,
5550
- ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}
5562
+ ...anyOptions.providerMetadata != null && (options.state === "output-available" || options.state === "output-error") ? { resultProviderMetadata: anyOptions.providerMetadata } : {},
5563
+ ...anyOptions.providerMetadata != null && !(options.state === "output-available" || options.state === "output-error") ? { callProviderMetadata: anyOptions.providerMetadata } : {}
5551
5564
  });
5552
5565
  }
5553
5566
  }
@@ -5570,8 +5583,14 @@ function processUIMessageStream({
5570
5583
  anyPart.title = options.title;
5571
5584
  }
5572
5585
  anyPart.providerExecuted = (_b2 = anyOptions.providerExecuted) != null ? _b2 : part.providerExecuted;
5573
- if (anyOptions.providerMetadata != null) {
5574
- part.callProviderMetadata = anyOptions.providerMetadata;
5586
+ const providerMetadata = anyOptions.providerMetadata;
5587
+ if (providerMetadata != null) {
5588
+ if (options.state === "output-available" || options.state === "output-error") {
5589
+ const resultPart = part;
5590
+ resultPart.resultProviderMetadata = providerMetadata;
5591
+ } else {
5592
+ part.callProviderMetadata = providerMetadata;
5593
+ }
5575
5594
  }
5576
5595
  } else {
5577
5596
  state.message.parts.push({
@@ -5585,7 +5604,8 @@ function processUIMessageStream({
5585
5604
  preliminary: anyOptions.preliminary,
5586
5605
  providerExecuted: anyOptions.providerExecuted,
5587
5606
  title: options.title,
5588
- ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}
5607
+ ...anyOptions.providerMetadata != null && (options.state === "output-available" || options.state === "output-error") ? { resultProviderMetadata: anyOptions.providerMetadata } : {},
5608
+ ...anyOptions.providerMetadata != null && !(options.state === "output-available" || options.state === "output-error") ? { callProviderMetadata: anyOptions.providerMetadata } : {}
5589
5609
  });
5590
5610
  }
5591
5611
  }
@@ -5869,6 +5889,7 @@ function processUIMessageStream({
5869
5889
  output: chunk.output,
5870
5890
  preliminary: chunk.preliminary,
5871
5891
  providerExecuted: chunk.providerExecuted,
5892
+ providerMetadata: chunk.providerMetadata,
5872
5893
  title: toolInvocation.title
5873
5894
  });
5874
5895
  } else {
@@ -5880,6 +5901,7 @@ function processUIMessageStream({
5880
5901
  output: chunk.output,
5881
5902
  providerExecuted: chunk.providerExecuted,
5882
5903
  preliminary: chunk.preliminary,
5904
+ providerMetadata: chunk.providerMetadata,
5883
5905
  title: toolInvocation.title
5884
5906
  });
5885
5907
  }
@@ -5896,6 +5918,7 @@ function processUIMessageStream({
5896
5918
  input: toolInvocation.input,
5897
5919
  errorText: chunk.errorText,
5898
5920
  providerExecuted: chunk.providerExecuted,
5921
+ providerMetadata: chunk.providerMetadata,
5899
5922
  title: toolInvocation.title
5900
5923
  });
5901
5924
  } else {
@@ -5907,6 +5930,7 @@ function processUIMessageStream({
5907
5930
  rawInput: toolInvocation.rawInput,
5908
5931
  errorText: chunk.errorText,
5909
5932
  providerExecuted: chunk.providerExecuted,
5933
+ providerMetadata: chunk.providerMetadata,
5910
5934
  title: toolInvocation.title
5911
5935
  });
5912
5936
  }
@@ -6494,7 +6518,8 @@ function runToolsTransformation({
6494
6518
  input: toolInputs.get(chunk.toolCallId),
6495
6519
  providerExecuted: true,
6496
6520
  error: chunk.result,
6497
- dynamic: chunk.dynamic
6521
+ dynamic: chunk.dynamic,
6522
+ ...chunk.providerMetadata != null ? { providerMetadata: chunk.providerMetadata } : {}
6498
6523
  });
6499
6524
  } else {
6500
6525
  controller.enqueue({
@@ -6504,7 +6529,8 @@ function runToolsTransformation({
6504
6529
  input: toolInputs.get(chunk.toolCallId),
6505
6530
  output: chunk.result,
6506
6531
  providerExecuted: true,
6507
- dynamic: chunk.dynamic
6532
+ dynamic: chunk.dynamic,
6533
+ ...chunk.providerMetadata != null ? { providerMetadata: chunk.providerMetadata } : {}
6508
6534
  });
6509
6535
  }
6510
6536
  break;
@@ -8126,6 +8152,7 @@ var DefaultStreamTextResult = class {
8126
8152
  toolCallId: part.toolCallId,
8127
8153
  output: part.output,
8128
8154
  ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
8155
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},
8129
8156
  ...part.preliminary != null ? { preliminary: part.preliminary } : {},
8130
8157
  ...dynamic != null ? { dynamic } : {}
8131
8158
  });
@@ -8138,6 +8165,7 @@ var DefaultStreamTextResult = class {
8138
8165
  toolCallId: part.toolCallId,
8139
8166
  errorText: onError(part.error),
8140
8167
  ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
8168
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},
8141
8169
  ...dynamic != null ? { dynamic } : {}
8142
8170
  });
8143
8171
  break;
@@ -8630,7 +8658,7 @@ async function convertToModelMessages(messages, options) {
8630
8658
  if (message.parts != null) {
8631
8659
  let block = [];
8632
8660
  async function processBlock() {
8633
- var _a21, _b, _c, _d, _e, _f;
8661
+ var _a21, _b, _c, _d, _e, _f, _g;
8634
8662
  if (block.length === 0) {
8635
8663
  return;
8636
8664
  }
@@ -8675,6 +8703,7 @@ async function convertToModelMessages(messages, options) {
8675
8703
  });
8676
8704
  }
8677
8705
  if (part.providerExecuted === true && part.state !== "approval-responded" && (part.state === "output-available" || part.state === "output-error")) {
8706
+ const resultProviderMetadata = (_b = part.resultProviderMetadata) != null ? _b : part.callProviderMetadata;
8678
8707
  content.push({
8679
8708
  type: "tool-result",
8680
8709
  toolCallId: part.toolCallId,
@@ -8683,15 +8712,15 @@ async function convertToModelMessages(messages, options) {
8683
8712
  toolCallId: part.toolCallId,
8684
8713
  input: part.input,
8685
8714
  output: part.state === "output-error" ? part.errorText : part.output,
8686
- tool: (_b = options == null ? void 0 : options.tools) == null ? void 0 : _b[toolName],
8715
+ tool: (_c = options == null ? void 0 : options.tools) == null ? void 0 : _c[toolName],
8687
8716
  errorMode: part.state === "output-error" ? "json" : "none"
8688
8717
  }),
8689
- ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
8718
+ ...resultProviderMetadata != null ? { providerOptions: resultProviderMetadata } : {}
8690
8719
  });
8691
8720
  }
8692
8721
  }
8693
8722
  } else if (isDataUIPart(part)) {
8694
- const dataPart = (_c = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _c.call(
8723
+ const dataPart = (_d = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _d.call(
8695
8724
  options,
8696
8725
  part
8697
8726
  );
@@ -8717,7 +8746,7 @@ async function convertToModelMessages(messages, options) {
8717
8746
  {
8718
8747
  const content2 = [];
8719
8748
  for (const toolPart of toolParts) {
8720
- if (((_d = toolPart.approval) == null ? void 0 : _d.approved) != null) {
8749
+ if (((_e = toolPart.approval) == null ? void 0 : _e.approved) != null) {
8721
8750
  content2.push({
8722
8751
  type: "tool-approval-response",
8723
8752
  approvalId: toolPart.approval.id,
@@ -8737,7 +8766,7 @@ async function convertToModelMessages(messages, options) {
8737
8766
  toolName: getToolName(toolPart),
8738
8767
  output: {
8739
8768
  type: "error-text",
8740
- value: (_e = toolPart.approval.reason) != null ? _e : "Tool execution denied."
8769
+ value: (_f = toolPart.approval.reason) != null ? _f : "Tool execution denied."
8741
8770
  },
8742
8771
  ...toolPart.callProviderMetadata != null ? { providerOptions: toolPart.callProviderMetadata } : {}
8743
8772
  });
@@ -8754,7 +8783,7 @@ async function convertToModelMessages(messages, options) {
8754
8783
  toolCallId: toolPart.toolCallId,
8755
8784
  input: toolPart.input,
8756
8785
  output: toolPart.state === "output-error" ? toolPart.errorText : toolPart.output,
8757
- tool: (_f = options == null ? void 0 : options.tools) == null ? void 0 : _f[toolName],
8786
+ tool: (_g = options == null ? void 0 : options.tools) == null ? void 0 : _g[toolName],
8758
8787
  errorMode: toolPart.state === "output-error" ? "text" : "none"
8759
8788
  }),
8760
8789
  ...toolPart.callProviderMetadata != null ? { providerOptions: toolPart.callProviderMetadata } : {}
@@ -8918,6 +8947,7 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
8918
8947
  output: import_v48.z.unknown(),
8919
8948
  errorText: import_v48.z.never().optional(),
8920
8949
  callProviderMetadata: providerMetadataSchema.optional(),
8950
+ resultProviderMetadata: providerMetadataSchema.optional(),
8921
8951
  preliminary: import_v48.z.boolean().optional(),
8922
8952
  approval: import_v48.z.object({
8923
8953
  id: import_v48.z.string(),
@@ -8936,6 +8966,7 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
8936
8966
  output: import_v48.z.never().optional(),
8937
8967
  errorText: import_v48.z.string(),
8938
8968
  callProviderMetadata: providerMetadataSchema.optional(),
8969
+ resultProviderMetadata: providerMetadataSchema.optional(),
8939
8970
  approval: import_v48.z.object({
8940
8971
  id: import_v48.z.string(),
8941
8972
  approved: import_v48.z.literal(true),
@@ -9019,6 +9050,7 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
9019
9050
  output: import_v48.z.unknown(),
9020
9051
  errorText: import_v48.z.never().optional(),
9021
9052
  callProviderMetadata: providerMetadataSchema.optional(),
9053
+ resultProviderMetadata: providerMetadataSchema.optional(),
9022
9054
  preliminary: import_v48.z.boolean().optional(),
9023
9055
  approval: import_v48.z.object({
9024
9056
  id: import_v48.z.string(),
@@ -9036,6 +9068,7 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
9036
9068
  output: import_v48.z.never().optional(),
9037
9069
  errorText: import_v48.z.string(),
9038
9070
  callProviderMetadata: providerMetadataSchema.optional(),
9071
+ resultProviderMetadata: providerMetadataSchema.optional(),
9039
9072
  approval: import_v48.z.object({
9040
9073
  id: import_v48.z.string(),
9041
9074
  approved: import_v48.z.literal(true),