ai 6.0.229 → 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,25 @@
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
+
14
+ ## 6.0.230
15
+
16
+ ### Patch Changes
17
+
18
+ - 19093fd: fix(ai): call `onInputStart` before `onInputAvailable` during non-streaming tool calls
19
+ - Updated dependencies [19093fd]
20
+ - @ai-sdk/provider-utils@4.0.40
21
+ - @ai-sdk/gateway@3.0.153
22
+
3
23
  ## 6.0.229
4
24
 
5
25
  ### 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.229" : "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,11 +4867,19 @@ 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
  }
4852
- if ((tool2 == null ? void 0 : tool2.onInputAvailable) != null) {
4874
+ if (tool2.onInputStart != null) {
4875
+ await tool2.onInputStart({
4876
+ toolCallId: toolCall.toolCallId,
4877
+ messages: stepInputMessages,
4878
+ abortSignal: mergedAbortSignal,
4879
+ experimental_context
4880
+ });
4881
+ }
4882
+ if (tool2.onInputAvailable != null) {
4853
4883
  await tool2.onInputAvailable({
4854
4884
  input: toolCall.input,
4855
4885
  toolCallId: toolCall.toolCallId,
@@ -4897,13 +4927,13 @@ async function generateText({
4897
4927
  clientToolCalls = stepToolCalls.filter(
4898
4928
  (toolCall) => !toolCall.providerExecuted
4899
4929
  );
4900
- if (tools != null) {
4930
+ if (stepToolSet != null) {
4901
4931
  clientToolOutputs.push(
4902
4932
  ...await executeTools({
4903
4933
  toolCalls: clientToolCalls.filter(
4904
4934
  (toolCall) => !toolCall.invalid && toolApprovalRequests[toolCall.toolCallId] == null
4905
4935
  ),
4906
- tools,
4936
+ tools: stepToolSet,
4907
4937
  tracer,
4908
4938
  telemetry,
4909
4939
  messages: stepInputMessages,
@@ -4925,7 +4955,7 @@ async function generateText({
4925
4955
  for (const toolCall of stepToolCalls) {
4926
4956
  if (!toolCall.providerExecuted)
4927
4957
  continue;
4928
- const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
4958
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolCall.toolName];
4929
4959
  if ((tool2 == null ? void 0 : tool2.type) === "provider" && tool2.supportsDeferredResults) {
4930
4960
  const hasResultInResponse = currentModelResponse.content.some(
4931
4961
  (part) => part.type === "tool-result" && part.toolCallId === toolCall.toolCallId
@@ -4947,12 +4977,12 @@ async function generateText({
4947
4977
  toolCalls: stepToolCalls,
4948
4978
  toolOutputs: clientToolOutputs,
4949
4979
  toolApprovalRequests: Object.values(toolApprovalRequests),
4950
- tools
4980
+ tools: stepToolSet
4951
4981
  });
4952
4982
  responseMessages.push(
4953
4983
  ...await toResponseMessages({
4954
4984
  content: stepContent,
4955
- tools
4985
+ tools: stepToolSet
4956
4986
  })
4957
4987
  );
4958
4988
  const stepRequest = ((_i = include == null ? void 0 : include.requestBody) != null ? _i : true) ? (_j = currentModelResponse.request) != null ? _j : {} : { ...currentModelResponse.request, body: void 0 };
@@ -5510,27 +5540,27 @@ var toolMetadataSchema = import_v47.z.record(
5510
5540
  var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5511
5541
  () => (0, import_provider_utils17.zodSchema)(
5512
5542
  import_v47.z.union([
5513
- import_v47.z.strictObject({
5543
+ import_v47.z.looseObject({
5514
5544
  type: import_v47.z.literal("text-start"),
5515
5545
  id: import_v47.z.string(),
5516
5546
  providerMetadata: providerMetadataSchema.optional()
5517
5547
  }),
5518
- import_v47.z.strictObject({
5548
+ import_v47.z.looseObject({
5519
5549
  type: import_v47.z.literal("text-delta"),
5520
5550
  id: import_v47.z.string(),
5521
5551
  delta: import_v47.z.string(),
5522
5552
  providerMetadata: providerMetadataSchema.optional()
5523
5553
  }),
5524
- import_v47.z.strictObject({
5554
+ import_v47.z.looseObject({
5525
5555
  type: import_v47.z.literal("text-end"),
5526
5556
  id: import_v47.z.string(),
5527
5557
  providerMetadata: providerMetadataSchema.optional()
5528
5558
  }),
5529
- import_v47.z.strictObject({
5559
+ import_v47.z.looseObject({
5530
5560
  type: import_v47.z.literal("error"),
5531
5561
  errorText: import_v47.z.string()
5532
5562
  }),
5533
- import_v47.z.strictObject({
5563
+ import_v47.z.looseObject({
5534
5564
  type: import_v47.z.literal("tool-input-start"),
5535
5565
  toolCallId: import_v47.z.string(),
5536
5566
  toolName: import_v47.z.string(),
@@ -5540,12 +5570,12 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5540
5570
  dynamic: import_v47.z.boolean().optional(),
5541
5571
  title: import_v47.z.string().optional()
5542
5572
  }),
5543
- import_v47.z.strictObject({
5573
+ import_v47.z.looseObject({
5544
5574
  type: import_v47.z.literal("tool-input-delta"),
5545
5575
  toolCallId: import_v47.z.string(),
5546
5576
  inputTextDelta: import_v47.z.string()
5547
5577
  }),
5548
- import_v47.z.strictObject({
5578
+ import_v47.z.looseObject({
5549
5579
  type: import_v47.z.literal("tool-input-available"),
5550
5580
  toolCallId: import_v47.z.string(),
5551
5581
  toolName: import_v47.z.string(),
@@ -5556,7 +5586,7 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5556
5586
  dynamic: import_v47.z.boolean().optional(),
5557
5587
  title: import_v47.z.string().optional()
5558
5588
  }),
5559
- import_v47.z.strictObject({
5589
+ import_v47.z.looseObject({
5560
5590
  type: import_v47.z.literal("tool-input-error"),
5561
5591
  toolCallId: import_v47.z.string(),
5562
5592
  toolName: import_v47.z.string(),
@@ -5568,13 +5598,13 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5568
5598
  errorText: import_v47.z.string(),
5569
5599
  title: import_v47.z.string().optional()
5570
5600
  }),
5571
- import_v47.z.strictObject({
5601
+ import_v47.z.looseObject({
5572
5602
  type: import_v47.z.literal("tool-approval-request"),
5573
5603
  approvalId: import_v47.z.string(),
5574
5604
  toolCallId: import_v47.z.string(),
5575
5605
  signature: import_v47.z.string().optional()
5576
5606
  }),
5577
- import_v47.z.strictObject({
5607
+ import_v47.z.looseObject({
5578
5608
  type: import_v47.z.literal("tool-output-available"),
5579
5609
  toolCallId: import_v47.z.string(),
5580
5610
  output: import_v47.z.unknown(),
@@ -5584,7 +5614,7 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5584
5614
  dynamic: import_v47.z.boolean().optional(),
5585
5615
  preliminary: import_v47.z.boolean().optional()
5586
5616
  }),
5587
- import_v47.z.strictObject({
5617
+ import_v47.z.looseObject({
5588
5618
  type: import_v47.z.literal("tool-output-error"),
5589
5619
  toolCallId: import_v47.z.string(),
5590
5620
  errorText: import_v47.z.string(),
@@ -5593,34 +5623,34 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5593
5623
  toolMetadata: toolMetadataSchema.optional(),
5594
5624
  dynamic: import_v47.z.boolean().optional()
5595
5625
  }),
5596
- import_v47.z.strictObject({
5626
+ import_v47.z.looseObject({
5597
5627
  type: import_v47.z.literal("tool-output-denied"),
5598
5628
  toolCallId: import_v47.z.string()
5599
5629
  }),
5600
- import_v47.z.strictObject({
5630
+ import_v47.z.looseObject({
5601
5631
  type: import_v47.z.literal("reasoning-start"),
5602
5632
  id: import_v47.z.string(),
5603
5633
  providerMetadata: providerMetadataSchema.optional()
5604
5634
  }),
5605
- import_v47.z.strictObject({
5635
+ import_v47.z.looseObject({
5606
5636
  type: import_v47.z.literal("reasoning-delta"),
5607
5637
  id: import_v47.z.string(),
5608
5638
  delta: import_v47.z.string(),
5609
5639
  providerMetadata: providerMetadataSchema.optional()
5610
5640
  }),
5611
- import_v47.z.strictObject({
5641
+ import_v47.z.looseObject({
5612
5642
  type: import_v47.z.literal("reasoning-end"),
5613
5643
  id: import_v47.z.string(),
5614
5644
  providerMetadata: providerMetadataSchema.optional()
5615
5645
  }),
5616
- import_v47.z.strictObject({
5646
+ import_v47.z.looseObject({
5617
5647
  type: import_v47.z.literal("source-url"),
5618
5648
  sourceId: import_v47.z.string(),
5619
5649
  url: import_v47.z.string(),
5620
5650
  title: import_v47.z.string().optional(),
5621
5651
  providerMetadata: providerMetadataSchema.optional()
5622
5652
  }),
5623
- import_v47.z.strictObject({
5653
+ import_v47.z.looseObject({
5624
5654
  type: import_v47.z.literal("source-document"),
5625
5655
  sourceId: import_v47.z.string(),
5626
5656
  mediaType: import_v47.z.string(),
@@ -5628,13 +5658,13 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5628
5658
  filename: 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("file"),
5633
5663
  url: import_v47.z.string(),
5634
5664
  mediaType: import_v47.z.string(),
5635
5665
  providerMetadata: providerMetadataSchema.optional()
5636
5666
  }),
5637
- import_v47.z.strictObject({
5667
+ import_v47.z.looseObject({
5638
5668
  type: import_v47.z.custom(
5639
5669
  (value) => typeof value === "string" && value.startsWith("data-"),
5640
5670
  { message: 'Type must start with "data-"' }
@@ -5643,18 +5673,18 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5643
5673
  data: import_v47.z.unknown(),
5644
5674
  transient: import_v47.z.boolean().optional()
5645
5675
  }),
5646
- import_v47.z.strictObject({
5676
+ import_v47.z.looseObject({
5647
5677
  type: import_v47.z.literal("start-step")
5648
5678
  }),
5649
- import_v47.z.strictObject({
5679
+ import_v47.z.looseObject({
5650
5680
  type: import_v47.z.literal("finish-step")
5651
5681
  }),
5652
- import_v47.z.strictObject({
5682
+ import_v47.z.looseObject({
5653
5683
  type: import_v47.z.literal("start"),
5654
5684
  messageId: import_v47.z.string().optional(),
5655
5685
  messageMetadata: import_v47.z.unknown().optional()
5656
5686
  }),
5657
- import_v47.z.strictObject({
5687
+ import_v47.z.looseObject({
5658
5688
  type: import_v47.z.literal("finish"),
5659
5689
  finishReason: import_v47.z.enum([
5660
5690
  "stop",
@@ -5666,11 +5696,11 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5666
5696
  ]).optional(),
5667
5697
  messageMetadata: import_v47.z.unknown().optional()
5668
5698
  }),
5669
- import_v47.z.strictObject({
5699
+ import_v47.z.looseObject({
5670
5700
  type: import_v47.z.literal("abort"),
5671
5701
  reason: import_v47.z.string().optional()
5672
5702
  }),
5673
- import_v47.z.strictObject({
5703
+ import_v47.z.looseObject({
5674
5704
  type: import_v47.z.literal("message-metadata"),
5675
5705
  messageMetadata: import_v47.z.unknown()
5676
5706
  })
@@ -7124,6 +7154,7 @@ var DefaultStreamTextResult = class {
7124
7154
  let recordedWarnings = [];
7125
7155
  const recordedSteps = [];
7126
7156
  let recordedNoOutputError;
7157
+ let currentStepToolSet = tools;
7127
7158
  const pendingDeferredToolCalls = /* @__PURE__ */ new Map();
7128
7159
  let rootSpan;
7129
7160
  let activeTextContent = createIdMap();
@@ -7251,7 +7282,7 @@ var DefaultStreamTextResult = class {
7251
7282
  if (part.type === "finish-step") {
7252
7283
  const stepMessages = await toResponseMessages({
7253
7284
  content: recordedContent,
7254
- tools
7285
+ tools: currentStepToolSet
7255
7286
  });
7256
7287
  const currentStepResult = new DefaultStepResult({
7257
7288
  stepNumber: recordedSteps.length,
@@ -7682,6 +7713,11 @@ var DefaultStreamTextResult = class {
7682
7713
  download: download2
7683
7714
  });
7684
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;
7685
7721
  const { toolChoice: stepToolChoice, tools: stepTools } = await prepareToolsAndToolChoice({
7686
7722
  tools,
7687
7723
  toolChoice: (_e = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _e : toolChoice,
@@ -7781,7 +7817,7 @@ var DefaultStreamTextResult = class {
7781
7817
  })
7782
7818
  );
7783
7819
  const streamWithToolResults = runToolsTransformation({
7784
- tools,
7820
+ tools: stepToolSet,
7785
7821
  generatorStream: stream2,
7786
7822
  tracer,
7787
7823
  telemetry,
@@ -7932,7 +7968,7 @@ var DefaultStreamTextResult = class {
7932
7968
  }
7933
7969
  case "tool-input-start": {
7934
7970
  activeToolCallToolNames[chunk.id] = chunk.toolName;
7935
- const tool2 = tools == null ? void 0 : tools[chunk.toolName];
7971
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[chunk.toolName];
7936
7972
  if ((tool2 == null ? void 0 : tool2.onInputStart) != null) {
7937
7973
  await tool2.onInputStart({
7938
7974
  toolCallId: chunk.id,
@@ -7955,7 +7991,7 @@ var DefaultStreamTextResult = class {
7955
7991
  }
7956
7992
  case "tool-input-delta": {
7957
7993
  const toolName = activeToolCallToolNames[chunk.id];
7958
- const tool2 = tools == null ? void 0 : tools[toolName];
7994
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolName];
7959
7995
  if ((tool2 == null ? void 0 : tool2.onInputDelta) != null) {
7960
7996
  await tool2.onInputDelta({
7961
7997
  inputTextDelta: chunk.delta,
@@ -8087,7 +8123,7 @@ var DefaultStreamTextResult = class {
8087
8123
  for (const toolCall of stepToolCalls) {
8088
8124
  if (toolCall.providerExecuted !== true)
8089
8125
  continue;
8090
- const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
8126
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolCall.toolName];
8091
8127
  if ((tool2 == null ? void 0 : tool2.type) === "provider" && tool2.supportsDeferredResults) {
8092
8128
  const hasResultInStep = stepToolOutputs.some(
8093
8129
  (output2) => (output2.type === "tool-result" || output2.type === "tool-error") && output2.toolCallId === toolCall.toolCallId
@@ -8122,7 +8158,7 @@ var DefaultStreamTextResult = class {
8122
8158
  // use transformed content to create the messages for the next step:
8123
8159
  recordedSteps[recordedSteps.length - 1].content
8124
8160
  ),
8125
- tools
8161
+ tools: stepToolSet
8126
8162
  })
8127
8163
  );
8128
8164
  try {