ai 6.0.119 → 6.0.121

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,18 @@
1
1
  # ai
2
2
 
3
+ ## 6.0.121
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [efdaefc]
8
+ - @ai-sdk/gateway@3.0.69
9
+
10
+ ## 6.0.120
11
+
12
+ ### Patch Changes
13
+
14
+ - 78c0e26: feat(ai): pass result provider metadata across the stream
15
+
3
16
  ## 6.0.119
4
17
 
5
18
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1838,6 +1838,7 @@ type UIToolInvocation<TOOL extends UITool | Tool> = {
1838
1838
  output: asUITool<TOOL>['output'];
1839
1839
  errorText?: never;
1840
1840
  callProviderMetadata?: ProviderMetadata;
1841
+ resultProviderMetadata?: ProviderMetadata;
1841
1842
  preliminary?: boolean;
1842
1843
  approval?: {
1843
1844
  id: string;
@@ -1851,6 +1852,7 @@ type UIToolInvocation<TOOL extends UITool | Tool> = {
1851
1852
  output?: never;
1852
1853
  errorText: string;
1853
1854
  callProviderMetadata?: ProviderMetadata;
1855
+ resultProviderMetadata?: ProviderMetadata;
1854
1856
  approval?: {
1855
1857
  id: string;
1856
1858
  approved: true;
@@ -1930,6 +1932,7 @@ type DynamicToolUIPart = {
1930
1932
  output: unknown;
1931
1933
  errorText?: never;
1932
1934
  callProviderMetadata?: ProviderMetadata;
1935
+ resultProviderMetadata?: ProviderMetadata;
1933
1936
  preliminary?: boolean;
1934
1937
  approval?: {
1935
1938
  id: string;
@@ -1942,6 +1945,7 @@ type DynamicToolUIPart = {
1942
1945
  output?: never;
1943
1946
  errorText: string;
1944
1947
  callProviderMetadata?: ProviderMetadata;
1948
+ resultProviderMetadata?: ProviderMetadata;
1945
1949
  approval?: {
1946
1950
  id: string;
1947
1951
  approved: true;
@@ -2075,6 +2079,7 @@ declare const uiMessageChunkSchema: _ai_sdk_provider_utils.LazySchema<{
2075
2079
  toolCallId: string;
2076
2080
  output: unknown;
2077
2081
  providerExecuted?: boolean | undefined;
2082
+ providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2078
2083
  dynamic?: boolean | undefined;
2079
2084
  preliminary?: boolean | undefined;
2080
2085
  } | {
@@ -2082,6 +2087,7 @@ declare const uiMessageChunkSchema: _ai_sdk_provider_utils.LazySchema<{
2082
2087
  toolCallId: string;
2083
2088
  errorText: string;
2084
2089
  providerExecuted?: boolean | undefined;
2090
+ providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2085
2091
  dynamic?: boolean | undefined;
2086
2092
  } | {
2087
2093
  type: "tool-output-denied";
@@ -2206,6 +2212,7 @@ type UIMessageChunk<METADATA = unknown, DATA_TYPES extends UIDataTypes = UIDataT
2206
2212
  toolCallId: string;
2207
2213
  output: unknown;
2208
2214
  providerExecuted?: boolean;
2215
+ providerMetadata?: ProviderMetadata;
2209
2216
  dynamic?: boolean;
2210
2217
  preliminary?: boolean;
2211
2218
  } | {
@@ -2213,6 +2220,7 @@ type UIMessageChunk<METADATA = unknown, DATA_TYPES extends UIDataTypes = UIDataT
2213
2220
  toolCallId: string;
2214
2221
  errorText: string;
2215
2222
  providerExecuted?: boolean;
2223
+ providerMetadata?: ProviderMetadata;
2216
2224
  dynamic?: boolean;
2217
2225
  } | {
2218
2226
  type: 'tool-output-denied';
package/dist/index.d.ts CHANGED
@@ -1838,6 +1838,7 @@ type UIToolInvocation<TOOL extends UITool | Tool> = {
1838
1838
  output: asUITool<TOOL>['output'];
1839
1839
  errorText?: never;
1840
1840
  callProviderMetadata?: ProviderMetadata;
1841
+ resultProviderMetadata?: ProviderMetadata;
1841
1842
  preliminary?: boolean;
1842
1843
  approval?: {
1843
1844
  id: string;
@@ -1851,6 +1852,7 @@ type UIToolInvocation<TOOL extends UITool | Tool> = {
1851
1852
  output?: never;
1852
1853
  errorText: string;
1853
1854
  callProviderMetadata?: ProviderMetadata;
1855
+ resultProviderMetadata?: ProviderMetadata;
1854
1856
  approval?: {
1855
1857
  id: string;
1856
1858
  approved: true;
@@ -1930,6 +1932,7 @@ type DynamicToolUIPart = {
1930
1932
  output: unknown;
1931
1933
  errorText?: never;
1932
1934
  callProviderMetadata?: ProviderMetadata;
1935
+ resultProviderMetadata?: ProviderMetadata;
1933
1936
  preliminary?: boolean;
1934
1937
  approval?: {
1935
1938
  id: string;
@@ -1942,6 +1945,7 @@ type DynamicToolUIPart = {
1942
1945
  output?: never;
1943
1946
  errorText: string;
1944
1947
  callProviderMetadata?: ProviderMetadata;
1948
+ resultProviderMetadata?: ProviderMetadata;
1945
1949
  approval?: {
1946
1950
  id: string;
1947
1951
  approved: true;
@@ -2075,6 +2079,7 @@ declare const uiMessageChunkSchema: _ai_sdk_provider_utils.LazySchema<{
2075
2079
  toolCallId: string;
2076
2080
  output: unknown;
2077
2081
  providerExecuted?: boolean | undefined;
2082
+ providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2078
2083
  dynamic?: boolean | undefined;
2079
2084
  preliminary?: boolean | undefined;
2080
2085
  } | {
@@ -2082,6 +2087,7 @@ declare const uiMessageChunkSchema: _ai_sdk_provider_utils.LazySchema<{
2082
2087
  toolCallId: string;
2083
2088
  errorText: string;
2084
2089
  providerExecuted?: boolean | undefined;
2090
+ providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2085
2091
  dynamic?: boolean | undefined;
2086
2092
  } | {
2087
2093
  type: "tool-output-denied";
@@ -2206,6 +2212,7 @@ type UIMessageChunk<METADATA = unknown, DATA_TYPES extends UIDataTypes = UIDataT
2206
2212
  toolCallId: string;
2207
2213
  output: unknown;
2208
2214
  providerExecuted?: boolean;
2215
+ providerMetadata?: ProviderMetadata;
2209
2216
  dynamic?: boolean;
2210
2217
  preliminary?: boolean;
2211
2218
  } | {
@@ -2213,6 +2220,7 @@ type UIMessageChunk<METADATA = unknown, DATA_TYPES extends UIDataTypes = UIDataT
2213
2220
  toolCallId: string;
2214
2221
  errorText: string;
2215
2222
  providerExecuted?: boolean;
2223
+ providerMetadata?: ProviderMetadata;
2216
2224
  dynamic?: boolean;
2217
2225
  } | {
2218
2226
  type: 'tool-output-denied';
package/dist/index.js CHANGED
@@ -1230,7 +1230,7 @@ var import_provider_utils3 = require("@ai-sdk/provider-utils");
1230
1230
  var import_provider_utils4 = require("@ai-sdk/provider-utils");
1231
1231
 
1232
1232
  // src/version.ts
1233
- var VERSION = true ? "6.0.119" : "0.0.0-test";
1233
+ var VERSION = true ? "6.0.121" : "0.0.0-test";
1234
1234
 
1235
1235
  // src/util/download/download.ts
1236
1236
  var download = async ({
@@ -4918,7 +4918,8 @@ function asContent({
4918
4918
  input: void 0,
4919
4919
  error: part.result,
4920
4920
  providerExecuted: true,
4921
- dynamic: part.dynamic
4921
+ dynamic: part.dynamic,
4922
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
4922
4923
  });
4923
4924
  } else {
4924
4925
  contentParts.push({
@@ -4928,7 +4929,8 @@ function asContent({
4928
4929
  input: void 0,
4929
4930
  output: part.result,
4930
4931
  providerExecuted: true,
4931
- dynamic: part.dynamic
4932
+ dynamic: part.dynamic,
4933
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
4932
4934
  });
4933
4935
  }
4934
4936
  break;
@@ -4941,7 +4943,8 @@ function asContent({
4941
4943
  input: toolCall.input,
4942
4944
  error: part.result,
4943
4945
  providerExecuted: true,
4944
- dynamic: toolCall.dynamic
4946
+ dynamic: toolCall.dynamic,
4947
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
4945
4948
  });
4946
4949
  } else {
4947
4950
  contentParts.push({
@@ -4951,7 +4954,8 @@ function asContent({
4951
4954
  input: toolCall.input,
4952
4955
  output: part.result,
4953
4956
  providerExecuted: true,
4954
- dynamic: toolCall.dynamic
4957
+ dynamic: toolCall.dynamic,
4958
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
4955
4959
  });
4956
4960
  }
4957
4961
  break;
@@ -5200,6 +5204,7 @@ var uiMessageChunkSchema = (0, import_provider_utils16.lazySchema)(
5200
5204
  toolCallId: import_v47.z.string(),
5201
5205
  output: import_v47.z.unknown(),
5202
5206
  providerExecuted: import_v47.z.boolean().optional(),
5207
+ providerMetadata: providerMetadataSchema.optional(),
5203
5208
  dynamic: import_v47.z.boolean().optional(),
5204
5209
  preliminary: import_v47.z.boolean().optional()
5205
5210
  }),
@@ -5208,6 +5213,7 @@ var uiMessageChunkSchema = (0, import_provider_utils16.lazySchema)(
5208
5213
  toolCallId: import_v47.z.string(),
5209
5214
  errorText: import_v47.z.string(),
5210
5215
  providerExecuted: import_v47.z.boolean().optional(),
5216
+ providerMetadata: providerMetadataSchema.optional(),
5211
5217
  dynamic: import_v47.z.boolean().optional()
5212
5218
  }),
5213
5219
  import_v47.z.strictObject({
@@ -5392,8 +5398,14 @@ function processUIMessageStream({
5392
5398
  anyPart.title = options.title;
5393
5399
  }
5394
5400
  anyPart.providerExecuted = (_a22 = anyOptions.providerExecuted) != null ? _a22 : part.providerExecuted;
5395
- if (anyOptions.providerMetadata != null) {
5396
- part.callProviderMetadata = anyOptions.providerMetadata;
5401
+ const providerMetadata = anyOptions.providerMetadata;
5402
+ if (providerMetadata != null) {
5403
+ if (options.state === "output-available" || options.state === "output-error") {
5404
+ const resultPart = part;
5405
+ resultPart.resultProviderMetadata = providerMetadata;
5406
+ } else {
5407
+ part.callProviderMetadata = providerMetadata;
5408
+ }
5397
5409
  }
5398
5410
  } else {
5399
5411
  state.message.parts.push({
@@ -5407,7 +5419,8 @@ function processUIMessageStream({
5407
5419
  errorText: anyOptions.errorText,
5408
5420
  providerExecuted: anyOptions.providerExecuted,
5409
5421
  preliminary: anyOptions.preliminary,
5410
- ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}
5422
+ ...anyOptions.providerMetadata != null && (options.state === "output-available" || options.state === "output-error") ? { resultProviderMetadata: anyOptions.providerMetadata } : {},
5423
+ ...anyOptions.providerMetadata != null && !(options.state === "output-available" || options.state === "output-error") ? { callProviderMetadata: anyOptions.providerMetadata } : {}
5411
5424
  });
5412
5425
  }
5413
5426
  }
@@ -5430,8 +5443,14 @@ function processUIMessageStream({
5430
5443
  anyPart.title = options.title;
5431
5444
  }
5432
5445
  anyPart.providerExecuted = (_b2 = anyOptions.providerExecuted) != null ? _b2 : part.providerExecuted;
5433
- if (anyOptions.providerMetadata != null) {
5434
- part.callProviderMetadata = anyOptions.providerMetadata;
5446
+ const providerMetadata = anyOptions.providerMetadata;
5447
+ if (providerMetadata != null) {
5448
+ if (options.state === "output-available" || options.state === "output-error") {
5449
+ const resultPart = part;
5450
+ resultPart.resultProviderMetadata = providerMetadata;
5451
+ } else {
5452
+ part.callProviderMetadata = providerMetadata;
5453
+ }
5435
5454
  }
5436
5455
  } else {
5437
5456
  state.message.parts.push({
@@ -5445,7 +5464,8 @@ function processUIMessageStream({
5445
5464
  preliminary: anyOptions.preliminary,
5446
5465
  providerExecuted: anyOptions.providerExecuted,
5447
5466
  title: options.title,
5448
- ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}
5467
+ ...anyOptions.providerMetadata != null && (options.state === "output-available" || options.state === "output-error") ? { resultProviderMetadata: anyOptions.providerMetadata } : {},
5468
+ ...anyOptions.providerMetadata != null && !(options.state === "output-available" || options.state === "output-error") ? { callProviderMetadata: anyOptions.providerMetadata } : {}
5449
5469
  });
5450
5470
  }
5451
5471
  }
@@ -5729,6 +5749,7 @@ function processUIMessageStream({
5729
5749
  output: chunk.output,
5730
5750
  preliminary: chunk.preliminary,
5731
5751
  providerExecuted: chunk.providerExecuted,
5752
+ providerMetadata: chunk.providerMetadata,
5732
5753
  title: toolInvocation.title
5733
5754
  });
5734
5755
  } else {
@@ -5740,6 +5761,7 @@ function processUIMessageStream({
5740
5761
  output: chunk.output,
5741
5762
  providerExecuted: chunk.providerExecuted,
5742
5763
  preliminary: chunk.preliminary,
5764
+ providerMetadata: chunk.providerMetadata,
5743
5765
  title: toolInvocation.title
5744
5766
  });
5745
5767
  }
@@ -5756,6 +5778,7 @@ function processUIMessageStream({
5756
5778
  input: toolInvocation.input,
5757
5779
  errorText: chunk.errorText,
5758
5780
  providerExecuted: chunk.providerExecuted,
5781
+ providerMetadata: chunk.providerMetadata,
5759
5782
  title: toolInvocation.title
5760
5783
  });
5761
5784
  } else {
@@ -5767,6 +5790,7 @@ function processUIMessageStream({
5767
5790
  rawInput: toolInvocation.rawInput,
5768
5791
  errorText: chunk.errorText,
5769
5792
  providerExecuted: chunk.providerExecuted,
5793
+ providerMetadata: chunk.providerMetadata,
5770
5794
  title: toolInvocation.title
5771
5795
  });
5772
5796
  }
@@ -6354,7 +6378,8 @@ function runToolsTransformation({
6354
6378
  input: toolInputs.get(chunk.toolCallId),
6355
6379
  providerExecuted: true,
6356
6380
  error: chunk.result,
6357
- dynamic: chunk.dynamic
6381
+ dynamic: chunk.dynamic,
6382
+ ...chunk.providerMetadata != null ? { providerMetadata: chunk.providerMetadata } : {}
6358
6383
  });
6359
6384
  } else {
6360
6385
  controller.enqueue({
@@ -6364,7 +6389,8 @@ function runToolsTransformation({
6364
6389
  input: toolInputs.get(chunk.toolCallId),
6365
6390
  output: chunk.result,
6366
6391
  providerExecuted: true,
6367
- dynamic: chunk.dynamic
6392
+ dynamic: chunk.dynamic,
6393
+ ...chunk.providerMetadata != null ? { providerMetadata: chunk.providerMetadata } : {}
6368
6394
  });
6369
6395
  }
6370
6396
  break;
@@ -7986,6 +8012,7 @@ var DefaultStreamTextResult = class {
7986
8012
  toolCallId: part.toolCallId,
7987
8013
  output: part.output,
7988
8014
  ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
8015
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},
7989
8016
  ...part.preliminary != null ? { preliminary: part.preliminary } : {},
7990
8017
  ...dynamic != null ? { dynamic } : {}
7991
8018
  });
@@ -7998,6 +8025,7 @@ var DefaultStreamTextResult = class {
7998
8025
  toolCallId: part.toolCallId,
7999
8026
  errorText: onError(part.error),
8000
8027
  ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
8028
+ ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},
8001
8029
  ...dynamic != null ? { dynamic } : {}
8002
8030
  });
8003
8031
  break;
@@ -8490,7 +8518,7 @@ async function convertToModelMessages(messages, options) {
8490
8518
  if (message.parts != null) {
8491
8519
  let block = [];
8492
8520
  async function processBlock() {
8493
- var _a21, _b, _c, _d, _e, _f;
8521
+ var _a21, _b, _c, _d, _e, _f, _g;
8494
8522
  if (block.length === 0) {
8495
8523
  return;
8496
8524
  }
@@ -8535,6 +8563,7 @@ async function convertToModelMessages(messages, options) {
8535
8563
  });
8536
8564
  }
8537
8565
  if (part.providerExecuted === true && part.state !== "approval-responded" && (part.state === "output-available" || part.state === "output-error")) {
8566
+ const resultProviderMetadata = (_b = part.resultProviderMetadata) != null ? _b : part.callProviderMetadata;
8538
8567
  content.push({
8539
8568
  type: "tool-result",
8540
8569
  toolCallId: part.toolCallId,
@@ -8543,15 +8572,15 @@ async function convertToModelMessages(messages, options) {
8543
8572
  toolCallId: part.toolCallId,
8544
8573
  input: part.input,
8545
8574
  output: part.state === "output-error" ? part.errorText : part.output,
8546
- tool: (_b = options == null ? void 0 : options.tools) == null ? void 0 : _b[toolName],
8575
+ tool: (_c = options == null ? void 0 : options.tools) == null ? void 0 : _c[toolName],
8547
8576
  errorMode: part.state === "output-error" ? "json" : "none"
8548
8577
  }),
8549
- ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
8578
+ ...resultProviderMetadata != null ? { providerOptions: resultProviderMetadata } : {}
8550
8579
  });
8551
8580
  }
8552
8581
  }
8553
8582
  } else if (isDataUIPart(part)) {
8554
- const dataPart = (_c = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _c.call(
8583
+ const dataPart = (_d = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _d.call(
8555
8584
  options,
8556
8585
  part
8557
8586
  );
@@ -8577,7 +8606,7 @@ async function convertToModelMessages(messages, options) {
8577
8606
  {
8578
8607
  const content2 = [];
8579
8608
  for (const toolPart of toolParts) {
8580
- if (((_d = toolPart.approval) == null ? void 0 : _d.approved) != null) {
8609
+ if (((_e = toolPart.approval) == null ? void 0 : _e.approved) != null) {
8581
8610
  content2.push({
8582
8611
  type: "tool-approval-response",
8583
8612
  approvalId: toolPart.approval.id,
@@ -8597,7 +8626,7 @@ async function convertToModelMessages(messages, options) {
8597
8626
  toolName: getToolName(toolPart),
8598
8627
  output: {
8599
8628
  type: "error-text",
8600
- value: (_e = toolPart.approval.reason) != null ? _e : "Tool execution denied."
8629
+ value: (_f = toolPart.approval.reason) != null ? _f : "Tool execution denied."
8601
8630
  },
8602
8631
  ...toolPart.callProviderMetadata != null ? { providerOptions: toolPart.callProviderMetadata } : {}
8603
8632
  });
@@ -8614,7 +8643,7 @@ async function convertToModelMessages(messages, options) {
8614
8643
  toolCallId: toolPart.toolCallId,
8615
8644
  input: toolPart.input,
8616
8645
  output: toolPart.state === "output-error" ? toolPart.errorText : toolPart.output,
8617
- tool: (_f = options == null ? void 0 : options.tools) == null ? void 0 : _f[toolName],
8646
+ tool: (_g = options == null ? void 0 : options.tools) == null ? void 0 : _g[toolName],
8618
8647
  errorMode: toolPart.state === "output-error" ? "text" : "none"
8619
8648
  }),
8620
8649
  ...toolPart.callProviderMetadata != null ? { providerOptions: toolPart.callProviderMetadata } : {}
@@ -8778,6 +8807,7 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
8778
8807
  output: import_v48.z.unknown(),
8779
8808
  errorText: import_v48.z.never().optional(),
8780
8809
  callProviderMetadata: providerMetadataSchema.optional(),
8810
+ resultProviderMetadata: providerMetadataSchema.optional(),
8781
8811
  preliminary: import_v48.z.boolean().optional(),
8782
8812
  approval: import_v48.z.object({
8783
8813
  id: import_v48.z.string(),
@@ -8796,6 +8826,7 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
8796
8826
  output: import_v48.z.never().optional(),
8797
8827
  errorText: import_v48.z.string(),
8798
8828
  callProviderMetadata: providerMetadataSchema.optional(),
8829
+ resultProviderMetadata: providerMetadataSchema.optional(),
8799
8830
  approval: import_v48.z.object({
8800
8831
  id: import_v48.z.string(),
8801
8832
  approved: import_v48.z.literal(true),
@@ -8879,6 +8910,7 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
8879
8910
  output: import_v48.z.unknown(),
8880
8911
  errorText: import_v48.z.never().optional(),
8881
8912
  callProviderMetadata: providerMetadataSchema.optional(),
8913
+ resultProviderMetadata: providerMetadataSchema.optional(),
8882
8914
  preliminary: import_v48.z.boolean().optional(),
8883
8915
  approval: import_v48.z.object({
8884
8916
  id: import_v48.z.string(),
@@ -8896,6 +8928,7 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
8896
8928
  output: import_v48.z.never().optional(),
8897
8929
  errorText: import_v48.z.string(),
8898
8930
  callProviderMetadata: providerMetadataSchema.optional(),
8931
+ resultProviderMetadata: providerMetadataSchema.optional(),
8899
8932
  approval: import_v48.z.object({
8900
8933
  id: import_v48.z.string(),
8901
8934
  approved: import_v48.z.literal(true),