ai 5.1.0-beta.2 → 5.1.0-beta.20

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
@@ -12,6 +12,7 @@ import {
12
12
  dynamicTool as dynamicTool2,
13
13
  generateId as generateId2,
14
14
  jsonSchema as jsonSchema2,
15
+ parseJsonEventStream as parseJsonEventStream3,
15
16
  tool as tool2,
16
17
  zodSchema
17
18
  } from "@ai-sdk/provider-utils";
@@ -97,7 +98,7 @@ import { gateway } from "@ai-sdk/gateway";
97
98
 
98
99
  // src/error/index.ts
99
100
  import {
100
- AISDKError as AISDKError17,
101
+ AISDKError as AISDKError18,
101
102
  APICallError,
102
103
  EmptyResponseBodyError,
103
104
  InvalidPromptError,
@@ -274,13 +275,25 @@ var NoOutputGeneratedError = class extends AISDKError8 {
274
275
  };
275
276
  _a8 = symbol8;
276
277
 
277
- // src/error/no-such-tool-error.ts
278
+ // src/error/no-speech-generated-error.ts
278
279
  import { AISDKError as AISDKError9 } from "@ai-sdk/provider";
280
+ var NoSpeechGeneratedError = class extends AISDKError9 {
281
+ constructor(options) {
282
+ super({
283
+ name: "AI_NoSpeechGeneratedError",
284
+ message: "No speech audio generated."
285
+ });
286
+ this.responses = options.responses;
287
+ }
288
+ };
289
+
290
+ // src/error/no-such-tool-error.ts
291
+ import { AISDKError as AISDKError10 } from "@ai-sdk/provider";
279
292
  var name9 = "AI_NoSuchToolError";
280
293
  var marker9 = `vercel.ai.error.${name9}`;
281
294
  var symbol9 = Symbol.for(marker9);
282
295
  var _a9;
283
- var NoSuchToolError = class extends AISDKError9 {
296
+ var NoSuchToolError = class extends AISDKError10 {
284
297
  constructor({
285
298
  toolName,
286
299
  availableTools = void 0,
@@ -292,18 +305,18 @@ var NoSuchToolError = class extends AISDKError9 {
292
305
  this.availableTools = availableTools;
293
306
  }
294
307
  static isInstance(error) {
295
- return AISDKError9.hasMarker(error, marker9);
308
+ return AISDKError10.hasMarker(error, marker9);
296
309
  }
297
310
  };
298
311
  _a9 = symbol9;
299
312
 
300
313
  // src/error/tool-call-repair-error.ts
301
- import { AISDKError as AISDKError10, getErrorMessage as getErrorMessage2 } from "@ai-sdk/provider";
314
+ import { AISDKError as AISDKError11, getErrorMessage as getErrorMessage2 } from "@ai-sdk/provider";
302
315
  var name10 = "AI_ToolCallRepairError";
303
316
  var marker10 = `vercel.ai.error.${name10}`;
304
317
  var symbol10 = Symbol.for(marker10);
305
318
  var _a10;
306
- var ToolCallRepairError = class extends AISDKError10 {
319
+ var ToolCallRepairError = class extends AISDKError11 {
307
320
  constructor({
308
321
  cause,
309
322
  originalError,
@@ -314,14 +327,14 @@ var ToolCallRepairError = class extends AISDKError10 {
314
327
  this.originalError = originalError;
315
328
  }
316
329
  static isInstance(error) {
317
- return AISDKError10.hasMarker(error, marker10);
330
+ return AISDKError11.hasMarker(error, marker10);
318
331
  }
319
332
  };
320
333
  _a10 = symbol10;
321
334
 
322
335
  // src/error/unsupported-model-version-error.ts
323
- import { AISDKError as AISDKError11 } from "@ai-sdk/provider";
324
- var UnsupportedModelVersionError = class extends AISDKError11 {
336
+ import { AISDKError as AISDKError12 } from "@ai-sdk/provider";
337
+ var UnsupportedModelVersionError = class extends AISDKError12 {
325
338
  constructor(options) {
326
339
  super({
327
340
  name: "AI_UnsupportedModelVersionError",
@@ -334,12 +347,12 @@ var UnsupportedModelVersionError = class extends AISDKError11 {
334
347
  };
335
348
 
336
349
  // src/prompt/invalid-data-content-error.ts
337
- import { AISDKError as AISDKError12 } from "@ai-sdk/provider";
350
+ import { AISDKError as AISDKError13 } from "@ai-sdk/provider";
338
351
  var name11 = "AI_InvalidDataContentError";
339
352
  var marker11 = `vercel.ai.error.${name11}`;
340
353
  var symbol11 = Symbol.for(marker11);
341
354
  var _a11;
342
- var InvalidDataContentError = class extends AISDKError12 {
355
+ var InvalidDataContentError = class extends AISDKError13 {
343
356
  constructor({
344
357
  content,
345
358
  cause,
@@ -350,18 +363,18 @@ var InvalidDataContentError = class extends AISDKError12 {
350
363
  this.content = content;
351
364
  }
352
365
  static isInstance(error) {
353
- return AISDKError12.hasMarker(error, marker11);
366
+ return AISDKError13.hasMarker(error, marker11);
354
367
  }
355
368
  };
356
369
  _a11 = symbol11;
357
370
 
358
371
  // src/prompt/invalid-message-role-error.ts
359
- import { AISDKError as AISDKError13 } from "@ai-sdk/provider";
372
+ import { AISDKError as AISDKError14 } from "@ai-sdk/provider";
360
373
  var name12 = "AI_InvalidMessageRoleError";
361
374
  var marker12 = `vercel.ai.error.${name12}`;
362
375
  var symbol12 = Symbol.for(marker12);
363
376
  var _a12;
364
- var InvalidMessageRoleError = class extends AISDKError13 {
377
+ var InvalidMessageRoleError = class extends AISDKError14 {
365
378
  constructor({
366
379
  role,
367
380
  message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
@@ -371,18 +384,18 @@ var InvalidMessageRoleError = class extends AISDKError13 {
371
384
  this.role = role;
372
385
  }
373
386
  static isInstance(error) {
374
- return AISDKError13.hasMarker(error, marker12);
387
+ return AISDKError14.hasMarker(error, marker12);
375
388
  }
376
389
  };
377
390
  _a12 = symbol12;
378
391
 
379
392
  // src/prompt/message-conversion-error.ts
380
- import { AISDKError as AISDKError14 } from "@ai-sdk/provider";
393
+ import { AISDKError as AISDKError15 } from "@ai-sdk/provider";
381
394
  var name13 = "AI_MessageConversionError";
382
395
  var marker13 = `vercel.ai.error.${name13}`;
383
396
  var symbol13 = Symbol.for(marker13);
384
397
  var _a13;
385
- var MessageConversionError = class extends AISDKError14 {
398
+ var MessageConversionError = class extends AISDKError15 {
386
399
  constructor({
387
400
  originalMessage,
388
401
  message
@@ -392,18 +405,18 @@ var MessageConversionError = class extends AISDKError14 {
392
405
  this.originalMessage = originalMessage;
393
406
  }
394
407
  static isInstance(error) {
395
- return AISDKError14.hasMarker(error, marker13);
408
+ return AISDKError15.hasMarker(error, marker13);
396
409
  }
397
410
  };
398
411
  _a13 = symbol13;
399
412
 
400
413
  // src/util/download/download-error.ts
401
- import { AISDKError as AISDKError15 } from "@ai-sdk/provider";
414
+ import { AISDKError as AISDKError16 } from "@ai-sdk/provider";
402
415
  var name14 = "AI_DownloadError";
403
416
  var marker14 = `vercel.ai.error.${name14}`;
404
417
  var symbol14 = Symbol.for(marker14);
405
418
  var _a14;
406
- var DownloadError = class extends AISDKError15 {
419
+ var DownloadError = class extends AISDKError16 {
407
420
  constructor({
408
421
  url,
409
422
  statusCode,
@@ -418,18 +431,18 @@ var DownloadError = class extends AISDKError15 {
418
431
  this.statusText = statusText;
419
432
  }
420
433
  static isInstance(error) {
421
- return AISDKError15.hasMarker(error, marker14);
434
+ return AISDKError16.hasMarker(error, marker14);
422
435
  }
423
436
  };
424
437
  _a14 = symbol14;
425
438
 
426
439
  // src/util/retry-error.ts
427
- import { AISDKError as AISDKError16 } from "@ai-sdk/provider";
440
+ import { AISDKError as AISDKError17 } from "@ai-sdk/provider";
428
441
  var name15 = "AI_RetryError";
429
442
  var marker15 = `vercel.ai.error.${name15}`;
430
443
  var symbol15 = Symbol.for(marker15);
431
444
  var _a15;
432
- var RetryError = class extends AISDKError16 {
445
+ var RetryError = class extends AISDKError17 {
433
446
  constructor({
434
447
  message,
435
448
  reason,
@@ -442,34 +455,60 @@ var RetryError = class extends AISDKError16 {
442
455
  this.lastError = errors[errors.length - 1];
443
456
  }
444
457
  static isInstance(error) {
445
- return AISDKError16.hasMarker(error, marker15);
458
+ return AISDKError17.hasMarker(error, marker15);
446
459
  }
447
460
  };
448
461
  _a15 = symbol15;
449
462
 
450
463
  // src/model/resolve-model.ts
464
+ function transformToV3LanguageModel(model) {
465
+ return new Proxy(model, {
466
+ get(target, prop) {
467
+ if (prop === "specificationVersion")
468
+ return "v3";
469
+ return target[prop];
470
+ }
471
+ });
472
+ }
473
+ function transformToV3EmbeddingModel(model) {
474
+ return new Proxy(model, {
475
+ get(target, prop) {
476
+ if (prop === "specificationVersion")
477
+ return "v3";
478
+ return target[prop];
479
+ }
480
+ });
481
+ }
451
482
  function resolveLanguageModel(model) {
452
483
  if (typeof model !== "string") {
453
- if (model.specificationVersion !== "v2") {
484
+ if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
485
+ const unsupportedModel = model;
454
486
  throw new UnsupportedModelVersionError({
455
- version: model.specificationVersion,
456
- provider: model.provider,
457
- modelId: model.modelId
487
+ version: unsupportedModel.specificationVersion,
488
+ provider: unsupportedModel.provider,
489
+ modelId: unsupportedModel.modelId
458
490
  });
459
491
  }
492
+ if (model.specificationVersion === "v2") {
493
+ return transformToV3LanguageModel(model);
494
+ }
460
495
  return model;
461
496
  }
462
497
  return getGlobalProvider().languageModel(model);
463
498
  }
464
499
  function resolveEmbeddingModel(model) {
465
500
  if (typeof model !== "string") {
466
- if (model.specificationVersion !== "v2") {
501
+ if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
502
+ const unsupportedModel = model;
467
503
  throw new UnsupportedModelVersionError({
468
- version: model.specificationVersion,
469
- provider: model.provider,
470
- modelId: model.modelId
504
+ version: unsupportedModel.specificationVersion,
505
+ provider: unsupportedModel.provider,
506
+ modelId: unsupportedModel.modelId
471
507
  });
472
508
  }
509
+ if (model.specificationVersion === "v2") {
510
+ return transformToV3EmbeddingModel(model);
511
+ }
473
512
  return model;
474
513
  }
475
514
  return getGlobalProvider().textEmbeddingModel(
@@ -678,7 +717,7 @@ import {
678
717
  } from "@ai-sdk/provider-utils";
679
718
 
680
719
  // src/version.ts
681
- var VERSION = true ? "5.1.0-beta.2" : "0.0.0-test";
720
+ var VERSION = true ? "5.1.0-beta.20" : "0.0.0-test";
682
721
 
683
722
  // src/util/download/download.ts
684
723
  var download = async ({ url }) => {
@@ -719,7 +758,7 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
719
758
  );
720
759
 
721
760
  // src/prompt/data-content.ts
722
- import { AISDKError as AISDKError18 } from "@ai-sdk/provider";
761
+ import { AISDKError as AISDKError19 } from "@ai-sdk/provider";
723
762
  import {
724
763
  convertBase64ToUint8Array as convertBase64ToUint8Array2,
725
764
  convertUint8ArrayToBase64
@@ -756,7 +795,7 @@ var dataContentSchema = z.union([
756
795
  { message: "Must be a Buffer" }
757
796
  )
758
797
  ]);
759
- function convertToLanguageModelV2DataContent(content) {
798
+ function convertToLanguageModelV3DataContent(content) {
760
799
  if (content instanceof Uint8Array) {
761
800
  return { data: content, mediaType: void 0 };
762
801
  }
@@ -774,7 +813,7 @@ function convertToLanguageModelV2DataContent(content) {
774
813
  content.toString()
775
814
  );
776
815
  if (dataUrlMediaType == null || base64Content == null) {
777
- throw new AISDKError18({
816
+ throw new AISDKError19({
778
817
  name: "InvalidDataContentError",
779
818
  message: `Invalid data URL format in content ${content.toString()}`
780
819
  });
@@ -875,7 +914,7 @@ function convertToLanguageModelMessage({
875
914
  const providerOptions = part.providerOptions;
876
915
  switch (part.type) {
877
916
  case "file": {
878
- const { data, mediaType } = convertToLanguageModelV2DataContent(
917
+ const { data, mediaType } = convertToLanguageModelV3DataContent(
879
918
  part.data
880
919
  );
881
920
  return {
@@ -971,12 +1010,12 @@ async function downloadAssets(messages, download2, supportedUrls) {
971
1010
  }));
972
1011
  const downloadedFiles = await download2(plannedDownloads);
973
1012
  return Object.fromEntries(
974
- downloadedFiles.filter(
975
- (downloadedFile) => (downloadedFile == null ? void 0 : downloadedFile.data) != null
976
- ).map(({ data, mediaType }, index) => [
977
- plannedDownloads[index].url.toString(),
978
- { data, mediaType }
979
- ])
1013
+ downloadedFiles.map(
1014
+ (file, index) => file == null ? null : [
1015
+ plannedDownloads[index].url.toString(),
1016
+ { data: file.data, mediaType: file.mediaType }
1017
+ ]
1018
+ ).filter((file) => file != null)
980
1019
  );
981
1020
  }
982
1021
  function convertPartToLanguageModelPart(part, downloadedAssets) {
@@ -1000,7 +1039,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
1000
1039
  default:
1001
1040
  throw new Error(`Unsupported part type: ${type}`);
1002
1041
  }
1003
- const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV2DataContent(originalData);
1042
+ const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV3DataContent(originalData);
1004
1043
  let mediaType = convertedMediaType != null ? convertedMediaType : part.mediaType;
1005
1044
  let data = convertedData;
1006
1045
  if (data instanceof URL) {
@@ -1401,10 +1440,10 @@ import {
1401
1440
  GatewayAuthenticationError,
1402
1441
  GatewayModelNotFoundError
1403
1442
  } from "@ai-sdk/gateway";
1404
- import { AISDKError as AISDKError19 } from "@ai-sdk/provider";
1443
+ import { AISDKError as AISDKError20 } from "@ai-sdk/provider";
1405
1444
  function wrapGatewayError(error) {
1406
1445
  if (GatewayAuthenticationError.isInstance(error) || GatewayModelNotFoundError.isInstance(error)) {
1407
- return new AISDKError19({
1446
+ return new AISDKError20({
1408
1447
  name: "GatewayError",
1409
1448
  message: "Vercel AI Gateway access failed. If you want to use AI SDK providers directly, use the providers, e.g. @ai-sdk/openai, or register a different global default provider.",
1410
1449
  cause: error
@@ -2922,11 +2961,6 @@ var uiMessageChunkSchema = z7.union([
2922
2961
  providerExecuted: z7.boolean().optional(),
2923
2962
  dynamic: z7.boolean().optional()
2924
2963
  }),
2925
- z7.strictObject({
2926
- type: z7.literal("reasoning"),
2927
- text: z7.string(),
2928
- providerMetadata: providerMetadataSchema.optional()
2929
- }),
2930
2964
  z7.strictObject({
2931
2965
  type: z7.literal("reasoning-start"),
2932
2966
  id: z7.string(),
@@ -2943,9 +2977,6 @@ var uiMessageChunkSchema = z7.union([
2943
2977
  id: z7.string(),
2944
2978
  providerMetadata: providerMetadataSchema.optional()
2945
2979
  }),
2946
- z7.strictObject({
2947
- type: z7.literal("reasoning-part-finish")
2948
- }),
2949
2980
  z7.strictObject({
2950
2981
  type: z7.literal("source-url"),
2951
2982
  sourceId: z7.string(),
@@ -2968,7 +2999,10 @@ var uiMessageChunkSchema = z7.union([
2968
2999
  providerMetadata: providerMetadataSchema.optional()
2969
3000
  }),
2970
3001
  z7.strictObject({
2971
- type: z7.string().startsWith("data-"),
3002
+ type: z7.custom(
3003
+ (value) => typeof value === "string" && value.startsWith("data-"),
3004
+ { message: 'Type must start with "data-"' }
3005
+ ),
2972
3006
  id: z7.string().optional(),
2973
3007
  data: z7.unknown(),
2974
3008
  transient: z7.boolean().optional()
@@ -4597,7 +4631,7 @@ var DefaultStreamTextResult = class {
4597
4631
  let activeReasoningContent = {};
4598
4632
  const eventProcessor = new TransformStream({
4599
4633
  async transform(chunk, controller) {
4600
- var _a17, _b, _c;
4634
+ var _a17, _b, _c, _d;
4601
4635
  controller.enqueue(chunk);
4602
4636
  const { part } = chunk;
4603
4637
  if (part.type === "text-delta" || part.type === "reasoning-delta" || part.type === "source" || part.type === "tool-call" || part.type === "tool-result" || part.type === "tool-input-start" || part.type === "tool-input-delta" || part.type === "raw") {
@@ -4630,6 +4664,18 @@ var DefaultStreamTextResult = class {
4630
4664
  activeText.providerMetadata = (_a17 = part.providerMetadata) != null ? _a17 : activeText.providerMetadata;
4631
4665
  }
4632
4666
  if (part.type === "text-end") {
4667
+ const activeText = activeTextContent[part.id];
4668
+ if (activeText == null) {
4669
+ controller.enqueue({
4670
+ part: {
4671
+ type: "error",
4672
+ error: `text part ${part.id} not found`
4673
+ },
4674
+ partialOutput: void 0
4675
+ });
4676
+ return;
4677
+ }
4678
+ activeText.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeText.providerMetadata;
4633
4679
  delete activeTextContent[part.id];
4634
4680
  }
4635
4681
  if (part.type === "reasoning-start") {
@@ -4653,7 +4699,7 @@ var DefaultStreamTextResult = class {
4653
4699
  return;
4654
4700
  }
4655
4701
  activeReasoning.text += part.text;
4656
- activeReasoning.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeReasoning.providerMetadata;
4702
+ activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
4657
4703
  }
4658
4704
  if (part.type === "reasoning-end") {
4659
4705
  const activeReasoning = activeReasoningContent[part.id];
@@ -4667,7 +4713,7 @@ var DefaultStreamTextResult = class {
4667
4713
  });
4668
4714
  return;
4669
4715
  }
4670
- activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
4716
+ activeReasoning.providerMetadata = (_d = part.providerMetadata) != null ? _d : activeReasoning.providerMetadata;
4671
4717
  delete activeReasoningContent[part.id];
4672
4718
  }
4673
4719
  if (part.type === "file") {
@@ -5919,14 +5965,33 @@ var Agent = class {
5919
5965
  constructor(settings) {
5920
5966
  this.settings = settings;
5921
5967
  }
5968
+ /**
5969
+ * The name of the agent.
5970
+ */
5971
+ get name() {
5972
+ return this.settings.name;
5973
+ }
5974
+ /**
5975
+ * The tools that the agent can use.
5976
+ */
5922
5977
  get tools() {
5923
5978
  return this.settings.tools;
5924
5979
  }
5925
5980
  async generate(options) {
5926
- return generateText({ ...this.settings, ...options });
5981
+ var _a17;
5982
+ return generateText({
5983
+ ...this.settings,
5984
+ stopWhen: (_a17 = this.settings.stopWhen) != null ? _a17 : stepCountIs(20),
5985
+ ...options
5986
+ });
5927
5987
  }
5928
5988
  stream(options) {
5929
- return streamText({ ...this.settings, ...options });
5989
+ var _a17;
5990
+ return streamText({
5991
+ ...this.settings,
5992
+ stopWhen: (_a17 = this.settings.stopWhen) != null ? _a17 : stepCountIs(20),
5993
+ ...options
5994
+ });
5930
5995
  }
5931
5996
  /**
5932
5997
  * Creates a response object that streams UI messages to the client.
@@ -6322,7 +6387,7 @@ async function generateImage({
6322
6387
  headers
6323
6388
  }) {
6324
6389
  var _a17, _b;
6325
- if (model.specificationVersion !== "v2") {
6390
+ if (model.specificationVersion !== "v3") {
6326
6391
  throw new UnsupportedModelVersionError({
6327
6392
  version: model.specificationVersion,
6328
6393
  provider: model.provider,
@@ -7802,18 +7867,6 @@ var DefaultStreamObjectResult = class {
7802
7867
  // src/generate-speech/generate-speech.ts
7803
7868
  import { withUserAgentSuffix as withUserAgentSuffix7 } from "@ai-sdk/provider-utils";
7804
7869
 
7805
- // src/error/no-speech-generated-error.ts
7806
- import { AISDKError as AISDKError20 } from "@ai-sdk/provider";
7807
- var NoSpeechGeneratedError = class extends AISDKError20 {
7808
- constructor(options) {
7809
- super({
7810
- name: "AI_NoSpeechGeneratedError",
7811
- message: "No speech audio generated."
7812
- });
7813
- this.responses = options.responses;
7814
- }
7815
- };
7816
-
7817
7870
  // src/generate-speech/generated-audio-file.ts
7818
7871
  var DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {
7819
7872
  constructor({
@@ -8069,7 +8122,7 @@ function defaultSettingsMiddleware({
8069
8122
  settings
8070
8123
  }) {
8071
8124
  return {
8072
- middlewareVersion: "v2",
8125
+ middlewareVersion: "v3",
8073
8126
  transformParams: async ({ params }) => {
8074
8127
  return mergeObjects(settings, params);
8075
8128
  }
@@ -8103,7 +8156,7 @@ function extractReasoningMiddleware({
8103
8156
  const openingTag = `<${tagName}>`;
8104
8157
  const closingTag = `</${tagName}>`;
8105
8158
  return {
8106
- middlewareVersion: "v2",
8159
+ middlewareVersion: "v3",
8107
8160
  wrapGenerate: async ({ doGenerate }) => {
8108
8161
  const { content, ...rest } = await doGenerate();
8109
8162
  const transformedContent = [];
@@ -8249,7 +8302,7 @@ function extractReasoningMiddleware({
8249
8302
  // src/middleware/simulate-streaming-middleware.ts
8250
8303
  function simulateStreamingMiddleware() {
8251
8304
  return {
8252
- middlewareVersion: "v2",
8305
+ middlewareVersion: "v3",
8253
8306
  wrapStream: async ({ doGenerate }) => {
8254
8307
  const result = await doGenerate();
8255
8308
  let id = 0;
@@ -8346,7 +8399,7 @@ var doWrap = ({
8346
8399
  return transformParams ? await transformParams({ params, type, model }) : params;
8347
8400
  }
8348
8401
  return {
8349
- specificationVersion: "v2",
8402
+ specificationVersion: "v3",
8350
8403
  provider: (_a17 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a17 : model.provider,
8351
8404
  modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
8352
8405
  supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
@@ -9701,9 +9754,11 @@ var AbstractChat = class {
9701
9754
  }
9702
9755
  };
9703
9756
  this.addToolResult = async ({
9757
+ state = "output-available",
9704
9758
  tool: tool3,
9705
9759
  toolCallId,
9706
- output
9760
+ output,
9761
+ errorText
9707
9762
  }) => this.jobExecutor.run(async () => {
9708
9763
  var _a17, _b;
9709
9764
  const messages = this.state.messages;
@@ -9711,16 +9766,16 @@ var AbstractChat = class {
9711
9766
  this.state.replaceMessage(messages.length - 1, {
9712
9767
  ...lastMessage,
9713
9768
  parts: lastMessage.parts.map(
9714
- (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state: "output-available", output } : part
9769
+ (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state, output, errorText } : part
9715
9770
  )
9716
9771
  });
9717
9772
  if (this.activeResponse) {
9718
9773
  this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(
9719
9774
  (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? {
9720
9775
  ...part,
9721
- state: "output-available",
9776
+ state,
9722
9777
  output,
9723
- errorText: void 0
9778
+ errorText
9724
9779
  } : part
9725
9780
  );
9726
9781
  }
@@ -9929,7 +9984,9 @@ function lastAssistantMessageIsCompleteWithToolCalls({
9929
9984
  return part.type === "step-start" ? index : lastIndex;
9930
9985
  }, -1);
9931
9986
  const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolOrDynamicToolUIPart);
9932
- return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every((part) => part.state === "output-available");
9987
+ return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every(
9988
+ (part) => part.state === "output-available" || part.state === "output-error"
9989
+ );
9933
9990
  }
9934
9991
 
9935
9992
  // src/ui/transform-text-to-ui-message-stream.ts
@@ -10368,9 +10425,10 @@ function readUIMessageStream({
10368
10425
  return createAsyncIterableStream(outputStream);
10369
10426
  }
10370
10427
  export {
10371
- AISDKError17 as AISDKError,
10428
+ AISDKError18 as AISDKError,
10372
10429
  APICallError,
10373
10430
  AbstractChat,
10431
+ Agent,
10374
10432
  DefaultChatTransport,
10375
10433
  DownloadError,
10376
10434
  EmptyResponseBodyError,
@@ -10393,6 +10451,7 @@ export {
10393
10451
  NoObjectGeneratedError,
10394
10452
  NoOutputGeneratedError,
10395
10453
  NoOutputSpecifiedError,
10454
+ NoSpeechGeneratedError,
10396
10455
  NoSuchModelError,
10397
10456
  NoSuchProviderError,
10398
10457
  NoSuchToolError,
@@ -10451,6 +10510,7 @@ export {
10451
10510
  jsonSchema2 as jsonSchema,
10452
10511
  lastAssistantMessageIsCompleteWithToolCalls,
10453
10512
  modelMessageSchema,
10513
+ parseJsonEventStream3 as parseJsonEventStream,
10454
10514
  parsePartialJson,
10455
10515
  pipeTextStreamToResponse,
10456
10516
  pipeUIMessageStreamToResponse,
@@ -10465,6 +10525,7 @@ export {
10465
10525
  systemModelMessageSchema,
10466
10526
  tool2 as tool,
10467
10527
  toolModelMessageSchema,
10528
+ uiMessageChunkSchema,
10468
10529
  userModelMessageSchema,
10469
10530
  validateUIMessages,
10470
10531
  wrapLanguageModel,