@zenning/ai 5.1.0 → 5.2.0
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 +160 -0
- package/README.md +128 -44
- package/dist/index.d.mts +255 -120
- package/dist/index.d.ts +255 -120
- package/dist/index.js +317 -218
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +272 -177
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.d.mts +6 -6
- package/dist/internal/index.d.ts +6 -6
- package/dist/internal/index.js +18 -18
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +18 -18
- package/dist/internal/index.mjs.map +1 -1
- package/dist/mcp-stdio/index.js.map +1 -1
- package/dist/mcp-stdio/index.mjs.map +1 -1
- package/dist/test/index.d.mts +47 -47
- package/dist/test/index.d.ts +47 -47
- package/dist/test/index.js +21 -21
- package/dist/test/index.js.map +1 -1
- package/dist/test/index.mjs +17 -17
- package/dist/test/index.mjs.map +1 -1
- package/package.json +7 -5
package/dist/index.mjs
CHANGED
|
@@ -12,9 +12,10 @@ import {
|
|
|
12
12
|
dynamicTool as dynamicTool2,
|
|
13
13
|
generateId as generateId2,
|
|
14
14
|
jsonSchema as jsonSchema2,
|
|
15
|
+
parseJsonEventStream as parseJsonEventStream3,
|
|
15
16
|
tool as tool2,
|
|
16
17
|
zodSchema
|
|
17
|
-
} from "@
|
|
18
|
+
} from "@zenning/provider-utils";
|
|
18
19
|
|
|
19
20
|
// src/generate-text/generate-text.ts
|
|
20
21
|
import {
|
|
@@ -22,7 +23,7 @@ import {
|
|
|
22
23
|
executeTool,
|
|
23
24
|
getErrorMessage as getErrorMessage5,
|
|
24
25
|
withUserAgentSuffix as withUserAgentSuffix2
|
|
25
|
-
} from "@
|
|
26
|
+
} from "@zenning/provider-utils";
|
|
26
27
|
|
|
27
28
|
// src/error/no-output-specified-error.ts
|
|
28
29
|
import { AISDKError } from "@zenning/provider";
|
|
@@ -97,7 +98,7 @@ import { gateway } from "@ai-sdk/gateway";
|
|
|
97
98
|
|
|
98
99
|
// src/error/index.ts
|
|
99
100
|
import {
|
|
100
|
-
AISDKError as
|
|
101
|
+
AISDKError as AISDKError18,
|
|
101
102
|
APICallError,
|
|
102
103
|
EmptyResponseBodyError,
|
|
103
104
|
InvalidPromptError,
|
|
@@ -274,13 +275,25 @@ var NoOutputGeneratedError = class extends AISDKError8 {
|
|
|
274
275
|
};
|
|
275
276
|
_a8 = symbol8;
|
|
276
277
|
|
|
277
|
-
// src/error/no-
|
|
278
|
+
// src/error/no-speech-generated-error.ts
|
|
278
279
|
import { AISDKError as AISDKError9 } from "@zenning/provider";
|
|
280
|
+
var NoSpeechGeneratedError = class extends AISDKError9 {
|
|
281
|
+
constructor(options) {
|
|
282
|
+
super({
|
|
283
|
+
name: "AI_NoSpeechGeneratedError",
|
|
284
|
+
message: "No speech audio generated."
|
|
285
|
+
});
|
|
286
|
+
this.responses = options.responses;
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
// src/error/no-such-tool-error.ts
|
|
291
|
+
import { AISDKError as AISDKError10 } from "@zenning/provider";
|
|
279
292
|
var name9 = "AI_NoSuchToolError";
|
|
280
293
|
var marker9 = `vercel.ai.error.${name9}`;
|
|
281
294
|
var symbol9 = Symbol.for(marker9);
|
|
282
295
|
var _a9;
|
|
283
|
-
var NoSuchToolError = class extends
|
|
296
|
+
var NoSuchToolError = class extends AISDKError10 {
|
|
284
297
|
constructor({
|
|
285
298
|
toolName,
|
|
286
299
|
availableTools = void 0,
|
|
@@ -292,18 +305,18 @@ var NoSuchToolError = class extends AISDKError9 {
|
|
|
292
305
|
this.availableTools = availableTools;
|
|
293
306
|
}
|
|
294
307
|
static isInstance(error) {
|
|
295
|
-
return
|
|
308
|
+
return AISDKError10.hasMarker(error, marker9);
|
|
296
309
|
}
|
|
297
310
|
};
|
|
298
311
|
_a9 = symbol9;
|
|
299
312
|
|
|
300
313
|
// src/error/tool-call-repair-error.ts
|
|
301
|
-
import { AISDKError as
|
|
314
|
+
import { AISDKError as AISDKError11, getErrorMessage as getErrorMessage2 } from "@zenning/provider";
|
|
302
315
|
var name10 = "AI_ToolCallRepairError";
|
|
303
316
|
var marker10 = `vercel.ai.error.${name10}`;
|
|
304
317
|
var symbol10 = Symbol.for(marker10);
|
|
305
318
|
var _a10;
|
|
306
|
-
var ToolCallRepairError = class extends
|
|
319
|
+
var ToolCallRepairError = class extends AISDKError11 {
|
|
307
320
|
constructor({
|
|
308
321
|
cause,
|
|
309
322
|
originalError,
|
|
@@ -314,14 +327,14 @@ var ToolCallRepairError = class extends AISDKError10 {
|
|
|
314
327
|
this.originalError = originalError;
|
|
315
328
|
}
|
|
316
329
|
static isInstance(error) {
|
|
317
|
-
return
|
|
330
|
+
return AISDKError11.hasMarker(error, marker10);
|
|
318
331
|
}
|
|
319
332
|
};
|
|
320
333
|
_a10 = symbol10;
|
|
321
334
|
|
|
322
335
|
// src/error/unsupported-model-version-error.ts
|
|
323
|
-
import { AISDKError as
|
|
324
|
-
var UnsupportedModelVersionError = class extends
|
|
336
|
+
import { AISDKError as AISDKError12 } from "@zenning/provider";
|
|
337
|
+
var UnsupportedModelVersionError = class extends AISDKError12 {
|
|
325
338
|
constructor(options) {
|
|
326
339
|
super({
|
|
327
340
|
name: "AI_UnsupportedModelVersionError",
|
|
@@ -334,12 +347,12 @@ var UnsupportedModelVersionError = class extends AISDKError11 {
|
|
|
334
347
|
};
|
|
335
348
|
|
|
336
349
|
// src/prompt/invalid-data-content-error.ts
|
|
337
|
-
import { AISDKError as
|
|
350
|
+
import { AISDKError as AISDKError13 } from "@zenning/provider";
|
|
338
351
|
var name11 = "AI_InvalidDataContentError";
|
|
339
352
|
var marker11 = `vercel.ai.error.${name11}`;
|
|
340
353
|
var symbol11 = Symbol.for(marker11);
|
|
341
354
|
var _a11;
|
|
342
|
-
var InvalidDataContentError = class extends
|
|
355
|
+
var InvalidDataContentError = class extends AISDKError13 {
|
|
343
356
|
constructor({
|
|
344
357
|
content,
|
|
345
358
|
cause,
|
|
@@ -350,18 +363,18 @@ var InvalidDataContentError = class extends AISDKError12 {
|
|
|
350
363
|
this.content = content;
|
|
351
364
|
}
|
|
352
365
|
static isInstance(error) {
|
|
353
|
-
return
|
|
366
|
+
return AISDKError13.hasMarker(error, marker11);
|
|
354
367
|
}
|
|
355
368
|
};
|
|
356
369
|
_a11 = symbol11;
|
|
357
370
|
|
|
358
371
|
// src/prompt/invalid-message-role-error.ts
|
|
359
|
-
import { AISDKError as
|
|
372
|
+
import { AISDKError as AISDKError14 } from "@zenning/provider";
|
|
360
373
|
var name12 = "AI_InvalidMessageRoleError";
|
|
361
374
|
var marker12 = `vercel.ai.error.${name12}`;
|
|
362
375
|
var symbol12 = Symbol.for(marker12);
|
|
363
376
|
var _a12;
|
|
364
|
-
var InvalidMessageRoleError = class extends
|
|
377
|
+
var InvalidMessageRoleError = class extends AISDKError14 {
|
|
365
378
|
constructor({
|
|
366
379
|
role,
|
|
367
380
|
message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
|
|
@@ -371,18 +384,18 @@ var InvalidMessageRoleError = class extends AISDKError13 {
|
|
|
371
384
|
this.role = role;
|
|
372
385
|
}
|
|
373
386
|
static isInstance(error) {
|
|
374
|
-
return
|
|
387
|
+
return AISDKError14.hasMarker(error, marker12);
|
|
375
388
|
}
|
|
376
389
|
};
|
|
377
390
|
_a12 = symbol12;
|
|
378
391
|
|
|
379
392
|
// src/prompt/message-conversion-error.ts
|
|
380
|
-
import { AISDKError as
|
|
393
|
+
import { AISDKError as AISDKError15 } from "@zenning/provider";
|
|
381
394
|
var name13 = "AI_MessageConversionError";
|
|
382
395
|
var marker13 = `vercel.ai.error.${name13}`;
|
|
383
396
|
var symbol13 = Symbol.for(marker13);
|
|
384
397
|
var _a13;
|
|
385
|
-
var MessageConversionError = class extends
|
|
398
|
+
var MessageConversionError = class extends AISDKError15 {
|
|
386
399
|
constructor({
|
|
387
400
|
originalMessage,
|
|
388
401
|
message
|
|
@@ -392,18 +405,18 @@ var MessageConversionError = class extends AISDKError14 {
|
|
|
392
405
|
this.originalMessage = originalMessage;
|
|
393
406
|
}
|
|
394
407
|
static isInstance(error) {
|
|
395
|
-
return
|
|
408
|
+
return AISDKError15.hasMarker(error, marker13);
|
|
396
409
|
}
|
|
397
410
|
};
|
|
398
411
|
_a13 = symbol13;
|
|
399
412
|
|
|
400
413
|
// src/util/download/download-error.ts
|
|
401
|
-
import { AISDKError as
|
|
414
|
+
import { AISDKError as AISDKError16 } from "@zenning/provider";
|
|
402
415
|
var name14 = "AI_DownloadError";
|
|
403
416
|
var marker14 = `vercel.ai.error.${name14}`;
|
|
404
417
|
var symbol14 = Symbol.for(marker14);
|
|
405
418
|
var _a14;
|
|
406
|
-
var DownloadError = class extends
|
|
419
|
+
var DownloadError = class extends AISDKError16 {
|
|
407
420
|
constructor({
|
|
408
421
|
url,
|
|
409
422
|
statusCode,
|
|
@@ -418,18 +431,18 @@ var DownloadError = class extends AISDKError15 {
|
|
|
418
431
|
this.statusText = statusText;
|
|
419
432
|
}
|
|
420
433
|
static isInstance(error) {
|
|
421
|
-
return
|
|
434
|
+
return AISDKError16.hasMarker(error, marker14);
|
|
422
435
|
}
|
|
423
436
|
};
|
|
424
437
|
_a14 = symbol14;
|
|
425
438
|
|
|
426
439
|
// src/util/retry-error.ts
|
|
427
|
-
import { AISDKError as
|
|
440
|
+
import { AISDKError as AISDKError17 } from "@zenning/provider";
|
|
428
441
|
var name15 = "AI_RetryError";
|
|
429
442
|
var marker15 = `vercel.ai.error.${name15}`;
|
|
430
443
|
var symbol15 = Symbol.for(marker15);
|
|
431
444
|
var _a15;
|
|
432
|
-
var RetryError = class extends
|
|
445
|
+
var RetryError = class extends AISDKError17 {
|
|
433
446
|
constructor({
|
|
434
447
|
message,
|
|
435
448
|
reason,
|
|
@@ -442,34 +455,54 @@ var RetryError = class extends AISDKError16 {
|
|
|
442
455
|
this.lastError = errors[errors.length - 1];
|
|
443
456
|
}
|
|
444
457
|
static isInstance(error) {
|
|
445
|
-
return
|
|
458
|
+
return AISDKError17.hasMarker(error, marker15);
|
|
446
459
|
}
|
|
447
460
|
};
|
|
448
461
|
_a15 = symbol15;
|
|
449
462
|
|
|
450
463
|
// src/model/resolve-model.ts
|
|
464
|
+
function transformToV3LanguageModel(model) {
|
|
465
|
+
return {
|
|
466
|
+
...model,
|
|
467
|
+
specificationVersion: "v3"
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
function transformToV3EmbeddingModel(model) {
|
|
471
|
+
return {
|
|
472
|
+
...model,
|
|
473
|
+
specificationVersion: "v3"
|
|
474
|
+
};
|
|
475
|
+
}
|
|
451
476
|
function resolveLanguageModel(model) {
|
|
452
477
|
if (typeof model !== "string") {
|
|
453
|
-
if (model.specificationVersion !== "v2") {
|
|
478
|
+
if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
|
|
479
|
+
const unsupportedModel = model;
|
|
454
480
|
throw new UnsupportedModelVersionError({
|
|
455
|
-
version:
|
|
456
|
-
provider:
|
|
457
|
-
modelId:
|
|
481
|
+
version: unsupportedModel.specificationVersion,
|
|
482
|
+
provider: unsupportedModel.provider,
|
|
483
|
+
modelId: unsupportedModel.modelId
|
|
458
484
|
});
|
|
459
485
|
}
|
|
486
|
+
if (model.specificationVersion === "v2") {
|
|
487
|
+
return transformToV3LanguageModel(model);
|
|
488
|
+
}
|
|
460
489
|
return model;
|
|
461
490
|
}
|
|
462
491
|
return getGlobalProvider().languageModel(model);
|
|
463
492
|
}
|
|
464
493
|
function resolveEmbeddingModel(model) {
|
|
465
494
|
if (typeof model !== "string") {
|
|
466
|
-
if (model.specificationVersion !== "v2") {
|
|
495
|
+
if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
|
|
496
|
+
const unsupportedModel = model;
|
|
467
497
|
throw new UnsupportedModelVersionError({
|
|
468
|
-
version:
|
|
469
|
-
provider:
|
|
470
|
-
modelId:
|
|
498
|
+
version: unsupportedModel.specificationVersion,
|
|
499
|
+
provider: unsupportedModel.provider,
|
|
500
|
+
modelId: unsupportedModel.modelId
|
|
471
501
|
});
|
|
472
502
|
}
|
|
503
|
+
if (model.specificationVersion === "v2") {
|
|
504
|
+
return transformToV3EmbeddingModel(model);
|
|
505
|
+
}
|
|
473
506
|
return model;
|
|
474
507
|
}
|
|
475
508
|
return getGlobalProvider().textEmbeddingModel(
|
|
@@ -484,10 +517,10 @@ function getGlobalProvider() {
|
|
|
484
517
|
// src/prompt/convert-to-language-model-prompt.ts
|
|
485
518
|
import {
|
|
486
519
|
isUrlSupported
|
|
487
|
-
} from "@
|
|
520
|
+
} from "@zenning/provider-utils";
|
|
488
521
|
|
|
489
522
|
// src/util/detect-media-type.ts
|
|
490
|
-
import { convertBase64ToUint8Array } from "@
|
|
523
|
+
import { convertBase64ToUint8Array } from "@zenning/provider-utils";
|
|
491
524
|
var imageMediaTypeSignatures = [
|
|
492
525
|
{
|
|
493
526
|
mediaType: "image/gif",
|
|
@@ -675,10 +708,10 @@ function detectMediaType({
|
|
|
675
708
|
import {
|
|
676
709
|
withUserAgentSuffix,
|
|
677
710
|
getRuntimeEnvironmentUserAgent
|
|
678
|
-
} from "@
|
|
711
|
+
} from "@zenning/provider-utils";
|
|
679
712
|
|
|
680
713
|
// src/version.ts
|
|
681
|
-
var VERSION = true ? "5.
|
|
714
|
+
var VERSION = true ? "5.2.0" : "0.0.0-test";
|
|
682
715
|
|
|
683
716
|
// src/util/download/download.ts
|
|
684
717
|
var download = async ({ url }) => {
|
|
@@ -719,11 +752,11 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
|
|
|
719
752
|
);
|
|
720
753
|
|
|
721
754
|
// src/prompt/data-content.ts
|
|
722
|
-
import { AISDKError as
|
|
755
|
+
import { AISDKError as AISDKError19 } from "@zenning/provider";
|
|
723
756
|
import {
|
|
724
757
|
convertBase64ToUint8Array as convertBase64ToUint8Array2,
|
|
725
758
|
convertUint8ArrayToBase64
|
|
726
|
-
} from "@
|
|
759
|
+
} from "@zenning/provider-utils";
|
|
727
760
|
import { z } from "zod/v4";
|
|
728
761
|
|
|
729
762
|
// src/prompt/split-data-url.ts
|
|
@@ -756,7 +789,7 @@ var dataContentSchema = z.union([
|
|
|
756
789
|
{ message: "Must be a Buffer" }
|
|
757
790
|
)
|
|
758
791
|
]);
|
|
759
|
-
function
|
|
792
|
+
function convertToLanguageModelV3DataContent(content) {
|
|
760
793
|
if (content instanceof Uint8Array) {
|
|
761
794
|
return { data: content, mediaType: void 0 };
|
|
762
795
|
}
|
|
@@ -774,7 +807,7 @@ function convertToLanguageModelV2DataContent(content) {
|
|
|
774
807
|
content.toString()
|
|
775
808
|
);
|
|
776
809
|
if (dataUrlMediaType == null || base64Content == null) {
|
|
777
|
-
throw new
|
|
810
|
+
throw new AISDKError19({
|
|
778
811
|
name: "InvalidDataContentError",
|
|
779
812
|
message: `Invalid data URL format in content ${content.toString()}`
|
|
780
813
|
});
|
|
@@ -875,7 +908,7 @@ function convertToLanguageModelMessage({
|
|
|
875
908
|
const providerOptions = part.providerOptions;
|
|
876
909
|
switch (part.type) {
|
|
877
910
|
case "file": {
|
|
878
|
-
const { data, mediaType } =
|
|
911
|
+
const { data, mediaType } = convertToLanguageModelV3DataContent(
|
|
879
912
|
part.data
|
|
880
913
|
);
|
|
881
914
|
return {
|
|
@@ -971,12 +1004,12 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
971
1004
|
}));
|
|
972
1005
|
const downloadedFiles = await download2(plannedDownloads);
|
|
973
1006
|
return Object.fromEntries(
|
|
974
|
-
downloadedFiles.
|
|
975
|
-
(
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
1007
|
+
downloadedFiles.map(
|
|
1008
|
+
(file, index) => file == null ? null : [
|
|
1009
|
+
plannedDownloads[index].url.toString(),
|
|
1010
|
+
{ data: file.data, mediaType: file.mediaType }
|
|
1011
|
+
]
|
|
1012
|
+
).filter((file) => file != null)
|
|
980
1013
|
);
|
|
981
1014
|
}
|
|
982
1015
|
function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
@@ -1000,7 +1033,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
|
1000
1033
|
default:
|
|
1001
1034
|
throw new Error(`Unsupported part type: ${type}`);
|
|
1002
1035
|
}
|
|
1003
|
-
const { data: convertedData, mediaType: convertedMediaType } =
|
|
1036
|
+
const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV3DataContent(originalData);
|
|
1004
1037
|
let mediaType = convertedMediaType != null ? convertedMediaType : part.mediaType;
|
|
1005
1038
|
let data = convertedData;
|
|
1006
1039
|
if (data instanceof URL) {
|
|
@@ -1133,7 +1166,7 @@ function prepareCallSettings({
|
|
|
1133
1166
|
}
|
|
1134
1167
|
|
|
1135
1168
|
// src/prompt/prepare-tools-and-tool-choice.ts
|
|
1136
|
-
import { asSchema } from "@
|
|
1169
|
+
import { asSchema } from "@zenning/provider-utils";
|
|
1137
1170
|
|
|
1138
1171
|
// src/util/is-non-empty-object.ts
|
|
1139
1172
|
function isNonEmptyObject(object2) {
|
|
@@ -1188,7 +1221,7 @@ function prepareToolsAndToolChoice({
|
|
|
1188
1221
|
|
|
1189
1222
|
// src/prompt/standardize-prompt.ts
|
|
1190
1223
|
import { InvalidPromptError as InvalidPromptError2 } from "@zenning/provider";
|
|
1191
|
-
import { safeValidateTypes } from "@
|
|
1224
|
+
import { safeValidateTypes } from "@zenning/provider-utils";
|
|
1192
1225
|
import { z as z6 } from "zod/v4";
|
|
1193
1226
|
|
|
1194
1227
|
// src/prompt/message.ts
|
|
@@ -1401,12 +1434,12 @@ import {
|
|
|
1401
1434
|
GatewayAuthenticationError,
|
|
1402
1435
|
GatewayModelNotFoundError
|
|
1403
1436
|
} from "@ai-sdk/gateway";
|
|
1404
|
-
import { AISDKError as
|
|
1437
|
+
import { AISDKError as AISDKError20 } from "@zenning/provider";
|
|
1405
1438
|
function wrapGatewayError(error) {
|
|
1406
1439
|
if (GatewayAuthenticationError.isInstance(error) || GatewayModelNotFoundError.isInstance(error)) {
|
|
1407
|
-
return new
|
|
1440
|
+
return new AISDKError20({
|
|
1408
1441
|
name: "GatewayError",
|
|
1409
|
-
message: "Vercel AI Gateway access failed. If you want to use AI SDK providers directly, use the providers, e.g. @
|
|
1442
|
+
message: "Vercel AI Gateway access failed. If you want to use AI SDK providers directly, use the providers, e.g. @zenning/openai, or register a different global default provider.",
|
|
1410
1443
|
cause: error
|
|
1411
1444
|
});
|
|
1412
1445
|
}
|
|
@@ -1651,7 +1684,7 @@ function asArray(value) {
|
|
|
1651
1684
|
|
|
1652
1685
|
// src/util/retry-with-exponential-backoff.ts
|
|
1653
1686
|
import { APICallError as APICallError2 } from "@zenning/provider";
|
|
1654
|
-
import { delay, getErrorMessage as getErrorMessage3, isAbortError } from "@
|
|
1687
|
+
import { delay, getErrorMessage as getErrorMessage3, isAbortError } from "@zenning/provider-utils";
|
|
1655
1688
|
function getRetryDelayInMs({
|
|
1656
1689
|
error,
|
|
1657
1690
|
exponentialBackoffDelay
|
|
@@ -1793,7 +1826,7 @@ function extractTextContent(content) {
|
|
|
1793
1826
|
import {
|
|
1794
1827
|
convertBase64ToUint8Array as convertBase64ToUint8Array3,
|
|
1795
1828
|
convertUint8ArrayToBase64 as convertUint8ArrayToBase642
|
|
1796
|
-
} from "@
|
|
1829
|
+
} from "@zenning/provider-utils";
|
|
1797
1830
|
var DefaultGeneratedFile = class {
|
|
1798
1831
|
constructor({
|
|
1799
1832
|
data,
|
|
@@ -1831,7 +1864,7 @@ import {
|
|
|
1831
1864
|
asSchema as asSchema2,
|
|
1832
1865
|
safeParseJSON,
|
|
1833
1866
|
safeValidateTypes as safeValidateTypes2
|
|
1834
|
-
} from "@
|
|
1867
|
+
} from "@zenning/provider-utils";
|
|
1835
1868
|
async function parseToolCall({
|
|
1836
1869
|
toolCall,
|
|
1837
1870
|
tools,
|
|
@@ -2712,7 +2745,7 @@ import {
|
|
|
2712
2745
|
import {
|
|
2713
2746
|
createIdGenerator as createIdGenerator2,
|
|
2714
2747
|
isAbortError as isAbortError2
|
|
2715
|
-
} from "@
|
|
2748
|
+
} from "@zenning/provider-utils";
|
|
2716
2749
|
|
|
2717
2750
|
// src/util/prepare-headers.ts
|
|
2718
2751
|
function prepareHeaders(headers, defaultHeaders) {
|
|
@@ -2851,7 +2884,7 @@ function getResponseUIMessageId({
|
|
|
2851
2884
|
// src/ui/process-ui-message-stream.ts
|
|
2852
2885
|
import {
|
|
2853
2886
|
validateTypes
|
|
2854
|
-
} from "@
|
|
2887
|
+
} from "@zenning/provider-utils";
|
|
2855
2888
|
|
|
2856
2889
|
// src/ui-message-stream/ui-message-chunks.ts
|
|
2857
2890
|
import { z as z7 } from "zod/v4";
|
|
@@ -2922,11 +2955,6 @@ var uiMessageChunkSchema = z7.union([
|
|
|
2922
2955
|
providerExecuted: z7.boolean().optional(),
|
|
2923
2956
|
dynamic: z7.boolean().optional()
|
|
2924
2957
|
}),
|
|
2925
|
-
z7.strictObject({
|
|
2926
|
-
type: z7.literal("reasoning"),
|
|
2927
|
-
text: z7.string(),
|
|
2928
|
-
providerMetadata: providerMetadataSchema.optional()
|
|
2929
|
-
}),
|
|
2930
2958
|
z7.strictObject({
|
|
2931
2959
|
type: z7.literal("reasoning-start"),
|
|
2932
2960
|
id: z7.string(),
|
|
@@ -2943,9 +2971,6 @@ var uiMessageChunkSchema = z7.union([
|
|
|
2943
2971
|
id: z7.string(),
|
|
2944
2972
|
providerMetadata: providerMetadataSchema.optional()
|
|
2945
2973
|
}),
|
|
2946
|
-
z7.strictObject({
|
|
2947
|
-
type: z7.literal("reasoning-part-finish")
|
|
2948
|
-
}),
|
|
2949
2974
|
z7.strictObject({
|
|
2950
2975
|
type: z7.literal("source-url"),
|
|
2951
2976
|
sourceId: z7.string(),
|
|
@@ -2971,7 +2996,10 @@ var uiMessageChunkSchema = z7.union([
|
|
|
2971
2996
|
providerMetadata: providerMetadataSchema.optional()
|
|
2972
2997
|
}),
|
|
2973
2998
|
z7.strictObject({
|
|
2974
|
-
type: z7.
|
|
2999
|
+
type: z7.custom(
|
|
3000
|
+
(value) => typeof value === "string" && value.startsWith("data-"),
|
|
3001
|
+
{ message: 'Type must start with "data-"' }
|
|
3002
|
+
),
|
|
2975
3003
|
id: z7.string().optional(),
|
|
2976
3004
|
data: z7.unknown(),
|
|
2977
3005
|
transient: z7.boolean().optional()
|
|
@@ -3037,7 +3065,7 @@ function mergeObjects(base, overrides) {
|
|
|
3037
3065
|
}
|
|
3038
3066
|
|
|
3039
3067
|
// src/util/parse-partial-json.ts
|
|
3040
|
-
import { safeParseJSON as safeParseJSON2 } from "@
|
|
3068
|
+
import { safeParseJSON as safeParseJSON2 } from "@zenning/provider-utils";
|
|
3041
3069
|
|
|
3042
3070
|
// src/util/fix-json.ts
|
|
3043
3071
|
function fixJson(input) {
|
|
@@ -4202,7 +4230,7 @@ import {
|
|
|
4202
4230
|
executeTool as executeTool2,
|
|
4203
4231
|
generateId,
|
|
4204
4232
|
getErrorMessage as getErrorMessage6
|
|
4205
|
-
} from "@
|
|
4233
|
+
} from "@zenning/provider-utils";
|
|
4206
4234
|
function runToolsTransformation({
|
|
4207
4235
|
tools,
|
|
4208
4236
|
generatorStream,
|
|
@@ -4634,7 +4662,7 @@ var DefaultStreamTextResult = class {
|
|
|
4634
4662
|
let activeReasoningContent = {};
|
|
4635
4663
|
const eventProcessor = new TransformStream({
|
|
4636
4664
|
async transform(chunk, controller) {
|
|
4637
|
-
var _a17, _b, _c;
|
|
4665
|
+
var _a17, _b, _c, _d;
|
|
4638
4666
|
controller.enqueue(chunk);
|
|
4639
4667
|
const { part } = chunk;
|
|
4640
4668
|
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") {
|
|
@@ -4667,6 +4695,18 @@ var DefaultStreamTextResult = class {
|
|
|
4667
4695
|
activeText.providerMetadata = (_a17 = part.providerMetadata) != null ? _a17 : activeText.providerMetadata;
|
|
4668
4696
|
}
|
|
4669
4697
|
if (part.type === "text-end") {
|
|
4698
|
+
const activeText = activeTextContent[part.id];
|
|
4699
|
+
if (activeText == null) {
|
|
4700
|
+
controller.enqueue({
|
|
4701
|
+
part: {
|
|
4702
|
+
type: "error",
|
|
4703
|
+
error: `text part ${part.id} not found`
|
|
4704
|
+
},
|
|
4705
|
+
partialOutput: void 0
|
|
4706
|
+
});
|
|
4707
|
+
return;
|
|
4708
|
+
}
|
|
4709
|
+
activeText.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeText.providerMetadata;
|
|
4670
4710
|
delete activeTextContent[part.id];
|
|
4671
4711
|
}
|
|
4672
4712
|
if (part.type === "reasoning-start") {
|
|
@@ -4690,7 +4730,7 @@ var DefaultStreamTextResult = class {
|
|
|
4690
4730
|
return;
|
|
4691
4731
|
}
|
|
4692
4732
|
activeReasoning.text += part.text;
|
|
4693
|
-
activeReasoning.providerMetadata = (
|
|
4733
|
+
activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;
|
|
4694
4734
|
}
|
|
4695
4735
|
if (part.type === "reasoning-end") {
|
|
4696
4736
|
const activeReasoning = activeReasoningContent[part.id];
|
|
@@ -4704,7 +4744,7 @@ var DefaultStreamTextResult = class {
|
|
|
4704
4744
|
});
|
|
4705
4745
|
return;
|
|
4706
4746
|
}
|
|
4707
|
-
activeReasoning.providerMetadata = (
|
|
4747
|
+
activeReasoning.providerMetadata = (_d = part.providerMetadata) != null ? _d : activeReasoning.providerMetadata;
|
|
4708
4748
|
delete activeReasoningContent[part.id];
|
|
4709
4749
|
}
|
|
4710
4750
|
if (part.type === "file") {
|
|
@@ -5549,6 +5589,9 @@ var DefaultStreamTextResult = class {
|
|
|
5549
5589
|
mediaType: part.mediaType,
|
|
5550
5590
|
title: part.title,
|
|
5551
5591
|
filename: part.filename,
|
|
5592
|
+
fileId: part.fileId,
|
|
5593
|
+
startIndex: part.startIndex,
|
|
5594
|
+
endIndex: part.endIndex,
|
|
5552
5595
|
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
|
5553
5596
|
});
|
|
5554
5597
|
}
|
|
@@ -5956,14 +5999,33 @@ var Agent = class {
|
|
|
5956
5999
|
constructor(settings) {
|
|
5957
6000
|
this.settings = settings;
|
|
5958
6001
|
}
|
|
6002
|
+
/**
|
|
6003
|
+
* The name of the agent.
|
|
6004
|
+
*/
|
|
6005
|
+
get name() {
|
|
6006
|
+
return this.settings.name;
|
|
6007
|
+
}
|
|
6008
|
+
/**
|
|
6009
|
+
* The tools that the agent can use.
|
|
6010
|
+
*/
|
|
5959
6011
|
get tools() {
|
|
5960
6012
|
return this.settings.tools;
|
|
5961
6013
|
}
|
|
5962
6014
|
async generate(options) {
|
|
5963
|
-
|
|
6015
|
+
var _a17;
|
|
6016
|
+
return generateText({
|
|
6017
|
+
...this.settings,
|
|
6018
|
+
stopWhen: (_a17 = this.settings.stopWhen) != null ? _a17 : stepCountIs(20),
|
|
6019
|
+
...options
|
|
6020
|
+
});
|
|
5964
6021
|
}
|
|
5965
6022
|
stream(options) {
|
|
5966
|
-
|
|
6023
|
+
var _a17;
|
|
6024
|
+
return streamText({
|
|
6025
|
+
...this.settings,
|
|
6026
|
+
stopWhen: (_a17 = this.settings.stopWhen) != null ? _a17 : stepCountIs(20),
|
|
6027
|
+
...options
|
|
6028
|
+
});
|
|
5967
6029
|
}
|
|
5968
6030
|
/**
|
|
5969
6031
|
* Creates a response object that streams UI messages to the client.
|
|
@@ -5976,7 +6038,7 @@ var Agent = class {
|
|
|
5976
6038
|
};
|
|
5977
6039
|
|
|
5978
6040
|
// src/embed/embed.ts
|
|
5979
|
-
import { withUserAgentSuffix as withUserAgentSuffix3 } from "@
|
|
6041
|
+
import { withUserAgentSuffix as withUserAgentSuffix3 } from "@zenning/provider-utils";
|
|
5980
6042
|
async function embed({
|
|
5981
6043
|
model: modelArg,
|
|
5982
6044
|
value,
|
|
@@ -6095,7 +6157,7 @@ var DefaultEmbedResult = class {
|
|
|
6095
6157
|
};
|
|
6096
6158
|
|
|
6097
6159
|
// src/embed/embed-many.ts
|
|
6098
|
-
import { withUserAgentSuffix as withUserAgentSuffix4 } from "@
|
|
6160
|
+
import { withUserAgentSuffix as withUserAgentSuffix4 } from "@zenning/provider-utils";
|
|
6099
6161
|
|
|
6100
6162
|
// src/util/split-array.ts
|
|
6101
6163
|
function splitArray(array, chunkSize) {
|
|
@@ -6344,7 +6406,7 @@ var DefaultEmbedManyResult = class {
|
|
|
6344
6406
|
};
|
|
6345
6407
|
|
|
6346
6408
|
// src/generate-image/generate-image.ts
|
|
6347
|
-
import { withUserAgentSuffix as withUserAgentSuffix5 } from "@
|
|
6409
|
+
import { withUserAgentSuffix as withUserAgentSuffix5 } from "@zenning/provider-utils";
|
|
6348
6410
|
async function generateImage({
|
|
6349
6411
|
model,
|
|
6350
6412
|
prompt,
|
|
@@ -6359,7 +6421,7 @@ async function generateImage({
|
|
|
6359
6421
|
headers
|
|
6360
6422
|
}) {
|
|
6361
6423
|
var _a17, _b;
|
|
6362
|
-
if (model.specificationVersion !== "
|
|
6424
|
+
if (model.specificationVersion !== "v3") {
|
|
6363
6425
|
throw new UnsupportedModelVersionError({
|
|
6364
6426
|
version: model.specificationVersion,
|
|
6365
6427
|
provider: model.provider,
|
|
@@ -6465,7 +6527,7 @@ async function invokeModelMaxImagesPerCall(model) {
|
|
|
6465
6527
|
import {
|
|
6466
6528
|
createIdGenerator as createIdGenerator3,
|
|
6467
6529
|
withUserAgentSuffix as withUserAgentSuffix6
|
|
6468
|
-
} from "@
|
|
6530
|
+
} from "@zenning/provider-utils";
|
|
6469
6531
|
|
|
6470
6532
|
// src/generate-text/extract-reasoning-content.ts
|
|
6471
6533
|
function extractReasoningContent(content) {
|
|
@@ -6485,7 +6547,7 @@ import {
|
|
|
6485
6547
|
import {
|
|
6486
6548
|
asSchema as asSchema3,
|
|
6487
6549
|
safeValidateTypes as safeValidateTypes3
|
|
6488
|
-
} from "@
|
|
6550
|
+
} from "@zenning/provider-utils";
|
|
6489
6551
|
var noSchemaOutputStrategy = {
|
|
6490
6552
|
type: "no-schema",
|
|
6491
6553
|
jsonSchema: void 0,
|
|
@@ -6743,7 +6805,7 @@ function getOutputStrategy({
|
|
|
6743
6805
|
|
|
6744
6806
|
// src/generate-object/parse-and-validate-object-result.ts
|
|
6745
6807
|
import { JSONParseError as JSONParseError2, TypeValidationError as TypeValidationError3 } from "@zenning/provider";
|
|
6746
|
-
import { safeParseJSON as safeParseJSON3 } from "@
|
|
6808
|
+
import { safeParseJSON as safeParseJSON3 } from "@zenning/provider-utils";
|
|
6747
6809
|
async function parseAndValidateObjectResult(result, outputStrategy, context) {
|
|
6748
6810
|
const parseResult = await safeParseJSON3({ text: result });
|
|
6749
6811
|
if (!parseResult.success) {
|
|
@@ -7183,7 +7245,7 @@ var DefaultGenerateObjectResult = class {
|
|
|
7183
7245
|
// src/generate-object/stream-object.ts
|
|
7184
7246
|
import {
|
|
7185
7247
|
createIdGenerator as createIdGenerator4
|
|
7186
|
-
} from "@
|
|
7248
|
+
} from "@zenning/provider-utils";
|
|
7187
7249
|
|
|
7188
7250
|
// src/util/cosine-similarity.ts
|
|
7189
7251
|
function cosineSimilarity(vector1, vector2) {
|
|
@@ -7293,7 +7355,7 @@ var SerialJobExecutor = class {
|
|
|
7293
7355
|
};
|
|
7294
7356
|
|
|
7295
7357
|
// src/util/simulate-readable-stream.ts
|
|
7296
|
-
import { delay as delayFunction } from "@
|
|
7358
|
+
import { delay as delayFunction } from "@zenning/provider-utils";
|
|
7297
7359
|
function simulateReadableStream({
|
|
7298
7360
|
chunks,
|
|
7299
7361
|
initialDelayInMs = 0,
|
|
@@ -7837,19 +7899,7 @@ var DefaultStreamObjectResult = class {
|
|
|
7837
7899
|
};
|
|
7838
7900
|
|
|
7839
7901
|
// src/generate-speech/generate-speech.ts
|
|
7840
|
-
import { withUserAgentSuffix as withUserAgentSuffix7 } from "@
|
|
7841
|
-
|
|
7842
|
-
// src/error/no-speech-generated-error.ts
|
|
7843
|
-
import { AISDKError as AISDKError20 } from "@zenning/provider";
|
|
7844
|
-
var NoSpeechGeneratedError = class extends AISDKError20 {
|
|
7845
|
-
constructor(options) {
|
|
7846
|
-
super({
|
|
7847
|
-
name: "AI_NoSpeechGeneratedError",
|
|
7848
|
-
message: "No speech audio generated."
|
|
7849
|
-
});
|
|
7850
|
-
this.responses = options.responses;
|
|
7851
|
-
}
|
|
7852
|
-
};
|
|
7902
|
+
import { withUserAgentSuffix as withUserAgentSuffix7 } from "@zenning/provider-utils";
|
|
7853
7903
|
|
|
7854
7904
|
// src/generate-speech/generated-audio-file.ts
|
|
7855
7905
|
var DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {
|
|
@@ -7956,7 +8006,7 @@ import {
|
|
|
7956
8006
|
asSchema as asSchema4,
|
|
7957
8007
|
safeParseJSON as safeParseJSON4,
|
|
7958
8008
|
safeValidateTypes as safeValidateTypes4
|
|
7959
|
-
} from "@
|
|
8009
|
+
} from "@zenning/provider-utils";
|
|
7960
8010
|
var text = () => ({
|
|
7961
8011
|
type: "text",
|
|
7962
8012
|
responseFormat: { type: "text" },
|
|
@@ -8027,7 +8077,7 @@ var object = ({
|
|
|
8027
8077
|
};
|
|
8028
8078
|
|
|
8029
8079
|
// src/generate-text/smooth-stream.ts
|
|
8030
|
-
import { delay as originalDelay } from "@
|
|
8080
|
+
import { delay as originalDelay } from "@zenning/provider-utils";
|
|
8031
8081
|
import { InvalidArgumentError as InvalidArgumentError2 } from "@zenning/provider";
|
|
8032
8082
|
var CHUNKING_REGEXPS = {
|
|
8033
8083
|
word: /\S+\s+/m,
|
|
@@ -8106,7 +8156,7 @@ function defaultSettingsMiddleware({
|
|
|
8106
8156
|
settings
|
|
8107
8157
|
}) {
|
|
8108
8158
|
return {
|
|
8109
|
-
middlewareVersion: "
|
|
8159
|
+
middlewareVersion: "v3",
|
|
8110
8160
|
transformParams: async ({ params }) => {
|
|
8111
8161
|
return mergeObjects(settings, params);
|
|
8112
8162
|
}
|
|
@@ -8140,7 +8190,7 @@ function extractReasoningMiddleware({
|
|
|
8140
8190
|
const openingTag = `<${tagName}>`;
|
|
8141
8191
|
const closingTag = `</${tagName}>`;
|
|
8142
8192
|
return {
|
|
8143
|
-
middlewareVersion: "
|
|
8193
|
+
middlewareVersion: "v3",
|
|
8144
8194
|
wrapGenerate: async ({ doGenerate }) => {
|
|
8145
8195
|
const { content, ...rest } = await doGenerate();
|
|
8146
8196
|
const transformedContent = [];
|
|
@@ -8286,7 +8336,7 @@ function extractReasoningMiddleware({
|
|
|
8286
8336
|
// src/middleware/simulate-streaming-middleware.ts
|
|
8287
8337
|
function simulateStreamingMiddleware() {
|
|
8288
8338
|
return {
|
|
8289
|
-
middlewareVersion: "
|
|
8339
|
+
middlewareVersion: "v3",
|
|
8290
8340
|
wrapStream: async ({ doGenerate }) => {
|
|
8291
8341
|
const result = await doGenerate();
|
|
8292
8342
|
let id = 0;
|
|
@@ -8383,7 +8433,7 @@ var doWrap = ({
|
|
|
8383
8433
|
return transformParams ? await transformParams({ params, type, model }) : params;
|
|
8384
8434
|
}
|
|
8385
8435
|
return {
|
|
8386
|
-
specificationVersion: "
|
|
8436
|
+
specificationVersion: "v3",
|
|
8387
8437
|
provider: (_a17 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a17 : model.provider,
|
|
8388
8438
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
8389
8439
|
supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
|
|
@@ -8643,14 +8693,14 @@ import {
|
|
|
8643
8693
|
dynamicTool,
|
|
8644
8694
|
jsonSchema,
|
|
8645
8695
|
tool
|
|
8646
|
-
} from "@
|
|
8696
|
+
} from "@zenning/provider-utils";
|
|
8647
8697
|
|
|
8648
8698
|
// src/tool/mcp/mcp-sse-transport.ts
|
|
8649
8699
|
import {
|
|
8650
8700
|
EventSourceParserStream,
|
|
8651
8701
|
withUserAgentSuffix as withUserAgentSuffix8,
|
|
8652
8702
|
getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent2
|
|
8653
|
-
} from "@
|
|
8703
|
+
} from "@zenning/provider-utils";
|
|
8654
8704
|
|
|
8655
8705
|
// src/tool/mcp/json-rpc-message.ts
|
|
8656
8706
|
import { z as z9 } from "zod/v4";
|
|
@@ -9222,7 +9272,7 @@ var DefaultMCPClient = class {
|
|
|
9222
9272
|
};
|
|
9223
9273
|
|
|
9224
9274
|
// src/transcribe/transcribe.ts
|
|
9225
|
-
import { withUserAgentSuffix as withUserAgentSuffix9 } from "@
|
|
9275
|
+
import { withUserAgentSuffix as withUserAgentSuffix9 } from "@zenning/provider-utils";
|
|
9226
9276
|
|
|
9227
9277
|
// src/error/no-transcript-generated-error.ts
|
|
9228
9278
|
import { AISDKError as AISDKError22 } from "@zenning/provider";
|
|
@@ -9308,7 +9358,7 @@ import {
|
|
|
9308
9358
|
parseJsonEventStream,
|
|
9309
9359
|
withUserAgentSuffix as withUserAgentSuffix10,
|
|
9310
9360
|
getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent3
|
|
9311
|
-
} from "@
|
|
9361
|
+
} from "@zenning/provider-utils";
|
|
9312
9362
|
|
|
9313
9363
|
// src/ui/process-text-stream.ts
|
|
9314
9364
|
async function processTextStream({
|
|
@@ -9444,7 +9494,7 @@ async function callCompletionApi({
|
|
|
9444
9494
|
// src/ui/chat.ts
|
|
9445
9495
|
import {
|
|
9446
9496
|
generateId as generateIdFunc
|
|
9447
|
-
} from "@
|
|
9497
|
+
} from "@zenning/provider-utils";
|
|
9448
9498
|
|
|
9449
9499
|
// src/ui/convert-file-list-to-file-ui-parts.ts
|
|
9450
9500
|
async function convertFileListToFileUIParts(files) {
|
|
@@ -9477,14 +9527,14 @@ async function convertFileListToFileUIParts(files) {
|
|
|
9477
9527
|
}
|
|
9478
9528
|
|
|
9479
9529
|
// src/ui/default-chat-transport.ts
|
|
9480
|
-
import { parseJsonEventStream as parseJsonEventStream2 } from "@
|
|
9530
|
+
import { parseJsonEventStream as parseJsonEventStream2 } from "@zenning/provider-utils";
|
|
9481
9531
|
|
|
9482
9532
|
// src/ui/http-chat-transport.ts
|
|
9483
9533
|
import {
|
|
9484
9534
|
resolve,
|
|
9485
9535
|
withUserAgentSuffix as withUserAgentSuffix11,
|
|
9486
9536
|
getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent4
|
|
9487
|
-
} from "@
|
|
9537
|
+
} from "@zenning/provider-utils";
|
|
9488
9538
|
var HttpChatTransport = class {
|
|
9489
9539
|
constructor({
|
|
9490
9540
|
api = "/api/chat",
|
|
@@ -9738,9 +9788,11 @@ var AbstractChat = class {
|
|
|
9738
9788
|
}
|
|
9739
9789
|
};
|
|
9740
9790
|
this.addToolResult = async ({
|
|
9791
|
+
state = "output-available",
|
|
9741
9792
|
tool: tool3,
|
|
9742
9793
|
toolCallId,
|
|
9743
|
-
output
|
|
9794
|
+
output,
|
|
9795
|
+
errorText
|
|
9744
9796
|
}) => this.jobExecutor.run(async () => {
|
|
9745
9797
|
var _a17, _b;
|
|
9746
9798
|
const messages = this.state.messages;
|
|
@@ -9748,16 +9800,16 @@ var AbstractChat = class {
|
|
|
9748
9800
|
this.state.replaceMessage(messages.length - 1, {
|
|
9749
9801
|
...lastMessage,
|
|
9750
9802
|
parts: lastMessage.parts.map(
|
|
9751
|
-
(part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state
|
|
9803
|
+
(part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state, output, errorText } : part
|
|
9752
9804
|
)
|
|
9753
9805
|
});
|
|
9754
9806
|
if (this.activeResponse) {
|
|
9755
9807
|
this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(
|
|
9756
9808
|
(part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? {
|
|
9757
9809
|
...part,
|
|
9758
|
-
state
|
|
9810
|
+
state,
|
|
9759
9811
|
output,
|
|
9760
|
-
errorText
|
|
9812
|
+
errorText
|
|
9761
9813
|
} : part
|
|
9762
9814
|
);
|
|
9763
9815
|
}
|
|
@@ -10015,7 +10067,9 @@ function lastAssistantMessageIsCompleteWithToolCalls({
|
|
|
10015
10067
|
return part.type === "step-start" ? index : lastIndex;
|
|
10016
10068
|
}, -1);
|
|
10017
10069
|
const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolOrDynamicToolUIPart);
|
|
10018
|
-
return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every(
|
|
10070
|
+
return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every(
|
|
10071
|
+
(part) => part.state === "output-available" || part.state === "output-error"
|
|
10072
|
+
);
|
|
10019
10073
|
}
|
|
10020
10074
|
|
|
10021
10075
|
// src/ui/transform-text-to-ui-message-stream.ts
|
|
@@ -10057,7 +10111,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
10057
10111
|
import { TypeValidationError as TypeValidationError4 } from "@zenning/provider";
|
|
10058
10112
|
import {
|
|
10059
10113
|
validateTypes as validateTypes2
|
|
10060
|
-
} from "@
|
|
10114
|
+
} from "@zenning/provider-utils";
|
|
10061
10115
|
import { z as z10 } from "zod/v4";
|
|
10062
10116
|
var textUIPartSchema = z10.object({
|
|
10063
10117
|
type: z10.literal("text"),
|
|
@@ -10206,89 +10260,125 @@ var uiMessageSchema = z10.object({
|
|
|
10206
10260
|
])
|
|
10207
10261
|
)
|
|
10208
10262
|
});
|
|
10209
|
-
async function
|
|
10263
|
+
async function safeValidateUIMessages({
|
|
10210
10264
|
messages,
|
|
10211
10265
|
metadataSchema,
|
|
10212
10266
|
dataSchemas,
|
|
10213
10267
|
tools
|
|
10214
10268
|
}) {
|
|
10215
|
-
|
|
10216
|
-
|
|
10217
|
-
|
|
10269
|
+
try {
|
|
10270
|
+
if (messages == null) {
|
|
10271
|
+
return {
|
|
10272
|
+
success: false,
|
|
10273
|
+
error: new InvalidArgumentError({
|
|
10274
|
+
parameter: "messages",
|
|
10275
|
+
value: messages,
|
|
10276
|
+
message: "messages parameter must be provided"
|
|
10277
|
+
})
|
|
10278
|
+
};
|
|
10279
|
+
}
|
|
10280
|
+
const validatedMessages = await validateTypes2({
|
|
10218
10281
|
value: messages,
|
|
10219
|
-
|
|
10282
|
+
schema: z10.array(uiMessageSchema)
|
|
10220
10283
|
});
|
|
10221
|
-
|
|
10222
|
-
|
|
10223
|
-
value: messages,
|
|
10224
|
-
schema: z10.array(uiMessageSchema)
|
|
10225
|
-
});
|
|
10226
|
-
if (metadataSchema) {
|
|
10227
|
-
for (const message of validatedMessages) {
|
|
10228
|
-
await validateTypes2({
|
|
10229
|
-
value: message.metadata,
|
|
10230
|
-
schema: metadataSchema
|
|
10231
|
-
});
|
|
10232
|
-
}
|
|
10233
|
-
}
|
|
10234
|
-
if (dataSchemas) {
|
|
10235
|
-
for (const message of validatedMessages) {
|
|
10236
|
-
const dataParts = message.parts.filter(
|
|
10237
|
-
(part) => part.type.startsWith("data-")
|
|
10238
|
-
);
|
|
10239
|
-
for (const dataPart of dataParts) {
|
|
10240
|
-
const dataName = dataPart.type.slice(5);
|
|
10241
|
-
const dataSchema = dataSchemas[dataName];
|
|
10242
|
-
if (!dataSchema) {
|
|
10243
|
-
throw new TypeValidationError4({
|
|
10244
|
-
value: dataPart.data,
|
|
10245
|
-
cause: `No data schema found for data part ${dataName}`
|
|
10246
|
-
});
|
|
10247
|
-
}
|
|
10284
|
+
if (metadataSchema) {
|
|
10285
|
+
for (const message of validatedMessages) {
|
|
10248
10286
|
await validateTypes2({
|
|
10249
|
-
value:
|
|
10250
|
-
schema:
|
|
10287
|
+
value: message.metadata,
|
|
10288
|
+
schema: metadataSchema
|
|
10251
10289
|
});
|
|
10252
10290
|
}
|
|
10253
10291
|
}
|
|
10254
|
-
|
|
10255
|
-
|
|
10256
|
-
|
|
10257
|
-
|
|
10258
|
-
|
|
10259
|
-
|
|
10260
|
-
|
|
10261
|
-
|
|
10262
|
-
|
|
10263
|
-
|
|
10264
|
-
|
|
10265
|
-
|
|
10266
|
-
|
|
10267
|
-
|
|
10268
|
-
|
|
10269
|
-
|
|
10292
|
+
if (dataSchemas) {
|
|
10293
|
+
for (const message of validatedMessages) {
|
|
10294
|
+
const dataParts = message.parts.filter(
|
|
10295
|
+
(part) => part.type.startsWith("data-")
|
|
10296
|
+
);
|
|
10297
|
+
for (const dataPart of dataParts) {
|
|
10298
|
+
const dataName = dataPart.type.slice(5);
|
|
10299
|
+
const dataSchema = dataSchemas[dataName];
|
|
10300
|
+
if (!dataSchema) {
|
|
10301
|
+
return {
|
|
10302
|
+
success: false,
|
|
10303
|
+
error: new TypeValidationError4({
|
|
10304
|
+
value: dataPart.data,
|
|
10305
|
+
cause: `No data schema found for data part ${dataName}`
|
|
10306
|
+
})
|
|
10307
|
+
};
|
|
10308
|
+
}
|
|
10270
10309
|
await validateTypes2({
|
|
10271
|
-
value:
|
|
10272
|
-
schema:
|
|
10310
|
+
value: dataPart.data,
|
|
10311
|
+
schema: dataSchema
|
|
10273
10312
|
});
|
|
10274
10313
|
}
|
|
10275
|
-
|
|
10276
|
-
|
|
10277
|
-
|
|
10278
|
-
|
|
10279
|
-
|
|
10314
|
+
}
|
|
10315
|
+
}
|
|
10316
|
+
if (tools) {
|
|
10317
|
+
for (const message of validatedMessages) {
|
|
10318
|
+
const toolParts = message.parts.filter(
|
|
10319
|
+
(part) => part.type.startsWith("tool-")
|
|
10320
|
+
);
|
|
10321
|
+
for (const toolPart of toolParts) {
|
|
10322
|
+
const toolName = toolPart.type.slice(5);
|
|
10323
|
+
const tool3 = tools[toolName];
|
|
10324
|
+
if (!tool3) {
|
|
10325
|
+
return {
|
|
10326
|
+
success: false,
|
|
10327
|
+
error: new TypeValidationError4({
|
|
10328
|
+
value: toolPart.input,
|
|
10329
|
+
cause: `No tool schema found for tool part ${toolName}`
|
|
10330
|
+
})
|
|
10331
|
+
};
|
|
10332
|
+
}
|
|
10333
|
+
if (toolPart.state === "input-available" || toolPart.state === "output-available" || toolPart.state === "output-error") {
|
|
10334
|
+
await validateTypes2({
|
|
10335
|
+
value: toolPart.input,
|
|
10336
|
+
schema: tool3.inputSchema
|
|
10337
|
+
});
|
|
10338
|
+
}
|
|
10339
|
+
if (toolPart.state === "output-available" && tool3.outputSchema) {
|
|
10340
|
+
await validateTypes2({
|
|
10341
|
+
value: toolPart.output,
|
|
10342
|
+
schema: tool3.outputSchema
|
|
10343
|
+
});
|
|
10344
|
+
}
|
|
10280
10345
|
}
|
|
10281
10346
|
}
|
|
10282
10347
|
}
|
|
10348
|
+
return {
|
|
10349
|
+
success: true,
|
|
10350
|
+
data: validatedMessages
|
|
10351
|
+
};
|
|
10352
|
+
} catch (error) {
|
|
10353
|
+
const err = error;
|
|
10354
|
+
return {
|
|
10355
|
+
success: false,
|
|
10356
|
+
error: err
|
|
10357
|
+
};
|
|
10283
10358
|
}
|
|
10284
|
-
|
|
10359
|
+
}
|
|
10360
|
+
async function validateUIMessages({
|
|
10361
|
+
messages,
|
|
10362
|
+
metadataSchema,
|
|
10363
|
+
dataSchemas,
|
|
10364
|
+
tools
|
|
10365
|
+
}) {
|
|
10366
|
+
const response = await safeValidateUIMessages({
|
|
10367
|
+
messages,
|
|
10368
|
+
metadataSchema,
|
|
10369
|
+
dataSchemas,
|
|
10370
|
+
tools
|
|
10371
|
+
});
|
|
10372
|
+
if (!response.success)
|
|
10373
|
+
throw response.error;
|
|
10374
|
+
return response.data;
|
|
10285
10375
|
}
|
|
10286
10376
|
|
|
10287
10377
|
// src/ui-message-stream/create-ui-message-stream.ts
|
|
10288
10378
|
import {
|
|
10289
10379
|
generateId as generateIdFunc2,
|
|
10290
10380
|
getErrorMessage as getErrorMessage8
|
|
10291
|
-
} from "@
|
|
10381
|
+
} from "@zenning/provider-utils";
|
|
10292
10382
|
function createUIMessageStream({
|
|
10293
10383
|
execute,
|
|
10294
10384
|
onError = getErrorMessage8,
|
|
@@ -10421,9 +10511,10 @@ function readUIMessageStream({
|
|
|
10421
10511
|
return createAsyncIterableStream(outputStream);
|
|
10422
10512
|
}
|
|
10423
10513
|
export {
|
|
10424
|
-
|
|
10514
|
+
AISDKError18 as AISDKError,
|
|
10425
10515
|
APICallError,
|
|
10426
10516
|
AbstractChat,
|
|
10517
|
+
Agent,
|
|
10427
10518
|
DefaultChatTransport,
|
|
10428
10519
|
DownloadError,
|
|
10429
10520
|
EmptyResponseBodyError,
|
|
@@ -10446,6 +10537,7 @@ export {
|
|
|
10446
10537
|
NoObjectGeneratedError,
|
|
10447
10538
|
NoOutputGeneratedError,
|
|
10448
10539
|
NoOutputSpecifiedError,
|
|
10540
|
+
NoSpeechGeneratedError,
|
|
10449
10541
|
NoSuchModelError,
|
|
10450
10542
|
NoSuchProviderError,
|
|
10451
10543
|
NoSuchToolError,
|
|
@@ -10504,10 +10596,12 @@ export {
|
|
|
10504
10596
|
jsonSchema2 as jsonSchema,
|
|
10505
10597
|
lastAssistantMessageIsCompleteWithToolCalls,
|
|
10506
10598
|
modelMessageSchema,
|
|
10599
|
+
parseJsonEventStream3 as parseJsonEventStream,
|
|
10507
10600
|
parsePartialJson,
|
|
10508
10601
|
pipeTextStreamToResponse,
|
|
10509
10602
|
pipeUIMessageStreamToResponse,
|
|
10510
10603
|
readUIMessageStream,
|
|
10604
|
+
safeValidateUIMessages,
|
|
10511
10605
|
simulateReadableStream,
|
|
10512
10606
|
simulateStreamingMiddleware,
|
|
10513
10607
|
smoothStream,
|
|
@@ -10517,6 +10611,7 @@ export {
|
|
|
10517
10611
|
systemModelMessageSchema,
|
|
10518
10612
|
tool2 as tool,
|
|
10519
10613
|
toolModelMessageSchema,
|
|
10614
|
+
uiMessageChunkSchema,
|
|
10520
10615
|
userModelMessageSchema,
|
|
10521
10616
|
validateUIMessages,
|
|
10522
10617
|
wrapLanguageModel,
|