ai 6.0.230 → 6.0.232

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.js CHANGED
@@ -1282,7 +1282,7 @@ function detectMediaType({
1282
1282
  var import_provider_utils3 = require("@ai-sdk/provider-utils");
1283
1283
 
1284
1284
  // src/version.ts
1285
- var VERSION = true ? "6.0.230" : "0.0.0-test";
1285
+ var VERSION = true ? "6.0.232" : "0.0.0-test";
1286
1286
 
1287
1287
  // src/util/download/download.ts
1288
1288
  var download = async ({
@@ -1335,6 +1335,42 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
1335
1335
  )
1336
1336
  );
1337
1337
 
1338
+ // src/util/merge-objects.ts
1339
+ function mergeObjects(base, overrides) {
1340
+ if (base === void 0 && overrides === void 0) {
1341
+ return void 0;
1342
+ }
1343
+ if (base === void 0) {
1344
+ return overrides;
1345
+ }
1346
+ if (overrides === void 0) {
1347
+ return base;
1348
+ }
1349
+ const result = { ...base };
1350
+ for (const key in overrides) {
1351
+ if (key === "__proto__" || key === "constructor" || key === "prototype") {
1352
+ continue;
1353
+ }
1354
+ if (Object.prototype.hasOwnProperty.call(overrides, key)) {
1355
+ const overridesValue = overrides[key];
1356
+ if (overridesValue === void 0)
1357
+ continue;
1358
+ const baseValue = key in base ? base[key] : void 0;
1359
+ const isSourceObject = overridesValue !== null && typeof overridesValue === "object" && !Array.isArray(overridesValue) && !(overridesValue instanceof Date) && !(overridesValue instanceof RegExp);
1360
+ const isTargetObject = baseValue !== null && baseValue !== void 0 && typeof baseValue === "object" && !Array.isArray(baseValue) && !(baseValue instanceof Date) && !(baseValue instanceof RegExp);
1361
+ if (isSourceObject && isTargetObject) {
1362
+ result[key] = mergeObjects(
1363
+ baseValue,
1364
+ overridesValue
1365
+ );
1366
+ } else {
1367
+ result[key] = overridesValue;
1368
+ }
1369
+ }
1370
+ }
1371
+ return result;
1372
+ }
1373
+
1338
1374
  // src/prompt/data-content.ts
1339
1375
  var import_provider23 = require("@ai-sdk/provider");
1340
1376
  var import_provider_utils4 = require("@ai-sdk/provider-utils");
@@ -1482,7 +1518,15 @@ async function convertToLanguageModelPrompt({
1482
1518
  }
1483
1519
  const lastCombinedMessage = combinedMessages.at(-1);
1484
1520
  if ((lastCombinedMessage == null ? void 0 : lastCombinedMessage.role) === "tool") {
1521
+ const lastContentPart = lastCombinedMessage.content.at(-1);
1522
+ if (lastContentPart != null && lastCombinedMessage.providerOptions != null) {
1523
+ lastContentPart.providerOptions = mergeObjects(
1524
+ lastCombinedMessage.providerOptions,
1525
+ lastContentPart.providerOptions
1526
+ );
1527
+ }
1485
1528
  lastCombinedMessage.content.push(...message.content);
1529
+ lastCombinedMessage.providerOptions = message.providerOptions;
1486
1530
  } else {
1487
1531
  combinedMessages.push(message);
1488
1532
  }
@@ -2739,42 +2783,6 @@ function addImageModelUsage(usage1, usage2) {
2739
2783
  };
2740
2784
  }
2741
2785
 
2742
- // src/util/merge-objects.ts
2743
- function mergeObjects(base, overrides) {
2744
- if (base === void 0 && overrides === void 0) {
2745
- return void 0;
2746
- }
2747
- if (base === void 0) {
2748
- return overrides;
2749
- }
2750
- if (overrides === void 0) {
2751
- return base;
2752
- }
2753
- const result = { ...base };
2754
- for (const key in overrides) {
2755
- if (key === "__proto__" || key === "constructor" || key === "prototype") {
2756
- continue;
2757
- }
2758
- if (Object.prototype.hasOwnProperty.call(overrides, key)) {
2759
- const overridesValue = overrides[key];
2760
- if (overridesValue === void 0)
2761
- continue;
2762
- const baseValue = key in base ? base[key] : void 0;
2763
- const isSourceObject = overridesValue !== null && typeof overridesValue === "object" && !Array.isArray(overridesValue) && !(overridesValue instanceof Date) && !(overridesValue instanceof RegExp);
2764
- const isTargetObject = baseValue !== null && baseValue !== void 0 && typeof baseValue === "object" && !Array.isArray(baseValue) && !(baseValue instanceof Date) && !(baseValue instanceof RegExp);
2765
- if (isSourceObject && isTargetObject) {
2766
- result[key] = mergeObjects(
2767
- baseValue,
2768
- overridesValue
2769
- );
2770
- } else {
2771
- result[key] = overridesValue;
2772
- }
2773
- }
2774
- }
2775
- return result;
2776
- }
2777
-
2778
2786
  // src/util/retry-with-exponential-backoff.ts
2779
2787
  var import_provider27 = require("@ai-sdk/provider");
2780
2788
  var import_gateway3 = require("@ai-sdk/gateway");
@@ -3114,6 +3122,21 @@ function extractTextContent(content) {
3114
3122
  return parts.map((content2) => content2.text).join("");
3115
3123
  }
3116
3124
 
3125
+ // src/generate-text/filter-active-tools.ts
3126
+ function filterActiveTools({
3127
+ tools,
3128
+ activeTools
3129
+ }) {
3130
+ if (tools == null || activeTools == null) {
3131
+ return tools;
3132
+ }
3133
+ return Object.fromEntries(
3134
+ Object.entries(tools).filter(
3135
+ ([name22]) => activeTools.includes(name22)
3136
+ )
3137
+ );
3138
+ }
3139
+
3117
3140
  // src/generate-text/generated-file.ts
3118
3141
  var import_provider_utils10 = require("@ai-sdk/provider-utils");
3119
3142
  var DefaultGeneratedFile = class {
@@ -4650,6 +4673,9 @@ async function generateText({
4650
4673
  const steps = [];
4651
4674
  const pendingDeferredToolCalls = /* @__PURE__ */ new Map();
4652
4675
  do {
4676
+ if (steps.length > 0) {
4677
+ mergedAbortSignal == null ? void 0 : mergedAbortSignal.throwIfAborted();
4678
+ }
4653
4679
  const stepTimeoutId = setAbortTimeout({
4654
4680
  abortController: stepAbortController,
4655
4681
  label: "Step",
@@ -4681,6 +4707,10 @@ async function generateText({
4681
4707
  });
4682
4708
  experimental_context = (_d = prepareStepResult == null ? void 0 : prepareStepResult.experimental_context) != null ? _d : experimental_context;
4683
4709
  const stepActiveTools = (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools;
4710
+ const stepToolSet = filterActiveTools({
4711
+ tools,
4712
+ activeTools: stepActiveTools
4713
+ });
4684
4714
  const { toolChoice: stepToolChoice, tools: stepTools } = await prepareToolsAndToolChoice({
4685
4715
  tools,
4686
4716
  toolChoice: (_f = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _f : toolChoice,
@@ -4833,7 +4863,7 @@ async function generateText({
4833
4863
  ).map(
4834
4864
  (toolCall) => parseToolCall({
4835
4865
  toolCall,
4836
- tools,
4866
+ tools: stepToolSet,
4837
4867
  repairToolCall,
4838
4868
  system,
4839
4869
  messages: stepInputMessages
@@ -4845,7 +4875,7 @@ async function generateText({
4845
4875
  if (toolCall.invalid) {
4846
4876
  continue;
4847
4877
  }
4848
- const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
4878
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolCall.toolName];
4849
4879
  if (tool2 == null) {
4850
4880
  continue;
4851
4881
  }
@@ -4905,13 +4935,13 @@ async function generateText({
4905
4935
  clientToolCalls = stepToolCalls.filter(
4906
4936
  (toolCall) => !toolCall.providerExecuted
4907
4937
  );
4908
- if (tools != null) {
4938
+ if (stepToolSet != null) {
4909
4939
  clientToolOutputs.push(
4910
4940
  ...await executeTools({
4911
4941
  toolCalls: clientToolCalls.filter(
4912
4942
  (toolCall) => !toolCall.invalid && toolApprovalRequests[toolCall.toolCallId] == null
4913
4943
  ),
4914
- tools,
4944
+ tools: stepToolSet,
4915
4945
  tracer,
4916
4946
  telemetry,
4917
4947
  messages: stepInputMessages,
@@ -4933,7 +4963,7 @@ async function generateText({
4933
4963
  for (const toolCall of stepToolCalls) {
4934
4964
  if (!toolCall.providerExecuted)
4935
4965
  continue;
4936
- const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
4966
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolCall.toolName];
4937
4967
  if ((tool2 == null ? void 0 : tool2.type) === "provider" && tool2.supportsDeferredResults) {
4938
4968
  const hasResultInResponse = currentModelResponse.content.some(
4939
4969
  (part) => part.type === "tool-result" && part.toolCallId === toolCall.toolCallId
@@ -4955,12 +4985,12 @@ async function generateText({
4955
4985
  toolCalls: stepToolCalls,
4956
4986
  toolOutputs: clientToolOutputs,
4957
4987
  toolApprovalRequests: Object.values(toolApprovalRequests),
4958
- tools
4988
+ tools: stepToolSet
4959
4989
  });
4960
4990
  responseMessages.push(
4961
4991
  ...await toResponseMessages({
4962
4992
  content: stepContent,
4963
- tools
4993
+ tools: stepToolSet
4964
4994
  })
4965
4995
  );
4966
4996
  const stepRequest = ((_i = include == null ? void 0 : include.requestBody) != null ? _i : true) ? (_j = currentModelResponse.request) != null ? _j : {} : { ...currentModelResponse.request, body: void 0 };
@@ -5518,27 +5548,27 @@ var toolMetadataSchema = import_v47.z.record(
5518
5548
  var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5519
5549
  () => (0, import_provider_utils17.zodSchema)(
5520
5550
  import_v47.z.union([
5521
- import_v47.z.strictObject({
5551
+ import_v47.z.looseObject({
5522
5552
  type: import_v47.z.literal("text-start"),
5523
5553
  id: import_v47.z.string(),
5524
5554
  providerMetadata: providerMetadataSchema.optional()
5525
5555
  }),
5526
- import_v47.z.strictObject({
5556
+ import_v47.z.looseObject({
5527
5557
  type: import_v47.z.literal("text-delta"),
5528
5558
  id: import_v47.z.string(),
5529
5559
  delta: import_v47.z.string(),
5530
5560
  providerMetadata: providerMetadataSchema.optional()
5531
5561
  }),
5532
- import_v47.z.strictObject({
5562
+ import_v47.z.looseObject({
5533
5563
  type: import_v47.z.literal("text-end"),
5534
5564
  id: import_v47.z.string(),
5535
5565
  providerMetadata: providerMetadataSchema.optional()
5536
5566
  }),
5537
- import_v47.z.strictObject({
5567
+ import_v47.z.looseObject({
5538
5568
  type: import_v47.z.literal("error"),
5539
5569
  errorText: import_v47.z.string()
5540
5570
  }),
5541
- import_v47.z.strictObject({
5571
+ import_v47.z.looseObject({
5542
5572
  type: import_v47.z.literal("tool-input-start"),
5543
5573
  toolCallId: import_v47.z.string(),
5544
5574
  toolName: import_v47.z.string(),
@@ -5548,12 +5578,12 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5548
5578
  dynamic: import_v47.z.boolean().optional(),
5549
5579
  title: import_v47.z.string().optional()
5550
5580
  }),
5551
- import_v47.z.strictObject({
5581
+ import_v47.z.looseObject({
5552
5582
  type: import_v47.z.literal("tool-input-delta"),
5553
5583
  toolCallId: import_v47.z.string(),
5554
5584
  inputTextDelta: import_v47.z.string()
5555
5585
  }),
5556
- import_v47.z.strictObject({
5586
+ import_v47.z.looseObject({
5557
5587
  type: import_v47.z.literal("tool-input-available"),
5558
5588
  toolCallId: import_v47.z.string(),
5559
5589
  toolName: import_v47.z.string(),
@@ -5564,7 +5594,7 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5564
5594
  dynamic: import_v47.z.boolean().optional(),
5565
5595
  title: import_v47.z.string().optional()
5566
5596
  }),
5567
- import_v47.z.strictObject({
5597
+ import_v47.z.looseObject({
5568
5598
  type: import_v47.z.literal("tool-input-error"),
5569
5599
  toolCallId: import_v47.z.string(),
5570
5600
  toolName: import_v47.z.string(),
@@ -5576,13 +5606,13 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5576
5606
  errorText: import_v47.z.string(),
5577
5607
  title: import_v47.z.string().optional()
5578
5608
  }),
5579
- import_v47.z.strictObject({
5609
+ import_v47.z.looseObject({
5580
5610
  type: import_v47.z.literal("tool-approval-request"),
5581
5611
  approvalId: import_v47.z.string(),
5582
5612
  toolCallId: import_v47.z.string(),
5583
5613
  signature: import_v47.z.string().optional()
5584
5614
  }),
5585
- import_v47.z.strictObject({
5615
+ import_v47.z.looseObject({
5586
5616
  type: import_v47.z.literal("tool-output-available"),
5587
5617
  toolCallId: import_v47.z.string(),
5588
5618
  output: import_v47.z.unknown(),
@@ -5592,7 +5622,7 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5592
5622
  dynamic: import_v47.z.boolean().optional(),
5593
5623
  preliminary: import_v47.z.boolean().optional()
5594
5624
  }),
5595
- import_v47.z.strictObject({
5625
+ import_v47.z.looseObject({
5596
5626
  type: import_v47.z.literal("tool-output-error"),
5597
5627
  toolCallId: import_v47.z.string(),
5598
5628
  errorText: import_v47.z.string(),
@@ -5601,34 +5631,34 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5601
5631
  toolMetadata: toolMetadataSchema.optional(),
5602
5632
  dynamic: import_v47.z.boolean().optional()
5603
5633
  }),
5604
- import_v47.z.strictObject({
5634
+ import_v47.z.looseObject({
5605
5635
  type: import_v47.z.literal("tool-output-denied"),
5606
5636
  toolCallId: import_v47.z.string()
5607
5637
  }),
5608
- import_v47.z.strictObject({
5638
+ import_v47.z.looseObject({
5609
5639
  type: import_v47.z.literal("reasoning-start"),
5610
5640
  id: import_v47.z.string(),
5611
5641
  providerMetadata: providerMetadataSchema.optional()
5612
5642
  }),
5613
- import_v47.z.strictObject({
5643
+ import_v47.z.looseObject({
5614
5644
  type: import_v47.z.literal("reasoning-delta"),
5615
5645
  id: import_v47.z.string(),
5616
5646
  delta: import_v47.z.string(),
5617
5647
  providerMetadata: providerMetadataSchema.optional()
5618
5648
  }),
5619
- import_v47.z.strictObject({
5649
+ import_v47.z.looseObject({
5620
5650
  type: import_v47.z.literal("reasoning-end"),
5621
5651
  id: import_v47.z.string(),
5622
5652
  providerMetadata: providerMetadataSchema.optional()
5623
5653
  }),
5624
- import_v47.z.strictObject({
5654
+ import_v47.z.looseObject({
5625
5655
  type: import_v47.z.literal("source-url"),
5626
5656
  sourceId: import_v47.z.string(),
5627
5657
  url: import_v47.z.string(),
5628
5658
  title: import_v47.z.string().optional(),
5629
5659
  providerMetadata: providerMetadataSchema.optional()
5630
5660
  }),
5631
- import_v47.z.strictObject({
5661
+ import_v47.z.looseObject({
5632
5662
  type: import_v47.z.literal("source-document"),
5633
5663
  sourceId: import_v47.z.string(),
5634
5664
  mediaType: import_v47.z.string(),
@@ -5636,13 +5666,13 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5636
5666
  filename: import_v47.z.string().optional(),
5637
5667
  providerMetadata: providerMetadataSchema.optional()
5638
5668
  }),
5639
- import_v47.z.strictObject({
5669
+ import_v47.z.looseObject({
5640
5670
  type: import_v47.z.literal("file"),
5641
5671
  url: import_v47.z.string(),
5642
5672
  mediaType: import_v47.z.string(),
5643
5673
  providerMetadata: providerMetadataSchema.optional()
5644
5674
  }),
5645
- import_v47.z.strictObject({
5675
+ import_v47.z.looseObject({
5646
5676
  type: import_v47.z.custom(
5647
5677
  (value) => typeof value === "string" && value.startsWith("data-"),
5648
5678
  { message: 'Type must start with "data-"' }
@@ -5651,18 +5681,18 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5651
5681
  data: import_v47.z.unknown(),
5652
5682
  transient: import_v47.z.boolean().optional()
5653
5683
  }),
5654
- import_v47.z.strictObject({
5684
+ import_v47.z.looseObject({
5655
5685
  type: import_v47.z.literal("start-step")
5656
5686
  }),
5657
- import_v47.z.strictObject({
5687
+ import_v47.z.looseObject({
5658
5688
  type: import_v47.z.literal("finish-step")
5659
5689
  }),
5660
- import_v47.z.strictObject({
5690
+ import_v47.z.looseObject({
5661
5691
  type: import_v47.z.literal("start"),
5662
5692
  messageId: import_v47.z.string().optional(),
5663
5693
  messageMetadata: import_v47.z.unknown().optional()
5664
5694
  }),
5665
- import_v47.z.strictObject({
5695
+ import_v47.z.looseObject({
5666
5696
  type: import_v47.z.literal("finish"),
5667
5697
  finishReason: import_v47.z.enum([
5668
5698
  "stop",
@@ -5674,11 +5704,11 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5674
5704
  ]).optional(),
5675
5705
  messageMetadata: import_v47.z.unknown().optional()
5676
5706
  }),
5677
- import_v47.z.strictObject({
5707
+ import_v47.z.looseObject({
5678
5708
  type: import_v47.z.literal("abort"),
5679
5709
  reason: import_v47.z.string().optional()
5680
5710
  }),
5681
- import_v47.z.strictObject({
5711
+ import_v47.z.looseObject({
5682
5712
  type: import_v47.z.literal("message-metadata"),
5683
5713
  messageMetadata: import_v47.z.unknown()
5684
5714
  })
@@ -7132,6 +7162,7 @@ var DefaultStreamTextResult = class {
7132
7162
  let recordedWarnings = [];
7133
7163
  const recordedSteps = [];
7134
7164
  let recordedNoOutputError;
7165
+ let currentStepToolSet = tools;
7135
7166
  const pendingDeferredToolCalls = /* @__PURE__ */ new Map();
7136
7167
  let rootSpan;
7137
7168
  let activeTextContent = createIdMap();
@@ -7259,7 +7290,7 @@ var DefaultStreamTextResult = class {
7259
7290
  if (part.type === "finish-step") {
7260
7291
  const stepMessages = await toResponseMessages({
7261
7292
  content: recordedContent,
7262
- tools
7293
+ tools: currentStepToolSet
7263
7294
  });
7264
7295
  const currentStepResult = new DefaultStepResult({
7265
7296
  stepNumber: recordedSteps.length,
@@ -7690,6 +7721,11 @@ var DefaultStreamTextResult = class {
7690
7721
  download: download2
7691
7722
  });
7692
7723
  const stepActiveTools = (_d = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _d : activeTools;
7724
+ const stepToolSet = filterActiveTools({
7725
+ tools,
7726
+ activeTools: stepActiveTools
7727
+ });
7728
+ currentStepToolSet = stepToolSet;
7693
7729
  const { toolChoice: stepToolChoice, tools: stepTools } = await prepareToolsAndToolChoice({
7694
7730
  tools,
7695
7731
  toolChoice: (_e = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _e : toolChoice,
@@ -7789,7 +7825,7 @@ var DefaultStreamTextResult = class {
7789
7825
  })
7790
7826
  );
7791
7827
  const streamWithToolResults = runToolsTransformation({
7792
- tools,
7828
+ tools: stepToolSet,
7793
7829
  generatorStream: stream2,
7794
7830
  tracer,
7795
7831
  telemetry,
@@ -7940,7 +7976,7 @@ var DefaultStreamTextResult = class {
7940
7976
  }
7941
7977
  case "tool-input-start": {
7942
7978
  activeToolCallToolNames[chunk.id] = chunk.toolName;
7943
- const tool2 = tools == null ? void 0 : tools[chunk.toolName];
7979
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[chunk.toolName];
7944
7980
  if ((tool2 == null ? void 0 : tool2.onInputStart) != null) {
7945
7981
  await tool2.onInputStart({
7946
7982
  toolCallId: chunk.id,
@@ -7963,7 +7999,7 @@ var DefaultStreamTextResult = class {
7963
7999
  }
7964
8000
  case "tool-input-delta": {
7965
8001
  const toolName = activeToolCallToolNames[chunk.id];
7966
- const tool2 = tools == null ? void 0 : tools[toolName];
8002
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolName];
7967
8003
  if ((tool2 == null ? void 0 : tool2.onInputDelta) != null) {
7968
8004
  await tool2.onInputDelta({
7969
8005
  inputTextDelta: chunk.delta,
@@ -8095,7 +8131,7 @@ var DefaultStreamTextResult = class {
8095
8131
  for (const toolCall of stepToolCalls) {
8096
8132
  if (toolCall.providerExecuted !== true)
8097
8133
  continue;
8098
- const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
8134
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolCall.toolName];
8099
8135
  if ((tool2 == null ? void 0 : tool2.type) === "provider" && tool2.supportsDeferredResults) {
8100
8136
  const hasResultInStep = stepToolOutputs.some(
8101
8137
  (output2) => (output2.type === "tool-result" || output2.type === "tool-error") && output2.toolCallId === toolCall.toolCallId
@@ -8130,7 +8166,7 @@ var DefaultStreamTextResult = class {
8130
8166
  // use transformed content to create the messages for the next step:
8131
8167
  recordedSteps[recordedSteps.length - 1].content
8132
8168
  ),
8133
- tools
8169
+ tools: stepToolSet
8134
8170
  })
8135
8171
  );
8136
8172
  try {