ai 6.0.264 → 6.0.266

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
@@ -1193,7 +1193,7 @@ import {
1193
1193
  } from "@ai-sdk/provider-utils";
1194
1194
 
1195
1195
  // src/version.ts
1196
- var VERSION = true ? "6.0.264" : "0.0.0-test";
1196
+ var VERSION = true ? "6.0.266" : "0.0.0-test";
1197
1197
 
1198
1198
  // src/util/download/download.ts
1199
1199
  var download = async ({
@@ -3231,6 +3231,7 @@ async function validateApprovedToolApprovals({
3231
3231
  var _a22;
3232
3232
  const approved = [];
3233
3233
  const denied = [];
3234
+ const invalid = [];
3234
3235
  for (const approval of approvedToolApprovals) {
3235
3236
  const { toolCall, approvalRequest } = approval;
3236
3237
  const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
@@ -3264,11 +3265,15 @@ async function validateApprovedToolApprovals({
3264
3265
  schema: asSchema2(tool2.inputSchema)
3265
3266
  });
3266
3267
  if (!validation.success) {
3267
- throw new InvalidToolInputError({
3268
- toolName: toolCall.toolName,
3269
- toolInput: JSON.stringify(toolCall.input),
3270
- cause: validation.error
3268
+ invalid.push({
3269
+ ...approval,
3270
+ error: new InvalidToolInputError({
3271
+ toolName: toolCall.toolName,
3272
+ toolInput: JSON.stringify(toolCall.input),
3273
+ cause: validation.error
3274
+ })
3271
3275
  });
3276
+ continue;
3272
3277
  }
3273
3278
  }
3274
3279
  const approvalNeeded = tool2 != null && await isApprovalNeeded({
@@ -3290,7 +3295,11 @@ async function validateApprovedToolApprovals({
3290
3295
  });
3291
3296
  }
3292
3297
  }
3293
- return { approvedToolApprovals: approved, deniedToolApprovals: denied };
3298
+ return {
3299
+ approvedToolApprovals: approved,
3300
+ deniedToolApprovals: denied,
3301
+ invalidToolApprovals: invalid
3302
+ };
3294
3303
  }
3295
3304
 
3296
3305
  // src/generate-text/output.ts
@@ -4557,7 +4566,8 @@ async function generateText({
4557
4566
  } = collectToolApprovals({ messages: initialMessages });
4558
4567
  const {
4559
4568
  approvedToolApprovals: localApprovedToolApprovals,
4560
- deniedToolApprovals: revalidationDeniedToolApprovals
4569
+ deniedToolApprovals: revalidationDeniedToolApprovals,
4570
+ invalidToolApprovals
4561
4571
  } = await validateApprovedToolApprovals({
4562
4572
  approvedToolApprovals: approvedToolApprovals.filter(
4563
4573
  (toolApproval) => !toolApproval.toolCall.providerExecuted
@@ -4571,7 +4581,7 @@ async function generateText({
4571
4581
  ...collectedDeniedToolApprovals,
4572
4582
  ...revalidationDeniedToolApprovals
4573
4583
  ];
4574
- if (deniedToolApprovals.length > 0 || localApprovedToolApprovals.length > 0) {
4584
+ if (deniedToolApprovals.length > 0 || localApprovedToolApprovals.length > 0 || invalidToolApprovals.length > 0) {
4575
4585
  const toolOutputs = await executeTools({
4576
4586
  toolCalls: localApprovedToolApprovals.map(
4577
4587
  (toolApproval) => toolApproval.toolCall
@@ -4609,6 +4619,20 @@ async function generateText({
4609
4619
  output: modelOutput
4610
4620
  });
4611
4621
  }
4622
+ for (const toolApproval of invalidToolApprovals) {
4623
+ toolContent.push({
4624
+ type: "tool-result",
4625
+ toolCallId: toolApproval.toolCall.toolCallId,
4626
+ toolName: toolApproval.toolCall.toolName,
4627
+ output: await createToolModelOutput({
4628
+ toolCallId: toolApproval.toolCall.toolCallId,
4629
+ input: toolApproval.toolCall.input,
4630
+ tool: tools == null ? void 0 : tools[toolApproval.toolCall.toolName],
4631
+ output: toolApproval.error,
4632
+ errorMode: "text"
4633
+ })
4634
+ });
4635
+ }
4612
4636
  for (const toolApproval of deniedToolApprovals) {
4613
4637
  toolContent.push({
4614
4638
  type: "tool-result",
@@ -6579,7 +6603,10 @@ function createStitchableStream() {
6579
6603
  const terminate = () => {
6580
6604
  isClosed = true;
6581
6605
  waitForNewStream.resolve();
6582
- innerStreams.forEach(({ reader }) => reader.cancel());
6606
+ innerStreams.forEach(({ reader, onCancel }) => {
6607
+ onCancel == null ? void 0 : onCancel();
6608
+ reader.cancel();
6609
+ });
6583
6610
  innerStreams = [];
6584
6611
  controller == null ? void 0 : controller.close();
6585
6612
  };
@@ -6620,7 +6647,8 @@ function createStitchableStream() {
6620
6647
  },
6621
6648
  pull: processPull,
6622
6649
  async cancel() {
6623
- for (const { reader } of innerStreams) {
6650
+ for (const { reader, onCancel } of innerStreams) {
6651
+ onCancel == null ? void 0 : onCancel();
6624
6652
  await reader.cancel();
6625
6653
  }
6626
6654
  innerStreams = [];
@@ -7625,7 +7653,8 @@ var DefaultStreamTextResult = class {
7625
7653
  if (deniedToolApprovals.length > 0 || approvedToolApprovals.length > 0) {
7626
7654
  const {
7627
7655
  approvedToolApprovals: localApprovedToolApprovals,
7628
- deniedToolApprovals: revalidationDeniedToolApprovals
7656
+ deniedToolApprovals: revalidationDeniedToolApprovals,
7657
+ invalidToolApprovals
7629
7658
  } = await validateApprovedToolApprovals({
7630
7659
  approvedToolApprovals: approvedToolApprovals.filter(
7631
7660
  (toolApproval) => !toolApproval.toolCall.providerExecuted
@@ -7662,6 +7691,18 @@ var DefaultStreamTextResult = class {
7662
7691
  toolName: toolApproval.toolCall.toolName
7663
7692
  });
7664
7693
  }
7694
+ for (const toolApproval of invalidToolApprovals) {
7695
+ toolExecutionStepStreamController == null ? void 0 : toolExecutionStepStreamController.enqueue({
7696
+ type: "tool-error",
7697
+ toolCallId: toolApproval.toolCall.toolCallId,
7698
+ toolName: toolApproval.toolCall.toolName,
7699
+ input: toolApproval.toolCall.input,
7700
+ error: getErrorMessage6(toolApproval.error),
7701
+ title: toolApproval.toolCall.title,
7702
+ ...toolApproval.toolCall.dynamic === true ? { dynamic: true } : {},
7703
+ ...toolApproval.toolCall.toolMetadata != null ? { toolMetadata: toolApproval.toolCall.toolMetadata } : {}
7704
+ });
7705
+ }
7665
7706
  const toolOutputs = [];
7666
7707
  await Promise.all(
7667
7708
  localApprovedToolApprovals.map(async (toolApproval) => {
@@ -7693,7 +7734,7 @@ var DefaultStreamTextResult = class {
7693
7734
  }
7694
7735
  })
7695
7736
  );
7696
- if (toolOutputs.length > 0 || localDeniedToolApprovals.length > 0) {
7737
+ if (toolOutputs.length > 0 || localDeniedToolApprovals.length > 0 || invalidToolApprovals.length > 0) {
7697
7738
  const localToolContent = [];
7698
7739
  for (const output2 of toolOutputs) {
7699
7740
  localToolContent.push({
@@ -7709,6 +7750,20 @@ var DefaultStreamTextResult = class {
7709
7750
  })
7710
7751
  });
7711
7752
  }
7753
+ for (const toolApproval of invalidToolApprovals) {
7754
+ localToolContent.push({
7755
+ type: "tool-result",
7756
+ toolCallId: toolApproval.toolCall.toolCallId,
7757
+ toolName: toolApproval.toolCall.toolName,
7758
+ output: await createToolModelOutput({
7759
+ toolCallId: toolApproval.toolCall.toolCallId,
7760
+ input: toolApproval.toolCall.input,
7761
+ tool: tools == null ? void 0 : tools[toolApproval.toolCall.toolName],
7762
+ output: toolApproval.error,
7763
+ errorMode: "text"
7764
+ })
7765
+ });
7766
+ }
7712
7767
  for (const toolApproval of localDeniedToolApprovals) {
7713
7768
  localToolContent.push({
7714
7769
  type: "tool-result",
@@ -7764,8 +7819,17 @@ var DefaultStreamTextResult = class {
7764
7819
  clearTimeout(stepTimeoutId);
7765
7820
  }
7766
7821
  }
7767
- abortSignal == null ? void 0 : abortSignal.addEventListener("abort", clearStepTimeout);
7768
- abortSignal == null ? void 0 : abortSignal.addEventListener("abort", clearChunkTimeout);
7822
+ function clearStepTimeouts() {
7823
+ clearStepTimeout();
7824
+ clearChunkTimeout();
7825
+ }
7826
+ function cleanupStepTimeouts() {
7827
+ abortSignal == null ? void 0 : abortSignal.removeEventListener("abort", cleanupStepTimeouts);
7828
+ clearStepTimeouts();
7829
+ }
7830
+ abortSignal == null ? void 0 : abortSignal.addEventListener("abort", cleanupStepTimeouts, {
7831
+ once: true
7832
+ });
7769
7833
  try {
7770
7834
  stepFinish = new DelayedPromise();
7771
7835
  const stepInputMessages = [...initialMessages, ...responseMessages];
@@ -8142,8 +8206,7 @@ var DefaultStreamTextResult = class {
8142
8206
  })
8143
8207
  });
8144
8208
  doStreamSpan.end();
8145
- clearStepTimeout();
8146
- clearChunkTimeout();
8209
+ cleanupStepTimeouts();
8147
8210
  self.closeStream();
8148
8211
  return;
8149
8212
  }
@@ -8247,8 +8310,7 @@ var DefaultStreamTextResult = class {
8247
8310
  pendingDeferredToolCalls.delete(output2.toolCallId);
8248
8311
  }
8249
8312
  }
8250
- clearStepTimeout();
8251
- clearChunkTimeout();
8313
+ cleanupStepTimeouts();
8252
8314
  if (
8253
8315
  // Continue if:
8254
8316
  // 1. There are client tool calls that have all been executed, OR
@@ -8292,11 +8354,14 @@ var DefaultStreamTextResult = class {
8292
8354
  }
8293
8355
  }
8294
8356
  })
8295
- )
8357
+ ),
8358
+ {
8359
+ onError: cleanupStepTimeouts,
8360
+ onCancel: cleanupStepTimeouts
8361
+ }
8296
8362
  );
8297
8363
  } catch (error) {
8298
- clearStepTimeout();
8299
- clearChunkTimeout();
8364
+ cleanupStepTimeouts();
8300
8365
  throw error;
8301
8366
  }
8302
8367
  }