ai 6.0.230 → 6.0.231

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
@@ -1171,7 +1171,7 @@ import {
1171
1171
  } from "@ai-sdk/provider-utils";
1172
1172
 
1173
1173
  // src/version.ts
1174
- var VERSION = true ? "6.0.230" : "0.0.0-test";
1174
+ var VERSION = true ? "6.0.231" : "0.0.0-test";
1175
1175
 
1176
1176
  // src/util/download/download.ts
1177
1177
  var download = async ({
@@ -3013,6 +3013,21 @@ function extractTextContent(content) {
3013
3013
  return parts.map((content2) => content2.text).join("");
3014
3014
  }
3015
3015
 
3016
+ // src/generate-text/filter-active-tools.ts
3017
+ function filterActiveTools({
3018
+ tools,
3019
+ activeTools
3020
+ }) {
3021
+ if (tools == null || activeTools == null) {
3022
+ return tools;
3023
+ }
3024
+ return Object.fromEntries(
3025
+ Object.entries(tools).filter(
3026
+ ([name22]) => activeTools.includes(name22)
3027
+ )
3028
+ );
3029
+ }
3030
+
3016
3031
  // src/generate-text/generated-file.ts
3017
3032
  import {
3018
3033
  convertBase64ToUint8Array as convertBase64ToUint8Array3,
@@ -4569,6 +4584,9 @@ async function generateText({
4569
4584
  const steps = [];
4570
4585
  const pendingDeferredToolCalls = /* @__PURE__ */ new Map();
4571
4586
  do {
4587
+ if (steps.length > 0) {
4588
+ mergedAbortSignal == null ? void 0 : mergedAbortSignal.throwIfAborted();
4589
+ }
4572
4590
  const stepTimeoutId = setAbortTimeout({
4573
4591
  abortController: stepAbortController,
4574
4592
  label: "Step",
@@ -4600,6 +4618,10 @@ async function generateText({
4600
4618
  });
4601
4619
  experimental_context = (_d = prepareStepResult == null ? void 0 : prepareStepResult.experimental_context) != null ? _d : experimental_context;
4602
4620
  const stepActiveTools = (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools;
4621
+ const stepToolSet = filterActiveTools({
4622
+ tools,
4623
+ activeTools: stepActiveTools
4624
+ });
4603
4625
  const { toolChoice: stepToolChoice, tools: stepTools } = await prepareToolsAndToolChoice({
4604
4626
  tools,
4605
4627
  toolChoice: (_f = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _f : toolChoice,
@@ -4752,7 +4774,7 @@ async function generateText({
4752
4774
  ).map(
4753
4775
  (toolCall) => parseToolCall({
4754
4776
  toolCall,
4755
- tools,
4777
+ tools: stepToolSet,
4756
4778
  repairToolCall,
4757
4779
  system,
4758
4780
  messages: stepInputMessages
@@ -4764,7 +4786,7 @@ async function generateText({
4764
4786
  if (toolCall.invalid) {
4765
4787
  continue;
4766
4788
  }
4767
- const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
4789
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolCall.toolName];
4768
4790
  if (tool2 == null) {
4769
4791
  continue;
4770
4792
  }
@@ -4824,13 +4846,13 @@ async function generateText({
4824
4846
  clientToolCalls = stepToolCalls.filter(
4825
4847
  (toolCall) => !toolCall.providerExecuted
4826
4848
  );
4827
- if (tools != null) {
4849
+ if (stepToolSet != null) {
4828
4850
  clientToolOutputs.push(
4829
4851
  ...await executeTools({
4830
4852
  toolCalls: clientToolCalls.filter(
4831
4853
  (toolCall) => !toolCall.invalid && toolApprovalRequests[toolCall.toolCallId] == null
4832
4854
  ),
4833
- tools,
4855
+ tools: stepToolSet,
4834
4856
  tracer,
4835
4857
  telemetry,
4836
4858
  messages: stepInputMessages,
@@ -4852,7 +4874,7 @@ async function generateText({
4852
4874
  for (const toolCall of stepToolCalls) {
4853
4875
  if (!toolCall.providerExecuted)
4854
4876
  continue;
4855
- const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
4877
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolCall.toolName];
4856
4878
  if ((tool2 == null ? void 0 : tool2.type) === "provider" && tool2.supportsDeferredResults) {
4857
4879
  const hasResultInResponse = currentModelResponse.content.some(
4858
4880
  (part) => part.type === "tool-result" && part.toolCallId === toolCall.toolCallId
@@ -4874,12 +4896,12 @@ async function generateText({
4874
4896
  toolCalls: stepToolCalls,
4875
4897
  toolOutputs: clientToolOutputs,
4876
4898
  toolApprovalRequests: Object.values(toolApprovalRequests),
4877
- tools
4899
+ tools: stepToolSet
4878
4900
  });
4879
4901
  responseMessages.push(
4880
4902
  ...await toResponseMessages({
4881
4903
  content: stepContent,
4882
- tools
4904
+ tools: stepToolSet
4883
4905
  })
4884
4906
  );
4885
4907
  const stepRequest = ((_i = include == null ? void 0 : include.requestBody) != null ? _i : true) ? (_j = currentModelResponse.request) != null ? _j : {} : { ...currentModelResponse.request, body: void 0 };
@@ -5444,27 +5466,27 @@ var toolMetadataSchema = z7.record(
5444
5466
  var uiMessageChunkSchema = lazySchema(
5445
5467
  () => zodSchema(
5446
5468
  z7.union([
5447
- z7.strictObject({
5469
+ z7.looseObject({
5448
5470
  type: z7.literal("text-start"),
5449
5471
  id: z7.string(),
5450
5472
  providerMetadata: providerMetadataSchema.optional()
5451
5473
  }),
5452
- z7.strictObject({
5474
+ z7.looseObject({
5453
5475
  type: z7.literal("text-delta"),
5454
5476
  id: z7.string(),
5455
5477
  delta: z7.string(),
5456
5478
  providerMetadata: providerMetadataSchema.optional()
5457
5479
  }),
5458
- z7.strictObject({
5480
+ z7.looseObject({
5459
5481
  type: z7.literal("text-end"),
5460
5482
  id: z7.string(),
5461
5483
  providerMetadata: providerMetadataSchema.optional()
5462
5484
  }),
5463
- z7.strictObject({
5485
+ z7.looseObject({
5464
5486
  type: z7.literal("error"),
5465
5487
  errorText: z7.string()
5466
5488
  }),
5467
- z7.strictObject({
5489
+ z7.looseObject({
5468
5490
  type: z7.literal("tool-input-start"),
5469
5491
  toolCallId: z7.string(),
5470
5492
  toolName: z7.string(),
@@ -5474,12 +5496,12 @@ var uiMessageChunkSchema = lazySchema(
5474
5496
  dynamic: z7.boolean().optional(),
5475
5497
  title: z7.string().optional()
5476
5498
  }),
5477
- z7.strictObject({
5499
+ z7.looseObject({
5478
5500
  type: z7.literal("tool-input-delta"),
5479
5501
  toolCallId: z7.string(),
5480
5502
  inputTextDelta: z7.string()
5481
5503
  }),
5482
- z7.strictObject({
5504
+ z7.looseObject({
5483
5505
  type: z7.literal("tool-input-available"),
5484
5506
  toolCallId: z7.string(),
5485
5507
  toolName: z7.string(),
@@ -5490,7 +5512,7 @@ var uiMessageChunkSchema = lazySchema(
5490
5512
  dynamic: z7.boolean().optional(),
5491
5513
  title: z7.string().optional()
5492
5514
  }),
5493
- z7.strictObject({
5515
+ z7.looseObject({
5494
5516
  type: z7.literal("tool-input-error"),
5495
5517
  toolCallId: z7.string(),
5496
5518
  toolName: z7.string(),
@@ -5502,13 +5524,13 @@ var uiMessageChunkSchema = lazySchema(
5502
5524
  errorText: z7.string(),
5503
5525
  title: z7.string().optional()
5504
5526
  }),
5505
- z7.strictObject({
5527
+ z7.looseObject({
5506
5528
  type: z7.literal("tool-approval-request"),
5507
5529
  approvalId: z7.string(),
5508
5530
  toolCallId: z7.string(),
5509
5531
  signature: z7.string().optional()
5510
5532
  }),
5511
- z7.strictObject({
5533
+ z7.looseObject({
5512
5534
  type: z7.literal("tool-output-available"),
5513
5535
  toolCallId: z7.string(),
5514
5536
  output: z7.unknown(),
@@ -5518,7 +5540,7 @@ var uiMessageChunkSchema = lazySchema(
5518
5540
  dynamic: z7.boolean().optional(),
5519
5541
  preliminary: z7.boolean().optional()
5520
5542
  }),
5521
- z7.strictObject({
5543
+ z7.looseObject({
5522
5544
  type: z7.literal("tool-output-error"),
5523
5545
  toolCallId: z7.string(),
5524
5546
  errorText: z7.string(),
@@ -5527,34 +5549,34 @@ var uiMessageChunkSchema = lazySchema(
5527
5549
  toolMetadata: toolMetadataSchema.optional(),
5528
5550
  dynamic: z7.boolean().optional()
5529
5551
  }),
5530
- z7.strictObject({
5552
+ z7.looseObject({
5531
5553
  type: z7.literal("tool-output-denied"),
5532
5554
  toolCallId: z7.string()
5533
5555
  }),
5534
- z7.strictObject({
5556
+ z7.looseObject({
5535
5557
  type: z7.literal("reasoning-start"),
5536
5558
  id: z7.string(),
5537
5559
  providerMetadata: providerMetadataSchema.optional()
5538
5560
  }),
5539
- z7.strictObject({
5561
+ z7.looseObject({
5540
5562
  type: z7.literal("reasoning-delta"),
5541
5563
  id: z7.string(),
5542
5564
  delta: z7.string(),
5543
5565
  providerMetadata: providerMetadataSchema.optional()
5544
5566
  }),
5545
- z7.strictObject({
5567
+ z7.looseObject({
5546
5568
  type: z7.literal("reasoning-end"),
5547
5569
  id: z7.string(),
5548
5570
  providerMetadata: providerMetadataSchema.optional()
5549
5571
  }),
5550
- z7.strictObject({
5572
+ z7.looseObject({
5551
5573
  type: z7.literal("source-url"),
5552
5574
  sourceId: z7.string(),
5553
5575
  url: z7.string(),
5554
5576
  title: z7.string().optional(),
5555
5577
  providerMetadata: providerMetadataSchema.optional()
5556
5578
  }),
5557
- z7.strictObject({
5579
+ z7.looseObject({
5558
5580
  type: z7.literal("source-document"),
5559
5581
  sourceId: z7.string(),
5560
5582
  mediaType: z7.string(),
@@ -5562,13 +5584,13 @@ var uiMessageChunkSchema = lazySchema(
5562
5584
  filename: z7.string().optional(),
5563
5585
  providerMetadata: providerMetadataSchema.optional()
5564
5586
  }),
5565
- z7.strictObject({
5587
+ z7.looseObject({
5566
5588
  type: z7.literal("file"),
5567
5589
  url: z7.string(),
5568
5590
  mediaType: z7.string(),
5569
5591
  providerMetadata: providerMetadataSchema.optional()
5570
5592
  }),
5571
- z7.strictObject({
5593
+ z7.looseObject({
5572
5594
  type: z7.custom(
5573
5595
  (value) => typeof value === "string" && value.startsWith("data-"),
5574
5596
  { message: 'Type must start with "data-"' }
@@ -5577,18 +5599,18 @@ var uiMessageChunkSchema = lazySchema(
5577
5599
  data: z7.unknown(),
5578
5600
  transient: z7.boolean().optional()
5579
5601
  }),
5580
- z7.strictObject({
5602
+ z7.looseObject({
5581
5603
  type: z7.literal("start-step")
5582
5604
  }),
5583
- z7.strictObject({
5605
+ z7.looseObject({
5584
5606
  type: z7.literal("finish-step")
5585
5607
  }),
5586
- z7.strictObject({
5608
+ z7.looseObject({
5587
5609
  type: z7.literal("start"),
5588
5610
  messageId: z7.string().optional(),
5589
5611
  messageMetadata: z7.unknown().optional()
5590
5612
  }),
5591
- z7.strictObject({
5613
+ z7.looseObject({
5592
5614
  type: z7.literal("finish"),
5593
5615
  finishReason: z7.enum([
5594
5616
  "stop",
@@ -5600,11 +5622,11 @@ var uiMessageChunkSchema = lazySchema(
5600
5622
  ]).optional(),
5601
5623
  messageMetadata: z7.unknown().optional()
5602
5624
  }),
5603
- z7.strictObject({
5625
+ z7.looseObject({
5604
5626
  type: z7.literal("abort"),
5605
5627
  reason: z7.string().optional()
5606
5628
  }),
5607
- z7.strictObject({
5629
+ z7.looseObject({
5608
5630
  type: z7.literal("message-metadata"),
5609
5631
  messageMetadata: z7.unknown()
5610
5632
  })
@@ -7060,6 +7082,7 @@ var DefaultStreamTextResult = class {
7060
7082
  let recordedWarnings = [];
7061
7083
  const recordedSteps = [];
7062
7084
  let recordedNoOutputError;
7085
+ let currentStepToolSet = tools;
7063
7086
  const pendingDeferredToolCalls = /* @__PURE__ */ new Map();
7064
7087
  let rootSpan;
7065
7088
  let activeTextContent = createIdMap();
@@ -7187,7 +7210,7 @@ var DefaultStreamTextResult = class {
7187
7210
  if (part.type === "finish-step") {
7188
7211
  const stepMessages = await toResponseMessages({
7189
7212
  content: recordedContent,
7190
- tools
7213
+ tools: currentStepToolSet
7191
7214
  });
7192
7215
  const currentStepResult = new DefaultStepResult({
7193
7216
  stepNumber: recordedSteps.length,
@@ -7618,6 +7641,11 @@ var DefaultStreamTextResult = class {
7618
7641
  download: download2
7619
7642
  });
7620
7643
  const stepActiveTools = (_d = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _d : activeTools;
7644
+ const stepToolSet = filterActiveTools({
7645
+ tools,
7646
+ activeTools: stepActiveTools
7647
+ });
7648
+ currentStepToolSet = stepToolSet;
7621
7649
  const { toolChoice: stepToolChoice, tools: stepTools } = await prepareToolsAndToolChoice({
7622
7650
  tools,
7623
7651
  toolChoice: (_e = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _e : toolChoice,
@@ -7717,7 +7745,7 @@ var DefaultStreamTextResult = class {
7717
7745
  })
7718
7746
  );
7719
7747
  const streamWithToolResults = runToolsTransformation({
7720
- tools,
7748
+ tools: stepToolSet,
7721
7749
  generatorStream: stream2,
7722
7750
  tracer,
7723
7751
  telemetry,
@@ -7868,7 +7896,7 @@ var DefaultStreamTextResult = class {
7868
7896
  }
7869
7897
  case "tool-input-start": {
7870
7898
  activeToolCallToolNames[chunk.id] = chunk.toolName;
7871
- const tool2 = tools == null ? void 0 : tools[chunk.toolName];
7899
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[chunk.toolName];
7872
7900
  if ((tool2 == null ? void 0 : tool2.onInputStart) != null) {
7873
7901
  await tool2.onInputStart({
7874
7902
  toolCallId: chunk.id,
@@ -7891,7 +7919,7 @@ var DefaultStreamTextResult = class {
7891
7919
  }
7892
7920
  case "tool-input-delta": {
7893
7921
  const toolName = activeToolCallToolNames[chunk.id];
7894
- const tool2 = tools == null ? void 0 : tools[toolName];
7922
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolName];
7895
7923
  if ((tool2 == null ? void 0 : tool2.onInputDelta) != null) {
7896
7924
  await tool2.onInputDelta({
7897
7925
  inputTextDelta: chunk.delta,
@@ -8023,7 +8051,7 @@ var DefaultStreamTextResult = class {
8023
8051
  for (const toolCall of stepToolCalls) {
8024
8052
  if (toolCall.providerExecuted !== true)
8025
8053
  continue;
8026
- const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
8054
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolCall.toolName];
8027
8055
  if ((tool2 == null ? void 0 : tool2.type) === "provider" && tool2.supportsDeferredResults) {
8028
8056
  const hasResultInStep = stepToolOutputs.some(
8029
8057
  (output2) => (output2.type === "tool-result" || output2.type === "tool-error") && output2.toolCallId === toolCall.toolCallId
@@ -8058,7 +8086,7 @@ var DefaultStreamTextResult = class {
8058
8086
  // use transformed content to create the messages for the next step:
8059
8087
  recordedSteps[recordedSteps.length - 1].content
8060
8088
  ),
8061
- tools
8089
+ tools: stepToolSet
8062
8090
  })
8063
8091
  );
8064
8092
  try {