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/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # ai
2
2
 
3
+ ## 6.0.231
4
+
5
+ ### Patch Changes
6
+
7
+ - 926f5a0: Allow UI message chunks to include fields added by newer server versions.
8
+ - 4c5a22f: Propagate abort reasons when generation is cancelled during tool execution.
9
+ - 842a383: Prevent tools excluded by `activeTools` from being parsed or executed.
10
+ - Updated dependencies [2dd1aab]
11
+ - Updated dependencies [e567091]
12
+ - @ai-sdk/gateway@3.0.154
13
+
3
14
  ## 6.0.230
4
15
 
5
16
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,4 +1,3 @@
1
- import * as _ai_sdk_provider from '@ai-sdk/provider';
2
1
  import { EmbeddingModelV3, EmbeddingModelV2, EmbeddingModelV3Embedding, EmbeddingModelV3Middleware, ImageModelV3, ImageModelV2, ImageModelV3ProviderMetadata, ImageModelV2ProviderMetadata, ImageModelV3Middleware, JSONValue as JSONValue$1, LanguageModelV3, LanguageModelV2, SharedV3Warning, LanguageModelV3Source, LanguageModelV3Middleware, RerankingModelV3, SharedV3ProviderMetadata, SpeechModelV3, SpeechModelV2, TranscriptionModelV3, TranscriptionModelV2, JSONObject, ImageModelV3Usage, AISDKError, LanguageModelV3ToolCall, JSONSchema7, LanguageModelV3CallOptions, LanguageModelV3ToolChoice, ProviderV3, JSONParseError, TypeValidationError, Experimental_VideoModelV3, Experimental_VideoModelV3FrameType, EmbeddingModelV3CallOptions, ProviderV2, NoSuchModelError } from '@ai-sdk/provider';
3
2
  export { AISDKError, APICallError, EmptyResponseBodyError, InvalidPromptError, InvalidResponseDataError, JSONParseError, JSONSchema7, LoadAPIKeyError, LoadSettingError, NoContentGeneratedError, NoSuchModelError, TooManyEmbeddingValuesForCallError, TypeValidationError, UnsupportedFunctionalityError } from '@ai-sdk/provider';
4
3
  import { GatewayModelId } from '@ai-sdk/gateway';
@@ -1963,136 +1962,7 @@ type InferUIMessageToolCall<UI_MESSAGE extends UIMessage> = ValueOf<{
1963
1962
  dynamic: true;
1964
1963
  });
1965
1964
 
