ai 6.0.201 → 6.0.203

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.
Files changed (34) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/index.d.mts +61 -15
  3. package/dist/index.d.ts +61 -15
  4. package/dist/index.js +853 -592
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +695 -430
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/internal/index.js +10 -12
  9. package/dist/internal/index.js.map +1 -1
  10. package/dist/internal/index.mjs +11 -13
  11. package/dist/internal/index.mjs.map +1 -1
  12. package/docs/03-ai-sdk-core/16-mcp-tools.mdx +32 -0
  13. package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +20 -2
  14. package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +1 -1
  15. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-signature-error.mdx +31 -0
  16. package/package.json +3 -3
  17. package/src/error/index.ts +1 -0
  18. package/src/error/invalid-tool-approval-signature-error.ts +35 -0
  19. package/src/generate-text/generate-text.ts +48 -6
  20. package/src/generate-text/run-tools-transformation.ts +14 -1
  21. package/src/generate-text/stream-text.ts +47 -11
  22. package/src/generate-text/to-response-messages.ts +1 -0
  23. package/src/generate-text/tool-approval-request-output.ts +5 -0
  24. package/src/generate-text/tool-approval-signature.ts +125 -0
  25. package/src/generate-text/validate-tool-approvals.ts +124 -0
  26. package/src/middleware/extract-json-middleware.ts +2 -1
  27. package/src/middleware/extract-reasoning-middleware.ts +2 -1
  28. package/src/ui/convert-to-model-messages.ts +3 -0
  29. package/src/ui/process-ui-message-stream.ts +6 -1
  30. package/src/ui/ui-messages.ts +10 -0
  31. package/src/ui/validate-ui-messages.ts +10 -0
  32. package/src/ui-message-stream/create-ui-message-stream.ts +2 -3
  33. package/src/ui-message-stream/ui-message-chunks.ts +2 -0
  34. package/src/util/download/download.ts +11 -14
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 name21 in all)
8
- __defProp(target, name21, { get: all[name21], enumerable: true });
7
+ for (var name22 in all)
8
+ __defProp(target, name22, { get: all[name22], enumerable: true });
9
9
  };
