ai 5.0.216 → 5.0.217

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
@@ -778,7 +778,7 @@ function detectMediaType({
778
778
  var import_provider_utils2 = require("@ai-sdk/provider-utils");
779
779
 
780
780
  // src/version.ts
781
- var VERSION = true ? "5.0.216" : "0.0.0-test";
781
+ var VERSION = true ? "5.0.217" : "0.0.0-test";
782
782
 
783
783
  // src/util/download/download.ts
784
784
  var download = async ({
@@ -1922,6 +1922,21 @@ function extractTextContent(content) {
1922
1922
  return parts.map((content2) => content2.text).join("");
1923
1923
  }
1924
1924
 
1925
+ // src/generate-text/filter-active-tools.ts
1926
+ function filterActiveTools({
1927
+ tools,
1928
+ activeTools
1929
+ }) {
1930
+ if (tools == null || activeTools == null) {
1931
+ return tools;
1932
+ }
1933
+ return Object.fromEntries(
1934
+ Object.entries(tools).filter(
1935
+ ([name16]) => activeTools.includes(name16)
1936
+ )
1937
+ );
1938
+ }
1939
+
1925
1940
  // src/generate-text/generated-file.ts
1926
1941
  var import_provider_utils8 = require("@ai-sdk/provider-utils");
1927
1942
  var DefaultGeneratedFile = class {
@@ -2334,6 +2349,9 @@ async function generateText({
2334
2349
  const responseMessages = [];
2335
2350
  const steps = [];
2336
2351
  do {
2352
+ if (steps.length > 0) {
2353
+ abortSignal == null ? void 0 : abortSignal.throwIfAborted();
2354
+ }
2337
2355
  const stepInputMessages = [
2338
2356
  ...initialPrompt.messages,
2339
2357
  ...responseMessages
@@ -2355,10 +2373,15 @@ async function generateText({
2355
2373
  supportedUrls: await stepModel.supportedUrls,
2356
2374
  download: download2
2357
2375
  });
2376
+ const stepActiveTools = (_d = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _d : activeTools;
2377
+ const stepToolSet = filterActiveTools({
2378
+ tools,
2379
+ activeTools: stepActiveTools
2380
+ });
2358
2381
  const { toolChoice: stepToolChoice, tools: stepTools } = prepareToolsAndToolChoice({
2359
2382
  tools,
2360
- toolChoice: (_d = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _d : toolChoice,
2361
- activeTools: (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools
2383
+ toolChoice: (_e = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _e : toolChoice,
2384
+ activeTools: stepActiveTools
2362
2385
  });
2363
2386
  currentModelResponse = await retry(
2364
2387
  () => {
@@ -2462,7 +2485,7 @@ async function generateText({
2462
2485
  ).map(
2463
2486
  (toolCall) => parseToolCall({
2464
2487
  toolCall,
2465
- tools,
2488
+ tools: stepToolSet,
2466
2489
  repairToolCall,
2467
2490
  system,
2468
2491
  messages: stepInputMessages
@@ -2473,7 +2496,7 @@ async function generateText({
2473
2496
  if (toolCall.invalid) {
2474
2497
  continue;
2475
2498
  }
2476
- const tool2 = tools[toolCall.toolName];
2499
+ const tool2 = stepToolSet[toolCall.toolName];
2477
2500
  if (tool2.onInputStart != null) {
2478
2501
  await tool2.onInputStart({
2479
2502
  toolCallId: toolCall.toolCallId,
@@ -2509,13 +2532,13 @@ async function generateText({
2509
2532
  clientToolCalls = stepToolCalls.filter(
2510
2533
  (toolCall) => !toolCall.providerExecuted
2511
2534
  );
2512
- if (tools != null) {
2535
+ if (stepToolSet != null) {
2513
2536
  clientToolOutputs.push(
2514
2537
  ...await executeTools({
2515
2538
  toolCalls: clientToolCalls.filter(
2516
2539
  (toolCall) => !toolCall.invalid
2517
2540
  ),
2518
- tools,
2541
+ tools: stepToolSet,
2519
2542
  tracer,
2520
2543
  telemetry,
2521
2544
  messages: stepInputMessages,
@@ -2532,7 +2555,7 @@ async function generateText({
2532
2555
  responseMessages.push(
2533
2556
  ...toResponseMessages({
2534
2557
  content: stepContent,
2535
- tools
2558
+ tools: stepToolSet
2536
2559
  })
2537
2560
  );
2538
2561
  const currentStepResult = new DefaultStepResult({
@@ -3001,39 +3024,39 @@ var import_provider_utils11 = require("@ai-sdk/provider-utils");
3001
3024
  var uiMessageChunkSchema = (0, import_provider_utils11.lazyValidator)(
3002
3025
  () => (0, import_provider_utils11.zodSchema)(
3003
3026
  import_v47.z.union([
3004
- import_v47.z.strictObject({
3027
+ import_v47.z.looseObject({
3005
3028
  type: import_v47.z.literal("text-start"),
3006
3029
  id: import_v47.z.string(),
3007
3030
  providerMetadata: providerMetadataSchema.optional()
3008
3031
  }),
3009
- import_v47.z.strictObject({
3032
+ import_v47.z.looseObject({
3010
3033
  type: import_v47.z.literal("text-delta"),
3011
3034
  id: import_v47.z.string(),
3012
3035
  delta: import_v47.z.string(),
3013
3036
  providerMetadata: providerMetadataSchema.optional()
3014
3037
  }),
3015
- import_v47.z.strictObject({
3038
+ import_v47.z.looseObject({
3016
3039
  type: import_v47.z.literal("text-end"),
3017
3040
  id: import_v47.z.string(),
3018
3041
  providerMetadata: providerMetadataSchema.optional()
3019
3042
  }),
3020
- import_v47.z.strictObject({
3043
+ import_v47.z.looseObject({
3021
3044
  type: import_v47.z.literal("error"),
3022
3045
  errorText: import_v47.z.string()
3023
3046
  }),
3024
- import_v47.z.strictObject({
3047
+ import_v47.z.looseObject({
3025
3048
  type: import_v47.z.literal("tool-input-start"),
3026
3049
  toolCallId: import_v47.z.string(),
3027
3050
  toolName: import_v47.z.string(),
3028
3051
  providerExecuted: import_v47.z.boolean().optional(),
3029
3052
  dynamic: import_v47.z.boolean().optional()
3030
3053
  }),
3031
- import_v47.z.strictObject({
3054
+ import_v47.z.looseObject({
3032
3055
  type: import_v47.z.literal("tool-input-delta"),
3033
3056
  toolCallId: import_v47.z.string(),
3034
3057
  inputTextDelta: import_v47.z.string()
3035
3058
  }),
3036
- import_v47.z.strictObject({
3059
+ import_v47.z.looseObject({
3037
3060
  type: import_v47.z.literal("tool-input-available"),
3038
3061
  toolCallId: import_v47.z.string(),
3039
3062
  toolName: import_v47.z.string(),
@@ -3042,7 +3065,7 @@ var uiMessageChunkSchema = (0, import_provider_utils11.lazyValidator)(
3042
3065
  providerMetadata: providerMetadataSchema.optional(),
3043
3066
  dynamic: import_v47.z.boolean().optional()
3044
3067
  }),
3045
- import_v47.z.strictObject({
3068
+ import_v47.z.looseObject({
3046
3069
  type: import_v47.z.literal("tool-input-error"),
3047
3070
  toolCallId: import_v47.z.string(),
3048
3071
  toolName: import_v47.z.string(),
@@ -3052,7 +3075,7 @@ var uiMessageChunkSchema = (0, import_provider_utils11.lazyValidator)(
3052
3075
  dynamic: import_v47.z.boolean().optional(),
3053
3076
  errorText: import_v47.z.string()
3054
3077
  }),
3055
- import_v47.z.strictObject({
3078
+ import_v47.z.looseObject({
3056
3079
  type: import_v47.z.literal("tool-output-available"),
3057
3080
  toolCallId: import_v47.z.string(),
3058
3081
  output: import_v47.z.unknown(),
@@ -3060,37 +3083,37 @@ var uiMessageChunkSchema = (0, import_provider_utils11.lazyValidator)(
3060
3083
  dynamic: import_v47.z.boolean().optional(),
3061
3084
  preliminary: import_v47.z.boolean().optional()
3062
3085
  }),
3063
- import_v47.z.strictObject({
3086
+ import_v47.z.looseObject({
3064
3087
  type: import_v47.z.literal("tool-output-error"),
3065
3088
  toolCallId: import_v47.z.string(),
3066
3089
  errorText: import_v47.z.string(),
3067
3090
  providerExecuted: import_v47.z.boolean().optional(),
3068
3091
  dynamic: import_v47.z.boolean().optional()
3069
3092
  }),
3070
- import_v47.z.strictObject({
3093
+ import_v47.z.looseObject({
3071
3094
  type: import_v47.z.literal("reasoning-start"),
3072
3095
  id: import_v47.z.string(),
3073
3096
  providerMetadata: providerMetadataSchema.optional()
3074
3097
  }),
3075
- import_v47.z.strictObject({
3098
+ import_v47.z.looseObject({
3076
3099
  type: import_v47.z.literal("reasoning-delta"),
3077
3100
  id: import_v47.z.string(),
3078
3101
  delta: import_v47.z.string(),
3079
3102
  providerMetadata: providerMetadataSchema.optional()
3080
3103
  }),
3081
- import_v47.z.strictObject({
3104
+ import_v47.z.looseObject({
3082
3105
  type: import_v47.z.literal("reasoning-end"),
3083
3106
  id: import_v47.z.string(),
3084
3107
  providerMetadata: providerMetadataSchema.optional()
3085
3108
  }),
3086
- import_v47.z.strictObject({
3109
+ import_v47.z.looseObject({
3087
3110
  type: import_v47.z.literal("source-url"),
3088
3111
  sourceId: import_v47.z.string(),
3089
3112
  url: import_v47.z.string(),
3090
3113
  title: import_v47.z.string().optional(),
3091
3114
  providerMetadata: providerMetadataSchema.optional()
3092
3115
  }),
3093
- import_v47.z.strictObject({
3116
+ import_v47.z.looseObject({
3094
3117
  type: import_v47.z.literal("source-document"),
3095
3118
  sourceId: import_v47.z.string(),
3096
3119
  mediaType: import_v47.z.string(),
@@ -3098,13 +3121,13 @@ var uiMessageChunkSchema = (0, import_provider_utils11.lazyValidator)(
3098
3121
  filename: import_v47.z.string().optional(),
3099
3122
  providerMetadata: providerMetadataSchema.optional()
3100
3123
  }),
3101
- import_v47.z.strictObject({
3124
+ import_v47.z.looseObject({
3102
3125
  type: import_v47.z.literal("file"),
3103
3126
  url: import_v47.z.string(),
3104
3127
  mediaType: import_v47.z.string(),
3105
3128
  providerMetadata: providerMetadataSchema.optional()
3106
3129
  }),
3107
- import_v47.z.strictObject({
3130
+ import_v47.z.looseObject({
3108
3131
  type: import_v47.z.custom(
3109
3132
  (value) => typeof value === "string" && value.startsWith("data-"),
3110
3133
  { message: 'Type must start with "data-"' }
@@ -3113,18 +3136,18 @@ var uiMessageChunkSchema = (0, import_provider_utils11.lazyValidator)(
3113
3136
  data: import_v47.z.unknown(),
3114
3137
  transient: import_v47.z.boolean().optional()
3115
3138
  }),
3116
- import_v47.z.strictObject({
3139
+ import_v47.z.looseObject({
3117
3140
  type: import_v47.z.literal("start-step")
3118
3141
  }),
3119
- import_v47.z.strictObject({
3142
+ import_v47.z.looseObject({
3120
3143
  type: import_v47.z.literal("finish-step")
3121
3144
  }),
3122
- import_v47.z.strictObject({
3145
+ import_v47.z.looseObject({
3123
3146
  type: import_v47.z.literal("start"),
3124
3147
  messageId: import_v47.z.string().optional(),
3125
3148
  messageMetadata: import_v47.z.unknown().optional()
3126
3149
  }),
3127
- import_v47.z.strictObject({
3150
+ import_v47.z.looseObject({
3128
3151
  type: import_v47.z.literal("finish"),
3129
3152
  finishReason: import_v47.z.enum([
3130
3153
  "stop",
@@ -3137,10 +3160,10 @@ var uiMessageChunkSchema = (0, import_provider_utils11.lazyValidator)(
3137
3160
  ]).optional(),
3138
3161
  messageMetadata: import_v47.z.unknown().optional()
3139
3162
  }),
3140
- import_v47.z.strictObject({
3163
+ import_v47.z.looseObject({
3141
3164
  type: import_v47.z.literal("abort")
3142
3165
  }),
3143
- import_v47.z.strictObject({
3166
+ import_v47.z.looseObject({
3144
3167
  type: import_v47.z.literal("message-metadata"),
3145
3168
  messageMetadata: import_v47.z.unknown()
3146
3169
  })
@@ -4759,6 +4782,7 @@ var DefaultStreamTextResult = class {
4759
4782
  let recordedRequest = {};
4760
4783
  let recordedWarnings = [];
4761
4784
  const recordedSteps = [];
4785
+ let currentStepToolSet = tools;
4762
4786
  let rootSpan;
4763
4787
  let activeTextContent = createIdMap();
4764
4788
  let activeReasoningContent = createIdMap();
@@ -4874,7 +4898,7 @@ var DefaultStreamTextResult = class {
4874
4898
  if (part.type === "finish-step") {
4875
4899
  const stepMessages = toResponseMessages({
4876
4900
  content: recordedContent,
4877
- tools
4901
+ tools: currentStepToolSet
4878
4902
  });
4879
4903
  const currentStepResult = new DefaultStepResult({
4880
4904
  content: recordedContent,
@@ -5088,10 +5112,16 @@ var DefaultStreamTextResult = class {
5088
5112
  supportedUrls: await stepModel.supportedUrls,
5089
5113
  download: download2
5090
5114
  });
5115
+ const stepActiveTools = (_d = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _d : activeTools;
5116
+ const stepToolSet = filterActiveTools({
5117
+ tools,
5118
+ activeTools: stepActiveTools
5119
+ });
5120
+ currentStepToolSet = stepToolSet;
5091
5121
  const { toolChoice: stepToolChoice, tools: stepTools } = prepareToolsAndToolChoice({
5092
5122
  tools,
5093
- toolChoice: (_d = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _d : toolChoice,
5094
- activeTools: (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools
5123
+ toolChoice: (_e = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _e : toolChoice,
5124
+ activeTools: stepActiveTools
5095
5125
  });
5096
5126
  const {
5097
5127
  result: { stream: stream2, response, request },
@@ -5157,7 +5187,7 @@ var DefaultStreamTextResult = class {
5157
5187
  })
5158
5188
  );
5159
5189
  const streamWithToolResults = runToolsTransformation({
5160
- tools,
5190
+ tools: stepToolSet,
5161
5191
  generatorStream: stream2,
5162
5192
  tracer,
5163
5193
  telemetry,
@@ -5290,7 +5320,7 @@ var DefaultStreamTextResult = class {
5290
5320
  }
5291
5321
  case "tool-input-start": {
5292
5322
  activeToolCallToolNames[chunk.id] = chunk.toolName;
5293
- const tool2 = tools == null ? void 0 : tools[chunk.toolName];
5323
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[chunk.toolName];
5294
5324
  if ((tool2 == null ? void 0 : tool2.onInputStart) != null) {
5295
5325
  await tool2.onInputStart({
5296
5326
  toolCallId: chunk.id,
@@ -5312,7 +5342,7 @@ var DefaultStreamTextResult = class {
5312
5342
  }
5313
5343
  case "tool-input-delta": {
5314
5344
  const toolName = activeToolCallToolNames[chunk.id];
5315
- const tool2 = tools == null ? void 0 : tools[toolName];
5345
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolName];
5316
5346
  if ((tool2 == null ? void 0 : tool2.onInputDelta) != null) {
5317
5347
  await tool2.onInputDelta({
5318
5348
  inputTextDelta: chunk.delta,
@@ -5409,7 +5439,7 @@ var DefaultStreamTextResult = class {
5409
5439
  // use transformed content to create the messages for the next step:
5410
5440
  recordedSteps[recordedSteps.length - 1].content
5411
5441
  ),
5412
- tools
5442
+ tools: stepToolSet
5413
5443
  })
5414
5444
  );
5415
5445
  try {
@@ -9468,24 +9498,26 @@ var AbstractChat = class {
9468
9498
  body,
9469
9499
  messageId
9470
9500
  }) {
9471
- var _a16, _b, _c, _d;
9501
+ var _a16, _b, _c;
9472
9502
  this.setStatus({ status: "submitted", error: void 0 });
9473
9503
  const lastMessage = this.lastMessage;
9474
9504
  let isAbort = false;
9475
9505
  let isDisconnect = false;
9476
9506
  let isError = false;
9507
+ let activeResponse;
9477
9508
  try {
9478
- const activeResponse = {
9509
+ const response = {
9479
9510
  state: createStreamingUIMessageState({
9480
9511
  lastMessage: this.state.snapshot(lastMessage),
9481
9512
  messageId: this.generateId()
9482
9513
  }),
9483
9514
  abortController: new AbortController()
9484
9515
  };
9485
- activeResponse.abortController.signal.addEventListener("abort", () => {
9516
+ activeResponse = response;
9517
+ response.abortController.signal.addEventListener("abort", () => {
9486
9518
  isAbort = true;
9487
9519
  });
9488
- this.activeResponse = activeResponse;
9520
+ this.activeResponse = response;
9489
9521
  let stream;
9490
9522
  if (trigger === "resume-stream") {
9491
9523
  const reconnect = await this.transport.reconnectToStream({
@@ -9503,7 +9535,7 @@ var AbstractChat = class {
9503
9535
  stream = await this.transport.sendMessages({
9504
9536
  chatId: this.id,
9505
9537
  messages: this.state.messages,
9506
- abortSignal: activeResponse.abortController.signal,
9538
+ abortSignal: response.abortController.signal,
9507
9539
  metadata,
9508
9540
  headers,
9509
9541
  body,
@@ -9515,18 +9547,18 @@ var AbstractChat = class {
9515
9547
  // serialize the job execution to avoid race conditions:
9516
9548
  this.jobExecutor.run(
9517
9549
  () => job({
9518
- state: activeResponse.state,
9550
+ state: response.state,
9519
9551
  write: () => {
9520
9552
  var _a17;
9521
9553
  this.setStatus({ status: "streaming" });
9522
- const replaceLastMessage = activeResponse.state.message.id === ((_a17 = this.lastMessage) == null ? void 0 : _a17.id);
9554
+ const replaceLastMessage = response.state.message.id === ((_a17 = this.lastMessage) == null ? void 0 : _a17.id);
9523
9555
  if (replaceLastMessage) {
9524
9556
  this.state.replaceMessage(
9525
9557
  this.state.messages.length - 1,
9526
- activeResponse.state.message
9558
+ response.state.message
9527
9559
  );
9528
9560
  } else {
9529
- this.state.pushMessage(activeResponse.state.message);
9561
+ this.state.pushMessage(response.state.message);
9530
9562
  }
9531
9563
  }
9532
9564
  })
@@ -9565,23 +9597,27 @@ var AbstractChat = class {
9565
9597
  this.setStatus({ status: "error", error: err });
9566
9598
  } finally {
9567
9599
  try {
9568
- (_b = this.onFinish) == null ? void 0 : _b.call(this, {
9569
- message: this.activeResponse.state.message,
9570
- messages: this.state.messages,
9571
- isAbort,
9572
- isDisconnect,
9573
- isError,
9574
- finishReason: (_a16 = this.activeResponse) == null ? void 0 : _a16.state.finishReason
9575
- });
9600
+ if (activeResponse) {
9601
+ (_a16 = this.onFinish) == null ? void 0 : _a16.call(this, {
9602
+ message: activeResponse.state.message,
9603
+ messages: this.state.messages,
9604
+ isAbort,
9605
+ isDisconnect,
9606
+ isError,
9607
+ finishReason: activeResponse.state.finishReason
9608
+ });
9609
+ }
9576
9610
  } catch (err) {
9577
9611
  console.error(err);
9578
9612
  }
9579
- this.activeResponse = void 0;
9613
+ if (this.activeResponse === activeResponse) {
9614
+ this.activeResponse = void 0;
9615
+ }
9580
9616
  }
9581
- if (((_c = this.sendAutomaticallyWhen) == null ? void 0 : _c.call(this, { messages: this.state.messages })) && !isError) {
9617
+ if (((_b = this.sendAutomaticallyWhen) == null ? void 0 : _b.call(this, { messages: this.state.messages })) && !isError) {
9582
9618
  await this.makeRequest({
9583
9619
  trigger: "submit-message",
9584
- messageId: (_d = this.lastMessage) == null ? void 0 : _d.id,
9620
+ messageId: (_c = this.lastMessage) == null ? void 0 : _c.id,
9585
9621
  metadata,
9586
9622
  headers,
9587
9623
  body