1966
- declare const uiMessageChunkSchema: _ai_sdk_provider_utils.LazySchema<{
1967
- type: "text-start";
1968
- id: string;
1969
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
1970
- } | {
1971
- type: "text-delta";
1972
- id: string;
1973
- delta: string;
1974
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
1975
- } | {
1976
- type: "text-end";
1977
- id: string;
1978
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
1979
- } | {
1980
- type: "error";
1981
- errorText: string;
1982
- } | {
1983
- type: "tool-input-start";
1984
- toolCallId: string;
1985
- toolName: string;
1986
- providerExecuted?: boolean | undefined;
1987
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
1988
- toolMetadata?: JSONObject | undefined;
1989
- dynamic?: boolean | undefined;
1990
- title?: string | undefined;
1991
- } | {
1992
- type: "tool-input-delta";
1993
- toolCallId: string;
1994
- inputTextDelta: string;
1995
- } | {
1996
- type: "tool-input-available";
1997
- toolCallId: string;
1998
- toolName: string;
1999
- input: unknown;
2000
- providerExecuted?: boolean | undefined;
2001
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2002
- toolMetadata?: JSONObject | undefined;
2003
- dynamic?: boolean | undefined;
2004
- title?: string | undefined;
2005
- } | {
2006
- type: "tool-input-error";
2007
- toolCallId: string;
2008
- toolName: string;
2009
- input: unknown;
2010
- errorText: string;
2011
- providerExecuted?: boolean | undefined;
2012
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2013
- toolMetadata?: JSONObject | undefined;
2014
- dynamic?: boolean | undefined;
2015
- title?: string | undefined;
2016
- } | {
2017
- type: "tool-approval-request";
2018
- approvalId: string;
2019
- toolCallId: string;
2020
- signature?: string | undefined;
2021
- } | {
2022
- type: "tool-output-available";
2023
- toolCallId: string;
2024
- output: unknown;
2025
- providerExecuted?: boolean | undefined;
2026
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2027
- toolMetadata?: JSONObject | undefined;
2028
- dynamic?: boolean | undefined;
2029
- preliminary?: boolean | undefined;
2030
- } | {
2031
- type: "tool-output-error";
2032
- toolCallId: string;
2033
- errorText: string;
2034
- providerExecuted?: boolean | undefined;
2035
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2036
- toolMetadata?: JSONObject | undefined;
2037
- dynamic?: boolean | undefined;
2038
- } | {
2039
- type: "tool-output-denied";
2040
- toolCallId: string;
2041
- } | {
2042
- type: "reasoning-start";
2043
- id: string;
2044
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2045
- } | {
2046
- type: "reasoning-delta";
2047
- id: string;
2048
- delta: string;
2049
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2050
- } | {
2051
- type: "reasoning-end";
2052
- id: string;
2053
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2054
- } | {
2055
- type: "source-url";
2056
- sourceId: string;
2057
- url: string;
2058
- title?: string | undefined;
2059
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2060
- } | {
2061
- type: "source-document";
2062
- sourceId: string;
2063
- mediaType: string;
2064
- title: string;
2065
- filename?: string | undefined;
2066
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2067
- } | {
2068
- type: "file";
2069
- url: string;
2070
- mediaType: string;
2071
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2072
- } | {
2073
- type: `data-${string}`;
2074
- data: unknown;
2075
- id?: string | undefined;
2076
- transient?: boolean | undefined;
2077
- } | {
2078
- type: "start-step";
2079
- } | {
2080
- type: "finish-step";
2081
- } | {
2082
- type: "start";
2083
- messageId?: string | undefined;
2084
- messageMetadata?: unknown;
2085
- } | {
2086
- type: "finish";
2087
- finishReason?: "length" | "error" | "stop" | "content-filter" | "tool-calls" | "other" | undefined;
2088
- messageMetadata?: unknown;
2089
- } | {
2090
- type: "abort";
2091
- reason?: string | undefined;
2092
- } | {
2093
- type: "message-metadata";
2094
- messageMetadata: unknown;
2095
- }>;
1965
+ declare const uiMessageChunkSchema: _ai_sdk_provider_utils.LazySchema<UIMessageChunk<unknown, UIDataTypes>>;
2096
1966
  type DataUIMessageChunk<DATA_TYPES extends UIDataTypes> = ValueOf<{
2097
1967
  [NAME in keyof DATA_TYPES & string]: {
2098
1968
  type: `data-${NAME}`;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import * as _ai_sdk_provider from '@ai-sdk/provider';
2
1
  import { EmbeddingModelV3, EmbeddingModelV2, EmbeddingModelV3Embedding, EmbeddingModelV3Middleware, ImageModelV3, ImageModelV2, ImageModelV3ProviderMetadata, ImageModelV2ProviderMetadata, ImageModelV3Middleware, JSONValue as JSONValue$1, LanguageModelV3, LanguageModelV2, SharedV3Warning, LanguageModelV3Source, LanguageModelV3Middleware, RerankingModelV3, SharedV3ProviderMetadata, SpeechModelV3, SpeechModelV2, TranscriptionModelV3, TranscriptionModelV2, JSONObject, ImageModelV3Usage, AISDKError, LanguageModelV3ToolCall, JSONSchema7, LanguageModelV3CallOptions, LanguageModelV3ToolChoice, ProviderV3, JSONParseError, TypeValidationError, Experimental_VideoModelV3, Experimental_VideoModelV3FrameType, EmbeddingModelV3CallOptions, ProviderV2, NoSuchModelError } from '@ai-sdk/provider';
3
2
  export { AISDKError, APICallError, EmptyResponseBodyError, InvalidPromptError, InvalidResponseDataError, JSONParseError, JSONSchema7, LoadAPIKeyError, LoadSettingError, NoContentGeneratedError, NoSuchModelError, TooManyEmbeddingValuesForCallError, TypeValidationError, UnsupportedFunctionalityError } from '@ai-sdk/provider';
4
3
  import { GatewayModelId } from '@ai-sdk/gateway';
@@ -1963,136 +1962,7 @@ type InferUIMessageToolCall<UI_MESSAGE extends UIMessage> = ValueOf<{
1963
1962
  dynamic: true;
1964
1963
  });
1965
1964
 
1966
- declare const uiMessageChunkSchema: _ai_sdk_provider_utils.LazySchema<{
1967
- type: "text-start";
1968
- id: string;
1969
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
1970
- } | {
1971
- type: "text-delta";
1972
- id: string;
1973
- delta: string;
1974
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
1975
- } | {
1976
- type: "text-end";
1977
- id: string;
1978
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
1979
- } | {
1980
- type: "error";
1981
- errorText: string;
1982
- } | {
1983
- type: "tool-input-start";
1984
- toolCallId: string;
1985
- toolName: string;
1986
- providerExecuted?: boolean | undefined;
1987
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
1988
- toolMetadata?: JSONObject | undefined;
1989
- dynamic?: boolean | undefined;
1990
- title?: string | undefined;
1991
- } | {
1992
- type: "tool-input-delta";
1993
- toolCallId: string;
1994
- inputTextDelta: string;
1995
- } | {
1996
- type: "tool-input-available";
1997
- toolCallId: string;
1998
- toolName: string;
1999
- input: unknown;
2000
- providerExecuted?: boolean | undefined;
2001
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2002
- toolMetadata?: JSONObject | undefined;
2003
- dynamic?: boolean | undefined;
2004
- title?: string | undefined;
2005
- } | {
2006
- type: "tool-input-error";
2007
- toolCallId: string;
2008
- toolName: string;
2009
- input: unknown;
2010
- errorText: string;
2011
- providerExecuted?: boolean | undefined;
2012
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2013
- toolMetadata?: JSONObject | undefined;
2014
- dynamic?: boolean | undefined;
2015
- title?: string | undefined;
2016
- } | {
2017
- type: "tool-approval-request";
2018
- approvalId: string;
2019
- toolCallId: string;
2020
- signature?: string | undefined;
2021
- } | {
2022
- type: "tool-output-available";
2023
- toolCallId: string;
2024
- output: unknown;
2025
- providerExecuted?: boolean | undefined;
2026
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2027
- toolMetadata?: JSONObject | undefined;
2028
- dynamic?: boolean | undefined;
2029
- preliminary?: boolean | undefined;
2030
- } | {
2031
- type: "tool-output-error";
2032
- toolCallId: string;
2033
- errorText: string;
2034
- providerExecuted?: boolean | undefined;
2035
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2036
- toolMetadata?: JSONObject | undefined;
2037
- dynamic?: boolean | undefined;
2038
- } | {
2039
- type: "tool-output-denied";
2040
- toolCallId: string;
2041
- } | {
2042
- type: "reasoning-start";
2043
- id: string;
2044
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2045
- } | {
2046
- type: "reasoning-delta";
2047
- id: string;
2048
- delta: string;
2049
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2050
- } | {
2051
- type: "reasoning-end";
2052
- id: string;
2053
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2054
- } | {
2055
- type: "source-url";
2056
- sourceId: string;
2057
- url: string;
2058
- title?: string | undefined;
2059
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2060
- } | {
2061
- type: "source-document";
2062
- sourceId: string;
2063
- mediaType: string;
2064
- title: string;
2065
- filename?: string | undefined;
2066
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2067
- } | {
2068
- type: "file";
2069
- url: string;
2070
- mediaType: string;
2071
- providerMetadata?: _ai_sdk_provider.SharedV3ProviderMetadata | undefined;
2072
- } | {
2073
- type: `data-${string}`;
2074
- data: unknown;
2075
- id?: string | undefined;
2076
- transient?: boolean | undefined;
2077
- } | {
2078
- type: "start-step";
2079
- } | {
2080
- type: "finish-step";
2081
- } | {
2082
- type: "start";
2083
- messageId?: string | undefined;
2084
- messageMetadata?: unknown;
2085
- } | {
2086
- type: "finish";
2087
- finishReason?: "length" | "error" | "stop" | "content-filter" | "tool-calls" | "other" | undefined;
2088
- messageMetadata?: unknown;
2089
- } | {
2090
- type: "abort";
2091
- reason?: string | undefined;
2092
- } | {
2093
- type: "message-metadata";
2094
- messageMetadata: unknown;
2095
- }>;
1965
+ declare const uiMessageChunkSchema: _ai_sdk_provider_utils.LazySchema<UIMessageChunk<unknown, UIDataTypes>>;
2096
1966
  type DataUIMessageChunk<DATA_TYPES extends UIDataTypes> = ValueOf<{
2097
1967
  [NAME in keyof DATA_TYPES & string]: {
2098
1968
  type: `data-${NAME}`;
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.231" : "0.0.0-test";
1286
1286
 
1287
1287
  // src/util/download/download.ts
1288
1288
  var download = async ({
@@ -3114,6 +3114,21 @@ function extractTextContent(content) {
3114
3114
  return parts.map((content2) => content2.text).join("");
3115
3115
  }
3116
3116
 
3117
+ // src/generate-text/filter-active-tools.ts
3118
+ function filterActiveTools({
3119
+ tools,
3120
+ activeTools
3121
+ }) {
3122
+ if (tools == null || activeTools == null) {
3123
+ return tools;
3124
+ }
3125
+ return Object.fromEntries(
3126
+ Object.entries(tools).filter(
3127
+ ([name22]) => activeTools.includes(name22)
3128
+ )
3129
+ );
3130
+ }
3131
+
3117
3132
  // src/generate-text/generated-file.ts
3118
3133
  var import_provider_utils10 = require("@ai-sdk/provider-utils");
3119
3134
  var DefaultGeneratedFile = class {
@@ -4650,6 +4665,9 @@ async function generateText({
4650
4665
  const steps = [];
4651
4666
  const pendingDeferredToolCalls = /* @__PURE__ */ new Map();
4652
4667
  do {
4668
+ if (steps.length > 0) {
4669
+ mergedAbortSignal == null ? void 0 : mergedAbortSignal.throwIfAborted();
4670
+ }
4653
4671
  const stepTimeoutId = setAbortTimeout({
4654
4672
  abortController: stepAbortController,
4655
4673
  label: "Step",
@@ -4681,6 +4699,10 @@ async function generateText({
4681
4699
  });
4682
4700
  experimental_context = (_d = prepareStepResult == null ? void 0 : prepareStepResult.experimental_context) != null ? _d : experimental_context;
4683
4701
  const stepActiveTools = (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools;
4702
+ const stepToolSet = filterActiveTools({
4703
+ tools,
4704
+ activeTools: stepActiveTools
4705
+ });
4684
4706
  const { toolChoice: stepToolChoice, tools: stepTools } = await prepareToolsAndToolChoice({
4685
4707
  tools,
4686
4708
  toolChoice: (_f = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _f : toolChoice,
@@ -4833,7 +4855,7 @@ async function generateText({
4833
4855
  ).map(
4834
4856
  (toolCall) => parseToolCall({
4835
4857
  toolCall,
4836
- tools,
4858
+ tools: stepToolSet,
4837
4859
  repairToolCall,
4838
4860
  system,
4839
4861
  messages: stepInputMessages
@@ -4845,7 +4867,7 @@ async function generateText({
4845
4867
  if (toolCall.invalid) {
4846
4868
  continue;
4847
4869
  }
4848
- const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
4870
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolCall.toolName];
4849
4871
  if (tool2 == null) {
4850
4872
  continue;
4851
4873
  }
@@ -4905,13 +4927,13 @@ async function generateText({
4905
4927
  clientToolCalls = stepToolCalls.filter(
4906
4928
  (toolCall) => !toolCall.providerExecuted
4907
4929
  );
4908
- if (tools != null) {
4930
+ if (stepToolSet != null) {
4909
4931
  clientToolOutputs.push(
4910
4932
  ...await executeTools({
4911
4933
  toolCalls: clientToolCalls.filter(
4912
4934
  (toolCall) => !toolCall.invalid && toolApprovalRequests[toolCall.toolCallId] == null
4913
4935
  ),
4914
- tools,
4936
+ tools: stepToolSet,
4915
4937
  tracer,
4916
4938
  telemetry,
4917
4939
  messages: stepInputMessages,
@@ -4933,7 +4955,7 @@ async function generateText({
4933
4955
  for (const toolCall of stepToolCalls) {
4934
4956
  if (!toolCall.providerExecuted)
4935
4957
  continue;
4936
- const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
4958
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolCall.toolName];
4937
4959
  if ((tool2 == null ? void 0 : tool2.type) === "provider" && tool2.supportsDeferredResults) {
4938
4960
  const hasResultInResponse = currentModelResponse.content.some(
4939
4961
  (part) => part.type === "tool-result" && part.toolCallId === toolCall.toolCallId
@@ -4955,12 +4977,12 @@ async function generateText({
4955
4977
  toolCalls: stepToolCalls,
4956
4978
  toolOutputs: clientToolOutputs,
4957
4979
  toolApprovalRequests: Object.values(toolApprovalRequests),
4958
- tools
4980
+ tools: stepToolSet
4959
4981
  });
4960
4982
  responseMessages.push(
4961
4983
  ...await toResponseMessages({
4962
4984
  content: stepContent,
4963
- tools
4985
+ tools: stepToolSet
4964
4986
  })
4965
4987
  );
4966
4988
  const stepRequest = ((_i = include == null ? void 0 : include.requestBody) != null ? _i : true) ? (_j = currentModelResponse.request) != null ? _j : {} : { ...currentModelResponse.request, body: void 0 };
@@ -5518,27 +5540,27 @@ var toolMetadataSchema = import_v47.z.record(
5518
5540
  var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5519
5541
  () => (0, import_provider_utils17.zodSchema)(
5520
5542
  import_v47.z.union([
5521
- import_v47.z.strictObject({
5543
+ import_v47.z.looseObject({
5522
5544
  type: import_v47.z.literal("text-start"),
5523
5545
  id: import_v47.z.string(),
5524
5546
  providerMetadata: providerMetadataSchema.optional()
5525
5547
  }),
5526
- import_v47.z.strictObject({
5548
+ import_v47.z.looseObject({
5527
5549
  type: import_v47.z.literal("text-delta"),
5528
5550
  id: import_v47.z.string(),
5529
5551
  delta: import_v47.z.string(),
5530
5552
  providerMetadata: providerMetadataSchema.optional()
5531
5553
  }),
5532
- import_v47.z.strictObject({
5554
+ import_v47.z.looseObject({
5533
5555
  type: import_v47.z.literal("text-end"),
5534
5556
  id: import_v47.z.string(),
5535
5557
  providerMetadata: providerMetadataSchema.optional()
5536
5558
  }),
5537
- import_v47.z.strictObject({
5559
+ import_v47.z.looseObject({
5538
5560
  type: import_v47.z.literal("error"),
5539
5561
  errorText: import_v47.z.string()
5540
5562
  }),
5541
- import_v47.z.strictObject({
5563
+ import_v47.z.looseObject({
5542
5564
  type: import_v47.z.literal("tool-input-start"),
5543
5565
  toolCallId: import_v47.z.string(),
5544
5566
  toolName: import_v47.z.string(),
@@ -5548,12 +5570,12 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5548
5570
  dynamic: import_v47.z.boolean().optional(),
5549
5571
  title: import_v47.z.string().optional()
5550
5572
  }),
5551
- import_v47.z.strictObject({
5573
+ import_v47.z.looseObject({
5552
5574
  type: import_v47.z.literal("tool-input-delta"),
5553
5575
  toolCallId: import_v47.z.string(),
5554
5576
  inputTextDelta: import_v47.z.string()
5555
5577
  }),
5556
- import_v47.z.strictObject({
5578
+ import_v47.z.looseObject({
5557
5579
  type: import_v47.z.literal("tool-input-available"),
5558
5580
  toolCallId: import_v47.z.string(),
5559
5581
  toolName: import_v47.z.string(),
@@ -5564,7 +5586,7 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5564
5586
  dynamic: import_v47.z.boolean().optional(),
5565
5587
  title: import_v47.z.string().optional()
5566
5588
  }),
5567
- import_v47.z.strictObject({
5589
+ import_v47.z.looseObject({
5568
5590
  type: import_v47.z.literal("tool-input-error"),
5569
5591
  toolCallId: import_v47.z.string(),
5570
5592
  toolName: import_v47.z.string(),
@@ -5576,13 +5598,13 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5576
5598
  errorText: import_v47.z.string(),
5577
5599
  title: import_v47.z.string().optional()
5578
5600
  }),
5579
- import_v47.z.strictObject({
5601
+ import_v47.z.looseObject({
5580
5602
  type: import_v47.z.literal("tool-approval-request"),
5581
5603
  approvalId: import_v47.z.string(),
5582
5604
  toolCallId: import_v47.z.string(),
5583
5605
  signature: import_v47.z.string().optional()
5584
5606
  }),
5585
- import_v47.z.strictObject({
5607
+ import_v47.z.looseObject({
5586
5608
  type: import_v47.z.literal("tool-output-available"),
5587
5609
  toolCallId: import_v47.z.string(),
5588
5610
  output: import_v47.z.unknown(),
@@ -5592,7 +5614,7 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5592
5614
  dynamic: import_v47.z.boolean().optional(),
5593
5615
  preliminary: import_v47.z.boolean().optional()
5594
5616
  }),
5595
- import_v47.z.strictObject({
5617
+ import_v47.z.looseObject({
5596
5618
  type: import_v47.z.literal("tool-output-error"),
5597
5619
  toolCallId: import_v47.z.string(),
5598
5620
  errorText: import_v47.z.string(),
@@ -5601,34 +5623,34 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5601
5623
  toolMetadata: toolMetadataSchema.optional(),
5602
5624
  dynamic: import_v47.z.boolean().optional()
5603
5625
  }),
5604
- import_v47.z.strictObject({
5626
+ import_v47.z.looseObject({
5605
5627
  type: import_v47.z.literal("tool-output-denied"),
5606
5628
  toolCallId: import_v47.z.string()
5607
5629
  }),
5608
- import_v47.z.strictObject({
5630
+ import_v47.z.looseObject({
5609
5631
  type: import_v47.z.literal("reasoning-start"),
5610
5632
  id: import_v47.z.string(),
5611
5633
  providerMetadata: providerMetadataSchema.optional()
5612
5634
  }),
5613
- import_v47.z.strictObject({
5635
+ import_v47.z.looseObject({
5614
5636
  type: import_v47.z.literal("reasoning-delta"),
5615
5637
  id: import_v47.z.string(),
5616
5638
  delta: import_v47.z.string(),
5617
5639
  providerMetadata: providerMetadataSchema.optional()
5618
5640
  }),
5619
- import_v47.z.strictObject({
5641
+ import_v47.z.looseObject({
5620
5642
  type: import_v47.z.literal("reasoning-end"),
5621
5643
  id: import_v47.z.string(),
5622
5644
  providerMetadata: providerMetadataSchema.optional()
5623
5645
  }),
5624
- import_v47.z.strictObject({
5646
+ import_v47.z.looseObject({
5625
5647
  type: import_v47.z.literal("source-url"),
5626
5648
  sourceId: import_v47.z.string(),
5627
5649
  url: import_v47.z.string(),
5628
5650
  title: import_v47.z.string().optional(),
5629
5651
  providerMetadata: providerMetadataSchema.optional()
5630
5652
  }),
5631
- import_v47.z.strictObject({
5653
+ import_v47.z.looseObject({
5632
5654
  type: import_v47.z.literal("source-document"),
5633
5655
  sourceId: import_v47.z.string(),
5634
5656
  mediaType: import_v47.z.string(),
@@ -5636,13 +5658,13 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5636
5658
  filename: import_v47.z.string().optional(),
5637
5659
  providerMetadata: providerMetadataSchema.optional()
5638
5660
  }),
5639
- import_v47.z.strictObject({
5661
+ import_v47.z.looseObject({
5640
5662
  type: import_v47.z.literal("file"),
5641
5663
  url: import_v47.z.string(),
5642
5664
  mediaType: import_v47.z.string(),
5643
5665
  providerMetadata: providerMetadataSchema.optional()
5644
5666
  }),
5645
- import_v47.z.strictObject({
5667
+ import_v47.z.looseObject({
5646
5668
  type: import_v47.z.custom(
5647
5669
  (value) => typeof value === "string" && value.startsWith("data-"),
5648
5670
  { message: 'Type must start with "data-"' }
@@ -5651,18 +5673,18 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5651
5673
  data: import_v47.z.unknown(),
5652
5674
  transient: import_v47.z.boolean().optional()
5653
5675
  }),
5654
- import_v47.z.strictObject({
5676
+ import_v47.z.looseObject({
5655
5677
  type: import_v47.z.literal("start-step")
5656
5678
  }),
5657
- import_v47.z.strictObject({
5679
+ import_v47.z.looseObject({
5658
5680
  type: import_v47.z.literal("finish-step")
5659
5681
  }),
5660
- import_v47.z.strictObject({
5682
+ import_v47.z.looseObject({
5661
5683
  type: import_v47.z.literal("start"),
5662
5684
  messageId: import_v47.z.string().optional(),
5663
5685
  messageMetadata: import_v47.z.unknown().optional()
5664
5686
  }),
5665
- import_v47.z.strictObject({
5687
+ import_v47.z.looseObject({
5666
5688
  type: import_v47.z.literal("finish"),
5667
5689
  finishReason: import_v47.z.enum([
5668
5690
  "stop",
@@ -5674,11 +5696,11 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5674
5696
  ]).optional(),
5675
5697
  messageMetadata: import_v47.z.unknown().optional()
5676
5698
  }),
5677
- import_v47.z.strictObject({
5699
+ import_v47.z.looseObject({
5678
5700
  type: import_v47.z.literal("abort"),
5679
5701
  reason: import_v47.z.string().optional()
5680
5702
  }),
5681
- import_v47.z.strictObject({
5703
+ import_v47.z.looseObject({
5682
5704
  type: import_v47.z.literal("message-metadata"),
5683
5705
  messageMetadata: import_v47.z.unknown()
5684
5706
  })
@@ -7132,6 +7154,7 @@ var DefaultStreamTextResult = class {
7132
7154
  let recordedWarnings = [];
7133
7155
  const recordedSteps = [];
7134
7156
  let recordedNoOutputError;
7157
+ let currentStepToolSet = tools;
7135
7158
  const pendingDeferredToolCalls = /* @__PURE__ */ new Map();
7136
7159
  let rootSpan;
7137
7160
  let activeTextContent = createIdMap();
@@ -7259,7 +7282,7 @@ var DefaultStreamTextResult = class {
7259
7282
  if (part.type === "finish-step") {
7260
7283
  const stepMessages = await toResponseMessages({
7261
7284
  content: recordedContent,
7262
- tools
7285
+ tools: currentStepToolSet
7263
7286
  });
7264
7287
  const currentStepResult = new DefaultStepResult({
7265
7288
  stepNumber: recordedSteps.length,
@@ -7690,6 +7713,11 @@ var DefaultStreamTextResult = class {
7690
7713
  download: download2
7691
7714
  });
7692
7715
  const stepActiveTools = (_d = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _d : activeTools;
7716
+ const stepToolSet = filterActiveTools({
7717
+ tools,
7718
+ activeTools: stepActiveTools
7719
+ });
7720
+ currentStepToolSet = stepToolSet;
7693
7721
  const { toolChoice: stepToolChoice, tools: stepTools } = await prepareToolsAndToolChoice({
7694
7722
  tools,
7695
7723
  toolChoice: (_e = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _e : toolChoice,
@@ -7789,7 +7817,7 @@ var DefaultStreamTextResult = class {
7789
7817
  })
7790
7818
  );
7791
7819
  const streamWithToolResults = runToolsTransformation({
7792
- tools,
7820
+ tools: stepToolSet,
7793
7821
  generatorStream: stream2,
7794
7822
  tracer,
7795
7823
  telemetry,
@@ -7940,7 +7968,7 @@ var DefaultStreamTextResult = class {
7940
7968
  }
7941
7969
  case "tool-input-start": {
7942
7970
  activeToolCallToolNames[chunk.id] = chunk.toolName;
7943
- const tool2 = tools == null ? void 0 : tools[chunk.toolName];
7971
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[chunk.toolName];
7944
7972
  if ((tool2 == null ? void 0 : tool2.onInputStart) != null) {
7945
7973
  await tool2.onInputStart({
7946
7974
  toolCallId: chunk.id,
@@ -7963,7 +7991,7 @@ var DefaultStreamTextResult = class {
7963
7991
  }
7964
7992
  case "tool-input-delta": {
7965
7993
  const toolName = activeToolCallToolNames[chunk.id];
7966
- const tool2 = tools == null ? void 0 : tools[toolName];
7994
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolName];
7967
7995
  if ((tool2 == null ? void 0 : tool2.onInputDelta) != null) {
7968
7996
  await tool2.onInputDelta({
7969
7997
  inputTextDelta: chunk.delta,
@@ -8095,7 +8123,7 @@ var DefaultStreamTextResult = class {
8095
8123
  for (const toolCall of stepToolCalls) {
8096
8124
  if (toolCall.providerExecuted !== true)
8097
8125
  continue;
8098
- const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
8126
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolCall.toolName];
8099
8127
  if ((tool2 == null ? void 0 : tool2.type) === "provider" && tool2.supportsDeferredResults) {
8100
8128
  const hasResultInStep = stepToolOutputs.some(
8101
8129
  (output2) => (output2.type === "tool-result" || output2.type === "tool-error") && output2.toolCallId === toolCall.toolCallId
@@ -8130,7 +8158,7 @@ var DefaultStreamTextResult = class {
8130
8158
  // use transformed content to create the messages for the next step:
8131
8159
  recordedSteps[recordedSteps.length - 1].content
8132
8160
  ),
8133
- tools
8161
+ tools: stepToolSet
8134
8162
  })
8135
8163
  );
8136
8164
  try {