10
10
  var __copyProps = (to, from, except, desc) => {
11
11
  if (from && typeof from === "object" || typeof from === "function") {
@@ -20,36 +20,37 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var src_exports = {};
22
22
  __export(src_exports, {
23
- AISDKError: () => import_provider21.AISDKError,
24
- APICallError: () => import_provider21.APICallError,
23
+ AISDKError: () => import_provider22.AISDKError,
24
+ APICallError: () => import_provider22.APICallError,
25
25
  AbstractChat: () => AbstractChat,
26
26
  DefaultChatTransport: () => DefaultChatTransport,
27
27
  DefaultGeneratedFile: () => DefaultGeneratedFile,
28
28
  DirectChatTransport: () => DirectChatTransport,
29
29
  DownloadError: () => import_provider_utils.DownloadError,
30
- EmptyResponseBodyError: () => import_provider21.EmptyResponseBodyError,
30
+ EmptyResponseBodyError: () => import_provider22.EmptyResponseBodyError,
31
31
  Experimental_Agent: () => ToolLoopAgent,
32
32
  HttpChatTransport: () => HttpChatTransport,
33
33
  InvalidArgumentError: () => InvalidArgumentError,
34
34
  InvalidDataContentError: () => InvalidDataContentError,
35
35
  InvalidMessageRoleError: () => InvalidMessageRoleError,
36
- InvalidPromptError: () => import_provider21.InvalidPromptError,
37
- InvalidResponseDataError: () => import_provider21.InvalidResponseDataError,
36
+ InvalidPromptError: () => import_provider22.InvalidPromptError,
37
+ InvalidResponseDataError: () => import_provider22.InvalidResponseDataError,
38
38
  InvalidStreamPartError: () => InvalidStreamPartError,
39
39
  InvalidToolApprovalError: () => InvalidToolApprovalError,
40
+ InvalidToolApprovalSignatureError: () => InvalidToolApprovalSignatureError,
40
41
  InvalidToolInputError: () => InvalidToolInputError,
41
- JSONParseError: () => import_provider21.JSONParseError,
42
+ JSONParseError: () => import_provider22.JSONParseError,
42
43
  JsonToSseTransformStream: () => JsonToSseTransformStream,
43
- LoadAPIKeyError: () => import_provider21.LoadAPIKeyError,
44
- LoadSettingError: () => import_provider21.LoadSettingError,
44
+ LoadAPIKeyError: () => import_provider22.LoadAPIKeyError,
45
+ LoadSettingError: () => import_provider22.LoadSettingError,
45
46
  MessageConversionError: () => MessageConversionError,
46
47
  MissingToolResultsError: () => MissingToolResultsError,
47
- NoContentGeneratedError: () => import_provider21.NoContentGeneratedError,
48
+ NoContentGeneratedError: () => import_provider22.NoContentGeneratedError,
48
49
  NoImageGeneratedError: () => NoImageGeneratedError,
49
50
  NoObjectGeneratedError: () => NoObjectGeneratedError,
50
51
  NoOutputGeneratedError: () => NoOutputGeneratedError,
51
52
  NoSpeechGeneratedError: () => NoSpeechGeneratedError,
52
- NoSuchModelError: () => import_provider21.NoSuchModelError,
53
+ NoSuchModelError: () => import_provider22.NoSuchModelError,
53
54
  NoSuchProviderError: () => NoSuchProviderError,
54
55
  NoSuchToolError: () => NoSuchToolError,
55
56
  NoTranscriptGeneratedError: () => NoTranscriptGeneratedError,
@@ -58,17 +59,17 @@ __export(src_exports, {
58
59
  RetryError: () => RetryError,
59
60
  SerialJobExecutor: () => SerialJobExecutor,
60
61
  TextStreamChatTransport: () => TextStreamChatTransport,
61
- TooManyEmbeddingValuesForCallError: () => import_provider21.TooManyEmbeddingValuesForCallError,
62
+ TooManyEmbeddingValuesForCallError: () => import_provider22.TooManyEmbeddingValuesForCallError,
62
63
  ToolCallNotFoundForApprovalError: () => ToolCallNotFoundForApprovalError,
63
64
  ToolCallRepairError: () => ToolCallRepairError,
64
65
  ToolLoopAgent: () => ToolLoopAgent,
65
- TypeValidationError: () => import_provider21.TypeValidationError,
66
+ TypeValidationError: () => import_provider22.TypeValidationError,
66
67
  UIMessageStreamError: () => UIMessageStreamError,
67
68
  UI_MESSAGE_STREAM_HEADERS: () => UI_MESSAGE_STREAM_HEADERS,
68
- UnsupportedFunctionalityError: () => import_provider21.UnsupportedFunctionalityError,
69
+ UnsupportedFunctionalityError: () => import_provider22.UnsupportedFunctionalityError,
69
70
  UnsupportedModelVersionError: () => UnsupportedModelVersionError,
70
71
  addToolInputExamplesMiddleware: () => addToolInputExamplesMiddleware,
71
- asSchema: () => import_provider_utils39.asSchema,
72
+ asSchema: () => import_provider_utils41.asSchema,
72
73
  assistantModelMessageSchema: () => assistantModelMessageSchema,
73
74
  bindTelemetryIntegration: () => bindTelemetryIntegration,
74
75
  callCompletionApi: () => callCompletionApi,
@@ -80,7 +81,7 @@ __export(src_exports, {
80
81
  createAgentUIStreamResponse: () => createAgentUIStreamResponse,
81
82
  createDownload: () => createDownload,
82
83
  createGateway: () => import_gateway4.createGateway,
83
- createIdGenerator: () => import_provider_utils39.createIdGenerator,
84
+ createIdGenerator: () => import_provider_utils41.createIdGenerator,
84
85
  createProviderRegistry: () => createProviderRegistry,
85
86
  createTextStreamResponse: () => createTextStreamResponse,
86
87
  createUIMessageStream: () => createUIMessageStream,
@@ -88,7 +89,7 @@ __export(src_exports, {
88
89
  customProvider: () => customProvider,
89
90
  defaultEmbeddingSettingsMiddleware: () => defaultEmbeddingSettingsMiddleware,
90
91
  defaultSettingsMiddleware: () => defaultSettingsMiddleware,
91
- dynamicTool: () => import_provider_utils39.dynamicTool,
92
+ dynamicTool: () => import_provider_utils41.dynamicTool,
92
93
  embed: () => embed,
93
94
  embedMany: () => embedMany,
94
95
  experimental_createProviderRegistry: () => experimental_createProviderRegistry,
@@ -100,7 +101,7 @@ __export(src_exports, {
100
101
  extractJsonMiddleware: () => extractJsonMiddleware,
101
102
  extractReasoningMiddleware: () => extractReasoningMiddleware,
102
103
  gateway: () => import_gateway4.gateway,
103
- generateId: () => import_provider_utils39.generateId,
104
+ generateId: () => import_provider_utils41.generateId,
104
105
  generateImage: () => generateImage,
105
106
  generateObject: () => generateObject,
106
107
  generateText: () => generateText,
@@ -118,11 +119,11 @@ __export(src_exports, {
118
119
  isTextUIPart: () => isTextUIPart,
119
120
  isToolOrDynamicToolUIPart: () => isToolOrDynamicToolUIPart,
120
121
  isToolUIPart: () => isToolUIPart,
121
- jsonSchema: () => import_provider_utils39.jsonSchema,
122
+ jsonSchema: () => import_provider_utils41.jsonSchema,
122
123
  lastAssistantMessageIsCompleteWithApprovalResponses: () => lastAssistantMessageIsCompleteWithApprovalResponses,
123
124
  lastAssistantMessageIsCompleteWithToolCalls: () => lastAssistantMessageIsCompleteWithToolCalls,
124
125
  modelMessageSchema: () => modelMessageSchema,
125
- parseJsonEventStream: () => import_provider_utils39.parseJsonEventStream,
126
+ parseJsonEventStream: () => import_provider_utils41.parseJsonEventStream,
126
127
  parsePartialJson: () => parsePartialJson,
127
128
  pipeAgentUIStreamToResponse: () => pipeAgentUIStreamToResponse,
128
129
  pipeTextStreamToResponse: () => pipeTextStreamToResponse,
@@ -139,7 +140,7 @@ __export(src_exports, {
139
140
  streamObject: () => streamObject,
140
141
  streamText: () => streamText,
141
142
  systemModelMessageSchema: () => systemModelMessageSchema,
142
- tool: () => import_provider_utils39.tool,
143
+ tool: () => import_provider_utils41.tool,
143
144
  toolModelMessageSchema: () => toolModelMessageSchema,
144
145
  uiMessageChunkSchema: () => uiMessageChunkSchema,
145
146
  userModelMessageSchema: () => userModelMessageSchema,
@@ -148,20 +149,20 @@ __export(src_exports, {
148
149
  wrapImageModel: () => wrapImageModel,
149
150
  wrapLanguageModel: () => wrapLanguageModel,
150
151
  wrapProvider: () => wrapProvider,
151
- zodSchema: () => import_provider_utils39.zodSchema
152
+ zodSchema: () => import_provider_utils41.zodSchema
152
153
  });
153
154
  module.exports = __toCommonJS(src_exports);
154
155
  var import_gateway4 = require("@ai-sdk/gateway");
155
- var import_provider_utils39 = require("@ai-sdk/provider-utils");
156
+ var import_provider_utils41 = require("@ai-sdk/provider-utils");
156
157
 
157
158
  // src/agent/tool-loop-agent.ts
158
- var import_provider_utils19 = require("@ai-sdk/provider-utils");
159
+ var import_provider_utils21 = require("@ai-sdk/provider-utils");
159
160
 
160
161
  // src/generate-text/generate-text.ts
161
- var import_provider_utils14 = require("@ai-sdk/provider-utils");
162
+ var import_provider_utils16 = require("@ai-sdk/provider-utils");
162
163
 
163
164
  // src/error/index.ts
164
- var import_provider21 = require("@ai-sdk/provider");
165
+ var import_provider22 = require("@ai-sdk/provider");
165
166
 
166
167
  // src/error/invalid-argument-error.ts
167
168
  var import_provider = require("@ai-sdk/provider");
@@ -231,23 +232,25 @@ var InvalidToolApprovalError = class extends import_provider3.AISDKError {
231
232
  };
232
233
  _a3 = symbol3;
233
234
 
234
- // src/error/invalid-tool-input-error.ts
235
+ // src/error/invalid-tool-approval-signature-error.ts
235
236
  var import_provider4 = require("@ai-sdk/provider");
236
- var name4 = "AI_InvalidToolInputError";
237
+ var name4 = "AI_InvalidToolApprovalSignatureError";
237
238
  var marker4 = `vercel.ai.error.${name4}`;
238
239
  var symbol4 = Symbol.for(marker4);
239
240
  var _a4;
240
- var InvalidToolInputError = class extends import_provider4.AISDKError {
241
+ var InvalidToolApprovalSignatureError = class extends import_provider4.AISDKError {
241
242
  constructor({
242
- toolInput,
243
- toolName,
244
- cause,
245
- message = `Invalid input for tool ${toolName}: ${(0, import_provider4.getErrorMessage)(cause)}`
243
+ approvalId,
244
+ toolCallId,
245
+ reason
246
246
  }) {
247
- super({ name: name4, message, cause });
247
+ super({
248
+ name: name4,
249
+ message: `Tool approval signature verification failed for approval "${approvalId}" (tool call "${toolCallId}"): ${reason}`
250
+ });
248
251
  this[_a4] = true;
249
- this.toolInput = toolInput;
250
- this.toolName = toolName;
252
+ this.approvalId = approvalId;
253
+ this.toolCallId = toolCallId;
251
254
  }
252
255
  static isInstance(error) {
253
256
  return import_provider4.AISDKError.hasMarker(error, marker4);
@@ -255,24 +258,23 @@ var InvalidToolInputError = class extends import_provider4.AISDKError {
255
258
  };
256
259
  _a4 = symbol4;
257
260
 
258
- // src/error/tool-call-not-found-for-approval-error.ts
261
+ // src/error/invalid-tool-input-error.ts
259
262
  var import_provider5 = require("@ai-sdk/provider");
260
- var name5 = "AI_ToolCallNotFoundForApprovalError";
263
+ var name5 = "AI_InvalidToolInputError";
261
264
  var marker5 = `vercel.ai.error.${name5}`;
262
265
  var symbol5 = Symbol.for(marker5);
263
266
  var _a5;
264
- var ToolCallNotFoundForApprovalError = class extends import_provider5.AISDKError {
267
+ var InvalidToolInputError = class extends import_provider5.AISDKError {
265
268
  constructor({
266
- toolCallId,
267
- approvalId
269
+ toolInput,
270
+ toolName,
271
+ cause,
272
+ message = `Invalid input for tool ${toolName}: ${(0, import_provider5.getErrorMessage)(cause)}`
268
273
  }) {
269
- super({
270
- name: name5,
271
- message: `Tool call "${toolCallId}" not found for approval request "${approvalId}".`
272
- });
274
+ super({ name: name5, message, cause });
273
275
  this[_a5] = true;
274
- this.toolCallId = toolCallId;
275
- this.approvalId = approvalId;
276
+ this.toolInput = toolInput;
277
+ this.toolName = toolName;
276
278
  }
277
279
  static isInstance(error) {
278
280
  return import_provider5.AISDKError.hasMarker(error, marker5);
@@ -280,22 +282,24 @@ var ToolCallNotFoundForApprovalError = class extends import_provider5.AISDKError
280
282
  };
281
283
  _a5 = symbol5;
282
284
 
283
- // src/error/missing-tool-result-error.ts
285
+ // src/error/tool-call-not-found-for-approval-error.ts
284
286
  var import_provider6 = require("@ai-sdk/provider");
285
- var name6 = "AI_MissingToolResultsError";
287
+ var name6 = "AI_ToolCallNotFoundForApprovalError";
286
288
  var marker6 = `vercel.ai.error.${name6}`;
287
289
  var symbol6 = Symbol.for(marker6);
288
290
  var _a6;
289
- var MissingToolResultsError = class extends import_provider6.AISDKError {
290
- constructor({ toolCallIds }) {
291
+ var ToolCallNotFoundForApprovalError = class extends import_provider6.AISDKError {
292
+ constructor({
293
+ toolCallId,
294
+ approvalId
295
+ }) {
291
296
  super({
292
297
  name: name6,
293
- message: `Tool result${toolCallIds.length > 1 ? "s are" : " is"} missing for tool call${toolCallIds.length > 1 ? "s" : ""} ${toolCallIds.join(
294
- ", "
295
- )}.`
298
+ message: `Tool call "${toolCallId}" not found for approval request "${approvalId}".`
296
299
  });
297
300
  this[_a6] = true;
298
- this.toolCallIds = toolCallIds;
301
+ this.toolCallId = toolCallId;
302
+ this.approvalId = approvalId;
299
303
  }
300
304
  static isInstance(error) {
301
305
  return import_provider6.AISDKError.hasMarker(error, marker6);
@@ -303,21 +307,22 @@ var MissingToolResultsError = class extends import_provider6.AISDKError {
303
307
  };
304
308
  _a6 = symbol6;
305
309
 
306
- // src/error/no-image-generated-error.ts
310
+ // src/error/missing-tool-result-error.ts
307
311
  var import_provider7 = require("@ai-sdk/provider");
308
- var name7 = "AI_NoImageGeneratedError";
312
+ var name7 = "AI_MissingToolResultsError";
309
313
  var marker7 = `vercel.ai.error.${name7}`;
310
314
  var symbol7 = Symbol.for(marker7);
311
315
  var _a7;
312
- var NoImageGeneratedError = class extends import_provider7.AISDKError {
313
- constructor({
314
- message = "No image generated.",
315
- cause,
316
- responses
317
- }) {
318
- super({ name: name7, message, cause });
316
+ var MissingToolResultsError = class extends import_provider7.AISDKError {
317
+ constructor({ toolCallIds }) {
318
+ super({
319
+ name: name7,
320
+ message: `Tool result${toolCallIds.length > 1 ? "s are" : " is"} missing for tool call${toolCallIds.length > 1 ? "s" : ""} ${toolCallIds.join(
321
+ ", "
322
+ )}.`
323
+ });
319
324
  this[_a7] = true;
320
- this.responses = responses;
325
+ this.toolCallIds = toolCallIds;
321
326
  }
322
327
  static isInstance(error) {
323
328
  return import_provider7.AISDKError.hasMarker(error, marker7);
@@ -325,27 +330,21 @@ var NoImageGeneratedError = class extends import_provider7.AISDKError {
325
330
  };
326
331
  _a7 = symbol7;
327
332
 
328
- // src/error/no-object-generated-error.ts
333
+ // src/error/no-image-generated-error.ts
329
334
  var import_provider8 = require("@ai-sdk/provider");
330
- var name8 = "AI_NoObjectGeneratedError";
335
+ var name8 = "AI_NoImageGeneratedError";
331
336
  var marker8 = `vercel.ai.error.${name8}`;
332
337
  var symbol8 = Symbol.for(marker8);
333
338
  var _a8;
334
- var NoObjectGeneratedError = class extends import_provider8.AISDKError {
339
+ var NoImageGeneratedError = class extends import_provider8.AISDKError {
335
340
  constructor({
336
- message = "No object generated.",
341
+ message = "No image generated.",
337
342
  cause,
338
- text: text2,
339
- response,
340
- usage,
341
- finishReason
343
+ responses
342
344
  }) {
343
345
  super({ name: name8, message, cause });
344
346
  this[_a8] = true;
345
- this.text = text2;
346
- this.response = response;
347
- this.usage = usage;
348
- this.finishReason = finishReason;
347
+ this.responses = responses;
349
348
  }
350
349
  static isInstance(error) {
351
350
  return import_provider8.AISDKError.hasMarker(error, marker8);
@@ -353,20 +352,27 @@ var NoObjectGeneratedError = class extends import_provider8.AISDKError {
353
352
  };
354
353
  _a8 = symbol8;
355
354
 
356
- // src/error/no-output-generated-error.ts
355
+ // src/error/no-object-generated-error.ts
357
356
  var import_provider9 = require("@ai-sdk/provider");
358
- var name9 = "AI_NoOutputGeneratedError";
357
+ var name9 = "AI_NoObjectGeneratedError";
359
358
  var marker9 = `vercel.ai.error.${name9}`;
360
359
  var symbol9 = Symbol.for(marker9);
361
360
  var _a9;
362
- var NoOutputGeneratedError = class extends import_provider9.AISDKError {
363
- // used in isInstance
361
+ var NoObjectGeneratedError = class extends import_provider9.AISDKError {
364
362
  constructor({
365
- message = "No output generated.",
366
- cause
367
- } = {}) {
363
+ message = "No object generated.",
364
+ cause,
365
+ text: text2,
366
+ response,
367
+ usage,
368
+ finishReason
369
+ }) {
368
370
  super({ name: name9, message, cause });
369
371
  this[_a9] = true;
372
+ this.text = text2;
373
+ this.response = response;
374
+ this.usage = usage;
375
+ this.finishReason = finishReason;
370
376
  }
371
377
  static isInstance(error) {
372
378
  return import_provider9.AISDKError.hasMarker(error, marker9);
@@ -374,20 +380,20 @@ var NoOutputGeneratedError = class extends import_provider9.AISDKError {
374
380
  };
375
381
  _a9 = symbol9;
376
382
 
377
- // src/error/no-speech-generated-error.ts
383
+ // src/error/no-output-generated-error.ts
378
384
  var import_provider10 = require("@ai-sdk/provider");
379
- var name10 = "AI_NoSpeechGeneratedError";
385
+ var name10 = "AI_NoOutputGeneratedError";
380
386
  var marker10 = `vercel.ai.error.${name10}`;
381
387
  var symbol10 = Symbol.for(marker10);
382
388
  var _a10;
383
- var NoSpeechGeneratedError = class extends import_provider10.AISDKError {
384
- constructor(options) {
385
- super({
386
- name: name10,
387
- message: "No speech audio generated."
388
- });
389
+ var NoOutputGeneratedError = class extends import_provider10.AISDKError {
390
+ // used in isInstance
391
+ constructor({
392
+ message = "No output generated.",
393
+ cause
394
+ } = {}) {
395
+ super({ name: name10, message, cause });
389
396
  this[_a10] = true;
390
- this.responses = options.responses;
391
397
  }
392
398
  static isInstance(error) {
393
399
  return import_provider10.AISDKError.hasMarker(error, marker10);
@@ -395,17 +401,17 @@ var NoSpeechGeneratedError = class extends import_provider10.AISDKError {
395
401
  };
396
402
  _a10 = symbol10;
397
403
 
398
- // src/error/no-transcript-generated-error.ts
404
+ // src/error/no-speech-generated-error.ts
399
405
  var import_provider11 = require("@ai-sdk/provider");
400
- var name11 = "AI_NoTranscriptGeneratedError";
406
+ var name11 = "AI_NoSpeechGeneratedError";
401
407
  var marker11 = `vercel.ai.error.${name11}`;
402
408
  var symbol11 = Symbol.for(marker11);
403
409
  var _a11;
404
- var NoTranscriptGeneratedError = class extends import_provider11.AISDKError {
410
+ var NoSpeechGeneratedError = class extends import_provider11.AISDKError {
405
411
  constructor(options) {
406
412
  super({
407
413
  name: name11,
408
- message: "No transcript generated."
414
+ message: "No speech audio generated."
409
415
  });
410
416
  this[_a11] = true;
411
417
  this.responses = options.responses;
@@ -416,30 +422,51 @@ var NoTranscriptGeneratedError = class extends import_provider11.AISDKError {
416
422
  };
417
423
  _a11 = symbol11;
418
424
 
419
- // src/error/no-video-generated-error.ts
425
+ // src/error/no-transcript-generated-error.ts
420
426
  var import_provider12 = require("@ai-sdk/provider");
421
- var name12 = "AI_NoVideoGeneratedError";
427
+ var name12 = "AI_NoTranscriptGeneratedError";
422
428
  var marker12 = `vercel.ai.error.${name12}`;
423
429
  var symbol12 = Symbol.for(marker12);
424
430
  var _a12;
425
- var NoVideoGeneratedError = class extends import_provider12.AISDKError {
431
+ var NoTranscriptGeneratedError = class extends import_provider12.AISDKError {
432
+ constructor(options) {
433
+ super({
434
+ name: name12,
435
+ message: "No transcript generated."
436
+ });
437
+ this[_a12] = true;
438
+ this.responses = options.responses;
439
+ }
440
+ static isInstance(error) {
441
+ return import_provider12.AISDKError.hasMarker(error, marker12);
442
+ }
443
+ };
444
+ _a12 = symbol12;
445
+
446
+ // src/error/no-video-generated-error.ts
447
+ var import_provider13 = require("@ai-sdk/provider");
448
+ var name13 = "AI_NoVideoGeneratedError";
449
+ var marker13 = `vercel.ai.error.${name13}`;
450
+ var symbol13 = Symbol.for(marker13);
451
+ var _a13;
452
+ var NoVideoGeneratedError = class extends import_provider13.AISDKError {
426
453
  constructor({
427
454
  message = "No video generated.",
428
455
  cause,
429
456
  responses
430
457
  }) {
431
- super({ name: name12, message, cause });
432
- this[_a12] = true;
458
+ super({ name: name13, message, cause });
459
+ this[_a13] = true;
433
460
  this.responses = responses;
434
461
  }
435
462
  static isInstance(error) {
436
- return import_provider12.AISDKError.hasMarker(error, marker12);
463
+ return import_provider13.AISDKError.hasMarker(error, marker13);
437
464
  }
438
465
  /**
439
466
  * @deprecated use `isInstance` instead
440
467
  */
441
468
  static isNoVideoGeneratedError(error) {
442
- return error instanceof Error && error.name === name12 && typeof error.responses !== "undefined" ? true : false;
469
+ return error instanceof Error && error.name === name13 && typeof error.responses !== "undefined" ? true : false;
443
470
  }
444
471
  /**
445
472
  * @deprecated Do not use this method. It will be removed in the next major version.
@@ -454,56 +481,56 @@ var NoVideoGeneratedError = class extends import_provider12.AISDKError {
454
481
  };
455
482
  }
456
483
  };
457
- _a12 = symbol12;
484
+ _a13 = symbol13;
458
485
 
459
486
  // src/error/no-such-tool-error.ts
460
- var import_provider13 = require("@ai-sdk/provider");
461
- var name13 = "AI_NoSuchToolError";
462
- var marker13 = `vercel.ai.error.${name13}`;
463
- var symbol13 = Symbol.for(marker13);
464
- var _a13;
465
- var NoSuchToolError = class extends import_provider13.AISDKError {
487
+ var import_provider14 = require("@ai-sdk/provider");
488
+ var name14 = "AI_NoSuchToolError";
489
+ var marker14 = `vercel.ai.error.${name14}`;
490
+ var symbol14 = Symbol.for(marker14);
491
+ var _a14;
492
+ var NoSuchToolError = class extends import_provider14.AISDKError {
466
493
  constructor({
467
494
  toolName,
468
495
  availableTools = void 0,
469
496
  message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? "No tools are available." : `Available tools: ${availableTools.join(", ")}.`}`
470
497
  }) {
471
- super({ name: name13, message });
472
- this[_a13] = true;
498
+ super({ name: name14, message });
499
+ this[_a14] = true;
473
500
  this.toolName = toolName;
474
501
  this.availableTools = availableTools;
475
502
  }
476
503
  static isInstance(error) {
477
- return import_provider13.AISDKError.hasMarker(error, marker13);
504
+ return import_provider14.AISDKError.hasMarker(error, marker14);
478
505
  }
479
506
  };
480
- _a13 = symbol13;
507
+ _a14 = symbol14;
481
508
 
482
509
  // src/error/tool-call-repair-error.ts
483
- var import_provider14 = require("@ai-sdk/provider");
484
- var name14 = "AI_ToolCallRepairError";
485
- var marker14 = `vercel.ai.error.${name14}`;
486
- var symbol14 = Symbol.for(marker14);
487
- var _a14;
488
- var ToolCallRepairError = class extends import_provider14.AISDKError {
510
+ var import_provider15 = require("@ai-sdk/provider");
511
+ var name15 = "AI_ToolCallRepairError";
512
+ var marker15 = `vercel.ai.error.${name15}`;
513
+ var symbol15 = Symbol.for(marker15);
514
+ var _a15;
515
+ var ToolCallRepairError = class extends import_provider15.AISDKError {
489
516
  constructor({
490
517
  cause,
491
518
  originalError,
492
- message = `Error repairing tool call: ${(0, import_provider14.getErrorMessage)(cause)}`
519
+ message = `Error repairing tool call: ${(0, import_provider15.getErrorMessage)(cause)}`
493
520
  }) {
494
- super({ name: name14, message, cause });
495
- this[_a14] = true;
521
+ super({ name: name15, message, cause });
522
+ this[_a15] = true;
496
523
  this.originalError = originalError;
497
524
  }
498
525
  static isInstance(error) {
499
- return import_provider14.AISDKError.hasMarker(error, marker14);
526
+ return import_provider15.AISDKError.hasMarker(error, marker15);
500
527
  }
501
528
  };
502
- _a14 = symbol14;
529
+ _a15 = symbol15;
503
530
 
504
531
  // src/error/unsupported-model-version-error.ts
505
- var import_provider15 = require("@ai-sdk/provider");
506
- var UnsupportedModelVersionError = class extends import_provider15.AISDKError {
532
+ var import_provider16 = require("@ai-sdk/provider");
533
+ var UnsupportedModelVersionError = class extends import_provider16.AISDKError {
507
534
  constructor(options) {
508
535
  super({
509
536
  name: "AI_UnsupportedModelVersionError",
@@ -516,118 +543,118 @@ var UnsupportedModelVersionError = class extends import_provider15.AISDKError {
516
543
  };
517
544
 
518
545
  // src/error/ui-message-stream-error.ts
519
- var import_provider16 = require("@ai-sdk/provider");
520
- var name15 = "AI_UIMessageStreamError";
521
- var marker15 = `vercel.ai.error.${name15}`;
522
- var symbol15 = Symbol.for(marker15);
523
- var _a15;
524
- var UIMessageStreamError = class extends import_provider16.AISDKError {
546
+ var import_provider17 = require("@ai-sdk/provider");
547
+ var name16 = "AI_UIMessageStreamError";
548
+ var marker16 = `vercel.ai.error.${name16}`;
549
+ var symbol16 = Symbol.for(marker16);
550
+ var _a16;
551
+ var UIMessageStreamError = class extends import_provider17.AISDKError {
525
552
  constructor({
526
553
  chunkType,
527
554
  chunkId,
528
555
  message
529
556
  }) {
530
- super({ name: name15, message });
531
- this[_a15] = true;
557
+ super({ name: name16, message });
558
+ this[_a16] = true;
532
559
  this.chunkType = chunkType;
533
560
  this.chunkId = chunkId;
534
561
  }
535
562
  static isInstance(error) {
536
- return import_provider16.AISDKError.hasMarker(error, marker15);
563
+ return import_provider17.AISDKError.hasMarker(error, marker16);
537
564
  }
538
565
  };
539
- _a15 = symbol15;
566
+ _a16 = symbol16;
540
567
 
541
568
  // src/prompt/invalid-data-content-error.ts
542
- var import_provider17 = require("@ai-sdk/provider");
543
- var name16 = "AI_InvalidDataContentError";
544
- var marker16 = `vercel.ai.error.${name16}`;
545
- var symbol16 = Symbol.for(marker16);
546
- var _a16;
547
- var InvalidDataContentError = class extends import_provider17.AISDKError {
569
+ var import_provider18 = require("@ai-sdk/provider");
570
+ var name17 = "AI_InvalidDataContentError";
571
+ var marker17 = `vercel.ai.error.${name17}`;
572
+ var symbol17 = Symbol.for(marker17);
573
+ var _a17;
574
+ var InvalidDataContentError = class extends import_provider18.AISDKError {
548
575
  constructor({
549
576
  content,
550
577
  cause,
551
578
  message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
552
579
  }) {
553
- super({ name: name16, message, cause });
554
- this[_a16] = true;
580
+ super({ name: name17, message, cause });
581
+ this[_a17] = true;
555
582
  this.content = content;
556
583
  }
557
584
  static isInstance(error) {
558
- return import_provider17.AISDKError.hasMarker(error, marker16);
585
+ return import_provider18.AISDKError.hasMarker(error, marker17);
559
586
  }
560
587
  };
561
- _a16 = symbol16;
588
+ _a17 = symbol17;
562
589
 
563
590
  // src/prompt/invalid-message-role-error.ts
564
- var import_provider18 = require("@ai-sdk/provider");
565
- var name17 = "AI_InvalidMessageRoleError";
566
- var marker17 = `vercel.ai.error.${name17}`;
567
- var symbol17 = Symbol.for(marker17);
568
- var _a17;
569
- var InvalidMessageRoleError = class extends import_provider18.AISDKError {
591
+ var import_provider19 = require("@ai-sdk/provider");
592
+ var name18 = "AI_InvalidMessageRoleError";
593
+ var marker18 = `vercel.ai.error.${name18}`;
594
+ var symbol18 = Symbol.for(marker18);
595
+ var _a18;
596
+ var InvalidMessageRoleError = class extends import_provider19.AISDKError {
570
597
  constructor({
571
598
  role,
572
599
  message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
573
600
  }) {
574
- super({ name: name17, message });
575
- this[_a17] = true;
601
+ super({ name: name18, message });
602
+ this[_a18] = true;
576
603
  this.role = role;
577
604
  }
578
605
  static isInstance(error) {
579
- return import_provider18.AISDKError.hasMarker(error, marker17);
606
+ return import_provider19.AISDKError.hasMarker(error, marker18);
580
607
  }
581
608
  };
582
- _a17 = symbol17;
609
+ _a18 = symbol18;
583
610
 
584
611
  // src/prompt/message-conversion-error.ts
585
- var import_provider19 = require("@ai-sdk/provider");
586
- var name18 = "AI_MessageConversionError";
587
- var marker18 = `vercel.ai.error.${name18}`;
588
- var symbol18 = Symbol.for(marker18);
589
- var _a18;
590
- var MessageConversionError = class extends import_provider19.AISDKError {
612
+ var import_provider20 = require("@ai-sdk/provider");
613
+ var name19 = "AI_MessageConversionError";
614
+ var marker19 = `vercel.ai.error.${name19}`;
615
+ var symbol19 = Symbol.for(marker19);
616
+ var _a19;
617
+ var MessageConversionError = class extends import_provider20.AISDKError {
591
618
  constructor({
592
619
  originalMessage,
593
620
  message
594
621
  }) {
595
- super({ name: name18, message });
596
- this[_a18] = true;
622
+ super({ name: name19, message });
623
+ this[_a19] = true;
597
624
  this.originalMessage = originalMessage;
598
625
  }
599
626
  static isInstance(error) {
600
- return import_provider19.AISDKError.hasMarker(error, marker18);
627
+ return import_provider20.AISDKError.hasMarker(error, marker19);
601
628
  }
602
629
  };
603
- _a18 = symbol18;
630
+ _a19 = symbol19;
604
631
 
605
632
  // src/error/index.ts
606
633
  var import_provider_utils = require("@ai-sdk/provider-utils");
607
634
 
608
635
  // src/util/retry-error.ts
609
- var import_provider20 = require("@ai-sdk/provider");
610
- var name19 = "AI_RetryError";
611
- var marker19 = `vercel.ai.error.${name19}`;
612
- var symbol19 = Symbol.for(marker19);
613
- var _a19;
614
- var RetryError = class extends import_provider20.AISDKError {
636
+ var import_provider21 = require("@ai-sdk/provider");
637
+ var name20 = "AI_RetryError";
638
+ var marker20 = `vercel.ai.error.${name20}`;
639
+ var symbol20 = Symbol.for(marker20);
640
+ var _a20;
641
+ var RetryError = class extends import_provider21.AISDKError {
615
642
  constructor({
616
643
  message,
617
644
  reason,
618
645
  errors
619
646
  }) {
620
- super({ name: name19, message });
621
- this[_a19] = true;
647
+ super({ name: name20, message });
648
+ this[_a20] = true;
622
649
  this.reason = reason;
623
650
  this.errors = errors;
624
651
  this.lastError = errors[errors.length - 1];
625
652
  }
626
653
  static isInstance(error) {
627
- return import_provider20.AISDKError.hasMarker(error, marker19);
654
+ return import_provider21.AISDKError.hasMarker(error, marker20);
628
655
  }
629
656
  };
630
- _a19 = symbol19;
657
+ _a20 = symbol20;
631
658
 
632
659
  // src/util/as-array.ts
633
660
  function asArray(value) {
@@ -907,7 +934,7 @@ function resolveEmbeddingModel(model) {
907
934
  return getGlobalProvider().embeddingModel(model);
908
935
  }
909
936
  function resolveTranscriptionModel(model) {
910
- var _a21, _b;
937
+ var _a22, _b;
911
938
  if (typeof model !== "string") {
912
939
  if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
913
940
  const unsupportedModel = model;
@@ -919,10 +946,10 @@ function resolveTranscriptionModel(model) {
919
946
  }
920
947
  return asTranscriptionModelV3(model);
921
948
  }
922
- return (_b = (_a21 = getGlobalProvider()).transcriptionModel) == null ? void 0 : _b.call(_a21, model);
949
+ return (_b = (_a22 = getGlobalProvider()).transcriptionModel) == null ? void 0 : _b.call(_a22, model);
923
950
  }
924
951
  function resolveSpeechModel(model) {
925
- var _a21, _b;
952
+ var _a22, _b;
926
953
  if (typeof model !== "string") {
927
954
  if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
928
955
  const unsupportedModel = model;
@@ -934,7 +961,7 @@ function resolveSpeechModel(model) {
934
961
  }
935
962
  return asSpeechModelV3(model);
936
963
  }
937
- return (_b = (_a21 = getGlobalProvider()).speechModel) == null ? void 0 : _b.call(_a21, model);
964
+ return (_b = (_a22 = getGlobalProvider()).speechModel) == null ? void 0 : _b.call(_a22, model);
938
965
  }
939
966
  function resolveImageModel(model) {
940
967
  if (typeof model !== "string") {
@@ -993,8 +1020,8 @@ function resolveRerankingModel(model) {
993
1020
  return model;
994
1021
  }
995
1022
  function getGlobalProvider() {
996
- var _a21;
997
- return (_a21 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a21 : import_gateway.gateway;
1023
+ var _a22;
1024
+ return (_a22 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a22 : import_gateway.gateway;
998
1025
  }
999
1026
 
1000
1027
  // src/prompt/call-settings.ts
@@ -1254,7 +1281,7 @@ function detectMediaType({
1254
1281
  var import_provider_utils3 = require("@ai-sdk/provider-utils");
1255
1282
 
1256
1283
  // src/version.ts
1257
- var VERSION = true ? "6.0.201" : "0.0.0-test";
1284
+ var VERSION = true ? "6.0.203" : "0.0.0-test";
1258
1285
 
1259
1286
  // src/util/download/download.ts
1260
1287
  var download = async ({
@@ -1262,21 +1289,19 @@ var download = async ({
1262
1289
  maxBytes,
1263
1290
  abortSignal
1264
1291
  }) => {
1265
- var _a21;
1292
+ var _a22;
1266
1293
  const urlText = url.toString();
1267
- (0, import_provider_utils3.validateDownloadUrl)(urlText);
1268
1294
  try {
1269
- const response = await fetch(urlText, {
1270
- headers: (0, import_provider_utils3.withUserAgentSuffix)(
1271
- {},
1272
- `ai-sdk/${VERSION}`,
1273
- (0, import_provider_utils3.getRuntimeEnvironmentUserAgent)()
1274
- ),
1275
- signal: abortSignal
1295
+ const headers = (0, import_provider_utils3.withUserAgentSuffix)(
1296
+ {},
1297
+ `ai-sdk/${VERSION}`,
1298
+ (0, import_provider_utils3.getRuntimeEnvironmentUserAgent)()
1299
+ );
1300
+ const response = await (0, import_provider_utils3.fetchWithValidatedRedirects)({
1301
+ url: urlText,
1302
+ headers,
1303
+ abortSignal
1276
1304
  });
1277
- if (response.redirected) {
1278
- (0, import_provider_utils3.validateDownloadUrl)(response.url);
1279
- }
1280
1305
  if (!response.ok) {
1281
1306
  throw new import_provider_utils3.DownloadError({
1282
1307
  url: urlText,
@@ -1291,7 +1316,7 @@ var download = async ({
1291
1316
  });
1292
1317
  return {
1293
1318
  data,
1294
- mediaType: (_a21 = response.headers.get("content-type")) != null ? _a21 : void 0
1319
+ mediaType: (_a22 = response.headers.get("content-type")) != null ? _a22 : void 0
1295
1320
  };
1296
1321
  } catch (error) {
1297
1322
  if (import_provider_utils3.DownloadError.isInstance(error)) {
@@ -1309,7 +1334,7 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
1309
1334
  );
1310
1335
 
1311
1336
  // src/prompt/data-content.ts
1312
- var import_provider22 = require("@ai-sdk/provider");
1337
+ var import_provider23 = require("@ai-sdk/provider");
1313
1338
  var import_provider_utils4 = require("@ai-sdk/provider-utils");
1314
1339
  var import_v4 = require("zod/v4");
1315
1340
 
@@ -1337,8 +1362,8 @@ var dataContentSchema = import_v4.z.union([
1337
1362
  import_v4.z.custom(
1338
1363
  // Buffer might not be available in some environments such as CloudFlare:
1339
1364
  (value) => {
1340
- var _a21, _b;
1341
- return (_b = (_a21 = globalThis.Buffer) == null ? void 0 : _a21.isBuffer(value)) != null ? _b : false;
1365
+ var _a22, _b;
1366
+ return (_b = (_a22 = globalThis.Buffer) == null ? void 0 : _a22.isBuffer(value)) != null ? _b : false;
1342
1367
  },
1343
1368
  { message: "Must be a Buffer" }
1344
1369
  )
@@ -1361,7 +1386,7 @@ function convertToLanguageModelV3DataContent(content) {
1361
1386
  content.toString()
1362
1387
  );
1363
1388
  if (dataUrlMediaType == null || base64Content == null) {
1364
- throw new import_provider22.AISDKError({
1389
+ throw new import_provider23.AISDKError({
1365
1390
  name: "InvalidDataContentError",
1366
1391
  message: `Invalid data URL format in content ${content.toString()}`
1367
1392
  });
@@ -1644,7 +1669,7 @@ function convertToLanguageModelMessage({
1644
1669
  }
1645
1670
  }
1646
1671
  async function downloadAssets(messages, download2, supportedUrls) {
1647
- var _a21;
1672
+ var _a22;
1648
1673
  const downloadableFiles = [];
1649
1674
  for (const message of messages) {
1650
1675
  if (message.role === "user" && Array.isArray(message.content)) {
@@ -1652,7 +1677,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
1652
1677
  if (part.type === "image" || part.type === "file") {
1653
1678
  downloadableFiles.push({
1654
1679
  data: part.type === "image" ? part.image : part.data,
1655
- mediaType: (_a21 = part.mediaType) != null ? _a21 : part.type === "image" ? "image/*" : void 0
1680
+ mediaType: (_a22 = part.mediaType) != null ? _a22 : part.type === "image" ? "image/*" : void 0
1656
1681
  });
1657
1682
  }
1658
1683
  }
@@ -1704,7 +1729,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
1704
1729
  );
1705
1730
  }
1706
1731
  function convertPartToLanguageModelPart(part, downloadedAssets) {
1707
- var _a21;
1732
+ var _a22;
1708
1733
  if (part.type === "text") {
1709
1734
  return {
1710
1735
  type: "text",
@@ -1737,7 +1762,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
1737
1762
  switch (type) {
1738
1763
  case "image": {
1739
1764
  if (data instanceof Uint8Array || typeof data === "string") {
1740
- mediaType = (_a21 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a21 : mediaType;
1765
+ mediaType = (_a22 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a22 : mediaType;
1741
1766
  }
1742
1767
  return {
1743
1768
  type: "file",
@@ -1772,14 +1797,14 @@ function mapToolResultOutput({
1772
1797
  return {
1773
1798
  type: "content",
1774
1799
  value: output.value.map((item) => {
1775
- var _a21, _b;
1800
+ var _a22, _b;
1776
1801
  if (item.type === "image-url") {
1777
1802
  const downloadedFile = downloadedAssets[new URL(item.url).toString()];
1778
1803
  if (downloadedFile) {
1779
1804
  return {
1780
1805
  type: "image-data",
1781
1806
  data: convertDataContentToBase64String(downloadedFile.data),
1782
- mediaType: (_a21 = downloadedFile.mediaType) != null ? _a21 : "image/*",
1807
+ mediaType: (_a22 = downloadedFile.mediaType) != null ? _a22 : "image/*",
1783
1808
  providerOptions: item.providerOptions
1784
1809
  };
1785
1810
  }
@@ -1817,7 +1842,7 @@ function mapToolResultOutput({
1817
1842
  }
1818
1843
 
1819
1844
  // src/prompt/create-tool-model-output.ts
1820
- var import_provider23 = require("@ai-sdk/provider");
1845
+ var import_provider24 = require("@ai-sdk/provider");
1821
1846
  async function createToolModelOutput({
1822
1847
  toolCallId,
1823
1848
  input,
@@ -1826,7 +1851,7 @@ async function createToolModelOutput({
1826
1851
  errorMode
1827
1852
  }) {
1828
1853
  if (errorMode === "text") {
1829
- return { type: "error-text", value: (0, import_provider23.getErrorMessage)(output) };
1854
+ return { type: "error-text", value: (0, import_provider24.getErrorMessage)(output) };
1830
1855
  } else if (errorMode === "json") {
1831
1856
  return { type: "error-json", value: toJSONValue(output) };
1832
1857
  }
@@ -1953,10 +1978,10 @@ async function prepareToolsAndToolChoice({
1953
1978
  };
1954
1979
  }
1955
1980
  const filteredTools = activeTools != null ? Object.entries(tools).filter(
1956
- ([name21]) => activeTools.includes(name21)
1981
+ ([name22]) => activeTools.includes(name22)
1957
1982
  ) : Object.entries(tools);
1958
1983
  const languageModelTools = [];
1959
- for (const [name21, tool2] of filteredTools) {
1984
+ for (const [name22, tool2] of filteredTools) {
1960
1985
  const toolType = tool2.type;
1961
1986
  switch (toolType) {
1962
1987
  case void 0:
@@ -1964,7 +1989,7 @@ async function prepareToolsAndToolChoice({
1964
1989
  case "function":
1965
1990
  languageModelTools.push({
1966
1991
  type: "function",
1967
- name: name21,
1992
+ name: name22,
1968
1993
  description: tool2.description,
1969
1994
  inputSchema: await (0, import_provider_utils6.asSchema)(tool2.inputSchema).jsonSchema,
1970
1995
  ...tool2.inputExamples != null ? { inputExamples: tool2.inputExamples } : {},
@@ -1975,7 +2000,7 @@ async function prepareToolsAndToolChoice({
1975
2000
  case "provider":
1976
2001
  languageModelTools.push({
1977
2002
  type: "provider",
1978
- name: name21,
2003
+ name: name22,
1979
2004
  id: tool2.id,
1980
2005
  args: tool2.args
1981
2006
  });
@@ -1993,7 +2018,7 @@ async function prepareToolsAndToolChoice({
1993
2018
  }
1994
2019
 
1995
2020
  // src/prompt/standardize-prompt.ts
1996
- var import_provider24 = require("@ai-sdk/provider");
2021
+ var import_provider25 = require("@ai-sdk/provider");
1997
2022
  var import_provider_utils7 = require("@ai-sdk/provider-utils");
1998
2023
  var import_v46 = require("zod/v4");
1999
2024
 
@@ -2211,19 +2236,19 @@ async function standardizePrompt({
2211
2236
  messages
2212
2237
  }) {
2213
2238
  if (prompt == null && messages == null) {
2214
- throw new import_provider24.InvalidPromptError({
2239
+ throw new import_provider25.InvalidPromptError({
2215
2240
  prompt,
2216
2241
  message: "prompt or messages must be defined"
2217
2242
  });
2218
2243
  }
2219
2244
  if (prompt != null && messages != null) {
2220
- throw new import_provider24.InvalidPromptError({
2245
+ throw new import_provider25.InvalidPromptError({
2221
2246
  prompt,
2222
2247
  message: "prompt and messages cannot be defined at the same time"
2223
2248
  });
2224
2249
  }
2225
2250
  if (typeof system !== "string" && !asArray(system).every((message) => message.role === "system")) {
2226
- throw new import_provider24.InvalidPromptError({
2251
+ throw new import_provider25.InvalidPromptError({
2227
2252
  prompt,
2228
2253
  message: "system must be a string, SystemModelMessage, or array of SystemModelMessage"
2229
2254
  });
@@ -2233,20 +2258,20 @@ async function standardizePrompt({
2233
2258
  } else if (prompt != null && Array.isArray(prompt)) {
2234
2259
  messages = prompt;
2235
2260
  } else if (messages == null) {
2236
- throw new import_provider24.InvalidPromptError({
2261
+ throw new import_provider25.InvalidPromptError({
2237
2262
  prompt,
2238
2263
  message: "prompt or messages must be defined"
2239
2264
  });
2240
2265
  }
2241
2266
  if (messages.length === 0) {
2242
- throw new import_provider24.InvalidPromptError({
2267
+ throw new import_provider25.InvalidPromptError({
2243
2268
  prompt,
2244
2269
  message: "messages must not be empty"
2245
2270
  });
2246
2271
  }
2247
2272
  if (messages.some((message) => message.role === "system")) {
2248
2273
  if (allowSystemInMessages === false) {
2249
- throw new import_provider24.InvalidPromptError({
2274
+ throw new import_provider25.InvalidPromptError({
2250
2275
  prompt,
2251
2276
  message: "System messages are not allowed in the prompt or messages fields. Use the system option instead."
2252
2277
  });
@@ -2262,7 +2287,7 @@ async function standardizePrompt({
2262
2287
  schema: import_v46.z.array(modelMessageSchema)
2263
2288
  });
2264
2289
  if (!validationResult.success) {
2265
- throw new import_provider24.InvalidPromptError({
2290
+ throw new import_provider25.InvalidPromptError({
2266
2291
  prompt,
2267
2292
  message: "The messages do not match the ModelMessage[] schema.",
2268
2293
  cause: validationResult.error
@@ -2273,14 +2298,14 @@ async function standardizePrompt({
2273
2298
 
2274
2299
  // src/prompt/wrap-gateway-error.ts
2275
2300
  var import_gateway2 = require("@ai-sdk/gateway");
2276
- var import_provider25 = require("@ai-sdk/provider");
2301
+ var import_provider26 = require("@ai-sdk/provider");
2277
2302
  function wrapGatewayError(error) {
2278
2303
  if (!import_gateway2.GatewayAuthenticationError.isInstance(error))
2279
2304
  return error;
2280
2305
  const isProductionEnv = (process == null ? void 0 : process.env.NODE_ENV) === "production";
2281
2306
  const moreInfoURL = "https://ai-sdk.dev/unauthenticated-ai-gateway";
2282
2307
  if (isProductionEnv) {
2283
- return new import_provider25.AISDKError({
2308
+ return new import_provider26.AISDKError({
2284
2309
  name: "GatewayError",
2285
2310
  message: `Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${moreInfoURL}`
2286
2311
  });
@@ -2321,7 +2346,7 @@ function getBaseTelemetryAttributes({
2321
2346
  telemetry,
2322
2347
  headers
2323
2348
  }) {
2324
- var _a21;
2349
+ var _a22;
2325
2350
  return {
2326
2351
  "ai.model.provider": model.provider,
2327
2352
  "ai.model.id": model.modelId,
@@ -2340,7 +2365,7 @@ function getBaseTelemetryAttributes({
2340
2365
  return attributes;
2341
2366
  }, {}),
2342
2367
  // add metadata as attributes:
2343
- ...Object.entries((_a21 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a21 : {}).reduce(
2368
+ ...Object.entries((_a22 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a22 : {}).reduce(
2344
2369
  (attributes, [key, value]) => {
2345
2370
  attributes[`ai.telemetry.metadata.${key}`] = value;
2346
2371
  return attributes;
@@ -2365,7 +2390,7 @@ var noopTracer = {
2365
2390
  startSpan() {
2366
2391
  return noopSpan;
2367
2392
  },
2368
- startActiveSpan(name21, arg1, arg2, arg3) {
2393
+ startActiveSpan(name22, arg1, arg2, arg3) {
2369
2394
  if (typeof arg1 === "function") {
2370
2395
  return arg1(noopSpan);
2371
2396
  }
@@ -2435,14 +2460,14 @@ function getTracer({
2435
2460
  // src/telemetry/record-span.ts
2436
2461
  var import_api2 = require("@opentelemetry/api");
2437
2462
  async function recordSpan({
2438
- name: name21,
2463
+ name: name22,
2439
2464
  tracer,
2440
2465
  attributes,
2441
2466
  fn,
2442
2467
  endWhenDone = true
2443
2468
  }) {
2444
2469
  return tracer.startActiveSpan(
2445
- name21,
2470
+ name22,
2446
2471
  { attributes: await attributes },
2447
2472
  async (span) => {
2448
2473
  const ctx = import_api2.context.active();
@@ -2540,15 +2565,15 @@ function registerTelemetryIntegration(integration) {
2540
2565
  globalThis.AI_SDK_TELEMETRY_INTEGRATIONS.push(integration);
2541
2566
  }
2542
2567
  function getGlobalTelemetryIntegrations() {
2543
- var _a21;
2544
- return (_a21 = globalThis.AI_SDK_TELEMETRY_INTEGRATIONS) != null ? _a21 : [];
2568
+ var _a22;
2569
+ return (_a22 = globalThis.AI_SDK_TELEMETRY_INTEGRATIONS) != null ? _a22 : [];
2545
2570
  }
2546
2571
 
2547
2572
  // src/telemetry/get-global-telemetry-integration.ts
2548
2573
  function bindTelemetryIntegration(integration) {
2549
- var _a21, _b, _c, _d, _e, _f;
2574
+ var _a22, _b, _c, _d, _e, _f;
2550
2575
  return {
2551
- onStart: (_a21 = integration.onStart) == null ? void 0 : _a21.bind(integration),
2576
+ onStart: (_a22 = integration.onStart) == null ? void 0 : _a22.bind(integration),
2552
2577
  onStepStart: (_b = integration.onStepStart) == null ? void 0 : _b.bind(integration),
2553
2578
  onToolCallStart: (_c = integration.onToolCallStart) == null ? void 0 : _c.bind(integration),
2554
2579
  onToolCallFinish: (_d = integration.onToolCallFinish) == null ? void 0 : _d.bind(integration),
@@ -2632,12 +2657,12 @@ function createNullLanguageModelUsage() {
2632
2657
  };
2633
2658
  }
2634
2659
  function addLanguageModelUsage(usage1, usage2) {
2635
- var _a21, _b, _c, _d, _e, _f, _g, _h, _i, _j;
2660
+ var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j;
2636
2661
  return {
2637
2662
  inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
2638
2663
  inputTokenDetails: {
2639
2664
  noCacheTokens: addTokenCounts(
2640
- (_a21 = usage1.inputTokenDetails) == null ? void 0 : _a21.noCacheTokens,
2665
+ (_a22 = usage1.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,
2641
2666
  (_b = usage2.inputTokenDetails) == null ? void 0 : _b.noCacheTokens
2642
2667
  ),
2643
2668
  cacheReadTokens: addTokenCounts(
@@ -2719,14 +2744,14 @@ function mergeObjects(base, overrides) {
2719
2744
  }
2720
2745
 
2721
2746
  // src/util/retry-with-exponential-backoff.ts
2722
- var import_provider26 = require("@ai-sdk/provider");
2747
+ var import_provider27 = require("@ai-sdk/provider");
2723
2748
  var import_gateway3 = require("@ai-sdk/gateway");
2724
2749
  var import_provider_utils8 = require("@ai-sdk/provider-utils");
2725
2750
  function getRetryDelayInMs({
2726
2751
  error,
2727
2752
  exponentialBackoffDelay
2728
2753
  }) {
2729
- const headers = import_provider26.APICallError.isInstance(error) ? error.responseHeaders : import_provider26.APICallError.isInstance(error.cause) ? error.cause.responseHeaders : void 0;
2754
+ const headers = import_provider27.APICallError.isInstance(error) ? error.responseHeaders : import_provider27.APICallError.isInstance(error.cause) ? error.cause.responseHeaders : void 0;
2730
2755
  if (!headers)
2731
2756
  return exponentialBackoffDelay;
2732
2757
  let ms;
@@ -2787,7 +2812,7 @@ async function _retryWithExponentialBackoff(f, {
2787
2812
  errors: newErrors
2788
2813
  });
2789
2814
  }
2790
- if (error instanceof Error && (import_provider26.APICallError.isInstance(error) && error.isRetryable === true || import_gateway3.GatewayError.isInstance(error) && error.isRetryable === true) && tryNumber <= maxRetries) {
2815
+ if (error instanceof Error && (import_provider27.APICallError.isInstance(error) && error.isRetryable === true || import_gateway3.GatewayError.isInstance(error) && error.isRetryable === true) && tryNumber <= maxRetries) {
2791
2816
  await (0, import_provider_utils8.delay)(
2792
2817
  getRetryDelayInMs({
2793
2818
  error,
@@ -2928,8 +2953,8 @@ var import_provider_utils9 = require("@ai-sdk/provider-utils");
2928
2953
 
2929
2954
  // src/util/now.ts
2930
2955
  function now() {
2931
- var _a21, _b;
2932
- return (_b = (_a21 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a21.now()) != null ? _b : Date.now();
2956
+ var _a22, _b;
2957
+ return (_b = (_a22 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a22.now()) != null ? _b : Date.now();
2933
2958
  }
2934
2959
 
2935
2960
  // src/generate-text/execute-tool-call.ts
@@ -3139,6 +3164,170 @@ async function isApprovalNeeded({
3139
3164
  });
3140
3165
  }
3141
3166
 
3167
+ // src/generate-text/tool-approval-signature.ts
3168
+ var import_provider_utils11 = require("@ai-sdk/provider-utils");
3169
+ var encoder = new TextEncoder();
3170
+ function canonicalJSON(value) {
3171
+ if (value === null || value === void 0) {
3172
+ return JSON.stringify(value);
3173
+ }
3174
+ if (typeof value !== "object") {
3175
+ return JSON.stringify(value);
3176
+ }
3177
+ if (Array.isArray(value)) {
3178
+ return `[${value.map(canonicalJSON).join(",")}]`;
3179
+ }
3180
+ const keys = Object.keys(value).sort();
3181
+ const entries = keys.map(
3182
+ (k) => `${JSON.stringify(k)}:${canonicalJSON(value[k])}`
3183
+ );
3184
+ return `{${entries.join(",")}}`;
3185
+ }
3186
+ function toBase64url(bytes) {
3187
+ return (0, import_provider_utils11.convertUint8ArrayToBase64)(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
3188
+ }
3189
+ function fromBase64url(str) {
3190
+ return (0, import_provider_utils11.convertBase64ToUint8Array)(str);
3191
+ }
3192
+ async function importKey(secret) {
3193
+ const keyData = typeof secret === "string" ? encoder.encode(secret) : secret;
3194
+ return crypto.subtle.importKey(
3195
+ "raw",
3196
+ keyData,
3197
+ { name: "HMAC", hash: "SHA-256" },
3198
+ false,
3199
+ ["sign", "verify"]
3200
+ );
3201
+ }
3202
+ async function hashInput(input) {
3203
+ const canonical = canonicalJSON(input);
3204
+ const digest = await crypto.subtle.digest(
3205
+ "SHA-256",
3206
+ encoder.encode(canonical)
3207
+ );
3208
+ return toBase64url(new Uint8Array(digest));
3209
+ }
3210
+ function buildPayload(approvalId, toolCallId, toolName, inputDigest) {
3211
+ return encoder.encode(
3212
+ `${approvalId}
3213
+ ${toolCallId}
3214
+ ${toolName}
3215
+ ${inputDigest}`
3216
+ );
3217
+ }
3218
+ async function signToolApproval({
3219
+ secret,
3220
+ approvalId,
3221
+ toolCallId,
3222
+ toolName,
3223
+ input
3224
+ }) {
3225
+ const key = await importKey(secret);
3226
+ const inputDigest = await hashInput(input);
3227
+ const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);
3228
+ const sig = await crypto.subtle.sign("HMAC", key, payload);
3229
+ return toBase64url(new Uint8Array(sig));
3230
+ }
3231
+ async function verifyToolApprovalSignature({
3232
+ secret,
3233
+ signature,
3234
+ approvalId,
3235
+ toolCallId,
3236
+ toolName,
3237
+ input
3238
+ }) {
3239
+ const key = await importKey(secret);
3240
+ const inputDigest = await hashInput(input);
3241
+ const payload = buildPayload(approvalId, toolCallId, toolName, inputDigest);
3242
+ const sigBytes = fromBase64url(signature);
3243
+ return crypto.subtle.verify("HMAC", key, sigBytes, payload);
3244
+ }
3245
+ async function maybeSignApproval({
3246
+ secret,
3247
+ approvalId,
3248
+ toolCallId,
3249
+ toolName,
3250
+ input
3251
+ }) {
3252
+ if (secret == null)
3253
+ return void 0;
3254
+ return signToolApproval({ secret, approvalId, toolCallId, toolName, input });
3255
+ }
3256
+
3257
+ // src/generate-text/validate-tool-approvals.ts
3258
+ var import_provider_utils12 = require("@ai-sdk/provider-utils");
3259
+ async function validateApprovedToolApprovals({
3260
+ approvedToolApprovals,
3261
+ tools,
3262
+ messages,
3263
+ experimental_context,
3264
+ toolApprovalSecret
3265
+ }) {
3266
+ var _a22;
3267
+ const approved = [];
3268
+ const denied = [];
3269
+ for (const approval of approvedToolApprovals) {
3270
+ const { toolCall, approvalRequest } = approval;
3271
+ const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
3272
+ if (toolApprovalSecret != null) {
3273
+ if (approvalRequest.signature == null) {
3274
+ throw new InvalidToolApprovalSignatureError({
3275
+ approvalId: approvalRequest.approvalId,
3276
+ toolCallId: toolCall.toolCallId,
3277
+ reason: "missing signature"
3278
+ });
3279
+ }
3280
+ const valid = await verifyToolApprovalSignature({
3281
+ secret: toolApprovalSecret,
3282
+ signature: approvalRequest.signature,
3283
+ approvalId: approvalRequest.approvalId,
3284
+ toolCallId: toolCall.toolCallId,
3285
+ toolName: toolCall.toolName,
3286
+ input: toolCall.input
3287
+ });
3288
+ if (!valid) {
3289
+ throw new InvalidToolApprovalSignatureError({
3290
+ approvalId: approvalRequest.approvalId,
3291
+ toolCallId: toolCall.toolCallId,
3292
+ reason: "invalid signature"
3293
+ });
3294
+ }
3295
+ }
3296
+ if (tool2 != null && typeof tool2.execute === "function" && tool2.inputSchema != null) {
3297
+ const validation = await (0, import_provider_utils12.safeValidateTypes)({
3298
+ value: toolCall.input,
3299
+ schema: (0, import_provider_utils12.asSchema)(tool2.inputSchema)
3300
+ });
3301
+ if (!validation.success) {
3302
+ throw new InvalidToolInputError({
3303
+ toolName: toolCall.toolName,
3304
+ toolInput: JSON.stringify(toolCall.input),
3305
+ cause: validation.error
3306
+ });
3307
+ }
3308
+ }
3309
+ const approvalNeeded = tool2 != null && await isApprovalNeeded({
3310
+ tool: tool2,
3311
+ toolCall,
3312
+ messages,
3313
+ experimental_context
3314
+ });
3315
+ if (approvalNeeded) {
3316
+ approved.push(approval);
3317
+ } else {
3318
+ denied.push({
3319
+ ...approval,
3320
+ approvalResponse: {
3321
+ ...approval.approvalResponse,
3322
+ approved: false,
3323
+ reason: (_a22 = approval.approvalResponse.reason) != null ? _a22 : `Tool "${toolCall.toolName}" does not require approval`
3324
+ }
3325
+ });
3326
+ }
3327
+ }
3328
+ return { approvedToolApprovals: approved, deniedToolApprovals: denied };
3329
+ }
3330
+
3142
3331
  // src/generate-text/output.ts
3143
3332
  var output_exports = {};
3144
3333
  __export(output_exports, {
@@ -3148,11 +3337,11 @@ __export(output_exports, {
3148
3337
  object: () => object,
3149
3338
  text: () => text
3150
3339
  });
3151
- var import_provider27 = require("@ai-sdk/provider");
3152
- var import_provider_utils12 = require("@ai-sdk/provider-utils");
3340
+ var import_provider28 = require("@ai-sdk/provider");
3341
+ var import_provider_utils14 = require("@ai-sdk/provider-utils");
3153
3342
 
3154
3343
  // src/util/parse-partial-json.ts
3155
- var import_provider_utils11 = require("@ai-sdk/provider-utils");
3344
+ var import_provider_utils13 = require("@ai-sdk/provider-utils");
3156
3345
 
3157
3346
  // src/util/fix-json.ts
3158
3347
  function fixJson(input) {
@@ -3477,11 +3666,11 @@ async function parsePartialJson(jsonText) {
3477
3666
  if (jsonText === void 0) {
3478
3667
  return { value: void 0, state: "undefined-input" };
3479
3668
  }
3480
- let result = await (0, import_provider_utils11.safeParseJSON)({ text: jsonText });
3669
+ let result = await (0, import_provider_utils13.safeParseJSON)({ text: jsonText });
3481
3670
  if (result.success) {
3482
3671
  return { value: result.value, state: "successful-parse" };
3483
3672
  }
3484
- result = await (0, import_provider_utils11.safeParseJSON)({ text: fixJson(jsonText) });
3673
+ result = await (0, import_provider_utils13.safeParseJSON)({ text: fixJson(jsonText) });
3485
3674
  if (result.success) {
3486
3675
  return { value: result.value, state: "repaired-parse" };
3487
3676
  }
@@ -3504,20 +3693,20 @@ var text = () => ({
3504
3693
  });
3505
3694
  var object = ({
3506
3695
  schema: inputSchema,
3507
- name: name21,
3696
+ name: name22,
3508
3697
  description
3509
3698
  }) => {
3510
- const schema = (0, import_provider_utils12.asSchema)(inputSchema);
3699
+ const schema = (0, import_provider_utils14.asSchema)(inputSchema);
3511
3700
  return {
3512
3701
  name: "object",
3513
- responseFormat: (0, import_provider_utils12.resolve)(schema.jsonSchema).then((jsonSchema2) => ({
3702
+ responseFormat: (0, import_provider_utils14.resolve)(schema.jsonSchema).then((jsonSchema2) => ({
3514
3703
  type: "json",
3515
3704
  schema: jsonSchema2,
3516
- ...name21 != null && { name: name21 },
3705
+ ...name22 != null && { name: name22 },
3517
3706
  ...description != null && { description }
3518
3707
  })),
3519
3708
  async parseCompleteOutput({ text: text2 }, context2) {
3520
- const parseResult = await (0, import_provider_utils12.safeParseJSON)({ text: text2 });
3709
+ const parseResult = await (0, import_provider_utils14.safeParseJSON)({ text: text2 });
3521
3710
  if (!parseResult.success) {
3522
3711
  throw new NoObjectGeneratedError({
3523
3712
  message: "No object generated: could not parse the response.",
@@ -3528,7 +3717,7 @@ var object = ({
3528
3717
  finishReason: context2.finishReason
3529
3718
  });
3530
3719
  }
3531
- const validationResult = await (0, import_provider_utils12.safeValidateTypes)({
3720
+ const validationResult = await (0, import_provider_utils14.safeValidateTypes)({
3532
3721
  value: parseResult.value,
3533
3722
  schema
3534
3723
  });
@@ -3567,14 +3756,14 @@ var object = ({
3567
3756
  };
3568
3757
  var array = ({
3569
3758
  element: inputElementSchema,
3570
- name: name21,
3759
+ name: name22,
3571
3760
  description
3572
3761
  }) => {
3573
- const elementSchema = (0, import_provider_utils12.asSchema)(inputElementSchema);
3762
+ const elementSchema = (0, import_provider_utils14.asSchema)(inputElementSchema);
3574
3763
  return {
3575
3764
  name: "array",
3576
3765
  // JSON schema that describes an array of elements:
3577
- responseFormat: (0, import_provider_utils12.resolve)(elementSchema.jsonSchema).then((jsonSchema2) => {
3766
+ responseFormat: (0, import_provider_utils14.resolve)(elementSchema.jsonSchema).then((jsonSchema2) => {
3578
3767
  const { $schema, ...itemSchema } = jsonSchema2;
3579
3768
  return {
3580
3769
  type: "json",
@@ -3587,12 +3776,12 @@ var array = ({
3587
3776
  required: ["elements"],
3588
3777
  additionalProperties: false
3589
3778
  },
3590
- ...name21 != null && { name: name21 },
3779
+ ...name22 != null && { name: name22 },
3591
3780
  ...description != null && { description }
3592
3781
  };
3593
3782
  }),
3594
3783
  async parseCompleteOutput({ text: text2 }, context2) {
3595
- const parseResult = await (0, import_provider_utils12.safeParseJSON)({ text: text2 });
3784
+ const parseResult = await (0, import_provider_utils14.safeParseJSON)({ text: text2 });
3596
3785
  if (!parseResult.success) {
3597
3786
  throw new NoObjectGeneratedError({
3598
3787
  message: "No object generated: could not parse the response.",
@@ -3607,7 +3796,7 @@ var array = ({
3607
3796
  if (outerValue == null || typeof outerValue !== "object" || !("elements" in outerValue) || !Array.isArray(outerValue.elements)) {
3608
3797
  throw new NoObjectGeneratedError({
3609
3798
  message: "No object generated: response did not match schema.",
3610
- cause: new import_provider27.TypeValidationError({
3799
+ cause: new import_provider28.TypeValidationError({
3611
3800
  value: outerValue,
3612
3801
  cause: "response must be an object with an elements array"
3613
3802
  }),
@@ -3618,7 +3807,7 @@ var array = ({
3618
3807
  });
3619
3808
  }
3620
3809
  for (const element of outerValue.elements) {
3621
- const validationResult = await (0, import_provider_utils12.safeValidateTypes)({
3810
+ const validationResult = await (0, import_provider_utils14.safeValidateTypes)({
3622
3811
  value: element,
3623
3812
  schema: elementSchema
3624
3813
  });
@@ -3651,7 +3840,7 @@ var array = ({
3651
3840
  const rawElements = result.state === "repaired-parse" && outerValue.elements.length > 0 ? outerValue.elements.slice(0, -1) : outerValue.elements;
3652
3841
  const parsedElements = [];
3653
3842
  for (const rawElement of rawElements) {
3654
- const validationResult = await (0, import_provider_utils12.safeValidateTypes)({
3843
+ const validationResult = await (0, import_provider_utils14.safeValidateTypes)({
3655
3844
  value: rawElement,
3656
3845
  schema: elementSchema
3657
3846
  });
@@ -3679,7 +3868,7 @@ var array = ({
3679
3868
  };
3680
3869
  var choice = ({
3681
3870
  options: choiceOptions,
3682
- name: name21,
3871
+ name: name22,
3683
3872
  description
3684
3873
  }) => {
3685
3874
  return {
@@ -3696,11 +3885,11 @@ var choice = ({
3696
3885
  required: ["result"],
3697
3886
  additionalProperties: false
3698
3887
  },
3699
- ...name21 != null && { name: name21 },
3888
+ ...name22 != null && { name: name22 },
3700
3889
  ...description != null && { description }
3701
3890
  }),
3702
3891
  async parseCompleteOutput({ text: text2 }, context2) {
3703
- const parseResult = await (0, import_provider_utils12.safeParseJSON)({ text: text2 });
3892
+ const parseResult = await (0, import_provider_utils14.safeParseJSON)({ text: text2 });
3704
3893
  if (!parseResult.success) {
3705
3894
  throw new NoObjectGeneratedError({
3706
3895
  message: "No object generated: could not parse the response.",
@@ -3715,7 +3904,7 @@ var choice = ({
3715
3904
  if (outerValue == null || typeof outerValue !== "object" || !("result" in outerValue) || typeof outerValue.result !== "string" || !choiceOptions.includes(outerValue.result)) {
3716
3905
  throw new NoObjectGeneratedError({
3717
3906
  message: "No object generated: response did not match schema.",
3718
- cause: new import_provider27.TypeValidationError({
3907
+ cause: new import_provider28.TypeValidationError({
3719
3908
  value: outerValue,
3720
3909
  cause: "response must be an object that contains a choice value."
3721
3910
  }),
@@ -3757,18 +3946,18 @@ var choice = ({
3757
3946
  };
3758
3947
  };
3759
3948
  var json = ({
3760
- name: name21,
3949
+ name: name22,
3761
3950
  description
3762
3951
  } = {}) => {
3763
3952
  return {
3764
3953
  name: "json",
3765
3954
  responseFormat: Promise.resolve({
3766
3955
  type: "json",
3767
- ...name21 != null && { name: name21 },
3956
+ ...name22 != null && { name: name22 },
3768
3957
  ...description != null && { description }
3769
3958
  }),
3770
3959
  async parseCompleteOutput({ text: text2 }, context2) {
3771
- const parseResult = await (0, import_provider_utils12.safeParseJSON)({ text: text2 });
3960
+ const parseResult = await (0, import_provider_utils14.safeParseJSON)({ text: text2 });
3772
3961
  if (!parseResult.success) {
3773
3962
  throw new NoObjectGeneratedError({
3774
3963
  message: "No object generated: could not parse the response.",
@@ -3801,7 +3990,7 @@ var json = ({
3801
3990
  };
3802
3991
 
3803
3992
  // src/generate-text/parse-tool-call.ts
3804
- var import_provider_utils13 = require("@ai-sdk/provider-utils");
3993
+ var import_provider_utils15 = require("@ai-sdk/provider-utils");
3805
3994
  async function parseToolCall({
3806
3995
  toolCall,
3807
3996
  tools,
@@ -3829,7 +4018,7 @@ async function parseToolCall({
3829
4018
  tools,
3830
4019
  inputSchema: async ({ toolName }) => {
3831
4020
  const { inputSchema } = tools[toolName];
3832
- return await (0, import_provider_utils13.asSchema)(inputSchema).jsonSchema;
4021
+ return await (0, import_provider_utils15.asSchema)(inputSchema).jsonSchema;
3833
4022
  },
3834
4023
  system,
3835
4024
  messages,
@@ -3847,7 +4036,7 @@ async function parseToolCall({
3847
4036
  return await doParseToolCall({ toolCall: repairedToolCall, tools });
3848
4037
  }
3849
4038
  } catch (error) {
3850
- const parsedInput = await (0, import_provider_utils13.safeParseJSON)({ text: toolCall.input });
4039
+ const parsedInput = await (0, import_provider_utils15.safeParseJSON)({ text: toolCall.input });
3851
4040
  const input = parsedInput.success ? parsedInput.value : toolCall.input;
3852
4041
  const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
3853
4042
  return {
@@ -3866,7 +4055,7 @@ async function parseToolCall({
3866
4055
  }
3867
4056
  }
3868
4057
  async function parseProviderExecutedDynamicToolCall(toolCall) {
3869
- const parseResult = toolCall.input.trim() === "" ? { success: true, value: {} } : await (0, import_provider_utils13.safeParseJSON)({ text: toolCall.input });
4058
+ const parseResult = toolCall.input.trim() === "" ? { success: true, value: {} } : await (0, import_provider_utils15.safeParseJSON)({ text: toolCall.input });
3870
4059
  if (parseResult.success === false) {
3871
4060
  throw new InvalidToolInputError({
3872
4061
  toolName: toolCall.toolName,
@@ -3899,8 +4088,8 @@ async function doParseToolCall({
3899
4088
  availableTools: Object.keys(tools)
3900
4089
  });
3901
4090
  }
3902
- const schema = (0, import_provider_utils13.asSchema)(tool2.inputSchema);
3903
- const parseResult = toolCall.input.trim() === "" ? await (0, import_provider_utils13.safeValidateTypes)({ value: {}, schema }) : await (0, import_provider_utils13.safeParseJSON)({ text: toolCall.input, schema });
4091
+ const schema = (0, import_provider_utils15.asSchema)(tool2.inputSchema);
4092
+ const parseResult = toolCall.input.trim() === "" ? await (0, import_provider_utils15.safeValidateTypes)({ value: {}, schema }) : await (0, import_provider_utils15.safeParseJSON)({ text: toolCall.input, schema });
3904
4093
  if (parseResult.success === false) {
3905
4094
  throw new InvalidToolInputError({
3906
4095
  toolName,
@@ -4013,8 +4202,8 @@ function isLoopFinished() {
4013
4202
  }
4014
4203
  function hasToolCall(toolName) {
4015
4204
  return ({ steps }) => {
4016
- var _a21, _b, _c;
4017
- return (_c = (_b = (_a21 = steps[steps.length - 1]) == null ? void 0 : _a21.toolCalls) == null ? void 0 : _b.some(
4205
+ var _a22, _b, _c;
4206
+ return (_c = (_b = (_a22 = steps[steps.length - 1]) == null ? void 0 : _a22.toolCalls) == null ? void 0 : _b.some(
4018
4207
  (toolCall) => toolCall.toolName === toolName
4019
4208
  )) != null ? _c : false;
4020
4209
  };
@@ -4114,7 +4303,8 @@ async function toResponseMessages({
4114
4303
  content.push({
4115
4304
  type: "tool-approval-request",
4116
4305
  approvalId: part.approvalId,
4117
- toolCallId: part.toolCall.toolCallId
4306
+ toolCallId: part.toolCall.toolCallId,
4307
+ ...part.signature != null ? { signature: part.signature } : {}
4118
4308
  });
4119
4309
  break;
4120
4310
  }
@@ -4183,7 +4373,7 @@ function mergeAbortSignals(...signals) {
4183
4373
  }
4184
4374
 
4185
4375
  // src/generate-text/generate-text.ts
4186
- var originalGenerateId = (0, import_provider_utils14.createIdGenerator)({
4376
+ var originalGenerateId = (0, import_provider_utils16.createIdGenerator)({
4187
4377
  prefix: "aitxt",
4188
4378
  size: 24
4189
4379
  });
@@ -4211,6 +4401,7 @@ async function generateText({
4211
4401
  experimental_repairToolCall: repairToolCall,
4212
4402
  experimental_download: download2,
4213
4403
  experimental_context,
4404
+ experimental_toolApprovalSecret,
4214
4405
  experimental_include: include,
4215
4406
  _internal: { generateId: generateId2 = originalGenerateId } = {},
4216
4407
  experimental_onStart: onStart,
@@ -4237,7 +4428,7 @@ async function generateText({
4237
4428
  abortSignal: mergedAbortSignal
4238
4429
  });
4239
4430
  const callSettings = prepareCallSettings(settings);
4240
- const headersWithUserAgent = (0, import_provider_utils14.withUserAgentSuffix)(
4431
+ const headersWithUserAgent = (0, import_provider_utils16.withUserAgentSuffix)(
4241
4432
  headers != null ? headers : {},
4242
4433
  `ai/${VERSION}`
4243
4434
  );
@@ -4312,13 +4503,29 @@ async function generateText({
4312
4503
  }),
4313
4504
  tracer,
4314
4505
  fn: async (span) => {
4315
- var _a21, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
4506
+ var _a22, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
4316
4507
  const initialMessages = initialPrompt.messages;
4317
4508
  const responseMessages = [];
4318
- const { approvedToolApprovals, deniedToolApprovals } = collectToolApprovals({ messages: initialMessages });
4319
- const localApprovedToolApprovals = approvedToolApprovals.filter(
4320
- (toolApproval) => !toolApproval.toolCall.providerExecuted
4321
- );
4509
+ const {
4510
+ approvedToolApprovals,
4511
+ deniedToolApprovals: collectedDeniedToolApprovals
4512
+ } = collectToolApprovals({ messages: initialMessages });
4513
+ const {
4514
+ approvedToolApprovals: localApprovedToolApprovals,
4515
+ deniedToolApprovals: revalidationDeniedToolApprovals
4516
+ } = await validateApprovedToolApprovals({
4517
+ approvedToolApprovals: approvedToolApprovals.filter(
4518
+ (toolApproval) => !toolApproval.toolCall.providerExecuted
4519
+ ),
4520
+ tools,
4521
+ messages: initialMessages,
4522
+ experimental_context,
4523
+ toolApprovalSecret: experimental_toolApprovalSecret
4524
+ });
4525
+ const deniedToolApprovals = [
4526
+ ...collectedDeniedToolApprovals,
4527
+ ...revalidationDeniedToolApprovals
4528
+ ];
4322
4529
  if (deniedToolApprovals.length > 0 || localApprovedToolApprovals.length > 0) {
4323
4530
  const toolOutputs = await executeTools({
4324
4531
  toolCalls: localApprovedToolApprovals.map(
@@ -4399,7 +4606,7 @@ async function generateText({
4399
4606
  experimental_context
4400
4607
  }));
4401
4608
  const stepModel = resolveLanguageModel(
4402
- (_a21 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a21 : model
4609
+ (_a22 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a22 : model
4403
4610
  );
4404
4611
  const stepModelInfo = {
4405
4612
  provider: stepModel.provider,
@@ -4454,7 +4661,7 @@ async function generateText({
4454
4661
  });
4455
4662
  currentModelResponse = await retry(
4456
4663
  () => {
4457
- var _a22;
4664
+ var _a23;
4458
4665
  return recordSpan({
4459
4666
  name: "ai.generateText.doGenerate",
4460
4667
  attributes: selectTelemetryAttributes({
@@ -4486,14 +4693,14 @@ async function generateText({
4486
4693
  "gen_ai.request.max_tokens": settings.maxOutputTokens,
4487
4694
  "gen_ai.request.presence_penalty": settings.presencePenalty,
4488
4695
  "gen_ai.request.stop_sequences": settings.stopSequences,
4489
- "gen_ai.request.temperature": (_a22 = settings.temperature) != null ? _a22 : void 0,
4696
+ "gen_ai.request.temperature": (_a23 = settings.temperature) != null ? _a23 : void 0,
4490
4697
  "gen_ai.request.top_k": settings.topK,
4491
4698
  "gen_ai.request.top_p": settings.topP
4492
4699
  }
4493
4700
  }),
4494
4701
  tracer,
4495
4702
  fn: async (span2) => {
4496
- var _a23, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
4703
+ var _a24, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
4497
4704
  const result = await stepModel.doGenerate({
4498
4705
  ...callSettings2,
4499
4706
  tools: stepTools,
@@ -4505,7 +4712,7 @@ async function generateText({
4505
4712
  headers: headersWithUserAgent
4506
4713
  });
4507
4714
  const responseData = {
4508
- id: (_b2 = (_a23 = result.response) == null ? void 0 : _a23.id) != null ? _b2 : generateId2(),
4715
+ id: (_b2 = (_a24 = result.response) == null ? void 0 : _a24.id) != null ? _b2 : generateId2(),
4509
4716
  timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : /* @__PURE__ */ new Date(),
4510
4717
  modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,
4511
4718
  headers: (_g2 = result.response) == null ? void 0 : _g2.headers,
@@ -4598,10 +4805,19 @@ async function generateText({
4598
4805
  messages: stepInputMessages,
4599
4806
  experimental_context
4600
4807
  })) {
4808
+ const approvalId = generateId2();
4809
+ const signature = await maybeSignApproval({
4810
+ secret: experimental_toolApprovalSecret,
4811
+ approvalId,
4812
+ toolCallId: toolCall.toolCallId,
4813
+ toolName: toolCall.toolName,
4814
+ input: toolCall.input
4815
+ });
4601
4816
  toolApprovalRequests[toolCall.toolCallId] = {
4602
4817
  type: "tool-approval-request",
4603
- approvalId: generateId2(),
4604
- toolCall
4818
+ approvalId,
4819
+ toolCall,
4820
+ ...signature != null ? { signature } : {}
4605
4821
  };
4606
4822
  }
4607
4823
  }
@@ -4615,7 +4831,7 @@ async function generateText({
4615
4831
  toolCallId: toolCall.toolCallId,
4616
4832
  toolName: toolCall.toolName,
4617
4833
  input: toolCall.input,
4618
- error: (0, import_provider_utils14.getErrorMessage)(toolCall.error),
4834
+ error: (0, import_provider_utils16.getErrorMessage)(toolCall.error),
4619
4835
  dynamic: true
4620
4836
  });
4621
4837
  }
@@ -5075,8 +5291,8 @@ function asContent({
5075
5291
  }
5076
5292
 
5077
5293
  // src/generate-text/stream-text.ts
5078
- var import_provider28 = require("@ai-sdk/provider");
5079
- var import_provider_utils18 = require("@ai-sdk/provider-utils");
5294
+ var import_provider29 = require("@ai-sdk/provider");
5295
+ var import_provider_utils20 = require("@ai-sdk/provider-utils");
5080
5296
 
5081
5297
  // src/util/prepare-headers.ts
5082
5298
  function prepareHeaders(headers, defaultHeaders) {
@@ -5223,17 +5439,17 @@ function getResponseUIMessageId({
5223
5439
  }
5224
5440
 
5225
5441
  // src/ui/process-ui-message-stream.ts
5226
- var import_provider_utils16 = require("@ai-sdk/provider-utils");
5442
+ var import_provider_utils18 = require("@ai-sdk/provider-utils");
5227
5443
 
5228
5444
  // src/ui-message-stream/ui-message-chunks.ts
5229
5445
  var import_v47 = require("zod/v4");
5230
- var import_provider_utils15 = require("@ai-sdk/provider-utils");
5446
+ var import_provider_utils17 = require("@ai-sdk/provider-utils");
5231
5447
  var toolMetadataSchema = import_v47.z.record(
5232
5448
  import_v47.z.string(),
5233
5449
  jsonValueSchema.optional()
5234
5450
  );
5235
- var uiMessageChunkSchema = (0, import_provider_utils15.lazySchema)(
5236
- () => (0, import_provider_utils15.zodSchema)(
5451
+ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5452
+ () => (0, import_provider_utils17.zodSchema)(
5237
5453
  import_v47.z.union([
5238
5454
  import_v47.z.strictObject({
5239
5455
  type: import_v47.z.literal("text-start"),
@@ -5296,7 +5512,8 @@ var uiMessageChunkSchema = (0, import_provider_utils15.lazySchema)(
5296
5512
  import_v47.z.strictObject({
5297
5513
  type: import_v47.z.literal("tool-approval-request"),
5298
5514
  approvalId: import_v47.z.string(),
5299
- toolCallId: import_v47.z.string()
5515
+ toolCallId: import_v47.z.string(),
5516
+ signature: import_v47.z.string().optional()
5300
5517
  }),
5301
5518
  import_v47.z.strictObject({
5302
5519
  type: import_v47.z.literal("tool-output-available"),
@@ -5471,7 +5688,7 @@ function processUIMessageStream({
5471
5688
  new TransformStream({
5472
5689
  async transform(chunk, controller) {
5473
5690
  await runUpdateMessageJob(async ({ state, write }) => {
5474
- var _a21, _b, _c, _d;
5691
+ var _a22, _b, _c, _d;
5475
5692
  function getToolInvocation(toolCallId) {
5476
5693
  const toolInvocations = state.message.parts.filter(isToolUIPart);
5477
5694
  const toolInvocation = toolInvocations.find(
@@ -5487,7 +5704,7 @@ function processUIMessageStream({
5487
5704
  return toolInvocation;
5488
5705
  }
5489
5706
  function updateToolPart(options) {
5490
- var _a22;
5707
+ var _a23;
5491
5708
  const part = state.message.parts.find(
5492
5709
  (part2) => isStaticToolUIPart(part2) && part2.toolCallId === options.toolCallId
5493
5710
  );
@@ -5506,7 +5723,7 @@ function processUIMessageStream({
5506
5723
  if (options.toolMetadata !== void 0) {
5507
5724
  anyPart.toolMetadata = options.toolMetadata;
5508
5725
  }
5509
- anyPart.providerExecuted = (_a22 = anyOptions.providerExecuted) != null ? _a22 : part.providerExecuted;
5726
+ anyPart.providerExecuted = (_a23 = anyOptions.providerExecuted) != null ? _a23 : part.providerExecuted;
5510
5727
  const providerMetadata = anyOptions.providerMetadata;
5511
5728
  if (providerMetadata != null) {
5512
5729
  if (options.state === "output-available" || options.state === "output-error") {
@@ -5535,7 +5752,7 @@ function processUIMessageStream({
5535
5752
  }
5536
5753
  }
5537
5754
  function updateDynamicToolPart(options) {
5538
- var _a22, _b2;
5755
+ var _a23, _b2;
5539
5756
  const part = state.message.parts.find(
5540
5757
  (part2) => part2.type === "dynamic-tool" && part2.toolCallId === options.toolCallId
5541
5758
  );
@@ -5547,7 +5764,7 @@ function processUIMessageStream({
5547
5764
  anyPart.input = anyOptions.input;
5548
5765
  anyPart.output = anyOptions.output;
5549
5766
  anyPart.errorText = anyOptions.errorText;
5550
- anyPart.rawInput = (_a22 = anyOptions.rawInput) != null ? _a22 : anyPart.rawInput;
5767
+ anyPart.rawInput = (_a23 = anyOptions.rawInput) != null ? _a23 : anyPart.rawInput;
5551
5768
  anyPart.preliminary = anyOptions.preliminary;
5552
5769
  if (options.title !== void 0) {
5553
5770
  anyPart.title = options.title;
@@ -5587,7 +5804,7 @@ function processUIMessageStream({
5587
5804
  if (metadata != null) {
5588
5805
  const mergedMetadata = state.message.metadata != null ? mergeObjects(state.message.metadata, metadata) : metadata;
5589
5806
  if (messageMetadataSchema != null) {
5590
- await (0, import_provider_utils16.validateTypes)({
5807
+ await (0, import_provider_utils18.validateTypes)({
5591
5808
  value: mergedMetadata,
5592
5809
  schema: messageMetadataSchema,
5593
5810
  context: {
@@ -5622,7 +5839,7 @@ function processUIMessageStream({
5622
5839
  });
5623
5840
  }
5624
5841
  textPart.text += chunk.delta;
5625
- textPart.providerMetadata = (_a21 = chunk.providerMetadata) != null ? _a21 : textPart.providerMetadata;
5842
+ textPart.providerMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textPart.providerMetadata;
5626
5843
  write();
5627
5844
  break;
5628
5845
  }
@@ -5851,7 +6068,10 @@ function processUIMessageStream({
5851
6068
  case "tool-approval-request": {
5852
6069
  const toolInvocation = getToolInvocation(chunk.toolCallId);
5853
6070
  toolInvocation.state = "approval-requested";
5854
- toolInvocation.approval = { id: chunk.approvalId };
6071
+ toolInvocation.approval = {
6072
+ id: chunk.approvalId,
6073
+ ...chunk.signature != null ? { signature: chunk.signature } : {}
6074
+ };
5855
6075
  write();
5856
6076
  break;
5857
6077
  }
@@ -5971,7 +6191,7 @@ function processUIMessageStream({
5971
6191
  (p) => "id" in p && "data" in p && p.id === chunk.id && p.type === chunk.type
5972
6192
  );
5973
6193
  const actualPartIdx = partIdx >= 0 ? partIdx : state.message.parts.length;
5974
- await (0, import_provider_utils16.validateTypes)({
6194
+ await (0, import_provider_utils18.validateTypes)({
5975
6195
  value: chunk.data,
5976
6196
  schema: dataPartSchemas[chunk.type],
5977
6197
  context: {
@@ -6142,13 +6362,13 @@ function createAsyncIterableStream(source) {
6142
6362
  const reader = this.getReader();
6143
6363
  let finished = false;
6144
6364
  async function cleanup(cancelStream) {
6145
- var _a21;
6365
+ var _a22;
6146
6366
  if (finished)
6147
6367
  return;
6148
6368
  finished = true;
6149
6369
  try {
6150
6370
  if (cancelStream) {
6151
- await ((_a21 = reader.cancel) == null ? void 0 : _a21.call(reader));
6371
+ await ((_a22 = reader.cancel) == null ? void 0 : _a22.call(reader));
6152
6372
  }
6153
6373
  } finally {
6154
6374
  try {
@@ -6313,7 +6533,7 @@ function createStitchableStream() {
6313
6533
  }
6314
6534
 
6315
6535
  // src/generate-text/run-tools-transformation.ts
6316
- var import_provider_utils17 = require("@ai-sdk/provider-utils");
6536
+ var import_provider_utils19 = require("@ai-sdk/provider-utils");
6317
6537
  function runToolsTransformation({
6318
6538
  tools,
6319
6539
  generatorStream,
@@ -6324,6 +6544,7 @@ function runToolsTransformation({
6324
6544
  abortSignal,
6325
6545
  repairToolCall,
6326
6546
  experimental_context,
6547
+ toolApprovalSecret,
6327
6548
  generateId: generateId2,
6328
6549
  stepNumber,
6329
6550
  model,
@@ -6427,7 +6648,7 @@ function runToolsTransformation({
6427
6648
  toolCallId: toolCall.toolCallId,
6428
6649
  toolName: toolCall.toolName,
6429
6650
  input: toolCall.input,
6430
- error: (0, import_provider_utils17.getErrorMessage)(toolCall.error),
6651
+ error: (0, import_provider_utils19.getErrorMessage)(toolCall.error),
6431
6652
  dynamic: true,
6432
6653
  title: toolCall.title,
6433
6654
  ...toolCall.toolMetadata != null ? { toolMetadata: toolCall.toolMetadata } : {}
@@ -6453,10 +6674,19 @@ function runToolsTransformation({
6453
6674
  messages,
6454
6675
  experimental_context
6455
6676
  })) {
6677
+ const approvalId = generateId2();
6678
+ const signature = await maybeSignApproval({
6679
+ secret: toolApprovalSecret,
6680
+ approvalId,
6681
+ toolCallId: toolCall.toolCallId,
6682
+ toolName: toolCall.toolName,
6683
+ input: toolCall.input
6684
+ });
6456
6685
  toolResultsStreamController.enqueue({
6457
6686
  type: "tool-approval-request",
6458
- approvalId: generateId2(),
6459
- toolCall
6687
+ approvalId,
6688
+ toolCall,
6689
+ ...signature != null ? { signature } : {}
6460
6690
  });
6461
6691
  break;
6462
6692
  }
@@ -6565,7 +6795,7 @@ function runToolsTransformation({
6565
6795
  }
6566
6796
 
6567
6797
  // src/generate-text/stream-text.ts
6568
- var originalGenerateId2 = (0, import_provider_utils18.createIdGenerator)({
6798
+ var originalGenerateId2 = (0, import_provider_utils20.createIdGenerator)({
6569
6799
  prefix: "aitxt",
6570
6800
  size: 24
6571
6801
  });
@@ -6627,6 +6857,7 @@ function streamText({
6627
6857
  experimental_onToolCallStart: onToolCallStart,
6628
6858
  experimental_onToolCallFinish: onToolCallFinish,
6629
6859
  experimental_context,
6860
+ experimental_toolApprovalSecret,
6630
6861
  experimental_include: include,
6631
6862
  _internal: { now: now2 = now, generateId: generateId2 = originalGenerateId2 } = {},
6632
6863
  ...settings
@@ -6681,6 +6912,7 @@ function streamText({
6681
6912
  now: now2,
6682
6913
  generateId: generateId2,
6683
6914
  experimental_context,
6915
+ experimental_toolApprovalSecret,
6684
6916
  download: download2,
6685
6917
  include
6686
6918
  });
@@ -6708,7 +6940,7 @@ function createOutputTransformStream(output) {
6708
6940
  }
6709
6941
  return new TransformStream({
6710
6942
  async transform(chunk, controller) {
6711
- var _a21;
6943
+ var _a22;
6712
6944
  if (chunk.type === "finish-step" && textChunk.length > 0) {
6713
6945
  publishTextChunk({ controller });
6714
6946
  }
@@ -6735,7 +6967,7 @@ function createOutputTransformStream(output) {
6735
6967
  }
6736
6968
  text2 += chunk.text;
6737
6969
  textChunk += chunk.text;
6738
- textProviderMetadata = (_a21 = chunk.providerMetadata) != null ? _a21 : textProviderMetadata;
6970
+ textProviderMetadata = (_a22 = chunk.providerMetadata) != null ? _a22 : textProviderMetadata;
6739
6971
  const result = await output.parsePartialOutput({ text: text2 });
6740
6972
  if (result !== void 0) {
6741
6973
  const currentValue = typeof result.partial === "string" ? result.partial : JSON.stringify(result.partial);
@@ -6788,13 +7020,14 @@ var DefaultStreamTextResult = class {
6788
7020
  onToolCallStart,
6789
7021
  onToolCallFinish,
6790
7022
  experimental_context,
7023
+ experimental_toolApprovalSecret,
6791
7024
  download: download2,
6792
7025
  include
6793
7026
  }) {
6794
- this._totalUsage = new import_provider_utils18.DelayedPromise();
6795
- this._finishReason = new import_provider_utils18.DelayedPromise();
6796
- this._rawFinishReason = new import_provider_utils18.DelayedPromise();
6797
- this._steps = new import_provider_utils18.DelayedPromise();
7027
+ this._totalUsage = new import_provider_utils20.DelayedPromise();
7028
+ this._finishReason = new import_provider_utils20.DelayedPromise();
7029
+ this._rawFinishReason = new import_provider_utils20.DelayedPromise();
7030
+ this._steps = new import_provider_utils20.DelayedPromise();
6798
7031
  this.outputSpecification = output;
6799
7032
  this.includeRawChunks = includeRawChunks;
6800
7033
  this.tools = tools;
@@ -6812,11 +7045,11 @@ var DefaultStreamTextResult = class {
6812
7045
  let recordedNoOutputError;
6813
7046
  const pendingDeferredToolCalls = /* @__PURE__ */ new Map();
6814
7047
  let rootSpan;
6815
- let activeTextContent = {};
6816
- let activeReasoningContent = {};
7048
+ let activeTextContent = createIdMap();
7049
+ let activeReasoningContent = createIdMap();
6817
7050
  const eventProcessor = new TransformStream({
6818
7051
  async transform(chunk, controller) {
6819
- var _a21, _b, _c, _d;
7052
+ var _a22, _b, _c, _d;
6820
7053
  controller.enqueue(chunk);
6821
7054
  const { part } = chunk;
6822
7055
  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") {
@@ -6850,7 +7083,7 @@ var DefaultStreamTextResult = class {
6850
7083
  return;
6851
7084
  }
6852
7085
  activeText.text += part.text;
6853
- activeText.providerMetadata = (_a21 = part.providerMetadata) != null ? _a21 : activeText.providerMetadata;
7086
+ activeText.providerMetadata = (_a22 = part.providerMetadata) != null ? _a22 : activeText.providerMetadata;
6854
7087
  }
6855
7088
  if (part.type === "text-end") {
6856
7089
  const activeText = activeTextContent[part.id];
@@ -6929,8 +7162,8 @@ var DefaultStreamTextResult = class {
6929
7162
  }
6930
7163
  if (part.type === "start-step") {
6931
7164
  recordedContent = [];
6932
- activeReasoningContent = {};
6933
- activeTextContent = {};
7165
+ activeReasoningContent = createIdMap();
7166
+ activeTextContent = createIdMap();
6934
7167
  recordedRequest = part.request;
6935
7168
  recordedWarnings = part.warnings;
6936
7169
  }
@@ -6976,7 +7209,7 @@ var DefaultStreamTextResult = class {
6976
7209
  }
6977
7210
  },
6978
7211
  async flush(controller) {
6979
- var _a21, _b, _c, _d, _e, _f, _g;
7212
+ var _a22, _b, _c, _d, _e, _f, _g;
6980
7213
  try {
6981
7214
  if (recordedSteps.length === 0 || recordedNoOutputError != null) {
6982
7215
  const error = (abortSignal == null ? void 0 : abortSignal.aborted) ? abortSignal.reason : recordedNoOutputError != null ? recordedNoOutputError : new NoOutputGeneratedError({
@@ -7040,15 +7273,15 @@ var DefaultStreamTextResult = class {
7040
7273
  },
7041
7274
  "ai.response.toolCalls": {
7042
7275
  output: () => {
7043
- var _a22;
7044
- return ((_a22 = finalStep.toolCalls) == null ? void 0 : _a22.length) ? JSON.stringify(finalStep.toolCalls) : void 0;
7276
+ var _a23;
7277
+ return ((_a23 = finalStep.toolCalls) == null ? void 0 : _a23.length) ? JSON.stringify(finalStep.toolCalls) : void 0;
7045
7278
  }
7046
7279
  },
7047
7280
  "ai.response.providerMetadata": JSON.stringify(
7048
7281
  finalStep.providerMetadata
7049
7282
  ),
7050
7283
  "ai.usage.inputTokens": totalUsage.inputTokens,
7051
- "ai.usage.inputTokenDetails.noCacheTokens": (_a21 = totalUsage.inputTokenDetails) == null ? void 0 : _a21.noCacheTokens,
7284
+ "ai.usage.inputTokenDetails.noCacheTokens": (_a22 = totalUsage.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,
7052
7285
  "ai.usage.inputTokenDetails.cacheReadTokens": (_b = totalUsage.inputTokenDetails) == null ? void 0 : _b.cacheReadTokens,
7053
7286
  "ai.usage.inputTokenDetails.cacheWriteTokens": (_c = totalUsage.inputTokenDetails) == null ? void 0 : _c.cacheWriteTokens,
7054
7287
  "ai.usage.outputTokens": totalUsage.outputTokens,
@@ -7083,7 +7316,7 @@ var DefaultStreamTextResult = class {
7083
7316
  // The `reason` is usually of type DOMException, but it can also be of any type,
7084
7317
  // so we use getErrorMessage for serialization because it is already designed to accept values of the unknown type.
7085
7318
  // See: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/reason
7086
- ...(abortSignal == null ? void 0 : abortSignal.reason) !== void 0 ? { reason: (0, import_provider28.getErrorMessage)(abortSignal.reason) } : {}
7319
+ ...(abortSignal == null ? void 0 : abortSignal.reason) !== void 0 ? { reason: (0, import_provider29.getErrorMessage)(abortSignal.reason) } : {}
7087
7320
  });
7088
7321
  controller.close();
7089
7322
  }
@@ -7099,7 +7332,7 @@ var DefaultStreamTextResult = class {
7099
7332
  }
7100
7333
  controller.enqueue(value);
7101
7334
  } catch (error) {
7102
- if ((0, import_provider_utils18.isAbortError)(error) && (abortSignal == null ? void 0 : abortSignal.aborted)) {
7335
+ if ((0, import_provider_utils20.isAbortError)(error) && (abortSignal == null ? void 0 : abortSignal.aborted)) {
7103
7336
  abort();
7104
7337
  } else {
7105
7338
  controller.error(error);
@@ -7199,12 +7432,24 @@ var DefaultStreamTextResult = class {
7199
7432
  const initialResponseMessages = [];
7200
7433
  const { approvedToolApprovals, deniedToolApprovals } = collectToolApprovals({ messages: initialMessages });
7201
7434
  if (deniedToolApprovals.length > 0 || approvedToolApprovals.length > 0) {
7202
- const localApprovedToolApprovals = approvedToolApprovals.filter(
7203
- (toolApproval) => !toolApproval.toolCall.providerExecuted
7204
- );
7205
- const localDeniedToolApprovals = deniedToolApprovals.filter(
7206
- (toolApproval) => !toolApproval.toolCall.providerExecuted
7207
- );
7435
+ const {
7436
+ approvedToolApprovals: localApprovedToolApprovals,
7437
+ deniedToolApprovals: revalidationDeniedToolApprovals
7438
+ } = await validateApprovedToolApprovals({
7439
+ approvedToolApprovals: approvedToolApprovals.filter(
7440
+ (toolApproval) => !toolApproval.toolCall.providerExecuted
7441
+ ),
7442
+ tools,
7443
+ messages: initialMessages,
7444
+ experimental_context,
7445
+ toolApprovalSecret: experimental_toolApprovalSecret
7446
+ });
7447
+ const localDeniedToolApprovals = [
7448
+ ...deniedToolApprovals.filter(
7449
+ (toolApproval) => !toolApproval.toolCall.providerExecuted
7450
+ ),
7451
+ ...revalidationDeniedToolApprovals
7452
+ ];
7208
7453
  const deniedProviderExecutedToolApprovals = deniedToolApprovals.filter(
7209
7454
  (toolApproval) => toolApproval.toolCall.providerExecuted
7210
7455
  );
@@ -7299,7 +7544,7 @@ var DefaultStreamTextResult = class {
7299
7544
  responseMessages,
7300
7545
  usage
7301
7546
  }) {
7302
- var _a21, _b, _c, _d, _e, _f, _g, _h, _i;
7547
+ var _a22, _b, _c, _d, _e, _f, _g, _h, _i;
7303
7548
  const includeRawChunks2 = self.includeRawChunks;
7304
7549
  const stepTimeoutId = stepTimeoutMs != null ? setTimeout(() => stepAbortController.abort(), stepTimeoutMs) : void 0;
7305
7550
  let chunkTimeoutId = void 0;
@@ -7326,7 +7571,7 @@ var DefaultStreamTextResult = class {
7326
7571
  }
7327
7572
  }
7328
7573
  try {
7329
- stepFinish = new import_provider_utils18.DelayedPromise();
7574
+ stepFinish = new import_provider_utils20.DelayedPromise();
7330
7575
  const stepInputMessages = [...initialMessages, ...responseMessages];
7331
7576
  const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({
7332
7577
  model,
@@ -7336,7 +7581,7 @@ var DefaultStreamTextResult = class {
7336
7581
  experimental_context
7337
7582
  }));
7338
7583
  const stepModel = resolveLanguageModel(
7339
- (_a21 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a21 : model
7584
+ (_a22 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a22 : model
7340
7585
  );
7341
7586
  const stepModelInfo = {
7342
7587
  provider: stepModel.provider,
@@ -7459,6 +7704,7 @@ var DefaultStreamTextResult = class {
7459
7704
  repairToolCall,
7460
7705
  abortSignal,
7461
7706
  experimental_context,
7707
+ toolApprovalSecret: experimental_toolApprovalSecret,
7462
7708
  generateId: generateId2,
7463
7709
  stepNumber: recordedSteps.length,
7464
7710
  model: stepModelInfo,
@@ -7493,7 +7739,7 @@ var DefaultStreamTextResult = class {
7493
7739
  streamWithToolResults.pipeThrough(
7494
7740
  new TransformStream({
7495
7741
  async transform(chunk, controller) {
7496
- var _a22, _b2, _c2, _d2, _e2;
7742
+ var _a23, _b2, _c2, _d2, _e2;
7497
7743
  resetChunkTimeout();
7498
7744
  if (chunk.type === "stream-start") {
7499
7745
  warnings = chunk.warnings;
@@ -7570,7 +7816,7 @@ var DefaultStreamTextResult = class {
7570
7816
  }
7571
7817
  case "response-metadata": {
7572
7818
  stepResponse = {
7573
- id: (_a22 = chunk.id) != null ? _a22 : stepResponse.id,
7819
+ id: (_a23 = chunk.id) != null ? _a23 : stepResponse.id,
7574
7820
  timestamp: (_b2 = chunk.timestamp) != null ? _b2 : stepResponse.timestamp,
7575
7821
  modelId: (_c2 = chunk.modelId) != null ? _c2 : stepResponse.modelId
7576
7822
  };
@@ -7658,7 +7904,7 @@ var DefaultStreamTextResult = class {
7658
7904
  },
7659
7905
  // invoke onFinish callback and resolve toolResults promise when the stream is about to close:
7660
7906
  async flush(controller) {
7661
- var _a22, _b2, _c2, _d2, _e2, _f2, _g2;
7907
+ var _a23, _b2, _c2, _d2, _e2, _f2, _g2;
7662
7908
  if (!hasReceivedTerminalChunk && !hasReceivedOutputChunk) {
7663
7909
  controller.enqueue({
7664
7910
  type: "error",
@@ -7686,7 +7932,7 @@ var DefaultStreamTextResult = class {
7686
7932
  "ai.response.model": stepResponse.modelId,
7687
7933
  "ai.response.timestamp": stepResponse.timestamp.toISOString(),
7688
7934
  "ai.usage.inputTokens": stepUsage.inputTokens,
7689
- "ai.usage.inputTokenDetails.noCacheTokens": (_a22 = stepUsage.inputTokenDetails) == null ? void 0 : _a22.noCacheTokens,
7935
+ "ai.usage.inputTokenDetails.noCacheTokens": (_a23 = stepUsage.inputTokenDetails) == null ? void 0 : _a23.noCacheTokens,
7690
7936
  "ai.usage.inputTokenDetails.cacheReadTokens": (_b2 = stepUsage.inputTokenDetails) == null ? void 0 : _b2.cacheReadTokens,
7691
7937
  "ai.usage.inputTokenDetails.cacheWriteTokens": (_c2 = stepUsage.inputTokenDetails) == null ? void 0 : _c2.cacheWriteTokens,
7692
7938
  "ai.usage.outputTokens": stepUsage.outputTokens,
@@ -7960,19 +8206,19 @@ var DefaultStreamTextResult = class {
7960
8206
  this._steps.reject(error);
7961
8207
  }
7962
8208
  async consumeStream(options) {
7963
- var _a21;
8209
+ var _a22;
7964
8210
  try {
7965
8211
  await consumeStream({
7966
8212
  stream: this.fullStream,
7967
8213
  onError: (error) => {
7968
- var _a22;
8214
+ var _a23;
7969
8215
  this.rejectResultPromises(error);
7970
- (_a22 = options == null ? void 0 : options.onError) == null ? void 0 : _a22.call(options, error);
8216
+ (_a23 = options == null ? void 0 : options.onError) == null ? void 0 : _a23.call(options, error);
7971
8217
  }
7972
8218
  });
7973
8219
  } catch (error) {
7974
8220
  this.rejectResultPromises(error);
7975
- (_a21 = options == null ? void 0 : options.onError) == null ? void 0 : _a21.call(options, error);
8221
+ (_a22 = options == null ? void 0 : options.onError) == null ? void 0 : _a22.call(options, error);
7976
8222
  }
7977
8223
  }
7978
8224
  get experimental_partialOutputStream() {
@@ -7992,10 +8238,10 @@ var DefaultStreamTextResult = class {
7992
8238
  );
7993
8239
  }
7994
8240
  get elementStream() {
7995
- var _a21, _b, _c;
7996
- const transform = (_a21 = this.outputSpecification) == null ? void 0 : _a21.createElementStreamTransform();
8241
+ var _a22, _b, _c;
8242
+ const transform = (_a22 = this.outputSpecification) == null ? void 0 : _a22.createElementStreamTransform();
7997
8243
  if (transform == null) {
7998
- throw new import_provider28.UnsupportedFunctionalityError({
8244
+ throw new import_provider29.UnsupportedFunctionalityError({
7999
8245
  functionality: `element streams in ${(_c = (_b = this.outputSpecification) == null ? void 0 : _b.name) != null ? _c : "text"} mode`
8000
8246
  });
8001
8247
  }
@@ -8003,8 +8249,8 @@ var DefaultStreamTextResult = class {
8003
8249
  }
8004
8250
  get output() {
8005
8251
  return this.finalStep.then((step) => {
8006
- var _a21;
8007
- const output = (_a21 = this.outputSpecification) != null ? _a21 : text();
8252
+ var _a22;
8253
+ const output = (_a22 = this.outputSpecification) != null ? _a22 : text();
8008
8254
  return output.parseCompleteOutput(
8009
8255
  { text: step.text },
8010
8256
  {
@@ -8024,15 +8270,16 @@ var DefaultStreamTextResult = class {
8024
8270
  sendSources = false,
8025
8271
  sendStart = true,
8026
8272
  sendFinish = true,
8027
- onError = import_provider28.getErrorMessage
8273
+ onError = () => "An error occurred."
8274
+ // prevent leaking server error details to the client by default
8028
8275
  } = {}) {
8029
8276
  const responseMessageId = generateMessageId != null ? getResponseUIMessageId({
8030
8277
  originalMessages,
8031
8278
  responseMessageId: generateMessageId
8032
8279
  }) : void 0;
8033
8280
  const isDynamic = (part) => {
8034
- var _a21;
8035
- const tool2 = (_a21 = this.tools) == null ? void 0 : _a21[part.toolName];
8281
+ var _a22;
8282
+ const tool2 = (_a22 = this.tools) == null ? void 0 : _a22[part.toolName];
8036
8283
  if (tool2 == null) {
8037
8284
  return part.dynamic;
8038
8285
  }
@@ -8178,7 +8425,8 @@ var DefaultStreamTextResult = class {
8178
8425
  controller.enqueue({
8179
8426
  type: "tool-approval-request",
8180
8427
  approvalId: part.approvalId,
8181
- toolCallId: part.toolCall.toolCallId
8428
+ toolCallId: part.toolCall.toolCallId,
8429
+ ...part.signature != null ? { signature: part.signature } : {}
8182
8430
  });
8183
8431
  break;
8184
8432
  }
@@ -8374,9 +8622,9 @@ var ToolLoopAgent = class {
8374
8622
  return this.settings.tools;
8375
8623
  }
8376
8624
  async prepareCall(options) {
8377
- var _a21, _b, _c, _d;
8625
+ var _a22, _b, _c, _d;
8378
8626
  if (this.settings.callOptionsSchema != null && options.options !== void 0) {
8379
- const validatedOptions = await (0, import_provider_utils19.validateTypes)({
8627
+ const validatedOptions = await (0, import_provider_utils21.validateTypes)({
8380
8628
  value: options.options,
8381
8629
  schema: this.settings.callOptionsSchema,
8382
8630
  context: { field: "options" }
@@ -8386,7 +8634,7 @@ var ToolLoopAgent = class {
8386
8634
  const { onStepFinish: _settingsOnStepFinish, ...settingsWithoutCallback } = this.settings;
8387
8635
  const baseCallArgs = {
8388
8636
  ...settingsWithoutCallback,
8389
- stopWhen: (_a21 = this.settings.stopWhen) != null ? _a21 : stepCountIs(20),
8637
+ stopWhen: (_a22 = this.settings.stopWhen) != null ? _a22 : stepCountIs(20),
8390
8638
  ...options
8391
8639
  };
8392
8640
  const preparedCallArgs = (_d = await ((_c = (_b = this.settings).prepareCall) == null ? void 0 : _c.call(
@@ -8458,14 +8706,15 @@ var ToolLoopAgent = class {
8458
8706
  };
8459
8707
 
8460
8708
  // src/ui-message-stream/create-ui-message-stream.ts
8461
- var import_provider_utils20 = require("@ai-sdk/provider-utils");
8709
+ var import_provider_utils22 = require("@ai-sdk/provider-utils");
8462
8710
  function createUIMessageStream({
8463
8711
  execute,
8464
- onError = import_provider_utils20.getErrorMessage,
8712
+ onError = () => "An error occurred.",
8713
+ // prevent leaking server error details to the client by default
8465
8714
  originalMessages,
8466
8715
  onStepFinish,
8467
8716
  onFinish,
8468
- generateId: generateId2 = import_provider_utils20.generateId
8717
+ generateId: generateId2 = import_provider_utils22.generateId
8469
8718
  }) {
8470
8719
  let controller;
8471
8720
  const ongoingStreamPromises = [];
@@ -8552,7 +8801,7 @@ function readUIMessageStream({
8552
8801
  onError,
8553
8802
  terminateOnError = false
8554
8803
  }) {
8555
- var _a21;
8804
+ var _a22;
8556
8805
  let controller;
8557
8806
  let hasErrored = false;
8558
8807
  const outputStream = new ReadableStream({
@@ -8561,7 +8810,7 @@ function readUIMessageStream({
8561
8810
  }
8562
8811
  });
8563
8812
  const state = createStreamingUIMessageState({
8564
- messageId: (_a21 = message == null ? void 0 : message.id) != null ? _a21 : "",
8813
+ messageId: (_a22 = message == null ? void 0 : message.id) != null ? _a22 : "",
8565
8814
  lastMessage: message
8566
8815
  });
8567
8816
  const handleError = (error) => {
@@ -8594,7 +8843,7 @@ function readUIMessageStream({
8594
8843
  }
8595
8844
 
8596
8845
  // src/ui/convert-to-model-messages.ts
8597
- var import_provider_utils21 = require("@ai-sdk/provider-utils");
8846
+ var import_provider_utils23 = require("@ai-sdk/provider-utils");
8598
8847
  async function convertToModelMessages(messages, options) {
8599
8848
  const modelMessages = [];
8600
8849
  if (options == null ? void 0 : options.ignoreIncompleteToolCalls) {
@@ -8628,7 +8877,7 @@ async function convertToModelMessages(messages, options) {
8628
8877
  modelMessages.push({
8629
8878
  role: "user",
8630
8879
  content: message.parts.map((part) => {
8631
- var _a21;
8880
+ var _a22;
8632
8881
  if (isTextUIPart(part)) {
8633
8882
  return {
8634
8883
  type: "text",
@@ -8646,12 +8895,12 @@ async function convertToModelMessages(messages, options) {
8646
8895
  };
8647
8896
  }
8648
8897
  if (isDataUIPart(part)) {
8649
- return (_a21 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a21.call(
8898
+ return (_a22 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a22.call(
8650
8899
  options,
8651
8900
  part
8652
8901
  );
8653
8902
  }
8654
- }).filter(import_provider_utils21.isNonNullable)
8903
+ }).filter(import_provider_utils23.isNonNullable)
8655
8904
  });
8656
8905
  break;
8657
8906
  }
@@ -8659,7 +8908,7 @@ async function convertToModelMessages(messages, options) {
8659
8908
  if (message.parts != null) {
8660
8909
  let block = [];
8661
8910
  async function processBlock() {
8662
- var _a21, _b, _c, _d, _e, _f, _g, _h;
8911
+ var _a22, _b, _c, _d, _e, _f, _g, _h;
8663
8912
  if (block.length === 0) {
8664
8913
  return;
8665
8914
  }
@@ -8692,7 +8941,7 @@ async function convertToModelMessages(messages, options) {
8692
8941
  type: "tool-call",
8693
8942
  toolCallId: part.toolCallId,
8694
8943
  toolName,
8695
- input: part.state === "output-error" ? (_a21 = part.input) != null ? _a21 : "rawInput" in part ? part.rawInput : void 0 : part.input,
8944
+ input: part.state === "output-error" ? (_a22 = part.input) != null ? _a22 : "rawInput" in part ? part.rawInput : void 0 : part.input,
8696
8945
  providerExecuted: part.providerExecuted,
8697
8946
  ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
8698
8947
  });
@@ -8700,7 +8949,8 @@ async function convertToModelMessages(messages, options) {
8700
8949
  content.push({
8701
8950
  type: "tool-approval-request",
8702
8951
  approvalId: part.approval.id,
8703
- toolCallId: part.toolCallId
8952
+ toolCallId: part.toolCallId,
8953
+ ...part.approval.signature != null ? { signature: part.approval.signature } : {}
8704
8954
  });
8705
8955
  }
8706
8956
  if (part.providerExecuted === true && part.state !== "approval-responded" && (part.state === "output-available" || part.state === "output-error")) {
@@ -8739,8 +8989,8 @@ async function convertToModelMessages(messages, options) {
8739
8989
  });
8740
8990
  const toolParts = block.filter(
8741
8991
  (part) => {
8742
- var _a22;
8743
- return isToolUIPart(part) && (part.providerExecuted !== true || ((_a22 = part.approval) == null ? void 0 : _a22.approved) != null);
8992
+ var _a23;
8993
+ return isToolUIPart(part) && (part.providerExecuted !== true || ((_a23 = part.approval) == null ? void 0 : _a23.approved) != null);
8744
8994
  }
8745
8995
  );
8746
8996
  if (toolParts.length > 0) {
@@ -8828,15 +9078,15 @@ async function convertToModelMessages(messages, options) {
8828
9078
  }
8829
9079
 
8830
9080
  // src/ui/validate-ui-messages.ts
8831
- var import_provider29 = require("@ai-sdk/provider");
8832
- var import_provider_utils22 = require("@ai-sdk/provider-utils");
9081
+ var import_provider30 = require("@ai-sdk/provider");
9082
+ var import_provider_utils24 = require("@ai-sdk/provider-utils");
8833
9083
  var import_v48 = require("zod/v4");
8834
9084
  var toolMetadataSchema2 = import_v48.z.record(
8835
9085
  import_v48.z.string(),
8836
9086
  jsonValueSchema.optional()
8837
9087
  );
8838
- var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
8839
- () => (0, import_provider_utils22.zodSchema)(
9088
+ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
9089
+ () => (0, import_provider_utils24.zodSchema)(
8840
9090
  import_v48.z.array(
8841
9091
  import_v48.z.object({
8842
9092
  id: import_v48.z.string(),
@@ -8926,7 +9176,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
8926
9176
  approval: import_v48.z.object({
8927
9177
  id: import_v48.z.string(),
8928
9178
  approved: import_v48.z.never().optional(),
8929
- reason: import_v48.z.never().optional()
9179
+ reason: import_v48.z.never().optional(),
9180
+ signature: import_v48.z.string().optional()
8930
9181
  })
8931
9182
  }),
8932
9183
  import_v48.z.object({
@@ -8943,7 +9194,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
8943
9194
  approval: import_v48.z.object({
8944
9195
  id: import_v48.z.string(),
8945
9196
  approved: import_v48.z.boolean(),
8946
- reason: import_v48.z.string().optional()
9197
+ reason: import_v48.z.string().optional(),
9198
+ signature: import_v48.z.string().optional()
8947
9199
  })
8948
9200
  }),
8949
9201
  import_v48.z.object({
@@ -8962,7 +9214,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
8962
9214
  approval: import_v48.z.object({
8963
9215
  id: import_v48.z.string(),
8964
9216
  approved: import_v48.z.literal(true),
8965
- reason: import_v48.z.string().optional()
9217
+ reason: import_v48.z.string().optional(),
9218
+ signature: import_v48.z.string().optional()
8966
9219
  }).optional()
8967
9220
  }),
8968
9221
  import_v48.z.object({
@@ -8981,7 +9234,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
8981
9234
  approval: import_v48.z.object({
8982
9235
  id: import_v48.z.string(),
8983
9236
  approved: import_v48.z.literal(true),
8984
- reason: import_v48.z.string().optional()
9237
+ reason: import_v48.z.string().optional(),
9238
+ signature: import_v48.z.string().optional()
8985
9239
  }).optional()
8986
9240
  }),
8987
9241
  import_v48.z.object({
@@ -8998,7 +9252,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
8998
9252
  approval: import_v48.z.object({
8999
9253
  id: import_v48.z.string(),
9000
9254
  approved: import_v48.z.literal(false),
9001
- reason: import_v48.z.string().optional()
9255
+ reason: import_v48.z.string().optional(),
9256
+ signature: import_v48.z.string().optional()
9002
9257
  })
9003
9258
  }),
9004
9259
  import_v48.z.object({
@@ -9038,7 +9293,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
9038
9293
  approval: import_v48.z.object({
9039
9294
  id: import_v48.z.string(),
9040
9295
  approved: import_v48.z.never().optional(),
9041
- reason: import_v48.z.never().optional()
9296
+ reason: import_v48.z.never().optional(),
9297
+ signature: import_v48.z.string().optional()
9042
9298
  })
9043
9299
  }),
9044
9300
  import_v48.z.object({
@@ -9054,7 +9310,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
9054
9310
  approval: import_v48.z.object({
9055
9311
  id: import_v48.z.string(),
9056
9312
  approved: import_v48.z.boolean(),
9057
- reason: import_v48.z.string().optional()
9313
+ reason: import_v48.z.string().optional(),
9314
+ signature: import_v48.z.string().optional()
9058
9315
  })
9059
9316
  }),
9060
9317
  import_v48.z.object({
@@ -9072,7 +9329,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
9072
9329
  approval: import_v48.z.object({
9073
9330
  id: import_v48.z.string(),
9074
9331
  approved: import_v48.z.literal(true),
9075
- reason: import_v48.z.string().optional()
9332
+ reason: import_v48.z.string().optional(),
9333
+ signature: import_v48.z.string().optional()
9076
9334
  }).optional()
9077
9335
  }),
9078
9336
  import_v48.z.object({
@@ -9090,7 +9348,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
9090
9348
  approval: import_v48.z.object({
9091
9349
  id: import_v48.z.string(),
9092
9350
  approved: import_v48.z.literal(true),
9093
- reason: import_v48.z.string().optional()
9351
+ reason: import_v48.z.string().optional(),
9352
+ signature: import_v48.z.string().optional()
9094
9353
  }).optional()
9095
9354
  }),
9096
9355
  import_v48.z.object({
@@ -9106,7 +9365,8 @@ var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
9106
9365
  approval: import_v48.z.object({
9107
9366
  id: import_v48.z.string(),
9108
9367
  approved: import_v48.z.literal(false),
9109
- reason: import_v48.z.string().optional()
9368
+ reason: import_v48.z.string().optional(),
9369
+ signature: import_v48.z.string().optional()
9110
9370
  })
9111
9371
  })
9112
9372
  ])
@@ -9132,13 +9392,13 @@ async function safeValidateUIMessages({
9132
9392
  })
9133
9393
  };
9134
9394
  }
9135
- const validatedMessages = await (0, import_provider_utils22.validateTypes)({
9395
+ const validatedMessages = await (0, import_provider_utils24.validateTypes)({
9136
9396
  value: messages,
9137
9397
  schema: uiMessagesSchema
9138
9398
  });
9139
9399
  if (metadataSchema) {
9140
9400
  for (const [msgIdx, message] of validatedMessages.entries()) {
9141
- await (0, import_provider_utils22.validateTypes)({
9401
+ await (0, import_provider_utils24.validateTypes)({
9142
9402
  value: message.metadata,
9143
9403
  schema: metadataSchema,
9144
9404
  context: {
@@ -9158,7 +9418,7 @@ async function safeValidateUIMessages({
9158
9418
  if (!dataSchema) {
9159
9419
  return {
9160
9420
  success: false,
9161
- error: new import_provider29.TypeValidationError({
9421
+ error: new import_provider30.TypeValidationError({
9162
9422
  value: dataPart.data,
9163
9423
  cause: `No data schema found for data part ${dataName}`,
9164
9424
  context: {
@@ -9169,7 +9429,7 @@ async function safeValidateUIMessages({
9169
9429
  })
9170
9430
  };
9171
9431
  }
9172
- await (0, import_provider_utils22.validateTypes)({
9432
+ await (0, import_provider_utils24.validateTypes)({
9173
9433
  value: dataPart.data,
9174
9434
  schema: dataSchema,
9175
9435
  context: {
@@ -9189,7 +9449,7 @@ async function safeValidateUIMessages({
9189
9449
  if (!tool2) {
9190
9450
  return {
9191
9451
  success: false,
9192
- error: new import_provider29.TypeValidationError({
9452
+ error: new import_provider30.TypeValidationError({
9193
9453
  value: toolPart.input,
9194
9454
  cause: `No tool schema found for tool part ${toolName}`,
9195
9455
  context: {
@@ -9201,7 +9461,7 @@ async function safeValidateUIMessages({
9201
9461
  };
9202
9462
  }
9203
9463
  if (toolPart.state === "input-available" || toolPart.state === "output-available") {
9204
- await (0, import_provider_utils22.validateTypes)({
9464
+ await (0, import_provider_utils24.validateTypes)({
9205
9465
  value: toolPart.input,
9206
9466
  schema: tool2.inputSchema,
9207
9467
  context: {
@@ -9212,7 +9472,7 @@ async function safeValidateUIMessages({
9212
9472
  });
9213
9473
  }
9214
9474
  if (toolPart.state === "output-available" && tool2.outputSchema) {
9215
- await (0, import_provider_utils22.validateTypes)({
9475
+ await (0, import_provider_utils24.validateTypes)({
9216
9476
  value: toolPart.output,
9217
9477
  schema: tool2.outputSchema,
9218
9478
  context: {
@@ -9266,7 +9526,7 @@ async function createAgentUIStream({
9266
9526
  onStepFinish,
9267
9527
  ...uiMessageStreamOptions
9268
9528
  }) {
9269
- var _a21;
9529
+ var _a22;
9270
9530
  const validatedMessages = await validateUIMessages({
9271
9531
  messages: uiMessages,
9272
9532
  tools: agent.tools
@@ -9285,7 +9545,7 @@ async function createAgentUIStream({
9285
9545
  return result.toUIMessageStream({
9286
9546
  ...uiMessageStreamOptions,
9287
9547
  // TODO reading `originalMessages` is here for bc, always use `validatedMessages` in v7
9288
- originalMessages: (_a21 = uiMessageStreamOptions.originalMessages) != null ? _a21 : validatedMessages
9548
+ originalMessages: (_a22 = uiMessageStreamOptions.originalMessages) != null ? _a22 : validatedMessages
9289
9549
  });
9290
9550
  }
9291
9551
 
@@ -9326,7 +9586,7 @@ async function pipeAgentUIStreamToResponse({
9326
9586
  }
9327
9587
 
9328
9588
  // src/embed/embed.ts
9329
- var import_provider_utils23 = require("@ai-sdk/provider-utils");
9589
+ var import_provider_utils25 = require("@ai-sdk/provider-utils");
9330
9590
  async function embed({
9331
9591
  model: modelArg,
9332
9592
  value,
@@ -9341,7 +9601,7 @@ async function embed({
9341
9601
  maxRetries: maxRetriesArg,
9342
9602
  abortSignal
9343
9603
  });
9344
- const headersWithUserAgent = (0, import_provider_utils23.withUserAgentSuffix)(
9604
+ const headersWithUserAgent = (0, import_provider_utils25.withUserAgentSuffix)(
9345
9605
  headers != null ? headers : {},
9346
9606
  `ai/${VERSION}`
9347
9607
  );
@@ -9383,7 +9643,7 @@ async function embed({
9383
9643
  }),
9384
9644
  tracer,
9385
9645
  fn: async (doEmbedSpan) => {
9386
- var _a21, _b;
9646
+ var _a22, _b;
9387
9647
  const modelResponse = await model.doEmbed({
9388
9648
  values: [value],
9389
9649
  abortSignal,
@@ -9391,7 +9651,7 @@ async function embed({
9391
9651
  providerOptions
9392
9652
  });
9393
9653
  const embedding2 = modelResponse.embeddings[0];
9394
- const usage2 = (_a21 = modelResponse.usage) != null ? _a21 : { tokens: NaN };
9654
+ const usage2 = (_a22 = modelResponse.usage) != null ? _a22 : { tokens: NaN };
9395
9655
  doEmbedSpan.setAttributes(
9396
9656
  await selectTelemetryAttributes({
9397
9657
  telemetry,
@@ -9449,7 +9709,7 @@ var DefaultEmbedResult = class {
9449
9709
  };
9450
9710
 
9451
9711
  // src/embed/embed-many.ts
9452
- var import_provider_utils24 = require("@ai-sdk/provider-utils");
9712
+ var import_provider_utils26 = require("@ai-sdk/provider-utils");
9453
9713
 
9454
9714
  // src/util/split-array.ts
9455
9715
  function splitArray(array2, chunkSize) {
@@ -9479,7 +9739,7 @@ async function embedMany({
9479
9739
  maxRetries: maxRetriesArg,
9480
9740
  abortSignal
9481
9741
  });
9482
- const headersWithUserAgent = (0, import_provider_utils24.withUserAgentSuffix)(
9742
+ const headersWithUserAgent = (0, import_provider_utils26.withUserAgentSuffix)(
9483
9743
  headers != null ? headers : {},
9484
9744
  `ai/${VERSION}`
9485
9745
  );
@@ -9505,7 +9765,7 @@ async function embedMany({
9505
9765
  }),
9506
9766
  tracer,
9507
9767
  fn: async (span) => {
9508
- var _a21;
9768
+ var _a22;
9509
9769
  const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([
9510
9770
  model.maxEmbeddingsPerCall,
9511
9771
  model.supportsParallelCalls
@@ -9530,7 +9790,7 @@ async function embedMany({
9530
9790
  }),
9531
9791
  tracer,
9532
9792
  fn: async (doEmbedSpan) => {
9533
- var _a22, _b;
9793
+ var _a23, _b;
9534
9794
  const modelResponse = await model.doEmbed({
9535
9795
  values,
9536
9796
  abortSignal,
@@ -9538,7 +9798,7 @@ async function embedMany({
9538
9798
  providerOptions
9539
9799
  });
9540
9800
  const embeddings3 = modelResponse.embeddings;
9541
- const usage2 = (_a22 = modelResponse.usage) != null ? _a22 : { tokens: NaN };
9801
+ const usage2 = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
9542
9802
  doEmbedSpan.setAttributes(
9543
9803
  await selectTelemetryAttributes({
9544
9804
  telemetry,
@@ -9619,7 +9879,7 @@ async function embedMany({
9619
9879
  }),
9620
9880
  tracer,
9621
9881
  fn: async (doEmbedSpan) => {
9622
- var _a22, _b;
9882
+ var _a23, _b;
9623
9883
  const modelResponse = await model.doEmbed({
9624
9884
  values: chunk,
9625
9885
  abortSignal,
@@ -9627,7 +9887,7 @@ async function embedMany({
9627
9887
  providerOptions
9628
9888
  });
9629
9889
  const embeddings2 = modelResponse.embeddings;
9630
- const usage = (_a22 = modelResponse.usage) != null ? _a22 : { tokens: NaN };
9890
+ const usage = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
9631
9891
  doEmbedSpan.setAttributes(
9632
9892
  await selectTelemetryAttributes({
9633
9893
  telemetry,
@@ -9666,7 +9926,7 @@ async function embedMany({
9666
9926
  result.providerMetadata
9667
9927
  )) {
9668
9928
  providerMetadata[providerName] = {
9669
- ...(_a21 = providerMetadata[providerName]) != null ? _a21 : {},
9929
+ ...(_a22 = providerMetadata[providerName]) != null ? _a22 : {},
9670
9930
  ...metadata
9671
9931
  };
9672
9932
  }
@@ -9713,7 +9973,7 @@ var DefaultEmbedManyResult = class {
9713
9973
  };
9714
9974
 
9715
9975
  // src/generate-image/generate-image.ts
9716
- var import_provider_utils25 = require("@ai-sdk/provider-utils");
9976
+ var import_provider_utils27 = require("@ai-sdk/provider-utils");
9717
9977
  async function generateImage({
9718
9978
  model: modelArg,
9719
9979
  prompt: promptArg,
@@ -9727,9 +9987,9 @@ async function generateImage({
9727
9987
  abortSignal,
9728
9988
  headers
9729
9989
  }) {
9730
- var _a21, _b;
9990
+ var _a22, _b;
9731
9991
  const model = resolveImageModel(modelArg);
9732
- const headersWithUserAgent = (0, import_provider_utils25.withUserAgentSuffix)(
9992
+ const headersWithUserAgent = (0, import_provider_utils27.withUserAgentSuffix)(
9733
9993
  headers != null ? headers : {},
9734
9994
  `ai/${VERSION}`
9735
9995
  );
@@ -9737,7 +9997,7 @@ async function generateImage({
9737
9997
  maxRetries: maxRetriesArg,
9738
9998
  abortSignal
9739
9999
  });
9740
- const maxImagesPerCallWithDefault = (_a21 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a21 : 1;
10000
+ const maxImagesPerCallWithDefault = (_a22 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a22 : 1;
9741
10001
  const callCount = Math.ceil(n / maxImagesPerCallWithDefault);
9742
10002
  const callImageCounts = Array.from({ length: callCount }, (_, i) => {
9743
10003
  if (i < callCount - 1) {
@@ -9778,13 +10038,13 @@ async function generateImage({
9778
10038
  images.push(
9779
10039
  ...result.images.map(
9780
10040
  (image) => {
9781
- var _a22;
10041
+ var _a23;
9782
10042
  return new DefaultGeneratedFile({
9783
10043
  data: image,
9784
- mediaType: (_a22 = detectMediaType({
10044
+ mediaType: (_a23 = detectMediaType({
9785
10045
  data: image,
9786
10046
  signatures: imageMediaTypeSignatures
9787
- })) != null ? _a22 : "image/png"
10047
+ })) != null ? _a23 : "image/png"
9788
10048
  });
9789
10049
  }
9790
10050
  )
@@ -9872,7 +10132,7 @@ function toImageModelV3File(dataContent) {
9872
10132
  if (typeof dataContent === "string" && dataContent.startsWith("data:")) {
9873
10133
  const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(dataContent);
9874
10134
  if (base64Content != null) {
9875
- const uint8Data2 = (0, import_provider_utils25.convertBase64ToUint8Array)(base64Content);
10135
+ const uint8Data2 = (0, import_provider_utils27.convertBase64ToUint8Array)(base64Content);
9876
10136
  return {
9877
10137
  type: "file",
9878
10138
  data: uint8Data2,
@@ -9898,11 +10158,11 @@ function toImageModelV3File(dataContent) {
9898
10158
  var experimental_generateImage = generateImage;
9899
10159
 
9900
10160
  // src/generate-object/generate-object.ts
9901
- var import_provider_utils28 = require("@ai-sdk/provider-utils");
10161
+ var import_provider_utils30 = require("@ai-sdk/provider-utils");
9902
10162
 
9903
10163
  // src/generate-object/output-strategy.ts
9904
- var import_provider30 = require("@ai-sdk/provider");
9905
- var import_provider_utils26 = require("@ai-sdk/provider-utils");
10164
+ var import_provider31 = require("@ai-sdk/provider");
10165
+ var import_provider_utils28 = require("@ai-sdk/provider-utils");
9906
10166
  var noSchemaOutputStrategy = {
9907
10167
  type: "no-schema",
9908
10168
  jsonSchema: async () => void 0,
@@ -9922,7 +10182,7 @@ var noSchemaOutputStrategy = {
9922
10182
  } : { success: true, value };
9923
10183
  },
9924
10184
  createElementStream() {
9925
- throw new import_provider30.UnsupportedFunctionalityError({
10185
+ throw new import_provider31.UnsupportedFunctionalityError({
9926
10186
  functionality: "element streams in no-schema mode"
9927
10187
  });
9928
10188
  }
@@ -9941,10 +10201,10 @@ var objectOutputStrategy = (schema) => ({
9941
10201
  };
9942
10202
  },
9943
10203
  async validateFinalResult(value) {
9944
- return (0, import_provider_utils26.safeValidateTypes)({ value, schema });
10204
+ return (0, import_provider_utils28.safeValidateTypes)({ value, schema });
9945
10205
  },
9946
10206
  createElementStream() {
9947
- throw new import_provider30.UnsupportedFunctionalityError({
10207
+ throw new import_provider31.UnsupportedFunctionalityError({
9948
10208
  functionality: "element streams in object mode"
9949
10209
  });
9950
10210
  }
@@ -9973,11 +10233,11 @@ var arrayOutputStrategy = (schema) => {
9973
10233
  isFirstDelta,
9974
10234
  isFinalDelta
9975
10235
  }) {
9976
- var _a21;
9977
- if (!(0, import_provider30.isJSONObject)(value) || !(0, import_provider30.isJSONArray)(value.elements)) {
10236
+ var _a22;
10237
+ if (!(0, import_provider31.isJSONObject)(value) || !(0, import_provider31.isJSONArray)(value.elements)) {
9978
10238
  return {
9979
10239
  success: false,
9980
- error: new import_provider30.TypeValidationError({
10240
+ error: new import_provider31.TypeValidationError({
9981
10241
  value,
9982
10242
  cause: "value must be an object that contains an array of elements"
9983
10243
  })
@@ -9987,7 +10247,7 @@ var arrayOutputStrategy = (schema) => {
9987
10247
  const resultArray = [];
9988
10248
  for (let i = 0; i < inputArray.length; i++) {
9989
10249
  const element = inputArray[i];
9990
- const result = await (0, import_provider_utils26.safeValidateTypes)({ value: element, schema });
10250
+ const result = await (0, import_provider_utils28.safeValidateTypes)({ value: element, schema });
9991
10251
  if (i === inputArray.length - 1 && !isFinalDelta) {
9992
10252
  continue;
9993
10253
  }
@@ -9996,7 +10256,7 @@ var arrayOutputStrategy = (schema) => {
9996
10256
  }
9997
10257
  resultArray.push(result.value);
9998
10258
  }
9999
- const publishedElementCount = (_a21 = latestObject == null ? void 0 : latestObject.length) != null ? _a21 : 0;
10259
+ const publishedElementCount = (_a22 = latestObject == null ? void 0 : latestObject.length) != null ? _a22 : 0;
10000
10260
  let textDelta = "";
10001
10261
  if (isFirstDelta) {
10002
10262
  textDelta += "[";
@@ -10017,10 +10277,10 @@ var arrayOutputStrategy = (schema) => {
10017
10277
  };
10018
10278
  },
10019
10279
  async validateFinalResult(value) {
10020
- if (!(0, import_provider30.isJSONObject)(value) || !(0, import_provider30.isJSONArray)(value.elements)) {
10280
+ if (!(0, import_provider31.isJSONObject)(value) || !(0, import_provider31.isJSONArray)(value.elements)) {
10021
10281
  return {
10022
10282
  success: false,
10023
- error: new import_provider30.TypeValidationError({
10283
+ error: new import_provider31.TypeValidationError({
10024
10284
  value,
10025
10285
  cause: "value must be an object that contains an array of elements"
10026
10286
  })
@@ -10029,7 +10289,7 @@ var arrayOutputStrategy = (schema) => {
10029
10289
  const inputArray = value.elements;
10030
10290
  const resultArray = [];
10031
10291
  for (const element of inputArray) {
10032
- const result = await (0, import_provider_utils26.safeValidateTypes)({ value: element, schema });
10292
+ const result = await (0, import_provider_utils28.safeValidateTypes)({ value: element, schema });
10033
10293
  if (!result.success) {
10034
10294
  return result;
10035
10295
  }
@@ -10085,10 +10345,10 @@ var enumOutputStrategy = (enumValues) => {
10085
10345
  additionalProperties: false
10086
10346
  }),
10087
10347
  async validateFinalResult(value) {
10088
- if (!(0, import_provider30.isJSONObject)(value) || typeof value.result !== "string") {
10348
+ if (!(0, import_provider31.isJSONObject)(value) || typeof value.result !== "string") {
10089
10349
  return {
10090
10350
  success: false,
10091
- error: new import_provider30.TypeValidationError({
10351
+ error: new import_provider31.TypeValidationError({
10092
10352
  value,
10093
10353
  cause: 'value must be an object that contains a string in the "result" property.'
10094
10354
  })
@@ -10097,17 +10357,17 @@ var enumOutputStrategy = (enumValues) => {
10097
10357
  const result = value.result;
10098
10358
  return enumValues.includes(result) ? { success: true, value: result } : {
10099
10359
  success: false,
10100
- error: new import_provider30.TypeValidationError({
10360
+ error: new import_provider31.TypeValidationError({
10101
10361
  value,
10102
10362
  cause: "value must be a string in the enum"
10103
10363
  })
10104
10364
  };
10105
10365
  },
10106
10366
  async validatePartialResult({ value, textDelta }) {
10107
- if (!(0, import_provider30.isJSONObject)(value) || typeof value.result !== "string") {
10367
+ if (!(0, import_provider31.isJSONObject)(value) || typeof value.result !== "string") {
10108
10368
  return {
10109
10369
  success: false,
10110
- error: new import_provider30.TypeValidationError({
10370
+ error: new import_provider31.TypeValidationError({
10111
10371
  value,
10112
10372
  cause: 'value must be an object that contains a string in the "result" property.'
10113
10373
  })
@@ -10120,7 +10380,7 @@ var enumOutputStrategy = (enumValues) => {
10120
10380
  if (value.result.length === 0 || possibleEnumValues.length === 0) {
10121
10381
  return {
10122
10382
  success: false,
10123
- error: new import_provider30.TypeValidationError({
10383
+ error: new import_provider31.TypeValidationError({
10124
10384
  value,
10125
10385
  cause: "value must be a string in the enum"
10126
10386
  })
@@ -10135,7 +10395,7 @@ var enumOutputStrategy = (enumValues) => {
10135
10395
  };
10136
10396
  },
10137
10397
  createElementStream() {
10138
- throw new import_provider30.UnsupportedFunctionalityError({
10398
+ throw new import_provider31.UnsupportedFunctionalityError({
10139
10399
  functionality: "element streams in enum mode"
10140
10400
  });
10141
10401
  }
@@ -10148,9 +10408,9 @@ function getOutputStrategy({
10148
10408
  }) {
10149
10409
  switch (output) {
10150
10410
  case "object":
10151
- return objectOutputStrategy((0, import_provider_utils26.asSchema)(schema));
10411
+ return objectOutputStrategy((0, import_provider_utils28.asSchema)(schema));
10152
10412
  case "array":
10153
- return arrayOutputStrategy((0, import_provider_utils26.asSchema)(schema));
10413
+ return arrayOutputStrategy((0, import_provider_utils28.asSchema)(schema));
10154
10414
  case "enum":
10155
10415
  return enumOutputStrategy(enumValues);
10156
10416
  case "no-schema":
@@ -10163,10 +10423,10 @@ function getOutputStrategy({
10163
10423
  }
10164
10424
 
10165
10425
  // src/generate-object/parse-and-validate-object-result.ts
10166
- var import_provider31 = require("@ai-sdk/provider");
10167
- var import_provider_utils27 = require("@ai-sdk/provider-utils");
10426
+ var import_provider32 = require("@ai-sdk/provider");
10427
+ var import_provider_utils29 = require("@ai-sdk/provider-utils");
10168
10428
  async function parseAndValidateObjectResult(result, outputStrategy, context2) {
10169
- const parseResult = await (0, import_provider_utils27.safeParseJSON)({ text: result });
10429
+ const parseResult = await (0, import_provider_utils29.safeParseJSON)({ text: result });
10170
10430
  if (!parseResult.success) {
10171
10431
  throw new NoObjectGeneratedError({
10172
10432
  message: "No object generated: could not parse the response.",
@@ -10201,7 +10461,7 @@ async function parseAndValidateObjectResultWithRepair(result, outputStrategy, re
10201
10461
  try {
10202
10462
  return await parseAndValidateObjectResult(result, outputStrategy, context2);
10203
10463
  } catch (error) {
10204
- if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider31.JSONParseError.isInstance(error.cause) || import_provider31.TypeValidationError.isInstance(error.cause))) {
10464
+ if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider32.JSONParseError.isInstance(error.cause) || import_provider32.TypeValidationError.isInstance(error.cause))) {
10205
10465
  const repairedText = await repairText({
10206
10466
  text: result,
10207
10467
  error: error.cause
@@ -10338,7 +10598,7 @@ function validateObjectGenerationInput({
10338
10598
  }
10339
10599
 
10340
10600
  // src/generate-object/generate-object.ts
10341
- var originalGenerateId3 = (0, import_provider_utils28.createIdGenerator)({ prefix: "aiobj", size: 24 });
10601
+ var originalGenerateId3 = (0, import_provider_utils30.createIdGenerator)({ prefix: "aiobj", size: 24 });
10342
10602
  async function generateObject(options) {
10343
10603
  const {
10344
10604
  model: modelArg,
@@ -10384,7 +10644,7 @@ async function generateObject(options) {
10384
10644
  enumValues
10385
10645
  });
10386
10646
  const callSettings = prepareCallSettings(settings);
10387
- const headersWithUserAgent = (0, import_provider_utils28.withUserAgentSuffix)(
10647
+ const headersWithUserAgent = (0, import_provider_utils30.withUserAgentSuffix)(
10388
10648
  headers != null ? headers : {},
10389
10649
  `ai/${VERSION}`
10390
10650
  );
@@ -10419,7 +10679,7 @@ async function generateObject(options) {
10419
10679
  }),
10420
10680
  tracer,
10421
10681
  fn: async (span) => {
10422
- var _a21;
10682
+ var _a22;
10423
10683
  let result;
10424
10684
  let finishReason;
10425
10685
  let usage;
@@ -10466,7 +10726,7 @@ async function generateObject(options) {
10466
10726
  }),
10467
10727
  tracer,
10468
10728
  fn: async (span2) => {
10469
- var _a22, _b, _c, _d, _e, _f, _g, _h;
10729
+ var _a23, _b, _c, _d, _e, _f, _g, _h;
10470
10730
  const result2 = await model.doGenerate({
10471
10731
  responseFormat: {
10472
10732
  type: "json",
@@ -10481,7 +10741,7 @@ async function generateObject(options) {
10481
10741
  headers: headersWithUserAgent
10482
10742
  });
10483
10743
  const responseData = {
10484
- id: (_b = (_a22 = result2.response) == null ? void 0 : _a22.id) != null ? _b : generateId2(),
10744
+ id: (_b = (_a23 = result2.response) == null ? void 0 : _a23.id) != null ? _b : generateId2(),
10485
10745
  timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
10486
10746
  modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,
10487
10747
  headers: (_g = result2.response) == null ? void 0 : _g.headers,
@@ -10537,7 +10797,7 @@ async function generateObject(options) {
10537
10797
  usage = asLanguageModelUsage(generateResult.usage);
10538
10798
  warnings = generateResult.warnings;
10539
10799
  resultProviderMetadata = generateResult.providerMetadata;
10540
- request = (_a21 = generateResult.request) != null ? _a21 : {};
10800
+ request = (_a22 = generateResult.request) != null ? _a22 : {};
10541
10801
  response = generateResult.responseData;
10542
10802
  reasoning = generateResult.reasoning;
10543
10803
  logWarnings({
@@ -10600,9 +10860,9 @@ var DefaultGenerateObjectResult = class {
10600
10860
  this.reasoning = options.reasoning;
10601
10861
  }
10602
10862
  toJsonResponse(init) {
10603
- var _a21;
10863
+ var _a22;
10604
10864
  return new Response(JSON.stringify(this.object), {
10605
- status: (_a21 = init == null ? void 0 : init.status) != null ? _a21 : 200,
10865
+ status: (_a22 = init == null ? void 0 : init.status) != null ? _a22 : 200,
10606
10866
  headers: prepareHeaders(init == null ? void 0 : init.headers, {
10607
10867
  "content-type": "application/json; charset=utf-8"
10608
10868
  })
@@ -10611,7 +10871,7 @@ var DefaultGenerateObjectResult = class {
10611
10871
  };
10612
10872
 
10613
10873
  // src/generate-object/stream-object.ts
10614
- var import_provider_utils30 = require("@ai-sdk/provider-utils");
10874
+ var import_provider_utils32 = require("@ai-sdk/provider-utils");
10615
10875
 
10616
10876
  // src/util/cosine-similarity.ts
10617
10877
  function cosineSimilarity(vector1, vector2) {
@@ -10726,15 +10986,15 @@ var SerialJobExecutor = class {
10726
10986
  };
10727
10987
 
10728
10988
  // src/util/simulate-readable-stream.ts
10729
- var import_provider_utils29 = require("@ai-sdk/provider-utils");
10989
+ var import_provider_utils31 = require("@ai-sdk/provider-utils");
10730
10990
  function simulateReadableStream({
10731
10991
  chunks,
10732
10992
  initialDelayInMs = 0,
10733
10993
  chunkDelayInMs = 0,
10734
10994
  _internal
10735
10995
  }) {
10736
- var _a21;
10737
- const delay2 = (_a21 = _internal == null ? void 0 : _internal.delay) != null ? _a21 : import_provider_utils29.delay;
10996
+ var _a22;
10997
+ const delay2 = (_a22 = _internal == null ? void 0 : _internal.delay) != null ? _a22 : import_provider_utils31.delay;
10738
10998
  let index = 0;
10739
10999
  return new ReadableStream({
10740
11000
  async pull(controller) {
@@ -10749,7 +11009,7 @@ function simulateReadableStream({
10749
11009
  }
10750
11010
 
10751
11011
  // src/generate-object/stream-object.ts
10752
- var originalGenerateId4 = (0, import_provider_utils30.createIdGenerator)({ prefix: "aiobj", size: 24 });
11012
+ var originalGenerateId4 = (0, import_provider_utils32.createIdGenerator)({ prefix: "aiobj", size: 24 });
10753
11013
  function streamObject(options) {
10754
11014
  const {
10755
11015
  model,
@@ -10842,13 +11102,13 @@ var DefaultStreamObjectResult = class {
10842
11102
  currentDate,
10843
11103
  now: now2
10844
11104
  }) {
10845
- this._object = new import_provider_utils30.DelayedPromise();
10846
- this._usage = new import_provider_utils30.DelayedPromise();
10847
- this._providerMetadata = new import_provider_utils30.DelayedPromise();
10848
- this._warnings = new import_provider_utils30.DelayedPromise();
10849
- this._request = new import_provider_utils30.DelayedPromise();
10850
- this._response = new import_provider_utils30.DelayedPromise();
10851
- this._finishReason = new import_provider_utils30.DelayedPromise();
11105
+ this._object = new import_provider_utils32.DelayedPromise();
11106
+ this._usage = new import_provider_utils32.DelayedPromise();
11107
+ this._providerMetadata = new import_provider_utils32.DelayedPromise();
11108
+ this._warnings = new import_provider_utils32.DelayedPromise();
11109
+ this._request = new import_provider_utils32.DelayedPromise();
11110
+ this._response = new import_provider_utils32.DelayedPromise();
11111
+ this._finishReason = new import_provider_utils32.DelayedPromise();
10852
11112
  const model = resolveLanguageModel(modelArg);
10853
11113
  const { maxRetries, retry } = prepareRetries({
10854
11114
  maxRetries: maxRetriesArg,
@@ -10996,7 +11256,7 @@ var DefaultStreamObjectResult = class {
10996
11256
  const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
10997
11257
  new TransformStream({
10998
11258
  async transform(chunk, controller) {
10999
- var _a21, _b, _c;
11259
+ var _a22, _b, _c;
11000
11260
  if (typeof chunk === "object" && chunk.type === "stream-start") {
11001
11261
  warnings = chunk.warnings;
11002
11262
  return;
@@ -11046,7 +11306,7 @@ var DefaultStreamObjectResult = class {
11046
11306
  switch (chunk.type) {
11047
11307
  case "response-metadata": {
11048
11308
  fullResponse = {
11049
- id: (_a21 = chunk.id) != null ? _a21 : fullResponse.id,
11309
+ id: (_a22 = chunk.id) != null ? _a22 : fullResponse.id,
11050
11310
  timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,
11051
11311
  modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId
11052
11312
  };
@@ -11277,7 +11537,7 @@ var DefaultStreamObjectResult = class {
11277
11537
  };
11278
11538
 
11279
11539
  // src/generate-speech/generate-speech.ts
11280
- var import_provider_utils31 = require("@ai-sdk/provider-utils");
11540
+ var import_provider_utils33 = require("@ai-sdk/provider-utils");
11281
11541
 
11282
11542
  // src/generate-speech/generated-audio-file.ts
11283
11543
  var DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {
@@ -11318,12 +11578,12 @@ async function generateSpeech({
11318
11578
  abortSignal,
11319
11579
  headers
11320
11580
  }) {
11321
- var _a21;
11581
+ var _a22;
11322
11582
  const resolvedModel = resolveSpeechModel(model);
11323
11583
  if (!resolvedModel) {
11324
11584
  throw new Error("Model could not be resolved");
11325
11585
  }
11326
- const headersWithUserAgent = (0, import_provider_utils31.withUserAgentSuffix)(
11586
+ const headersWithUserAgent = (0, import_provider_utils33.withUserAgentSuffix)(
11327
11587
  headers != null ? headers : {},
11328
11588
  `ai/${VERSION}`
11329
11589
  );
@@ -11355,10 +11615,10 @@ async function generateSpeech({
11355
11615
  return new DefaultSpeechResult({
11356
11616
  audio: new DefaultGeneratedAudioFile({
11357
11617
  data: result.audio,
11358
- mediaType: (_a21 = detectMediaType({
11618
+ mediaType: (_a22 = detectMediaType({
11359
11619
  data: result.audio,
11360
11620
  signatures: audioMediaTypeSignatures
11361
- })) != null ? _a21 : "audio/mp3"
11621
+ })) != null ? _a22 : "audio/mp3"
11362
11622
  }),
11363
11623
  warnings: result.warnings,
11364
11624
  responses: [result.response],
@@ -11367,11 +11627,11 @@ async function generateSpeech({
11367
11627
  }
11368
11628
  var DefaultSpeechResult = class {
11369
11629
  constructor(options) {
11370
- var _a21;
11630
+ var _a22;
11371
11631
  this.audio = options.audio;
11372
11632
  this.warnings = options.warnings;
11373
11633
  this.responses = options.responses;
11374
- this.providerMetadata = (_a21 = options.providerMetadata) != null ? _a21 : {};
11634
+ this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
11375
11635
  }
11376
11636
  };
11377
11637
 
@@ -11455,8 +11715,8 @@ function pruneMessages({
11455
11715
  }
11456
11716
 
11457
11717
  // src/generate-text/smooth-stream.ts
11458
- var import_provider_utils32 = require("@ai-sdk/provider-utils");
11459
- var import_provider32 = require("@ai-sdk/provider");
11718
+ var import_provider_utils34 = require("@ai-sdk/provider-utils");
11719
+ var import_provider33 = require("@ai-sdk/provider");
11460
11720
  var CHUNKING_REGEXPS = {
11461
11721
  word: /\S+\s+/m,
11462
11722
  line: /\n+/m
@@ -11464,7 +11724,7 @@ var CHUNKING_REGEXPS = {
11464
11724
  function smoothStream({
11465
11725
  delayInMs = 10,
11466
11726
  chunking = "word",
11467
- _internal: { delay: delay2 = import_provider_utils32.delay } = {}
11727
+ _internal: { delay: delay2 = import_provider_utils34.delay } = {}
11468
11728
  } = {}) {
11469
11729
  let detectChunk;
11470
11730
  if (chunking != null && typeof chunking === "object" && "segment" in chunking && typeof chunking.segment === "function") {
@@ -11495,7 +11755,7 @@ function smoothStream({
11495
11755
  } else {
11496
11756
  const chunkingRegex = typeof chunking === "string" ? CHUNKING_REGEXPS[chunking] : chunking instanceof RegExp ? chunking : void 0;
11497
11757
  if (chunkingRegex == null) {
11498
- throw new import_provider32.InvalidArgumentError({
11758
+ throw new import_provider33.InvalidArgumentError({
11499
11759
  argument: "chunking",
11500
11760
  message: `Chunking must be "word", "line", a RegExp, an Intl.Segmenter, or a ChunkDetector function. Received: ${chunking}`
11501
11761
  });
@@ -11553,7 +11813,7 @@ function smoothStream({
11553
11813
  }
11554
11814
 
11555
11815
  // src/generate-video/generate-video.ts
11556
- var import_provider_utils33 = require("@ai-sdk/provider-utils");
11816
+ var import_provider_utils35 = require("@ai-sdk/provider-utils");
11557
11817
  var defaultDownload = createDownload();
11558
11818
  async function experimental_generateVideo({
11559
11819
  model: modelArg,
@@ -11571,9 +11831,9 @@ async function experimental_generateVideo({
11571
11831
  headers,
11572
11832
  download: downloadFn = defaultDownload
11573
11833
  }) {
11574
- var _a21;
11834
+ var _a22;
11575
11835
  const model = resolveVideoModel(modelArg);
11576
- const headersWithUserAgent = (0, import_provider_utils33.withUserAgentSuffix)(
11836
+ const headersWithUserAgent = (0, import_provider_utils35.withUserAgentSuffix)(
11577
11837
  headers != null ? headers : {},
11578
11838
  `ai/${VERSION}`
11579
11839
  );
@@ -11582,7 +11842,7 @@ async function experimental_generateVideo({
11582
11842
  abortSignal
11583
11843
  });
11584
11844
  const { prompt, image } = normalizePrompt2(promptArg);
11585
- const maxVideosPerCallWithDefault = (_a21 = maxVideosPerCall != null ? maxVideosPerCall : await invokeModelMaxVideosPerCall(model)) != null ? _a21 : 1;
11845
+ const maxVideosPerCallWithDefault = (_a22 = maxVideosPerCall != null ? maxVideosPerCall : await invokeModelMaxVideosPerCall(model)) != null ? _a22 : 1;
11586
11846
  const callCount = Math.ceil(n / maxVideosPerCallWithDefault);
11587
11847
  const callVideoCounts = Array.from({ length: callCount }, (_, index) => {
11588
11848
  const remaining = n - index * maxVideosPerCallWithDefault;
@@ -11704,7 +11964,7 @@ async function experimental_generateVideo({
11704
11964
  };
11705
11965
  }
11706
11966
  function normalizePrompt2(promptArg) {
11707
- var _a21, _b;
11967
+ var _a22, _b;
11708
11968
  if (typeof promptArg === "string") {
11709
11969
  return {
11710
11970
  prompt: promptArg,
@@ -11725,14 +11985,14 @@ function normalizePrompt2(promptArg) {
11725
11985
  image = {
11726
11986
  type: "file",
11727
11987
  mediaType: mediaType != null ? mediaType : "image/png",
11728
- data: (0, import_provider_utils33.convertBase64ToUint8Array)(base64Content != null ? base64Content : "")
11988
+ data: (0, import_provider_utils35.convertBase64ToUint8Array)(base64Content != null ? base64Content : "")
11729
11989
  };
11730
11990
  } else {
11731
- const bytes = (0, import_provider_utils33.convertBase64ToUint8Array)(dataContent);
11732
- const mediaType = (_a21 = detectMediaType({
11991
+ const bytes = (0, import_provider_utils35.convertBase64ToUint8Array)(dataContent);
11992
+ const mediaType = (_a22 = detectMediaType({
11733
11993
  data: bytes,
11734
11994
  signatures: imageMediaTypeSignatures
11735
- })) != null ? _a21 : "image/png";
11995
+ })) != null ? _a22 : "image/png";
11736
11996
  image = {
11737
11997
  type: "file",
11738
11998
  mediaType,
@@ -11792,8 +12052,8 @@ function defaultTransform(text2) {
11792
12052
  return text2.replace(/^```(?:json)?\s*\n?/, "").replace(/\n?```\s*$/, "").trim();
11793
12053
  }
11794
12054
  function extractJsonMiddleware(options) {
11795
- var _a21;
11796
- const transform = (_a21 = options == null ? void 0 : options.transform) != null ? _a21 : defaultTransform;
12055
+ var _a22;
12056
+ const transform = (_a22 = options == null ? void 0 : options.transform) != null ? _a22 : defaultTransform;
11797
12057
  const hasCustomTransform = (options == null ? void 0 : options.transform) !== void 0;
11798
12058
  return {
11799
12059
  specificationVersion: "v3",
@@ -11814,7 +12074,7 @@ function extractJsonMiddleware(options) {
11814
12074
  },
11815
12075
  wrapStream: async ({ doStream }) => {
11816
12076
  const { stream, ...rest } = await doStream();
11817
- const textBlocks = {};
12077
+ const textBlocks = createIdMap();
11818
12078
  const SUFFIX_BUFFER_SIZE = 12;
11819
12079
  return {
11820
12080
  stream: stream.pipeThrough(
@@ -11977,7 +12237,7 @@ function extractReasoningMiddleware({
11977
12237
  },
11978
12238
  wrapStream: async ({ doStream }) => {
11979
12239
  const { stream, ...rest } = await doStream();
11980
- const reasoningExtractions = {};
12240
+ const reasoningExtractions = createIdMap();
11981
12241
  let delayedTextStart;
11982
12242
  return {
11983
12243
  stream: stream.pipeThrough(
@@ -12167,13 +12427,13 @@ function addToolInputExamplesMiddleware({
12167
12427
  return {
12168
12428
  specificationVersion: "v3",
12169
12429
  transformParams: async ({ params }) => {
12170
- var _a21;
12171
- if (!((_a21 = params.tools) == null ? void 0 : _a21.length)) {
12430
+ var _a22;
12431
+ if (!((_a22 = params.tools) == null ? void 0 : _a22.length)) {
12172
12432
  return params;
12173
12433
  }
12174
12434
  const transformedTools = params.tools.map((tool2) => {
12175
- var _a22;
12176
- if (tool2.type !== "function" || !((_a22 = tool2.inputExamples) == null ? void 0 : _a22.length)) {
12435
+ var _a23;
12436
+ if (tool2.type !== "function" || !((_a23 = tool2.inputExamples) == null ? void 0 : _a23.length)) {
12177
12437
  return tool2;
12178
12438
  }
12179
12439
  const formattedExamples = tool2.inputExamples.map((example, index) => format(example, index)).join("\n");
@@ -12220,7 +12480,7 @@ var doWrap = ({
12220
12480
  modelId,
12221
12481
  providerId
12222
12482
  }) => {
12223
- var _a21, _b, _c;
12483
+ var _a22, _b, _c;
12224
12484
  async function doTransform({
12225
12485
  params,
12226
12486
  type
@@ -12229,7 +12489,7 @@ var doWrap = ({
12229
12489
  }
12230
12490
  return {
12231
12491
  specificationVersion: "v3",
12232
- provider: (_a21 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a21 : model.provider,
12492
+ provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
12233
12493
  modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
12234
12494
  supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
12235
12495
  async doGenerate(params) {
@@ -12276,7 +12536,7 @@ var doWrap2 = ({
12276
12536
  modelId,
12277
12537
  providerId
12278
12538
  }) => {
12279
- var _a21, _b, _c, _d;
12539
+ var _a22, _b, _c, _d;
12280
12540
  async function doTransform({
12281
12541
  params
12282
12542
  }) {
@@ -12284,7 +12544,7 @@ var doWrap2 = ({
12284
12544
  }
12285
12545
  return {
12286
12546
  specificationVersion: "v3",
12287
- provider: (_a21 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a21 : model.provider,
12547
+ provider: (_a22 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a22 : model.provider,
12288
12548
  modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
12289
12549
  maxEmbeddingsPerCall: (_c = overrideMaxEmbeddingsPerCall == null ? void 0 : overrideMaxEmbeddingsPerCall({ model })) != null ? _c : model.maxEmbeddingsPerCall,
12290
12550
  supportsParallelCalls: (_d = overrideSupportsParallelCalls == null ? void 0 : overrideSupportsParallelCalls({ model })) != null ? _d : model.supportsParallelCalls,
@@ -12323,11 +12583,11 @@ var doWrap3 = ({
12323
12583
  modelId,
12324
12584
  providerId
12325
12585
  }) => {
12326
- var _a21, _b, _c;
12586
+ var _a22, _b, _c;
12327
12587
  async function doTransform({ params }) {
12328
12588
  return transformParams ? await transformParams({ params, model }) : params;
12329
12589
  }
12330
- const maxImagesPerCallRaw = (_a21 = overrideMaxImagesPerCall == null ? void 0 : overrideMaxImagesPerCall({ model })) != null ? _a21 : model.maxImagesPerCall;
12590
+ const maxImagesPerCallRaw = (_a22 = overrideMaxImagesPerCall == null ? void 0 : overrideMaxImagesPerCall({ model })) != null ? _a22 : model.maxImagesPerCall;
12331
12591
  const maxImagesPerCall = maxImagesPerCallRaw instanceof Function ? maxImagesPerCallRaw.bind(model) : maxImagesPerCallRaw;
12332
12592
  return {
12333
12593
  specificationVersion: "v3",
@@ -12392,7 +12652,7 @@ function wrapProvider({
12392
12652
  }
12393
12653
 
12394
12654
  // src/registry/custom-provider.ts
12395
- var import_provider33 = require("@ai-sdk/provider");
12655
+ var import_provider34 = require("@ai-sdk/provider");
12396
12656
  function customProvider({
12397
12657
  languageModels,
12398
12658
  embeddingModels,
@@ -12413,7 +12673,7 @@ function customProvider({
12413
12673
  if (fallbackProvider) {
12414
12674
  return fallbackProvider.languageModel(modelId);
12415
12675
  }
12416
- throw new import_provider33.NoSuchModelError({ modelId, modelType: "languageModel" });
12676
+ throw new import_provider34.NoSuchModelError({ modelId, modelType: "languageModel" });
12417
12677
  },
12418
12678
  embeddingModel(modelId) {
12419
12679
  if (embeddingModels != null && modelId in embeddingModels) {
@@ -12422,7 +12682,7 @@ function customProvider({
12422
12682
  if (fallbackProvider) {
12423
12683
  return fallbackProvider.embeddingModel(modelId);
12424
12684
  }
12425
- throw new import_provider33.NoSuchModelError({ modelId, modelType: "embeddingModel" });
12685
+ throw new import_provider34.NoSuchModelError({ modelId, modelType: "embeddingModel" });
12426
12686
  },
12427
12687
  imageModel(modelId) {
12428
12688
  if (imageModels != null && modelId in imageModels) {
@@ -12431,7 +12691,7 @@ function customProvider({
12431
12691
  if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {
12432
12692
  return fallbackProvider.imageModel(modelId);
12433
12693
  }
12434
- throw new import_provider33.NoSuchModelError({ modelId, modelType: "imageModel" });
12694
+ throw new import_provider34.NoSuchModelError({ modelId, modelType: "imageModel" });
12435
12695
  },
12436
12696
  transcriptionModel(modelId) {
12437
12697
  if (transcriptionModels != null && modelId in transcriptionModels) {
@@ -12440,7 +12700,7 @@ function customProvider({
12440
12700
  if (fallbackProvider == null ? void 0 : fallbackProvider.transcriptionModel) {
12441
12701
  return fallbackProvider.transcriptionModel(modelId);
12442
12702
  }
12443
- throw new import_provider33.NoSuchModelError({ modelId, modelType: "transcriptionModel" });
12703
+ throw new import_provider34.NoSuchModelError({ modelId, modelType: "transcriptionModel" });
12444
12704
  },
12445
12705
  speechModel(modelId) {
12446
12706
  if (speechModels != null && modelId in speechModels) {
@@ -12449,7 +12709,7 @@ function customProvider({
12449
12709
  if (fallbackProvider == null ? void 0 : fallbackProvider.speechModel) {
12450
12710
  return fallbackProvider.speechModel(modelId);
12451
12711
  }
12452
- throw new import_provider33.NoSuchModelError({ modelId, modelType: "speechModel" });
12712
+ throw new import_provider34.NoSuchModelError({ modelId, modelType: "speechModel" });
12453
12713
  },
12454
12714
  rerankingModel(modelId) {
12455
12715
  if (rerankingModels != null && modelId in rerankingModels) {
@@ -12458,7 +12718,7 @@ function customProvider({
12458
12718
  if (fallbackProvider == null ? void 0 : fallbackProvider.rerankingModel) {
12459
12719
  return fallbackProvider.rerankingModel(modelId);
12460
12720
  }
12461
- throw new import_provider33.NoSuchModelError({ modelId, modelType: "rerankingModel" });
12721
+ throw new import_provider34.NoSuchModelError({ modelId, modelType: "rerankingModel" });
12462
12722
  },
12463
12723
  videoModel(modelId) {
12464
12724
  if (videoModels != null && modelId in videoModels) {
@@ -12468,19 +12728,19 @@ function customProvider({
12468
12728
  if (videoModel) {
12469
12729
  return videoModel(modelId);
12470
12730
  }
12471
- throw new import_provider33.NoSuchModelError({ modelId, modelType: "videoModel" });
12731
+ throw new import_provider34.NoSuchModelError({ modelId, modelType: "videoModel" });
12472
12732
  }
12473
12733
  };
12474
12734
  }
12475
12735
  var experimental_customProvider = customProvider;
12476
12736
 
12477
12737
  // src/registry/no-such-provider-error.ts
12478
- var import_provider34 = require("@ai-sdk/provider");
12479
- var name20 = "AI_NoSuchProviderError";
12480
- var marker20 = `vercel.ai.error.${name20}`;
12481
- var symbol20 = Symbol.for(marker20);
12482
- var _a20;
12483
- var NoSuchProviderError = class extends import_provider34.NoSuchModelError {
12738
+ var import_provider35 = require("@ai-sdk/provider");
12739
+ var name21 = "AI_NoSuchProviderError";
12740
+ var marker21 = `vercel.ai.error.${name21}`;
12741
+ var symbol21 = Symbol.for(marker21);
12742
+ var _a21;
12743
+ var NoSuchProviderError = class extends import_provider35.NoSuchModelError {
12484
12744
  constructor({
12485
12745
  modelId,
12486
12746
  modelType,
@@ -12488,19 +12748,19 @@ var NoSuchProviderError = class extends import_provider34.NoSuchModelError {
12488
12748
  availableProviders,
12489
12749
  message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
12490
12750
  }) {
12491
- super({ errorName: name20, modelId, modelType, message });
12492
- this[_a20] = true;
12751
+ super({ errorName: name21, modelId, modelType, message });
12752
+ this[_a21] = true;
12493
12753
  this.providerId = providerId;
12494
12754
  this.availableProviders = availableProviders;
12495
12755
  }
12496
12756
  static isInstance(error) {
12497
- return import_provider34.AISDKError.hasMarker(error, marker20);
12757
+ return import_provider35.AISDKError.hasMarker(error, marker21);
12498
12758
  }
12499
12759
  };
12500
- _a20 = symbol20;
12760
+ _a21 = symbol21;
12501
12761
 
12502
12762
  // src/registry/provider-registry.ts
12503
- var import_provider35 = require("@ai-sdk/provider");
12763
+ var import_provider36 = require("@ai-sdk/provider");
12504
12764
  function createProviderRegistry(providers, {
12505
12765
  separator = ":",
12506
12766
  languageModelMiddleware,
@@ -12549,7 +12809,7 @@ var DefaultProviderRegistry = class {
12549
12809
  splitId(id, modelType) {
12550
12810
  const index = id.indexOf(this.separator);
12551
12811
  if (index === -1) {
12552
- throw new import_provider35.NoSuchModelError({
12812
+ throw new import_provider36.NoSuchModelError({
12553
12813
  modelId: id,
12554
12814
  modelType,
12555
12815
  message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId${this.separator}modelId")`
@@ -12558,14 +12818,14 @@ var DefaultProviderRegistry = class {
12558
12818
  return [id.slice(0, index), id.slice(index + this.separator.length)];
12559
12819
  }
12560
12820
  languageModel(id) {
12561
- var _a21, _b;
12821
+ var _a22, _b;
12562
12822
  const [providerId, modelId] = this.splitId(id, "languageModel");
12563
- let model = (_b = (_a21 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
12564
- _a21,
12823
+ let model = (_b = (_a22 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
12824
+ _a22,
12565
12825
  modelId
12566
12826
  );
12567
12827
  if (model == null) {
12568
- throw new import_provider35.NoSuchModelError({ modelId: id, modelType: "languageModel" });
12828
+ throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "languageModel" });
12569
12829
  }
12570
12830
  if (this.languageModelMiddleware != null) {
12571
12831
  model = wrapLanguageModel({
@@ -12576,12 +12836,12 @@ var DefaultProviderRegistry = class {
12576
12836
  return model;
12577
12837
  }
12578
12838
  embeddingModel(id) {
12579
- var _a21;
12839
+ var _a22;
12580
12840
  const [providerId, modelId] = this.splitId(id, "embeddingModel");
12581
12841
  const provider = this.getProvider(providerId, "embeddingModel");
12582
- const model = (_a21 = provider.embeddingModel) == null ? void 0 : _a21.call(provider, modelId);
12842
+ const model = (_a22 = provider.embeddingModel) == null ? void 0 : _a22.call(provider, modelId);
12583
12843
  if (model == null) {
12584
- throw new import_provider35.NoSuchModelError({
12844
+ throw new import_provider36.NoSuchModelError({
12585
12845
  modelId: id,
12586
12846
  modelType: "embeddingModel"
12587
12847
  });
@@ -12589,12 +12849,12 @@ var DefaultProviderRegistry = class {
12589
12849
  return model;
12590
12850
  }
12591
12851
  imageModel(id) {
12592
- var _a21;
12852
+ var _a22;
12593
12853
  const [providerId, modelId] = this.splitId(id, "imageModel");
12594
12854
  const provider = this.getProvider(providerId, "imageModel");
12595
- let model = (_a21 = provider.imageModel) == null ? void 0 : _a21.call(provider, modelId);
12855
+ let model = (_a22 = provider.imageModel) == null ? void 0 : _a22.call(provider, modelId);
12596
12856
  if (model == null) {
12597
- throw new import_provider35.NoSuchModelError({ modelId: id, modelType: "imageModel" });
12857
+ throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "imageModel" });
12598
12858
  }
12599
12859
  if (this.imageModelMiddleware != null) {
12600
12860
  model = wrapImageModel({
@@ -12605,12 +12865,12 @@ var DefaultProviderRegistry = class {
12605
12865
  return model;
12606
12866
  }
12607
12867
  transcriptionModel(id) {
12608
- var _a21;
12868
+ var _a22;
12609
12869
  const [providerId, modelId] = this.splitId(id, "transcriptionModel");
12610
12870
  const provider = this.getProvider(providerId, "transcriptionModel");
12611
- const model = (_a21 = provider.transcriptionModel) == null ? void 0 : _a21.call(provider, modelId);
12871
+ const model = (_a22 = provider.transcriptionModel) == null ? void 0 : _a22.call(provider, modelId);
12612
12872
  if (model == null) {
12613
- throw new import_provider35.NoSuchModelError({
12873
+ throw new import_provider36.NoSuchModelError({
12614
12874
  modelId: id,
12615
12875
  modelType: "transcriptionModel"
12616
12876
  });
@@ -12618,22 +12878,22 @@ var DefaultProviderRegistry = class {
12618
12878
  return model;
12619
12879
  }
12620
12880
  speechModel(id) {
12621
- var _a21;
12881
+ var _a22;
12622
12882
  const [providerId, modelId] = this.splitId(id, "speechModel");
12623
12883
  const provider = this.getProvider(providerId, "speechModel");
12624
- const model = (_a21 = provider.speechModel) == null ? void 0 : _a21.call(provider, modelId);
12884
+ const model = (_a22 = provider.speechModel) == null ? void 0 : _a22.call(provider, modelId);
12625
12885
  if (model == null) {
12626
- throw new import_provider35.NoSuchModelError({ modelId: id, modelType: "speechModel" });
12886
+ throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "speechModel" });
12627
12887
  }
12628
12888
  return model;
12629
12889
  }
12630
12890
  rerankingModel(id) {
12631
- var _a21;
12891
+ var _a22;
12632
12892
  const [providerId, modelId] = this.splitId(id, "rerankingModel");
12633
12893
  const provider = this.getProvider(providerId, "rerankingModel");
12634
- const model = (_a21 = provider.rerankingModel) == null ? void 0 : _a21.call(provider, modelId);
12894
+ const model = (_a22 = provider.rerankingModel) == null ? void 0 : _a22.call(provider, modelId);
12635
12895
  if (model == null) {
12636
- throw new import_provider35.NoSuchModelError({ modelId: id, modelType: "rerankingModel" });
12896
+ throw new import_provider36.NoSuchModelError({ modelId: id, modelType: "rerankingModel" });
12637
12897
  }
12638
12898
  return model;
12639
12899
  }
@@ -12689,7 +12949,7 @@ async function rerank({
12689
12949
  }),
12690
12950
  tracer,
12691
12951
  fn: async () => {
12692
- var _a21, _b;
12952
+ var _a22, _b;
12693
12953
  const { ranking, response, providerMetadata, warnings } = await retry(
12694
12954
  () => recordSpan({
12695
12955
  name: "ai.rerank.doRerank",
@@ -12753,7 +13013,7 @@ async function rerank({
12753
13013
  providerMetadata,
12754
13014
  response: {
12755
13015
  id: response == null ? void 0 : response.id,
12756
- timestamp: (_a21 = response == null ? void 0 : response.timestamp) != null ? _a21 : /* @__PURE__ */ new Date(),
13016
+ timestamp: (_a22 = response == null ? void 0 : response.timestamp) != null ? _a22 : /* @__PURE__ */ new Date(),
12757
13017
  modelId: (_b = response == null ? void 0 : response.modelId) != null ? _b : model.modelId,
12758
13018
  headers: response == null ? void 0 : response.headers,
12759
13019
  body: response == null ? void 0 : response.body
@@ -12775,7 +13035,7 @@ var DefaultRerankResult = class {
12775
13035
  };
12776
13036
 
12777
13037
  // src/transcribe/transcribe.ts
12778
- var import_provider_utils34 = require("@ai-sdk/provider-utils");
13038
+ var import_provider_utils36 = require("@ai-sdk/provider-utils");
12779
13039
  var defaultDownload2 = createDownload();
12780
13040
  async function transcribe({
12781
13041
  model,
@@ -12794,23 +13054,23 @@ async function transcribe({
12794
13054
  maxRetries: maxRetriesArg,
12795
13055
  abortSignal
12796
13056
  });
12797
- const headersWithUserAgent = (0, import_provider_utils34.withUserAgentSuffix)(
13057
+ const headersWithUserAgent = (0, import_provider_utils36.withUserAgentSuffix)(
12798
13058
  headers != null ? headers : {},
12799
13059
  `ai/${VERSION}`
12800
13060
  );
12801
13061
  const audioData = audio instanceof URL ? (await downloadFn({ url: audio, abortSignal })).data : convertDataContentToUint8Array(audio);
12802
13062
  const result = await retry(
12803
13063
  () => {
12804
- var _a21;
13064
+ var _a22;
12805
13065
  return resolvedModel.doGenerate({
12806
13066
  audio: audioData,
12807
13067
  abortSignal,
12808
13068
  headers: headersWithUserAgent,
12809
13069
  providerOptions,
12810
- mediaType: (_a21 = detectMediaType({
13070
+ mediaType: (_a22 = detectMediaType({
12811
13071
  data: audioData,
12812
13072
  signatures: audioMediaTypeSignatures
12813
- })) != null ? _a21 : "audio/wav"
13073
+ })) != null ? _a22 : "audio/wav"
12814
13074
  });
12815
13075
  }
12816
13076
  );
@@ -12834,19 +13094,19 @@ async function transcribe({
12834
13094
  }
12835
13095
  var DefaultTranscriptionResult = class {
12836
13096
  constructor(options) {
12837
- var _a21;
13097
+ var _a22;
12838
13098
  this.text = options.text;
12839
13099
  this.segments = options.segments;
12840
13100
  this.language = options.language;
12841
13101
  this.durationInSeconds = options.durationInSeconds;
12842
13102
  this.warnings = options.warnings;
12843
13103
  this.responses = options.responses;
12844
- this.providerMetadata = (_a21 = options.providerMetadata) != null ? _a21 : {};
13104
+ this.providerMetadata = (_a22 = options.providerMetadata) != null ? _a22 : {};
12845
13105
  }
12846
13106
  };
12847
13107
 
12848
13108
  // src/ui/call-completion-api.ts
12849
- var import_provider_utils35 = require("@ai-sdk/provider-utils");
13109
+ var import_provider_utils37 = require("@ai-sdk/provider-utils");
12850
13110
 
12851
13111
  // src/ui/process-text-stream.ts
12852
13112
  async function processTextStream({
@@ -12880,7 +13140,7 @@ async function callCompletionApi({
12880
13140
  onError,
12881
13141
  fetch: fetch2 = getOriginalFetch()
12882
13142
  }) {
12883
- var _a21;
13143
+ var _a22;
12884
13144
  try {
12885
13145
  setLoading(true);
12886
13146
  setError(void 0);
@@ -12894,13 +13154,13 @@ async function callCompletionApi({
12894
13154
  ...body
12895
13155
  }),
12896
13156
  credentials,
12897
- headers: (0, import_provider_utils35.withUserAgentSuffix)(
13157
+ headers: (0, import_provider_utils37.withUserAgentSuffix)(
12898
13158
  {
12899
13159
  "Content-Type": "application/json",
12900
13160
  ...headers
12901
13161
  },
12902
13162
  `ai-sdk/${VERSION}`,
12903
- (0, import_provider_utils35.getRuntimeEnvironmentUserAgent)()
13163
+ (0, import_provider_utils37.getRuntimeEnvironmentUserAgent)()
12904
13164
  ),
12905
13165
  signal: abortController.signal
12906
13166
  }).catch((err) => {
@@ -12908,7 +13168,7 @@ async function callCompletionApi({
12908
13168
  });
12909
13169
  if (!response.ok) {
12910
13170
  throw new Error(
12911
- (_a21 = await response.text()) != null ? _a21 : "Failed to fetch the chat response."
13171
+ (_a22 = await response.text()) != null ? _a22 : "Failed to fetch the chat response."
12912
13172
  );
12913
13173
  }
12914
13174
  if (!response.body) {
@@ -12928,7 +13188,7 @@ async function callCompletionApi({
12928
13188
  }
12929
13189
  case "data": {
12930
13190
  await consumeStream({
12931
- stream: (0, import_provider_utils35.parseJsonEventStream)({
13191
+ stream: (0, import_provider_utils37.parseJsonEventStream)({
12932
13192
  stream: response.body,
12933
13193
  schema: uiMessageChunkSchema
12934
13194
  }).pipeThrough(
@@ -12980,7 +13240,7 @@ async function callCompletionApi({
12980
13240
  }
12981
13241
 
12982
13242
  // src/ui/chat.ts
12983
- var import_provider_utils38 = require("@ai-sdk/provider-utils");
13243
+ var import_provider_utils40 = require("@ai-sdk/provider-utils");
12984
13244
 
12985
13245
  // src/ui/convert-file-list-to-file-ui-parts.ts
12986
13246
  async function convertFileListToFileUIParts(files) {
@@ -12992,12 +13252,12 @@ async function convertFileListToFileUIParts(files) {
12992
13252
  }
12993
13253
  return Promise.all(
12994
13254
  Array.from(files).map(async (file) => {
12995
- const { name: name21, type } = file;
13255
+ const { name: name22, type } = file;
12996
13256
  const dataUrl = await new Promise((resolve3, reject) => {
12997
13257
  const reader = new FileReader();
12998
13258
  reader.onload = (readerEvent) => {
12999
- var _a21;
13000
- resolve3((_a21 = readerEvent.target) == null ? void 0 : _a21.result);
13259
+ var _a22;
13260
+ resolve3((_a22 = readerEvent.target) == null ? void 0 : _a22.result);
13001
13261
  };
13002
13262
  reader.onerror = (error) => reject(error);
13003
13263
  reader.readAsDataURL(file);
@@ -13005,7 +13265,7 @@ async function convertFileListToFileUIParts(files) {
13005
13265
  return {
13006
13266
  type: "file",
13007
13267
  mediaType: type,
13008
- filename: name21,
13268
+ filename: name22,
13009
13269
  url: dataUrl
13010
13270
  };
13011
13271
  })
@@ -13013,10 +13273,10 @@ async function convertFileListToFileUIParts(files) {
13013
13273
  }
13014
13274
 
13015
13275
  // src/ui/default-chat-transport.ts
13016
- var import_provider_utils37 = require("@ai-sdk/provider-utils");
13276
+ var import_provider_utils39 = require("@ai-sdk/provider-utils");
13017
13277
 
13018
13278
  // src/ui/http-chat-transport.ts
13019
- var import_provider_utils36 = require("@ai-sdk/provider-utils");
13279
+ var import_provider_utils38 = require("@ai-sdk/provider-utils");
13020
13280
  var HttpChatTransport = class {
13021
13281
  constructor({
13022
13282
  api = "/api/chat",
@@ -13039,15 +13299,15 @@ var HttpChatTransport = class {
13039
13299
  abortSignal,
13040
13300
  ...options
13041
13301
  }) {
13042
- var _a21, _b, _c, _d, _e;
13043
- const resolvedBody = await (0, import_provider_utils36.resolve)(this.body);
13044
- const resolvedHeaders = await (0, import_provider_utils36.resolve)(this.headers);
13045
- const resolvedCredentials = await (0, import_provider_utils36.resolve)(this.credentials);
13302
+ var _a22, _b, _c, _d, _e;
13303
+ const resolvedBody = await (0, import_provider_utils38.resolve)(this.body);
13304
+ const resolvedHeaders = await (0, import_provider_utils38.resolve)(this.headers);
13305
+ const resolvedCredentials = await (0, import_provider_utils38.resolve)(this.credentials);
13046
13306
  const baseHeaders = {
13047
- ...(0, import_provider_utils36.normalizeHeaders)(resolvedHeaders),
13048
- ...(0, import_provider_utils36.normalizeHeaders)(options.headers)
13307
+ ...(0, import_provider_utils38.normalizeHeaders)(resolvedHeaders),
13308
+ ...(0, import_provider_utils38.normalizeHeaders)(options.headers)
13049
13309
  };
13050
- const preparedRequest = await ((_a21 = this.prepareSendMessagesRequest) == null ? void 0 : _a21.call(this, {
13310
+ const preparedRequest = await ((_a22 = this.prepareSendMessagesRequest) == null ? void 0 : _a22.call(this, {
13051
13311
  api: this.api,
13052
13312
  id: options.chatId,
13053
13313
  messages: options.messages,
@@ -13059,7 +13319,7 @@ var HttpChatTransport = class {
13059
13319
  messageId: options.messageId
13060
13320
  }));
13061
13321
  const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : this.api;
13062
- const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0, import_provider_utils36.normalizeHeaders)(preparedRequest.headers) : baseHeaders;
13322
+ const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0, import_provider_utils38.normalizeHeaders)(preparedRequest.headers) : baseHeaders;
13063
13323
  const body = (preparedRequest == null ? void 0 : preparedRequest.body) !== void 0 ? preparedRequest.body : {
13064
13324
  ...resolvedBody,
13065
13325
  ...options.body,
@@ -13091,15 +13351,15 @@ var HttpChatTransport = class {
13091
13351
  return this.processResponseStream(response.body);
13092
13352
  }
13093
13353
  async reconnectToStream(options) {
13094
- var _a21, _b, _c, _d, _e;
13095
- const resolvedBody = await (0, import_provider_utils36.resolve)(this.body);
13096
- const resolvedHeaders = await (0, import_provider_utils36.resolve)(this.headers);
13097
- const resolvedCredentials = await (0, import_provider_utils36.resolve)(this.credentials);
13354
+ var _a22, _b, _c, _d, _e;
13355
+ const resolvedBody = await (0, import_provider_utils38.resolve)(this.body);
13356
+ const resolvedHeaders = await (0, import_provider_utils38.resolve)(this.headers);
13357
+ const resolvedCredentials = await (0, import_provider_utils38.resolve)(this.credentials);
13098
13358
  const baseHeaders = {
13099
- ...(0, import_provider_utils36.normalizeHeaders)(resolvedHeaders),
13100
- ...(0, import_provider_utils36.normalizeHeaders)(options.headers)
13359
+ ...(0, import_provider_utils38.normalizeHeaders)(resolvedHeaders),
13360
+ ...(0, import_provider_utils38.normalizeHeaders)(options.headers)
13101
13361
  };
13102
- const preparedRequest = await ((_a21 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a21.call(this, {
13362
+ const preparedRequest = await ((_a22 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a22.call(this, {
13103
13363
  api: this.api,
13104
13364
  id: options.chatId,
13105
13365
  body: { ...resolvedBody, ...options.body },
@@ -13108,7 +13368,7 @@ var HttpChatTransport = class {
13108
13368
  requestMetadata: options.metadata
13109
13369
  }));
13110
13370
  const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : `${this.api}/${options.chatId}/stream`;
13111
- const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0, import_provider_utils36.normalizeHeaders)(preparedRequest.headers) : baseHeaders;
13371
+ const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0, import_provider_utils38.normalizeHeaders)(preparedRequest.headers) : baseHeaders;
13112
13372
  const credentials = (_c = preparedRequest == null ? void 0 : preparedRequest.credentials) != null ? _c : resolvedCredentials;
13113
13373
  const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;
13114
13374
  const response = await fetch2(api, {
@@ -13137,7 +13397,7 @@ var DefaultChatTransport = class extends HttpChatTransport {
13137
13397
  super(options);
13138
13398
  }
13139
13399
  processResponseStream(stream) {
13140
- return (0, import_provider_utils37.parseJsonEventStream)({
13400
+ return (0, import_provider_utils39.parseJsonEventStream)({
13141
13401
  stream,
13142
13402
  schema: uiMessageChunkSchema
13143
13403
  }).pipeThrough(
@@ -13156,7 +13416,7 @@ var DefaultChatTransport = class extends HttpChatTransport {
13156
13416
  // src/ui/chat.ts
13157
13417
  var AbstractChat = class {
13158
13418
  constructor({
13159
- generateId: generateId2 = import_provider_utils38.generateId,
13419
+ generateId: generateId2 = import_provider_utils40.generateId,
13160
13420
  id = generateId2(),
13161
13421
  transport = new DefaultChatTransport(),
13162
13422
  messageMetadataSchema,
@@ -13177,11 +13437,11 @@ var AbstractChat = class {
13177
13437
  * If a messageId is provided, the message will be replaced.
13178
13438
  */
13179
13439
  this.sendMessage = async (message, options) => {
13180
- var _a21, _b, _c, _d;
13440
+ var _a22, _b, _c, _d;
13181
13441
  if (message == null) {
13182
13442
  await this.makeRequest({
13183
13443
  trigger: "submit-message",
13184
- messageId: (_a21 = this.lastMessage) == null ? void 0 : _a21.id,
13444
+ messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
13185
13445
  ...options
13186
13446
  });
13187
13447
  return;
@@ -13291,11 +13551,11 @@ var AbstractChat = class {
13291
13551
  }
13292
13552
  if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
13293
13553
  this.shouldSendAutomatically().then((shouldSend) => {
13294
- var _a21;
13554
+ var _a22;
13295
13555
  if (shouldSend) {
13296
13556
  this.makeRequest({
13297
13557
  trigger: "submit-message",
13298
- messageId: (_a21 = this.lastMessage) == null ? void 0 : _a21.id,
13558
+ messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
13299
13559
  ...options
13300
13560
  });
13301
13561
  }
@@ -13321,11 +13581,11 @@ var AbstractChat = class {
13321
13581
  }
13322
13582
  if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
13323
13583
  this.shouldSendAutomatically().then((shouldSend) => {
13324
- var _a21;
13584
+ var _a22;
13325
13585
  if (shouldSend) {
13326
13586
  this.makeRequest({
13327
13587
  trigger: "submit-message",
13328
- messageId: (_a21 = this.lastMessage) == null ? void 0 : _a21.id,
13588
+ messageId: (_a22 = this.lastMessage) == null ? void 0 : _a22.id,
13329
13589
  ...options
13330
13590
  });
13331
13591
  }
@@ -13338,10 +13598,10 @@ var AbstractChat = class {
13338
13598
  * Abort the current request immediately, keep the generated tokens if any.
13339
13599
  */
13340
13600
  this.stop = async () => {
13341
- var _a21;
13601
+ var _a22;
13342
13602
  if (this.status !== "streaming" && this.status !== "submitted")
13343
13603
  return;
13344
- if ((_a21 = this.activeResponse) == null ? void 0 : _a21.abortController) {
13604
+ if ((_a22 = this.activeResponse) == null ? void 0 : _a22.abortController) {
13345
13605
  this.activeResponse.abortController.abort();
13346
13606
  }
13347
13607
  };
@@ -13407,7 +13667,7 @@ var AbstractChat = class {
13407
13667
  body,
13408
13668
  messageId
13409
13669
  }) {
13410
- var _a21, _b, _c;
13670
+ var _a22, _b, _c;
13411
13671
  let resumeStream;
13412
13672
  if (trigger === "resume-stream") {
13413
13673
  try {
@@ -13467,9 +13727,9 @@ var AbstractChat = class {
13467
13727
  () => job({
13468
13728
  state: activeResponse.state,
13469
13729
  write: () => {
13470
- var _a22;
13730
+ var _a23;
13471
13731
  this.setStatus({ status: "streaming" });
13472
- const replaceLastMessage = activeResponse.state.message.id === ((_a22 = this.lastMessage) == null ? void 0 : _a22.id);
13732
+ const replaceLastMessage = activeResponse.state.message.id === ((_a23 = this.lastMessage) == null ? void 0 : _a23.id);
13473
13733
  if (replaceLastMessage) {
13474
13734
  this.state.replaceMessage(
13475
13735
  this.state.messages.length - 1,
@@ -13521,7 +13781,7 @@ var AbstractChat = class {
13521
13781
  isAbort,
13522
13782
  isDisconnect,
13523
13783
  isError,
13524
- finishReason: (_a21 = this.activeResponse) == null ? void 0 : _a21.state.finishReason
13784
+ finishReason: (_a22 = this.activeResponse) == null ? void 0 : _a22.state.finishReason
13525
13785
  });
13526
13786
  } catch (err) {
13527
13787
  console.error(err);
@@ -13677,6 +13937,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
13677
13937
  InvalidResponseDataError,
13678
13938
  InvalidStreamPartError,
13679
13939
  InvalidToolApprovalError,
13940
+ InvalidToolApprovalSignatureError,
13680
13941
  InvalidToolInputError,
13681
13942
  JSONParseError,
13682
13943
  JsonToSseTransformStream,