ai 6.0.2 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __export = (target, all) => {
3
- for (var name14 in all)
4
- __defProp(target, name14, { get: all[name14], enumerable: true });
3
+ for (var name16 in all)
4
+ __defProp(target, name16, { get: all[name16], enumerable: true });
5
5
  };
6
6
 
7
7
  // src/index.ts
@@ -26,7 +26,7 @@ import {
26
26
 
27
27
  // src/error/index.ts
28
28
  import {
29
- AISDKError as AISDKError15,
29
+ AISDKError as AISDKError17,
30
30
  APICallError,
31
31
  EmptyResponseBodyError,
32
32
  InvalidPromptError,
@@ -88,23 +88,20 @@ var InvalidStreamPartError = class extends AISDKError2 {
88
88
  };
89
89
  _a2 = symbol2;
90
90
 
91
- // src/error/invalid-tool-input-error.ts
92
- import { AISDKError as AISDKError3, getErrorMessage } from "@ai-sdk/provider";
93
- var name3 = "AI_InvalidToolInputError";
91
+ // src/error/invalid-tool-approval-error.ts
92
+ import { AISDKError as AISDKError3 } from "@ai-sdk/provider";
93
+ var name3 = "AI_InvalidToolApprovalError";
94
94
  var marker3 = `vercel.ai.error.${name3}`;
95
95
  var symbol3 = Symbol.for(marker3);
96
96
  var _a3;
97
- var InvalidToolInputError = class extends AISDKError3 {
98
- constructor({
99
- toolInput,
100
- toolName,
101
- cause,
102
- message = `Invalid input for tool ${toolName}: ${getErrorMessage(cause)}`
103
- }) {
104
- super({ name: name3, message, cause });
97
+ var InvalidToolApprovalError = class extends AISDKError3 {
98
+ constructor({ approvalId }) {
99
+ super({
100
+ name: name3,
101
+ message: `Tool approval response references unknown approvalId: "${approvalId}". No matching tool-approval-request found in message history.`
102
+ });
105
103
  this[_a3] = true;
106
- this.toolInput = toolInput;
107
- this.toolName = toolName;
104
+ this.approvalId = approvalId;
108
105
  }
109
106
  static isInstance(error) {
110
107
  return AISDKError3.hasMarker(error, marker3);
@@ -112,21 +109,23 @@ var InvalidToolInputError = class extends AISDKError3 {
112
109
  };
113
110
  _a3 = symbol3;
114
111
 
115
- // src/error/no-image-generated-error.ts
116
- import { AISDKError as AISDKError4 } from "@ai-sdk/provider";
117
- var name4 = "AI_NoImageGeneratedError";
112
+ // src/error/invalid-tool-input-error.ts
113
+ import { AISDKError as AISDKError4, getErrorMessage } from "@ai-sdk/provider";
114
+ var name4 = "AI_InvalidToolInputError";
118
115
  var marker4 = `vercel.ai.error.${name4}`;
119
116
  var symbol4 = Symbol.for(marker4);
120
117
  var _a4;
121
- var NoImageGeneratedError = class extends AISDKError4 {
118
+ var InvalidToolInputError = class extends AISDKError4 {
122
119
  constructor({
123
- message = "No image generated.",
120
+ toolInput,
121
+ toolName,
124
122
  cause,
125
- responses
123
+ message = `Invalid input for tool ${toolName}: ${getErrorMessage(cause)}`
126
124
  }) {
127
125
  super({ name: name4, message, cause });
128
126
  this[_a4] = true;
129
- this.responses = responses;
127
+ this.toolInput = toolInput;
128
+ this.toolName = toolName;
130
129
  }
131
130
  static isInstance(error) {
132
131
  return AISDKError4.hasMarker(error, marker4);
@@ -134,13 +133,60 @@ var NoImageGeneratedError = class extends AISDKError4 {
134
133
  };
135
134
  _a4 = symbol4;
136
135
 
137
- // src/error/no-object-generated-error.ts
136
+ // src/error/tool-call-not-found-for-approval-error.ts
138
137
  import { AISDKError as AISDKError5 } from "@ai-sdk/provider";
139
- var name5 = "AI_NoObjectGeneratedError";
138
+ var name5 = "AI_ToolCallNotFoundForApprovalError";
140
139
  var marker5 = `vercel.ai.error.${name5}`;
141
140
  var symbol5 = Symbol.for(marker5);
142
141
  var _a5;
143
- var NoObjectGeneratedError = class extends AISDKError5 {
142
+ var ToolCallNotFoundForApprovalError = class extends AISDKError5 {
143
+ constructor({
144
+ toolCallId,
145
+ approvalId
146
+ }) {
147
+ super({
148
+ name: name5,
149
+ message: `Tool call "${toolCallId}" not found for approval request "${approvalId}".`
150
+ });
151
+ this[_a5] = true;
152
+ this.toolCallId = toolCallId;
153
+ this.approvalId = approvalId;
154
+ }
155
+ static isInstance(error) {
156
+ return AISDKError5.hasMarker(error, marker5);
157
+ }
158
+ };
159
+ _a5 = symbol5;
160
+
161
+ // src/error/no-image-generated-error.ts
162
+ import { AISDKError as AISDKError6 } from "@ai-sdk/provider";
163
+ var name6 = "AI_NoImageGeneratedError";
164
+ var marker6 = `vercel.ai.error.${name6}`;
165
+ var symbol6 = Symbol.for(marker6);
166
+ var _a6;
167
+ var NoImageGeneratedError = class extends AISDKError6 {
168
+ constructor({
169
+ message = "No image generated.",
170
+ cause,
171
+ responses
172
+ }) {
173
+ super({ name: name6, message, cause });
174
+ this[_a6] = true;
175
+ this.responses = responses;
176
+ }
177
+ static isInstance(error) {
178
+ return AISDKError6.hasMarker(error, marker6);
179
+ }
180
+ };
181
+ _a6 = symbol6;
182
+
183
+ // src/error/no-object-generated-error.ts
184
+ import { AISDKError as AISDKError7 } from "@ai-sdk/provider";
185
+ var name7 = "AI_NoObjectGeneratedError";
186
+ var marker7 = `vercel.ai.error.${name7}`;
187
+ var symbol7 = Symbol.for(marker7);
188
+ var _a7;
189
+ var NoObjectGeneratedError = class extends AISDKError7 {
144
190
  constructor({
145
191
  message = "No object generated.",
146
192
  cause,
@@ -149,43 +195,43 @@ var NoObjectGeneratedError = class extends AISDKError5 {
149
195
  usage,
150
196
  finishReason
151
197
  }) {
152
- super({ name: name5, message, cause });
153
- this[_a5] = true;
198
+ super({ name: name7, message, cause });
199
+ this[_a7] = true;
154
200
  this.text = text2;
155
201
  this.response = response;
156
202
  this.usage = usage;
157
203
  this.finishReason = finishReason;
158
204
  }
159
205
  static isInstance(error) {
160
- return AISDKError5.hasMarker(error, marker5);
206
+ return AISDKError7.hasMarker(error, marker7);
161
207
  }
162
208
  };
163
- _a5 = symbol5;
209
+ _a7 = symbol7;
164
210
 
165
211
  // src/error/no-output-generated-error.ts
166
- import { AISDKError as AISDKError6 } from "@ai-sdk/provider";
167
- var name6 = "AI_NoOutputGeneratedError";
168
- var marker6 = `vercel.ai.error.${name6}`;
169
- var symbol6 = Symbol.for(marker6);
170
- var _a6;
171
- var NoOutputGeneratedError = class extends AISDKError6 {
212
+ import { AISDKError as AISDKError8 } from "@ai-sdk/provider";
213
+ var name8 = "AI_NoOutputGeneratedError";
214
+ var marker8 = `vercel.ai.error.${name8}`;
215
+ var symbol8 = Symbol.for(marker8);
216
+ var _a8;
217
+ var NoOutputGeneratedError = class extends AISDKError8 {
172
218
  // used in isInstance
173
219
  constructor({
174
220
  message = "No output generated.",
175
221
  cause
176
222
  } = {}) {
177
- super({ name: name6, message, cause });
178
- this[_a6] = true;
223
+ super({ name: name8, message, cause });
224
+ this[_a8] = true;
179
225
  }
180
226
  static isInstance(error) {
181
- return AISDKError6.hasMarker(error, marker6);
227
+ return AISDKError8.hasMarker(error, marker8);
182
228
  }
183
229
  };
184
- _a6 = symbol6;
230
+ _a8 = symbol8;
185
231
 
186
232
  // src/error/no-speech-generated-error.ts
187
- import { AISDKError as AISDKError7 } from "@ai-sdk/provider";
188
- var NoSpeechGeneratedError = class extends AISDKError7 {
233
+ import { AISDKError as AISDKError9 } from "@ai-sdk/provider";
234
+ var NoSpeechGeneratedError = class extends AISDKError9 {
189
235
  constructor(options) {
190
236
  super({
191
237
  name: "AI_NoSpeechGeneratedError",
@@ -196,53 +242,53 @@ var NoSpeechGeneratedError = class extends AISDKError7 {
196
242
  };
197
243
 
198
244
  // src/error/no-such-tool-error.ts
199
- import { AISDKError as AISDKError8 } from "@ai-sdk/provider";
200
- var name7 = "AI_NoSuchToolError";
201
- var marker7 = `vercel.ai.error.${name7}`;
202
- var symbol7 = Symbol.for(marker7);
203
- var _a7;
204
- var NoSuchToolError = class extends AISDKError8 {
245
+ import { AISDKError as AISDKError10 } from "@ai-sdk/provider";
246
+ var name9 = "AI_NoSuchToolError";
247
+ var marker9 = `vercel.ai.error.${name9}`;
248
+ var symbol9 = Symbol.for(marker9);
249
+ var _a9;
250
+ var NoSuchToolError = class extends AISDKError10 {
205
251
  constructor({
206
252
  toolName,
207
253
  availableTools = void 0,
208
254
  message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? "No tools are available." : `Available tools: ${availableTools.join(", ")}.`}`
209
255
  }) {
210
- super({ name: name7, message });
211
- this[_a7] = true;
256
+ super({ name: name9, message });
257
+ this[_a9] = true;
212
258
  this.toolName = toolName;
213
259
  this.availableTools = availableTools;
214
260
  }
215
261
  static isInstance(error) {
216
- return AISDKError8.hasMarker(error, marker7);
262
+ return AISDKError10.hasMarker(error, marker9);
217
263
  }
218
264
  };
219
- _a7 = symbol7;
265
+ _a9 = symbol9;
220
266
 
221
267
  // src/error/tool-call-repair-error.ts
222
- import { AISDKError as AISDKError9, getErrorMessage as getErrorMessage2 } from "@ai-sdk/provider";
223
- var name8 = "AI_ToolCallRepairError";
224
- var marker8 = `vercel.ai.error.${name8}`;
225
- var symbol8 = Symbol.for(marker8);
226
- var _a8;
227
- var ToolCallRepairError = class extends AISDKError9 {
268
+ import { AISDKError as AISDKError11, getErrorMessage as getErrorMessage2 } from "@ai-sdk/provider";
269
+ var name10 = "AI_ToolCallRepairError";
270
+ var marker10 = `vercel.ai.error.${name10}`;
271
+ var symbol10 = Symbol.for(marker10);
272
+ var _a10;
273
+ var ToolCallRepairError = class extends AISDKError11 {
228
274
  constructor({
229
275
  cause,
230
276
  originalError,
231
277
  message = `Error repairing tool call: ${getErrorMessage2(cause)}`
232
278
  }) {
233
- super({ name: name8, message, cause });
234
- this[_a8] = true;
279
+ super({ name: name10, message, cause });
280
+ this[_a10] = true;
235
281
  this.originalError = originalError;
236
282
  }
237
283
  static isInstance(error) {
238
- return AISDKError9.hasMarker(error, marker8);
284
+ return AISDKError11.hasMarker(error, marker10);
239
285
  }
240
286
  };
241
- _a8 = symbol8;
287
+ _a10 = symbol10;
242
288
 
243
289
  // src/error/unsupported-model-version-error.ts
244
- import { AISDKError as AISDKError10 } from "@ai-sdk/provider";
245
- var UnsupportedModelVersionError = class extends AISDKError10 {
290
+ import { AISDKError as AISDKError12 } from "@ai-sdk/provider";
291
+ var UnsupportedModelVersionError = class extends AISDKError12 {
246
292
  constructor(options) {
247
293
  super({
248
294
  name: "AI_UnsupportedModelVersionError",
@@ -255,95 +301,95 @@ var UnsupportedModelVersionError = class extends AISDKError10 {
255
301
  };
256
302
 
257
303
  // src/prompt/invalid-data-content-error.ts
258
- import { AISDKError as AISDKError11 } from "@ai-sdk/provider";
259
- var name9 = "AI_InvalidDataContentError";
260
- var marker9 = `vercel.ai.error.${name9}`;
261
- var symbol9 = Symbol.for(marker9);
262
- var _a9;
263
- var InvalidDataContentError = class extends AISDKError11 {
304
+ import { AISDKError as AISDKError13 } from "@ai-sdk/provider";
305
+ var name11 = "AI_InvalidDataContentError";
306
+ var marker11 = `vercel.ai.error.${name11}`;
307
+ var symbol11 = Symbol.for(marker11);
308
+ var _a11;
309
+ var InvalidDataContentError = class extends AISDKError13 {
264
310
  constructor({
265
311
  content,
266
312
  cause,
267
313
  message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
268
314
  }) {
269
- super({ name: name9, message, cause });
270
- this[_a9] = true;
315
+ super({ name: name11, message, cause });
316
+ this[_a11] = true;
271
317
  this.content = content;
272
318
  }
273
319
  static isInstance(error) {
274
- return AISDKError11.hasMarker(error, marker9);
320
+ return AISDKError13.hasMarker(error, marker11);
275
321
  }
276
322
  };
277
- _a9 = symbol9;
323
+ _a11 = symbol11;
278
324
 
279
325
  // src/prompt/invalid-message-role-error.ts
280
- import { AISDKError as AISDKError12 } from "@ai-sdk/provider";
281
- var name10 = "AI_InvalidMessageRoleError";
282
- var marker10 = `vercel.ai.error.${name10}`;
283
- var symbol10 = Symbol.for(marker10);
284
- var _a10;
285
- var InvalidMessageRoleError = class extends AISDKError12 {
326
+ import { AISDKError as AISDKError14 } from "@ai-sdk/provider";
327
+ var name12 = "AI_InvalidMessageRoleError";
328
+ var marker12 = `vercel.ai.error.${name12}`;
329
+ var symbol12 = Symbol.for(marker12);
330
+ var _a12;
331
+ var InvalidMessageRoleError = class extends AISDKError14 {
286
332
  constructor({
287
333
  role,
288
334
  message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
289
335
  }) {
290
- super({ name: name10, message });
291
- this[_a10] = true;
336
+ super({ name: name12, message });
337
+ this[_a12] = true;
292
338
  this.role = role;
293
339
  }
294
340
  static isInstance(error) {
295
- return AISDKError12.hasMarker(error, marker10);
341
+ return AISDKError14.hasMarker(error, marker12);
296
342
  }
297
343
  };
298
- _a10 = symbol10;
344
+ _a12 = symbol12;
299
345
 
300
346
  // src/prompt/message-conversion-error.ts
301
- import { AISDKError as AISDKError13 } from "@ai-sdk/provider";
302
- var name11 = "AI_MessageConversionError";
303
- var marker11 = `vercel.ai.error.${name11}`;
304
- var symbol11 = Symbol.for(marker11);
305
- var _a11;
306
- var MessageConversionError = class extends AISDKError13 {
347
+ import { AISDKError as AISDKError15 } from "@ai-sdk/provider";
348
+ var name13 = "AI_MessageConversionError";
349
+ var marker13 = `vercel.ai.error.${name13}`;
350
+ var symbol13 = Symbol.for(marker13);
351
+ var _a13;
352
+ var MessageConversionError = class extends AISDKError15 {
307
353
  constructor({
308
354
  originalMessage,
309
355
  message
310
356
  }) {
311
- super({ name: name11, message });
312
- this[_a11] = true;
357
+ super({ name: name13, message });
358
+ this[_a13] = true;
313
359
  this.originalMessage = originalMessage;
314
360
  }
315
361
  static isInstance(error) {
316
- return AISDKError13.hasMarker(error, marker11);
362
+ return AISDKError15.hasMarker(error, marker13);
317
363
  }
318
364
  };
319
- _a11 = symbol11;
365
+ _a13 = symbol13;
320
366
 
321
367
  // src/error/index.ts
322
368
  import { DownloadError } from "@ai-sdk/provider-utils";
323
369
 
324
370
  // src/util/retry-error.ts
325
- import { AISDKError as AISDKError14 } from "@ai-sdk/provider";
326
- var name12 = "AI_RetryError";
327
- var marker12 = `vercel.ai.error.${name12}`;
328
- var symbol12 = Symbol.for(marker12);
329
- var _a12;
330
- var RetryError = class extends AISDKError14 {
371
+ import { AISDKError as AISDKError16 } from "@ai-sdk/provider";
372
+ var name14 = "AI_RetryError";
373
+ var marker14 = `vercel.ai.error.${name14}`;
374
+ var symbol14 = Symbol.for(marker14);
375
+ var _a14;
376
+ var RetryError = class extends AISDKError16 {
331
377
  constructor({
332
378
  message,
333
379
  reason,
334
380
  errors
335
381
  }) {
336
- super({ name: name12, message });
337
- this[_a12] = true;
382
+ super({ name: name14, message });
383
+ this[_a14] = true;
338
384
  this.reason = reason;
339
385
  this.errors = errors;
340
386
  this.lastError = errors[errors.length - 1];
341
387
  }
342
388
  static isInstance(error) {
343
- return AISDKError14.hasMarker(error, marker12);
389
+ return AISDKError16.hasMarker(error, marker14);
344
390
  }
345
391
  };
346
- _a12 = symbol12;
392
+ _a14 = symbol14;
347
393
 
348
394
  // src/logger/log-warnings.ts
349
395
  function formatWarning({
@@ -606,7 +652,7 @@ function resolveEmbeddingModel(model) {
606
652
  return getGlobalProvider().embeddingModel(model);
607
653
  }
608
654
  function resolveTranscriptionModel(model) {
609
- var _a14, _b;
655
+ var _a16, _b;
610
656
  if (typeof model !== "string") {
611
657
  if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
612
658
  const unsupportedModel = model;
@@ -618,10 +664,10 @@ function resolveTranscriptionModel(model) {
618
664
  }
619
665
  return asTranscriptionModelV3(model);
620
666
  }
621
- return (_b = (_a14 = getGlobalProvider()).transcriptionModel) == null ? void 0 : _b.call(_a14, model);
667
+ return (_b = (_a16 = getGlobalProvider()).transcriptionModel) == null ? void 0 : _b.call(_a16, model);
622
668
  }
623
669
  function resolveSpeechModel(model) {
624
- var _a14, _b;
670
+ var _a16, _b;
625
671
  if (typeof model !== "string") {
626
672
  if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
627
673
  const unsupportedModel = model;
@@ -633,7 +679,7 @@ function resolveSpeechModel(model) {
633
679
  }
634
680
  return asSpeechModelV3(model);
635
681
  }
636
- return (_b = (_a14 = getGlobalProvider()).speechModel) == null ? void 0 : _b.call(_a14, model);
682
+ return (_b = (_a16 = getGlobalProvider()).speechModel) == null ? void 0 : _b.call(_a16, model);
637
683
  }
638
684
  function resolveImageModel(model) {
639
685
  if (typeof model !== "string") {
@@ -650,8 +696,8 @@ function resolveImageModel(model) {
650
696
  return getGlobalProvider().imageModel(model);
651
697
  }
652
698
  function getGlobalProvider() {
653
- var _a14;
654
- return (_a14 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a14 : gateway;
699
+ var _a16;
700
+ return (_a16 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a16 : gateway;
655
701
  }
656
702
 
657
703
  // src/prompt/convert-to-language-model-prompt.ts
@@ -852,11 +898,11 @@ import {
852
898
  } from "@ai-sdk/provider-utils";
853
899
 
854
900
  // src/version.ts
855
- var VERSION = true ? "6.0.2" : "0.0.0-test";
901
+ var VERSION = true ? "6.0.3" : "0.0.0-test";
856
902
 
857
903
  // src/util/download/download.ts
858
904
  var download = async ({ url }) => {
859
- var _a14;
905
+ var _a16;
860
906
  const urlText = url.toString();
861
907
  try {
862
908
  const response = await fetch(urlText, {
@@ -875,7 +921,7 @@ var download = async ({ url }) => {
875
921
  }
876
922
  return {
877
923
  data: new Uint8Array(await response.arrayBuffer()),
878
- mediaType: (_a14 = response.headers.get("content-type")) != null ? _a14 : void 0
924
+ mediaType: (_a16 = response.headers.get("content-type")) != null ? _a16 : void 0
879
925
  };
880
926
  } catch (error) {
881
927
  if (DownloadError2.isInstance(error)) {
@@ -893,7 +939,7 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
893
939
  );
894
940
 
895
941
  // src/prompt/data-content.ts
896
- import { AISDKError as AISDKError16 } from "@ai-sdk/provider";
942
+ import { AISDKError as AISDKError18 } from "@ai-sdk/provider";
897
943
  import {
898
944
  convertBase64ToUint8Array as convertBase64ToUint8Array2,
899
945
  convertUint8ArrayToBase64
@@ -924,8 +970,8 @@ var dataContentSchema = z.union([
924
970
  z.custom(
925
971
  // Buffer might not be available in some environments such as CloudFlare:
926
972
  (value) => {
927
- var _a14, _b;
928
- return (_b = (_a14 = globalThis.Buffer) == null ? void 0 : _a14.isBuffer(value)) != null ? _b : false;
973
+ var _a16, _b;
974
+ return (_b = (_a16 = globalThis.Buffer) == null ? void 0 : _a16.isBuffer(value)) != null ? _b : false;
929
975
  },
930
976
  { message: "Must be a Buffer" }
931
977
  )
@@ -948,7 +994,7 @@ function convertToLanguageModelV3DataContent(content) {
948
994
  content.toString()
949
995
  );
950
996
  if (dataUrlMediaType == null || base64Content == null) {
951
- throw new AISDKError16({
997
+ throw new AISDKError18({
952
998
  name: "InvalidDataContentError",
953
999
  message: `Invalid data URL format in content ${content.toString()}`
954
1000
  });
@@ -1126,13 +1172,30 @@ function convertToLanguageModelMessage({
1126
1172
  case "tool": {
1127
1173
  return {
1128
1174
  role: "tool",
1129
- content: message.content.filter((part) => part.type !== "tool-approval-response").map((part) => ({
1130
- type: "tool-result",
1131
- toolCallId: part.toolCallId,
1132
- toolName: part.toolName,
1133
- output: mapToolResultOutput(part.output),
1134
- providerOptions: part.providerOptions
1135
- })),
1175
+ content: message.content.filter(
1176
+ // Only include tool-approval-response for provider-executed tools
1177
+ (part) => part.type !== "tool-approval-response" || part.providerExecuted
1178
+ ).map((part) => {
1179
+ switch (part.type) {
1180
+ case "tool-result": {
1181
+ return {
1182
+ type: "tool-result",
1183
+ toolCallId: part.toolCallId,
1184
+ toolName: part.toolName,
1185
+ output: mapToolResultOutput(part.output),
1186
+ providerOptions: part.providerOptions
1187
+ };
1188
+ }
1189
+ case "tool-approval-response": {
1190
+ return {
1191
+ type: "tool-approval-response",
1192
+ approvalId: part.approvalId,
1193
+ approved: part.approved,
1194
+ reason: part.reason
1195
+ };
1196
+ }
1197
+ }
1198
+ }),
1136
1199
  providerOptions: message.providerOptions
1137
1200
  };
1138
1201
  }
@@ -1148,8 +1211,8 @@ async function downloadAssets(messages, download2, supportedUrls) {
1148
1211
  ).flat().filter(
1149
1212
  (part) => part.type === "image" || part.type === "file"
1150
1213
  ).map((part) => {
1151
- var _a14;
1152
- const mediaType = (_a14 = part.mediaType) != null ? _a14 : part.type === "image" ? "image/*" : void 0;
1214
+ var _a16;
1215
+ const mediaType = (_a16 = part.mediaType) != null ? _a16 : part.type === "image" ? "image/*" : void 0;
1153
1216
  let data = part.type === "image" ? part.image : part.data;
1154
1217
  if (typeof data === "string") {
1155
1218
  try {
@@ -1179,7 +1242,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
1179
1242
  );
1180
1243
  }
1181
1244
  function convertPartToLanguageModelPart(part, downloadedAssets) {
1182
- var _a14;
1245
+ var _a16;
1183
1246
  if (part.type === "text") {
1184
1247
  return {
1185
1248
  type: "text",
@@ -1212,7 +1275,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
1212
1275
  switch (type) {
1213
1276
  case "image": {
1214
1277
  if (data instanceof Uint8Array || typeof data === "string") {
1215
- mediaType = (_a14 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a14 : mediaType;
1278
+ mediaType = (_a16 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a16 : mediaType;
1216
1279
  }
1217
1280
  return {
1218
1281
  type: "file",
@@ -1400,10 +1463,10 @@ async function prepareToolsAndToolChoice({
1400
1463
  };
1401
1464
  }
1402
1465
  const filteredTools = activeTools != null ? Object.entries(tools).filter(
1403
- ([name14]) => activeTools.includes(name14)
1466
+ ([name16]) => activeTools.includes(name16)
1404
1467
  ) : Object.entries(tools);
1405
1468
  const languageModelTools = [];
1406
- for (const [name14, tool2] of filteredTools) {
1469
+ for (const [name16, tool2] of filteredTools) {
1407
1470
  const toolType = tool2.type;
1408
1471
  switch (toolType) {
1409
1472
  case void 0:
@@ -1411,7 +1474,7 @@ async function prepareToolsAndToolChoice({
1411
1474
  case "function":
1412
1475
  languageModelTools.push({
1413
1476
  type: "function",
1414
- name: name14,
1477
+ name: name16,
1415
1478
  description: tool2.description,
1416
1479
  inputSchema: await asSchema(tool2.inputSchema).jsonSchema,
1417
1480
  ...tool2.inputExamples != null ? { inputExamples: tool2.inputExamples } : {},
@@ -1422,7 +1485,7 @@ async function prepareToolsAndToolChoice({
1422
1485
  case "provider":
1423
1486
  languageModelTools.push({
1424
1487
  type: "provider",
1425
- name: name14,
1488
+ name: name16,
1426
1489
  id: tool2.id,
1427
1490
  args: tool2.args
1428
1491
  });
@@ -1712,14 +1775,14 @@ async function standardizePrompt(prompt) {
1712
1775
 
1713
1776
  // src/prompt/wrap-gateway-error.ts
1714
1777
  import { GatewayAuthenticationError } from "@ai-sdk/gateway";
1715
- import { AISDKError as AISDKError17 } from "@ai-sdk/provider";
1778
+ import { AISDKError as AISDKError19 } from "@ai-sdk/provider";
1716
1779
  function wrapGatewayError(error) {
1717
1780
  if (!GatewayAuthenticationError.isInstance(error))
1718
1781
  return error;
1719
1782
  const isProductionEnv = (process == null ? void 0 : process.env.NODE_ENV) === "production";
1720
1783
  const moreInfoURL = "https://ai-sdk.dev/unauthenticated-ai-gateway";
1721
1784
  if (isProductionEnv) {
1722
- return new AISDKError17({
1785
+ return new AISDKError19({
1723
1786
  name: "GatewayError",
1724
1787
  message: `Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${moreInfoURL}`
1725
1788
  });
@@ -1760,7 +1823,7 @@ function getBaseTelemetryAttributes({
1760
1823
  telemetry,
1761
1824
  headers
1762
1825
  }) {
1763
- var _a14;
1826
+ var _a16;
1764
1827
  return {
1765
1828
  "ai.model.provider": model.provider,
1766
1829
  "ai.model.id": model.modelId,
@@ -1770,7 +1833,7 @@ function getBaseTelemetryAttributes({
1770
1833
  return attributes;
1771
1834
  }, {}),
1772
1835
  // add metadata as attributes:
1773
- ...Object.entries((_a14 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a14 : {}).reduce(
1836
+ ...Object.entries((_a16 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a16 : {}).reduce(
1774
1837
  (attributes, [key, value]) => {
1775
1838
  attributes[`ai.telemetry.metadata.${key}`] = value;
1776
1839
  return attributes;
@@ -1795,7 +1858,7 @@ var noopTracer = {
1795
1858
  startSpan() {
1796
1859
  return noopSpan;
1797
1860
  },
1798
- startActiveSpan(name14, arg1, arg2, arg3) {
1861
+ startActiveSpan(name16, arg1, arg2, arg3) {
1799
1862
  if (typeof arg1 === "function") {
1800
1863
  return arg1(noopSpan);
1801
1864
  }
@@ -1865,14 +1928,14 @@ function getTracer({
1865
1928
  // src/telemetry/record-span.ts
1866
1929
  import { SpanStatusCode } from "@opentelemetry/api";
1867
1930
  async function recordSpan({
1868
- name: name14,
1931
+ name: name16,
1869
1932
  tracer,
1870
1933
  attributes,
1871
1934
  fn,
1872
1935
  endWhenDone = true
1873
1936
  }) {
1874
1937
  return tracer.startActiveSpan(
1875
- name14,
1938
+ name16,
1876
1939
  { attributes: await attributes },
1877
1940
  async (span) => {
1878
1941
  try {
@@ -2002,12 +2065,12 @@ function createNullLanguageModelUsage() {
2002
2065
  };
2003
2066
  }
2004
2067
  function addLanguageModelUsage(usage1, usage2) {
2005
- var _a14, _b, _c, _d, _e, _f, _g, _h, _i, _j;
2068
+ var _a16, _b, _c, _d, _e, _f, _g, _h, _i, _j;
2006
2069
  return {
2007
2070
  inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
2008
2071
  inputTokenDetails: {
2009
2072
  noCacheTokens: addTokenCounts(
2010
- (_a14 = usage1.inputTokenDetails) == null ? void 0 : _a14.noCacheTokens,
2073
+ (_a16 = usage1.inputTokenDetails) == null ? void 0 : _a16.noCacheTokens,
2011
2074
  (_b = usage2.inputTokenDetails) == null ? void 0 : _b.noCacheTokens
2012
2075
  ),
2013
2076
  cacheReadTokens: addTokenCounts(
@@ -2260,13 +2323,25 @@ function collectToolApprovals({
2260
2323
  );
2261
2324
  for (const approvalResponse of approvalResponses) {
2262
2325
  const approvalRequest = toolApprovalRequestsByApprovalId[approvalResponse.approvalId];
2326
+ if (approvalRequest == null) {
2327
+ throw new InvalidToolApprovalError({
2328
+ approvalId: approvalResponse.approvalId
2329
+ });
2330
+ }
2263
2331
  if (toolResults[approvalRequest.toolCallId] != null) {
2264
2332
  continue;
2265
2333
  }
2334
+ const toolCall = toolCallsByToolCallId[approvalRequest.toolCallId];
2335
+ if (toolCall == null) {
2336
+ throw new ToolCallNotFoundForApprovalError({
2337
+ toolCallId: approvalRequest.toolCallId,
2338
+ approvalId: approvalRequest.approvalId
2339
+ });
2340
+ }
2266
2341
  const approval = {
2267
2342
  approvalRequest,
2268
2343
  approvalResponse,
2269
- toolCall: toolCallsByToolCallId[approvalRequest.toolCallId]
2344
+ toolCall
2270
2345
  };
2271
2346
  if (approvalResponse.approved) {
2272
2347
  approvedToolApprovals.push(approval);
@@ -2810,7 +2885,7 @@ var text = () => ({
2810
2885
  });
2811
2886
  var object = ({
2812
2887
  schema: inputSchema,
2813
- name: name14,
2888
+ name: name16,
2814
2889
  description
2815
2890
  }) => {
2816
2891
  const schema = asSchema2(inputSchema);
@@ -2818,7 +2893,7 @@ var object = ({
2818
2893
  responseFormat: resolve(schema.jsonSchema).then((jsonSchema2) => ({
2819
2894
  type: "json",
2820
2895
  schema: jsonSchema2,
2821
- ...name14 != null && { name: name14 },
2896
+ ...name16 != null && { name: name16 },
2822
2897
  ...description != null && { description }
2823
2898
  })),
2824
2899
  async parseCompleteOutput({ text: text2 }, context) {
@@ -2869,7 +2944,7 @@ var object = ({
2869
2944
  };
2870
2945
  var array = ({
2871
2946
  element: inputElementSchema,
2872
- name: name14,
2947
+ name: name16,
2873
2948
  description
2874
2949
  }) => {
2875
2950
  const elementSchema = asSchema2(inputElementSchema);
@@ -2888,7 +2963,7 @@ var array = ({
2888
2963
  required: ["elements"],
2889
2964
  additionalProperties: false
2890
2965
  },
2891
- ...name14 != null && { name: name14 },
2966
+ ...name16 != null && { name: name16 },
2892
2967
  ...description != null && { description }
2893
2968
  };
2894
2969
  }),
@@ -2968,7 +3043,7 @@ var array = ({
2968
3043
  };
2969
3044
  var choice = ({
2970
3045
  options: choiceOptions,
2971
- name: name14,
3046
+ name: name16,
2972
3047
  description
2973
3048
  }) => {
2974
3049
  return {
@@ -2984,7 +3059,7 @@ var choice = ({
2984
3059
  required: ["result"],
2985
3060
  additionalProperties: false
2986
3061
  },
2987
- ...name14 != null && { name: name14 },
3062
+ ...name16 != null && { name: name16 },
2988
3063
  ...description != null && { description }
2989
3064
  }),
2990
3065
  async parseCompleteOutput({ text: text2 }, context) {
@@ -3042,13 +3117,13 @@ var choice = ({
3042
3117
  };
3043
3118
  };
3044
3119
  var json = ({
3045
- name: name14,
3120
+ name: name16,
3046
3121
  description
3047
3122
  } = {}) => {
3048
3123
  return {
3049
3124
  responseFormat: Promise.resolve({
3050
3125
  type: "json",
3051
- ...name14 != null && { name: name14 },
3126
+ ...name16 != null && { name: name16 },
3052
3127
  ...description != null && { description }
3053
3128
  }),
3054
3129
  async parseCompleteOutput({ text: text2 }, context) {
@@ -3094,7 +3169,7 @@ async function parseToolCall({
3094
3169
  system,
3095
3170
  messages
3096
3171
  }) {
3097
- var _a14;
3172
+ var _a16;
3098
3173
  try {
3099
3174
  if (tools == null) {
3100
3175
  if (toolCall.providerExecuted && toolCall.dynamic) {
@@ -3143,7 +3218,7 @@ async function parseToolCall({
3143
3218
  dynamic: true,
3144
3219
  invalid: true,
3145
3220
  error,
3146
- title: (_a14 = tools == null ? void 0 : tools[toolCall.toolName]) == null ? void 0 : _a14.title,
3221
+ title: (_a16 = tools == null ? void 0 : tools[toolCall.toolName]) == null ? void 0 : _a16.title,
3147
3222
  providerExecuted: toolCall.providerExecuted,
3148
3223
  providerMetadata: toolCall.providerMetadata
3149
3224
  };
@@ -3282,8 +3357,8 @@ function stepCountIs(stepCount) {
3282
3357
  }
3283
3358
  function hasToolCall(toolName) {
3284
3359
  return ({ steps }) => {
3285
- var _a14, _b, _c;
3286
- return (_c = (_b = (_a14 = steps[steps.length - 1]) == null ? void 0 : _a14.toolCalls) == null ? void 0 : _b.some(
3360
+ var _a16, _b, _c;
3361
+ return (_c = (_b = (_a16 = steps[steps.length - 1]) == null ? void 0 : _a16.toolCalls) == null ? void 0 : _b.some(
3287
3362
  (toolCall) => toolCall.toolName === toolName
3288
3363
  )) != null ? _c : false;
3289
3364
  };
@@ -3303,7 +3378,13 @@ async function toResponseMessages({
3303
3378
  const responseMessages = [];
3304
3379
  const content = [];
3305
3380
  for (const part of inputContent) {
3306
- if (part.type === "source" || (part.type === "tool-result" || part.type === "tool-error") && !part.providerExecuted || part.type === "text" && part.text.length === 0) {
3381
+ if (part.type === "source") {
3382
+ continue;
3383
+ }
3384
+ if ((part.type === "tool-result" || part.type === "tool-error") && !part.providerExecuted) {
3385
+ continue;
3386
+ }
3387
+ if (part.type === "text" && part.text.length === 0) {
3307
3388
  continue;
3308
3389
  }
3309
3390
  switch (part.type) {
@@ -3497,13 +3578,16 @@ async function generateText({
3497
3578
  }),
3498
3579
  tracer,
3499
3580
  fn: async (span) => {
3500
- var _a14, _b, _c, _d, _e, _f, _g, _h;
3581
+ var _a16, _b, _c, _d, _e, _f, _g, _h;
3501
3582
  const initialMessages = initialPrompt.messages;
3502
3583
  const responseMessages = [];
3503
3584
  const { approvedToolApprovals, deniedToolApprovals } = collectToolApprovals({ messages: initialMessages });
3504
- if (deniedToolApprovals.length > 0 || approvedToolApprovals.length > 0) {
3585
+ const localApprovedToolApprovals = approvedToolApprovals.filter(
3586
+ (toolApproval) => !toolApproval.toolCall.providerExecuted
3587
+ );
3588
+ if (deniedToolApprovals.length > 0 || localApprovedToolApprovals.length > 0) {
3505
3589
  const toolOutputs = await executeTools({
3506
- toolCalls: approvedToolApprovals.map(
3590
+ toolCalls: localApprovedToolApprovals.map(
3507
3591
  (toolApproval) => toolApproval.toolCall
3508
3592
  ),
3509
3593
  tools,
@@ -3536,7 +3620,15 @@ async function generateText({
3536
3620
  toolName: toolApproval.toolCall.toolName,
3537
3621
  output: {
3538
3622
  type: "execution-denied",
3539
- reason: toolApproval.approvalResponse.reason
3623
+ reason: toolApproval.approvalResponse.reason,
3624
+ // For provider-executed tools, include approvalId so provider can correlate
3625
+ ...toolApproval.toolCall.providerExecuted && {
3626
+ providerOptions: {
3627
+ openai: {
3628
+ approvalId: toolApproval.approvalResponse.approvalId
3629
+ }
3630
+ }
3631
+ }
3540
3632
  }
3541
3633
  });
3542
3634
  }
@@ -3545,6 +3637,24 @@ async function generateText({
3545
3637
  content: toolContent
3546
3638
  });
3547
3639
  }
3640
+ const providerExecutedToolApprovals = [
3641
+ ...approvedToolApprovals,
3642
+ ...deniedToolApprovals
3643
+ ].filter((toolApproval) => toolApproval.toolCall.providerExecuted);
3644
+ if (providerExecutedToolApprovals.length > 0) {
3645
+ responseMessages.push({
3646
+ role: "tool",
3647
+ content: providerExecutedToolApprovals.map(
3648
+ (toolApproval) => ({
3649
+ type: "tool-approval-response",
3650
+ approvalId: toolApproval.approvalResponse.approvalId,
3651
+ approved: toolApproval.approvalResponse.approved,
3652
+ reason: toolApproval.approvalResponse.reason,
3653
+ providerExecuted: true
3654
+ })
3655
+ )
3656
+ });
3657
+ }
3548
3658
  const callSettings2 = prepareCallSettings(settings);
3549
3659
  let currentModelResponse;
3550
3660
  let clientToolCalls = [];
@@ -3561,7 +3671,7 @@ async function generateText({
3561
3671
  experimental_context
3562
3672
  }));
3563
3673
  const stepModel = resolveLanguageModel(
3564
- (_a14 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a14 : model
3674
+ (_a16 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a16 : model
3565
3675
  );
3566
3676
  const promptMessages = await convertToLanguageModelPrompt({
3567
3677
  prompt: {
@@ -3579,7 +3689,7 @@ async function generateText({
3579
3689
  });
3580
3690
  currentModelResponse = await retry(
3581
3691
  () => {
3582
- var _a15;
3692
+ var _a17;
3583
3693
  return recordSpan({
3584
3694
  name: "ai.generateText.doGenerate",
3585
3695
  attributes: selectTelemetryAttributes({
@@ -3611,14 +3721,14 @@ async function generateText({
3611
3721
  "gen_ai.request.max_tokens": settings.maxOutputTokens,
3612
3722
  "gen_ai.request.presence_penalty": settings.presencePenalty,
3613
3723
  "gen_ai.request.stop_sequences": settings.stopSequences,
3614
- "gen_ai.request.temperature": (_a15 = settings.temperature) != null ? _a15 : void 0,
3724
+ "gen_ai.request.temperature": (_a17 = settings.temperature) != null ? _a17 : void 0,
3615
3725
  "gen_ai.request.top_k": settings.topK,
3616
3726
  "gen_ai.request.top_p": settings.topP
3617
3727
  }
3618
3728
  }),
3619
3729
  tracer,
3620
3730
  fn: async (span2) => {
3621
- var _a16, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
3731
+ var _a18, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
3622
3732
  const stepProviderOptions = mergeObjects(
3623
3733
  providerOptions,
3624
3734
  prepareStepResult == null ? void 0 : prepareStepResult.providerOptions
@@ -3634,7 +3744,7 @@ async function generateText({
3634
3744
  headers: headersWithUserAgent
3635
3745
  });
3636
3746
  const responseData = {
3637
- id: (_b2 = (_a16 = result.response) == null ? void 0 : _a16.id) != null ? _b2 : generateId2(),
3747
+ id: (_b2 = (_a18 = result.response) == null ? void 0 : _a18.id) != null ? _b2 : generateId2(),
3638
3748
  timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : currentDate(),
3639
3749
  modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,
3640
3750
  headers: (_g2 = result.response) == null ? void 0 : _g2.headers,
@@ -4100,6 +4210,20 @@ function asContent({
4100
4210
  break;
4101
4211
  }
4102
4212
  case "tool-approval-request": {
4213
+ const toolCall = toolCalls.find(
4214
+ (toolCall2) => toolCall2.toolCallId === part.toolCallId
4215
+ );
4216
+ if (toolCall == null) {
4217
+ throw new ToolCallNotFoundForApprovalError({
4218
+ toolCallId: part.toolCallId,
4219
+ approvalId: part.approvalId
4220
+ });
4221
+ }
4222
+ contentParts.push({
4223
+ type: "tool-approval-request",
4224
+ approvalId: part.approvalId,
4225
+ toolCall
4226
+ });
4103
4227
  break;
4104
4228
  }
4105
4229
  }
@@ -4492,7 +4616,7 @@ function processUIMessageStream({
4492
4616
  new TransformStream({
4493
4617
  async transform(chunk, controller) {
4494
4618
  await runUpdateMessageJob(async ({ state, write }) => {
4495
- var _a14, _b, _c, _d;
4619
+ var _a16, _b, _c, _d;
4496
4620
  function getToolInvocation(toolCallId) {
4497
4621
  const toolInvocations = state.message.parts.filter(isToolUIPart);
4498
4622
  const toolInvocation = toolInvocations.find(
@@ -4506,7 +4630,7 @@ function processUIMessageStream({
4506
4630
  return toolInvocation;
4507
4631
  }
4508
4632
  function updateToolPart(options) {
4509
- var _a15;
4633
+ var _a17;
4510
4634
  const part = state.message.parts.find(
4511
4635
  (part2) => isStaticToolUIPart(part2) && part2.toolCallId === options.toolCallId
4512
4636
  );
@@ -4522,7 +4646,7 @@ function processUIMessageStream({
4522
4646
  if (options.title !== void 0) {
4523
4647
  anyPart.title = options.title;
4524
4648
  }
4525
- anyPart.providerExecuted = (_a15 = anyOptions.providerExecuted) != null ? _a15 : part.providerExecuted;
4649
+ anyPart.providerExecuted = (_a17 = anyOptions.providerExecuted) != null ? _a17 : part.providerExecuted;
4526
4650
  if (anyOptions.providerMetadata != null && part.state === "input-available") {
4527
4651
  part.callProviderMetadata = anyOptions.providerMetadata;
4528
4652
  }
@@ -4543,7 +4667,7 @@ function processUIMessageStream({
4543
4667
  }
4544
4668
  }
4545
4669
  function updateDynamicToolPart(options) {
4546
- var _a15, _b2;
4670
+ var _a17, _b2;
4547
4671
  const part = state.message.parts.find(
4548
4672
  (part2) => part2.type === "dynamic-tool" && part2.toolCallId === options.toolCallId
4549
4673
  );
@@ -4555,7 +4679,7 @@ function processUIMessageStream({
4555
4679
  anyPart.input = anyOptions.input;
4556
4680
  anyPart.output = anyOptions.output;
4557
4681
  anyPart.errorText = anyOptions.errorText;
4558
- anyPart.rawInput = (_a15 = anyOptions.rawInput) != null ? _a15 : anyPart.rawInput;
4682
+ anyPart.rawInput = (_a17 = anyOptions.rawInput) != null ? _a17 : anyPart.rawInput;
4559
4683
  anyPart.preliminary = anyOptions.preliminary;
4560
4684
  if (options.title !== void 0) {
4561
4685
  anyPart.title = options.title;
@@ -4608,7 +4732,7 @@ function processUIMessageStream({
4608
4732
  case "text-delta": {
4609
4733
  const textPart = state.activeTextParts[chunk.id];
4610
4734
  textPart.text += chunk.delta;
4611
- textPart.providerMetadata = (_a14 = chunk.providerMetadata) != null ? _a14 : textPart.providerMetadata;
4735
+ textPart.providerMetadata = (_a16 = chunk.providerMetadata) != null ? _a16 : textPart.providerMetadata;
4612
4736
  write();
4613
4737
  break;
4614
4738
  }
@@ -5047,11 +5171,11 @@ function createAsyncIterableStream(source) {
5047
5171
  const reader = this.getReader();
5048
5172
  let finished = false;
5049
5173
  async function cleanup(cancelStream) {
5050
- var _a14;
5174
+ var _a16;
5051
5175
  finished = true;
5052
5176
  try {
5053
5177
  if (cancelStream) {
5054
- await ((_a14 = reader.cancel) == null ? void 0 : _a14.call(reader));
5178
+ await ((_a16 = reader.cancel) == null ? void 0 : _a16.call(reader));
5055
5179
  }
5056
5180
  } finally {
5057
5181
  try {
@@ -5217,8 +5341,8 @@ function createStitchableStream() {
5217
5341
 
5218
5342
  // src/util/now.ts
5219
5343
  function now() {
5220
- var _a14, _b;
5221
- return (_b = (_a14 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a14.now()) != null ? _b : Date.now();
5344
+ var _a16, _b;
5345
+ return (_b = (_a16 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a16.now()) != null ? _b : Date.now();
5222
5346
  }
5223
5347
 
5224
5348
  // src/generate-text/run-tools-transformation.ts
@@ -5245,6 +5369,7 @@ function runToolsTransformation({
5245
5369
  });
5246
5370
  const outstandingToolResults = /* @__PURE__ */ new Set();
5247
5371
  const toolInputs = /* @__PURE__ */ new Map();
5372
+ const toolCallsByToolCallId = /* @__PURE__ */ new Map();
5248
5373
  let canClose = false;
5249
5374
  let finishChunk = void 0;
5250
5375
  function attemptClose() {
@@ -5296,6 +5421,25 @@ function runToolsTransformation({
5296
5421
  };
5297
5422
  break;
5298
5423
  }
5424
+ case "tool-approval-request": {
5425
+ const toolCall = toolCallsByToolCallId.get(chunk.toolCallId);
5426
+ if (toolCall == null) {
5427
+ toolResultsStreamController.enqueue({
5428
+ type: "error",
5429
+ error: new ToolCallNotFoundForApprovalError({
5430
+ toolCallId: chunk.toolCallId,
5431
+ approvalId: chunk.approvalId
5432
+ })
5433
+ });
5434
+ break;
5435
+ }
5436
+ controller.enqueue({
5437
+ type: "tool-approval-request",
5438
+ approvalId: chunk.approvalId,
5439
+ toolCall
5440
+ });
5441
+ break;
5442
+ }
5299
5443
  case "tool-call": {
5300
5444
  try {
5301
5445
  const toolCall = await parseToolCall({
@@ -5305,6 +5449,7 @@ function runToolsTransformation({
5305
5449
  system,
5306
5450
  messages
5307
5451
  });
5452
+ toolCallsByToolCallId.set(toolCall.toolCallId, toolCall);
5308
5453
  controller.enqueue(toolCall);
5309
5454
  if (toolCall.invalid) {
5310
5455
  toolResultsStreamController.enqueue({
@@ -5395,9 +5540,6 @@ function runToolsTransformation({
5395
5540
  }
5396
5541
  break;
5397
5542
  }
5398
- case "tool-approval-request": {
5399
- break;
5400
- }
5401
5543
  default: {
5402
5544
  const _exhaustiveCheck = chunkType;
5403
5545
  throw new Error(`Unhandled chunk type: ${_exhaustiveCheck}`);
@@ -5533,7 +5675,7 @@ function createOutputTransformStream(output) {
5533
5675
  }
5534
5676
  return new TransformStream({
5535
5677
  async transform(chunk, controller) {
5536
- var _a14;
5678
+ var _a16;
5537
5679
  if (chunk.type === "finish-step" && textChunk.length > 0) {
5538
5680
  publishTextChunk({ controller });
5539
5681
  }
@@ -5560,7 +5702,7 @@ function createOutputTransformStream(output) {
5560
5702
  }
5561
5703
  text2 += chunk.text;
5562
5704
  textChunk += chunk.text;
5563
- textProviderMetadata = (_a14 = chunk.providerMetadata) != null ? _a14 : textProviderMetadata;
5705
+ textProviderMetadata = (_a16 = chunk.providerMetadata) != null ? _a16 : textProviderMetadata;
5564
5706
  const result = await output.parsePartialOutput({ text: text2 });
5565
5707
  if (result !== void 0) {
5566
5708
  const currentJson = JSON.stringify(result.partial);
@@ -5626,7 +5768,7 @@ var DefaultStreamTextResult = class {
5626
5768
  let activeReasoningContent = {};
5627
5769
  const eventProcessor = new TransformStream({
5628
5770
  async transform(chunk, controller) {
5629
- var _a14, _b, _c, _d;
5771
+ var _a16, _b, _c, _d;
5630
5772
  controller.enqueue(chunk);
5631
5773
  const { part } = chunk;
5632
5774
  if (part.type === "text-delta" || part.type === "reasoning-delta" || part.type === "source" || part.type === "tool-call" || part.type === "tool-result" || part.type === "tool-input-start" || part.type === "tool-input-delta" || part.type === "raw") {
@@ -5656,7 +5798,7 @@ var DefaultStreamTextResult = class {
5656
5798
  return;
5657
5799
  }
5658
5800
  activeText.text += part.text;
5659
- activeText.providerMetadata = (_a14 = part.providerMetadata) != null ? _a14 : activeText.providerMetadata;
5801
+ activeText.providerMetadata = (_a16 = part.providerMetadata) != null ? _a16 : activeText.providerMetadata;
5660
5802
  }
5661
5803
  if (part.type === "text-end") {
5662
5804
  const activeText = activeTextContent[part.id];
@@ -5821,8 +5963,8 @@ var DefaultStreamTextResult = class {
5821
5963
  "ai.response.text": { output: () => finalStep.text },
5822
5964
  "ai.response.toolCalls": {
5823
5965
  output: () => {
5824
- var _a14;
5825
- return ((_a14 = finalStep.toolCalls) == null ? void 0 : _a14.length) ? JSON.stringify(finalStep.toolCalls) : void 0;
5966
+ var _a16;
5967
+ return ((_a16 = finalStep.toolCalls) == null ? void 0 : _a16.length) ? JSON.stringify(finalStep.toolCalls) : void 0;
5826
5968
  }
5827
5969
  },
5828
5970
  "ai.response.providerMetadata": JSON.stringify(
@@ -5930,6 +6072,19 @@ var DefaultStreamTextResult = class {
5930
6072
  const initialResponseMessages = [];
5931
6073
  const { approvedToolApprovals, deniedToolApprovals } = collectToolApprovals({ messages: initialMessages });
5932
6074
  if (deniedToolApprovals.length > 0 || approvedToolApprovals.length > 0) {
6075
+ const providerExecutedToolApprovals = [
6076
+ ...approvedToolApprovals,
6077
+ ...deniedToolApprovals
6078
+ ].filter((toolApproval) => toolApproval.toolCall.providerExecuted);
6079
+ const localApprovedToolApprovals = approvedToolApprovals.filter(
6080
+ (toolApproval) => !toolApproval.toolCall.providerExecuted
6081
+ );
6082
+ const localDeniedToolApprovals = deniedToolApprovals.filter(
6083
+ (toolApproval) => !toolApproval.toolCall.providerExecuted
6084
+ );
6085
+ const deniedProviderExecutedToolApprovals = deniedToolApprovals.filter(
6086
+ (toolApproval) => toolApproval.toolCall.providerExecuted
6087
+ );
5933
6088
  let toolExecutionStepStreamController;
5934
6089
  const toolExecutionStepStream = new ReadableStream({
5935
6090
  start(controller) {
@@ -5938,7 +6093,10 @@ var DefaultStreamTextResult = class {
5938
6093
  });
5939
6094
  self.addStream(toolExecutionStepStream);
5940
6095
  try {
5941
- for (const toolApproval of deniedToolApprovals) {
6096
+ for (const toolApproval of [
6097
+ ...localDeniedToolApprovals,
6098
+ ...deniedProviderExecutedToolApprovals
6099
+ ]) {
5942
6100
  toolExecutionStepStreamController == null ? void 0 : toolExecutionStepStreamController.enqueue({
5943
6101
  type: "tool-output-denied",
5944
6102
  toolCallId: toolApproval.toolCall.toolCallId,
@@ -5947,7 +6105,7 @@ var DefaultStreamTextResult = class {
5947
6105
  }
5948
6106
  const toolOutputs = [];
5949
6107
  await Promise.all(
5950
- approvedToolApprovals.map(async (toolApproval) => {
6108
+ localApprovedToolApprovals.map(async (toolApproval) => {
5951
6109
  const result = await executeToolCall({
5952
6110
  toolCall: toolApproval.toolCall,
5953
6111
  tools,
@@ -5966,36 +6124,52 @@ var DefaultStreamTextResult = class {
5966
6124
  }
5967
6125
  })
5968
6126
  );
5969
- const content = [];
5970
- for (const output2 of toolOutputs) {
5971
- content.push({
5972
- type: "tool-result",
5973
- toolCallId: output2.toolCallId,
5974
- toolName: output2.toolName,
5975
- output: await createToolModelOutput({
5976
- toolCallId: output2.toolCallId,
5977
- input: output2.input,
5978
- tool: tools == null ? void 0 : tools[output2.toolName],
5979
- output: output2.type === "tool-result" ? output2.output : output2.error,
5980
- errorMode: output2.type === "tool-error" ? "json" : "none"
5981
- })
6127
+ if (providerExecutedToolApprovals.length > 0) {
6128
+ initialResponseMessages.push({
6129
+ role: "tool",
6130
+ content: providerExecutedToolApprovals.map(
6131
+ (toolApproval) => ({
6132
+ type: "tool-approval-response",
6133
+ approvalId: toolApproval.approvalResponse.approvalId,
6134
+ approved: toolApproval.approvalResponse.approved,
6135
+ reason: toolApproval.approvalResponse.reason,
6136
+ providerExecuted: true
6137
+ })
6138
+ )
5982
6139
  });
5983
6140
  }
5984
- for (const toolApproval of deniedToolApprovals) {
5985
- content.push({
5986
- type: "tool-result",
5987
- toolCallId: toolApproval.toolCall.toolCallId,
5988
- toolName: toolApproval.toolCall.toolName,
5989
- output: {
5990
- type: "execution-denied",
5991
- reason: toolApproval.approvalResponse.reason
5992
- }
6141
+ if (toolOutputs.length > 0 || localDeniedToolApprovals.length > 0) {
6142
+ const localToolContent = [];
6143
+ for (const output2 of toolOutputs) {
6144
+ localToolContent.push({
6145
+ type: "tool-result",
6146
+ toolCallId: output2.toolCallId,
6147
+ toolName: output2.toolName,
6148
+ output: await createToolModelOutput({
6149
+ toolCallId: output2.toolCallId,
6150
+ input: output2.input,
6151
+ tool: tools == null ? void 0 : tools[output2.toolName],
6152
+ output: output2.type === "tool-result" ? output2.output : output2.error,
6153
+ errorMode: output2.type === "tool-error" ? "json" : "none"
6154
+ })
6155
+ });
6156
+ }
6157
+ for (const toolApproval of localDeniedToolApprovals) {
6158
+ localToolContent.push({
6159
+ type: "tool-result",
6160
+ toolCallId: toolApproval.toolCall.toolCallId,
6161
+ toolName: toolApproval.toolCall.toolName,
6162
+ output: {
6163
+ type: "execution-denied",
6164
+ reason: toolApproval.approvalResponse.reason
6165
+ }
6166
+ });
6167
+ }
6168
+ initialResponseMessages.push({
6169
+ role: "tool",
6170
+ content: localToolContent
5993
6171
  });
5994
6172
  }
5995
- initialResponseMessages.push({
5996
- role: "tool",
5997
- content
5998
- });
5999
6173
  } finally {
6000
6174
  toolExecutionStepStreamController == null ? void 0 : toolExecutionStepStreamController.close();
6001
6175
  }
@@ -6006,7 +6180,7 @@ var DefaultStreamTextResult = class {
6006
6180
  responseMessages,
6007
6181
  usage
6008
6182
  }) {
6009
- var _a14, _b, _c, _d, _e, _f;
6183
+ var _a16, _b, _c, _d, _e, _f;
6010
6184
  const includeRawChunks2 = self.includeRawChunks;
6011
6185
  stepFinish = new DelayedPromise();
6012
6186
  const stepInputMessages = [...initialMessages, ...responseMessages];
@@ -6018,7 +6192,7 @@ var DefaultStreamTextResult = class {
6018
6192
  experimental_context
6019
6193
  }));
6020
6194
  const stepModel = resolveLanguageModel(
6021
- (_a14 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a14 : model
6195
+ (_a16 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a16 : model
6022
6196
  );
6023
6197
  const promptMessages = await convertToLanguageModelPrompt({
6024
6198
  prompt: {
@@ -6131,7 +6305,7 @@ var DefaultStreamTextResult = class {
6131
6305
  streamWithToolResults.pipeThrough(
6132
6306
  new TransformStream({
6133
6307
  async transform(chunk, controller) {
6134
- var _a15, _b2, _c2, _d2, _e2;
6308
+ var _a17, _b2, _c2, _d2, _e2;
6135
6309
  if (chunk.type === "stream-start") {
6136
6310
  warnings = chunk.warnings;
6137
6311
  return;
@@ -6204,7 +6378,7 @@ var DefaultStreamTextResult = class {
6204
6378
  }
6205
6379
  case "response-metadata": {
6206
6380
  stepResponse = {
6207
- id: (_a15 = chunk.id) != null ? _a15 : stepResponse.id,
6381
+ id: (_a17 = chunk.id) != null ? _a17 : stepResponse.id,
6208
6382
  timestamp: (_b2 = chunk.timestamp) != null ? _b2 : stepResponse.timestamp,
6209
6383
  modelId: (_c2 = chunk.modelId) != null ? _c2 : stepResponse.modelId
6210
6384
  };
@@ -6534,14 +6708,14 @@ var DefaultStreamTextResult = class {
6534
6708
  );
6535
6709
  }
6536
6710
  async consumeStream(options) {
6537
- var _a14;
6711
+ var _a16;
6538
6712
  try {
6539
6713
  await consumeStream({
6540
6714
  stream: this.fullStream,
6541
6715
  onError: options == null ? void 0 : options.onError
6542
6716
  });
6543
6717
  } catch (error) {
6544
- (_a14 = options == null ? void 0 : options.onError) == null ? void 0 : _a14.call(options, error);
6718
+ (_a16 = options == null ? void 0 : options.onError) == null ? void 0 : _a16.call(options, error);
6545
6719
  }
6546
6720
  }
6547
6721
  get experimental_partialOutputStream() {
@@ -6562,8 +6736,8 @@ var DefaultStreamTextResult = class {
6562
6736
  }
6563
6737
  get output() {
6564
6738
  return this.finalStep.then((step) => {
6565
- var _a14;
6566
- const output = (_a14 = this.outputSpecification) != null ? _a14 : text();
6739
+ var _a16;
6740
+ const output = (_a16 = this.outputSpecification) != null ? _a16 : text();
6567
6741
  return output.parseCompleteOutput(
6568
6742
  { text: step.text },
6569
6743
  {
@@ -6590,8 +6764,8 @@ var DefaultStreamTextResult = class {
6590
6764
  responseMessageId: generateMessageId
6591
6765
  }) : void 0;
6592
6766
  const isDynamic = (part) => {
6593
- var _a14;
6594
- const tool2 = (_a14 = this.tools) == null ? void 0 : _a14[part.toolName];
6767
+ var _a16;
6768
+ const tool2 = (_a16 = this.tools) == null ? void 0 : _a16[part.toolName];
6595
6769
  if (tool2 == null) {
6596
6770
  return part.dynamic;
6597
6771
  }
@@ -6929,10 +7103,10 @@ var ToolLoopAgent = class {
6929
7103
  return this.settings.tools;
6930
7104
  }
6931
7105
  async prepareCall(options) {
6932
- var _a14, _b, _c, _d;
7106
+ var _a16, _b, _c, _d;
6933
7107
  const baseCallArgs = {
6934
7108
  ...this.settings,
6935
- stopWhen: (_a14 = this.settings.stopWhen) != null ? _a14 : stepCountIs(20),
7109
+ stopWhen: (_a16 = this.settings.stopWhen) != null ? _a16 : stepCountIs(20),
6936
7110
  ...options
6937
7111
  };
6938
7112
  const preparedCallArgs = (_d = await ((_c = (_b = this.settings).prepareCall) == null ? void 0 : _c.call(_b, baseCallArgs))) != null ? _d : baseCallArgs;
@@ -7067,7 +7241,7 @@ function readUIMessageStream({
7067
7241
  onError,
7068
7242
  terminateOnError = false
7069
7243
  }) {
7070
- var _a14;
7244
+ var _a16;
7071
7245
  let controller;
7072
7246
  let hasErrored = false;
7073
7247
  const outputStream = new ReadableStream({
@@ -7076,7 +7250,7 @@ function readUIMessageStream({
7076
7250
  }
7077
7251
  });
7078
7252
  const state = createStreamingUIMessageState({
7079
- messageId: (_a14 = message == null ? void 0 : message.id) != null ? _a14 : "",
7253
+ messageId: (_a16 = message == null ? void 0 : message.id) != null ? _a16 : "",
7080
7254
  lastMessage: message
7081
7255
  });
7082
7256
  const handleError = (error) => {
@@ -7145,7 +7319,7 @@ async function convertToModelMessages(messages, options) {
7145
7319
  modelMessages.push({
7146
7320
  role: "user",
7147
7321
  content: message.parts.map((part) => {
7148
- var _a14;
7322
+ var _a16;
7149
7323
  if (isTextUIPart(part)) {
7150
7324
  return {
7151
7325
  type: "text",
@@ -7163,7 +7337,7 @@ async function convertToModelMessages(messages, options) {
7163
7337
  };
7164
7338
  }
7165
7339
  if (isDataUIPart(part)) {
7166
- return (_a14 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a14.call(
7340
+ return (_a16 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a16.call(
7167
7341
  options,
7168
7342
  part
7169
7343
  );
@@ -7176,7 +7350,7 @@ async function convertToModelMessages(messages, options) {
7176
7350
  if (message.parts != null) {
7177
7351
  let block = [];
7178
7352
  async function processBlock() {
7179
- var _a14, _b, _c, _d, _e, _f;
7353
+ var _a16, _b, _c, _d, _e, _f;
7180
7354
  if (block.length === 0) {
7181
7355
  return;
7182
7356
  }
@@ -7208,7 +7382,7 @@ async function convertToModelMessages(messages, options) {
7208
7382
  type: "tool-call",
7209
7383
  toolCallId: part.toolCallId,
7210
7384
  toolName,
7211
- input: part.state === "output-error" ? (_a14 = part.input) != null ? _a14 : "rawInput" in part ? part.rawInput : void 0 : part.input,
7385
+ input: part.state === "output-error" ? (_a16 = part.input) != null ? _a16 : "rawInput" in part ? part.rawInput : void 0 : part.input,
7212
7386
  providerExecuted: part.providerExecuted,
7213
7387
  ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
7214
7388
  });
@@ -7219,7 +7393,7 @@ async function convertToModelMessages(messages, options) {
7219
7393
  toolCallId: part.toolCallId
7220
7394
  });
7221
7395
  }
7222
- if (part.providerExecuted === true && (part.state === "output-available" || part.state === "output-error")) {
7396
+ if (part.providerExecuted === true && part.state !== "approval-responded" && (part.state === "output-available" || part.state === "output-error")) {
7223
7397
  content.push({
7224
7398
  type: "tool-result",
7225
7399
  toolCallId: part.toolCallId,
@@ -7253,7 +7427,10 @@ async function convertToModelMessages(messages, options) {
7253
7427
  content
7254
7428
  });
7255
7429
  const toolParts = block.filter(
7256
- (part) => isToolUIPart(part) && part.providerExecuted !== true
7430
+ (part) => {
7431
+ var _a17;
7432
+ return isToolUIPart(part) && (part.providerExecuted !== true || ((_a17 = part.approval) == null ? void 0 : _a17.approved) != null);
7433
+ }
7257
7434
  );
7258
7435
  if (toolParts.length > 0) {
7259
7436
  {
@@ -7264,9 +7441,13 @@ async function convertToModelMessages(messages, options) {
7264
7441
  type: "tool-approval-response",
7265
7442
  approvalId: toolPart.approval.id,
7266
7443
  approved: toolPart.approval.approved,
7267
- reason: toolPart.approval.reason
7444
+ reason: toolPart.approval.reason,
7445
+ providerExecuted: toolPart.providerExecuted
7268
7446
  });
7269
7447
  }
7448
+ if (toolPart.providerExecuted === true) {
7449
+ continue;
7450
+ }
7270
7451
  switch (toolPart.state) {
7271
7452
  case "output-denied": {
7272
7453
  content2.push({
@@ -7301,10 +7482,12 @@ async function convertToModelMessages(messages, options) {
7301
7482
  }
7302
7483
  }
7303
7484
  }
7304
- modelMessages.push({
7305
- role: "tool",
7306
- content: content2
7307
- });
7485
+ if (content2.length > 0) {
7486
+ modelMessages.push({
7487
+ role: "tool",
7488
+ content: content2
7489
+ });
7490
+ }
7308
7491
  }
7309
7492
  }
7310
7493
  block = [];
@@ -7832,7 +8015,7 @@ async function embed({
7832
8015
  }),
7833
8016
  tracer,
7834
8017
  fn: async (doEmbedSpan) => {
7835
- var _a14;
8018
+ var _a16;
7836
8019
  const modelResponse = await model.doEmbed({
7837
8020
  values: [value],
7838
8021
  abortSignal,
@@ -7840,7 +8023,7 @@ async function embed({
7840
8023
  providerOptions
7841
8024
  });
7842
8025
  const embedding2 = modelResponse.embeddings[0];
7843
- const usage2 = (_a14 = modelResponse.usage) != null ? _a14 : { tokens: NaN };
8026
+ const usage2 = (_a16 = modelResponse.usage) != null ? _a16 : { tokens: NaN };
7844
8027
  doEmbedSpan.setAttributes(
7845
8028
  await selectTelemetryAttributes({
7846
8029
  telemetry,
@@ -7954,7 +8137,7 @@ async function embedMany({
7954
8137
  }),
7955
8138
  tracer,
7956
8139
  fn: async (span) => {
7957
- var _a14;
8140
+ var _a16;
7958
8141
  const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([
7959
8142
  model.maxEmbeddingsPerCall,
7960
8143
  model.supportsParallelCalls
@@ -7979,7 +8162,7 @@ async function embedMany({
7979
8162
  }),
7980
8163
  tracer,
7981
8164
  fn: async (doEmbedSpan) => {
7982
- var _a15;
8165
+ var _a17;
7983
8166
  const modelResponse = await model.doEmbed({
7984
8167
  values,
7985
8168
  abortSignal,
@@ -7987,7 +8170,7 @@ async function embedMany({
7987
8170
  providerOptions
7988
8171
  });
7989
8172
  const embeddings3 = modelResponse.embeddings;
7990
- const usage2 = (_a15 = modelResponse.usage) != null ? _a15 : { tokens: NaN };
8173
+ const usage2 = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };
7991
8174
  doEmbedSpan.setAttributes(
7992
8175
  await selectTelemetryAttributes({
7993
8176
  telemetry,
@@ -8068,7 +8251,7 @@ async function embedMany({
8068
8251
  }),
8069
8252
  tracer,
8070
8253
  fn: async (doEmbedSpan) => {
8071
- var _a15;
8254
+ var _a17;
8072
8255
  const modelResponse = await model.doEmbed({
8073
8256
  values: chunk,
8074
8257
  abortSignal,
@@ -8076,7 +8259,7 @@ async function embedMany({
8076
8259
  providerOptions
8077
8260
  });
8078
8261
  const embeddings2 = modelResponse.embeddings;
8079
- const usage = (_a15 = modelResponse.usage) != null ? _a15 : { tokens: NaN };
8262
+ const usage = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };
8080
8263
  doEmbedSpan.setAttributes(
8081
8264
  await selectTelemetryAttributes({
8082
8265
  telemetry,
@@ -8115,7 +8298,7 @@ async function embedMany({
8115
8298
  result.providerMetadata
8116
8299
  )) {
8117
8300
  providerMetadata[providerName] = {
8118
- ...(_a14 = providerMetadata[providerName]) != null ? _a14 : {},
8301
+ ...(_a16 = providerMetadata[providerName]) != null ? _a16 : {},
8119
8302
  ...metadata
8120
8303
  };
8121
8304
  }
@@ -8179,7 +8362,7 @@ async function generateImage({
8179
8362
  abortSignal,
8180
8363
  headers
8181
8364
  }) {
8182
- var _a14, _b;
8365
+ var _a16, _b;
8183
8366
  const model = resolveImageModel(modelArg);
8184
8367
  const headersWithUserAgent = withUserAgentSuffix5(
8185
8368
  headers != null ? headers : {},
@@ -8189,7 +8372,7 @@ async function generateImage({
8189
8372
  maxRetries: maxRetriesArg,
8190
8373
  abortSignal
8191
8374
  });
8192
- const maxImagesPerCallWithDefault = (_a14 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a14 : 1;
8375
+ const maxImagesPerCallWithDefault = (_a16 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a16 : 1;
8193
8376
  const callCount = Math.ceil(n / maxImagesPerCallWithDefault);
8194
8377
  const callImageCounts = Array.from({ length: callCount }, (_, i) => {
8195
8378
  if (i < callCount - 1) {
@@ -8230,13 +8413,13 @@ async function generateImage({
8230
8413
  images.push(
8231
8414
  ...result.images.map(
8232
8415
  (image) => {
8233
- var _a15;
8416
+ var _a17;
8234
8417
  return new DefaultGeneratedFile({
8235
8418
  data: image,
8236
- mediaType: (_a15 = detectMediaType({
8419
+ mediaType: (_a17 = detectMediaType({
8237
8420
  data: image,
8238
8421
  signatures: imageMediaTypeSignatures
8239
- })) != null ? _a15 : "image/png"
8422
+ })) != null ? _a17 : "image/png"
8240
8423
  });
8241
8424
  }
8242
8425
  )
@@ -8444,7 +8627,7 @@ var arrayOutputStrategy = (schema) => {
8444
8627
  isFirstDelta,
8445
8628
  isFinalDelta
8446
8629
  }) {
8447
- var _a14;
8630
+ var _a16;
8448
8631
  if (!isJSONObject(value) || !isJSONArray(value.elements)) {
8449
8632
  return {
8450
8633
  success: false,
@@ -8467,7 +8650,7 @@ var arrayOutputStrategy = (schema) => {
8467
8650
  }
8468
8651
  resultArray.push(result.value);
8469
8652
  }
8470
- const publishedElementCount = (_a14 = latestObject == null ? void 0 : latestObject.length) != null ? _a14 : 0;
8653
+ const publishedElementCount = (_a16 = latestObject == null ? void 0 : latestObject.length) != null ? _a16 : 0;
8471
8654
  let textDelta = "";
8472
8655
  if (isFirstDelta) {
8473
8656
  textDelta += "[";
@@ -8887,7 +9070,7 @@ async function generateObject(options) {
8887
9070
  }),
8888
9071
  tracer,
8889
9072
  fn: async (span) => {
8890
- var _a14;
9073
+ var _a16;
8891
9074
  let result;
8892
9075
  let finishReason;
8893
9076
  let usage;
@@ -8933,7 +9116,7 @@ async function generateObject(options) {
8933
9116
  }),
8934
9117
  tracer,
8935
9118
  fn: async (span2) => {
8936
- var _a15, _b, _c, _d, _e, _f, _g, _h;
9119
+ var _a17, _b, _c, _d, _e, _f, _g, _h;
8937
9120
  const result2 = await model.doGenerate({
8938
9121
  responseFormat: {
8939
9122
  type: "json",
@@ -8948,7 +9131,7 @@ async function generateObject(options) {
8948
9131
  headers: headersWithUserAgent
8949
9132
  });
8950
9133
  const responseData = {
8951
- id: (_b = (_a15 = result2.response) == null ? void 0 : _a15.id) != null ? _b : generateId2(),
9134
+ id: (_b = (_a17 = result2.response) == null ? void 0 : _a17.id) != null ? _b : generateId2(),
8952
9135
  timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
8953
9136
  modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,
8954
9137
  headers: (_g = result2.response) == null ? void 0 : _g.headers,
@@ -9004,7 +9187,7 @@ async function generateObject(options) {
9004
9187
  usage = asLanguageModelUsage(generateResult.usage);
9005
9188
  warnings = generateResult.warnings;
9006
9189
  resultProviderMetadata = generateResult.providerMetadata;
9007
- request = (_a14 = generateResult.request) != null ? _a14 : {};
9190
+ request = (_a16 = generateResult.request) != null ? _a16 : {};
9008
9191
  response = generateResult.responseData;
9009
9192
  reasoning = generateResult.reasoning;
9010
9193
  logWarnings({
@@ -9067,9 +9250,9 @@ var DefaultGenerateObjectResult = class {
9067
9250
  this.reasoning = options.reasoning;
9068
9251
  }
9069
9252
  toJsonResponse(init) {
9070
- var _a14;
9253
+ var _a16;
9071
9254
  return new Response(JSON.stringify(this.object), {
9072
- status: (_a14 = init == null ? void 0 : init.status) != null ? _a14 : 200,
9255
+ status: (_a16 = init == null ? void 0 : init.status) != null ? _a16 : 200,
9073
9256
  headers: prepareHeaders(init == null ? void 0 : init.headers, {
9074
9257
  "content-type": "application/json; charset=utf-8"
9075
9258
  })
@@ -9198,8 +9381,8 @@ function simulateReadableStream({
9198
9381
  chunkDelayInMs = 0,
9199
9382
  _internal
9200
9383
  }) {
9201
- var _a14;
9202
- const delay2 = (_a14 = _internal == null ? void 0 : _internal.delay) != null ? _a14 : delayFunction;
9384
+ var _a16;
9385
+ const delay2 = (_a16 = _internal == null ? void 0 : _internal.delay) != null ? _a16 : delayFunction;
9203
9386
  let index = 0;
9204
9387
  return new ReadableStream({
9205
9388
  async pull(controller) {
@@ -9457,7 +9640,7 @@ var DefaultStreamObjectResult = class {
9457
9640
  const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
9458
9641
  new TransformStream({
9459
9642
  async transform(chunk, controller) {
9460
- var _a14, _b, _c;
9643
+ var _a16, _b, _c;
9461
9644
  if (typeof chunk === "object" && chunk.type === "stream-start") {
9462
9645
  warnings = chunk.warnings;
9463
9646
  return;
@@ -9507,7 +9690,7 @@ var DefaultStreamObjectResult = class {
9507
9690
  switch (chunk.type) {
9508
9691
  case "response-metadata": {
9509
9692
  fullResponse = {
9510
- id: (_a14 = chunk.id) != null ? _a14 : fullResponse.id,
9693
+ id: (_a16 = chunk.id) != null ? _a16 : fullResponse.id,
9511
9694
  timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,
9512
9695
  modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId
9513
9696
  };
@@ -9779,7 +9962,7 @@ async function generateSpeech({
9779
9962
  abortSignal,
9780
9963
  headers
9781
9964
  }) {
9782
- var _a14;
9965
+ var _a16;
9783
9966
  const resolvedModel = resolveSpeechModel(model);
9784
9967
  if (!resolvedModel) {
9785
9968
  throw new Error("Model could not be resolved");
@@ -9816,10 +9999,10 @@ async function generateSpeech({
9816
9999
  return new DefaultSpeechResult({
9817
10000
  audio: new DefaultGeneratedAudioFile({
9818
10001
  data: result.audio,
9819
- mediaType: (_a14 = detectMediaType({
10002
+ mediaType: (_a16 = detectMediaType({
9820
10003
  data: result.audio,
9821
10004
  signatures: audioMediaTypeSignatures
9822
- })) != null ? _a14 : "audio/mp3"
10005
+ })) != null ? _a16 : "audio/mp3"
9823
10006
  }),
9824
10007
  warnings: result.warnings,
9825
10008
  responses: [result.response],
@@ -9828,11 +10011,11 @@ async function generateSpeech({
9828
10011
  }
9829
10012
  var DefaultSpeechResult = class {
9830
10013
  constructor(options) {
9831
- var _a14;
10014
+ var _a16;
9832
10015
  this.audio = options.audio;
9833
10016
  this.warnings = options.warnings;
9834
10017
  this.responses = options.responses;
9835
- this.providerMetadata = (_a14 = options.providerMetadata) != null ? _a14 : {};
10018
+ this.providerMetadata = (_a16 = options.providerMetadata) != null ? _a16 : {};
9836
10019
  }
9837
10020
  };
9838
10021
 
@@ -10264,13 +10447,13 @@ function addToolInputExamplesMiddleware({
10264
10447
  return {
10265
10448
  specificationVersion: "v3",
10266
10449
  transformParams: async ({ params }) => {
10267
- var _a14;
10268
- if (!((_a14 = params.tools) == null ? void 0 : _a14.length)) {
10450
+ var _a16;
10451
+ if (!((_a16 = params.tools) == null ? void 0 : _a16.length)) {
10269
10452
  return params;
10270
10453
  }
10271
10454
  const transformedTools = params.tools.map((tool2) => {
10272
- var _a15;
10273
- if (tool2.type !== "function" || !((_a15 = tool2.inputExamples) == null ? void 0 : _a15.length)) {
10455
+ var _a17;
10456
+ if (tool2.type !== "function" || !((_a17 = tool2.inputExamples) == null ? void 0 : _a17.length)) {
10274
10457
  return tool2;
10275
10458
  }
10276
10459
  const formattedExamples = tool2.inputExamples.map((example, index) => format(example, index)).join("\n");
@@ -10317,7 +10500,7 @@ var doWrap = ({
10317
10500
  modelId,
10318
10501
  providerId
10319
10502
  }) => {
10320
- var _a14, _b, _c;
10503
+ var _a16, _b, _c;
10321
10504
  async function doTransform({
10322
10505
  params,
10323
10506
  type
@@ -10326,7 +10509,7 @@ var doWrap = ({
10326
10509
  }
10327
10510
  return {
10328
10511
  specificationVersion: "v3",
10329
- provider: (_a14 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a14 : model.provider,
10512
+ provider: (_a16 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a16 : model.provider,
10330
10513
  modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
10331
10514
  supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
10332
10515
  async doGenerate(params) {
@@ -10373,7 +10556,7 @@ var doWrap2 = ({
10373
10556
  modelId,
10374
10557
  providerId
10375
10558
  }) => {
10376
- var _a14, _b, _c, _d;
10559
+ var _a16, _b, _c, _d;
10377
10560
  async function doTransform({
10378
10561
  params
10379
10562
  }) {
@@ -10381,7 +10564,7 @@ var doWrap2 = ({
10381
10564
  }
10382
10565
  return {
10383
10566
  specificationVersion: "v3",
10384
- provider: (_a14 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a14 : model.provider,
10567
+ provider: (_a16 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a16 : model.provider,
10385
10568
  modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
10386
10569
  maxEmbeddingsPerCall: (_c = overrideMaxEmbeddingsPerCall == null ? void 0 : overrideMaxEmbeddingsPerCall({ model })) != null ? _c : model.maxEmbeddingsPerCall,
10387
10570
  supportsParallelCalls: (_d = overrideSupportsParallelCalls == null ? void 0 : overrideSupportsParallelCalls({ model })) != null ? _d : model.supportsParallelCalls,
@@ -10510,11 +10693,11 @@ function customProvider({
10510
10693
  var experimental_customProvider = customProvider;
10511
10694
 
10512
10695
  // src/registry/no-such-provider-error.ts
10513
- import { AISDKError as AISDKError18, NoSuchModelError as NoSuchModelError3 } from "@ai-sdk/provider";
10514
- var name13 = "AI_NoSuchProviderError";
10515
- var marker13 = `vercel.ai.error.${name13}`;
10516
- var symbol13 = Symbol.for(marker13);
10517
- var _a13;
10696
+ import { AISDKError as AISDKError20, NoSuchModelError as NoSuchModelError3 } from "@ai-sdk/provider";
10697
+ var name15 = "AI_NoSuchProviderError";
10698
+ var marker15 = `vercel.ai.error.${name15}`;
10699
+ var symbol15 = Symbol.for(marker15);
10700
+ var _a15;
10518
10701
  var NoSuchProviderError = class extends NoSuchModelError3 {
10519
10702
  constructor({
10520
10703
  modelId,
@@ -10523,16 +10706,16 @@ var NoSuchProviderError = class extends NoSuchModelError3 {
10523
10706
  availableProviders,
10524
10707
  message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
10525
10708
  }) {
10526
- super({ errorName: name13, modelId, modelType, message });
10527
- this[_a13] = true;
10709
+ super({ errorName: name15, modelId, modelType, message });
10710
+ this[_a15] = true;
10528
10711
  this.providerId = providerId;
10529
10712
  this.availableProviders = availableProviders;
10530
10713
  }
10531
10714
  static isInstance(error) {
10532
- return AISDKError18.hasMarker(error, marker13);
10715
+ return AISDKError20.hasMarker(error, marker15);
10533
10716
  }
10534
10717
  };
10535
- _a13 = symbol13;
10718
+ _a15 = symbol15;
10536
10719
 
10537
10720
  // src/registry/provider-registry.ts
10538
10721
  import {
@@ -10591,10 +10774,10 @@ var DefaultProviderRegistry = class {
10591
10774
  return [id.slice(0, index), id.slice(index + this.separator.length)];
10592
10775
  }
10593
10776
  languageModel(id) {
10594
- var _a14, _b;
10777
+ var _a16, _b;
10595
10778
  const [providerId, modelId] = this.splitId(id, "languageModel");
10596
- let model = (_b = (_a14 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
10597
- _a14,
10779
+ let model = (_b = (_a16 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
10780
+ _a16,
10598
10781
  modelId
10599
10782
  );
10600
10783
  if (model == null) {
@@ -10609,10 +10792,10 @@ var DefaultProviderRegistry = class {
10609
10792
  return model;
10610
10793
  }
10611
10794
  embeddingModel(id) {
10612
- var _a14;
10795
+ var _a16;
10613
10796
  const [providerId, modelId] = this.splitId(id, "embeddingModel");
10614
10797
  const provider = this.getProvider(providerId, "embeddingModel");
10615
- const model = (_a14 = provider.embeddingModel) == null ? void 0 : _a14.call(provider, modelId);
10798
+ const model = (_a16 = provider.embeddingModel) == null ? void 0 : _a16.call(provider, modelId);
10616
10799
  if (model == null) {
10617
10800
  throw new NoSuchModelError4({
10618
10801
  modelId: id,
@@ -10622,20 +10805,20 @@ var DefaultProviderRegistry = class {
10622
10805
  return model;
10623
10806
  }
10624
10807
  imageModel(id) {
10625
- var _a14;
10808
+ var _a16;
10626
10809
  const [providerId, modelId] = this.splitId(id, "imageModel");
10627
10810
  const provider = this.getProvider(providerId, "imageModel");
10628
- const model = (_a14 = provider.imageModel) == null ? void 0 : _a14.call(provider, modelId);
10811
+ const model = (_a16 = provider.imageModel) == null ? void 0 : _a16.call(provider, modelId);
10629
10812
  if (model == null) {
10630
10813
  throw new NoSuchModelError4({ modelId: id, modelType: "imageModel" });
10631
10814
  }
10632
10815
  return model;
10633
10816
  }
10634
10817
  transcriptionModel(id) {
10635
- var _a14;
10818
+ var _a16;
10636
10819
  const [providerId, modelId] = this.splitId(id, "transcriptionModel");
10637
10820
  const provider = this.getProvider(providerId, "transcriptionModel");
10638
- const model = (_a14 = provider.transcriptionModel) == null ? void 0 : _a14.call(provider, modelId);
10821
+ const model = (_a16 = provider.transcriptionModel) == null ? void 0 : _a16.call(provider, modelId);
10639
10822
  if (model == null) {
10640
10823
  throw new NoSuchModelError4({
10641
10824
  modelId: id,
@@ -10645,20 +10828,20 @@ var DefaultProviderRegistry = class {
10645
10828
  return model;
10646
10829
  }
10647
10830
  speechModel(id) {
10648
- var _a14;
10831
+ var _a16;
10649
10832
  const [providerId, modelId] = this.splitId(id, "speechModel");
10650
10833
  const provider = this.getProvider(providerId, "speechModel");
10651
- const model = (_a14 = provider.speechModel) == null ? void 0 : _a14.call(provider, modelId);
10834
+ const model = (_a16 = provider.speechModel) == null ? void 0 : _a16.call(provider, modelId);
10652
10835
  if (model == null) {
10653
10836
  throw new NoSuchModelError4({ modelId: id, modelType: "speechModel" });
10654
10837
  }
10655
10838
  return model;
10656
10839
  }
10657
10840
  rerankingModel(id) {
10658
- var _a14;
10841
+ var _a16;
10659
10842
  const [providerId, modelId] = this.splitId(id, "rerankingModel");
10660
10843
  const provider = this.getProvider(providerId, "rerankingModel");
10661
- const model = (_a14 = provider.rerankingModel) == null ? void 0 : _a14.call(provider, modelId);
10844
+ const model = (_a16 = provider.rerankingModel) == null ? void 0 : _a16.call(provider, modelId);
10662
10845
  if (model == null) {
10663
10846
  throw new NoSuchModelError4({ modelId: id, modelType: "rerankingModel" });
10664
10847
  }
@@ -10715,7 +10898,7 @@ async function rerank({
10715
10898
  }),
10716
10899
  tracer,
10717
10900
  fn: async () => {
10718
- var _a14, _b;
10901
+ var _a16, _b;
10719
10902
  const { ranking, response, providerMetadata, warnings } = await retry(
10720
10903
  () => recordSpan({
10721
10904
  name: "ai.rerank.doRerank",
@@ -10779,7 +10962,7 @@ async function rerank({
10779
10962
  providerMetadata,
10780
10963
  response: {
10781
10964
  id: response == null ? void 0 : response.id,
10782
- timestamp: (_a14 = response == null ? void 0 : response.timestamp) != null ? _a14 : /* @__PURE__ */ new Date(),
10965
+ timestamp: (_a16 = response == null ? void 0 : response.timestamp) != null ? _a16 : /* @__PURE__ */ new Date(),
10783
10966
  modelId: (_b = response == null ? void 0 : response.modelId) != null ? _b : model.modelId,
10784
10967
  headers: response == null ? void 0 : response.headers,
10785
10968
  body: response == null ? void 0 : response.body
@@ -10804,8 +10987,8 @@ var DefaultRerankResult = class {
10804
10987
  import { withUserAgentSuffix as withUserAgentSuffix8 } from "@ai-sdk/provider-utils";
10805
10988
 
10806
10989
  // src/error/no-transcript-generated-error.ts
10807
- import { AISDKError as AISDKError19 } from "@ai-sdk/provider";
10808
- var NoTranscriptGeneratedError = class extends AISDKError19 {
10990
+ import { AISDKError as AISDKError21 } from "@ai-sdk/provider";
10991
+ var NoTranscriptGeneratedError = class extends AISDKError21 {
10809
10992
  constructor(options) {
10810
10993
  super({
10811
10994
  name: "AI_NoTranscriptGeneratedError",
@@ -10839,16 +11022,16 @@ async function transcribe({
10839
11022
  const audioData = audio instanceof URL ? (await download({ url: audio })).data : convertDataContentToUint8Array(audio);
10840
11023
  const result = await retry(
10841
11024
  () => {
10842
- var _a14;
11025
+ var _a16;
10843
11026
  return resolvedModel.doGenerate({
10844
11027
  audio: audioData,
10845
11028
  abortSignal,
10846
11029
  headers: headersWithUserAgent,
10847
11030
  providerOptions,
10848
- mediaType: (_a14 = detectMediaType({
11031
+ mediaType: (_a16 = detectMediaType({
10849
11032
  data: audioData,
10850
11033
  signatures: audioMediaTypeSignatures
10851
- })) != null ? _a14 : "audio/wav"
11034
+ })) != null ? _a16 : "audio/wav"
10852
11035
  });
10853
11036
  }
10854
11037
  );
@@ -10872,14 +11055,14 @@ async function transcribe({
10872
11055
  }
10873
11056
  var DefaultTranscriptionResult = class {
10874
11057
  constructor(options) {
10875
- var _a14;
11058
+ var _a16;
10876
11059
  this.text = options.text;
10877
11060
  this.segments = options.segments;
10878
11061
  this.language = options.language;
10879
11062
  this.durationInSeconds = options.durationInSeconds;
10880
11063
  this.warnings = options.warnings;
10881
11064
  this.responses = options.responses;
10882
- this.providerMetadata = (_a14 = options.providerMetadata) != null ? _a14 : {};
11065
+ this.providerMetadata = (_a16 = options.providerMetadata) != null ? _a16 : {};
10883
11066
  }
10884
11067
  };
10885
11068
 
@@ -10922,7 +11105,7 @@ async function callCompletionApi({
10922
11105
  onError,
10923
11106
  fetch: fetch2 = getOriginalFetch()
10924
11107
  }) {
10925
- var _a14;
11108
+ var _a16;
10926
11109
  try {
10927
11110
  setLoading(true);
10928
11111
  setError(void 0);
@@ -10950,7 +11133,7 @@ async function callCompletionApi({
10950
11133
  });
10951
11134
  if (!response.ok) {
10952
11135
  throw new Error(
10953
- (_a14 = await response.text()) != null ? _a14 : "Failed to fetch the chat response."
11136
+ (_a16 = await response.text()) != null ? _a16 : "Failed to fetch the chat response."
10954
11137
  );
10955
11138
  }
10956
11139
  if (!response.body) {
@@ -11036,12 +11219,12 @@ async function convertFileListToFileUIParts(files) {
11036
11219
  }
11037
11220
  return Promise.all(
11038
11221
  Array.from(files).map(async (file) => {
11039
- const { name: name14, type } = file;
11222
+ const { name: name16, type } = file;
11040
11223
  const dataUrl = await new Promise((resolve3, reject) => {
11041
11224
  const reader = new FileReader();
11042
11225
  reader.onload = (readerEvent) => {
11043
- var _a14;
11044
- resolve3((_a14 = readerEvent.target) == null ? void 0 : _a14.result);
11226
+ var _a16;
11227
+ resolve3((_a16 = readerEvent.target) == null ? void 0 : _a16.result);
11045
11228
  };
11046
11229
  reader.onerror = (error) => reject(error);
11047
11230
  reader.readAsDataURL(file);
@@ -11049,7 +11232,7 @@ async function convertFileListToFileUIParts(files) {
11049
11232
  return {
11050
11233
  type: "file",
11051
11234
  mediaType: type,
11052
- filename: name14,
11235
+ filename: name16,
11053
11236
  url: dataUrl
11054
11237
  };
11055
11238
  })
@@ -11088,7 +11271,7 @@ var HttpChatTransport = class {
11088
11271
  abortSignal,
11089
11272
  ...options
11090
11273
  }) {
11091
- var _a14, _b, _c, _d, _e;
11274
+ var _a16, _b, _c, _d, _e;
11092
11275
  const resolvedBody = await resolve2(this.body);
11093
11276
  const resolvedHeaders = await resolve2(this.headers);
11094
11277
  const resolvedCredentials = await resolve2(this.credentials);
@@ -11096,7 +11279,7 @@ var HttpChatTransport = class {
11096
11279
  ...normalizeHeaders(resolvedHeaders),
11097
11280
  ...normalizeHeaders(options.headers)
11098
11281
  };
11099
- const preparedRequest = await ((_a14 = this.prepareSendMessagesRequest) == null ? void 0 : _a14.call(this, {
11282
+ const preparedRequest = await ((_a16 = this.prepareSendMessagesRequest) == null ? void 0 : _a16.call(this, {
11100
11283
  api: this.api,
11101
11284
  id: options.chatId,
11102
11285
  messages: options.messages,
@@ -11144,7 +11327,7 @@ var HttpChatTransport = class {
11144
11327
  return this.processResponseStream(response.body);
11145
11328
  }
11146
11329
  async reconnectToStream(options) {
11147
- var _a14, _b, _c, _d, _e;
11330
+ var _a16, _b, _c, _d, _e;
11148
11331
  const resolvedBody = await resolve2(this.body);
11149
11332
  const resolvedHeaders = await resolve2(this.headers);
11150
11333
  const resolvedCredentials = await resolve2(this.credentials);
@@ -11152,7 +11335,7 @@ var HttpChatTransport = class {
11152
11335
  ...normalizeHeaders(resolvedHeaders),
11153
11336
  ...normalizeHeaders(options.headers)
11154
11337
  };
11155
- const preparedRequest = await ((_a14 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a14.call(this, {
11338
+ const preparedRequest = await ((_a16 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a16.call(this, {
11156
11339
  api: this.api,
11157
11340
  id: options.chatId,
11158
11341
  body: { ...resolvedBody, ...options.body },
@@ -11234,11 +11417,11 @@ var AbstractChat = class {
11234
11417
  * If a messageId is provided, the message will be replaced.
11235
11418
  */
11236
11419
  this.sendMessage = async (message, options) => {
11237
- var _a14, _b, _c, _d;
11420
+ var _a16, _b, _c, _d;
11238
11421
  if (message == null) {
11239
11422
  await this.makeRequest({
11240
11423
  trigger: "submit-message",
11241
- messageId: (_a14 = this.lastMessage) == null ? void 0 : _a14.id,
11424
+ messageId: (_a16 = this.lastMessage) == null ? void 0 : _a16.id,
11242
11425
  ...options
11243
11426
  });
11244
11427
  return;
@@ -11331,7 +11514,7 @@ var AbstractChat = class {
11331
11514
  approved,
11332
11515
  reason
11333
11516
  }) => this.jobExecutor.run(async () => {
11334
- var _a14, _b;
11517
+ var _a16, _b;
11335
11518
  const messages = this.state.messages;
11336
11519
  const lastMessage = messages[messages.length - 1];
11337
11520
  const updatePart = (part) => isToolUIPart(part) && part.state === "approval-requested" && part.approval.id === id ? {
@@ -11346,7 +11529,7 @@ var AbstractChat = class {
11346
11529
  if (this.activeResponse) {
11347
11530
  this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(updatePart);
11348
11531
  }
11349
- if (this.status !== "streaming" && this.status !== "submitted" && ((_a14 = this.sendAutomaticallyWhen) == null ? void 0 : _a14.call(this, { messages: this.state.messages }))) {
11532
+ if (this.status !== "streaming" && this.status !== "submitted" && ((_a16 = this.sendAutomaticallyWhen) == null ? void 0 : _a16.call(this, { messages: this.state.messages }))) {
11350
11533
  this.makeRequest({
11351
11534
  trigger: "submit-message",
11352
11535
  messageId: (_b = this.lastMessage) == null ? void 0 : _b.id
@@ -11360,7 +11543,7 @@ var AbstractChat = class {
11360
11543
  output,
11361
11544
  errorText
11362
11545
  }) => this.jobExecutor.run(async () => {
11363
- var _a14, _b;
11546
+ var _a16, _b;
11364
11547
  const messages = this.state.messages;
11365
11548
  const lastMessage = messages[messages.length - 1];
11366
11549
  const updatePart = (part) => isToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state, output, errorText } : part;
@@ -11371,7 +11554,7 @@ var AbstractChat = class {
11371
11554
  if (this.activeResponse) {
11372
11555
  this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(updatePart);
11373
11556
  }
11374
- if (this.status !== "streaming" && this.status !== "submitted" && ((_a14 = this.sendAutomaticallyWhen) == null ? void 0 : _a14.call(this, { messages: this.state.messages }))) {
11557
+ if (this.status !== "streaming" && this.status !== "submitted" && ((_a16 = this.sendAutomaticallyWhen) == null ? void 0 : _a16.call(this, { messages: this.state.messages }))) {
11375
11558
  this.makeRequest({
11376
11559
  trigger: "submit-message",
11377
11560
  messageId: (_b = this.lastMessage) == null ? void 0 : _b.id
@@ -11384,10 +11567,10 @@ var AbstractChat = class {
11384
11567
  * Abort the current request immediately, keep the generated tokens if any.
11385
11568
  */
11386
11569
  this.stop = async () => {
11387
- var _a14;
11570
+ var _a16;
11388
11571
  if (this.status !== "streaming" && this.status !== "submitted")
11389
11572
  return;
11390
- if ((_a14 = this.activeResponse) == null ? void 0 : _a14.abortController) {
11573
+ if ((_a16 = this.activeResponse) == null ? void 0 : _a16.abortController) {
11391
11574
  this.activeResponse.abortController.abort();
11392
11575
  }
11393
11576
  };
@@ -11442,7 +11625,7 @@ var AbstractChat = class {
11442
11625
  body,
11443
11626
  messageId
11444
11627
  }) {
11445
- var _a14, _b, _c, _d;
11628
+ var _a16, _b, _c, _d;
11446
11629
  this.setStatus({ status: "submitted", error: void 0 });
11447
11630
  const lastMessage = this.lastMessage;
11448
11631
  let isAbort = false;
@@ -11491,9 +11674,9 @@ var AbstractChat = class {
11491
11674
  () => job({
11492
11675
  state: activeResponse.state,
11493
11676
  write: () => {
11494
- var _a15;
11677
+ var _a17;
11495
11678
  this.setStatus({ status: "streaming" });
11496
- const replaceLastMessage = activeResponse.state.message.id === ((_a15 = this.lastMessage) == null ? void 0 : _a15.id);
11679
+ const replaceLastMessage = activeResponse.state.message.id === ((_a17 = this.lastMessage) == null ? void 0 : _a17.id);
11497
11680
  if (replaceLastMessage) {
11498
11681
  this.state.replaceMessage(
11499
11682
  this.state.messages.length - 1,
@@ -11545,7 +11728,7 @@ var AbstractChat = class {
11545
11728
  isAbort,
11546
11729
  isDisconnect,
11547
11730
  isError,
11548
- finishReason: (_a14 = this.activeResponse) == null ? void 0 : _a14.state.finishReason
11731
+ finishReason: (_a16 = this.activeResponse) == null ? void 0 : _a16.state.finishReason
11549
11732
  });
11550
11733
  } catch (err) {
11551
11734
  console.error(err);
@@ -11643,7 +11826,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
11643
11826
  }
11644
11827
  };
11645
11828
  export {
11646
- AISDKError15 as AISDKError,
11829
+ AISDKError17 as AISDKError,
11647
11830
  APICallError,
11648
11831
  AbstractChat,
11649
11832
  DefaultChatTransport,
@@ -11657,6 +11840,7 @@ export {
11657
11840
  InvalidPromptError,
11658
11841
  InvalidResponseDataError,
11659
11842
  InvalidStreamPartError,
11843
+ InvalidToolApprovalError,
11660
11844
  InvalidToolInputError,
11661
11845
  JSONParseError,
11662
11846
  JsonToSseTransformStream,
@@ -11676,6 +11860,7 @@ export {
11676
11860
  SerialJobExecutor,
11677
11861
  TextStreamChatTransport,
11678
11862
  TooManyEmbeddingValuesForCallError,
11863
+ ToolCallNotFoundForApprovalError,
11679
11864
  ToolCallRepairError,
11680
11865
  ToolLoopAgent,
11681
11866
  TypeValidationError,