ai 5.0.5 → 5.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +687 -683
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +713 -709
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
@@ -20,31 +20,31 @@ 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: () =>
|
24
|
-
APICallError: () =>
|
23
|
+
AISDKError: () => import_provider16.AISDKError,
|
24
|
+
APICallError: () => import_provider16.APICallError,
|
25
25
|
AbstractChat: () => AbstractChat,
|
26
26
|
DefaultChatTransport: () => DefaultChatTransport,
|
27
27
|
DownloadError: () => DownloadError,
|
28
|
-
EmptyResponseBodyError: () =>
|
28
|
+
EmptyResponseBodyError: () => import_provider16.EmptyResponseBodyError,
|
29
29
|
Experimental_Agent: () => Agent,
|
30
30
|
HttpChatTransport: () => HttpChatTransport,
|
31
31
|
InvalidArgumentError: () => InvalidArgumentError,
|
32
32
|
InvalidDataContentError: () => InvalidDataContentError,
|
33
33
|
InvalidMessageRoleError: () => InvalidMessageRoleError,
|
34
|
-
InvalidPromptError: () =>
|
35
|
-
InvalidResponseDataError: () =>
|
34
|
+
InvalidPromptError: () => import_provider16.InvalidPromptError,
|
35
|
+
InvalidResponseDataError: () => import_provider16.InvalidResponseDataError,
|
36
36
|
InvalidStreamPartError: () => InvalidStreamPartError,
|
37
37
|
InvalidToolInputError: () => InvalidToolInputError,
|
38
|
-
JSONParseError: () =>
|
38
|
+
JSONParseError: () => import_provider16.JSONParseError,
|
39
39
|
JsonToSseTransformStream: () => JsonToSseTransformStream,
|
40
|
-
LoadAPIKeyError: () =>
|
40
|
+
LoadAPIKeyError: () => import_provider16.LoadAPIKeyError,
|
41
41
|
MCPClientError: () => MCPClientError,
|
42
42
|
MessageConversionError: () => MessageConversionError,
|
43
|
-
NoContentGeneratedError: () =>
|
43
|
+
NoContentGeneratedError: () => import_provider16.NoContentGeneratedError,
|
44
44
|
NoImageGeneratedError: () => NoImageGeneratedError,
|
45
45
|
NoObjectGeneratedError: () => NoObjectGeneratedError,
|
46
46
|
NoOutputSpecifiedError: () => NoOutputSpecifiedError,
|
47
|
-
NoSuchModelError: () =>
|
47
|
+
NoSuchModelError: () => import_provider16.NoSuchModelError,
|
48
48
|
NoSuchProviderError: () => NoSuchProviderError,
|
49
49
|
NoSuchToolError: () => NoSuchToolError,
|
50
50
|
Output: () => output_exports,
|
@@ -52,9 +52,9 @@ __export(src_exports, {
|
|
52
52
|
SerialJobExecutor: () => SerialJobExecutor,
|
53
53
|
TextStreamChatTransport: () => TextStreamChatTransport,
|
54
54
|
ToolCallRepairError: () => ToolCallRepairError,
|
55
|
-
TypeValidationError: () =>
|
55
|
+
TypeValidationError: () => import_provider16.TypeValidationError,
|
56
56
|
UI_MESSAGE_STREAM_HEADERS: () => UI_MESSAGE_STREAM_HEADERS,
|
57
|
-
UnsupportedFunctionalityError: () =>
|
57
|
+
UnsupportedFunctionalityError: () => import_provider16.UnsupportedFunctionalityError,
|
58
58
|
UnsupportedModelVersionError: () => UnsupportedModelVersionError,
|
59
59
|
asSchema: () => import_provider_utils28.asSchema,
|
60
60
|
assistantModelMessageSchema: () => assistantModelMessageSchema,
|
@@ -139,10 +139,11 @@ var NoOutputSpecifiedError = class extends import_provider.AISDKError {
|
|
139
139
|
};
|
140
140
|
_a = symbol;
|
141
141
|
|
142
|
-
// src/
|
143
|
-
|
144
|
-
|
145
|
-
|
142
|
+
// src/model/resolve-model.ts
|
143
|
+
var import_gateway = require("@ai-sdk/gateway");
|
144
|
+
|
145
|
+
// src/error/index.ts
|
146
|
+
var import_provider16 = require("@ai-sdk/provider");
|
146
147
|
|
147
148
|
// src/error/invalid-argument-error.ts
|
148
149
|
var import_provider2 = require("@ai-sdk/provider");
|
@@ -170,27 +171,20 @@ var InvalidArgumentError = class extends import_provider2.AISDKError {
|
|
170
171
|
};
|
171
172
|
_a2 = symbol2;
|
172
173
|
|
173
|
-
// src/
|
174
|
-
var import_provider4 = require("@ai-sdk/provider");
|
175
|
-
var import_provider_utils = require("@ai-sdk/provider-utils");
|
176
|
-
|
177
|
-
// src/util/retry-error.ts
|
174
|
+
// src/error/invalid-stream-part-error.ts
|
178
175
|
var import_provider3 = require("@ai-sdk/provider");
|
179
|
-
var name3 = "
|
176
|
+
var name3 = "AI_InvalidStreamPartError";
|
180
177
|
var marker3 = `vercel.ai.error.${name3}`;
|
181
178
|
var symbol3 = Symbol.for(marker3);
|
182
179
|
var _a3;
|
183
|
-
var
|
180
|
+
var InvalidStreamPartError = class extends import_provider3.AISDKError {
|
184
181
|
constructor({
|
185
|
-
|
186
|
-
|
187
|
-
errors
|
182
|
+
chunk,
|
183
|
+
message
|
188
184
|
}) {
|
189
185
|
super({ name: name3, message });
|
190
186
|
this[_a3] = true;
|
191
|
-
this.
|
192
|
-
this.errors = errors;
|
193
|
-
this.lastError = errors[errors.length - 1];
|
187
|
+
this.chunk = chunk;
|
194
188
|
}
|
195
189
|
static isInstance(error) {
|
196
190
|
return import_provider3.AISDKError.hasMarker(error, marker3);
|
@@ -198,138 +192,313 @@ var RetryError = class extends import_provider3.AISDKError {
|
|
198
192
|
};
|
199
193
|
_a3 = symbol3;
|
200
194
|
|
201
|
-
// src/
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
195
|
+
// src/error/invalid-tool-input-error.ts
|
196
|
+
var import_provider4 = require("@ai-sdk/provider");
|
197
|
+
var name4 = "AI_InvalidToolInputError";
|
198
|
+
var marker4 = `vercel.ai.error.${name4}`;
|
199
|
+
var symbol4 = Symbol.for(marker4);
|
200
|
+
var _a4;
|
201
|
+
var InvalidToolInputError = class extends import_provider4.AISDKError {
|
202
|
+
constructor({
|
203
|
+
toolInput,
|
204
|
+
toolName,
|
205
|
+
cause,
|
206
|
+
message = `Invalid input for tool ${toolName}: ${(0, import_provider4.getErrorMessage)(cause)}`
|
207
|
+
}) {
|
208
|
+
super({ name: name4, message, cause });
|
209
|
+
this[_a4] = true;
|
210
|
+
this.toolInput = toolInput;
|
211
|
+
this.toolName = toolName;
|
216
212
|
}
|
217
|
-
|
218
|
-
|
219
|
-
const timeoutSeconds = parseFloat(retryAfter);
|
220
|
-
if (!Number.isNaN(timeoutSeconds)) {
|
221
|
-
ms = timeoutSeconds * 1e3;
|
222
|
-
} else {
|
223
|
-
ms = Date.parse(retryAfter) - Date.now();
|
224
|
-
}
|
213
|
+
static isInstance(error) {
|
214
|
+
return import_provider4.AISDKError.hasMarker(error, marker4);
|
225
215
|
}
|
226
|
-
|
227
|
-
|
216
|
+
};
|
217
|
+
_a4 = symbol4;
|
218
|
+
|
219
|
+
// src/error/mcp-client-error.ts
|
220
|
+
var import_provider5 = require("@ai-sdk/provider");
|
221
|
+
var name5 = "AI_MCPClientError";
|
222
|
+
var marker5 = `vercel.ai.error.${name5}`;
|
223
|
+
var symbol5 = Symbol.for(marker5);
|
224
|
+
var _a5;
|
225
|
+
var MCPClientError = class extends import_provider5.AISDKError {
|
226
|
+
constructor({
|
227
|
+
name: name16 = "MCPClientError",
|
228
|
+
message,
|
229
|
+
cause
|
230
|
+
}) {
|
231
|
+
super({ name: name16, message, cause });
|
232
|
+
this[_a5] = true;
|
228
233
|
}
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
}
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
234
|
+
static isInstance(error) {
|
235
|
+
return import_provider5.AISDKError.hasMarker(error, marker5);
|
236
|
+
}
|
237
|
+
};
|
238
|
+
_a5 = symbol5;
|
239
|
+
|
240
|
+
// src/error/no-image-generated-error.ts
|
241
|
+
var import_provider6 = require("@ai-sdk/provider");
|
242
|
+
var name6 = "AI_NoImageGeneratedError";
|
243
|
+
var marker6 = `vercel.ai.error.${name6}`;
|
244
|
+
var symbol6 = Symbol.for(marker6);
|
245
|
+
var _a6;
|
246
|
+
var NoImageGeneratedError = class extends import_provider6.AISDKError {
|
247
|
+
constructor({
|
248
|
+
message = "No image generated.",
|
249
|
+
cause,
|
250
|
+
responses
|
251
|
+
}) {
|
252
|
+
super({ name: name6, message, cause });
|
253
|
+
this[_a6] = true;
|
254
|
+
this.responses = responses;
|
255
|
+
}
|
256
|
+
static isInstance(error) {
|
257
|
+
return import_provider6.AISDKError.hasMarker(error, marker6);
|
258
|
+
}
|
259
|
+
};
|
260
|
+
_a6 = symbol6;
|
261
|
+
|
262
|
+
// src/error/no-object-generated-error.ts
|
263
|
+
var import_provider7 = require("@ai-sdk/provider");
|
264
|
+
var name7 = "AI_NoObjectGeneratedError";
|
265
|
+
var marker7 = `vercel.ai.error.${name7}`;
|
266
|
+
var symbol7 = Symbol.for(marker7);
|
267
|
+
var _a7;
|
268
|
+
var NoObjectGeneratedError = class extends import_provider7.AISDKError {
|
269
|
+
constructor({
|
270
|
+
message = "No object generated.",
|
271
|
+
cause,
|
272
|
+
text: text2,
|
273
|
+
response,
|
274
|
+
usage,
|
275
|
+
finishReason
|
276
|
+
}) {
|
277
|
+
super({ name: name7, message, cause });
|
278
|
+
this[_a7] = true;
|
279
|
+
this.text = text2;
|
280
|
+
this.response = response;
|
281
|
+
this.usage = usage;
|
282
|
+
this.finishReason = finishReason;
|
283
|
+
}
|
284
|
+
static isInstance(error) {
|
285
|
+
return import_provider7.AISDKError.hasMarker(error, marker7);
|
286
|
+
}
|
287
|
+
};
|
288
|
+
_a7 = symbol7;
|
289
|
+
|
290
|
+
// src/error/no-such-tool-error.ts
|
291
|
+
var import_provider8 = require("@ai-sdk/provider");
|
292
|
+
var name8 = "AI_NoSuchToolError";
|
293
|
+
var marker8 = `vercel.ai.error.${name8}`;
|
294
|
+
var symbol8 = Symbol.for(marker8);
|
295
|
+
var _a8;
|
296
|
+
var NoSuchToolError = class extends import_provider8.AISDKError {
|
297
|
+
constructor({
|
298
|
+
toolName,
|
299
|
+
availableTools = void 0,
|
300
|
+
message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? "No tools are available." : `Available tools: ${availableTools.join(", ")}.`}`
|
301
|
+
}) {
|
302
|
+
super({ name: name8, message });
|
303
|
+
this[_a8] = true;
|
304
|
+
this.toolName = toolName;
|
305
|
+
this.availableTools = availableTools;
|
306
|
+
}
|
307
|
+
static isInstance(error) {
|
308
|
+
return import_provider8.AISDKError.hasMarker(error, marker8);
|
309
|
+
}
|
310
|
+
};
|
311
|
+
_a8 = symbol8;
|
312
|
+
|
313
|
+
// src/error/tool-call-repair-error.ts
|
314
|
+
var import_provider9 = require("@ai-sdk/provider");
|
315
|
+
var name9 = "AI_ToolCallRepairError";
|
316
|
+
var marker9 = `vercel.ai.error.${name9}`;
|
317
|
+
var symbol9 = Symbol.for(marker9);
|
318
|
+
var _a9;
|
319
|
+
var ToolCallRepairError = class extends import_provider9.AISDKError {
|
320
|
+
constructor({
|
321
|
+
cause,
|
322
|
+
originalError,
|
323
|
+
message = `Error repairing tool call: ${(0, import_provider9.getErrorMessage)(cause)}`
|
324
|
+
}) {
|
325
|
+
super({ name: name9, message, cause });
|
326
|
+
this[_a9] = true;
|
327
|
+
this.originalError = originalError;
|
328
|
+
}
|
329
|
+
static isInstance(error) {
|
330
|
+
return import_provider9.AISDKError.hasMarker(error, marker9);
|
331
|
+
}
|
332
|
+
};
|
333
|
+
_a9 = symbol9;
|
334
|
+
|
335
|
+
// src/error/unsupported-model-version-error.ts
|
336
|
+
var import_provider10 = require("@ai-sdk/provider");
|
337
|
+
var UnsupportedModelVersionError = class extends import_provider10.AISDKError {
|
338
|
+
constructor(options) {
|
339
|
+
super({
|
340
|
+
name: "AI_UnsupportedModelVersionError",
|
341
|
+
message: `Unsupported model version ${options.version} for provider "${options.provider}" and model "${options.modelId}". AI SDK 5 only supports models that implement specification version "v2".`
|
293
342
|
});
|
343
|
+
this.version = options.version;
|
344
|
+
this.provider = options.provider;
|
345
|
+
this.modelId = options.modelId;
|
294
346
|
}
|
295
|
-
}
|
347
|
+
};
|
296
348
|
|
297
|
-
// src/
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
349
|
+
// src/prompt/invalid-data-content-error.ts
|
350
|
+
var import_provider11 = require("@ai-sdk/provider");
|
351
|
+
var name10 = "AI_InvalidDataContentError";
|
352
|
+
var marker10 = `vercel.ai.error.${name10}`;
|
353
|
+
var symbol10 = Symbol.for(marker10);
|
354
|
+
var _a10;
|
355
|
+
var InvalidDataContentError = class extends import_provider11.AISDKError {
|
356
|
+
constructor({
|
357
|
+
content,
|
358
|
+
cause,
|
359
|
+
message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
|
360
|
+
}) {
|
361
|
+
super({ name: name10, message, cause });
|
362
|
+
this[_a10] = true;
|
363
|
+
this.content = content;
|
364
|
+
}
|
365
|
+
static isInstance(error) {
|
366
|
+
return import_provider11.AISDKError.hasMarker(error, marker10);
|
367
|
+
}
|
368
|
+
};
|
369
|
+
_a10 = symbol10;
|
370
|
+
|
371
|
+
// src/prompt/invalid-message-role-error.ts
|
372
|
+
var import_provider12 = require("@ai-sdk/provider");
|
373
|
+
var name11 = "AI_InvalidMessageRoleError";
|
374
|
+
var marker11 = `vercel.ai.error.${name11}`;
|
375
|
+
var symbol11 = Symbol.for(marker11);
|
376
|
+
var _a11;
|
377
|
+
var InvalidMessageRoleError = class extends import_provider12.AISDKError {
|
378
|
+
constructor({
|
379
|
+
role,
|
380
|
+
message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
|
381
|
+
}) {
|
382
|
+
super({ name: name11, message });
|
383
|
+
this[_a11] = true;
|
384
|
+
this.role = role;
|
385
|
+
}
|
386
|
+
static isInstance(error) {
|
387
|
+
return import_provider12.AISDKError.hasMarker(error, marker11);
|
388
|
+
}
|
389
|
+
};
|
390
|
+
_a11 = symbol11;
|
391
|
+
|
392
|
+
// src/prompt/message-conversion-error.ts
|
393
|
+
var import_provider13 = require("@ai-sdk/provider");
|
394
|
+
var name12 = "AI_MessageConversionError";
|
395
|
+
var marker12 = `vercel.ai.error.${name12}`;
|
396
|
+
var symbol12 = Symbol.for(marker12);
|
397
|
+
var _a12;
|
398
|
+
var MessageConversionError = class extends import_provider13.AISDKError {
|
399
|
+
constructor({
|
400
|
+
originalMessage,
|
401
|
+
message
|
402
|
+
}) {
|
403
|
+
super({ name: name12, message });
|
404
|
+
this[_a12] = true;
|
405
|
+
this.originalMessage = originalMessage;
|
406
|
+
}
|
407
|
+
static isInstance(error) {
|
408
|
+
return import_provider13.AISDKError.hasMarker(error, marker12);
|
409
|
+
}
|
410
|
+
};
|
411
|
+
_a12 = symbol12;
|
412
|
+
|
413
|
+
// src/util/download-error.ts
|
414
|
+
var import_provider14 = require("@ai-sdk/provider");
|
415
|
+
var name13 = "AI_DownloadError";
|
416
|
+
var marker13 = `vercel.ai.error.${name13}`;
|
417
|
+
var symbol13 = Symbol.for(marker13);
|
418
|
+
var _a13;
|
419
|
+
var DownloadError = class extends import_provider14.AISDKError {
|
420
|
+
constructor({
|
421
|
+
url,
|
422
|
+
statusCode,
|
423
|
+
statusText,
|
424
|
+
cause,
|
425
|
+
message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`
|
426
|
+
}) {
|
427
|
+
super({ name: name13, message, cause });
|
428
|
+
this[_a13] = true;
|
429
|
+
this.url = url;
|
430
|
+
this.statusCode = statusCode;
|
431
|
+
this.statusText = statusText;
|
432
|
+
}
|
433
|
+
static isInstance(error) {
|
434
|
+
return import_provider14.AISDKError.hasMarker(error, marker13);
|
435
|
+
}
|
436
|
+
};
|
437
|
+
_a13 = symbol13;
|
438
|
+
|
439
|
+
// src/util/retry-error.ts
|
440
|
+
var import_provider15 = require("@ai-sdk/provider");
|
441
|
+
var name14 = "AI_RetryError";
|
442
|
+
var marker14 = `vercel.ai.error.${name14}`;
|
443
|
+
var symbol14 = Symbol.for(marker14);
|
444
|
+
var _a14;
|
445
|
+
var RetryError = class extends import_provider15.AISDKError {
|
446
|
+
constructor({
|
447
|
+
message,
|
448
|
+
reason,
|
449
|
+
errors
|
450
|
+
}) {
|
451
|
+
super({ name: name14, message });
|
452
|
+
this[_a14] = true;
|
453
|
+
this.reason = reason;
|
454
|
+
this.errors = errors;
|
455
|
+
this.lastError = errors[errors.length - 1];
|
456
|
+
}
|
457
|
+
static isInstance(error) {
|
458
|
+
return import_provider15.AISDKError.hasMarker(error, marker14);
|
459
|
+
}
|
460
|
+
};
|
461
|
+
_a14 = symbol14;
|
462
|
+
|
463
|
+
// src/model/resolve-model.ts
|
464
|
+
function resolveLanguageModel(model) {
|
465
|
+
if (typeof model !== "string") {
|
466
|
+
if (model.specificationVersion !== "v2") {
|
467
|
+
throw new UnsupportedModelVersionError({
|
468
|
+
version: model.specificationVersion,
|
469
|
+
provider: model.provider,
|
470
|
+
modelId: model.modelId
|
308
471
|
});
|
309
472
|
}
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
473
|
+
return model;
|
474
|
+
}
|
475
|
+
return getGlobalProvider().languageModel(model);
|
476
|
+
}
|
477
|
+
function resolveEmbeddingModel(model) {
|
478
|
+
if (typeof model !== "string") {
|
479
|
+
if (model.specificationVersion !== "v2") {
|
480
|
+
throw new UnsupportedModelVersionError({
|
481
|
+
version: model.specificationVersion,
|
482
|
+
provider: model.provider,
|
483
|
+
modelId: model.modelId
|
315
484
|
});
|
316
485
|
}
|
486
|
+
return model;
|
317
487
|
}
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
};
|
488
|
+
return getGlobalProvider().textEmbeddingModel(
|
489
|
+
model
|
490
|
+
);
|
491
|
+
}
|
492
|
+
function getGlobalProvider() {
|
493
|
+
var _a16;
|
494
|
+
return (_a16 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a16 : import_gateway.gateway;
|
326
495
|
}
|
327
496
|
|
328
497
|
// src/prompt/convert-to-language-model-prompt.ts
|
329
|
-
var
|
498
|
+
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
330
499
|
|
331
500
|
// src/util/detect-media-type.ts
|
332
|
-
var
|
501
|
+
var import_provider_utils = require("@ai-sdk/provider-utils");
|
333
502
|
var imageMediaTypeSignatures = [
|
334
503
|
{
|
335
504
|
mediaType: "image/gif",
|
@@ -441,7 +610,7 @@ var audioMediaTypeSignatures = [
|
|
441
610
|
}
|
442
611
|
];
|
443
612
|
var stripID3 = (data) => {
|
444
|
-
const bytes = typeof data === "string" ? (0,
|
613
|
+
const bytes = typeof data === "string" ? (0, import_provider_utils.convertBase64ToUint8Array)(data) : data;
|
445
614
|
const id3Size = (bytes[6] & 127) << 21 | (bytes[7] & 127) << 14 | (bytes[8] & 127) << 7 | bytes[9] & 127;
|
446
615
|
return bytes.slice(id3Size + 10);
|
447
616
|
};
|
@@ -466,32 +635,6 @@ function detectMediaType({
|
|
466
635
|
return void 0;
|
467
636
|
}
|
468
637
|
|
469
|
-
// src/util/download-error.ts
|
470
|
-
var import_provider5 = require("@ai-sdk/provider");
|
471
|
-
var name4 = "AI_DownloadError";
|
472
|
-
var marker4 = `vercel.ai.error.${name4}`;
|
473
|
-
var symbol4 = Symbol.for(marker4);
|
474
|
-
var _a4;
|
475
|
-
var DownloadError = class extends import_provider5.AISDKError {
|
476
|
-
constructor({
|
477
|
-
url,
|
478
|
-
statusCode,
|
479
|
-
statusText,
|
480
|
-
cause,
|
481
|
-
message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`
|
482
|
-
}) {
|
483
|
-
super({ name: name4, message, cause });
|
484
|
-
this[_a4] = true;
|
485
|
-
this.url = url;
|
486
|
-
this.statusCode = statusCode;
|
487
|
-
this.statusText = statusText;
|
488
|
-
}
|
489
|
-
static isInstance(error) {
|
490
|
-
return import_provider5.AISDKError.hasMarker(error, marker4);
|
491
|
-
}
|
492
|
-
};
|
493
|
-
_a4 = symbol4;
|
494
|
-
|
495
638
|
// src/util/download.ts
|
496
639
|
async function download({ url }) {
|
497
640
|
var _a16;
|
@@ -518,32 +661,10 @@ async function download({ url }) {
|
|
518
661
|
}
|
519
662
|
|
520
663
|
// src/prompt/data-content.ts
|
521
|
-
var
|
522
|
-
var
|
664
|
+
var import_provider17 = require("@ai-sdk/provider");
|
665
|
+
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
523
666
|
var import_v4 = require("zod/v4");
|
524
667
|
|
525
|
-
// src/prompt/invalid-data-content-error.ts
|
526
|
-
var import_provider6 = require("@ai-sdk/provider");
|
527
|
-
var name5 = "AI_InvalidDataContentError";
|
528
|
-
var marker5 = `vercel.ai.error.${name5}`;
|
529
|
-
var symbol5 = Symbol.for(marker5);
|
530
|
-
var _a5;
|
531
|
-
var InvalidDataContentError = class extends import_provider6.AISDKError {
|
532
|
-
constructor({
|
533
|
-
content,
|
534
|
-
cause,
|
535
|
-
message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
|
536
|
-
}) {
|
537
|
-
super({ name: name5, message, cause });
|
538
|
-
this[_a5] = true;
|
539
|
-
this.content = content;
|
540
|
-
}
|
541
|
-
static isInstance(error) {
|
542
|
-
return import_provider6.AISDKError.hasMarker(error, marker5);
|
543
|
-
}
|
544
|
-
};
|
545
|
-
_a5 = symbol5;
|
546
|
-
|
547
668
|
// src/prompt/split-data-url.ts
|
548
669
|
function splitDataUrl(dataUrl) {
|
549
670
|
try {
|
@@ -592,7 +713,7 @@ function convertToLanguageModelV2DataContent(content) {
|
|
592
713
|
content.toString()
|
593
714
|
);
|
594
715
|
if (dataUrlMediaType == null || base64Content == null) {
|
595
|
-
throw new
|
716
|
+
throw new import_provider17.AISDKError({
|
596
717
|
name: "InvalidDataContentError",
|
597
718
|
message: `Invalid data URL format in content ${content.toString()}`
|
598
719
|
});
|
@@ -606,9 +727,9 @@ function convertDataContentToBase64String(content) {
|
|
606
727
|
return content;
|
607
728
|
}
|
608
729
|
if (content instanceof ArrayBuffer) {
|
609
|
-
return (0,
|
730
|
+
return (0, import_provider_utils2.convertUint8ArrayToBase64)(new Uint8Array(content));
|
610
731
|
}
|
611
|
-
return (0,
|
732
|
+
return (0, import_provider_utils2.convertUint8ArrayToBase64)(content);
|
612
733
|
}
|
613
734
|
function convertDataContentToUint8Array(content) {
|
614
735
|
if (content instanceof Uint8Array) {
|
@@ -616,7 +737,7 @@ function convertDataContentToUint8Array(content) {
|
|
616
737
|
}
|
617
738
|
if (typeof content === "string") {
|
618
739
|
try {
|
619
|
-
return (0,
|
740
|
+
return (0, import_provider_utils2.convertBase64ToUint8Array)(content);
|
620
741
|
} catch (error) {
|
621
742
|
throw new InvalidDataContentError({
|
622
743
|
message: "Invalid data content. Content string is not a base64-encoded media.",
|
@@ -625,32 +746,11 @@ function convertDataContentToUint8Array(content) {
|
|
625
746
|
});
|
626
747
|
}
|
627
748
|
}
|
628
|
-
if (content instanceof ArrayBuffer) {
|
629
|
-
return new Uint8Array(content);
|
630
|
-
}
|
631
|
-
throw new InvalidDataContentError({ content });
|
632
|
-
}
|
633
|
-
|
634
|
-
// src/prompt/invalid-message-role-error.ts
|
635
|
-
var import_provider8 = require("@ai-sdk/provider");
|
636
|
-
var name6 = "AI_InvalidMessageRoleError";
|
637
|
-
var marker6 = `vercel.ai.error.${name6}`;
|
638
|
-
var symbol6 = Symbol.for(marker6);
|
639
|
-
var _a6;
|
640
|
-
var InvalidMessageRoleError = class extends import_provider8.AISDKError {
|
641
|
-
constructor({
|
642
|
-
role,
|
643
|
-
message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
|
644
|
-
}) {
|
645
|
-
super({ name: name6, message });
|
646
|
-
this[_a6] = true;
|
647
|
-
this.role = role;
|
648
|
-
}
|
649
|
-
static isInstance(error) {
|
650
|
-
return import_provider8.AISDKError.hasMarker(error, marker6);
|
749
|
+
if (content instanceof ArrayBuffer) {
|
750
|
+
return new Uint8Array(content);
|
651
751
|
}
|
652
|
-
};
|
653
|
-
|
752
|
+
throw new InvalidDataContentError({ content });
|
753
|
+
}
|
654
754
|
|
655
755
|
// src/prompt/convert-to-language-model-prompt.ts
|
656
756
|
async function convertToLanguageModelPrompt({
|
@@ -799,7 +899,7 @@ async function downloadAssets(messages, downloadImplementation, supportedUrls) {
|
|
799
899
|
}
|
800
900
|
return { mediaType, data };
|
801
901
|
}).filter(
|
802
|
-
(part) => part.data instanceof URL && part.mediaType != null && !(0,
|
902
|
+
(part) => part.data instanceof URL && part.mediaType != null && !(0, import_provider_utils3.isUrlSupported)({
|
803
903
|
url: part.data.toString(),
|
804
904
|
mediaType: part.mediaType,
|
805
905
|
supportedUrls
|
@@ -938,311 +1038,93 @@ function prepareCallSettings({
|
|
938
1038
|
});
|
939
1039
|
}
|
940
1040
|
}
|
941
|
-
if (frequencyPenalty != null) {
|
942
|
-
if (typeof frequencyPenalty !== "number") {
|
943
|
-
throw new InvalidArgumentError({
|
944
|
-
parameter: "frequencyPenalty",
|
945
|
-
value: frequencyPenalty,
|
946
|
-
message: "frequencyPenalty must be a number"
|
947
|
-
});
|
948
|
-
}
|
949
|
-
}
|
950
|
-
if (seed != null) {
|
951
|
-
if (!Number.isInteger(seed)) {
|
952
|
-
throw new InvalidArgumentError({
|
953
|
-
parameter: "seed",
|
954
|
-
value: seed,
|
955
|
-
message: "seed must be an integer"
|
956
|
-
});
|
957
|
-
}
|
958
|
-
}
|
959
|
-
return {
|
960
|
-
maxOutputTokens,
|
961
|
-
temperature,
|
962
|
-
topP,
|
963
|
-
topK,
|
964
|
-
presencePenalty,
|
965
|
-
frequencyPenalty,
|
966
|
-
stopSequences,
|
967
|
-
seed
|
968
|
-
};
|
969
|
-
}
|
970
|
-
|
971
|
-
// src/prompt/prepare-tools-and-tool-choice.ts
|
972
|
-
var import_provider_utils5 = require("@ai-sdk/provider-utils");
|
973
|
-
|
974
|
-
// src/util/is-non-empty-object.ts
|
975
|
-
function isNonEmptyObject(object2) {
|
976
|
-
return object2 != null && Object.keys(object2).length > 0;
|
977
|
-
}
|
978
|
-
|
979
|
-
// src/prompt/prepare-tools-and-tool-choice.ts
|
980
|
-
function prepareToolsAndToolChoice({
|
981
|
-
tools,
|
982
|
-
toolChoice,
|
983
|
-
activeTools
|
984
|
-
}) {
|
985
|
-
if (!isNonEmptyObject(tools)) {
|
986
|
-
return {
|
987
|
-
tools: void 0,
|
988
|
-
toolChoice: void 0
|
989
|
-
};
|
990
|
-
}
|
991
|
-
const filteredTools = activeTools != null ? Object.entries(tools).filter(
|
992
|
-
([name16]) => activeTools.includes(name16)
|
993
|
-
) : Object.entries(tools);
|
994
|
-
return {
|
995
|
-
tools: filteredTools.map(([name16, tool3]) => {
|
996
|
-
const toolType = tool3.type;
|
997
|
-
switch (toolType) {
|
998
|
-
case void 0:
|
999
|
-
case "dynamic":
|
1000
|
-
case "function":
|
1001
|
-
return {
|
1002
|
-
type: "function",
|
1003
|
-
name: name16,
|
1004
|
-
description: tool3.description,
|
1005
|
-
inputSchema: (0, import_provider_utils5.asSchema)(tool3.inputSchema).jsonSchema,
|
1006
|
-
providerOptions: tool3.providerOptions
|
1007
|
-
};
|
1008
|
-
case "provider-defined":
|
1009
|
-
return {
|
1010
|
-
type: "provider-defined",
|
1011
|
-
name: name16,
|
1012
|
-
id: tool3.id,
|
1013
|
-
args: tool3.args
|
1014
|
-
};
|
1015
|
-
default: {
|
1016
|
-
const exhaustiveCheck = toolType;
|
1017
|
-
throw new Error(`Unsupported tool type: ${exhaustiveCheck}`);
|
1018
|
-
}
|
1019
|
-
}
|
1020
|
-
}),
|
1021
|
-
toolChoice: toolChoice == null ? { type: "auto" } : typeof toolChoice === "string" ? { type: toolChoice } : { type: "tool", toolName: toolChoice.toolName }
|
1022
|
-
};
|
1023
|
-
}
|
1024
|
-
|
1025
|
-
// src/prompt/resolve-language-model.ts
|
1026
|
-
var import_gateway = require("@ai-sdk/gateway");
|
1027
|
-
|
1028
|
-
// src/error/index.ts
|
1029
|
-
var import_provider18 = require("@ai-sdk/provider");
|
1030
|
-
|
1031
|
-
// src/error/invalid-stream-part-error.ts
|
1032
|
-
var import_provider9 = require("@ai-sdk/provider");
|
1033
|
-
var name7 = "AI_InvalidStreamPartError";
|
1034
|
-
var marker7 = `vercel.ai.error.${name7}`;
|
1035
|
-
var symbol7 = Symbol.for(marker7);
|
1036
|
-
var _a7;
|
1037
|
-
var InvalidStreamPartError = class extends import_provider9.AISDKError {
|
1038
|
-
constructor({
|
1039
|
-
chunk,
|
1040
|
-
message
|
1041
|
-
}) {
|
1042
|
-
super({ name: name7, message });
|
1043
|
-
this[_a7] = true;
|
1044
|
-
this.chunk = chunk;
|
1045
|
-
}
|
1046
|
-
static isInstance(error) {
|
1047
|
-
return import_provider9.AISDKError.hasMarker(error, marker7);
|
1048
|
-
}
|
1049
|
-
};
|
1050
|
-
_a7 = symbol7;
|
1051
|
-
|
1052
|
-
// src/error/invalid-tool-input-error.ts
|
1053
|
-
var import_provider10 = require("@ai-sdk/provider");
|
1054
|
-
var name8 = "AI_InvalidToolInputError";
|
1055
|
-
var marker8 = `vercel.ai.error.${name8}`;
|
1056
|
-
var symbol8 = Symbol.for(marker8);
|
1057
|
-
var _a8;
|
1058
|
-
var InvalidToolInputError = class extends import_provider10.AISDKError {
|
1059
|
-
constructor({
|
1060
|
-
toolInput,
|
1061
|
-
toolName,
|
1062
|
-
cause,
|
1063
|
-
message = `Invalid input for tool ${toolName}: ${(0, import_provider10.getErrorMessage)(cause)}`
|
1064
|
-
}) {
|
1065
|
-
super({ name: name8, message, cause });
|
1066
|
-
this[_a8] = true;
|
1067
|
-
this.toolInput = toolInput;
|
1068
|
-
this.toolName = toolName;
|
1069
|
-
}
|
1070
|
-
static isInstance(error) {
|
1071
|
-
return import_provider10.AISDKError.hasMarker(error, marker8);
|
1072
|
-
}
|
1073
|
-
};
|
1074
|
-
_a8 = symbol8;
|
1075
|
-
|
1076
|
-
// src/error/mcp-client-error.ts
|
1077
|
-
var import_provider11 = require("@ai-sdk/provider");
|
1078
|
-
var name9 = "AI_MCPClientError";
|
1079
|
-
var marker9 = `vercel.ai.error.${name9}`;
|
1080
|
-
var symbol9 = Symbol.for(marker9);
|
1081
|
-
var _a9;
|
1082
|
-
var MCPClientError = class extends import_provider11.AISDKError {
|
1083
|
-
constructor({
|
1084
|
-
name: name16 = "MCPClientError",
|
1085
|
-
message,
|
1086
|
-
cause
|
1087
|
-
}) {
|
1088
|
-
super({ name: name16, message, cause });
|
1089
|
-
this[_a9] = true;
|
1090
|
-
}
|
1091
|
-
static isInstance(error) {
|
1092
|
-
return import_provider11.AISDKError.hasMarker(error, marker9);
|
1093
|
-
}
|
1094
|
-
};
|
1095
|
-
_a9 = symbol9;
|
1096
|
-
|
1097
|
-
// src/error/no-image-generated-error.ts
|
1098
|
-
var import_provider12 = require("@ai-sdk/provider");
|
1099
|
-
var name10 = "AI_NoImageGeneratedError";
|
1100
|
-
var marker10 = `vercel.ai.error.${name10}`;
|
1101
|
-
var symbol10 = Symbol.for(marker10);
|
1102
|
-
var _a10;
|
1103
|
-
var NoImageGeneratedError = class extends import_provider12.AISDKError {
|
1104
|
-
constructor({
|
1105
|
-
message = "No image generated.",
|
1106
|
-
cause,
|
1107
|
-
responses
|
1108
|
-
}) {
|
1109
|
-
super({ name: name10, message, cause });
|
1110
|
-
this[_a10] = true;
|
1111
|
-
this.responses = responses;
|
1112
|
-
}
|
1113
|
-
static isInstance(error) {
|
1114
|
-
return import_provider12.AISDKError.hasMarker(error, marker10);
|
1115
|
-
}
|
1116
|
-
};
|
1117
|
-
_a10 = symbol10;
|
1118
|
-
|
1119
|
-
// src/error/no-object-generated-error.ts
|
1120
|
-
var import_provider13 = require("@ai-sdk/provider");
|
1121
|
-
var name11 = "AI_NoObjectGeneratedError";
|
1122
|
-
var marker11 = `vercel.ai.error.${name11}`;
|
1123
|
-
var symbol11 = Symbol.for(marker11);
|
1124
|
-
var _a11;
|
1125
|
-
var NoObjectGeneratedError = class extends import_provider13.AISDKError {
|
1126
|
-
constructor({
|
1127
|
-
message = "No object generated.",
|
1128
|
-
cause,
|
1129
|
-
text: text2,
|
1130
|
-
response,
|
1131
|
-
usage,
|
1132
|
-
finishReason
|
1133
|
-
}) {
|
1134
|
-
super({ name: name11, message, cause });
|
1135
|
-
this[_a11] = true;
|
1136
|
-
this.text = text2;
|
1137
|
-
this.response = response;
|
1138
|
-
this.usage = usage;
|
1139
|
-
this.finishReason = finishReason;
|
1140
|
-
}
|
1141
|
-
static isInstance(error) {
|
1142
|
-
return import_provider13.AISDKError.hasMarker(error, marker11);
|
1143
|
-
}
|
1144
|
-
};
|
1145
|
-
_a11 = symbol11;
|
1146
|
-
|
1147
|
-
// src/error/no-such-tool-error.ts
|
1148
|
-
var import_provider14 = require("@ai-sdk/provider");
|
1149
|
-
var name12 = "AI_NoSuchToolError";
|
1150
|
-
var marker12 = `vercel.ai.error.${name12}`;
|
1151
|
-
var symbol12 = Symbol.for(marker12);
|
1152
|
-
var _a12;
|
1153
|
-
var NoSuchToolError = class extends import_provider14.AISDKError {
|
1154
|
-
constructor({
|
1155
|
-
toolName,
|
1156
|
-
availableTools = void 0,
|
1157
|
-
message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? "No tools are available." : `Available tools: ${availableTools.join(", ")}.`}`
|
1158
|
-
}) {
|
1159
|
-
super({ name: name12, message });
|
1160
|
-
this[_a12] = true;
|
1161
|
-
this.toolName = toolName;
|
1162
|
-
this.availableTools = availableTools;
|
1163
|
-
}
|
1164
|
-
static isInstance(error) {
|
1165
|
-
return import_provider14.AISDKError.hasMarker(error, marker12);
|
1166
|
-
}
|
1167
|
-
};
|
1168
|
-
_a12 = symbol12;
|
1169
|
-
|
1170
|
-
// src/error/tool-call-repair-error.ts
|
1171
|
-
var import_provider15 = require("@ai-sdk/provider");
|
1172
|
-
var name13 = "AI_ToolCallRepairError";
|
1173
|
-
var marker13 = `vercel.ai.error.${name13}`;
|
1174
|
-
var symbol13 = Symbol.for(marker13);
|
1175
|
-
var _a13;
|
1176
|
-
var ToolCallRepairError = class extends import_provider15.AISDKError {
|
1177
|
-
constructor({
|
1178
|
-
cause,
|
1179
|
-
originalError,
|
1180
|
-
message = `Error repairing tool call: ${(0, import_provider15.getErrorMessage)(cause)}`
|
1181
|
-
}) {
|
1182
|
-
super({ name: name13, message, cause });
|
1183
|
-
this[_a13] = true;
|
1184
|
-
this.originalError = originalError;
|
1185
|
-
}
|
1186
|
-
static isInstance(error) {
|
1187
|
-
return import_provider15.AISDKError.hasMarker(error, marker13);
|
1188
|
-
}
|
1189
|
-
};
|
1190
|
-
_a13 = symbol13;
|
1191
|
-
|
1192
|
-
// src/error/unsupported-model-version-error.ts
|
1193
|
-
var import_provider16 = require("@ai-sdk/provider");
|
1194
|
-
var UnsupportedModelVersionError = class extends import_provider16.AISDKError {
|
1195
|
-
constructor(options) {
|
1196
|
-
super({
|
1197
|
-
name: "AI_UnsupportedModelVersionError",
|
1198
|
-
message: `Unsupported model version ${options.version} for provider "${options.provider}" and model "${options.modelId}". AI SDK 5 only supports models that implement specification version "v2".`
|
1199
|
-
});
|
1200
|
-
this.version = options.version;
|
1201
|
-
this.provider = options.provider;
|
1202
|
-
this.modelId = options.modelId;
|
1203
|
-
}
|
1204
|
-
};
|
1205
|
-
|
1206
|
-
// src/prompt/message-conversion-error.ts
|
1207
|
-
var import_provider17 = require("@ai-sdk/provider");
|
1208
|
-
var name14 = "AI_MessageConversionError";
|
1209
|
-
var marker14 = `vercel.ai.error.${name14}`;
|
1210
|
-
var symbol14 = Symbol.for(marker14);
|
1211
|
-
var _a14;
|
1212
|
-
var MessageConversionError = class extends import_provider17.AISDKError {
|
1213
|
-
constructor({
|
1214
|
-
originalMessage,
|
1215
|
-
message
|
1216
|
-
}) {
|
1217
|
-
super({ name: name14, message });
|
1218
|
-
this[_a14] = true;
|
1219
|
-
this.originalMessage = originalMessage;
|
1220
|
-
}
|
1221
|
-
static isInstance(error) {
|
1222
|
-
return import_provider17.AISDKError.hasMarker(error, marker14);
|
1041
|
+
if (frequencyPenalty != null) {
|
1042
|
+
if (typeof frequencyPenalty !== "number") {
|
1043
|
+
throw new InvalidArgumentError({
|
1044
|
+
parameter: "frequencyPenalty",
|
1045
|
+
value: frequencyPenalty,
|
1046
|
+
message: "frequencyPenalty must be a number"
|
1047
|
+
});
|
1048
|
+
}
|
1223
1049
|
}
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
|
1230
|
-
if (model.specificationVersion !== "v2") {
|
1231
|
-
throw new UnsupportedModelVersionError({
|
1232
|
-
version: model.specificationVersion,
|
1233
|
-
provider: model.provider,
|
1234
|
-
modelId: model.modelId
|
1050
|
+
if (seed != null) {
|
1051
|
+
if (!Number.isInteger(seed)) {
|
1052
|
+
throw new InvalidArgumentError({
|
1053
|
+
parameter: "seed",
|
1054
|
+
value: seed,
|
1055
|
+
message: "seed must be an integer"
|
1235
1056
|
});
|
1236
1057
|
}
|
1237
|
-
return model;
|
1238
1058
|
}
|
1239
|
-
|
1240
|
-
|
1059
|
+
return {
|
1060
|
+
maxOutputTokens,
|
1061
|
+
temperature,
|
1062
|
+
topP,
|
1063
|
+
topK,
|
1064
|
+
presencePenalty,
|
1065
|
+
frequencyPenalty,
|
1066
|
+
stopSequences,
|
1067
|
+
seed
|
1068
|
+
};
|
1069
|
+
}
|
1070
|
+
|
1071
|
+
// src/prompt/prepare-tools-and-tool-choice.ts
|
1072
|
+
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
1073
|
+
|
1074
|
+
// src/util/is-non-empty-object.ts
|
1075
|
+
function isNonEmptyObject(object2) {
|
1076
|
+
return object2 != null && Object.keys(object2).length > 0;
|
1077
|
+
}
|
1078
|
+
|
1079
|
+
// src/prompt/prepare-tools-and-tool-choice.ts
|
1080
|
+
function prepareToolsAndToolChoice({
|
1081
|
+
tools,
|
1082
|
+
toolChoice,
|
1083
|
+
activeTools
|
1084
|
+
}) {
|
1085
|
+
if (!isNonEmptyObject(tools)) {
|
1086
|
+
return {
|
1087
|
+
tools: void 0,
|
1088
|
+
toolChoice: void 0
|
1089
|
+
};
|
1090
|
+
}
|
1091
|
+
const filteredTools = activeTools != null ? Object.entries(tools).filter(
|
1092
|
+
([name16]) => activeTools.includes(name16)
|
1093
|
+
) : Object.entries(tools);
|
1094
|
+
return {
|
1095
|
+
tools: filteredTools.map(([name16, tool3]) => {
|
1096
|
+
const toolType = tool3.type;
|
1097
|
+
switch (toolType) {
|
1098
|
+
case void 0:
|
1099
|
+
case "dynamic":
|
1100
|
+
case "function":
|
1101
|
+
return {
|
1102
|
+
type: "function",
|
1103
|
+
name: name16,
|
1104
|
+
description: tool3.description,
|
1105
|
+
inputSchema: (0, import_provider_utils4.asSchema)(tool3.inputSchema).jsonSchema,
|
1106
|
+
providerOptions: tool3.providerOptions
|
1107
|
+
};
|
1108
|
+
case "provider-defined":
|
1109
|
+
return {
|
1110
|
+
type: "provider-defined",
|
1111
|
+
name: name16,
|
1112
|
+
id: tool3.id,
|
1113
|
+
args: tool3.args
|
1114
|
+
};
|
1115
|
+
default: {
|
1116
|
+
const exhaustiveCheck = toolType;
|
1117
|
+
throw new Error(`Unsupported tool type: ${exhaustiveCheck}`);
|
1118
|
+
}
|
1119
|
+
}
|
1120
|
+
}),
|
1121
|
+
toolChoice: toolChoice == null ? { type: "auto" } : typeof toolChoice === "string" ? { type: toolChoice } : { type: "tool", toolName: toolChoice.toolName }
|
1122
|
+
};
|
1241
1123
|
}
|
1242
1124
|
|
1243
1125
|
// src/prompt/standardize-prompt.ts
|
1244
|
-
var
|
1245
|
-
var
|
1126
|
+
var import_provider18 = require("@ai-sdk/provider");
|
1127
|
+
var import_provider_utils5 = require("@ai-sdk/provider-utils");
|
1246
1128
|
var import_v46 = require("zod/v4");
|
1247
1129
|
|
1248
1130
|
// src/prompt/message.ts
|
@@ -1397,19 +1279,19 @@ var coreMessageSchema = modelMessageSchema;
|
|
1397
1279
|
// src/prompt/standardize-prompt.ts
|
1398
1280
|
async function standardizePrompt(prompt) {
|
1399
1281
|
if (prompt.prompt == null && prompt.messages == null) {
|
1400
|
-
throw new
|
1282
|
+
throw new import_provider18.InvalidPromptError({
|
1401
1283
|
prompt,
|
1402
1284
|
message: "prompt or messages must be defined"
|
1403
1285
|
});
|
1404
1286
|
}
|
1405
1287
|
if (prompt.prompt != null && prompt.messages != null) {
|
1406
|
-
throw new
|
1288
|
+
throw new import_provider18.InvalidPromptError({
|
1407
1289
|
prompt,
|
1408
1290
|
message: "prompt and messages cannot be defined at the same time"
|
1409
1291
|
});
|
1410
1292
|
}
|
1411
1293
|
if (prompt.system != null && typeof prompt.system !== "string") {
|
1412
|
-
throw new
|
1294
|
+
throw new import_provider18.InvalidPromptError({
|
1413
1295
|
prompt,
|
1414
1296
|
message: "system must be a string"
|
1415
1297
|
});
|
@@ -1422,23 +1304,23 @@ async function standardizePrompt(prompt) {
|
|
1422
1304
|
} else if (prompt.messages != null) {
|
1423
1305
|
messages = prompt.messages;
|
1424
1306
|
} else {
|
1425
|
-
throw new
|
1307
|
+
throw new import_provider18.InvalidPromptError({
|
1426
1308
|
prompt,
|
1427
1309
|
message: "prompt or messages must be defined"
|
1428
1310
|
});
|
1429
1311
|
}
|
1430
1312
|
if (messages.length === 0) {
|
1431
|
-
throw new
|
1313
|
+
throw new import_provider18.InvalidPromptError({
|
1432
1314
|
prompt,
|
1433
1315
|
message: "messages must not be empty"
|
1434
1316
|
});
|
1435
1317
|
}
|
1436
|
-
const validationResult = await (0,
|
1318
|
+
const validationResult = await (0, import_provider_utils5.safeValidateTypes)({
|
1437
1319
|
value: messages,
|
1438
1320
|
schema: import_v46.z.array(modelMessageSchema)
|
1439
1321
|
});
|
1440
1322
|
if (!validationResult.success) {
|
1441
|
-
throw new
|
1323
|
+
throw new import_provider18.InvalidPromptError({
|
1442
1324
|
prompt,
|
1443
1325
|
message: "The messages must be a ModelMessage[]. If you have passed a UIMessage[], you can use convertToModelMessages to convert them.",
|
1444
1326
|
cause: validationResult.error
|
@@ -1452,10 +1334,10 @@ async function standardizePrompt(prompt) {
|
|
1452
1334
|
|
1453
1335
|
// src/prompt/wrap-gateway-error.ts
|
1454
1336
|
var import_gateway2 = require("@ai-sdk/gateway");
|
1455
|
-
var
|
1337
|
+
var import_provider19 = require("@ai-sdk/provider");
|
1456
1338
|
function wrapGatewayError(error) {
|
1457
1339
|
if (import_gateway2.GatewayAuthenticationError.isInstance(error) || import_gateway2.GatewayModelNotFoundError.isInstance(error)) {
|
1458
|
-
return new
|
1340
|
+
return new import_provider19.AISDKError({
|
1459
1341
|
name: "GatewayError",
|
1460
1342
|
message: "Vercel AI Gateway access failed. If you want to use AI SDK providers directly, use the providers, e.g. @ai-sdk/openai, or register a different global default provider.",
|
1461
1343
|
cause: error
|
@@ -1612,88 +1494,222 @@ function recordSpan({
|
|
1612
1494
|
}
|
1613
1495
|
throw error;
|
1614
1496
|
}
|
1615
|
-
});
|
1616
|
-
}
|
1617
|
-
function recordErrorOnSpan(span, error) {
|
1618
|
-
if (error instanceof Error) {
|
1619
|
-
span.recordException({
|
1620
|
-
name: error.name,
|
1621
|
-
message: error.message,
|
1622
|
-
stack: error.stack
|
1623
|
-
});
|
1624
|
-
span.setStatus({
|
1625
|
-
code: import_api2.SpanStatusCode.ERROR,
|
1626
|
-
message: error.message
|
1497
|
+
});
|
1498
|
+
}
|
1499
|
+
function recordErrorOnSpan(span, error) {
|
1500
|
+
if (error instanceof Error) {
|
1501
|
+
span.recordException({
|
1502
|
+
name: error.name,
|
1503
|
+
message: error.message,
|
1504
|
+
stack: error.stack
|
1505
|
+
});
|
1506
|
+
span.setStatus({
|
1507
|
+
code: import_api2.SpanStatusCode.ERROR,
|
1508
|
+
message: error.message
|
1509
|
+
});
|
1510
|
+
} else {
|
1511
|
+
span.setStatus({ code: import_api2.SpanStatusCode.ERROR });
|
1512
|
+
}
|
1513
|
+
}
|
1514
|
+
|
1515
|
+
// src/telemetry/select-telemetry-attributes.ts
|
1516
|
+
function selectTelemetryAttributes({
|
1517
|
+
telemetry,
|
1518
|
+
attributes
|
1519
|
+
}) {
|
1520
|
+
if ((telemetry == null ? void 0 : telemetry.isEnabled) !== true) {
|
1521
|
+
return {};
|
1522
|
+
}
|
1523
|
+
return Object.entries(attributes).reduce((attributes2, [key, value]) => {
|
1524
|
+
if (value == null) {
|
1525
|
+
return attributes2;
|
1526
|
+
}
|
1527
|
+
if (typeof value === "object" && "input" in value && typeof value.input === "function") {
|
1528
|
+
if ((telemetry == null ? void 0 : telemetry.recordInputs) === false) {
|
1529
|
+
return attributes2;
|
1530
|
+
}
|
1531
|
+
const result = value.input();
|
1532
|
+
return result == null ? attributes2 : { ...attributes2, [key]: result };
|
1533
|
+
}
|
1534
|
+
if (typeof value === "object" && "output" in value && typeof value.output === "function") {
|
1535
|
+
if ((telemetry == null ? void 0 : telemetry.recordOutputs) === false) {
|
1536
|
+
return attributes2;
|
1537
|
+
}
|
1538
|
+
const result = value.output();
|
1539
|
+
return result == null ? attributes2 : { ...attributes2, [key]: result };
|
1540
|
+
}
|
1541
|
+
return { ...attributes2, [key]: value };
|
1542
|
+
}, {});
|
1543
|
+
}
|
1544
|
+
|
1545
|
+
// src/telemetry/stringify-for-telemetry.ts
|
1546
|
+
function stringifyForTelemetry(prompt) {
|
1547
|
+
return JSON.stringify(
|
1548
|
+
prompt.map((message) => ({
|
1549
|
+
...message,
|
1550
|
+
content: typeof message.content === "string" ? message.content : message.content.map(
|
1551
|
+
(part) => part.type === "file" ? {
|
1552
|
+
...part,
|
1553
|
+
data: part.data instanceof Uint8Array ? convertDataContentToBase64String(part.data) : part.data
|
1554
|
+
} : part
|
1555
|
+
)
|
1556
|
+
}))
|
1557
|
+
);
|
1558
|
+
}
|
1559
|
+
|
1560
|
+
// src/types/usage.ts
|
1561
|
+
function addLanguageModelUsage(usage1, usage2) {
|
1562
|
+
return {
|
1563
|
+
inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
|
1564
|
+
outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),
|
1565
|
+
totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),
|
1566
|
+
reasoningTokens: addTokenCounts(
|
1567
|
+
usage1.reasoningTokens,
|
1568
|
+
usage2.reasoningTokens
|
1569
|
+
),
|
1570
|
+
cachedInputTokens: addTokenCounts(
|
1571
|
+
usage1.cachedInputTokens,
|
1572
|
+
usage2.cachedInputTokens
|
1573
|
+
)
|
1574
|
+
};
|
1575
|
+
}
|
1576
|
+
function addTokenCounts(tokenCount1, tokenCount2) {
|
1577
|
+
return tokenCount1 == null && tokenCount2 == null ? void 0 : (tokenCount1 != null ? tokenCount1 : 0) + (tokenCount2 != null ? tokenCount2 : 0);
|
1578
|
+
}
|
1579
|
+
|
1580
|
+
// src/util/as-array.ts
|
1581
|
+
function asArray(value) {
|
1582
|
+
return value === void 0 ? [] : Array.isArray(value) ? value : [value];
|
1583
|
+
}
|
1584
|
+
|
1585
|
+
// src/util/retry-with-exponential-backoff.ts
|
1586
|
+
var import_provider20 = require("@ai-sdk/provider");
|
1587
|
+
var import_provider_utils6 = require("@ai-sdk/provider-utils");
|
1588
|
+
function getRetryDelayInMs({
|
1589
|
+
error,
|
1590
|
+
exponentialBackoffDelay
|
1591
|
+
}) {
|
1592
|
+
const headers = error.responseHeaders;
|
1593
|
+
if (!headers)
|
1594
|
+
return exponentialBackoffDelay;
|
1595
|
+
let ms;
|
1596
|
+
const retryAfterMs = headers["retry-after-ms"];
|
1597
|
+
if (retryAfterMs) {
|
1598
|
+
const timeoutMs = parseFloat(retryAfterMs);
|
1599
|
+
if (!Number.isNaN(timeoutMs)) {
|
1600
|
+
ms = timeoutMs;
|
1601
|
+
}
|
1602
|
+
}
|
1603
|
+
const retryAfter = headers["retry-after"];
|
1604
|
+
if (retryAfter && ms === void 0) {
|
1605
|
+
const timeoutSeconds = parseFloat(retryAfter);
|
1606
|
+
if (!Number.isNaN(timeoutSeconds)) {
|
1607
|
+
ms = timeoutSeconds * 1e3;
|
1608
|
+
} else {
|
1609
|
+
ms = Date.parse(retryAfter) - Date.now();
|
1610
|
+
}
|
1611
|
+
}
|
1612
|
+
if (ms != null && !Number.isNaN(ms) && 0 <= ms && (ms < 60 * 1e3 || ms < exponentialBackoffDelay)) {
|
1613
|
+
return ms;
|
1614
|
+
}
|
1615
|
+
return exponentialBackoffDelay;
|
1616
|
+
}
|
1617
|
+
var retryWithExponentialBackoffRespectingRetryHeaders = ({
|
1618
|
+
maxRetries = 2,
|
1619
|
+
initialDelayInMs = 2e3,
|
1620
|
+
backoffFactor = 2,
|
1621
|
+
abortSignal
|
1622
|
+
} = {}) => async (f) => _retryWithExponentialBackoff(f, {
|
1623
|
+
maxRetries,
|
1624
|
+
delayInMs: initialDelayInMs,
|
1625
|
+
backoffFactor,
|
1626
|
+
abortSignal
|
1627
|
+
});
|
1628
|
+
async function _retryWithExponentialBackoff(f, {
|
1629
|
+
maxRetries,
|
1630
|
+
delayInMs,
|
1631
|
+
backoffFactor,
|
1632
|
+
abortSignal
|
1633
|
+
}, errors = []) {
|
1634
|
+
try {
|
1635
|
+
return await f();
|
1636
|
+
} catch (error) {
|
1637
|
+
if ((0, import_provider_utils6.isAbortError)(error)) {
|
1638
|
+
throw error;
|
1639
|
+
}
|
1640
|
+
if (maxRetries === 0) {
|
1641
|
+
throw error;
|
1642
|
+
}
|
1643
|
+
const errorMessage = (0, import_provider_utils6.getErrorMessage)(error);
|
1644
|
+
const newErrors = [...errors, error];
|
1645
|
+
const tryNumber = newErrors.length;
|
1646
|
+
if (tryNumber > maxRetries) {
|
1647
|
+
throw new RetryError({
|
1648
|
+
message: `Failed after ${tryNumber} attempts. Last error: ${errorMessage}`,
|
1649
|
+
reason: "maxRetriesExceeded",
|
1650
|
+
errors: newErrors
|
1651
|
+
});
|
1652
|
+
}
|
1653
|
+
if (error instanceof Error && import_provider20.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
|
1654
|
+
await (0, import_provider_utils6.delay)(
|
1655
|
+
getRetryDelayInMs({
|
1656
|
+
error,
|
1657
|
+
exponentialBackoffDelay: delayInMs
|
1658
|
+
}),
|
1659
|
+
{ abortSignal }
|
1660
|
+
);
|
1661
|
+
return _retryWithExponentialBackoff(
|
1662
|
+
f,
|
1663
|
+
{
|
1664
|
+
maxRetries,
|
1665
|
+
delayInMs: backoffFactor * delayInMs,
|
1666
|
+
backoffFactor,
|
1667
|
+
abortSignal
|
1668
|
+
},
|
1669
|
+
newErrors
|
1670
|
+
);
|
1671
|
+
}
|
1672
|
+
if (tryNumber === 1) {
|
1673
|
+
throw error;
|
1674
|
+
}
|
1675
|
+
throw new RetryError({
|
1676
|
+
message: `Failed after ${tryNumber} attempts with non-retryable error: '${errorMessage}'`,
|
1677
|
+
reason: "errorNotRetryable",
|
1678
|
+
errors: newErrors
|
1627
1679
|
});
|
1628
|
-
} else {
|
1629
|
-
span.setStatus({ code: import_api2.SpanStatusCode.ERROR });
|
1630
1680
|
}
|
1631
1681
|
}
|
1632
1682
|
|
1633
|
-
// src/
|
1634
|
-
function
|
1635
|
-
|
1636
|
-
|
1683
|
+
// src/util/prepare-retries.ts
|
1684
|
+
function prepareRetries({
|
1685
|
+
maxRetries,
|
1686
|
+
abortSignal
|
1637
1687
|
}) {
|
1638
|
-
if (
|
1639
|
-
|
1640
|
-
|
1641
|
-
|
1642
|
-
|
1643
|
-
|
1644
|
-
|
1645
|
-
if (typeof value === "object" && "input" in value && typeof value.input === "function") {
|
1646
|
-
if ((telemetry == null ? void 0 : telemetry.recordInputs) === false) {
|
1647
|
-
return attributes2;
|
1648
|
-
}
|
1649
|
-
const result = value.input();
|
1650
|
-
return result == null ? attributes2 : { ...attributes2, [key]: result };
|
1688
|
+
if (maxRetries != null) {
|
1689
|
+
if (!Number.isInteger(maxRetries)) {
|
1690
|
+
throw new InvalidArgumentError({
|
1691
|
+
parameter: "maxRetries",
|
1692
|
+
value: maxRetries,
|
1693
|
+
message: "maxRetries must be an integer"
|
1694
|
+
});
|
1651
1695
|
}
|
1652
|
-
if (
|
1653
|
-
|
1654
|
-
|
1655
|
-
|
1656
|
-
|
1657
|
-
|
1696
|
+
if (maxRetries < 0) {
|
1697
|
+
throw new InvalidArgumentError({
|
1698
|
+
parameter: "maxRetries",
|
1699
|
+
value: maxRetries,
|
1700
|
+
message: "maxRetries must be >= 0"
|
1701
|
+
});
|
1658
1702
|
}
|
1659
|
-
|
1660
|
-
|
1661
|
-
}
|
1662
|
-
|
1663
|
-
// src/telemetry/stringify-for-telemetry.ts
|
1664
|
-
function stringifyForTelemetry(prompt) {
|
1665
|
-
return JSON.stringify(
|
1666
|
-
prompt.map((message) => ({
|
1667
|
-
...message,
|
1668
|
-
content: typeof message.content === "string" ? message.content : message.content.map(
|
1669
|
-
(part) => part.type === "file" ? {
|
1670
|
-
...part,
|
1671
|
-
data: part.data instanceof Uint8Array ? convertDataContentToBase64String(part.data) : part.data
|
1672
|
-
} : part
|
1673
|
-
)
|
1674
|
-
}))
|
1675
|
-
);
|
1676
|
-
}
|
1677
|
-
|
1678
|
-
// src/types/usage.ts
|
1679
|
-
function addLanguageModelUsage(usage1, usage2) {
|
1703
|
+
}
|
1704
|
+
const maxRetriesResult = maxRetries != null ? maxRetries : 2;
|
1680
1705
|
return {
|
1681
|
-
|
1682
|
-
|
1683
|
-
|
1684
|
-
|
1685
|
-
|
1686
|
-
usage2.reasoningTokens
|
1687
|
-
),
|
1688
|
-
cachedInputTokens: addTokenCounts(
|
1689
|
-
usage1.cachedInputTokens,
|
1690
|
-
usage2.cachedInputTokens
|
1691
|
-
)
|
1706
|
+
maxRetries: maxRetriesResult,
|
1707
|
+
retry: retryWithExponentialBackoffRespectingRetryHeaders({
|
1708
|
+
maxRetries: maxRetriesResult,
|
1709
|
+
abortSignal
|
1710
|
+
})
|
1692
1711
|
};
|
1693
1712
|
}
|
1694
|
-
function addTokenCounts(tokenCount1, tokenCount2) {
|
1695
|
-
return tokenCount1 == null && tokenCount2 == null ? void 0 : (tokenCount1 != null ? tokenCount1 : 0) + (tokenCount2 != null ? tokenCount2 : 0);
|
1696
|
-
}
|
1697
1713
|
|
1698
1714
|
// src/generate-text/extract-content-text.ts
|
1699
1715
|
function extractContentText(content) {
|
@@ -3888,12 +3904,6 @@ var DelayedPromise = class {
|
|
3888
3904
|
}
|
3889
3905
|
};
|
3890
3906
|
|
3891
|
-
// src/util/now.ts
|
3892
|
-
function now() {
|
3893
|
-
var _a16, _b;
|
3894
|
-
return (_b = (_a16 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a16.now()) != null ? _b : Date.now();
|
3895
|
-
}
|
3896
|
-
|
3897
3907
|
// src/util/filter-stream-errors.ts
|
3898
3908
|
function filterStreamErrors(readable, onError) {
|
3899
3909
|
return new ReadableStream({
|
@@ -3918,6 +3928,12 @@ function filterStreamErrors(readable, onError) {
|
|
3918
3928
|
});
|
3919
3929
|
}
|
3920
3930
|
|
3931
|
+
// src/util/now.ts
|
3932
|
+
function now() {
|
3933
|
+
var _a16, _b;
|
3934
|
+
return (_b = (_a16 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a16.now()) != null ? _b : Date.now();
|
3935
|
+
}
|
3936
|
+
|
3921
3937
|
// src/generate-text/run-tools-transformation.ts
|
3922
3938
|
var import_provider_utils12 = require("@ai-sdk/provider-utils");
|
3923
3939
|
function runToolsTransformation({
|
@@ -5410,7 +5426,7 @@ var Agent = class {
|
|
5410
5426
|
|
5411
5427
|
// src/embed/embed.ts
|
5412
5428
|
async function embed({
|
5413
|
-
model,
|
5429
|
+
model: modelArg,
|
5414
5430
|
value,
|
5415
5431
|
providerOptions,
|
5416
5432
|
maxRetries: maxRetriesArg,
|
@@ -5418,13 +5434,7 @@ async function embed({
|
|
5418
5434
|
headers,
|
5419
5435
|
experimental_telemetry: telemetry
|
5420
5436
|
}) {
|
5421
|
-
|
5422
|
-
throw new UnsupportedModelVersionError({
|
5423
|
-
version: model.specificationVersion,
|
5424
|
-
provider: model.provider,
|
5425
|
-
modelId: model.modelId
|
5426
|
-
});
|
5427
|
-
}
|
5437
|
+
const model = resolveEmbeddingModel(modelArg);
|
5428
5438
|
const { maxRetries, retry } = prepareRetries({
|
5429
5439
|
maxRetries: maxRetriesArg,
|
5430
5440
|
abortSignal
|
@@ -5542,7 +5552,7 @@ function splitArray(array, chunkSize) {
|
|
5542
5552
|
|
5543
5553
|
// src/embed/embed-many.ts
|
5544
5554
|
async function embedMany({
|
5545
|
-
model,
|
5555
|
+
model: modelArg,
|
5546
5556
|
values,
|
5547
5557
|
maxParallelCalls = Infinity,
|
5548
5558
|
maxRetries: maxRetriesArg,
|
@@ -5551,13 +5561,7 @@ async function embedMany({
|
|
5551
5561
|
providerOptions,
|
5552
5562
|
experimental_telemetry: telemetry
|
5553
5563
|
}) {
|
5554
|
-
|
5555
|
-
throw new UnsupportedModelVersionError({
|
5556
|
-
version: model.specificationVersion,
|
5557
|
-
provider: model.provider,
|
5558
|
-
modelId: model.modelId
|
5559
|
-
});
|
5560
|
-
}
|
5564
|
+
const model = resolveEmbeddingModel(modelArg);
|
5561
5565
|
const { maxRetries, retry } = prepareRetries({
|
5562
5566
|
maxRetries: maxRetriesArg,
|
5563
5567
|
abortSignal
|
@@ -6149,6 +6153,63 @@ function getOutputStrategy({
|
|
6149
6153
|
}
|
6150
6154
|
}
|
6151
6155
|
|
6156
|
+
// src/generate-object/parse-and-validate-object-result.ts
|
6157
|
+
var import_provider24 = require("@ai-sdk/provider");
|
6158
|
+
var import_provider_utils15 = require("@ai-sdk/provider-utils");
|
6159
|
+
async function parseAndValidateObjectResult(result, outputStrategy, context) {
|
6160
|
+
const parseResult = await (0, import_provider_utils15.safeParseJSON)({ text: result });
|
6161
|
+
if (!parseResult.success) {
|
6162
|
+
throw new NoObjectGeneratedError({
|
6163
|
+
message: "No object generated: could not parse the response.",
|
6164
|
+
cause: parseResult.error,
|
6165
|
+
text: result,
|
6166
|
+
response: context.response,
|
6167
|
+
usage: context.usage,
|
6168
|
+
finishReason: context.finishReason
|
6169
|
+
});
|
6170
|
+
}
|
6171
|
+
const validationResult = await outputStrategy.validateFinalResult(
|
6172
|
+
parseResult.value,
|
6173
|
+
{
|
6174
|
+
text: result,
|
6175
|
+
response: context.response,
|
6176
|
+
usage: context.usage
|
6177
|
+
}
|
6178
|
+
);
|
6179
|
+
if (!validationResult.success) {
|
6180
|
+
throw new NoObjectGeneratedError({
|
6181
|
+
message: "No object generated: response did not match schema.",
|
6182
|
+
cause: validationResult.error,
|
6183
|
+
text: result,
|
6184
|
+
response: context.response,
|
6185
|
+
usage: context.usage,
|
6186
|
+
finishReason: context.finishReason
|
6187
|
+
});
|
6188
|
+
}
|
6189
|
+
return validationResult.value;
|
6190
|
+
}
|
6191
|
+
async function parseAndValidateObjectResultWithRepair(result, outputStrategy, repairText, context) {
|
6192
|
+
try {
|
6193
|
+
return await parseAndValidateObjectResult(result, outputStrategy, context);
|
6194
|
+
} catch (error) {
|
6195
|
+
if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider24.JSONParseError.isInstance(error.cause) || import_provider24.TypeValidationError.isInstance(error.cause))) {
|
6196
|
+
const repairedText = await repairText({
|
6197
|
+
text: result,
|
6198
|
+
error: error.cause
|
6199
|
+
});
|
6200
|
+
if (repairedText === null) {
|
6201
|
+
throw error;
|
6202
|
+
}
|
6203
|
+
return await parseAndValidateObjectResult(
|
6204
|
+
repairedText,
|
6205
|
+
outputStrategy,
|
6206
|
+
context
|
6207
|
+
);
|
6208
|
+
}
|
6209
|
+
throw error;
|
6210
|
+
}
|
6211
|
+
}
|
6212
|
+
|
6152
6213
|
// src/generate-object/validate-object-generation-input.ts
|
6153
6214
|
function validateObjectGenerationInput({
|
6154
6215
|
output,
|
@@ -6267,63 +6328,6 @@ function validateObjectGenerationInput({
|
|
6267
6328
|
}
|
6268
6329
|
}
|
6269
6330
|
|
6270
|
-
// src/generate-object/parse-and-validate-object-result.ts
|
6271
|
-
var import_provider24 = require("@ai-sdk/provider");
|
6272
|
-
var import_provider_utils15 = require("@ai-sdk/provider-utils");
|
6273
|
-
async function parseAndValidateObjectResult(result, outputStrategy, context) {
|
6274
|
-
const parseResult = await (0, import_provider_utils15.safeParseJSON)({ text: result });
|
6275
|
-
if (!parseResult.success) {
|
6276
|
-
throw new NoObjectGeneratedError({
|
6277
|
-
message: "No object generated: could not parse the response.",
|
6278
|
-
cause: parseResult.error,
|
6279
|
-
text: result,
|
6280
|
-
response: context.response,
|
6281
|
-
usage: context.usage,
|
6282
|
-
finishReason: context.finishReason
|
6283
|
-
});
|
6284
|
-
}
|
6285
|
-
const validationResult = await outputStrategy.validateFinalResult(
|
6286
|
-
parseResult.value,
|
6287
|
-
{
|
6288
|
-
text: result,
|
6289
|
-
response: context.response,
|
6290
|
-
usage: context.usage
|
6291
|
-
}
|
6292
|
-
);
|
6293
|
-
if (!validationResult.success) {
|
6294
|
-
throw new NoObjectGeneratedError({
|
6295
|
-
message: "No object generated: response did not match schema.",
|
6296
|
-
cause: validationResult.error,
|
6297
|
-
text: result,
|
6298
|
-
response: context.response,
|
6299
|
-
usage: context.usage,
|
6300
|
-
finishReason: context.finishReason
|
6301
|
-
});
|
6302
|
-
}
|
6303
|
-
return validationResult.value;
|
6304
|
-
}
|
6305
|
-
async function parseAndValidateObjectResultWithRepair(result, outputStrategy, repairText, context) {
|
6306
|
-
try {
|
6307
|
-
return await parseAndValidateObjectResult(result, outputStrategy, context);
|
6308
|
-
} catch (error) {
|
6309
|
-
if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider24.JSONParseError.isInstance(error.cause) || import_provider24.TypeValidationError.isInstance(error.cause))) {
|
6310
|
-
const repairedText = await repairText({
|
6311
|
-
text: result,
|
6312
|
-
error: error.cause
|
6313
|
-
});
|
6314
|
-
if (repairedText === null) {
|
6315
|
-
throw error;
|
6316
|
-
}
|
6317
|
-
return await parseAndValidateObjectResult(
|
6318
|
-
repairedText,
|
6319
|
-
outputStrategy,
|
6320
|
-
context
|
6321
|
-
);
|
6322
|
-
}
|
6323
|
-
throw error;
|
6324
|
-
}
|
6325
|
-
}
|
6326
|
-
|
6327
6331
|
// src/generate-object/generate-object.ts
|
6328
6332
|
var originalGenerateId3 = (0, import_provider_utils16.createIdGenerator)({ prefix: "aiobj", size: 24 });
|
6329
6333
|
async function generateObject(options) {
|