ai 4.0.12 → 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 name12 in all)
8
- __defProp(target, name12, { get: all[name12], 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,33 +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_provider14.AISDKError,
24
- APICallError: () => import_provider14.APICallError,
23
+ AISDKError: () => import_provider15.AISDKError,
24
+ APICallError: () => import_provider15.APICallError,
25
25
  AssistantResponse: () => AssistantResponse,
26
26
  DownloadError: () => DownloadError,
27
- EmptyResponseBodyError: () => import_provider14.EmptyResponseBodyError,
27
+ EmptyResponseBodyError: () => import_provider15.EmptyResponseBodyError,
28
28
  InvalidArgumentError: () => InvalidArgumentError,
29
29
  InvalidDataContentError: () => InvalidDataContentError,
30
30
  InvalidMessageRoleError: () => InvalidMessageRoleError,
31
- InvalidPromptError: () => import_provider14.InvalidPromptError,
32
- InvalidResponseDataError: () => import_provider14.InvalidResponseDataError,
31
+ InvalidPromptError: () => import_provider15.InvalidPromptError,
32
+ InvalidResponseDataError: () => import_provider15.InvalidResponseDataError,
33
33
  InvalidToolArgumentsError: () => InvalidToolArgumentsError,
34
- JSONParseError: () => import_provider14.JSONParseError,
34
+ JSONParseError: () => import_provider15.JSONParseError,
35
35
  LangChainAdapter: () => langchain_adapter_exports,
36
36
  LlamaIndexAdapter: () => llamaindex_adapter_exports,
37
- LoadAPIKeyError: () => import_provider14.LoadAPIKeyError,
37
+ LoadAPIKeyError: () => import_provider15.LoadAPIKeyError,
38
38
  MessageConversionError: () => MessageConversionError,
39
- NoContentGeneratedError: () => import_provider14.NoContentGeneratedError,
39
+ NoContentGeneratedError: () => import_provider15.NoContentGeneratedError,
40
40
  NoObjectGeneratedError: () => NoObjectGeneratedError,
41
- NoSuchModelError: () => import_provider14.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
+ ToolCallRepairError: () => ToolCallRepairError,
47
48
  ToolExecutionError: () => ToolExecutionError,
48
- TypeValidationError: () => import_provider14.TypeValidationError,
49
- UnsupportedFunctionalityError: () => import_provider14.UnsupportedFunctionalityError,
49
+ TypeValidationError: () => import_provider15.TypeValidationError,
50
+ UnsupportedFunctionalityError: () => import_provider15.UnsupportedFunctionalityError,
50
51
  convertToCoreMessages: () => convertToCoreMessages,
51
52
  cosineSimilarity: () => cosineSimilarity,
52
53
  createDataStream: () => createDataStream,
@@ -407,7 +408,7 @@ function getBaseTelemetryAttributes({
407
408
  telemetry,
408
409
  headers
409
410
  }) {
410
- var _a12;
411
+ var _a13;
411
412
  return {
412
413
  "ai.model.provider": model.provider,
413
414
  "ai.model.id": model.modelId,
@@ -417,7 +418,7 @@ function getBaseTelemetryAttributes({
417
418
  return attributes;
418
419
  }, {}),
419
420
  // add metadata as attributes:
420
- ...Object.entries((_a12 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a12 : {}).reduce(
421
+ ...Object.entries((_a13 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a13 : {}).reduce(
421
422
  (attributes, [key, value]) => {
422
423
  attributes[`ai.telemetry.metadata.${key}`] = value;
423
424
  return attributes;
@@ -442,7 +443,7 @@ var noopTracer = {
442
443
  startSpan() {
443
444
  return noopSpan;
444
445
  },
445
- startActiveSpan(name12, arg1, arg2, arg3) {
446
+ startActiveSpan(name13, arg1, arg2, arg3) {
446
447
  if (typeof arg1 === "function") {
447
448
  return arg1(noopSpan);
448
449
  }
@@ -512,13 +513,13 @@ function getTracer({
512
513
  // core/telemetry/record-span.ts
513
514
  var import_api2 = require("@opentelemetry/api");
514
515
  function recordSpan({
515
- name: name12,
516
+ name: name13,
516
517
  tracer,
517
518
  attributes,
518
519
  fn,
519
520
  endWhenDone = true
520
521
  }) {
521
- return tracer.startActiveSpan(name12, { attributes }, async (span) => {
522
+ return tracer.startActiveSpan(name13, { attributes }, async (span) => {
522
523
  try {
523
524
  const result = await fn(span);
524
525
  if (endWhenDone) {
@@ -626,14 +627,14 @@ async function embed({
626
627
  }),
627
628
  tracer,
628
629
  fn: async (doEmbedSpan) => {
629
- var _a12;
630
+ var _a13;
630
631
  const modelResponse = await model.doEmbed({
631
632
  values: [value],
632
633
  abortSignal,
633
634
  headers
634
635
  });
635
636
  const embedding2 = modelResponse.embeddings[0];
636
- const usage2 = (_a12 = modelResponse.usage) != null ? _a12 : { tokens: NaN };
637
+ const usage2 = (_a13 = modelResponse.usage) != null ? _a13 : { tokens: NaN };
637
638
  doEmbedSpan.setAttributes(
638
639
  selectTelemetryAttributes({
639
640
  telemetry,
@@ -743,14 +744,14 @@ async function embedMany({
743
744
  }),
744
745
  tracer,
745
746
  fn: async (doEmbedSpan) => {
746
- var _a12;
747
+ var _a13;
747
748
  const modelResponse = await model.doEmbed({
748
749
  values,
749
750
  abortSignal,
750
751
  headers
751
752
  });
752
753
  const embeddings3 = modelResponse.embeddings;
753
- const usage2 = (_a12 = modelResponse.usage) != null ? _a12 : { tokens: NaN };
754
+ const usage2 = (_a13 = modelResponse.usage) != null ? _a13 : { tokens: NaN };
754
755
  doEmbedSpan.setAttributes(
755
756
  selectTelemetryAttributes({
756
757
  telemetry,
@@ -802,14 +803,14 @@ async function embedMany({
802
803
  }),
803
804
  tracer,
804
805
  fn: async (doEmbedSpan) => {
805
- var _a12;
806
+ var _a13;
806
807
  const modelResponse = await model.doEmbed({
807
808
  values: chunk,
808
809
  abortSignal,
809
810
  headers
810
811
  });
811
812
  const embeddings2 = modelResponse.embeddings;
812
- const usage2 = (_a12 = modelResponse.usage) != null ? _a12 : { tokens: NaN };
813
+ const usage2 = (_a13 = modelResponse.usage) != null ? _a13 : { tokens: NaN };
813
814
  doEmbedSpan.setAttributes(
814
815
  selectTelemetryAttributes({
815
816
  telemetry,
@@ -889,7 +890,7 @@ async function download({
889
890
  url,
890
891
  fetchImplementation = fetch
891
892
  }) {
892
- var _a12;
893
+ var _a13;
893
894
  const urlText = url.toString();
894
895
  try {
895
896
  const response = await fetchImplementation(urlText);
@@ -902,7 +903,7 @@ async function download({
902
903
  }
903
904
  return {
904
905
  data: new Uint8Array(await response.arrayBuffer()),
905
- mimeType: (_a12 = response.headers.get("content-type")) != null ? _a12 : void 0
906
+ mimeType: (_a13 = response.headers.get("content-type")) != null ? _a13 : void 0
906
907
  };
907
908
  } catch (error) {
908
909
  if (DownloadError.isInstance(error)) {
@@ -962,8 +963,8 @@ var dataContentSchema = import_zod.z.union([
962
963
  import_zod.z.custom(
963
964
  // Buffer might not be available in some environments such as CloudFlare:
964
965
  (value) => {
965
- var _a12, _b;
966
- return (_b = (_a12 = globalThis.Buffer) == null ? void 0 : _a12.isBuffer(value)) != null ? _b : false;
966
+ var _a13, _b;
967
+ return (_b = (_a13 = globalThis.Buffer) == null ? void 0 : _a13.isBuffer(value)) != null ? _b : false;
967
968
  },
968
969
  { message: "Must be a Buffer" }
969
970
  )
@@ -1471,7 +1472,7 @@ function detectSingleMessageCharacteristics(message) {
1471
1472
 
1472
1473
  // core/prompt/attachments-to-parts.ts
1473
1474
  function attachmentsToParts(attachments) {
1474
- var _a12, _b, _c;
1475
+ var _a13, _b, _c;
1475
1476
  const parts = [];
1476
1477
  for (const attachment of attachments) {
1477
1478
  let url;
@@ -1483,7 +1484,7 @@ function attachmentsToParts(attachments) {
1483
1484
  switch (url.protocol) {
1484
1485
  case "http:":
1485
1486
  case "https:": {
1486
- if ((_a12 = attachment.contentType) == null ? void 0 : _a12.startsWith("image/")) {
1487
+ if ((_a13 = attachment.contentType) == null ? void 0 : _a13.startsWith("image/")) {
1487
1488
  parts.push({ type: "image", image: url });
1488
1489
  } else {
1489
1490
  if (!attachment.contentType) {
@@ -1569,8 +1570,8 @@ _a6 = symbol6;
1569
1570
 
1570
1571
  // core/prompt/convert-to-core-messages.ts
1571
1572
  function convertToCoreMessages(messages, options) {
1572
- var _a12;
1573
- const tools = (_a12 = options == null ? void 0 : options.tools) != null ? _a12 : {};
1573
+ var _a13;
1574
+ const tools = (_a13 = options == null ? void 0 : options.tools) != null ? _a13 : {};
1574
1575
  const coreMessages = [];
1575
1576
  for (const message of messages) {
1576
1577
  const { role, content, toolInvocations, experimental_attachments } = message;
@@ -1852,7 +1853,7 @@ var arrayOutputStrategy = (schema) => {
1852
1853
  additionalProperties: false
1853
1854
  },
1854
1855
  validatePartialResult({ value, latestObject, isFirstDelta, isFinalDelta }) {
1855
- var _a12;
1856
+ var _a13;
1856
1857
  if (!(0, import_provider10.isJSONObject)(value) || !(0, import_provider10.isJSONArray)(value.elements)) {
1857
1858
  return {
1858
1859
  success: false,
@@ -1875,7 +1876,7 @@ var arrayOutputStrategy = (schema) => {
1875
1876
  }
1876
1877
  resultArray.push(result.value);
1877
1878
  }
1878
- const publishedElementCount = (_a12 = latestObject == null ? void 0 : latestObject.length) != null ? _a12 : 0;
1879
+ const publishedElementCount = (_a13 = latestObject == null ? void 0 : latestObject.length) != null ? _a13 : 0;
1879
1880
  let textDelta = "";
1880
1881
  if (isFirstDelta) {
1881
1882
  textDelta += "[";
@@ -2207,7 +2208,7 @@ async function generateObject({
2207
2208
  }),
2208
2209
  tracer,
2209
2210
  fn: async (span) => {
2210
- var _a12, _b;
2211
+ var _a13, _b;
2211
2212
  if (mode === "auto" || mode == null) {
2212
2213
  mode = model.defaultObjectGenerationMode;
2213
2214
  }
@@ -2269,7 +2270,7 @@ async function generateObject({
2269
2270
  }),
2270
2271
  tracer,
2271
2272
  fn: async (span2) => {
2272
- var _a13, _b2, _c, _d, _e, _f;
2273
+ var _a14, _b2, _c, _d, _e, _f;
2273
2274
  const result2 = await model.doGenerate({
2274
2275
  mode: {
2275
2276
  type: "object-json",
@@ -2288,7 +2289,7 @@ async function generateObject({
2288
2289
  throw new NoObjectGeneratedError();
2289
2290
  }
2290
2291
  const responseData = {
2291
- id: (_b2 = (_a13 = result2.response) == null ? void 0 : _a13.id) != null ? _b2 : generateId3(),
2292
+ id: (_b2 = (_a14 = result2.response) == null ? void 0 : _a14.id) != null ? _b2 : generateId3(),
2292
2293
  timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
2293
2294
  modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId
2294
2295
  };
@@ -2323,7 +2324,7 @@ async function generateObject({
2323
2324
  rawResponse = generateResult.rawResponse;
2324
2325
  logprobs = generateResult.logprobs;
2325
2326
  resultProviderMetadata = generateResult.providerMetadata;
2326
- request = (_a12 = generateResult.request) != null ? _a12 : {};
2327
+ request = (_a13 = generateResult.request) != null ? _a13 : {};
2327
2328
  response = generateResult.responseData;
2328
2329
  break;
2329
2330
  }
@@ -2369,7 +2370,7 @@ async function generateObject({
2369
2370
  }),
2370
2371
  tracer,
2371
2372
  fn: async (span2) => {
2372
- var _a13, _b2, _c, _d, _e, _f, _g, _h;
2373
+ var _a14, _b2, _c, _d, _e, _f, _g, _h;
2373
2374
  const result2 = await model.doGenerate({
2374
2375
  mode: {
2375
2376
  type: "object-tool",
@@ -2387,7 +2388,7 @@ async function generateObject({
2387
2388
  abortSignal,
2388
2389
  headers
2389
2390
  });
2390
- const objectText = (_b2 = (_a13 = result2.toolCalls) == null ? void 0 : _a13[0]) == null ? void 0 : _b2.args;
2391
+ const objectText = (_b2 = (_a14 = result2.toolCalls) == null ? void 0 : _a14[0]) == null ? void 0 : _b2.args;
2391
2392
  if (objectText === void 0) {
2392
2393
  throw new NoObjectGeneratedError();
2393
2394
  }
@@ -2492,9 +2493,9 @@ var DefaultGenerateObjectResult = class {
2492
2493
  this.logprobs = options.logprobs;
2493
2494
  }
2494
2495
  toJsonResponse(init) {
2495
- var _a12;
2496
+ var _a13;
2496
2497
  return new Response(JSON.stringify(this.object), {
2497
- status: (_a12 = init == null ? void 0 : init.status) != null ? _a12 : 200,
2498
+ status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
2498
2499
  headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
2499
2500
  contentType: "application/json; charset=utf-8"
2500
2501
  })
@@ -2529,17 +2530,17 @@ var DelayedPromise = class {
2529
2530
  return this.promise;
2530
2531
  }
2531
2532
  resolve(value) {
2532
- var _a12;
2533
+ var _a13;
2533
2534
  this.status = { type: "resolved", value };
2534
2535
  if (this.promise) {
2535
- (_a12 = this._resolve) == null ? void 0 : _a12.call(this, value);
2536
+ (_a13 = this._resolve) == null ? void 0 : _a13.call(this, value);
2536
2537
  }
2537
2538
  }
2538
2539
  reject(error) {
2539
- var _a12;
2540
+ var _a13;
2540
2541
  this.status = { type: "rejected", error };
2541
2542
  if (this.promise) {
2542
- (_a12 = this._reject) == null ? void 0 : _a12.call(this, error);
2543
+ (_a13 = this._reject) == null ? void 0 : _a13.call(this, error);
2543
2544
  }
2544
2545
  }
2545
2546
  };
@@ -2628,8 +2629,8 @@ function createStitchableStream() {
2628
2629
 
2629
2630
  // core/util/now.ts
2630
2631
  function now() {
2631
- var _a12, _b;
2632
- return (_b = (_a12 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a12.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();
2633
2634
  }
2634
2635
 
2635
2636
  // core/generate-object/stream-object.ts
@@ -2918,7 +2919,7 @@ var DefaultStreamObjectResult = class {
2918
2919
  const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
2919
2920
  new TransformStream({
2920
2921
  async transform(chunk, controller) {
2921
- var _a12, _b, _c;
2922
+ var _a13, _b, _c;
2922
2923
  if (isFirstChunk) {
2923
2924
  const msToFirstChunk = now2() - startTimestampMs;
2924
2925
  isFirstChunk = false;
@@ -2964,7 +2965,7 @@ var DefaultStreamObjectResult = class {
2964
2965
  switch (chunk.type) {
2965
2966
  case "response-metadata": {
2966
2967
  response = {
2967
- id: (_a12 = chunk.id) != null ? _a12 : response.id,
2968
+ id: (_a13 = chunk.id) != null ? _a13 : response.id,
2968
2969
  timestamp: (_b = chunk.timestamp) != null ? _b : response.timestamp,
2969
2970
  modelId: (_c = chunk.modelId) != null ? _c : response.modelId
2970
2971
  };
@@ -3161,9 +3162,9 @@ var DefaultStreamObjectResult = class {
3161
3162
  });
3162
3163
  }
3163
3164
  toTextStreamResponse(init) {
3164
- var _a12;
3165
+ var _a13;
3165
3166
  return new Response(this.textStream.pipeThrough(new TextEncoderStream()), {
3166
- status: (_a12 = init == null ? void 0 : init.status) != null ? _a12 : 200,
3167
+ status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
3167
3168
  headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
3168
3169
  contentType: "text/plain; charset=utf-8"
3169
3170
  })
@@ -3175,7 +3176,7 @@ var DefaultStreamObjectResult = class {
3175
3176
  var import_provider_utils8 = require("@ai-sdk/provider-utils");
3176
3177
 
3177
3178
  // errors/index.ts
3178
- var import_provider14 = require("@ai-sdk/provider");
3179
+ var import_provider15 = require("@ai-sdk/provider");
3179
3180
 
3180
3181
  // errors/invalid-tool-arguments-error.ts
3181
3182
  var import_provider11 = require("@ai-sdk/provider");
@@ -3226,23 +3227,21 @@ var NoSuchToolError = class extends import_provider12.AISDKError {
3226
3227
  };
3227
3228
  _a9 = symbol9;
3228
3229
 
3229
- // errors/tool-execution-error.ts
3230
+ // errors/tool-call-repair-error.ts
3230
3231
  var import_provider13 = require("@ai-sdk/provider");
3231
- var name10 = "AI_ToolExecutionError";
3232
+ var name10 = "AI_ToolCallRepairError";
3232
3233
  var marker10 = `vercel.ai.error.${name10}`;
3233
3234
  var symbol10 = Symbol.for(marker10);
3234
3235
  var _a10;
3235
- var ToolExecutionError = class extends import_provider13.AISDKError {
3236
+ var ToolCallRepairError = class extends import_provider13.AISDKError {
3236
3237
  constructor({
3237
- toolArgs,
3238
- toolName,
3239
3238
  cause,
3240
- message = `Error executing tool ${toolName}: ${(0, import_provider13.getErrorMessage)(cause)}`
3239
+ originalError,
3240
+ message = `Error repairing tool call: ${(0, import_provider13.getErrorMessage)(cause)}`
3241
3241
  }) {
3242
3242
  super({ name: name10, message, cause });
3243
3243
  this[_a10] = true;
3244
- this.toolArgs = toolArgs;
3245
- this.toolName = toolName;
3244
+ this.originalError = originalError;
3246
3245
  }
3247
3246
  static isInstance(error) {
3248
3247
  return import_provider13.AISDKError.hasMarker(error, marker10);
@@ -3250,6 +3249,30 @@ var ToolExecutionError = class extends import_provider13.AISDKError {
3250
3249
  };
3251
3250
  _a10 = symbol10;
3252
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
+
3253
3276
  // core/prompt/prepare-tools-and-tool-choice.ts
3254
3277
  var import_ui_utils4 = require("@ai-sdk/ui-utils");
3255
3278
 
@@ -3271,24 +3294,24 @@ function prepareToolsAndToolChoice({
3271
3294
  };
3272
3295
  }
3273
3296
  const filteredTools = activeTools != null ? Object.entries(tools).filter(
3274
- ([name12]) => activeTools.includes(name12)
3297
+ ([name13]) => activeTools.includes(name13)
3275
3298
  ) : Object.entries(tools);
3276
3299
  return {
3277
- tools: filteredTools.map(([name12, tool2]) => {
3300
+ tools: filteredTools.map(([name13, tool2]) => {
3278
3301
  const toolType = tool2.type;
3279
3302
  switch (toolType) {
3280
3303
  case void 0:
3281
3304
  case "function":
3282
3305
  return {
3283
3306
  type: "function",
3284
- name: name12,
3307
+ name: name13,
3285
3308
  description: tool2.description,
3286
3309
  parameters: (0, import_ui_utils4.asSchema)(tool2.parameters).jsonSchema
3287
3310
  };
3288
3311
  case "provider-defined":
3289
3312
  return {
3290
3313
  type: "provider-defined",
3291
- name: name12,
3314
+ name: name13,
3292
3315
  id: tool2.id,
3293
3316
  args: tool2.args
3294
3317
  };
@@ -3318,14 +3341,49 @@ function removeTextAfterLastWhitespace(text2) {
3318
3341
  // core/generate-text/parse-tool-call.ts
3319
3342
  var import_provider_utils7 = require("@ai-sdk/provider-utils");
3320
3343
  var import_ui_utils5 = require("@ai-sdk/ui-utils");
3321
- function parseToolCall({
3344
+ async function parseToolCall({
3322
3345
  toolCall,
3323
- tools
3346
+ tools,
3347
+ repairToolCall,
3348
+ system,
3349
+ messages
3324
3350
  }) {
3325
- const toolName = toolCall.toolName;
3326
3351
  if (tools == null) {
3327
3352
  throw new NoSuchToolError({ toolName: toolCall.toolName });
3328
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;
3329
3387
  const tool2 = tools[toolName];
3330
3388
  if (tool2 == null) {
3331
3389
  throw new NoSuchToolError({
@@ -3405,6 +3463,7 @@ async function generateText({
3405
3463
  experimental_telemetry: telemetry,
3406
3464
  experimental_providerMetadata: providerMetadata,
3407
3465
  experimental_activeTools: activeTools,
3466
+ experimental_repairToolCall: repairToolCall,
3408
3467
  _internal: {
3409
3468
  generateId: generateId3 = originalGenerateId3,
3410
3469
  currentDate = () => /* @__PURE__ */ new Date()
@@ -3412,7 +3471,7 @@ async function generateText({
3412
3471
  onStepFinish,
3413
3472
  ...settings
3414
3473
  }) {
3415
- var _a12;
3474
+ var _a13;
3416
3475
  if (maxSteps < 1) {
3417
3476
  throw new InvalidArgumentError({
3418
3477
  parameter: "maxSteps",
@@ -3429,7 +3488,7 @@ async function generateText({
3429
3488
  });
3430
3489
  const initialPrompt = standardizePrompt({
3431
3490
  prompt: {
3432
- system: (_a12 = output == null ? void 0 : output.injectIntoSystemPrompt({ system, model })) != null ? _a12 : system,
3491
+ system: (_a13 = output == null ? void 0 : output.injectIntoSystemPrompt({ system, model })) != null ? _a13 : system,
3433
3492
  prompt,
3434
3493
  messages
3435
3494
  },
@@ -3455,7 +3514,7 @@ async function generateText({
3455
3514
  }),
3456
3515
  tracer,
3457
3516
  fn: async (span) => {
3458
- var _a13, _b, _c, _d, _e, _f;
3517
+ var _a14, _b, _c, _d, _e, _f;
3459
3518
  const mode = {
3460
3519
  type: "regular",
3461
3520
  ...prepareToolsAndToolChoice({ tools, toolChoice, activeTools })
@@ -3507,8 +3566,8 @@ async function generateText({
3507
3566
  "ai.prompt.tools": {
3508
3567
  // convert the language model level tools:
3509
3568
  input: () => {
3510
- var _a14;
3511
- return (_a14 = mode.tools) == null ? void 0 : _a14.map((tool2) => JSON.stringify(tool2));
3569
+ var _a15;
3570
+ return (_a15 = mode.tools) == null ? void 0 : _a15.map((tool2) => JSON.stringify(tool2));
3512
3571
  }
3513
3572
  },
3514
3573
  "ai.prompt.toolChoice": {
@@ -3528,7 +3587,7 @@ async function generateText({
3528
3587
  }),
3529
3588
  tracer,
3530
3589
  fn: async (span2) => {
3531
- var _a14, _b2, _c2, _d2, _e2, _f2;
3590
+ var _a15, _b2, _c2, _d2, _e2, _f2;
3532
3591
  const result = await model.doGenerate({
3533
3592
  mode,
3534
3593
  ...callSettings,
@@ -3540,7 +3599,7 @@ async function generateText({
3540
3599
  headers
3541
3600
  });
3542
3601
  const responseData = {
3543
- id: (_b2 = (_a14 = result.response) == null ? void 0 : _a14.id) != null ? _b2 : generateId3(),
3602
+ id: (_b2 = (_a15 = result.response) == null ? void 0 : _a15.id) != null ? _b2 : generateId3(),
3544
3603
  timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : currentDate(),
3545
3604
  modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : model.modelId
3546
3605
  };
@@ -3573,8 +3632,16 @@ async function generateText({
3573
3632
  }
3574
3633
  })
3575
3634
  );
3576
- currentToolCalls = ((_a13 = currentModelResponse.toolCalls) != null ? _a13 : []).map(
3577
- (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
+ )
3578
3645
  );
3579
3646
  currentToolResults = tools == null ? [] : await executeTools({
3580
3647
  toolCalls: currentToolCalls,
@@ -3778,9 +3845,49 @@ var DefaultGenerateTextResult = class {
3778
3845
  }
3779
3846
  };
3780
3847
 
3781
- // 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
+ });
3782
3854
  var import_provider_utils9 = require("@ai-sdk/provider-utils");
3783
- 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");
3784
3891
 
3785
3892
  // core/util/merge-streams.ts
3786
3893
  function mergeStreams(stream1, stream2) {
@@ -3871,15 +3978,17 @@ function mergeStreams(stream1, stream2) {
3871
3978
  }
3872
3979
 
3873
3980
  // core/generate-text/run-tools-transformation.ts
3874
- var import_ui_utils6 = require("@ai-sdk/ui-utils");
3981
+ var import_ui_utils7 = require("@ai-sdk/ui-utils");
3875
3982
  function runToolsTransformation({
3876
3983
  tools,
3877
3984
  generatorStream,
3878
3985
  toolCallStreaming,
3879
3986
  tracer,
3880
3987
  telemetry,
3988
+ system,
3881
3989
  messages,
3882
- abortSignal
3990
+ abortSignal,
3991
+ repairToolCall
3883
3992
  }) {
3884
3993
  let toolResultsStreamController = null;
3885
3994
  const toolResultsStream = new ReadableStream({
@@ -3900,7 +4009,7 @@ function runToolsTransformation({
3900
4009
  }
3901
4010
  }
3902
4011
  const forwardStream = new TransformStream({
3903
- transform(chunk, controller) {
4012
+ async transform(chunk, controller) {
3904
4013
  const chunkType = chunk.type;
3905
4014
  switch (chunkType) {
3906
4015
  case "text-delta":
@@ -3949,13 +4058,16 @@ function runToolsTransformation({
3949
4058
  break;
3950
4059
  }
3951
4060
  try {
3952
- const toolCall = parseToolCall({
4061
+ const toolCall = await parseToolCall({
3953
4062
  toolCall: chunk,
3954
- tools
4063
+ tools,
4064
+ repairToolCall,
4065
+ system,
4066
+ messages
3955
4067
  });
3956
4068
  controller.enqueue(toolCall);
3957
4069
  if (tool2.execute != null) {
3958
- const toolExecutionId = (0, import_ui_utils6.generateId)();
4070
+ const toolExecutionId = (0, import_ui_utils7.generateId)();
3959
4071
  outstandingToolResults.add(toolExecutionId);
3960
4072
  recordSpan({
3961
4073
  name: "ai.toolCall",
@@ -4073,7 +4185,7 @@ function runToolsTransformation({
4073
4185
  }
4074
4186
 
4075
4187
  // core/generate-text/stream-text.ts
4076
- var originalGenerateId4 = (0, import_provider_utils9.createIdGenerator)({ prefix: "aitxt", size: 24 });
4188
+ var originalGenerateId4 = (0, import_provider_utils10.createIdGenerator)({ prefix: "aitxt", size: 24 });
4077
4189
  function streamText({
4078
4190
  model,
4079
4191
  tools,
@@ -4090,6 +4202,7 @@ function streamText({
4090
4202
  experimental_providerMetadata: providerMetadata,
4091
4203
  experimental_toolCallStreaming: toolCallStreaming = false,
4092
4204
  experimental_activeTools: activeTools,
4205
+ experimental_repairToolCall: repairToolCall,
4093
4206
  onChunk,
4094
4207
  onFinish,
4095
4208
  onStepFinish,
@@ -4114,6 +4227,7 @@ function streamText({
4114
4227
  toolChoice,
4115
4228
  toolCallStreaming,
4116
4229
  activeTools,
4230
+ repairToolCall,
4117
4231
  maxSteps,
4118
4232
  continueSteps,
4119
4233
  providerMetadata,
@@ -4140,6 +4254,7 @@ var DefaultStreamTextResult = class {
4140
4254
  toolChoice,
4141
4255
  toolCallStreaming,
4142
4256
  activeTools,
4257
+ repairToolCall,
4143
4258
  maxSteps,
4144
4259
  continueSteps,
4145
4260
  providerMetadata,
@@ -4251,8 +4366,8 @@ var DefaultStreamTextResult = class {
4251
4366
  "ai.prompt.tools": {
4252
4367
  // convert the language model level tools:
4253
4368
  input: () => {
4254
- var _a12;
4255
- return (_a12 = mode.tools) == null ? void 0 : _a12.map((tool2) => JSON.stringify(tool2));
4369
+ var _a13;
4370
+ return (_a13 = mode.tools) == null ? void 0 : _a13.map((tool2) => JSON.stringify(tool2));
4256
4371
  }
4257
4372
  },
4258
4373
  "ai.prompt.toolChoice": {
@@ -4294,7 +4409,9 @@ var DefaultStreamTextResult = class {
4294
4409
  toolCallStreaming,
4295
4410
  tracer,
4296
4411
  telemetry,
4412
+ system,
4297
4413
  messages: stepInputMessages,
4414
+ repairToolCall,
4298
4415
  abortSignal
4299
4416
  });
4300
4417
  const stepRequest = request != null ? request : {};
@@ -4335,7 +4452,7 @@ var DefaultStreamTextResult = class {
4335
4452
  transformedStream.pipeThrough(
4336
4453
  new TransformStream({
4337
4454
  async transform(chunk, controller) {
4338
- var _a12, _b, _c;
4455
+ var _a13, _b, _c;
4339
4456
  if (stepFirstChunk) {
4340
4457
  const msToFirstChunk = now2() - startTimestampMs;
4341
4458
  stepFirstChunk = false;
@@ -4389,7 +4506,7 @@ var DefaultStreamTextResult = class {
4389
4506
  }
4390
4507
  case "response-metadata": {
4391
4508
  stepResponse = {
4392
- id: (_a12 = chunk.id) != null ? _a12 : stepResponse.id,
4509
+ id: (_a13 = chunk.id) != null ? _a13 : stepResponse.id,
4393
4510
  timestamp: (_b = chunk.timestamp) != null ? _b : stepResponse.timestamp,
4394
4511
  modelId: (_c = chunk.modelId) != null ? _c : stepResponse.modelId
4395
4512
  };
@@ -4706,7 +4823,7 @@ var DefaultStreamTextResult = class {
4706
4823
  });
4707
4824
  }
4708
4825
  toDataStreamInternal({
4709
- getErrorMessage: getErrorMessage4 = () => "An error occurred.",
4826
+ getErrorMessage: getErrorMessage5 = () => "An error occurred.",
4710
4827
  // mask error messages for safety by default
4711
4828
  sendUsage = true
4712
4829
  } = {}) {
@@ -4724,12 +4841,12 @@ var DefaultStreamTextResult = class {
4724
4841
  const chunkType = chunk.type;
4725
4842
  switch (chunkType) {
4726
4843
  case "text-delta": {
4727
- controller.enqueue((0, import_ui_utils7.formatDataStreamPart)("text", chunk.textDelta));
4844
+ controller.enqueue((0, import_ui_utils8.formatDataStreamPart)("text", chunk.textDelta));
4728
4845
  break;
4729
4846
  }
4730
4847
  case "tool-call-streaming-start": {
4731
4848
  controller.enqueue(
4732
- (0, import_ui_utils7.formatDataStreamPart)("tool_call_streaming_start", {
4849
+ (0, import_ui_utils8.formatDataStreamPart)("tool_call_streaming_start", {
4733
4850
  toolCallId: chunk.toolCallId,
4734
4851
  toolName: chunk.toolName
4735
4852
  })
@@ -4738,7 +4855,7 @@ var DefaultStreamTextResult = class {
4738
4855
  }
4739
4856
  case "tool-call-delta": {
4740
4857
  controller.enqueue(
4741
- (0, import_ui_utils7.formatDataStreamPart)("tool_call_delta", {
4858
+ (0, import_ui_utils8.formatDataStreamPart)("tool_call_delta", {
4742
4859
  toolCallId: chunk.toolCallId,
4743
4860
  argsTextDelta: chunk.argsTextDelta
4744
4861
  })
@@ -4747,7 +4864,7 @@ var DefaultStreamTextResult = class {
4747
4864
  }
4748
4865
  case "tool-call": {
4749
4866
  controller.enqueue(
4750
- (0, import_ui_utils7.formatDataStreamPart)("tool_call", {
4867
+ (0, import_ui_utils8.formatDataStreamPart)("tool_call", {
4751
4868
  toolCallId: chunk.toolCallId,
4752
4869
  toolName: chunk.toolName,
4753
4870
  args: chunk.args
@@ -4757,7 +4874,7 @@ var DefaultStreamTextResult = class {
4757
4874
  }
4758
4875
  case "tool-result": {
4759
4876
  controller.enqueue(
4760
- (0, import_ui_utils7.formatDataStreamPart)("tool_result", {
4877
+ (0, import_ui_utils8.formatDataStreamPart)("tool_result", {
4761
4878
  toolCallId: chunk.toolCallId,
4762
4879
  result: chunk.result
4763
4880
  })
@@ -4766,13 +4883,13 @@ var DefaultStreamTextResult = class {
4766
4883
  }
4767
4884
  case "error": {
4768
4885
  controller.enqueue(
4769
- (0, import_ui_utils7.formatDataStreamPart)("error", getErrorMessage4(chunk.error))
4886
+ (0, import_ui_utils8.formatDataStreamPart)("error", getErrorMessage5(chunk.error))
4770
4887
  );
4771
4888
  break;
4772
4889
  }
4773
4890
  case "step-finish": {
4774
4891
  controller.enqueue(
4775
- (0, import_ui_utils7.formatDataStreamPart)("finish_step", {
4892
+ (0, import_ui_utils8.formatDataStreamPart)("finish_step", {
4776
4893
  finishReason: chunk.finishReason,
4777
4894
  usage: sendUsage ? {
4778
4895
  promptTokens: chunk.usage.promptTokens,
@@ -4785,7 +4902,7 @@ var DefaultStreamTextResult = class {
4785
4902
  }
4786
4903
  case "finish": {
4787
4904
  controller.enqueue(
4788
- (0, import_ui_utils7.formatDataStreamPart)("finish_message", {
4905
+ (0, import_ui_utils8.formatDataStreamPart)("finish_message", {
4789
4906
  finishReason: chunk.finishReason,
4790
4907
  usage: sendUsage ? {
4791
4908
  promptTokens: chunk.usage.promptTokens,
@@ -4809,7 +4926,7 @@ var DefaultStreamTextResult = class {
4809
4926
  statusText,
4810
4927
  headers,
4811
4928
  data,
4812
- getErrorMessage: getErrorMessage4,
4929
+ getErrorMessage: getErrorMessage5,
4813
4930
  sendUsage
4814
4931
  } = {}) {
4815
4932
  writeToServerResponse({
@@ -4820,7 +4937,7 @@ var DefaultStreamTextResult = class {
4820
4937
  contentType: "text/plain; charset=utf-8",
4821
4938
  dataStreamVersion: "v1"
4822
4939
  }),
4823
- stream: this.toDataStream({ data, getErrorMessage: getErrorMessage4, sendUsage })
4940
+ stream: this.toDataStream({ data, getErrorMessage: getErrorMessage5, sendUsage })
4824
4941
  });
4825
4942
  }
4826
4943
  pipeTextStreamToResponse(response, init) {
@@ -4854,11 +4971,11 @@ var DefaultStreamTextResult = class {
4854
4971
  status,
4855
4972
  statusText,
4856
4973
  data,
4857
- getErrorMessage: getErrorMessage4,
4974
+ getErrorMessage: getErrorMessage5,
4858
4975
  sendUsage
4859
4976
  } = {}) {
4860
4977
  return new Response(
4861
- this.toDataStream({ data, getErrorMessage: getErrorMessage4, sendUsage }),
4978
+ this.toDataStream({ data, getErrorMessage: getErrorMessage5, sendUsage }),
4862
4979
  {
4863
4980
  status,
4864
4981
  statusText,
@@ -4870,9 +4987,9 @@ var DefaultStreamTextResult = class {
4870
4987
  );
4871
4988
  }
4872
4989
  toTextStreamResponse(init) {
4873
- var _a12;
4990
+ var _a13;
4874
4991
  return new Response(this.textStream.pipeThrough(new TextEncoderStream()), {
4875
- status: (_a12 = init == null ? void 0 : init.status) != null ? _a12 : 200,
4992
+ status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
4876
4993
  headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
4877
4994
  contentType: "text/plain; charset=utf-8"
4878
4995
  })
@@ -4880,46 +4997,6 @@ var DefaultStreamTextResult = class {
4880
4997
  }
4881
4998
  };
4882
4999
 
4883
- // core/generate-text/output.ts
4884
- var output_exports = {};
4885
- __export(output_exports, {
4886
- object: () => object,
4887
- text: () => text
4888
- });
4889
- var import_provider_utils10 = require("@ai-sdk/provider-utils");
4890
- var import_ui_utils8 = require("@ai-sdk/ui-utils");
4891
- var text = () => ({
4892
- type: "text",
4893
- responseFormat: () => ({ type: "text" }),
4894
- injectIntoSystemPrompt({ system }) {
4895
- return system;
4896
- },
4897
- parseOutput({ text: text2 }) {
4898
- return text2;
4899
- }
4900
- });
4901
- var object = ({
4902
- schema: inputSchema
4903
- }) => {
4904
- const schema = (0, import_ui_utils8.asSchema)(inputSchema);
4905
- return {
4906
- type: "object",
4907
- responseFormat: ({ model }) => ({
4908
- type: "json",
4909
- schema: model.supportsStructuredOutputs ? schema.jsonSchema : void 0
4910
- }),
4911
- injectIntoSystemPrompt({ system, model }) {
4912
- return model.supportsStructuredOutputs ? system : injectJsonInstruction({
4913
- prompt: system,
4914
- schema: schema.jsonSchema
4915
- });
4916
- },
4917
- parseOutput({ text: text2 }) {
4918
- return (0, import_provider_utils10.parseJSON)({ text: text2, schema });
4919
- }
4920
- };
4921
- };
4922
-
4923
5000
  // core/middleware/wrap-language-model.ts
4924
5001
  var experimental_wrapLanguageModel = ({
4925
5002
  model,
@@ -4955,7 +5032,7 @@ var experimental_wrapLanguageModel = ({
4955
5032
  };
4956
5033
 
4957
5034
  // core/registry/custom-provider.ts
4958
- var import_provider15 = require("@ai-sdk/provider");
5035
+ var import_provider16 = require("@ai-sdk/provider");
4959
5036
  function experimental_customProvider({
4960
5037
  languageModels,
4961
5038
  textEmbeddingModels,
@@ -4969,7 +5046,7 @@ function experimental_customProvider({
4969
5046
  if (fallbackProvider) {
4970
5047
  return fallbackProvider.languageModel(modelId);
4971
5048
  }
4972
- throw new import_provider15.NoSuchModelError({ modelId, modelType: "languageModel" });
5049
+ throw new import_provider16.NoSuchModelError({ modelId, modelType: "languageModel" });
4973
5050
  },
4974
5051
  textEmbeddingModel(modelId) {
4975
5052
  if (textEmbeddingModels != null && modelId in textEmbeddingModels) {
@@ -4978,18 +5055,18 @@ function experimental_customProvider({
4978
5055
  if (fallbackProvider) {
4979
5056
  return fallbackProvider.textEmbeddingModel(modelId);
4980
5057
  }
4981
- throw new import_provider15.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
5058
+ throw new import_provider16.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
4982
5059
  }
4983
5060
  };
4984
5061
  }
4985
5062
 
4986
5063
  // core/registry/no-such-provider-error.ts
4987
- var import_provider16 = require("@ai-sdk/provider");
4988
- var name11 = "AI_NoSuchProviderError";
4989
- var marker11 = `vercel.ai.error.${name11}`;
4990
- var symbol11 = Symbol.for(marker11);
4991
- var _a11;
4992
- var NoSuchProviderError = class extends import_provider16.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 {
4993
5070
  constructor({
4994
5071
  modelId,
4995
5072
  modelType,
@@ -4997,19 +5074,19 @@ var NoSuchProviderError = class extends import_provider16.NoSuchModelError {
4997
5074
  availableProviders,
4998
5075
  message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
4999
5076
  }) {
5000
- super({ errorName: name11, modelId, modelType, message });
5001
- this[_a11] = true;
5077
+ super({ errorName: name12, modelId, modelType, message });
5078
+ this[_a12] = true;
5002
5079
  this.providerId = providerId;
5003
5080
  this.availableProviders = availableProviders;
5004
5081
  }
5005
5082
  static isInstance(error) {
5006
- return import_provider16.AISDKError.hasMarker(error, marker11);
5083
+ return import_provider17.AISDKError.hasMarker(error, marker12);
5007
5084
  }
5008
5085
  };
5009
- _a11 = symbol11;
5086
+ _a12 = symbol12;
5010
5087
 
5011
5088
  // core/registry/provider-registry.ts
5012
- var import_provider17 = require("@ai-sdk/provider");
5089
+ var import_provider18 = require("@ai-sdk/provider");
5013
5090
  function experimental_createProviderRegistry(providers) {
5014
5091
  const registry = new DefaultProviderRegistry();
5015
5092
  for (const [id, provider] of Object.entries(providers)) {
@@ -5039,7 +5116,7 @@ var DefaultProviderRegistry = class {
5039
5116
  splitId(id, modelType) {
5040
5117
  const index = id.indexOf(":");
5041
5118
  if (index === -1) {
5042
- throw new import_provider17.NoSuchModelError({
5119
+ throw new import_provider18.NoSuchModelError({
5043
5120
  modelId: id,
5044
5121
  modelType,
5045
5122
  message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId:modelId")`
@@ -5048,21 +5125,21 @@ var DefaultProviderRegistry = class {
5048
5125
  return [id.slice(0, index), id.slice(index + 1)];
5049
5126
  }
5050
5127
  languageModel(id) {
5051
- var _a12, _b;
5128
+ var _a13, _b;
5052
5129
  const [providerId, modelId] = this.splitId(id, "languageModel");
5053
- const model = (_b = (_a12 = this.getProvider(providerId)).languageModel) == null ? void 0 : _b.call(_a12, modelId);
5130
+ const model = (_b = (_a13 = this.getProvider(providerId)).languageModel) == null ? void 0 : _b.call(_a13, modelId);
5054
5131
  if (model == null) {
5055
- throw new import_provider17.NoSuchModelError({ modelId: id, modelType: "languageModel" });
5132
+ throw new import_provider18.NoSuchModelError({ modelId: id, modelType: "languageModel" });
5056
5133
  }
5057
5134
  return model;
5058
5135
  }
5059
5136
  textEmbeddingModel(id) {
5060
- var _a12;
5137
+ var _a13;
5061
5138
  const [providerId, modelId] = this.splitId(id, "textEmbeddingModel");
5062
5139
  const provider = this.getProvider(providerId);
5063
- const model = (_a12 = provider.textEmbeddingModel) == null ? void 0 : _a12.call(provider, modelId);
5140
+ const model = (_a13 = provider.textEmbeddingModel) == null ? void 0 : _a13.call(provider, modelId);
5064
5141
  if (model == null) {
5065
- throw new import_provider17.NoSuchModelError({
5142
+ throw new import_provider18.NoSuchModelError({
5066
5143
  modelId: id,
5067
5144
  modelType: "textEmbeddingModel"
5068
5145
  });
@@ -5106,7 +5183,7 @@ var import_ui_utils10 = require("@ai-sdk/ui-utils");
5106
5183
  function AssistantResponse({ threadId, messageId }, process2) {
5107
5184
  const stream = new ReadableStream({
5108
5185
  async start(controller) {
5109
- var _a12;
5186
+ var _a13;
5110
5187
  const textEncoder = new TextEncoder();
5111
5188
  const sendMessage = (message) => {
5112
5189
  controller.enqueue(
@@ -5128,7 +5205,7 @@ function AssistantResponse({ threadId, messageId }, process2) {
5128
5205
  );
5129
5206
  };
5130
5207
  const forwardStream = async (stream2) => {
5131
- var _a13, _b;
5208
+ var _a14, _b;
5132
5209
  let result = void 0;
5133
5210
  for await (const value of stream2) {
5134
5211
  switch (value.event) {
@@ -5145,7 +5222,7 @@ function AssistantResponse({ threadId, messageId }, process2) {
5145
5222
  break;
5146
5223
  }
5147
5224
  case "thread.message.delta": {
5148
- const content = (_a13 = value.data.delta.content) == null ? void 0 : _a13[0];
5225
+ const content = (_a14 = value.data.delta.content) == null ? void 0 : _a14[0];
5149
5226
  if ((content == null ? void 0 : content.type) === "text" && ((_b = content.text) == null ? void 0 : _b.value) != null) {
5150
5227
  controller.enqueue(
5151
5228
  textEncoder.encode(
@@ -5179,7 +5256,7 @@ function AssistantResponse({ threadId, messageId }, process2) {
5179
5256
  forwardStream
5180
5257
  });
5181
5258
  } catch (error) {
5182
- sendError((_a12 = error.message) != null ? _a12 : `${error}`);
5259
+ sendError((_a13 = error.message) != null ? _a13 : `${error}`);
5183
5260
  } finally {
5184
5261
  controller.close();
5185
5262
  }
@@ -5240,7 +5317,7 @@ function toDataStreamInternal(stream, callbacks) {
5240
5317
  return stream.pipeThrough(
5241
5318
  new TransformStream({
5242
5319
  transform: async (value, controller) => {
5243
- var _a12;
5320
+ var _a13;
5244
5321
  if (typeof value === "string") {
5245
5322
  controller.enqueue(value);
5246
5323
  return;
@@ -5248,7 +5325,7 @@ function toDataStreamInternal(stream, callbacks) {
5248
5325
  if ("event" in value) {
5249
5326
  if (value.event === "on_chat_model_stream") {
5250
5327
  forwardAIMessageChunk(
5251
- (_a12 = value.data) == null ? void 0 : _a12.chunk,
5328
+ (_a13 = value.data) == null ? void 0 : _a13.chunk,
5252
5329
  controller
5253
5330
  );
5254
5331
  }
@@ -5271,7 +5348,7 @@ function toDataStream(stream, callbacks) {
5271
5348
  );
5272
5349
  }
5273
5350
  function toDataStreamResponse(stream, options) {
5274
- var _a12;
5351
+ var _a13;
5275
5352
  const dataStream = toDataStreamInternal(
5276
5353
  stream,
5277
5354
  options == null ? void 0 : options.callbacks
@@ -5280,7 +5357,7 @@ function toDataStreamResponse(stream, options) {
5280
5357
  const init = options == null ? void 0 : options.init;
5281
5358
  const responseStream = data ? mergeStreams(data.stream, dataStream) : dataStream;
5282
5359
  return new Response(responseStream, {
5283
- status: (_a12 = init == null ? void 0 : init.status) != null ? _a12 : 200,
5360
+ status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
5284
5361
  statusText: init == null ? void 0 : init.statusText,
5285
5362
  headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
5286
5363
  contentType: "text/plain; charset=utf-8",
@@ -5335,14 +5412,14 @@ function toDataStream2(stream, callbacks) {
5335
5412
  );
5336
5413
  }
5337
5414
  function toDataStreamResponse2(stream, options = {}) {
5338
- var _a12;
5415
+ var _a13;
5339
5416
  const { init, data, callbacks } = options;
5340
5417
  const dataStream = toDataStreamInternal2(stream, callbacks).pipeThrough(
5341
5418
  new TextEncoderStream()
5342
5419
  );
5343
5420
  const responseStream = data ? mergeStreams(data.stream, dataStream) : dataStream;
5344
5421
  return new Response(responseStream, {
5345
- status: (_a12 = init == null ? void 0 : init.status) != null ? _a12 : 200,
5422
+ status: (_a13 = init == null ? void 0 : init.status) != null ? _a13 : 200,
5346
5423
  statusText: init == null ? void 0 : init.statusText,
5347
5424
  headers: prepareResponseHeaders(init == null ? void 0 : init.headers, {
5348
5425
  contentType: "text/plain; charset=utf-8",
@@ -5459,6 +5536,7 @@ var StreamData = class {
5459
5536
  Output,
5460
5537
  RetryError,
5461
5538
  StreamData,
5539
+ ToolCallRepairError,
5462
5540
  ToolExecutionError,
5463
5541
  TypeValidationError,
5464
5542
  UnsupportedFunctionalityError,