ai 5.0.215 → 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.215" : "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,15 @@ 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];
2425
+ if (tool2.onInputStart != null) {
2426
+ await tool2.onInputStart({
2427
+ toolCallId: toolCall.toolCallId,
2428
+ messages: stepInputMessages,
2429
+ abortSignal,
2430
+ experimental_context
2431
+ });
2432
+ }
2402
2433
  if ((tool2 == null ? void 0 : tool2.onInputAvailable) != null) {
2403
2434
  await tool2.onInputAvailable({
2404
2435
  input: toolCall.input,
@@ -2426,13 +2457,13 @@ async function generateText({
2426
2457
  clientToolCalls = stepToolCalls.filter(
2427
2458
  (toolCall) => !toolCall.providerExecuted
2428
2459
  );
2429
- if (tools != null) {
2460
+ if (stepToolSet != null) {
2430
2461
  clientToolOutputs.push(
2431
2462
  ...await executeTools({
2432
2463
  toolCalls: clientToolCalls.filter(
2433
2464
  (toolCall) => !toolCall.invalid
2434
2465
  ),
2435
- tools,
2466
+ tools: stepToolSet,
2436
2467
  tracer,
2437
2468
  telemetry,
2438
2469
  messages: stepInputMessages,
@@ -2449,7 +2480,7 @@ async function generateText({
2449
2480
  responseMessages.push(
2450
2481
  ...toResponseMessages({
2451
2482
  content: stepContent,
2452
- tools
2483
+ tools: stepToolSet
2453
2484
  })
2454
2485
  );
2455
2486
  const currentStepResult = new DefaultStepResult({
@@ -2924,39 +2955,39 @@ import { lazyValidator, zodSchema } from "@ai-sdk/provider-utils";
2924
2955
  var uiMessageChunkSchema = lazyValidator(
2925
2956
  () => zodSchema(
2926
2957
  z7.union([
2927
- z7.strictObject({
2958
+ z7.looseObject({
2928
2959
  type: z7.literal("text-start"),
2929
2960
  id: z7.string(),
2930
2961
  providerMetadata: providerMetadataSchema.optional()
2931
2962
  }),
2932
- z7.strictObject({
2963
+ z7.looseObject({
2933
2964
  type: z7.literal("text-delta"),
2934
2965
  id: z7.string(),
2935
2966
  delta: z7.string(),
2936
2967
  providerMetadata: providerMetadataSchema.optional()
2937
2968
  }),
2938
- z7.strictObject({
2969
+ z7.looseObject({
2939
2970
  type: z7.literal("text-end"),
2940
2971
  id: z7.string(),
2941
2972
  providerMetadata: providerMetadataSchema.optional()
2942
2973
  }),
2943
- z7.strictObject({
2974
+ z7.looseObject({
2944
2975
  type: z7.literal("error"),
2945
2976
  errorText: z7.string()
2946
2977
  }),
2947
- z7.strictObject({
2978
+ z7.looseObject({
2948
2979
  type: z7.literal("tool-input-start"),
2949
2980
  toolCallId: z7.string(),
2950
2981
  toolName: z7.string(),
2951
2982
  providerExecuted: z7.boolean().optional(),
2952
2983
  dynamic: z7.boolean().optional()
2953
2984
  }),
2954
- z7.strictObject({
2985
+ z7.looseObject({
2955
2986
  type: z7.literal("tool-input-delta"),
2956
2987
  toolCallId: z7.string(),
2957
2988
  inputTextDelta: z7.string()
2958
2989
  }),
2959
- z7.strictObject({
2990
+ z7.looseObject({
2960
2991
  type: z7.literal("tool-input-available"),
2961
2992
  toolCallId: z7.string(),
2962
2993
  toolName: z7.string(),
@@ -2965,7 +2996,7 @@ var uiMessageChunkSchema = lazyValidator(
2965
2996
  providerMetadata: providerMetadataSchema.optional(),
2966
2997
  dynamic: z7.boolean().optional()
2967
2998
  }),
2968
- z7.strictObject({
2999
+ z7.looseObject({
2969
3000
  type: z7.literal("tool-input-error"),
2970
3001
  toolCallId: z7.string(),
2971
3002
  toolName: z7.string(),
@@ -2975,7 +3006,7 @@ var uiMessageChunkSchema = lazyValidator(
2975
3006
  dynamic: z7.boolean().optional(),
2976
3007
  errorText: z7.string()
2977
3008
  }),
2978
- z7.strictObject({
3009
+ z7.looseObject({
2979
3010
  type: z7.literal("tool-output-available"),
2980
3011
  toolCallId: z7.string(),
2981
3012
  output: z7.unknown(),
@@ -2983,37 +3014,37 @@ var uiMessageChunkSchema = lazyValidator(
2983
3014
  dynamic: z7.boolean().optional(),
2984
3015
  preliminary: z7.boolean().optional()
2985
3016
  }),
2986
- z7.strictObject({
3017
+ z7.looseObject({
2987
3018
  type: z7.literal("tool-output-error"),
2988
3019
  toolCallId: z7.string(),
2989
3020
  errorText: z7.string(),
2990
3021
  providerExecuted: z7.boolean().optional(),
2991
3022
  dynamic: z7.boolean().optional()
2992
3023
  }),
2993
- z7.strictObject({
3024
+ z7.looseObject({
2994
3025
  type: z7.literal("reasoning-start"),
2995
3026
  id: z7.string(),
2996
3027
  providerMetadata: providerMetadataSchema.optional()
2997
3028
  }),
2998
- z7.strictObject({
3029
+ z7.looseObject({
2999
3030
  type: z7.literal("reasoning-delta"),
3000
3031
  id: z7.string(),
3001
3032
  delta: z7.string(),
3002
3033
  providerMetadata: providerMetadataSchema.optional()
3003
3034
  }),
3004
- z7.strictObject({
3035
+ z7.looseObject({
3005
3036
  type: z7.literal("reasoning-end"),
3006
3037
  id: z7.string(),
3007
3038
  providerMetadata: providerMetadataSchema.optional()
3008
3039
  }),
3009
- z7.strictObject({
3040
+ z7.looseObject({
3010
3041
  type: z7.literal("source-url"),
3011
3042
  sourceId: z7.string(),
3012
3043
  url: z7.string(),
3013
3044
  title: z7.string().optional(),
3014
3045
  providerMetadata: providerMetadataSchema.optional()
3015
3046
  }),
3016
- z7.strictObject({
3047
+ z7.looseObject({
3017
3048
  type: z7.literal("source-document"),
3018
3049
  sourceId: z7.string(),
3019
3050
  mediaType: z7.string(),
@@ -3021,13 +3052,13 @@ var uiMessageChunkSchema = lazyValidator(
3021
3052
  filename: z7.string().optional(),
3022
3053
  providerMetadata: providerMetadataSchema.optional()
3023
3054
  }),
3024
- z7.strictObject({
3055
+ z7.looseObject({
3025
3056
  type: z7.literal("file"),
3026
3057
  url: z7.string(),
3027
3058
  mediaType: z7.string(),
3028
3059
  providerMetadata: providerMetadataSchema.optional()
3029
3060
  }),
3030
- z7.strictObject({
3061
+ z7.looseObject({
3031
3062
  type: z7.custom(
3032
3063
  (value) => typeof value === "string" && value.startsWith("data-"),
3033
3064
  { message: 'Type must start with "data-"' }
@@ -3036,18 +3067,18 @@ var uiMessageChunkSchema = lazyValidator(
3036
3067
  data: z7.unknown(),
3037
3068
  transient: z7.boolean().optional()
3038
3069
  }),
3039
- z7.strictObject({
3070
+ z7.looseObject({
3040
3071
  type: z7.literal("start-step")
3041
3072
  }),
3042
- z7.strictObject({
3073
+ z7.looseObject({
3043
3074
  type: z7.literal("finish-step")
3044
3075
  }),
3045
- z7.strictObject({
3076
+ z7.looseObject({
3046
3077
  type: z7.literal("start"),
3047
3078
  messageId: z7.string().optional(),
3048
3079
  messageMetadata: z7.unknown().optional()
3049
3080
  }),
3050
- z7.strictObject({
3081
+ z7.looseObject({
3051
3082
  type: z7.literal("finish"),
3052
3083
  finishReason: z7.enum([
3053
3084
  "stop",
@@ -3060,10 +3091,10 @@ var uiMessageChunkSchema = lazyValidator(
3060
3091
  ]).optional(),
3061
3092
  messageMetadata: z7.unknown().optional()
3062
3093
  }),
3063
- z7.strictObject({
3094
+ z7.looseObject({
3064
3095
  type: z7.literal("abort")
3065
3096
  }),
3066
- z7.strictObject({
3097
+ z7.looseObject({
3067
3098
  type: z7.literal("message-metadata"),
3068
3099
  messageMetadata: z7.unknown()
3069
3100
  })
@@ -4686,6 +4717,7 @@ var DefaultStreamTextResult = class {
4686
4717
  let recordedRequest = {};
4687
4718
  let recordedWarnings = [];
4688
4719
  const recordedSteps = [];
4720
+ let currentStepToolSet = tools;
4689
4721
  let rootSpan;
4690
4722
  let activeTextContent = createIdMap();
4691
4723
  let activeReasoningContent = createIdMap();
@@ -4801,7 +4833,7 @@ var DefaultStreamTextResult = class {
4801
4833
  if (part.type === "finish-step") {
4802
4834
  const stepMessages = toResponseMessages({
4803
4835
  content: recordedContent,
4804
- tools
4836
+ tools: currentStepToolSet
4805
4837
  });
4806
4838
  const currentStepResult = new DefaultStepResult({
4807
4839
  content: recordedContent,
@@ -5015,10 +5047,16 @@ var DefaultStreamTextResult = class {
5015
5047
  supportedUrls: await stepModel.supportedUrls,
5016
5048
  download: download2
5017
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;
5018
5056
  const { toolChoice: stepToolChoice, tools: stepTools } = prepareToolsAndToolChoice({
5019
5057
  tools,
5020
- toolChoice: (_d = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _d : toolChoice,
5021
- 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
5022
5060
  });
5023
5061
  const {
5024
5062
  result: { stream: stream2, response, request },
@@ -5084,7 +5122,7 @@ var DefaultStreamTextResult = class {
5084
5122
  })
5085
5123
  );
5086
5124
  const streamWithToolResults = runToolsTransformation({
5087
- tools,
5125
+ tools: stepToolSet,
5088
5126
  generatorStream: stream2,
5089
5127
  tracer,
5090
5128
  telemetry,
@@ -5217,7 +5255,7 @@ var DefaultStreamTextResult = class {
5217
5255
  }
5218
5256
  case "tool-input-start": {
5219
5257
  activeToolCallToolNames[chunk.id] = chunk.toolName;
5220
- const tool2 = tools == null ? void 0 : tools[chunk.toolName];
5258
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[chunk.toolName];
5221
5259
  if ((tool2 == null ? void 0 : tool2.onInputStart) != null) {
5222
5260
  await tool2.onInputStart({
5223
5261
  toolCallId: chunk.id,
@@ -5239,7 +5277,7 @@ var DefaultStreamTextResult = class {
5239
5277
  }
5240
5278
  case "tool-input-delta": {
5241
5279
  const toolName = activeToolCallToolNames[chunk.id];
5242
- const tool2 = tools == null ? void 0 : tools[toolName];
5280
+ const tool2 = stepToolSet == null ? void 0 : stepToolSet[toolName];
5243
5281
  if ((tool2 == null ? void 0 : tool2.onInputDelta) != null) {
5244
5282
  await tool2.onInputDelta({
5245
5283
  inputTextDelta: chunk.delta,
@@ -5336,7 +5374,7 @@ var DefaultStreamTextResult = class {
5336
5374
  // use transformed content to create the messages for the next step:
5337
5375
  recordedSteps[recordedSteps.length - 1].content
5338
5376
  ),
5339
- tools
5377
+ tools: stepToolSet
5340
5378
  })
5341
5379
  );
5342
5380
  try {
@@ -9436,24 +9474,26 @@ var AbstractChat = class {
9436
9474
  body,
9437
9475
  messageId
9438
9476
  }) {
9439
- var _a16, _b, _c, _d;
9477
+ var _a16, _b, _c;
9440
9478
  this.setStatus({ status: "submitted", error: void 0 });
9441
9479
  const lastMessage = this.lastMessage;
9442
9480
  let isAbort = false;
9443
9481
  let isDisconnect = false;
9444
9482
  let isError = false;
9483
+ let activeResponse;
9445
9484
  try {
9446
- const activeResponse = {
9485
+ const response = {
9447
9486
  state: createStreamingUIMessageState({
9448
9487
  lastMessage: this.state.snapshot(lastMessage),
9449
9488
  messageId: this.generateId()
9450
9489
  }),
9451
9490
  abortController: new AbortController()
9452
9491
  };
9453
- activeResponse.abortController.signal.addEventListener("abort", () => {
9492
+ activeResponse = response;
9493
+ response.abortController.signal.addEventListener("abort", () => {
9454
9494
  isAbort = true;
9455
9495
  });
9456
- this.activeResponse = activeResponse;
9496
+ this.activeResponse = response;
9457
9497
  let stream;
9458
9498
  if (trigger === "resume-stream") {
9459
9499
  const reconnect = await this.transport.reconnectToStream({
@@ -9471,7 +9511,7 @@ var AbstractChat = class {
9471
9511
  stream = await this.transport.sendMessages({
9472
9512
  chatId: this.id,
9473
9513
  messages: this.state.messages,
9474
- abortSignal: activeResponse.abortController.signal,
9514
+ abortSignal: response.abortController.signal,
9475
9515
  metadata,
9476
9516
  headers,
9477
9517
  body,
@@ -9483,18 +9523,18 @@ var AbstractChat = class {
9483
9523
  // serialize the job execution to avoid race conditions:
9484
9524
  this.jobExecutor.run(
9485
9525
  () => job({
9486
- state: activeResponse.state,
9526
+ state: response.state,
9487
9527
  write: () => {
9488
9528
  var _a17;
9489
9529
  this.setStatus({ status: "streaming" });
9490
- 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);
9491
9531
  if (replaceLastMessage) {
9492
9532
  this.state.replaceMessage(
9493
9533
  this.state.messages.length - 1,
9494
- activeResponse.state.message
9534
+ response.state.message
9495
9535
  );
9496
9536
  } else {
9497
- this.state.pushMessage(activeResponse.state.message);
9537
+ this.state.pushMessage(response.state.message);
9498
9538
  }
9499
9539
  }
9500
9540
  })
@@ -9533,23 +9573,27 @@ var AbstractChat = class {
9533
9573
  this.setStatus({ status: "error", error: err });
9534
9574
  } finally {
9535
9575
  try {
9536
- (_b = this.onFinish) == null ? void 0 : _b.call(this, {
9537
- message: this.activeResponse.state.message,
9538
- messages: this.state.messages,
9539
- isAbort,
9540
- isDisconnect,
9541
- isError,
9542
- finishReason: (_a16 = this.activeResponse) == null ? void 0 : _a16.state.finishReason
9543
- });
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
+ }
9544
9586
  } catch (err) {
9545
9587
  console.error(err);
9546
9588
  }
9547
- this.activeResponse = void 0;
9589
+ if (this.activeResponse === activeResponse) {
9590
+ this.activeResponse = void 0;
9591
+ }
9548
9592
  }
9549
- 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) {
9550
9594
  await this.makeRequest({
9551
9595
  trigger: "submit-message",
9552
- messageId: (_d = this.lastMessage) == null ? void 0 : _d.id,
9596
+ messageId: (_c = this.lastMessage) == null ? void 0 : _c.id,
9553
9597
  metadata,
9554
9598
  headers,
9555
9599
  body