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.mjs CHANGED
@@ -689,7 +689,7 @@ import {
689
689
  } from "@ai-sdk/provider-utils";
690
690
 
691
691
  // src/version.ts
692
- var VERSION = true ? "5.0.216" : "0.0.0-test";
692
+ var VERSION = true ? "5.0.217" : "0.0.0-test";
693
693
 
694
694
  // src/util/download/download.ts
695
695
  var download = async ({
@@ -1838,6 +1838,21 @@ function extractTextContent(content) {
1838
1838
  return parts.map((content2) => content2.text).join("");
1839
1839
  }
1840
1840
 
1841
+ // src/generate-text/filter-active-tools.ts
1842
+ function filterActiveTools({
1843
+ tools,
1844
+ activeTools
1845
+ }) {
1846
+ if (tools == null || activeTools == null) {
1847
+ return tools;
1848
+ }
1849
+ return Object.fromEntries(
1850
+ Object.entries(tools).filter(
1851
+ ([name16]) => activeTools.includes(name16)
1852
+ )
1853
+ );
1854
+ }
1855
+
1841
1856
  // src/generate-text/generated-file.ts
1842
1857
  import {
1843
1858
  convertBase64ToUint8Array as convertBase64ToUint8Array3,
@@ -2259,6 +2274,9 @@ async function generateText({
2259
2274
  const responseMessages = [];
2260
2275
  const steps = [];
2261
2276
  do {
2277
+ if (steps.length > 0) {
2278
+ abortSignal == null ? void 0 : abortSignal.throwIfAborted();
2279
+ }
2262
2280
  const stepInputMessages = [
2263
2281
  ...initialPrompt.messages,
2264
2282
  ...responseMessages
@@ -2280,10 +2298,15 @@ async function generateText({
2280
2298
  supportedUrls: await stepModel.supportedUrls,
2281
2299
  download: download2
2282
2300
  });
2301
+ const stepActiveTools = (_d = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _d : activeTools;
2302
+ const stepToolSet = filterActiveTools({
2303
+ tools,
2304
+ activeTools: stepActiveTools
2305
+ });
2283
2306
  const { toolChoice: stepToolChoice, tools: stepTools } = prepareToolsAndToolChoice({
2284
2307
  tools,
2285
- toolChoice: (_d = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _d : toolChoice,
2286
- activeTools: (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools
2308
+ toolChoice: (_e = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _e : toolChoice,
2309
+ activeTools: stepActiveTools
2287
2310
  });
2288
2311
  currentModelResponse = await retry(
2289
2312
  () => {
@@ -2387,7 +2410,7 @@ async function generateText({
2387
2410
  ).map(
2388
2411
  (toolCall) => parseToolCall({
2389
2412
  toolCall,
2390
- tools,
2413
+ tools: stepToolSet,
2391
2414
  repairToolCall,
2392
2415
  system,
2393
2416
  messages: stepInputMessages
@@ -2398,7 +2421,7 @@ async function generateText({
2398
2421
  if (toolCall.invalid) {
2399
2422
  continue;
2400
2423
  }
2401
- const tool2 = tools[toolCall.toolName];
2424
+ const tool2 = stepToolSet[toolCall.toolName];
2402
2425
  if (tool2.onInputStart != null) {
2403
2426
  await tool2.onInputStart({
2404
2427
  toolCallId: toolCall.toolCallId,
@@ -2434,13 +2457,13 @@ async function generateText({
2434
2457
  clientToolCalls = stepToolCalls.filter(
2435
2458
  (toolCall) => !toolCall.providerExecuted
2436
2459
  );
2437
- if (tools != null) {
2460
+ if (stepToolSet != null) {
2438
2461
  clientToolOutputs.push(
2439
2462
  ...await executeTools({
2440
2463
  toolCalls: clientToolCalls.filter(
2441
2464
  (toolCall) => !toolCall.invalid
2442
2465
  ),
2443
- tools,
2466
+ tools: stepToolSet,
2444
2467
  tracer,
2445
2468
  telemetry,
2446
2469
  messages: stepInputMessages,
@@ -2457,7 +2480,7 @@ async function generateText({
2457
2480
  responseMessages.push(
2458
2481
  ...toResponseMessages({
2459
2482
  content: stepContent,
2460
- tools
2483
+ tools: stepToolSet
2461
2484
  })
2462
2485
  );
2463
2486
  const currentStepResult = new DefaultStepResult({
@@ -2932,39 +2955,39 @@ import { lazyValidator, zodSchema } from "@ai-sdk/provider-utils";
2932
2955
  var uiMessageChunkSchema = lazyValidator(
2933
2956
  () => zodSchema(
2934
2957
  z7.union([
2935
- z7.strictObject({
2958
+ z7.looseObject({
2936
2959
  type: z7.literal("text-start"),
2937
2960
  id: z7.string(),
2938
2961
  providerMetadata: providerMetadataSchema.optional()
2939
2962
  }),
2940
- z7.strictObject({
2963
+ z7.looseObject({
2941
2964
  type: z7.literal("text-delta"),
2942
2965
  id: z7.string(),
2943
2966
  delta: z7.string(),
2944
2967
  providerMetadata: providerMetadataSchema.optional()
2945
2968
  }),
2946
- z7.strictObject({
2969
+ z7.looseObject({
2947
2970
  type: z7.literal("text-end"),
2948
2971
  id: z7.string(),
2949
2972
  providerMetadata: providerMetadataSchema.optional()
2950
2973
  }),
2951
- z7.strictObject({
2974
+ z7.looseObject({
2952
2975
  type: z7.literal("error"),
2953
2976
  errorText: z7.string()
2954
2977
  }),
2955
- z7.strictObject({
2978
+ z7.looseObject({
2956
2979
  type: z7.literal("tool-input-start"),
2957
2980
  toolCallId: z7.string(),
2958
2981
  toolName: z7.string(),
2959
2982
  providerExecuted: z7.boolean().optional(),
2960
2983
  dynamic: z7.boolean().optional()
2961
2984
  }),
2962
- z7.strictObject({
2985
+ z7.looseObject({
2963
2986
  type: z7.literal("tool-input-delta"),
2964
2987
  toolCallId: z7.string(),
2965
2988
  inputTextDelta: z7.string()
2966
2989
  }),
2967
- z7.strictObject({
2990
+ z7.looseObject({
2968
2991
  type: z7.literal("tool-input-available"),
2969
2992
  toolCallId: z7.string(),
2970
2993
  toolName: z7.string(),
@@ -2973,7 +2996,7 @@ var uiMessageChunkSchema = lazyValidator(
2973
2996
  providerMetadata: providerMetadataSchema.optional(),
2974
2997
  dynamic: z7.boolean().optional()
2975
2998
  }),
2976
- z7.strictObject({
2999
+ z7.looseObject({
2977
3000
  type: z7.literal("tool-input-error"),
2978
3001
  toolCallId: z7.string(),
2979
3002
  toolName: z7.string(),
@@ -2983,7 +3006,7 @@ var uiMessageChunkSchema = lazyValidator(
2983
3006
  dynamic: z7.boolean().optional(),
2984
3007
  errorText: z7.string()
2985
3008
  }),
2986
- z7.strictObject({
3009
+ z7.looseObject({
2987
3010
  type: z7.literal("tool-output-available"),
2988
3011
  toolCallId: z7.string(),
2989
3012
  output: z7.unknown(),
@@ -2991,37 +3014,37 @@ var uiMessageChunkSchema = lazyValidator(
2991
3014
  dynamic: z7.boolean().optional(),
2992
3015
  preliminary: z7.boolean().optional()
2993
3016
  }),
2994
- z7.strictObject({
3017
+ z7.looseObject({
2995
3018
  type: z7.literal("tool-output-error"),
2996
3019
  toolCallId: z7.string(),
2997
3020
  errorText: z7.string(),
2998
3021
  providerExecuted: z7.boolean().optional(),
2999
3022
  dynamic: z7.boolean().optional()
3000
3023
  }),
3001
- z7.strictObject({
3024
+ z7.looseObject({
3002
3025
  type: z7.literal("reasoning-start"),
3003
3026
  id: z7.string(),
3004
3027
  providerMetadata: providerMetadataSchema.optional()
3005
3028
  }),
3006
- z7.strictObject({
3029
+ z7.looseObject({
3007
3030
  type: z7.literal("reasoning-delta"),
3008
3031
  id: z7.string(),
3009
3032
  delta: z7.string(),
3010
3033
  providerMetadata: providerMetadataSchema.optional()
3011
3034
  }),
3012
- z7.strictObject({
3035
+ z7.looseObject({
3013
3036
  type: z7.literal("reasoning-end"),
3014
3037
  id: z7.string(),
3015
3038
  providerMetadata: providerMetadataSchema.optional()
3016
3039
  }),
3017
- z7.strictObject({
3040
+ z7.looseObject({
3018
3041
  type: z7.literal("source-url"),
3019
3042
  sourceId: z7.string(),
3020
3043
  url: z7.string(),
3021
3044
  title: z7.string().optional(),
3022
3045
  providerMetadata: providerMetadataSchema.optional()
3023
3046
  }),
3024
- z7.strictObject({
3047
+ z7.looseObject({
3025
3048
  type: z7.literal("source-document"),
3026
3049
  sourceId: z7.string(),
3027
3050
  mediaType: z7.string(),
@@ -3029,13 +3052,13 @@ var uiMessageChunkSchema = lazyValidator(
3029
3052
  filename: z7.string().optional(),
3030
3053
  providerMetadata: providerMetadataSchema.optional()
3031
3054
  }),
3032
- z7.strictObject({
3055
+ z7.looseObject({
3033
3056
  type: z7.literal("file"),
3034
3057
  url: z7.string(),
3035
3058
  mediaType: z7.string(),
3036
3059
  providerMetadata: providerMetadataSchema.optional()
3037
3060
  }),
3038
- z7.strictObject({
3061
+ z7.looseObject({
3039
3062
  type: z7.custom(
3040
3063
  (value) => typeof value === "string" && value.startsWith("data-"),
3041
3064
  { message: 'Type must start with "data-"' }
@@ -3044,18 +3067,18 @@ var uiMessageChunkSchema = lazyValidator(
3044
3067
  data: z7.unknown(),
3045
3068
  transient: z7.boolean().optional()
3046
3069
  }),
3047
- z7.strictObject({
3070
+ z7.looseObject({
3048
3071
  type: z7.literal("start-step")
3049
3072
  }),
3050
- z7.strictObject({
3073
+ z7.looseObject({
3051
3074
  type: z7.literal("finish-step")
3052
3075
  }),
3053
- z7.strictObject({
3076
+ z7.looseObject({
3054
3077
  type: z7.literal("start"),
3055
3078
  messageId: z7.string().optional(),
3056
3079
  messageMetadata: z7.unknown().optional()
3057
3080
  }),
3058
- z7.strictObject({
3081
+ z7.looseObject({
3059
3082
  type: z7.literal("finish"),
3060
3083
  finishReason: z7.enum([
3061
3084
  "stop",
@@ -3068,10 +3091,10 @@ var uiMessageChunkSchema = lazyValidator(
3068
3091
  ]).optional(),
3069
3092
  messageMetadata: z7.unknown().optional()
3070
3093
  }),
3071
- z7.strictObject({
3094
+ z7.looseObject({
3072
3095
  type: z7.literal("abort")
3073
3096
  }),
3074
- z7.strictObject({
3097
+ z7.looseObject({
3075
3098
  type: z7.literal("message-metadata"),
3076
3099
  messageMetadata: z7.unknown()
3077
3100
  })
@@ -4694,6 +4717,7 @@ var DefaultStreamTextResult = class {
4694
4717
  let recordedRequest = {};
4695
4718
  let recordedWarnings = [];
4696
4719
  const recordedSteps = [];
4720
+ let currentStepToolSet = tools;
4697
4721
  let rootSpan;
4698
4722
  let activeTextContent = createIdMap();
4699
4723
  let activeReasoningContent = createIdMap();
@@ -4809,7 +4833,7 @@ var DefaultStreamTextResult = class {
4809
4833
  if (part.type === "finish-step") {
4810
4834
  const stepMessages = toResponseMessages({
4811
4835
  content: recordedContent,
4812
- tools
4836
+ tools: currentStepToolSet
4813
4837
  });
4814
4838
  const currentStepResult = new DefaultStepResult({
4815
4839
  content: recordedContent,
@@ -5023,10 +5047,16 @@ var DefaultStreamTextResult = class {
5023
5047
  supportedUrls: await stepModel.supportedUrls,
5024
5048
  download: download2
5025
5049
  });
5050
+ const stepActiveTools = (_d = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _d : activeTools;
5051
+ const stepToolSet = filterActiveTools({
5052
+ tools,
5053
+ activeTools: stepActiveTools
5054
+ });
5055
+ currentStepToolSet = stepToolSet;
5026
5056
  const { toolChoice: stepToolChoice, tools: stepTools } = prepareToolsAndToolChoice({
5027
5057
  tools,
5028
- toolChoice: (_d = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _d : toolChoice,
5029
- activeTools: (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools
5058
+ toolChoice: (_e = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _e : toolChoice,
5059
+ activeTools: stepActiveTools
5030
5060
  });
5031
5061
  const {
5032
5062
  result: { stream: stream2, response, request },
@@ -5092,7 +5122,7 @@ var DefaultStreamTextResult = class {
5092
5122
  })
5093
5123
  );
5094
5124
  const streamWithToolResults = runToolsTransformation({
5095
- tools,
5125
+ tools: stepToolSet,
5096
5126
  generatorStream: stream2,
5097
5127
  tracer,
5098
5128
  telemetry,
@@ -5225,7 +5255,7 @@ var DefaultStreamTextResult = class {
5225
5255
  }
5226
5256
  case "tool-input-start": {
5227
5257
  activeToolCallToolNames[chunk.id] = chunk.toolName;
5228
- const tool2 = tools == null ? void 0 : tools[chunk.toolName];
5258
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[chunk.toolName];
5229
5259
  if ((tool2 == null ? void 0 : tool2.onInputStart) != null) {
5230
5260
  await tool2.onInputStart({
5231
5261
  toolCallId: chunk.id,
@@ -5247,7 +5277,7 @@ var DefaultStreamTextResult = class {
5247
5277
  }
5248
5278
  case "tool-input-delta": {
5249
5279
  const toolName = activeToolCallToolNames[chunk.id];
5250
- const tool2 = tools == null ? void 0 : tools[toolName];
5280
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolName];
5251
5281
  if ((tool2 == null ? void 0 : tool2.onInputDelta) != null) {
5252
5282
  await tool2.onInputDelta({
5253
5283
  inputTextDelta: chunk.delta,
@@ -5344,7 +5374,7 @@ var DefaultStreamTextResult = class {
5344
5374
  // use transformed content to create the messages for the next step:
5345
5375
  recordedSteps[recordedSteps.length - 1].content
5346
5376
  ),
5347
- tools
5377
+ tools: stepToolSet
5348
5378
  })
5349
5379
  );
5350
5380
  try {
@@ -9444,24 +9474,26 @@ var AbstractChat = class {
9444
9474
  body,
9445
9475
  messageId
9446
9476
  }) {
9447
- var _a16, _b, _c, _d;
9477
+ var _a16, _b, _c;
9448
9478
  this.setStatus({ status: "submitted", error: void 0 });
9449
9479
  const lastMessage = this.lastMessage;
9450
9480
  let isAbort = false;
9451
9481
  let isDisconnect = false;
9452
9482
  let isError = false;
9483
+ let activeResponse;
9453
9484
  try {
9454
- const activeResponse = {
9485
+ const response = {
9455
9486
  state: createStreamingUIMessageState({
9456
9487
  lastMessage: this.state.snapshot(lastMessage),
9457
9488
  messageId: this.generateId()
9458
9489
  }),
9459
9490
  abortController: new AbortController()
9460
9491
  };
9461
- activeResponse.abortController.signal.addEventListener("abort", () => {
9492
+ activeResponse = response;
9493
+ response.abortController.signal.addEventListener("abort", () => {
9462
9494
  isAbort = true;
9463
9495
  });
9464
- this.activeResponse = activeResponse;
9496
+ this.activeResponse = response;
9465
9497
  let stream;
9466
9498
  if (trigger === "resume-stream") {
9467
9499
  const reconnect = await this.transport.reconnectToStream({
@@ -9479,7 +9511,7 @@ var AbstractChat = class {
9479
9511
  stream = await this.transport.sendMessages({
9480
9512
  chatId: this.id,
9481
9513
  messages: this.state.messages,
9482
- abortSignal: activeResponse.abortController.signal,
9514
+ abortSignal: response.abortController.signal,
9483
9515
  metadata,
9484
9516
  headers,
9485
9517
  body,
@@ -9491,18 +9523,18 @@ var AbstractChat = class {
9491
9523
  // serialize the job execution to avoid race conditions:
9492
9524
  this.jobExecutor.run(
9493
9525
  () => job({
9494
- state: activeResponse.state,
9526
+ state: response.state,
9495
9527
  write: () => {
9496
9528
  var _a17;
9497
9529
  this.setStatus({ status: "streaming" });
9498
- const replaceLastMessage = activeResponse.state.message.id === ((_a17 = this.lastMessage) == null ? void 0 : _a17.id);
9530
+ const replaceLastMessage = response.state.message.id === ((_a17 = this.lastMessage) == null ? void 0 : _a17.id);
9499
9531
  if (replaceLastMessage) {
9500
9532
  this.state.replaceMessage(
9501
9533
  this.state.messages.length - 1,
9502
- activeResponse.state.message
9534
+ response.state.message
9503
9535
  );
9504
9536
  } else {
9505
- this.state.pushMessage(activeResponse.state.message);
9537
+ this.state.pushMessage(response.state.message);
9506
9538
  }
9507
9539
  }
9508
9540
  })
@@ -9541,23 +9573,27 @@ var AbstractChat = class {
9541
9573
  this.setStatus({ status: "error", error: err });
9542
9574
  } finally {
9543
9575
  try {
9544
- (_b = this.onFinish) == null ? void 0 : _b.call(this, {
9545
- message: this.activeResponse.state.message,
9546
- messages: this.state.messages,
9547
- isAbort,
9548
- isDisconnect,
9549
- isError,
9550
- finishReason: (_a16 = this.activeResponse) == null ? void 0 : _a16.state.finishReason
9551
- });
9576
+ if (activeResponse) {
9577
+ (_a16 = this.onFinish) == null ? void 0 : _a16.call(this, {
9578
+ message: activeResponse.state.message,
9579
+ messages: this.state.messages,
9580
+ isAbort,
9581
+ isDisconnect,
9582
+ isError,
9583
+ finishReason: activeResponse.state.finishReason
9584
+ });
9585
+ }
9552
9586
  } catch (err) {
9553
9587
  console.error(err);
9554
9588
  }
9555
- this.activeResponse = void 0;
9589
+ if (this.activeResponse === activeResponse) {
9590
+ this.activeResponse = void 0;
9591
+ }
9556
9592
  }
9557
- if (((_c = this.sendAutomaticallyWhen) == null ? void 0 : _c.call(this, { messages: this.state.messages })) && !isError) {
9593
+ if (((_b = this.sendAutomaticallyWhen) == null ? void 0 : _b.call(this, { messages: this.state.messages })) && !isError) {
9558
9594
  await this.makeRequest({
9559
9595
  trigger: "submit-message",
9560
- messageId: (_d = this.lastMessage) == null ? void 0 : _d.id,
9596
+ messageId: (_c = this.lastMessage) == null ? void 0 : _c.id,
9561
9597
  metadata,
9562
9598
  headers,
9563
9599
  body