ai 4.0.11 → 4.0.13

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
@@ -4,8 +4,8 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
6
  var __export = (target, all) => {
7
- for (var name11 in all)
8
- __defProp(target, name11, { get: all[name11], enumerable: true });
7
+ for (var name13 in all)
8
+ __defProp(target, name13, { get: all[name13], enumerable: true });
9
9
  };
10
10
  var __copyProps = (to, from, except, desc) => {
11
11
  if (from && typeof from === "object" || typeof from === "function") {
@@ -20,32 +20,34 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // streams/index.ts
21
21
  var streams_exports = {};
22
22
  __export(streams_exports, {
23
- AISDKError: () => import_provider13.AISDKError,
24
- APICallError: () => import_provider13.APICallError,
23
+ AISDKError: () => import_provider15.AISDKError,
24
+ APICallError: () => import_provider15.APICallError,
25
25
  AssistantResponse: () => AssistantResponse,
26
26
  DownloadError: () => DownloadError,
27
- EmptyResponseBodyError: () => import_provider13.EmptyResponseBodyError,
27
+ EmptyResponseBodyError: () => import_provider15.EmptyResponseBodyError,
28
28
  InvalidArgumentError: () => InvalidArgumentError,
29
29
  InvalidDataContentError: () => InvalidDataContentError,
30
30
  InvalidMessageRoleError: () => InvalidMessageRoleError,
31
- InvalidPromptError: () => import_provider13.InvalidPromptError,
32
- InvalidResponseDataError: () => import_provider13.InvalidResponseDataError,
31
+ InvalidPromptError: () => import_provider15.InvalidPromptError,
32
+ InvalidResponseDataError: () => import_provider15.InvalidResponseDataError,
33
33
  InvalidToolArgumentsError: () => InvalidToolArgumentsError,
34
- JSONParseError: () => import_provider13.JSONParseError,
34
+ JSONParseError: () => import_provider15.JSONParseError,
35
35
  LangChainAdapter: () => langchain_adapter_exports,
36
36
  LlamaIndexAdapter: () => llamaindex_adapter_exports,
37
- LoadAPIKeyError: () => import_provider13.LoadAPIKeyError,
37
+ LoadAPIKeyError: () => import_provider15.LoadAPIKeyError,
38
38
  MessageConversionError: () => MessageConversionError,
39
- NoContentGeneratedError: () => import_provider13.NoContentGeneratedError,
39
+ NoContentGeneratedError: () => import_provider15.NoContentGeneratedError,
40
40
  NoObjectGeneratedError: () => NoObjectGeneratedError,
41
- NoSuchModelError: () => import_provider13.NoSuchModelError,
41
+ NoSuchModelError: () => import_provider15.NoSuchModelError,
42
42
  NoSuchProviderError: () => NoSuchProviderError,
43
43
  NoSuchToolError: () => NoSuchToolError,
44
44
  Output: () => output_exports,
45
45
  RetryError: () => RetryError,
46
46
  StreamData: () => StreamData,
47
- TypeValidationError: () => import_provider13.TypeValidationError,
48
- UnsupportedFunctionalityError: () => import_provider13.UnsupportedFunctionalityError,
47
+ ToolCallRepairError: () => ToolCallRepairError,
48
+ ToolExecutionError: () => ToolExecutionError,
49
+ TypeValidationError: () => import_provider15.TypeValidationError,
50
+ UnsupportedFunctionalityError: () => import_provider15.UnsupportedFunctionalityError,
49
51
  convertToCoreMessages: () => convertToCoreMessages,
50
52
  cosineSimilarity: () => cosineSimilarity,
51
53
  createDataStream: () => createDataStream,
@@ -406,7 +408,7 @@ function getBaseTelemetryAttributes({
406
408
  telemetry,
407
409
  headers
408
410
  }) {
409
- var _a11;
411
+ var _a13;
410
412
  return {
411
413
  "ai.model.provider": model.provider,
412
414
  "ai.model.id": model.modelId,
@@ -416,7 +418,7 @@ function getBaseTelemetryAttributes({
416
418
  return attributes;
417
419
  }, {}),
418
420
  // add metadata as attributes:
419
- ...Object.entries((_a11 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a11 : {}).reduce(
421
+ ...Object.entries((_a13 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a13 : {}).reduce(
420
422
  (attributes, [key, value]) => {
421
423
  attributes[`ai.telemetry.metadata.${key}`] = value;
422
424
  return attributes;
@@ -441,7 +443,7 @@ var noopTracer = {
441
443
  startSpan() {
442
444
  return noopSpan;
443
445
  },
444
- startActiveSpan(name11, arg1, arg2, arg3) {
446
+ startActiveSpan(name13, arg1, arg2, arg3) {
445
447
  if (typeof arg1 === "function") {
446
448
  return arg1(noopSpan);
447
449
  }
@@ -511,13 +513,13 @@ function getTracer({
511
513
  // core/telemetry/record-span.ts
512
514
  var import_api2 = require("@opentelemetry/api");
513
515
  function recordSpan({
514
- name: name11,
516
+ name: name13,
515
517
  tracer,
516
518
  attributes,
517
519
  fn,
518
520
  endWhenDone = true
519
521
  }) {
520
- return tracer.startActiveSpan(name11, { attributes }, async (span) => {
522
+ return tracer.startActiveSpan(name13, { attributes }, async (span) => {
521
523
  try {
522
524
  const result = await fn(span);
523
525
  if (endWhenDone) {
@@ -625,14 +627,14 @@ async function embed({
625
627
  }),
626
628
  tracer,
627
629
  fn: async (doEmbedSpan) => {
628
- var _a11;
630
+ var _a13;
629
631
  const modelResponse = await model.doEmbed({
630
632
  values: [value],
631
633
  abortSignal,
632
634
  headers
633
635
  });
634
636
  const embedding2 = modelResponse.embeddings[0];
635
- const usage2 = (_a11 = modelResponse.usage) != null ? _a11 : { tokens: NaN };
637
+ const usage2 = (_a13 = modelResponse.usage) != null ? _a13 : { tokens: NaN };
636
638
  doEmbedSpan.setAttributes(
637
639
  selectTelemetryAttributes({
638
640
  telemetry,
@@ -742,14 +744,14 @@ async function embedMany({
742
744
  }),
743
745
  tracer,
744
746
  fn: async (doEmbedSpan) => {
745
- var _a11;
747
+ var _a13;
746
748
  const modelResponse = await model.doEmbed({
747
749
  values,
748
750
  abortSignal,
749
751
  headers
750
752
  });
751
753
  const embeddings3 = modelResponse.embeddings;
752
- const usage2 = (_a11 = modelResponse.usage) != null ? _a11 : { tokens: NaN };
754
+ const usage2 = (_a13 = modelResponse.usage) != null ? _a13 : { tokens: NaN };
753
755
  doEmbedSpan.setAttributes(
754
756
  selectTelemetryAttributes({
755
757
  telemetry,
@@ -801,14 +803,14 @@ async function embedMany({
801
803
  }),
802
804
  tracer,
803
805
  fn: async (doEmbedSpan) => {
804
- var _a11;
806
+ var _a13;
805
807
  const modelResponse = await model.doEmbed({
806
808
  values: chunk,
807
809
  abortSignal,
808
810
  headers
809
811
  });
810
812
  const embeddings2 = modelResponse.embeddings;
811
- const usage2 = (_a11 = modelResponse.usage) != null ? _a11 : { tokens: NaN };
813
+ const usage2 = (_a13 = modelResponse.usage) != null ? _a13 : { tokens: NaN };
812
814
  doEmbedSpan.setAttributes(
813
815
  selectTelemetryAttributes({
814
816
  telemetry,
@@ -888,7 +890,7 @@ async function download({
888
890
  url,
889
891
  fetchImplementation = fetch
890
892
  }) {
891
- var _a11;
893
+ var _a13;
892
894
  const urlText = url.toString();
893
895
  try {
894
896
  const response = await fetchImplementation(urlText);
@@ -901,7 +903,7 @@ async function download({
901
903
  }
902
904
  return {
903
905
  data: new Uint8Array(await response.arrayBuffer()),
904
- mimeType: (_a11 = response.headers.get("content-type")) != null ? _a11 : void 0
906
+ mimeType: (_a13 = response.headers.get("content-type")) != null ? _a13 : void 0
905
907
  };
906
908
  } catch (error) {
907
909
  if (DownloadError.isInstance(error)) {
@@ -961,8 +963,8 @@ var dataContentSchema = import_zod.z.union([
961
963
  import_zod.z.custom(
962
964
  // Buffer might not be available in some environments such as CloudFlare:
963
965
  (value) => {
964
- var _a11, _b;
965
- return (_b = (_a11 = globalThis.Buffer) == null ? void 0 : _a11.isBuffer(value)) != null ? _b : false;
966
+ var _a13, _b;
967
+ return (_b = (_a13 = globalThis.Buffer) == null ? void 0 : _a13.isBuffer(value)) != null ? _b : false;
966
968
  },
967
969
  { message: "Must be a Buffer" }
968
970
  )
@@ -1470,7 +1472,7 @@ function detectSingleMessageCharacteristics(message) {
1470
1472
 
1471
1473
  // core/prompt/attachments-to-parts.ts
1472
1474
  function attachmentsToParts(attachments) {
1473
- var _a11, _b, _c;
1475
+ var _a13, _b, _c;
1474
1476
  const parts = [];
1475
1477
  for (const attachment of attachments) {
1476
1478
  let url;
@@ -1482,7 +1484,7 @@ function attachmentsToParts(attachments) {
1482
1484
  switch (url.protocol) {
1483
1485
  case "http:":
1484
1486
  case "https:": {
1485
- if ((_a11 = attachment.contentType) == null ? void 0 : _a11.startsWith("image/")) {
1487
+ if ((_a13 = attachment.contentType) == null ? void 0 : _a13.startsWith("image/")) {
1486
1488
  parts.push({ type: "image", image: url });
1487
1489
  } else {
1488
1490
  if (!attachment.contentType) {
@@ -1568,8 +1570,8 @@ _a6 = symbol6;
1568
1570
 
1569
1571
  // core/prompt/convert-to-core-messages.ts
1570
1572
  function convertToCoreMessages(messages, options) {
1571
- var _a11;
1572
- const tools = (_a11 = options == null ? void 0 : options.tools) != null ? _a11 : {};
1573
+ var _a13;
1574
+ const tools = (_a13 = options == null ? void 0 : options.tools) != null ? _a13 : {};
1573
1575
  const coreMessages = [];
1574
1576
  for (const message of messages) {
1575
1577
  const { role, content, toolInvocations, experimental_attachments } = message;
@@ -1851,7 +1853,7 @@ var arrayOutputStrategy = (schema) => {
1851
1853
  additionalProperties: false
1852
1854
  },
1853
1855
  validatePartialResult({ value, latestObject, isFirstDelta, isFinalDelta }) {
1854
- var _a11;
1856
+ var _a13;
1855
1857
  if (!(0, import_provider10.isJSONObject)(value) || !(0, import_provider10.isJSONArray)(value.elements)) {
1856
1858
  return {
1857
1859
  success: false,
@@ -1874,7 +1876,7 @@ var arrayOutputStrategy = (schema) => {
1874
1876
  }
1875
1877
  resultArray.push(result.value);
1876
1878
  }
1877
- const publishedElementCount = (_a11 = latestObject == null ? void 0 : latestObject.length) != null ? _a11 : 0;
1879
+ const publishedElementCount = (_a13 = latestObject == null ? void 0 : latestObject.length) != null ? _a13 : 0;
1878
1880
  let textDelta = "";
1879
1881
  if (isFirstDelta) {
1880
1882
  textDelta += "[";
@@ -2206,7 +2208,7 @@ async function generateObject({
2206
2208
  }),
2207
2209
  tracer,
2208
2210
  fn: async (span) => {
2209
- var _a11, _b;
2211
+ var _a13, _b;
2210
2212
  if (mode === "auto" || mode == null) {
2211
2213
  mode = model.defaultObjectGenerationMode;
2212
2214
  }
@@ -2268,7 +2270,7 @@ async function generateObject({
2268
2270
  }),
2269
2271
  tracer,
2270
2272
  fn: async (span2) => {
2271
- var _a12, _b2, _c, _d, _e, _f;
2273
+ var _a14, _b2, _c, _d, _e, _f;
2272
2274
  const result2 = await model.doGenerate({
2273
2275
  mode: {
2274
2276
  type: "object-json",
@@ -2287,7 +2289,7 @@ async function generateObject({
2287
2289
  throw new NoObjectGeneratedError();
2288
2290
  }
2289
2291
  const responseData = {
2290
- id: (_b2 = (_a12 = result2.response) == null ? void 0 : _a12.id) != null ? _b2 : generateId3(),
2292
+ id: (_b2 = (_a14 = result2.response) == null ? void 0 : _a14.id) != null ? _b2 : generateId3(),
2291
2293
  timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
2292
2294
  modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId
2293
2295
  };
@@ -2322,7 +2324,7 @@ async function generateObject({
2322
2324
  rawResponse = generateResult.rawResponse;
2323
2325
  logprobs = generateResult.logprobs;
2324
2326
  resultProviderMetadata = generateResult.providerMetadata;
2325
- request = (_a11 = generateResult.request) != null ? _a11 : {};
2327
+ request = (_a13 = generateResult.request) != null ? _a13 : {};
2326
2328
  response = generateResult.responseData;
2327
2329
  break;
2328
2330
  }
@@ -2368,7 +2370,7 @@ async function generateObject({
2368
2370
  }),
2369
2371
  tracer,
2370
2372
  fn: async (span2) => {
2371
- var _a12, _b2, _c, _d, _e, _f, _g, _h;
2373
+ var _a14, _b2, _c, _d, _e, _f, _g, _h;
2372
2374
  const result2 = await model.doGenerate({
2373
2375
  mode: {
2374
2376
  type: "object-tool",
@@ -2386,7 +2388,7 @@ async function generateObject({
2386
2388
  abortSignal,
2387
2389
  headers
2388
2390
  });
2389
- const objectText = (_b2 = (_a12 = result2.toolCalls) == null ? void 0 : _a12[0]) == null ? void 0 : _b2.args;
2391
+ const objectText = (_b2 = (_a14 = result2.toolCalls) == null ? void 0 : _a14[0]) == null ? void 0 : _b2.args;
2390
2392
  if (objectText === void 0) {
2391
2393
  throw new NoObjectGeneratedError();
2392
2394
  }
@@ -2491,9 +2493,9 @@ var DefaultGenerateObjectResult = class {
2491
2493
  this.logprobs = options.logprobs;
2492
2494
  }
2493
2495
  toJsonResponse(init) {
2494
- var _a11;
2496
+ var _a13;
2495
2497
  return new Response(JSON.stringify(this.object), {
2496
- status: (_a11 = init == null ? void 0 : init.status) != null ? _a11 : 200,
2498
+ status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
2497
2499
  headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
2498
2500
  contentType: "application/json; charset=utf-8"
2499
2501
  })
@@ -2528,17 +2530,17 @@ var DelayedPromise = class {
2528
2530
  return this.promise;
2529
2531
  }
2530
2532
  resolve(value) {
2531
- var _a11;
2533
+ var _a13;
2532
2534
  this.status = { type: "resolved", value };
2533
2535
  if (this.promise) {
2534
- (_a11 = this._resolve) == null ? void 0 : _a11.call(this, value);
2536
+ (_a13 = this._resolve) == null ? void 0 : _a13.call(this, value);
2535
2537
  }
2536
2538
  }
2537
2539
  reject(error) {
2538
- var _a11;
2540
+ var _a13;
2539
2541
  this.status = { type: "rejected", error };
2540
2542
  if (this.promise) {
2541
- (_a11 = this._reject) == null ? void 0 : _a11.call(this, error);
2543
+ (_a13 = this._reject) == null ? void 0 : _a13.call(this, error);
2542
2544
  }
2543
2545
  }
2544
2546
  };
@@ -2627,8 +2629,8 @@ function createStitchableStream() {
2627
2629
 
2628
2630
  // core/util/now.ts
2629
2631
  function now() {
2630
- var _a11, _b;
2631
- return (_b = (_a11 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a11.now()) != null ? _b : Date.now();
2632
+ var _a13, _b;
2633
+ return (_b = (_a13 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a13.now()) != null ? _b : Date.now();
2632
2634
  }
2633
2635
 
2634
2636
  // core/generate-object/stream-object.ts
@@ -2917,7 +2919,7 @@ var DefaultStreamObjectResult = class {
2917
2919
  const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
2918
2920
  new TransformStream({
2919
2921
  async transform(chunk, controller) {
2920
- var _a11, _b, _c;
2922
+ var _a13, _b, _c;
2921
2923
  if (isFirstChunk) {
2922
2924
  const msToFirstChunk = now2() - startTimestampMs;
2923
2925
  isFirstChunk = false;
@@ -2963,7 +2965,7 @@ var DefaultStreamObjectResult = class {
2963
2965
  switch (chunk.type) {
2964
2966
  case "response-metadata": {
2965
2967
  response = {
2966
- id: (_a11 = chunk.id) != null ? _a11 : response.id,
2968
+ id: (_a13 = chunk.id) != null ? _a13 : response.id,
2967
2969
  timestamp: (_b = chunk.timestamp) != null ? _b : response.timestamp,
2968
2970
  modelId: (_c = chunk.modelId) != null ? _c : response.modelId
2969
2971
  };
@@ -3160,9 +3162,9 @@ var DefaultStreamObjectResult = class {
3160
3162
  });
3161
3163
  }
3162
3164
  toTextStreamResponse(init) {
3163
- var _a11;
3165
+ var _a13;
3164
3166
  return new Response(this.textStream.pipeThrough(new TextEncoderStream()), {
3165
- status: (_a11 = init == null ? void 0 : init.status) != null ? _a11 : 200,
3167
+ status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
3166
3168
  headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
3167
3169
  contentType: "text/plain; charset=utf-8"
3168
3170
  })
@@ -3174,7 +3176,7 @@ var DefaultStreamObjectResult = class {
3174
3176
  var import_provider_utils8 = require("@ai-sdk/provider-utils");
3175
3177
 
3176
3178
  // errors/index.ts
3177
- var import_provider13 = require("@ai-sdk/provider");
3179
+ var import_provider15 = require("@ai-sdk/provider");
3178
3180
 
3179
3181
  // errors/invalid-tool-arguments-error.ts
3180
3182
  var import_provider11 = require("@ai-sdk/provider");
@@ -3225,6 +3227,52 @@ var NoSuchToolError = class extends import_provider12.AISDKError {
3225
3227
  };
3226
3228
  _a9 = symbol9;
3227
3229
 
3230
+ // errors/tool-call-repair-error.ts
3231
+ var import_provider13 = require("@ai-sdk/provider");
3232
+ var name10 = "AI_ToolCallRepairError";
3233
+ var marker10 = `vercel.ai.error.${name10}`;
3234
+ var symbol10 = Symbol.for(marker10);
3235
+ var _a10;
3236
+ var ToolCallRepairError = class extends import_provider13.AISDKError {
3237
+ constructor({
3238
+ cause,
3239
+ originalError,
3240
+ message = `Error repairing tool call: ${(0, import_provider13.getErrorMessage)(cause)}`
3241
+ }) {
3242
+ super({ name: name10, message, cause });
3243
+ this[_a10] = true;
3244
+ this.originalError = originalError;
3245
+ }
3246
+ static isInstance(error) {
3247
+ return import_provider13.AISDKError.hasMarker(error, marker10);
3248
+ }
3249
+ };
3250
+ _a10 = symbol10;
3251
+
3252
+ // errors/tool-execution-error.ts
3253
+ var import_provider14 = require("@ai-sdk/provider");
3254
+ var name11 = "AI_ToolExecutionError";
3255
+ var marker11 = `vercel.ai.error.${name11}`;
3256
+ var symbol11 = Symbol.for(marker11);
3257
+ var _a11;
3258
+ var ToolExecutionError = class extends import_provider14.AISDKError {
3259
+ constructor({
3260
+ toolArgs,
3261
+ toolName,
3262
+ cause,
3263
+ message = `Error executing tool ${toolName}: ${(0, import_provider14.getErrorMessage)(cause)}`
3264
+ }) {
3265
+ super({ name: name11, message, cause });
3266
+ this[_a11] = true;
3267
+ this.toolArgs = toolArgs;
3268
+ this.toolName = toolName;
3269
+ }
3270
+ static isInstance(error) {
3271
+ return import_provider14.AISDKError.hasMarker(error, marker11);
3272
+ }
3273
+ };
3274
+ _a11 = symbol11;
3275
+
3228
3276
  // core/prompt/prepare-tools-and-tool-choice.ts
3229
3277
  var import_ui_utils4 = require("@ai-sdk/ui-utils");
3230
3278
 
@@ -3246,24 +3294,24 @@ function prepareToolsAndToolChoice({
3246
3294
  };
3247
3295
  }
3248
3296
  const filteredTools = activeTools != null ? Object.entries(tools).filter(
3249
- ([name11]) => activeTools.includes(name11)
3297
+ ([name13]) => activeTools.includes(name13)
3250
3298
  ) : Object.entries(tools);
3251
3299
  return {
3252
- tools: filteredTools.map(([name11, tool2]) => {
3300
+ tools: filteredTools.map(([name13, tool2]) => {
3253
3301
  const toolType = tool2.type;
3254
3302
  switch (toolType) {
3255
3303
  case void 0:
3256
3304
  case "function":
3257
3305
  return {
3258
3306
  type: "function",
3259
- name: name11,
3307
+ name: name13,
3260
3308
  description: tool2.description,
3261
3309
  parameters: (0, import_ui_utils4.asSchema)(tool2.parameters).jsonSchema
3262
3310
  };
3263
3311
  case "provider-defined":
3264
3312
  return {
3265
3313
  type: "provider-defined",
3266
- name: name11,
3314
+ name: name13,
3267
3315
  id: tool2.id,
3268
3316
  args: tool2.args
3269
3317
  };
@@ -3293,14 +3341,49 @@ function removeTextAfterLastWhitespace(text2) {
3293
3341
  // core/generate-text/parse-tool-call.ts
3294
3342
  var import_provider_utils7 = require("@ai-sdk/provider-utils");
3295
3343
  var import_ui_utils5 = require("@ai-sdk/ui-utils");
3296
- function parseToolCall({
3344
+ async function parseToolCall({
3297
3345
  toolCall,
3298
- tools
3346
+ tools,
3347
+ repairToolCall,
3348
+ system,
3349
+ messages
3299
3350
  }) {
3300
- const toolName = toolCall.toolName;
3301
3351
  if (tools == null) {
3302
3352
  throw new NoSuchToolError({ toolName: toolCall.toolName });
3303
3353
  }
3354
+ try {
3355
+ return await doParseToolCall({ toolCall, tools });
3356
+ } catch (error) {
3357
+ if (repairToolCall == null || !(NoSuchToolError.isInstance(error) || InvalidToolArgumentsError.isInstance(error))) {
3358
+ throw error;
3359
+ }
3360
+ let repairedToolCall = null;
3361
+ try {
3362
+ repairedToolCall = await repairToolCall({
3363
+ toolCall,
3364
+ tools,
3365
+ parameterSchema: ({ toolName }) => (0, import_ui_utils5.asSchema)(tools[toolName].parameters).jsonSchema,
3366
+ system,
3367
+ messages,
3368
+ error
3369
+ });
3370
+ } catch (repairError) {
3371
+ throw new ToolCallRepairError({
3372
+ cause: repairError,
3373
+ originalError: error
3374
+ });
3375
+ }
3376
+ if (repairedToolCall == null) {
3377
+ throw error;
3378
+ }
3379
+ return await doParseToolCall({ toolCall: repairedToolCall, tools });
3380
+ }
3381
+ }
3382
+ async function doParseToolCall({
3383
+ toolCall,
3384
+ tools
3385
+ }) {
3386
+ const toolName = toolCall.toolName;
3304
3387
  const tool2 = tools[toolName];
3305
3388
  if (tool2 == null) {
3306
3389
  throw new NoSuchToolError({
@@ -3380,6 +3463,7 @@ async function generateText({
3380
3463
  experimental_telemetry: telemetry,
3381
3464
  experimental_providerMetadata: providerMetadata,
3382
3465
  experimental_activeTools: activeTools,
3466
+ experimental_repairToolCall: repairToolCall,
3383
3467
  _internal: {
3384
3468
  generateId: generateId3 = originalGenerateId3,
3385
3469
  currentDate = () => /* @__PURE__ */ new Date()
@@ -3387,7 +3471,7 @@ async function generateText({
3387
3471
  onStepFinish,
3388
3472
  ...settings
3389
3473
  }) {
3390
- var _a11;
3474
+ var _a13;
3391
3475
  if (maxSteps < 1) {
3392
3476
  throw new InvalidArgumentError({
3393
3477
  parameter: "maxSteps",
@@ -3404,7 +3488,7 @@ async function generateText({
3404
3488
  });
3405
3489
  const initialPrompt = standardizePrompt({
3406
3490
  prompt: {
3407
- system: (_a11 = output == null ? void 0 : output.injectIntoSystemPrompt({ system, model })) != null ? _a11 : system,
3491
+ system: (_a13 = output == null ? void 0 : output.injectIntoSystemPrompt({ system, model })) != null ? _a13 : system,
3408
3492
  prompt,
3409
3493
  messages
3410
3494
  },
@@ -3430,7 +3514,7 @@ async function generateText({
3430
3514
  }),
3431
3515
  tracer,
3432
3516
  fn: async (span) => {
3433
- var _a12, _b, _c, _d, _e, _f;
3517
+ var _a14, _b, _c, _d, _e, _f;
3434
3518
  const mode = {
3435
3519
  type: "regular",
3436
3520
  ...prepareToolsAndToolChoice({ tools, toolChoice, activeTools })
@@ -3482,8 +3566,8 @@ async function generateText({
3482
3566
  "ai.prompt.tools": {
3483
3567
  // convert the language model level tools:
3484
3568
  input: () => {
3485
- var _a13;
3486
- return (_a13 = mode.tools) == null ? void 0 : _a13.map((tool2) => JSON.stringify(tool2));
3569
+ var _a15;
3570
+ return (_a15 = mode.tools) == null ? void 0 : _a15.map((tool2) => JSON.stringify(tool2));
3487
3571
  }
3488
3572
  },
3489
3573
  "ai.prompt.toolChoice": {
@@ -3503,7 +3587,7 @@ async function generateText({
3503
3587
  }),
3504
3588
  tracer,
3505
3589
  fn: async (span2) => {
3506
- var _a13, _b2, _c2, _d2, _e2, _f2;
3590
+ var _a15, _b2, _c2, _d2, _e2, _f2;
3507
3591
  const result = await model.doGenerate({
3508
3592
  mode,
3509
3593
  ...callSettings,
@@ -3515,7 +3599,7 @@ async function generateText({
3515
3599
  headers
3516
3600
  });
3517
3601
  const responseData = {
3518
- id: (_b2 = (_a13 = result.response) == null ? void 0 : _a13.id) != null ? _b2 : generateId3(),
3602
+ id: (_b2 = (_a15 = result.response) == null ? void 0 : _a15.id) != null ? _b2 : generateId3(),
3519
3603
  timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : currentDate(),
3520
3604
  modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : model.modelId
3521
3605
  };
@@ -3548,8 +3632,16 @@ async function generateText({
3548
3632
  }
3549
3633
  })
3550
3634
  );
3551
- currentToolCalls = ((_a12 = currentModelResponse.toolCalls) != null ? _a12 : []).map(
3552
- (modelToolCall) => parseToolCall({ toolCall: modelToolCall, tools })
3635
+ currentToolCalls = await Promise.all(
3636
+ ((_a14 = currentModelResponse.toolCalls) != null ? _a14 : []).map(
3637
+ (toolCall) => parseToolCall({
3638
+ toolCall,
3639
+ tools,
3640
+ repairToolCall,
3641
+ system,
3642
+ messages: stepInputMessages
3643
+ })
3644
+ )
3553
3645
  );
3554
3646
  currentToolResults = tools == null ? [] : await executeTools({
3555
3647
  toolCalls: currentToolCalls,
@@ -3695,25 +3787,33 @@ async function executeTools({
3695
3787
  }),
3696
3788
  tracer,
3697
3789
  fn: async (span) => {
3698
- const result2 = await tool2.execute(args, {
3699
- toolCallId,
3700
- messages,
3701
- abortSignal
3702
- });
3703
3790
  try {
3704
- span.setAttributes(
3705
- selectTelemetryAttributes({
3706
- telemetry,
3707
- attributes: {
3708
- "ai.toolCall.result": {
3709
- output: () => JSON.stringify(result2)
3791
+ const result2 = await tool2.execute(args, {
3792
+ toolCallId,
3793
+ messages,
3794
+ abortSignal
3795
+ });
3796
+ try {
3797
+ span.setAttributes(
3798
+ selectTelemetryAttributes({
3799
+ telemetry,
3800
+ attributes: {
3801
+ "ai.toolCall.result": {
3802
+ output: () => JSON.stringify(result2)
3803
+ }
3710
3804
  }
3711
- }
3712
- })
3713
- );
3714
- } catch (ignored) {
3805
+ })
3806
+ );
3807
+ } catch (ignored) {
3808
+ }
3809
+ return result2;
3810
+ } catch (error) {
3811
+ throw new ToolExecutionError({
3812
+ toolName,
3813
+ toolArgs: args,
3814
+ cause: error
3815
+ });
3715
3816
  }
3716
- return result2;
3717
3817
  }
3718
3818
  });
3719
3819
  return {
@@ -3745,9 +3845,49 @@ var DefaultGenerateTextResult = class {
3745
3845
  }
3746
3846
  };
3747
3847
 
3748
- // core/generate-text/stream-text.ts
3848
+ // core/generate-text/output.ts
3849
+ var output_exports = {};
3850
+ __export(output_exports, {
3851
+ object: () => object,
3852
+ text: () => text
3853
+ });
3749
3854
  var import_provider_utils9 = require("@ai-sdk/provider-utils");
3750
- var import_ui_utils7 = require("@ai-sdk/ui-utils");
3855
+ var import_ui_utils6 = require("@ai-sdk/ui-utils");
3856
+ var text = () => ({
3857
+ type: "text",
3858
+ responseFormat: () => ({ type: "text" }),
3859
+ injectIntoSystemPrompt({ system }) {
3860
+ return system;
3861
+ },
3862
+ parseOutput({ text: text2 }) {
3863
+ return text2;
3864
+ }
3865
+ });
3866
+ var object = ({
3867
+ schema: inputSchema
3868
+ }) => {
3869
+ const schema = (0, import_ui_utils6.asSchema)(inputSchema);
3870
+ return {
3871
+ type: "object",
3872
+ responseFormat: ({ model }) => ({
3873
+ type: "json",
3874
+ schema: model.supportsStructuredOutputs ? schema.jsonSchema : void 0
3875
+ }),
3876
+ injectIntoSystemPrompt({ system, model }) {
3877
+ return model.supportsStructuredOutputs ? system : injectJsonInstruction({
3878
+ prompt: system,
3879
+ schema: schema.jsonSchema
3880
+ });
3881
+ },
3882
+ parseOutput({ text: text2 }) {
3883
+ return (0, import_provider_utils9.parseJSON)({ text: text2, schema });
3884
+ }
3885
+ };
3886
+ };
3887
+
3888
+ // core/generate-text/stream-text.ts
3889
+ var import_provider_utils10 = require("@ai-sdk/provider-utils");
3890
+ var import_ui_utils8 = require("@ai-sdk/ui-utils");
3751
3891
 
3752
3892
  // core/util/merge-streams.ts
3753
3893
  function mergeStreams(stream1, stream2) {
@@ -3838,15 +3978,17 @@ function mergeStreams(stream1, stream2) {
3838
3978
  }
3839
3979
 
3840
3980
  // core/generate-text/run-tools-transformation.ts
3841
- var import_ui_utils6 = require("@ai-sdk/ui-utils");
3981
+ var import_ui_utils7 = require("@ai-sdk/ui-utils");
3842
3982
  function runToolsTransformation({
3843
3983
  tools,
3844
3984
  generatorStream,
3845
3985
  toolCallStreaming,
3846
3986
  tracer,
3847
3987
  telemetry,
3988
+ system,
3848
3989
  messages,
3849
- abortSignal
3990
+ abortSignal,
3991
+ repairToolCall
3850
3992
  }) {
3851
3993
  let toolResultsStreamController = null;
3852
3994
  const toolResultsStream = new ReadableStream({
@@ -3867,7 +4009,7 @@ function runToolsTransformation({
3867
4009
  }
3868
4010
  }
3869
4011
  const forwardStream = new TransformStream({
3870
- transform(chunk, controller) {
4012
+ async transform(chunk, controller) {
3871
4013
  const chunkType = chunk.type;
3872
4014
  switch (chunkType) {
3873
4015
  case "text-delta":
@@ -3916,13 +4058,16 @@ function runToolsTransformation({
3916
4058
  break;
3917
4059
  }
3918
4060
  try {
3919
- const toolCall = parseToolCall({
4061
+ const toolCall = await parseToolCall({
3920
4062
  toolCall: chunk,
3921
- tools
4063
+ tools,
4064
+ repairToolCall,
4065
+ system,
4066
+ messages
3922
4067
  });
3923
4068
  controller.enqueue(toolCall);
3924
4069
  if (tool2.execute != null) {
3925
- const toolExecutionId = (0, import_ui_utils6.generateId)();
4070
+ const toolExecutionId = (0, import_ui_utils7.generateId)();
3926
4071
  outstandingToolResults.add(toolExecutionId);
3927
4072
  recordSpan({
3928
4073
  name: "ai.toolCall",
@@ -3971,7 +4116,11 @@ function runToolsTransformation({
3971
4116
  (error) => {
3972
4117
  toolResultsStreamController.enqueue({
3973
4118
  type: "error",
3974
- error
4119
+ error: new ToolExecutionError({
4120
+ toolName: toolCall.toolName,
4121
+ toolArgs: toolCall.args,
4122
+ cause: error
4123
+ })
3975
4124
  });
3976
4125
  outstandingToolResults.delete(toolExecutionId);
3977
4126
  attemptClose();
@@ -4036,7 +4185,7 @@ function runToolsTransformation({
4036
4185
  }
4037
4186
 
4038
4187
  // core/generate-text/stream-text.ts
4039
- var originalGenerateId4 = (0, import_provider_utils9.createIdGenerator)({ prefix: "aitxt", size: 24 });
4188
+ var originalGenerateId4 = (0, import_provider_utils10.createIdGenerator)({ prefix: "aitxt", size: 24 });
4040
4189
  function streamText({
4041
4190
  model,
4042
4191
  tools,
@@ -4053,6 +4202,7 @@ function streamText({
4053
4202
  experimental_providerMetadata: providerMetadata,
4054
4203
  experimental_toolCallStreaming: toolCallStreaming = false,
4055
4204
  experimental_activeTools: activeTools,
4205
+ experimental_repairToolCall: repairToolCall,
4056
4206
  onChunk,
4057
4207
  onFinish,
4058
4208
  onStepFinish,
@@ -4077,6 +4227,7 @@ function streamText({
4077
4227
  toolChoice,
4078
4228
  toolCallStreaming,
4079
4229
  activeTools,
4230
+ repairToolCall,
4080
4231
  maxSteps,
4081
4232
  continueSteps,
4082
4233
  providerMetadata,
@@ -4103,6 +4254,7 @@ var DefaultStreamTextResult = class {
4103
4254
  toolChoice,
4104
4255
  toolCallStreaming,
4105
4256
  activeTools,
4257
+ repairToolCall,
4106
4258
  maxSteps,
4107
4259
  continueSteps,
4108
4260
  providerMetadata,
@@ -4214,8 +4366,8 @@ var DefaultStreamTextResult = class {
4214
4366
  "ai.prompt.tools": {
4215
4367
  // convert the language model level tools:
4216
4368
  input: () => {
4217
- var _a11;
4218
- return (_a11 = mode.tools) == null ? void 0 : _a11.map((tool2) => JSON.stringify(tool2));
4369
+ var _a13;
4370
+ return (_a13 = mode.tools) == null ? void 0 : _a13.map((tool2) => JSON.stringify(tool2));
4219
4371
  }
4220
4372
  },
4221
4373
  "ai.prompt.toolChoice": {
@@ -4257,7 +4409,9 @@ var DefaultStreamTextResult = class {
4257
4409
  toolCallStreaming,
4258
4410
  tracer,
4259
4411
  telemetry,
4412
+ system,
4260
4413
  messages: stepInputMessages,
4414
+ repairToolCall,
4261
4415
  abortSignal
4262
4416
  });
4263
4417
  const stepRequest = request != null ? request : {};
@@ -4298,7 +4452,7 @@ var DefaultStreamTextResult = class {
4298
4452
  transformedStream.pipeThrough(
4299
4453
  new TransformStream({
4300
4454
  async transform(chunk, controller) {
4301
- var _a11, _b, _c;
4455
+ var _a13, _b, _c;
4302
4456
  if (stepFirstChunk) {
4303
4457
  const msToFirstChunk = now2() - startTimestampMs;
4304
4458
  stepFirstChunk = false;
@@ -4352,7 +4506,7 @@ var DefaultStreamTextResult = class {
4352
4506
  }
4353
4507
  case "response-metadata": {
4354
4508
  stepResponse = {
4355
- id: (_a11 = chunk.id) != null ? _a11 : stepResponse.id,
4509
+ id: (_a13 = chunk.id) != null ? _a13 : stepResponse.id,
4356
4510
  timestamp: (_b = chunk.timestamp) != null ? _b : stepResponse.timestamp,
4357
4511
  modelId: (_c = chunk.modelId) != null ? _c : stepResponse.modelId
4358
4512
  };
@@ -4599,7 +4753,8 @@ var DefaultStreamTextResult = class {
4599
4753
  self.stitchableStream.addStream(
4600
4754
  new ReadableStream({
4601
4755
  start(controller) {
4602
- controller.error(error);
4756
+ controller.enqueue({ type: "error", error });
4757
+ controller.close();
4603
4758
  }
4604
4759
  })
4605
4760
  );
@@ -4668,7 +4823,7 @@ var DefaultStreamTextResult = class {
4668
4823
  });
4669
4824
  }
4670
4825
  toDataStreamInternal({
4671
- getErrorMessage: getErrorMessage3 = () => "An error occurred.",
4826
+ getErrorMessage: getErrorMessage5 = () => "An error occurred.",
4672
4827
  // mask error messages for safety by default
4673
4828
  sendUsage = true
4674
4829
  } = {}) {
@@ -4686,12 +4841,12 @@ var DefaultStreamTextResult = class {
4686
4841
  const chunkType = chunk.type;
4687
4842
  switch (chunkType) {
4688
4843
  case "text-delta": {
4689
- controller.enqueue((0, import_ui_utils7.formatDataStreamPart)("text", chunk.textDelta));
4844
+ controller.enqueue((0, import_ui_utils8.formatDataStreamPart)("text", chunk.textDelta));
4690
4845
  break;
4691
4846
  }
4692
4847
  case "tool-call-streaming-start": {
4693
4848
  controller.enqueue(
4694
- (0, import_ui_utils7.formatDataStreamPart)("tool_call_streaming_start", {
4849
+ (0, import_ui_utils8.formatDataStreamPart)("tool_call_streaming_start", {
4695
4850
  toolCallId: chunk.toolCallId,
4696
4851
  toolName: chunk.toolName
4697
4852
  })
@@ -4700,7 +4855,7 @@ var DefaultStreamTextResult = class {
4700
4855
  }
4701
4856
  case "tool-call-delta": {
4702
4857
  controller.enqueue(
4703
- (0, import_ui_utils7.formatDataStreamPart)("tool_call_delta", {
4858
+ (0, import_ui_utils8.formatDataStreamPart)("tool_call_delta", {
4704
4859
  toolCallId: chunk.toolCallId,
4705
4860
  argsTextDelta: chunk.argsTextDelta
4706
4861
  })
@@ -4709,7 +4864,7 @@ var DefaultStreamTextResult = class {
4709
4864
  }
4710
4865
  case "tool-call": {
4711
4866
  controller.enqueue(
4712
- (0, import_ui_utils7.formatDataStreamPart)("tool_call", {
4867
+ (0, import_ui_utils8.formatDataStreamPart)("tool_call", {
4713
4868
  toolCallId: chunk.toolCallId,
4714
4869
  toolName: chunk.toolName,
4715
4870
  args: chunk.args
@@ -4719,7 +4874,7 @@ var DefaultStreamTextResult = class {
4719
4874
  }
4720
4875
  case "tool-result": {
4721
4876
  controller.enqueue(
4722
- (0, import_ui_utils7.formatDataStreamPart)("tool_result", {
4877
+ (0, import_ui_utils8.formatDataStreamPart)("tool_result", {
4723
4878
  toolCallId: chunk.toolCallId,
4724
4879
  result: chunk.result
4725
4880
  })
@@ -4728,13 +4883,13 @@ var DefaultStreamTextResult = class {
4728
4883
  }
4729
4884
  case "error": {
4730
4885
  controller.enqueue(
4731
- (0, import_ui_utils7.formatDataStreamPart)("error", getErrorMessage3(chunk.error))
4886
+ (0, import_ui_utils8.formatDataStreamPart)("error", getErrorMessage5(chunk.error))
4732
4887
  );
4733
4888
  break;
4734
4889
  }
4735
4890
  case "step-finish": {
4736
4891
  controller.enqueue(
4737
- (0, import_ui_utils7.formatDataStreamPart)("finish_step", {
4892
+ (0, import_ui_utils8.formatDataStreamPart)("finish_step", {
4738
4893
  finishReason: chunk.finishReason,
4739
4894
  usage: sendUsage ? {
4740
4895
  promptTokens: chunk.usage.promptTokens,
@@ -4747,7 +4902,7 @@ var DefaultStreamTextResult = class {
4747
4902
  }
4748
4903
  case "finish": {
4749
4904
  controller.enqueue(
4750
- (0, import_ui_utils7.formatDataStreamPart)("finish_message", {
4905
+ (0, import_ui_utils8.formatDataStreamPart)("finish_message", {
4751
4906
  finishReason: chunk.finishReason,
4752
4907
  usage: sendUsage ? {
4753
4908
  promptTokens: chunk.usage.promptTokens,
@@ -4771,7 +4926,7 @@ var DefaultStreamTextResult = class {
4771
4926
  statusText,
4772
4927
  headers,
4773
4928
  data,
4774
- getErrorMessage: getErrorMessage3,
4929
+ getErrorMessage: getErrorMessage5,
4775
4930
  sendUsage
4776
4931
  } = {}) {
4777
4932
  writeToServerResponse({
@@ -4782,7 +4937,7 @@ var DefaultStreamTextResult = class {
4782
4937
  contentType: "text/plain; charset=utf-8",
4783
4938
  dataStreamVersion: "v1"
4784
4939
  }),
4785
- stream: this.toDataStream({ data, getErrorMessage: getErrorMessage3, sendUsage })
4940
+ stream: this.toDataStream({ data, getErrorMessage: getErrorMessage5, sendUsage })
4786
4941
  });
4787
4942
  }
4788
4943
  pipeTextStreamToResponse(response, init) {
@@ -4816,11 +4971,11 @@ var DefaultStreamTextResult = class {
4816
4971
  status,
4817
4972
  statusText,
4818
4973
  data,
4819
- getErrorMessage: getErrorMessage3,
4974
+ getErrorMessage: getErrorMessage5,
4820
4975
  sendUsage
4821
4976
  } = {}) {
4822
4977
  return new Response(
4823
- this.toDataStream({ data, getErrorMessage: getErrorMessage3, sendUsage }),
4978
+ this.toDataStream({ data, getErrorMessage: getErrorMessage5, sendUsage }),
4824
4979
  {
4825
4980
  status,
4826
4981
  statusText,
@@ -4832,9 +4987,9 @@ var DefaultStreamTextResult = class {
4832
4987
  );
4833
4988
  }
4834
4989
  toTextStreamResponse(init) {
4835
- var _a11;
4990
+ var _a13;
4836
4991
  return new Response(this.textStream.pipeThrough(new TextEncoderStream()), {
4837
- status: (_a11 = init == null ? void 0 : init.status) != null ? _a11 : 200,
4992
+ status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
4838
4993
  headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
4839
4994
  contentType: "text/plain; charset=utf-8"
4840
4995
  })
@@ -4842,46 +4997,6 @@ var DefaultStreamTextResult = class {
4842
4997
  }
4843
4998
  };
4844
4999
 
4845
- // core/generate-text/output.ts
4846
- var output_exports = {};
4847
- __export(output_exports, {
4848
- object: () => object,
4849
- text: () => text
4850
- });
4851
- var import_provider_utils10 = require("@ai-sdk/provider-utils");
4852
- var import_ui_utils8 = require("@ai-sdk/ui-utils");
4853
- var text = () => ({
4854
- type: "text",
4855
- responseFormat: () => ({ type: "text" }),
4856
- injectIntoSystemPrompt({ system }) {
4857
- return system;
4858
- },
4859
- parseOutput({ text: text2 }) {
4860
- return text2;
4861
- }
4862
- });
4863
- var object = ({
4864
- schema: inputSchema
4865
- }) => {
4866
- const schema = (0, import_ui_utils8.asSchema)(inputSchema);
4867
- return {
4868
- type: "object",
4869
- responseFormat: ({ model }) => ({
4870
- type: "json",
4871
- schema: model.supportsStructuredOutputs ? schema.jsonSchema : void 0
4872
- }),
4873
- injectIntoSystemPrompt({ system, model }) {
4874
- return model.supportsStructuredOutputs ? system : injectJsonInstruction({
4875
- prompt: system,
4876
- schema: schema.jsonSchema
4877
- });
4878
- },
4879
- parseOutput({ text: text2 }) {
4880
- return (0, import_provider_utils10.parseJSON)({ text: text2, schema });
4881
- }
4882
- };
4883
- };
4884
-
4885
5000
  // core/middleware/wrap-language-model.ts
4886
5001
  var experimental_wrapLanguageModel = ({
4887
5002
  model,
@@ -4917,7 +5032,7 @@ var experimental_wrapLanguageModel = ({
4917
5032
  };
4918
5033
 
4919
5034
  // core/registry/custom-provider.ts
4920
- var import_provider14 = require("@ai-sdk/provider");
5035
+ var import_provider16 = require("@ai-sdk/provider");
4921
5036
  function experimental_customProvider({
4922
5037
  languageModels,
4923
5038
  textEmbeddingModels,
@@ -4931,7 +5046,7 @@ function experimental_customProvider({
4931
5046
  if (fallbackProvider) {
4932
5047
  return fallbackProvider.languageModel(modelId);
4933
5048
  }
4934
- throw new import_provider14.NoSuchModelError({ modelId, modelType: "languageModel" });
5049
+ throw new import_provider16.NoSuchModelError({ modelId, modelType: "languageModel" });
4935
5050
  },
4936
5051
  textEmbeddingModel(modelId) {
4937
5052
  if (textEmbeddingModels != null && modelId in textEmbeddingModels) {
@@ -4940,18 +5055,18 @@ function experimental_customProvider({
4940
5055
  if (fallbackProvider) {
4941
5056
  return fallbackProvider.textEmbeddingModel(modelId);
4942
5057
  }
4943
- throw new import_provider14.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
5058
+ throw new import_provider16.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
4944
5059
  }
4945
5060
  };
4946
5061
  }
4947
5062
 
4948
5063
  // core/registry/no-such-provider-error.ts
4949
- var import_provider15 = require("@ai-sdk/provider");
4950
- var name10 = "AI_NoSuchProviderError";
4951
- var marker10 = `vercel.ai.error.${name10}`;
4952
- var symbol10 = Symbol.for(marker10);
4953
- var _a10;
4954
- var NoSuchProviderError = class extends import_provider15.NoSuchModelError {
5064
+ var import_provider17 = require("@ai-sdk/provider");
5065
+ var name12 = "AI_NoSuchProviderError";
5066
+ var marker12 = `vercel.ai.error.${name12}`;
5067
+ var symbol12 = Symbol.for(marker12);
5068
+ var _a12;
5069
+ var NoSuchProviderError = class extends import_provider17.NoSuchModelError {
4955
5070
  constructor({
4956
5071
  modelId,
4957
5072
  modelType,
@@ -4959,19 +5074,19 @@ var NoSuchProviderError = class extends import_provider15.NoSuchModelError {
4959
5074
  availableProviders,
4960
5075
  message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
4961
5076
  }) {
4962
- super({ errorName: name10, modelId, modelType, message });
4963
- this[_a10] = true;
5077
+ super({ errorName: name12, modelId, modelType, message });
5078
+ this[_a12] = true;
4964
5079
  this.providerId = providerId;
4965
5080
  this.availableProviders = availableProviders;
4966
5081
  }
4967
5082
  static isInstance(error) {
4968
- return import_provider15.AISDKError.hasMarker(error, marker10);
5083
+ return import_provider17.AISDKError.hasMarker(error, marker12);
4969
5084
  }
4970
5085
  };
4971
- _a10 = symbol10;
5086
+ _a12 = symbol12;
4972
5087
 
4973
5088
  // core/registry/provider-registry.ts
4974
- var import_provider16 = require("@ai-sdk/provider");
5089
+ var import_provider18 = require("@ai-sdk/provider");
4975
5090
  function experimental_createProviderRegistry(providers) {
4976
5091
  const registry = new DefaultProviderRegistry();
4977
5092
  for (const [id, provider] of Object.entries(providers)) {
@@ -5001,7 +5116,7 @@ var DefaultProviderRegistry = class {
5001
5116
  splitId(id, modelType) {
5002
5117
  const index = id.indexOf(":");
5003
5118
  if (index === -1) {
5004
- throw new import_provider16.NoSuchModelError({
5119
+ throw new import_provider18.NoSuchModelError({
5005
5120
  modelId: id,
5006
5121
  modelType,
5007
5122
  message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId:modelId")`
@@ -5010,21 +5125,21 @@ var DefaultProviderRegistry = class {
5010
5125
  return [id.slice(0, index), id.slice(index + 1)];
5011
5126
  }
5012
5127
  languageModel(id) {
5013
- var _a11, _b;
5128
+ var _a13, _b;
5014
5129
  const [providerId, modelId] = this.splitId(id, "languageModel");
5015
- const model = (_b = (_a11 = this.getProvider(providerId)).languageModel) == null ? void 0 : _b.call(_a11, modelId);
5130
+ const model = (_b = (_a13 = this.getProvider(providerId)).languageModel) == null ? void 0 : _b.call(_a13, modelId);
5016
5131
  if (model == null) {
5017
- throw new import_provider16.NoSuchModelError({ modelId: id, modelType: "languageModel" });
5132
+ throw new import_provider18.NoSuchModelError({ modelId: id, modelType: "languageModel" });
5018
5133
  }
5019
5134
  return model;
5020
5135
  }
5021
5136
  textEmbeddingModel(id) {
5022
- var _a11;
5137
+ var _a13;
5023
5138
  const [providerId, modelId] = this.splitId(id, "textEmbeddingModel");
5024
5139
  const provider = this.getProvider(providerId);
5025
- const model = (_a11 = provider.textEmbeddingModel) == null ? void 0 : _a11.call(provider, modelId);
5140
+ const model = (_a13 = provider.textEmbeddingModel) == null ? void 0 : _a13.call(provider, modelId);
5026
5141
  if (model == null) {
5027
- throw new import_provider16.NoSuchModelError({
5142
+ throw new import_provider18.NoSuchModelError({
5028
5143
  modelId: id,
5029
5144
  modelType: "textEmbeddingModel"
5030
5145
  });
@@ -5068,7 +5183,7 @@ var import_ui_utils10 = require("@ai-sdk/ui-utils");
5068
5183
  function AssistantResponse({ threadId, messageId }, process2) {
5069
5184
  const stream = new ReadableStream({
5070
5185
  async start(controller) {
5071
- var _a11;
5186
+ var _a13;
5072
5187
  const textEncoder = new TextEncoder();
5073
5188
  const sendMessage = (message) => {
5074
5189
  controller.enqueue(
@@ -5090,7 +5205,7 @@ function AssistantResponse({ threadId, messageId }, process2) {
5090
5205
  );
5091
5206
  };
5092
5207
  const forwardStream = async (stream2) => {
5093
- var _a12, _b;
5208
+ var _a14, _b;
5094
5209
  let result = void 0;
5095
5210
  for await (const value of stream2) {
5096
5211
  switch (value.event) {
@@ -5107,7 +5222,7 @@ function AssistantResponse({ threadId, messageId }, process2) {
5107
5222
  break;
5108
5223
  }
5109
5224
  case "thread.message.delta": {
5110
- const content = (_a12 = value.data.delta.content) == null ? void 0 : _a12[0];
5225
+ const content = (_a14 = value.data.delta.content) == null ? void 0 : _a14[0];
5111
5226
  if ((content == null ? void 0 : content.type) === "text" && ((_b = content.text) == null ? void 0 : _b.value) != null) {
5112
5227
  controller.enqueue(
5113
5228
  textEncoder.encode(
@@ -5141,7 +5256,7 @@ function AssistantResponse({ threadId, messageId }, process2) {
5141
5256
  forwardStream
5142
5257
  });
5143
5258
  } catch (error) {
5144
- sendError((_a11 = error.message) != null ? _a11 : `${error}`);
5259
+ sendError((_a13 = error.message) != null ? _a13 : `${error}`);
5145
5260
  } finally {
5146
5261
  controller.close();
5147
5262
  }
@@ -5202,7 +5317,7 @@ function toDataStreamInternal(stream, callbacks) {
5202
5317
  return stream.pipeThrough(
5203
5318
  new TransformStream({
5204
5319
  transform: async (value, controller) => {
5205
- var _a11;
5320
+ var _a13;
5206
5321
  if (typeof value === "string") {
5207
5322
  controller.enqueue(value);
5208
5323
  return;
@@ -5210,7 +5325,7 @@ function toDataStreamInternal(stream, callbacks) {
5210
5325
  if ("event" in value) {
5211
5326
  if (value.event === "on_chat_model_stream") {
5212
5327
  forwardAIMessageChunk(
5213
- (_a11 = value.data) == null ? void 0 : _a11.chunk,
5328
+ (_a13 = value.data) == null ? void 0 : _a13.chunk,
5214
5329
  controller
5215
5330
  );
5216
5331
  }
@@ -5233,7 +5348,7 @@ function toDataStream(stream, callbacks) {
5233
5348
  );
5234
5349
  }
5235
5350
  function toDataStreamResponse(stream, options) {
5236
- var _a11;
5351
+ var _a13;
5237
5352
  const dataStream = toDataStreamInternal(
5238
5353
  stream,
5239
5354
  options == null ? void 0 : options.callbacks
@@ -5242,7 +5357,7 @@ function toDataStreamResponse(stream, options) {
5242
5357
  const init = options == null ? void 0 : options.init;
5243
5358
  const responseStream = data ? mergeStreams(data.stream, dataStream) : dataStream;
5244
5359
  return new Response(responseStream, {
5245
- status: (_a11 = init == null ? void 0 : init.status) != null ? _a11 : 200,
5360
+ status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
5246
5361
  statusText: init == null ? void 0 : init.statusText,
5247
5362
  headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
5248
5363
  contentType: "text/plain; charset=utf-8",
@@ -5297,14 +5412,14 @@ function toDataStream2(stream, callbacks) {
5297
5412
  );
5298
5413
  }
5299
5414
  function toDataStreamResponse2(stream, options = {}) {
5300
- var _a11;
5415
+ var _a13;
5301
5416
  const { init, data, callbacks } = options;
5302
5417
  const dataStream = toDataStreamInternal2(stream, callbacks).pipeThrough(
5303
5418
  new TextEncoderStream()
5304
5419
  );
5305
5420
  const responseStream = data ? mergeStreams(data.stream, dataStream) : dataStream;
5306
5421
  return new Response(responseStream, {
5307
- status: (_a11 = init == null ? void 0 : init.status) != null ? _a11 : 200,
5422
+ status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
5308
5423
  statusText: init == null ? void 0 : init.statusText,
5309
5424
  headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
5310
5425
  contentType: "text/plain; charset=utf-8",
@@ -5421,6 +5536,8 @@ var StreamData = class {
5421
5536
  Output,
5422
5537
  RetryError,
5423
5538
  StreamData,
5539
+ ToolCallRepairError,
5540
+ ToolExecutionError,
5424
5541
  TypeValidationError,
5425
5542
  UnsupportedFunctionalityError,
5426
5543
  convertToCoreMessages,