ai 6.0.270 → 6.0.272
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 +22 -0
- package/dist/index.d.mts +126 -49
- package/dist/index.d.ts +126 -49
- package/dist/index.js +609 -394
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +545 -328
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index.mjs +1 -1
- package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +26 -1
- package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +2 -2
- package/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx +33 -5
- package/docs/07-reference/05-ai-sdk-errors/ai-tool-choice-violation-error.mdx +38 -0
- package/docs/07-reference/05-ai-sdk-errors/index.mdx +1 -0
- package/package.json +3 -3
- package/src/agent/create-agent-ui-stream.ts +2 -2
- package/src/agent/tool-loop-agent-settings.ts +9 -0
- package/src/error/index.ts +1 -0
- package/src/error/tool-choice-violation-error.ts +80 -0
- package/src/generate-text/generate-text.ts +25 -1
- package/src/generate-text/stream-text.ts +84 -1
- package/src/ui/direct-chat-transport.ts +2 -2
- package/src/ui/validate-ui-messages.ts +136 -55
- package/src/ui-message-stream/create-ui-message-stream.ts +47 -17
- package/src/ui-message-stream/handle-ui-message-stream-finish.ts +58 -15
- package/src/ui-message-stream/index.ts +5 -1
- package/src/ui-message-stream/ui-message-stream-on-finish-callback.ts +7 -0
- package/src/ui-message-stream/ui-message-stream-outcome.ts +12 -0
- package/src/ui-message-stream/ui-message-stream-writer.ts +15 -0
package/dist/index.js
CHANGED
|
@@ -4,8 +4,8 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
6
|
var __export = (target, all) => {
|
|
7
|
-
for (var
|
|
8
|
-
__defProp(target,
|
|
7
|
+
for (var name23 in all)
|
|
8
|
+
__defProp(target, name23, { get: all[name23], enumerable: true });
|
|
9
9
|
};
|
|
10
10
|
var __copyProps = (to, from, except, desc) => {
|
|
11
11
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
@@ -20,37 +20,37 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
|
-
AISDKError: () =>
|
|
24
|
-
APICallError: () =>
|
|
23
|
+
AISDKError: () => import_provider23.AISDKError,
|
|
24
|
+
APICallError: () => import_provider23.APICallError,
|
|
25
25
|
AbstractChat: () => AbstractChat,
|
|
26
26
|
DefaultChatTransport: () => DefaultChatTransport,
|
|
27
27
|
DefaultGeneratedFile: () => DefaultGeneratedFile,
|
|
28
28
|
DirectChatTransport: () => DirectChatTransport,
|
|
29
29
|
DownloadError: () => import_provider_utils.DownloadError,
|
|
30
|
-
EmptyResponseBodyError: () =>
|
|
30
|
+
EmptyResponseBodyError: () => import_provider23.EmptyResponseBodyError,
|
|
31
31
|
Experimental_Agent: () => ToolLoopAgent,
|
|
32
32
|
HttpChatTransport: () => HttpChatTransport,
|
|
33
33
|
InvalidArgumentError: () => InvalidArgumentError,
|
|
34
34
|
InvalidDataContentError: () => InvalidDataContentError,
|
|
35
35
|
InvalidMessageRoleError: () => InvalidMessageRoleError,
|
|
36
|
-
InvalidPromptError: () =>
|
|
37
|
-
InvalidResponseDataError: () =>
|
|
36
|
+
InvalidPromptError: () => import_provider23.InvalidPromptError,
|
|
37
|
+
InvalidResponseDataError: () => import_provider23.InvalidResponseDataError,
|
|
38
38
|
InvalidStreamPartError: () => InvalidStreamPartError,
|
|
39
39
|
InvalidToolApprovalError: () => InvalidToolApprovalError,
|
|
40
40
|
InvalidToolApprovalSignatureError: () => InvalidToolApprovalSignatureError,
|
|
41
41
|
InvalidToolInputError: () => InvalidToolInputError,
|
|
42
|
-
JSONParseError: () =>
|
|
42
|
+
JSONParseError: () => import_provider23.JSONParseError,
|
|
43
43
|
JsonToSseTransformStream: () => JsonToSseTransformStream,
|
|
44
|
-
LoadAPIKeyError: () =>
|
|
45
|
-
LoadSettingError: () =>
|
|
44
|
+
LoadAPIKeyError: () => import_provider23.LoadAPIKeyError,
|
|
45
|
+
LoadSettingError: () => import_provider23.LoadSettingError,
|
|
46
46
|
MessageConversionError: () => MessageConversionError,
|
|
47
47
|
MissingToolResultsError: () => MissingToolResultsError,
|
|
48
|
-
NoContentGeneratedError: () =>
|
|
48
|
+
NoContentGeneratedError: () => import_provider23.NoContentGeneratedError,
|
|
49
49
|
NoImageGeneratedError: () => NoImageGeneratedError,
|
|
50
50
|
NoObjectGeneratedError: () => NoObjectGeneratedError,
|
|
51
51
|
NoOutputGeneratedError: () => NoOutputGeneratedError,
|
|
52
52
|
NoSpeechGeneratedError: () => NoSpeechGeneratedError,
|
|
53
|
-
NoSuchModelError: () =>
|
|
53
|
+
NoSuchModelError: () => import_provider23.NoSuchModelError,
|
|
54
54
|
NoSuchProviderError: () => NoSuchProviderError,
|
|
55
55
|
NoSuchToolError: () => NoSuchToolError,
|
|
56
56
|
NoTranscriptGeneratedError: () => NoTranscriptGeneratedError,
|
|
@@ -59,14 +59,15 @@ __export(src_exports, {
|
|
|
59
59
|
RetryError: () => RetryError,
|
|
60
60
|
SerialJobExecutor: () => SerialJobExecutor,
|
|
61
61
|
TextStreamChatTransport: () => TextStreamChatTransport,
|
|
62
|
-
TooManyEmbeddingValuesForCallError: () =>
|
|
62
|
+
TooManyEmbeddingValuesForCallError: () => import_provider23.TooManyEmbeddingValuesForCallError,
|
|
63
63
|
ToolCallNotFoundForApprovalError: () => ToolCallNotFoundForApprovalError,
|
|
64
64
|
ToolCallRepairError: () => ToolCallRepairError,
|
|
65
|
+
ToolChoiceViolationError: () => ToolChoiceViolationError,
|
|
65
66
|
ToolLoopAgent: () => ToolLoopAgent,
|
|
66
|
-
TypeValidationError: () =>
|
|
67
|
+
TypeValidationError: () => import_provider23.TypeValidationError,
|
|
67
68
|
UIMessageStreamError: () => UIMessageStreamError,
|
|
68
69
|
UI_MESSAGE_STREAM_HEADERS: () => UI_MESSAGE_STREAM_HEADERS,
|
|
69
|
-
UnsupportedFunctionalityError: () =>
|
|
70
|
+
UnsupportedFunctionalityError: () => import_provider23.UnsupportedFunctionalityError,
|
|
70
71
|
UnsupportedModelVersionError: () => UnsupportedModelVersionError,
|
|
71
72
|
addToolInputExamplesMiddleware: () => addToolInputExamplesMiddleware,
|
|
72
73
|
asSchema: () => import_provider_utils43.asSchema,
|
|
@@ -163,7 +164,7 @@ var import_provider_utils21 = require("@ai-sdk/provider-utils");
|
|
|
163
164
|
var import_provider_utils16 = require("@ai-sdk/provider-utils");
|
|
164
165
|
|
|
165
166
|
// src/error/index.ts
|
|
166
|
-
var
|
|
167
|
+
var import_provider23 = require("@ai-sdk/provider");
|
|
167
168
|
|
|
168
169
|
// src/error/invalid-argument-error.ts
|
|
169
170
|
var import_provider = require("@ai-sdk/provider");
|
|
@@ -507,21 +508,28 @@ var NoSuchToolError = class extends import_provider14.AISDKError {
|
|
|
507
508
|
};
|
|
508
509
|
_a14 = symbol14;
|
|
509
510
|
|
|
510
|
-
// src/error/tool-
|
|
511
|
+
// src/error/tool-choice-violation-error.ts
|
|
511
512
|
var import_provider15 = require("@ai-sdk/provider");
|
|
512
|
-
var name15 = "
|
|
513
|
+
var name15 = "AI_ToolChoiceViolationError";
|
|
513
514
|
var marker15 = `vercel.ai.error.${name15}`;
|
|
514
515
|
var symbol15 = Symbol.for(marker15);
|
|
515
516
|
var _a15;
|
|
516
|
-
var
|
|
517
|
+
var ToolChoiceViolationError = class extends import_provider15.AISDKError {
|
|
517
518
|
constructor({
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
519
|
+
toolChoice,
|
|
520
|
+
finishReason,
|
|
521
|
+
provider,
|
|
522
|
+
modelId,
|
|
523
|
+
content,
|
|
524
|
+
message = toolChoice.type === "required" ? "Model response did not contain a tool call even though tool choice was required." : `Model response did not contain a call to the required tool '${toolChoice.toolName}'.`
|
|
521
525
|
}) {
|
|
522
|
-
super({ name: name15, message
|
|
526
|
+
super({ name: name15, message });
|
|
523
527
|
this[_a15] = true;
|
|
524
|
-
this.
|
|
528
|
+
this.toolChoice = toolChoice;
|
|
529
|
+
this.finishReason = finishReason;
|
|
530
|
+
this.provider = provider;
|
|
531
|
+
this.modelId = modelId;
|
|
532
|
+
this.content = content;
|
|
525
533
|
}
|
|
526
534
|
static isInstance(error) {
|
|
527
535
|
return import_provider15.AISDKError.hasMarker(error, marker15);
|
|
@@ -529,9 +537,31 @@ var ToolCallRepairError = class extends import_provider15.AISDKError {
|
|
|
529
537
|
};
|
|
530
538
|
_a15 = symbol15;
|
|
531
539
|
|
|
532
|
-
// src/error/
|
|
540
|
+
// src/error/tool-call-repair-error.ts
|
|
533
541
|
var import_provider16 = require("@ai-sdk/provider");
|
|
534
|
-
var
|
|
542
|
+
var name16 = "AI_ToolCallRepairError";
|
|
543
|
+
var marker16 = `vercel.ai.error.${name16}`;
|
|
544
|
+
var symbol16 = Symbol.for(marker16);
|
|
545
|
+
var _a16;
|
|
546
|
+
var ToolCallRepairError = class extends import_provider16.AISDKError {
|
|
547
|
+
constructor({
|
|
548
|
+
cause,
|
|
549
|
+
originalError,
|
|
550
|
+
message = `Error repairing tool call: ${(0, import_provider16.getErrorMessage)(cause)}`
|
|
551
|
+
}) {
|
|
552
|
+
super({ name: name16, message, cause });
|
|
553
|
+
this[_a16] = true;
|
|
554
|
+
this.originalError = originalError;
|
|
555
|
+
}
|
|
556
|
+
static isInstance(error) {
|
|
557
|
+
return import_provider16.AISDKError.hasMarker(error, marker16);
|
|
558
|
+
}
|
|
559
|
+
};
|
|
560
|
+
_a16 = symbol16;
|
|
561
|
+
|
|
562
|
+
// src/error/unsupported-model-version-error.ts
|
|
563
|
+
var import_provider17 = require("@ai-sdk/provider");
|
|
564
|
+
var UnsupportedModelVersionError = class extends import_provider17.AISDKError {
|
|
535
565
|
constructor(options) {
|
|
536
566
|
super({
|
|
537
567
|
name: "AI_UnsupportedModelVersionError",
|
|
@@ -544,118 +574,118 @@ var UnsupportedModelVersionError = class extends import_provider16.AISDKError {
|
|
|
544
574
|
};
|
|
545
575
|
|
|
546
576
|
// src/error/ui-message-stream-error.ts
|
|
547
|
-
var
|
|
548
|
-
var
|
|
549
|
-
var
|
|
550
|
-
var
|
|
551
|
-
var
|
|
552
|
-
var UIMessageStreamError = class extends
|
|
577
|
+
var import_provider18 = require("@ai-sdk/provider");
|
|
578
|
+
var name17 = "AI_UIMessageStreamError";
|
|
579
|
+
var marker17 = `vercel.ai.error.${name17}`;
|
|
580
|
+
var symbol17 = Symbol.for(marker17);
|
|
581
|
+
var _a17;
|
|
582
|
+
var UIMessageStreamError = class extends import_provider18.AISDKError {
|
|
553
583
|
constructor({
|
|
554
584
|
chunkType,
|
|
555
585
|
chunkId,
|
|
556
586
|
message
|
|
557
587
|
}) {
|
|
558
|
-
super({ name:
|
|
559
|
-
this[
|
|
588
|
+
super({ name: name17, message });
|
|
589
|
+
this[_a17] = true;
|
|
560
590
|
this.chunkType = chunkType;
|
|
561
591
|
this.chunkId = chunkId;
|
|
562
592
|
}
|
|
563
593
|
static isInstance(error) {
|
|
564
|
-
return
|
|
594
|
+
return import_provider18.AISDKError.hasMarker(error, marker17);
|
|
565
595
|
}
|
|
566
596
|
};
|
|
567
|
-
|
|
597
|
+
_a17 = symbol17;
|
|
568
598
|
|
|
569
599
|
// src/prompt/invalid-data-content-error.ts
|
|
570
|
-
var
|
|
571
|
-
var
|
|
572
|
-
var
|
|
573
|
-
var
|
|
574
|
-
var
|
|
575
|
-
var InvalidDataContentError = class extends
|
|
600
|
+
var import_provider19 = require("@ai-sdk/provider");
|
|
601
|
+
var name18 = "AI_InvalidDataContentError";
|
|
602
|
+
var marker18 = `vercel.ai.error.${name18}`;
|
|
603
|
+
var symbol18 = Symbol.for(marker18);
|
|
604
|
+
var _a18;
|
|
605
|
+
var InvalidDataContentError = class extends import_provider19.AISDKError {
|
|
576
606
|
constructor({
|
|
577
607
|
content,
|
|
578
608
|
cause,
|
|
579
609
|
message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`
|
|
580
610
|
}) {
|
|
581
|
-
super({ name:
|
|
582
|
-
this[
|
|
611
|
+
super({ name: name18, message, cause });
|
|
612
|
+
this[_a18] = true;
|
|
583
613
|
this.content = content;
|
|
584
614
|
}
|
|
585
615
|
static isInstance(error) {
|
|
586
|
-
return
|
|
616
|
+
return import_provider19.AISDKError.hasMarker(error, marker18);
|
|
587
617
|
}
|
|
588
618
|
};
|
|
589
|
-
|
|
619
|
+
_a18 = symbol18;
|
|
590
620
|
|
|
591
621
|
// src/prompt/invalid-message-role-error.ts
|
|
592
|
-
var
|
|
593
|
-
var
|
|
594
|
-
var
|
|
595
|
-
var
|
|
596
|
-
var
|
|
597
|
-
var InvalidMessageRoleError = class extends
|
|
622
|
+
var import_provider20 = require("@ai-sdk/provider");
|
|
623
|
+
var name19 = "AI_InvalidMessageRoleError";
|
|
624
|
+
var marker19 = `vercel.ai.error.${name19}`;
|
|
625
|
+
var symbol19 = Symbol.for(marker19);
|
|
626
|
+
var _a19;
|
|
627
|
+
var InvalidMessageRoleError = class extends import_provider20.AISDKError {
|
|
598
628
|
constructor({
|
|
599
629
|
role,
|
|
600
630
|
message = `Invalid message role: '${role}'. Must be one of: "system", "user", "assistant", "tool".`
|
|
601
631
|
}) {
|
|
602
|
-
super({ name:
|
|
603
|
-
this[
|
|
632
|
+
super({ name: name19, message });
|
|
633
|
+
this[_a19] = true;
|
|
604
634
|
this.role = role;
|
|
605
635
|
}
|
|
606
636
|
static isInstance(error) {
|
|
607
|
-
return
|
|
637
|
+
return import_provider20.AISDKError.hasMarker(error, marker19);
|
|
608
638
|
}
|
|
609
639
|
};
|
|
610
|
-
|
|
640
|
+
_a19 = symbol19;
|
|
611
641
|
|
|
612
642
|
// src/prompt/message-conversion-error.ts
|
|
613
|
-
var
|
|
614
|
-
var
|
|
615
|
-
var
|
|
616
|
-
var
|
|
617
|
-
var
|
|
618
|
-
var MessageConversionError = class extends
|
|
643
|
+
var import_provider21 = require("@ai-sdk/provider");
|
|
644
|
+
var name20 = "AI_MessageConversionError";
|
|
645
|
+
var marker20 = `vercel.ai.error.${name20}`;
|
|
646
|
+
var symbol20 = Symbol.for(marker20);
|
|
647
|
+
var _a20;
|
|
648
|
+
var MessageConversionError = class extends import_provider21.AISDKError {
|
|
619
649
|
constructor({
|
|
620
650
|
originalMessage,
|
|
621
651
|
message
|
|
622
652
|
}) {
|
|
623
|
-
super({ name:
|
|
624
|
-
this[
|
|
653
|
+
super({ name: name20, message });
|
|
654
|
+
this[_a20] = true;
|
|
625
655
|
this.originalMessage = originalMessage;
|
|
626
656
|
}
|
|
627
657
|
static isInstance(error) {
|
|
628
|
-
return
|
|
658
|
+
return import_provider21.AISDKError.hasMarker(error, marker20);
|
|
629
659
|
}
|
|
630
660
|
};
|
|
631
|
-
|
|
661
|
+
_a20 = symbol20;
|
|
632
662
|
|
|
633
663
|
// src/error/index.ts
|
|
634
664
|
var import_provider_utils = require("@ai-sdk/provider-utils");
|
|
635
665
|
|
|
636
666
|
// src/util/retry-error.ts
|
|
637
|
-
var
|
|
638
|
-
var
|
|
639
|
-
var
|
|
640
|
-
var
|
|
641
|
-
var
|
|
642
|
-
var RetryError = class extends
|
|
667
|
+
var import_provider22 = require("@ai-sdk/provider");
|
|
668
|
+
var name21 = "AI_RetryError";
|
|
669
|
+
var marker21 = `vercel.ai.error.${name21}`;
|
|
670
|
+
var symbol21 = Symbol.for(marker21);
|
|
671
|
+
var _a21;
|
|
672
|
+
var RetryError = class extends import_provider22.AISDKError {
|
|
643
673
|
constructor({
|
|
644
674
|
message,
|
|
645
675
|
reason,
|
|
646
676
|
errors
|
|
647
677
|
}) {
|
|
648
|
-
super({ name:
|
|
649
|
-
this[
|
|
678
|
+
super({ name: name21, message });
|
|
679
|
+
this[_a21] = true;
|
|
650
680
|
this.reason = reason;
|
|
651
681
|
this.errors = errors;
|
|
652
682
|
this.lastError = errors[errors.length - 1];
|
|
653
683
|
}
|
|
654
684
|
static isInstance(error) {
|
|
655
|
-
return
|
|
685
|
+
return import_provider22.AISDKError.hasMarker(error, marker21);
|
|
656
686
|
}
|
|
657
687
|
};
|
|
658
|
-
|
|
688
|
+
_a21 = symbol21;
|
|
659
689
|
|
|
660
690
|
// src/util/as-array.ts
|
|
661
691
|
function asArray(value) {
|
|
@@ -935,7 +965,7 @@ function resolveEmbeddingModel(model) {
|
|
|
935
965
|
return getGlobalProvider().embeddingModel(model);
|
|
936
966
|
}
|
|
937
967
|
function resolveTranscriptionModel(model) {
|
|
938
|
-
var
|
|
968
|
+
var _a23, _b;
|
|
939
969
|
if (typeof model !== "string") {
|
|
940
970
|
if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
|
|
941
971
|
const unsupportedModel = model;
|
|
@@ -947,10 +977,10 @@ function resolveTranscriptionModel(model) {
|
|
|
947
977
|
}
|
|
948
978
|
return asTranscriptionModelV3(model);
|
|
949
979
|
}
|
|
950
|
-
return (_b = (
|
|
980
|
+
return (_b = (_a23 = getGlobalProvider()).transcriptionModel) == null ? void 0 : _b.call(_a23, model);
|
|
951
981
|
}
|
|
952
982
|
function resolveSpeechModel(model) {
|
|
953
|
-
var
|
|
983
|
+
var _a23, _b;
|
|
954
984
|
if (typeof model !== "string") {
|
|
955
985
|
if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
|
|
956
986
|
const unsupportedModel = model;
|
|
@@ -962,7 +992,7 @@ function resolveSpeechModel(model) {
|
|
|
962
992
|
}
|
|
963
993
|
return asSpeechModelV3(model);
|
|
964
994
|
}
|
|
965
|
-
return (_b = (
|
|
995
|
+
return (_b = (_a23 = getGlobalProvider()).speechModel) == null ? void 0 : _b.call(_a23, model);
|
|
966
996
|
}
|
|
967
997
|
function resolveImageModel(model) {
|
|
968
998
|
if (typeof model !== "string") {
|
|
@@ -1021,8 +1051,8 @@ function resolveRerankingModel(model) {
|
|
|
1021
1051
|
return model;
|
|
1022
1052
|
}
|
|
1023
1053
|
function getGlobalProvider() {
|
|
1024
|
-
var
|
|
1025
|
-
return (
|
|
1054
|
+
var _a23;
|
|
1055
|
+
return (_a23 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a23 : import_gateway.gateway;
|
|
1026
1056
|
}
|
|
1027
1057
|
|
|
1028
1058
|
// src/prompt/call-settings.ts
|
|
@@ -1304,7 +1334,7 @@ function detectMediaType({
|
|
|
1304
1334
|
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
|
1305
1335
|
|
|
1306
1336
|
// src/version.ts
|
|
1307
|
-
var VERSION = true ? "6.0.
|
|
1337
|
+
var VERSION = true ? "6.0.272" : "0.0.0-test";
|
|
1308
1338
|
|
|
1309
1339
|
// src/util/download/download.ts
|
|
1310
1340
|
var download = async ({
|
|
@@ -1312,7 +1342,7 @@ var download = async ({
|
|
|
1312
1342
|
maxBytes,
|
|
1313
1343
|
abortSignal
|
|
1314
1344
|
}) => {
|
|
1315
|
-
var
|
|
1345
|
+
var _a23;
|
|
1316
1346
|
const urlText = url.toString();
|
|
1317
1347
|
try {
|
|
1318
1348
|
const headers = (0, import_provider_utils3.withUserAgentSuffix)(
|
|
@@ -1340,7 +1370,7 @@ var download = async ({
|
|
|
1340
1370
|
});
|
|
1341
1371
|
return {
|
|
1342
1372
|
data,
|
|
1343
|
-
mediaType: (
|
|
1373
|
+
mediaType: (_a23 = response.headers.get("content-type")) != null ? _a23 : void 0
|
|
1344
1374
|
};
|
|
1345
1375
|
} catch (error) {
|
|
1346
1376
|
if (import_provider_utils3.DownloadError.isInstance(error)) {
|
|
@@ -1394,7 +1424,7 @@ function mergeObjects(base, overrides) {
|
|
|
1394
1424
|
}
|
|
1395
1425
|
|
|
1396
1426
|
// src/prompt/data-content.ts
|
|
1397
|
-
var
|
|
1427
|
+
var import_provider24 = require("@ai-sdk/provider");
|
|
1398
1428
|
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
1399
1429
|
var import_v4 = require("zod/v4");
|
|
1400
1430
|
|
|
@@ -1422,8 +1452,8 @@ var dataContentSchema = import_v4.z.union([
|
|
|
1422
1452
|
import_v4.z.custom(
|
|
1423
1453
|
// Buffer might not be available in some environments such as CloudFlare:
|
|
1424
1454
|
(value) => {
|
|
1425
|
-
var
|
|
1426
|
-
return (_b = (
|
|
1455
|
+
var _a23, _b;
|
|
1456
|
+
return (_b = (_a23 = globalThis.Buffer) == null ? void 0 : _a23.isBuffer(value)) != null ? _b : false;
|
|
1427
1457
|
},
|
|
1428
1458
|
{ message: "Must be a Buffer" }
|
|
1429
1459
|
)
|
|
@@ -1446,7 +1476,7 @@ function convertToLanguageModelV3DataContent(content) {
|
|
|
1446
1476
|
content.toString()
|
|
1447
1477
|
);
|
|
1448
1478
|
if (dataUrlMediaType == null || base64Content == null) {
|
|
1449
|
-
throw new
|
|
1479
|
+
throw new import_provider24.AISDKError({
|
|
1450
1480
|
name: "InvalidDataContentError",
|
|
1451
1481
|
message: `Invalid data URL format in content ${content.toString()}`
|
|
1452
1482
|
});
|
|
@@ -1737,7 +1767,7 @@ function convertToLanguageModelMessage({
|
|
|
1737
1767
|
}
|
|
1738
1768
|
}
|
|
1739
1769
|
async function downloadAssets(messages, download2, supportedUrls) {
|
|
1740
|
-
var
|
|
1770
|
+
var _a23;
|
|
1741
1771
|
const downloadableFiles = [];
|
|
1742
1772
|
for (const message of messages) {
|
|
1743
1773
|
if (message.role === "user" && Array.isArray(message.content)) {
|
|
@@ -1745,7 +1775,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
1745
1775
|
if (part.type === "image" || part.type === "file") {
|
|
1746
1776
|
downloadableFiles.push({
|
|
1747
1777
|
data: part.type === "image" ? part.image : part.data,
|
|
1748
|
-
mediaType: (
|
|
1778
|
+
mediaType: (_a23 = part.mediaType) != null ? _a23 : part.type === "image" ? "image/*" : void 0
|
|
1749
1779
|
});
|
|
1750
1780
|
}
|
|
1751
1781
|
}
|
|
@@ -1797,7 +1827,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
1797
1827
|
);
|
|
1798
1828
|
}
|
|
1799
1829
|
function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
1800
|
-
var
|
|
1830
|
+
var _a23;
|
|
1801
1831
|
if (part.type === "text") {
|
|
1802
1832
|
return {
|
|
1803
1833
|
type: "text",
|
|
@@ -1830,7 +1860,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
|
1830
1860
|
switch (type) {
|
|
1831
1861
|
case "image": {
|
|
1832
1862
|
if (data instanceof Uint8Array || typeof data === "string") {
|
|
1833
|
-
mediaType = (
|
|
1863
|
+
mediaType = (_a23 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a23 : mediaType;
|
|
1834
1864
|
}
|
|
1835
1865
|
return {
|
|
1836
1866
|
type: "file",
|
|
@@ -1865,14 +1895,14 @@ function mapToolResultOutput({
|
|
|
1865
1895
|
return {
|
|
1866
1896
|
type: "content",
|
|
1867
1897
|
value: output.value.map((item) => {
|
|
1868
|
-
var
|
|
1898
|
+
var _a23, _b;
|
|
1869
1899
|
if (item.type === "image-url") {
|
|
1870
1900
|
const downloadedFile = downloadedAssets[new URL(item.url).toString()];
|
|
1871
1901
|
if (downloadedFile) {
|
|
1872
1902
|
return {
|
|
1873
1903
|
type: "image-data",
|
|
1874
1904
|
data: convertDataContentToBase64String(downloadedFile.data),
|
|
1875
|
-
mediaType: (
|
|
1905
|
+
mediaType: (_a23 = downloadedFile.mediaType) != null ? _a23 : "image/*",
|
|
1876
1906
|
providerOptions: item.providerOptions
|
|
1877
1907
|
};
|
|
1878
1908
|
}
|
|
@@ -1910,7 +1940,7 @@ function mapToolResultOutput({
|
|
|
1910
1940
|
}
|
|
1911
1941
|
|
|
1912
1942
|
// src/prompt/create-tool-model-output.ts
|
|
1913
|
-
var
|
|
1943
|
+
var import_provider25 = require("@ai-sdk/provider");
|
|
1914
1944
|
async function createToolModelOutput({
|
|
1915
1945
|
toolCallId,
|
|
1916
1946
|
input,
|
|
@@ -1919,7 +1949,7 @@ async function createToolModelOutput({
|
|
|
1919
1949
|
errorMode
|
|
1920
1950
|
}) {
|
|
1921
1951
|
if (errorMode === "text") {
|
|
1922
|
-
return { type: "error-text", value: (0,
|
|
1952
|
+
return { type: "error-text", value: (0, import_provider25.getErrorMessage)(output) };
|
|
1923
1953
|
} else if (errorMode === "json") {
|
|
1924
1954
|
return { type: "error-json", value: toJSONValue(output) };
|
|
1925
1955
|
}
|
|
@@ -2046,10 +2076,10 @@ async function prepareToolsAndToolChoice({
|
|
|
2046
2076
|
};
|
|
2047
2077
|
}
|
|
2048
2078
|
const filteredTools = activeTools != null ? Object.entries(tools).filter(
|
|
2049
|
-
([
|
|
2079
|
+
([name23]) => activeTools.includes(name23)
|
|
2050
2080
|
) : Object.entries(tools);
|
|
2051
2081
|
const languageModelTools = [];
|
|
2052
|
-
for (const [
|
|
2082
|
+
for (const [name23, tool2] of filteredTools) {
|
|
2053
2083
|
const toolType = tool2.type;
|
|
2054
2084
|
switch (toolType) {
|
|
2055
2085
|
case void 0:
|
|
@@ -2057,7 +2087,7 @@ async function prepareToolsAndToolChoice({
|
|
|
2057
2087
|
case "function":
|
|
2058
2088
|
languageModelTools.push({
|
|
2059
2089
|
type: "function",
|
|
2060
|
-
name:
|
|
2090
|
+
name: name23,
|
|
2061
2091
|
description: tool2.description,
|
|
2062
2092
|
inputSchema: await (0, import_provider_utils6.asSchema)(tool2.inputSchema).jsonSchema,
|
|
2063
2093
|
...tool2.inputExamples != null ? { inputExamples: tool2.inputExamples } : {},
|
|
@@ -2068,7 +2098,7 @@ async function prepareToolsAndToolChoice({
|
|
|
2068
2098
|
case "provider":
|
|
2069
2099
|
languageModelTools.push({
|
|
2070
2100
|
type: "provider",
|
|
2071
|
-
name:
|
|
2101
|
+
name: name23,
|
|
2072
2102
|
id: tool2.id,
|
|
2073
2103
|
args: tool2.args
|
|
2074
2104
|
});
|
|
@@ -2086,7 +2116,7 @@ async function prepareToolsAndToolChoice({
|
|
|
2086
2116
|
}
|
|
2087
2117
|
|
|
2088
2118
|
// src/prompt/standardize-prompt.ts
|
|
2089
|
-
var
|
|
2119
|
+
var import_provider26 = require("@ai-sdk/provider");
|
|
2090
2120
|
var import_provider_utils7 = require("@ai-sdk/provider-utils");
|
|
2091
2121
|
var import_v46 = require("zod/v4");
|
|
2092
2122
|
|
|
@@ -2304,19 +2334,19 @@ async function standardizePrompt({
|
|
|
2304
2334
|
messages
|
|
2305
2335
|
}) {
|
|
2306
2336
|
if (prompt == null && messages == null) {
|
|
2307
|
-
throw new
|
|
2337
|
+
throw new import_provider26.InvalidPromptError({
|
|
2308
2338
|
prompt,
|
|
2309
2339
|
message: "prompt or messages must be defined"
|
|
2310
2340
|
});
|
|
2311
2341
|
}
|
|
2312
2342
|
if (prompt != null && messages != null) {
|
|
2313
|
-
throw new
|
|
2343
|
+
throw new import_provider26.InvalidPromptError({
|
|
2314
2344
|
prompt,
|
|
2315
2345
|
message: "prompt and messages cannot be defined at the same time"
|
|
2316
2346
|
});
|
|
2317
2347
|
}
|
|
2318
2348
|
if (typeof system !== "string" && !asArray(system).every((message) => message.role === "system")) {
|
|
2319
|
-
throw new
|
|
2349
|
+
throw new import_provider26.InvalidPromptError({
|
|
2320
2350
|
prompt,
|
|
2321
2351
|
message: "system must be a string, SystemModelMessage, or array of SystemModelMessage"
|
|
2322
2352
|
});
|
|
@@ -2326,20 +2356,20 @@ async function standardizePrompt({
|
|
|
2326
2356
|
} else if (prompt != null && Array.isArray(prompt)) {
|
|
2327
2357
|
messages = prompt;
|
|
2328
2358
|
} else if (messages == null) {
|
|
2329
|
-
throw new
|
|
2359
|
+
throw new import_provider26.InvalidPromptError({
|
|
2330
2360
|
prompt,
|
|
2331
2361
|
message: "prompt or messages must be defined"
|
|
2332
2362
|
});
|
|
2333
2363
|
}
|
|
2334
2364
|
if (messages.length === 0) {
|
|
2335
|
-
throw new
|
|
2365
|
+
throw new import_provider26.InvalidPromptError({
|
|
2336
2366
|
prompt,
|
|
2337
2367
|
message: "messages must not be empty"
|
|
2338
2368
|
});
|
|
2339
2369
|
}
|
|
2340
2370
|
if (messages.some((message) => message.role === "system")) {
|
|
2341
2371
|
if (allowSystemInMessages === false) {
|
|
2342
|
-
throw new
|
|
2372
|
+
throw new import_provider26.InvalidPromptError({
|
|
2343
2373
|
prompt,
|
|
2344
2374
|
message: "System messages are not allowed in the prompt or messages fields. Use the system option instead."
|
|
2345
2375
|
});
|
|
@@ -2355,7 +2385,7 @@ async function standardizePrompt({
|
|
|
2355
2385
|
schema: import_v46.z.array(modelMessageSchema)
|
|
2356
2386
|
});
|
|
2357
2387
|
if (!validationResult.success) {
|
|
2358
|
-
throw new
|
|
2388
|
+
throw new import_provider26.InvalidPromptError({
|
|
2359
2389
|
prompt,
|
|
2360
2390
|
message: "The messages do not match the ModelMessage[] schema.",
|
|
2361
2391
|
cause: validationResult.error
|
|
@@ -2366,14 +2396,14 @@ async function standardizePrompt({
|
|
|
2366
2396
|
|
|
2367
2397
|
// src/prompt/wrap-gateway-error.ts
|
|
2368
2398
|
var import_gateway2 = require("@ai-sdk/gateway");
|
|
2369
|
-
var
|
|
2399
|
+
var import_provider27 = require("@ai-sdk/provider");
|
|
2370
2400
|
function wrapGatewayError(error) {
|
|
2371
2401
|
if (!import_gateway2.GatewayAuthenticationError.isInstance(error))
|
|
2372
2402
|
return error;
|
|
2373
2403
|
const isProductionEnv = (process == null ? void 0 : process.env.NODE_ENV) === "production";
|
|
2374
2404
|
const moreInfoURL = "https://ai-sdk.dev/unauthenticated-ai-gateway";
|
|
2375
2405
|
if (isProductionEnv) {
|
|
2376
|
-
return new
|
|
2406
|
+
return new import_provider27.AISDKError({
|
|
2377
2407
|
name: "GatewayError",
|
|
2378
2408
|
message: `Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${moreInfoURL}`
|
|
2379
2409
|
});
|
|
@@ -2414,7 +2444,7 @@ function getBaseTelemetryAttributes({
|
|
|
2414
2444
|
telemetry,
|
|
2415
2445
|
headers
|
|
2416
2446
|
}) {
|
|
2417
|
-
var
|
|
2447
|
+
var _a23;
|
|
2418
2448
|
return {
|
|
2419
2449
|
"ai.model.provider": model.provider,
|
|
2420
2450
|
"ai.model.id": model.modelId,
|
|
@@ -2433,7 +2463,7 @@ function getBaseTelemetryAttributes({
|
|
|
2433
2463
|
return attributes;
|
|
2434
2464
|
}, {}),
|
|
2435
2465
|
// add metadata as attributes:
|
|
2436
|
-
...Object.entries((
|
|
2466
|
+
...Object.entries((_a23 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a23 : {}).reduce(
|
|
2437
2467
|
(attributes, [key, value]) => {
|
|
2438
2468
|
attributes[`ai.telemetry.metadata.${key}`] = value;
|
|
2439
2469
|
return attributes;
|
|
@@ -2458,7 +2488,7 @@ var noopTracer = {
|
|
|
2458
2488
|
startSpan() {
|
|
2459
2489
|
return noopSpan;
|
|
2460
2490
|
},
|
|
2461
|
-
startActiveSpan(
|
|
2491
|
+
startActiveSpan(name23, arg1, arg2, arg3) {
|
|
2462
2492
|
if (typeof arg1 === "function") {
|
|
2463
2493
|
return arg1(noopSpan);
|
|
2464
2494
|
}
|
|
@@ -2528,7 +2558,7 @@ function getTracer({
|
|
|
2528
2558
|
// src/telemetry/record-span.ts
|
|
2529
2559
|
var import_api2 = require("@opentelemetry/api");
|
|
2530
2560
|
async function recordSpan({
|
|
2531
|
-
name:
|
|
2561
|
+
name: name23,
|
|
2532
2562
|
tracer,
|
|
2533
2563
|
attributes,
|
|
2534
2564
|
fn,
|
|
@@ -2536,7 +2566,7 @@ async function recordSpan({
|
|
|
2536
2566
|
endOnError = endWhenDone
|
|
2537
2567
|
}) {
|
|
2538
2568
|
return tracer.startActiveSpan(
|
|
2539
|
-
|
|
2569
|
+
name23,
|
|
2540
2570
|
{ attributes: await attributes },
|
|
2541
2571
|
async (span) => {
|
|
2542
2572
|
const ctx = import_api2.context.active();
|
|
@@ -2666,15 +2696,15 @@ function registerTelemetryIntegration(integration) {
|
|
|
2666
2696
|
globalThis.AI_SDK_TELEMETRY_INTEGRATIONS.push(integration);
|
|
2667
2697
|
}
|
|
2668
2698
|
function getGlobalTelemetryIntegrations() {
|
|
2669
|
-
var
|
|
2670
|
-
return (
|
|
2699
|
+
var _a23;
|
|
2700
|
+
return (_a23 = globalThis.AI_SDK_TELEMETRY_INTEGRATIONS) != null ? _a23 : [];
|
|
2671
2701
|
}
|
|
2672
2702
|
|
|
2673
2703
|
// src/telemetry/get-global-telemetry-integration.ts
|
|
2674
2704
|
function bindTelemetryIntegration(integration) {
|
|
2675
|
-
var
|
|
2705
|
+
var _a23, _b, _c, _d, _e, _f;
|
|
2676
2706
|
return {
|
|
2677
|
-
onStart: (
|
|
2707
|
+
onStart: (_a23 = integration.onStart) == null ? void 0 : _a23.bind(integration),
|
|
2678
2708
|
onStepStart: (_b = integration.onStepStart) == null ? void 0 : _b.bind(integration),
|
|
2679
2709
|
onToolCallStart: (_c = integration.onToolCallStart) == null ? void 0 : _c.bind(integration),
|
|
2680
2710
|
onToolCallFinish: (_d = integration.onToolCallFinish) == null ? void 0 : _d.bind(integration),
|
|
@@ -2758,12 +2788,12 @@ function createNullLanguageModelUsage() {
|
|
|
2758
2788
|
};
|
|
2759
2789
|
}
|
|
2760
2790
|
function addLanguageModelUsage(usage1, usage2) {
|
|
2761
|
-
var
|
|
2791
|
+
var _a23, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
2762
2792
|
return {
|
|
2763
2793
|
inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
|
|
2764
2794
|
inputTokenDetails: {
|
|
2765
2795
|
noCacheTokens: addTokenCounts(
|
|
2766
|
-
(
|
|
2796
|
+
(_a23 = usage1.inputTokenDetails) == null ? void 0 : _a23.noCacheTokens,
|
|
2767
2797
|
(_b = usage2.inputTokenDetails) == null ? void 0 : _b.noCacheTokens
|
|
2768
2798
|
),
|
|
2769
2799
|
cacheReadTokens: addTokenCounts(
|
|
@@ -2809,14 +2839,14 @@ function addImageModelUsage(usage1, usage2) {
|
|
|
2809
2839
|
}
|
|
2810
2840
|
|
|
2811
2841
|
// src/util/retry-with-exponential-backoff.ts
|
|
2812
|
-
var
|
|
2842
|
+
var import_provider28 = require("@ai-sdk/provider");
|
|
2813
2843
|
var import_gateway3 = require("@ai-sdk/gateway");
|
|
2814
2844
|
var import_provider_utils8 = require("@ai-sdk/provider-utils");
|
|
2815
2845
|
function getRetryDelayInMs({
|
|
2816
2846
|
error,
|
|
2817
2847
|
exponentialBackoffDelay
|
|
2818
2848
|
}) {
|
|
2819
|
-
const headers =
|
|
2849
|
+
const headers = import_provider28.APICallError.isInstance(error) ? error.responseHeaders : import_provider28.APICallError.isInstance(error.cause) ? error.cause.responseHeaders : void 0;
|
|
2820
2850
|
if (!headers)
|
|
2821
2851
|
return exponentialBackoffDelay;
|
|
2822
2852
|
let ms;
|
|
@@ -2851,7 +2881,7 @@ var retryWithExponentialBackoffRespectingRetryHeaders = ({
|
|
|
2851
2881
|
initialDelayInMs,
|
|
2852
2882
|
backoffFactor,
|
|
2853
2883
|
abortSignal,
|
|
2854
|
-
shouldRetry: (error) => error instanceof Error && (
|
|
2884
|
+
shouldRetry: (error) => error instanceof Error && (import_provider28.APICallError.isInstance(error) && error.isRetryable === true || import_gateway3.GatewayError.isInstance(error) && error.isRetryable === true),
|
|
2855
2885
|
getDelayInMs: ({ error, exponentialBackoffDelay }) => getRetryDelayInMs({
|
|
2856
2886
|
error,
|
|
2857
2887
|
exponentialBackoffDelay
|
|
@@ -2990,8 +3020,8 @@ var import_provider_utils9 = require("@ai-sdk/provider-utils");
|
|
|
2990
3020
|
|
|
2991
3021
|
// src/util/now.ts
|
|
2992
3022
|
function now() {
|
|
2993
|
-
var
|
|
2994
|
-
return (_b = (
|
|
3023
|
+
var _a23, _b;
|
|
3024
|
+
return (_b = (_a23 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a23.now()) != null ? _b : Date.now();
|
|
2995
3025
|
}
|
|
2996
3026
|
|
|
2997
3027
|
// src/generate-text/execute-tool-call.ts
|
|
@@ -3009,7 +3039,7 @@ async function executeToolCall({
|
|
|
3009
3039
|
onToolCallStart,
|
|
3010
3040
|
onToolCallFinish
|
|
3011
3041
|
}) {
|
|
3012
|
-
var
|
|
3042
|
+
var _a23;
|
|
3013
3043
|
const { toolName, toolCallId, input } = toolCall;
|
|
3014
3044
|
const tool2 = tools == null ? void 0 : tools[toolName];
|
|
3015
3045
|
if ((tool2 == null ? void 0 : tool2.execute) == null) {
|
|
@@ -3035,7 +3065,7 @@ async function executeToolCall({
|
|
|
3035
3065
|
telemetry
|
|
3036
3066
|
}),
|
|
3037
3067
|
...Object.fromEntries(
|
|
3038
|
-
Object.entries((
|
|
3068
|
+
Object.entries((_a23 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a23 : {}).map(([key, value]) => [
|
|
3039
3069
|
`ai.telemetry.metadata.${key}`,
|
|
3040
3070
|
value
|
|
3041
3071
|
])
|
|
@@ -3164,7 +3194,7 @@ function filterActiveTools({
|
|
|
3164
3194
|
}
|
|
3165
3195
|
return Object.fromEntries(
|
|
3166
3196
|
Object.entries(tools).filter(
|
|
3167
|
-
([
|
|
3197
|
+
([name23]) => activeTools.includes(name23)
|
|
3168
3198
|
)
|
|
3169
3199
|
);
|
|
3170
3200
|
}
|
|
@@ -3327,7 +3357,7 @@ async function validateApprovedToolApprovals({
|
|
|
3327
3357
|
experimental_context,
|
|
3328
3358
|
toolApprovalSecret
|
|
3329
3359
|
}) {
|
|
3330
|
-
var
|
|
3360
|
+
var _a23;
|
|
3331
3361
|
const approved = [];
|
|
3332
3362
|
const denied = [];
|
|
3333
3363
|
const invalid = [];
|
|
@@ -3389,7 +3419,7 @@ async function validateApprovedToolApprovals({
|
|
|
3389
3419
|
approvalResponse: {
|
|
3390
3420
|
...approval.approvalResponse,
|
|
3391
3421
|
approved: false,
|
|
3392
|
-
reason: (
|
|
3422
|
+
reason: (_a23 = approval.approvalResponse.reason) != null ? _a23 : `Tool "${toolCall.toolName}" does not require approval`
|
|
3393
3423
|
}
|
|
3394
3424
|
});
|
|
3395
3425
|
}
|
|
@@ -3410,7 +3440,7 @@ __export(output_exports, {
|
|
|
3410
3440
|
object: () => object,
|
|
3411
3441
|
text: () => text
|
|
3412
3442
|
});
|
|
3413
|
-
var
|
|
3443
|
+
var import_provider29 = require("@ai-sdk/provider");
|
|
3414
3444
|
var import_provider_utils14 = require("@ai-sdk/provider-utils");
|
|
3415
3445
|
|
|
3416
3446
|
// src/util/parse-partial-json.ts
|
|
@@ -3785,7 +3815,7 @@ var text = () => ({
|
|
|
3785
3815
|
});
|
|
3786
3816
|
var object = ({
|
|
3787
3817
|
schema: inputSchema,
|
|
3788
|
-
name:
|
|
3818
|
+
name: name23,
|
|
3789
3819
|
description
|
|
3790
3820
|
}) => {
|
|
3791
3821
|
const schema = (0, import_provider_utils14.asSchema)(inputSchema);
|
|
@@ -3794,7 +3824,7 @@ var object = ({
|
|
|
3794
3824
|
responseFormat: (0, import_provider_utils14.resolve)(schema.jsonSchema).then((jsonSchema2) => ({
|
|
3795
3825
|
type: "json",
|
|
3796
3826
|
schema: jsonSchema2,
|
|
3797
|
-
...
|
|
3827
|
+
...name23 != null && { name: name23 },
|
|
3798
3828
|
...description != null && { description }
|
|
3799
3829
|
})),
|
|
3800
3830
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
@@ -3848,7 +3878,7 @@ var object = ({
|
|
|
3848
3878
|
};
|
|
3849
3879
|
var array = ({
|
|
3850
3880
|
element: inputElementSchema,
|
|
3851
|
-
name:
|
|
3881
|
+
name: name23,
|
|
3852
3882
|
description
|
|
3853
3883
|
}) => {
|
|
3854
3884
|
const elementSchema = (0, import_provider_utils14.asSchema)(inputElementSchema);
|
|
@@ -3868,7 +3898,7 @@ var array = ({
|
|
|
3868
3898
|
required: ["elements"],
|
|
3869
3899
|
additionalProperties: false
|
|
3870
3900
|
},
|
|
3871
|
-
...
|
|
3901
|
+
...name23 != null && { name: name23 },
|
|
3872
3902
|
...description != null && { description }
|
|
3873
3903
|
};
|
|
3874
3904
|
}),
|
|
@@ -3888,7 +3918,7 @@ var array = ({
|
|
|
3888
3918
|
if (outerValue == null || typeof outerValue !== "object" || !("elements" in outerValue) || !Array.isArray(outerValue.elements)) {
|
|
3889
3919
|
throw new NoObjectGeneratedError({
|
|
3890
3920
|
message: "No object generated: response did not match schema.",
|
|
3891
|
-
cause: new
|
|
3921
|
+
cause: new import_provider29.TypeValidationError({
|
|
3892
3922
|
value: outerValue,
|
|
3893
3923
|
cause: "response must be an object with an elements array"
|
|
3894
3924
|
}),
|
|
@@ -3962,7 +3992,7 @@ var array = ({
|
|
|
3962
3992
|
};
|
|
3963
3993
|
var choice = ({
|
|
3964
3994
|
options: choiceOptions,
|
|
3965
|
-
name:
|
|
3995
|
+
name: name23,
|
|
3966
3996
|
description
|
|
3967
3997
|
}) => {
|
|
3968
3998
|
return {
|
|
@@ -3979,7 +4009,7 @@ var choice = ({
|
|
|
3979
4009
|
required: ["result"],
|
|
3980
4010
|
additionalProperties: false
|
|
3981
4011
|
},
|
|
3982
|
-
...
|
|
4012
|
+
...name23 != null && { name: name23 },
|
|
3983
4013
|
...description != null && { description }
|
|
3984
4014
|
}),
|
|
3985
4015
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
@@ -3998,7 +4028,7 @@ var choice = ({
|
|
|
3998
4028
|
if (outerValue == null || typeof outerValue !== "object" || !("result" in outerValue) || typeof outerValue.result !== "string" || !choiceOptions.includes(outerValue.result)) {
|
|
3999
4029
|
throw new NoObjectGeneratedError({
|
|
4000
4030
|
message: "No object generated: response did not match schema.",
|
|
4001
|
-
cause: new
|
|
4031
|
+
cause: new import_provider29.TypeValidationError({
|
|
4002
4032
|
value: outerValue,
|
|
4003
4033
|
cause: "response must be an object that contains a choice value."
|
|
4004
4034
|
}),
|
|
@@ -4040,14 +4070,14 @@ var choice = ({
|
|
|
4040
4070
|
};
|
|
4041
4071
|
};
|
|
4042
4072
|
var json = ({
|
|
4043
|
-
name:
|
|
4073
|
+
name: name23,
|
|
4044
4074
|
description
|
|
4045
4075
|
} = {}) => {
|
|
4046
4076
|
return {
|
|
4047
4077
|
name: "json",
|
|
4048
4078
|
responseFormat: Promise.resolve({
|
|
4049
4079
|
type: "json",
|
|
4050
|
-
...
|
|
4080
|
+
...name23 != null && { name: name23 },
|
|
4051
4081
|
...description != null && { description }
|
|
4052
4082
|
}),
|
|
4053
4083
|
async parseCompleteOutput({ text: text2 }, context2) {
|
|
@@ -4218,9 +4248,9 @@ function prepareStepCallSettings({
|
|
|
4218
4248
|
callSettings,
|
|
4219
4249
|
stepSettings
|
|
4220
4250
|
}) {
|
|
4221
|
-
var
|
|
4251
|
+
var _a23, _b, _c, _d, _e, _f, _g, _h;
|
|
4222
4252
|
return prepareCallSettings({
|
|
4223
|
-
maxOutputTokens: (
|
|
4253
|
+
maxOutputTokens: (_a23 = stepSettings == null ? void 0 : stepSettings.maxOutputTokens) != null ? _a23 : callSettings.maxOutputTokens,
|
|
4224
4254
|
temperature: (_b = stepSettings == null ? void 0 : stepSettings.temperature) != null ? _b : callSettings.temperature,
|
|
4225
4255
|
topP: (_c = stepSettings == null ? void 0 : stepSettings.topP) != null ? _c : callSettings.topP,
|
|
4226
4256
|
topK: (_d = stepSettings == null ? void 0 : stepSettings.topK) != null ? _d : callSettings.topK,
|
|
@@ -4314,8 +4344,8 @@ function isLoopFinished() {
|
|
|
4314
4344
|
}
|
|
4315
4345
|
function hasToolCall(toolName) {
|
|
4316
4346
|
return ({ steps }) => {
|
|
4317
|
-
var
|
|
4318
|
-
return (_c = (_b = (
|
|
4347
|
+
var _a23, _b, _c;
|
|
4348
|
+
return (_c = (_b = (_a23 = steps[steps.length - 1]) == null ? void 0 : _a23.toolCalls) == null ? void 0 : _b.some(
|
|
4319
4349
|
(toolCall) => toolCall.toolName === toolName
|
|
4320
4350
|
)) != null ? _c : false;
|
|
4321
4351
|
};
|
|
@@ -4645,7 +4675,7 @@ async function generateText({
|
|
|
4645
4675
|
}),
|
|
4646
4676
|
tracer,
|
|
4647
4677
|
fn: async (span) => {
|
|
4648
|
-
var
|
|
4678
|
+
var _a23, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
|
|
4649
4679
|
const initialMessages = initialPrompt.messages;
|
|
4650
4680
|
const responseMessages = [];
|
|
4651
4681
|
const {
|
|
@@ -4770,7 +4800,7 @@ async function generateText({
|
|
|
4770
4800
|
experimental_context
|
|
4771
4801
|
}));
|
|
4772
4802
|
const stepModel = resolveLanguageModel(
|
|
4773
|
-
(
|
|
4803
|
+
(_a23 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a23 : model
|
|
4774
4804
|
);
|
|
4775
4805
|
const stepModelInfo = {
|
|
4776
4806
|
provider: stepModel.provider,
|
|
@@ -4870,7 +4900,7 @@ async function generateText({
|
|
|
4870
4900
|
}),
|
|
4871
4901
|
tracer,
|
|
4872
4902
|
fn: async (span2) => {
|
|
4873
|
-
var
|
|
4903
|
+
var _a24, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
|
|
4874
4904
|
const result = await stepModel.doGenerate({
|
|
4875
4905
|
...stepCallSettings,
|
|
4876
4906
|
tools: stepTools,
|
|
@@ -4882,7 +4912,7 @@ async function generateText({
|
|
|
4882
4912
|
headers: headersWithUserAgent
|
|
4883
4913
|
});
|
|
4884
4914
|
const responseData = {
|
|
4885
|
-
id: (_b2 = (
|
|
4915
|
+
id: (_b2 = (_a24 = result.response) == null ? void 0 : _a24.id) != null ? _b2 : generateId2(),
|
|
4886
4916
|
timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : /* @__PURE__ */ new Date(),
|
|
4887
4917
|
modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,
|
|
4888
4918
|
headers: (_g2 = result.response) == null ? void 0 : _g2.headers,
|
|
@@ -4950,6 +4980,18 @@ async function generateText({
|
|
|
4950
4980
|
})
|
|
4951
4981
|
)
|
|
4952
4982
|
);
|
|
4983
|
+
const enforcedToolChoice = (stepToolChoice == null ? void 0 : stepToolChoice.type) === "required" || (stepToolChoice == null ? void 0 : stepToolChoice.type) === "tool" ? stepToolChoice : void 0;
|
|
4984
|
+
if (enforcedToolChoice != null && !stepToolCalls.some(
|
|
4985
|
+
(toolCall) => enforcedToolChoice.type === "required" || toolCall.toolName === enforcedToolChoice.toolName
|
|
4986
|
+
)) {
|
|
4987
|
+
throw new ToolChoiceViolationError({
|
|
4988
|
+
toolChoice: enforcedToolChoice,
|
|
4989
|
+
finishReason: currentModelResponse.finishReason.unified,
|
|
4990
|
+
provider: stepModel.provider,
|
|
4991
|
+
modelId: stepModel.modelId,
|
|
4992
|
+
content: currentModelResponse.content
|
|
4993
|
+
});
|
|
4994
|
+
}
|
|
4953
4995
|
const toolApprovalRequests = {};
|
|
4954
4996
|
for (const toolCall of stepToolCalls) {
|
|
4955
4997
|
if (toolCall.invalid) {
|
|
@@ -5470,7 +5512,7 @@ function asContent({
|
|
|
5470
5512
|
}
|
|
5471
5513
|
|
|
5472
5514
|
// src/generate-text/stream-text.ts
|
|
5473
|
-
var
|
|
5515
|
+
var import_provider30 = require("@ai-sdk/provider");
|
|
5474
5516
|
var import_provider_utils20 = require("@ai-sdk/provider-utils");
|
|
5475
5517
|
|
|
5476
5518
|
// src/util/prepare-headers.ts
|
|
@@ -5867,7 +5909,7 @@ function processUIMessageStream({
|
|
|
5867
5909
|
new TransformStream({
|
|
5868
5910
|
async transform(chunk, controller) {
|
|
5869
5911
|
await runUpdateMessageJob(async ({ state, write }) => {
|
|
5870
|
-
var
|
|
5912
|
+
var _a23, _b, _c, _d;
|
|
5871
5913
|
function getCurrentStepParts() {
|
|
5872
5914
|
const parts = state.message.parts;
|
|
5873
5915
|
let currentStepStartIndex = parts.length - 1;
|
|
@@ -5904,7 +5946,7 @@ function processUIMessageStream({
|
|
|
5904
5946
|
return toolInvocation;
|
|
5905
5947
|
}
|
|
5906
5948
|
function updateToolPart(options, existingPart) {
|
|
5907
|
-
var
|
|
5949
|
+
var _a24;
|
|
5908
5950
|
const part = existingPart != null ? existingPart : getCurrentStepParts().find(
|
|
5909
5951
|
(part2) => isStaticToolUIPart(part2) && part2.toolCallId === options.toolCallId
|
|
5910
5952
|
);
|
|
@@ -5923,7 +5965,7 @@ function processUIMessageStream({
|
|
|
5923
5965
|
if (options.toolMetadata !== void 0) {
|
|
5924
5966
|
anyPart.toolMetadata = options.toolMetadata;
|
|
5925
5967
|
}
|
|
5926
|
-
anyPart.providerExecuted = (
|
|
5968
|
+
anyPart.providerExecuted = (_a24 = anyOptions.providerExecuted) != null ? _a24 : part.providerExecuted;
|
|
5927
5969
|
const providerMetadata = anyOptions.providerMetadata;
|
|
5928
5970
|
if (providerMetadata != null) {
|
|
5929
5971
|
if (options.state === "output-available" || options.state === "output-error") {
|
|
@@ -5952,7 +5994,7 @@ function processUIMessageStream({
|
|
|
5952
5994
|
}
|
|
5953
5995
|
}
|
|
5954
5996
|
function updateDynamicToolPart(options, existingPart) {
|
|
5955
|
-
var
|
|
5997
|
+
var _a24, _b2;
|
|
5956
5998
|
const part = existingPart != null ? existingPart : getCurrentStepParts().find(
|
|
5957
5999
|
(part2) => part2.type === "dynamic-tool" && part2.toolCallId === options.toolCallId
|
|
5958
6000
|
);
|
|
@@ -5964,7 +6006,7 @@ function processUIMessageStream({
|
|
|
5964
6006
|
anyPart.input = anyOptions.input;
|
|
5965
6007
|
anyPart.output = anyOptions.output;
|
|
5966
6008
|
anyPart.errorText = anyOptions.errorText;
|
|
5967
|
-
anyPart.rawInput = (
|
|
6009
|
+
anyPart.rawInput = (_a24 = anyOptions.rawInput) != null ? _a24 : anyPart.rawInput;
|
|
5968
6010
|
anyPart.preliminary = anyOptions.preliminary;
|
|
5969
6011
|
if (options.title !== void 0) {
|
|
5970
6012
|
anyPart.title = options.title;
|
|
@@ -6039,7 +6081,7 @@ function processUIMessageStream({
|
|
|
6039
6081
|
});
|
|
6040
6082
|
}
|
|
6041
6083
|
textPart.text += chunk.delta;
|
|
6042
|
-
textPart.providerMetadata = (
|
|
6084
|
+
textPart.providerMetadata = (_a23 = chunk.providerMetadata) != null ? _a23 : textPart.providerMetadata;
|
|
6043
6085
|
write();
|
|
6044
6086
|
break;
|
|
6045
6087
|
}
|
|
@@ -6446,7 +6488,8 @@ function handleUIMessageStreamFinish({
|
|
|
6446
6488
|
onStepFinish,
|
|
6447
6489
|
onFinish,
|
|
6448
6490
|
onError,
|
|
6449
|
-
stream
|
|
6491
|
+
stream,
|
|
6492
|
+
getOutcome
|
|
6450
6493
|
}) {
|
|
6451
6494
|
let lastMessage = originalMessages == null ? void 0 : originalMessages[originalMessages.length - 1];
|
|
6452
6495
|
if ((lastMessage == null ? void 0 : lastMessage.role) !== "assistant") {
|
|
@@ -6455,19 +6498,34 @@ function handleUIMessageStreamFinish({
|
|
|
6455
6498
|
messageId = lastMessage.id;
|
|
6456
6499
|
}
|
|
6457
6500
|
let isAborted = false;
|
|
6501
|
+
let hasProcessingFailure = false;
|
|
6502
|
+
let processingError;
|
|
6503
|
+
const recordProcessingFailure = (error) => {
|
|
6504
|
+
hasProcessingFailure = true;
|
|
6505
|
+
processingError = error;
|
|
6506
|
+
};
|
|
6458
6507
|
const idInjectedStream = stream.pipeThrough(
|
|
6459
6508
|
new TransformStream({
|
|
6460
6509
|
transform(chunk, controller) {
|
|
6461
|
-
|
|
6462
|
-
|
|
6463
|
-
if (
|
|
6464
|
-
startChunk
|
|
6510
|
+
try {
|
|
6511
|
+
let outputChunk = chunk;
|
|
6512
|
+
if (chunk.type === "start") {
|
|
6513
|
+
const startChunk = chunk;
|
|
6514
|
+
if (startChunk.messageId == null && messageId != null) {
|
|
6515
|
+
outputChunk = {
|
|
6516
|
+
...startChunk,
|
|
6517
|
+
messageId
|
|
6518
|
+
};
|
|
6519
|
+
}
|
|
6465
6520
|
}
|
|
6521
|
+
if (chunk.type === "abort") {
|
|
6522
|
+
isAborted = true;
|
|
6523
|
+
}
|
|
6524
|
+
controller.enqueue(outputChunk);
|
|
6525
|
+
} catch (error) {
|
|
6526
|
+
recordProcessingFailure(error);
|
|
6527
|
+
throw error;
|
|
6466
6528
|
}
|
|
6467
|
-
if (chunk.type === "abort") {
|
|
6468
|
-
isAborted = true;
|
|
6469
|
-
}
|
|
6470
|
-
controller.enqueue(chunk);
|
|
6471
6529
|
}
|
|
6472
6530
|
})
|
|
6473
6531
|
);
|
|
@@ -6480,19 +6538,28 @@ function handleUIMessageStreamFinish({
|
|
|
6480
6538
|
// will be overridden by the stream
|
|
6481
6539
|
});
|
|
6482
6540
|
const runUpdateMessageJob = async (job) => {
|
|
6483
|
-
|
|
6484
|
-
|
|
6541
|
+
try {
|
|
6542
|
+
await job({ state, write: () => {
|
|
6543
|
+
} });
|
|
6544
|
+
} catch (error) {
|
|
6545
|
+
recordProcessingFailure(error);
|
|
6546
|
+
throw error;
|
|
6547
|
+
}
|
|
6485
6548
|
};
|
|
6486
6549
|
let finishCalled = false;
|
|
6487
6550
|
const callOnFinish = async () => {
|
|
6551
|
+
var _a23;
|
|
6488
6552
|
if (finishCalled || !onFinish) {
|
|
6489
6553
|
return;
|
|
6490
6554
|
}
|
|
6491
6555
|
finishCalled = true;
|
|
6492
6556
|
const isContinuation = state.message.id === (lastMessage == null ? void 0 : lastMessage.id);
|
|
6557
|
+
const declaredOutcome = (_a23 = getOutcome == null ? void 0 : getOutcome()) != null ? _a23 : { status: "unknown" };
|
|
6558
|
+
const outcome = hasProcessingFailure ? { status: "failed", error: processingError } : declaredOutcome.status === "unknown" && isAborted ? { status: "aborted" } : declaredOutcome;
|
|
6493
6559
|
await onFinish({
|
|
6494
|
-
isAborted,
|
|
6560
|
+
isAborted: isAborted || outcome.status === "aborted",
|
|
6495
6561
|
isContinuation,
|
|
6562
|
+
outcome,
|
|
6496
6563
|
responseMessage: state.message,
|
|
6497
6564
|
messages: [
|
|
6498
6565
|
...isContinuation ? originalMessages.slice(0, -1) : originalMessages,
|
|
@@ -6516,7 +6583,13 @@ function handleUIMessageStreamFinish({
|
|
|
6516
6583
|
]
|
|
6517
6584
|
});
|
|
6518
6585
|
} catch (error) {
|
|
6519
|
-
|
|
6586
|
+
try {
|
|
6587
|
+
onError(error);
|
|
6588
|
+
} catch (onErrorError) {
|
|
6589
|
+
recordProcessingFailure(onErrorError);
|
|
6590
|
+
await callOnFinish();
|
|
6591
|
+
throw onErrorError;
|
|
6592
|
+
}
|
|
6520
6593
|
}
|
|
6521
6594
|
};
|
|
6522
6595
|
return processUIMessageStream({
|
|
@@ -6575,13 +6648,13 @@ function createAsyncIterableStream(source) {
|
|
|
6575
6648
|
const reader = this.getReader();
|
|
6576
6649
|
let finished = false;
|
|
6577
6650
|
async function cleanup(cancelStream) {
|
|
6578
|
-
var
|
|
6651
|
+
var _a23;
|
|
6579
6652
|
if (finished)
|
|
6580
6653
|
return;
|
|
6581
6654
|
finished = true;
|
|
6582
6655
|
try {
|
|
6583
6656
|
if (cancelStream) {
|
|
6584
|
-
await ((
|
|
6657
|
+
await ((_a23 = reader.cancel) == null ? void 0 : _a23.call(reader));
|
|
6585
6658
|
}
|
|
6586
6659
|
} finally {
|
|
6587
6660
|
try {
|
|
@@ -6696,7 +6769,7 @@ function createStitchableStream() {
|
|
|
6696
6769
|
controller == null ? void 0 : controller.close();
|
|
6697
6770
|
};
|
|
6698
6771
|
const processPull = async () => {
|
|
6699
|
-
var
|
|
6772
|
+
var _a23;
|
|
6700
6773
|
if (isCancelled) {
|
|
6701
6774
|
return;
|
|
6702
6775
|
}
|
|
@@ -6729,7 +6802,7 @@ function createStitchableStream() {
|
|
|
6729
6802
|
if (isCancelled) {
|
|
6730
6803
|
return;
|
|
6731
6804
|
}
|
|
6732
|
-
(
|
|
6805
|
+
(_a23 = currentStream.onError) == null ? void 0 : _a23.call(currentStream, error);
|
|
6733
6806
|
controller == null ? void 0 : controller.error(error);
|
|
6734
6807
|
innerStreams.shift();
|
|
6735
6808
|
terminate();
|
|
@@ -6753,9 +6826,9 @@ function createStitchableStream() {
|
|
|
6753
6826
|
}
|
|
6754
6827
|
}),
|
|
6755
6828
|
addStream: (innerStream, callbacks) => {
|
|
6756
|
-
var
|
|
6829
|
+
var _a23;
|
|
6757
6830
|
if (isCancelled) {
|
|
6758
|
-
(
|
|
6831
|
+
(_a23 = callbacks == null ? void 0 : callbacks.onCancel) == null ? void 0 : _a23.call(callbacks);
|
|
6759
6832
|
void innerStream.cancel().catch(() => {
|
|
6760
6833
|
});
|
|
6761
6834
|
return;
|
|
@@ -7234,7 +7307,7 @@ function createOutputTransformStream(output) {
|
|
|
7234
7307
|
}
|
|
7235
7308
|
return new TransformStream({
|
|
7236
7309
|
async transform(chunk, controller) {
|
|
7237
|
-
var
|
|
7310
|
+
var _a23;
|
|
7238
7311
|
if (chunk.type === "finish-step" && textChunk.length > 0) {
|
|
7239
7312
|
publishTextChunk({ controller });
|
|
7240
7313
|
}
|
|
@@ -7261,7 +7334,7 @@ function createOutputTransformStream(output) {
|
|
|
7261
7334
|
}
|
|
7262
7335
|
text2 += chunk.text;
|
|
7263
7336
|
textChunk += chunk.text;
|
|
7264
|
-
textProviderMetadata = (
|
|
7337
|
+
textProviderMetadata = (_a23 = chunk.providerMetadata) != null ? _a23 : textProviderMetadata;
|
|
7265
7338
|
if (chunk.text.length === 0 && chunk.providerMetadata != null) {
|
|
7266
7339
|
controller.enqueue({ part: chunk, partialOutput: void 0 });
|
|
7267
7340
|
return;
|
|
@@ -7367,7 +7440,7 @@ var DefaultStreamTextResult = class {
|
|
|
7367
7440
|
let activeReasoningContent = createIdMap();
|
|
7368
7441
|
const eventProcessor = new TransformStream({
|
|
7369
7442
|
async transform(chunk, controller) {
|
|
7370
|
-
var
|
|
7443
|
+
var _a23, _b, _c, _d;
|
|
7371
7444
|
controller.enqueue(chunk);
|
|
7372
7445
|
const { part } = chunk;
|
|
7373
7446
|
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") {
|
|
@@ -7407,7 +7480,7 @@ var DefaultStreamTextResult = class {
|
|
|
7407
7480
|
return;
|
|
7408
7481
|
}
|
|
7409
7482
|
activeText.text += part.text;
|
|
7410
|
-
activeText.providerMetadata = (
|
|
7483
|
+
activeText.providerMetadata = (_a23 = part.providerMetadata) != null ? _a23 : activeText.providerMetadata;
|
|
7411
7484
|
}
|
|
7412
7485
|
if (part.type === "text-end") {
|
|
7413
7486
|
const activeText = activeTextContent[part.id];
|
|
@@ -7533,7 +7606,7 @@ var DefaultStreamTextResult = class {
|
|
|
7533
7606
|
}
|
|
7534
7607
|
},
|
|
7535
7608
|
async flush(controller) {
|
|
7536
|
-
var
|
|
7609
|
+
var _a23, _b, _c, _d, _e, _f, _g;
|
|
7537
7610
|
try {
|
|
7538
7611
|
if (recordedSteps.length === 0 || recordedNoOutputError != null) {
|
|
7539
7612
|
const error = (abortSignal == null ? void 0 : abortSignal.aborted) ? abortSignal.reason : recordedNoOutputError != null ? recordedNoOutputError : new NoOutputGeneratedError({
|
|
@@ -7597,15 +7670,15 @@ var DefaultStreamTextResult = class {
|
|
|
7597
7670
|
},
|
|
7598
7671
|
"ai.response.toolCalls": {
|
|
7599
7672
|
output: () => {
|
|
7600
|
-
var
|
|
7601
|
-
return ((
|
|
7673
|
+
var _a24;
|
|
7674
|
+
return ((_a24 = finalStep.toolCalls) == null ? void 0 : _a24.length) ? JSON.stringify(finalStep.toolCalls) : void 0;
|
|
7602
7675
|
}
|
|
7603
7676
|
},
|
|
7604
7677
|
"ai.response.providerMetadata": JSON.stringify(
|
|
7605
7678
|
finalStep.providerMetadata
|
|
7606
7679
|
),
|
|
7607
7680
|
"ai.usage.inputTokens": totalUsage.inputTokens,
|
|
7608
|
-
"ai.usage.inputTokenDetails.noCacheTokens": (
|
|
7681
|
+
"ai.usage.inputTokenDetails.noCacheTokens": (_a23 = totalUsage.inputTokenDetails) == null ? void 0 : _a23.noCacheTokens,
|
|
7609
7682
|
"ai.usage.inputTokenDetails.cacheReadTokens": (_b = totalUsage.inputTokenDetails) == null ? void 0 : _b.cacheReadTokens,
|
|
7610
7683
|
"ai.usage.inputTokenDetails.cacheWriteTokens": (_c = totalUsage.inputTokenDetails) == null ? void 0 : _c.cacheWriteTokens,
|
|
7611
7684
|
"ai.usage.outputTokens": totalUsage.outputTokens,
|
|
@@ -7640,7 +7713,7 @@ var DefaultStreamTextResult = class {
|
|
|
7640
7713
|
// The `reason` is usually of type DOMException, but it can also be of any type,
|
|
7641
7714
|
// so we use getErrorMessage for serialization because it is already designed to accept values of the unknown type.
|
|
7642
7715
|
// See: https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/reason
|
|
7643
|
-
...(abortSignal == null ? void 0 : abortSignal.reason) !== void 0 ? { reason: (0,
|
|
7716
|
+
...(abortSignal == null ? void 0 : abortSignal.reason) !== void 0 ? { reason: (0, import_provider30.getErrorMessage)(abortSignal.reason) } : {}
|
|
7644
7717
|
});
|
|
7645
7718
|
controller.close();
|
|
7646
7719
|
}
|
|
@@ -7802,7 +7875,7 @@ var DefaultStreamTextResult = class {
|
|
|
7802
7875
|
toolCallId: toolApproval.toolCall.toolCallId,
|
|
7803
7876
|
toolName: toolApproval.toolCall.toolName,
|
|
7804
7877
|
input: toolApproval.toolCall.input,
|
|
7805
|
-
error: (0,
|
|
7878
|
+
error: (0, import_provider30.getErrorMessage)(toolApproval.error),
|
|
7806
7879
|
title: toolApproval.toolCall.title,
|
|
7807
7880
|
...toolApproval.toolCall.dynamic === true ? { dynamic: true } : {},
|
|
7808
7881
|
...toolApproval.toolCall.toolMetadata != null ? { toolMetadata: toolApproval.toolCall.toolMetadata } : {}
|
|
@@ -7895,7 +7968,7 @@ var DefaultStreamTextResult = class {
|
|
|
7895
7968
|
responseMessages,
|
|
7896
7969
|
usage
|
|
7897
7970
|
}) {
|
|
7898
|
-
var
|
|
7971
|
+
var _a23, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
7899
7972
|
const includeRawChunks2 = self.includeRawChunks;
|
|
7900
7973
|
const stepTimeoutId = setAbortTimeout({
|
|
7901
7974
|
abortController: stepAbortController,
|
|
@@ -7946,7 +8019,7 @@ var DefaultStreamTextResult = class {
|
|
|
7946
8019
|
experimental_context
|
|
7947
8020
|
}));
|
|
7948
8021
|
const stepModel = resolveLanguageModel(
|
|
7949
|
-
(
|
|
8022
|
+
(_a23 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a23 : model
|
|
7950
8023
|
);
|
|
7951
8024
|
const stepModelInfo = {
|
|
7952
8025
|
provider: stepModel.provider,
|
|
@@ -8116,7 +8189,7 @@ var DefaultStreamTextResult = class {
|
|
|
8116
8189
|
streamWithToolResults.pipeThrough(
|
|
8117
8190
|
new TransformStream({
|
|
8118
8191
|
async transform(chunk, controller) {
|
|
8119
|
-
var
|
|
8192
|
+
var _a24, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2;
|
|
8120
8193
|
resetChunkTimeout();
|
|
8121
8194
|
if (chunk.type === "stream-start") {
|
|
8122
8195
|
warnings = chunk.warnings;
|
|
@@ -8155,7 +8228,7 @@ var DefaultStreamTextResult = class {
|
|
|
8155
8228
|
case "text-end": {
|
|
8156
8229
|
controller.enqueue({
|
|
8157
8230
|
...chunk,
|
|
8158
|
-
id: (
|
|
8231
|
+
id: (_a24 = textPartIds.get(chunk.id)) != null ? _a24 : chunk.id
|
|
8159
8232
|
});
|
|
8160
8233
|
textPartIds.delete(chunk.id);
|
|
8161
8234
|
break;
|
|
@@ -8302,7 +8375,7 @@ var DefaultStreamTextResult = class {
|
|
|
8302
8375
|
},
|
|
8303
8376
|
// invoke onFinish callback and resolve toolResults promise when the stream is about to close:
|
|
8304
8377
|
async flush(controller) {
|
|
8305
|
-
var
|
|
8378
|
+
var _a24, _b2, _c2, _d2, _e2, _f2, _g2;
|
|
8306
8379
|
if (!hasReceivedTerminalChunk && !hasReceivedOutputChunk) {
|
|
8307
8380
|
controller.enqueue({
|
|
8308
8381
|
type: "error",
|
|
@@ -8329,7 +8402,7 @@ var DefaultStreamTextResult = class {
|
|
|
8329
8402
|
"ai.response.model": stepResponse.modelId,
|
|
8330
8403
|
"ai.response.timestamp": stepResponse.timestamp.toISOString(),
|
|
8331
8404
|
"ai.usage.inputTokens": stepUsage.inputTokens,
|
|
8332
|
-
"ai.usage.inputTokenDetails.noCacheTokens": (
|
|
8405
|
+
"ai.usage.inputTokenDetails.noCacheTokens": (_a24 = stepUsage.inputTokenDetails) == null ? void 0 : _a24.noCacheTokens,
|
|
8333
8406
|
"ai.usage.inputTokenDetails.cacheReadTokens": (_b2 = stepUsage.inputTokenDetails) == null ? void 0 : _b2.cacheReadTokens,
|
|
8334
8407
|
"ai.usage.inputTokenDetails.cacheWriteTokens": (_c2 = stepUsage.inputTokenDetails) == null ? void 0 : _c2.cacheWriteTokens,
|
|
8335
8408
|
"ai.usage.outputTokens": stepUsage.outputTokens,
|
|
@@ -8606,19 +8679,19 @@ var DefaultStreamTextResult = class {
|
|
|
8606
8679
|
this._steps.reject(error);
|
|
8607
8680
|
}
|
|
8608
8681
|
async consumeStream(options) {
|
|
8609
|
-
var
|
|
8682
|
+
var _a23;
|
|
8610
8683
|
try {
|
|
8611
8684
|
await consumeStream({
|
|
8612
8685
|
stream: this.fullStream,
|
|
8613
8686
|
onError: (error) => {
|
|
8614
|
-
var
|
|
8687
|
+
var _a24;
|
|
8615
8688
|
this.rejectResultPromises(error);
|
|
8616
|
-
(
|
|
8689
|
+
(_a24 = options == null ? void 0 : options.onError) == null ? void 0 : _a24.call(options, error);
|
|
8617
8690
|
}
|
|
8618
8691
|
});
|
|
8619
8692
|
} catch (error) {
|
|
8620
8693
|
this.rejectResultPromises(error);
|
|
8621
|
-
(
|
|
8694
|
+
(_a23 = options == null ? void 0 : options.onError) == null ? void 0 : _a23.call(options, error);
|
|
8622
8695
|
}
|
|
8623
8696
|
}
|
|
8624
8697
|
get experimental_partialOutputStream() {
|
|
@@ -8638,10 +8711,10 @@ var DefaultStreamTextResult = class {
|
|
|
8638
8711
|
);
|
|
8639
8712
|
}
|
|
8640
8713
|
get elementStream() {
|
|
8641
|
-
var
|
|
8642
|
-
const transform = (
|
|
8714
|
+
var _a23, _b, _c;
|
|
8715
|
+
const transform = (_a23 = this.outputSpecification) == null ? void 0 : _a23.createElementStreamTransform();
|
|
8643
8716
|
if (transform == null) {
|
|
8644
|
-
throw new
|
|
8717
|
+
throw new import_provider30.UnsupportedFunctionalityError({
|
|
8645
8718
|
functionality: `element streams in ${(_c = (_b = this.outputSpecification) == null ? void 0 : _b.name) != null ? _c : "text"} mode`
|
|
8646
8719
|
});
|
|
8647
8720
|
}
|
|
@@ -8649,8 +8722,8 @@ var DefaultStreamTextResult = class {
|
|
|
8649
8722
|
}
|
|
8650
8723
|
get output() {
|
|
8651
8724
|
return this.finalStep.then((step) => {
|
|
8652
|
-
var
|
|
8653
|
-
const output = (
|
|
8725
|
+
var _a23;
|
|
8726
|
+
const output = (_a23 = this.outputSpecification) != null ? _a23 : text();
|
|
8654
8727
|
return output.parseCompleteOutput(
|
|
8655
8728
|
{ text: step.text },
|
|
8656
8729
|
{
|
|
@@ -8673,19 +8746,74 @@ var DefaultStreamTextResult = class {
|
|
|
8673
8746
|
onError = () => "An error occurred."
|
|
8674
8747
|
// prevent leaking server error details to the client by default
|
|
8675
8748
|
} = {}) {
|
|
8749
|
+
let outcome = { status: "unknown" };
|
|
8750
|
+
let hasFatalFailure = false;
|
|
8751
|
+
const setSourceOutcome = (newOutcome) => {
|
|
8752
|
+
if (!hasFatalFailure && outcome.status !== "completed" && outcome.status !== "aborted" && newOutcome.status !== "unknown" && (outcome.status === "unknown" || newOutcome.status !== "failed")) {
|
|
8753
|
+
outcome = newOutcome;
|
|
8754
|
+
}
|
|
8755
|
+
};
|
|
8756
|
+
const failOutcome = (error) => {
|
|
8757
|
+
hasFatalFailure = true;
|
|
8758
|
+
outcome = { status: "failed", error };
|
|
8759
|
+
};
|
|
8676
8760
|
const responseMessageId = generateMessageId != null ? getResponseUIMessageId({
|
|
8677
8761
|
originalMessages,
|
|
8678
8762
|
responseMessageId: generateMessageId
|
|
8679
8763
|
}) : void 0;
|
|
8680
8764
|
const isDynamic = (part) => {
|
|
8681
|
-
var
|
|
8682
|
-
const tool2 = (
|
|
8765
|
+
var _a23;
|
|
8766
|
+
const tool2 = (_a23 = this.tools) == null ? void 0 : _a23[part.toolName];
|
|
8683
8767
|
if (tool2 == null) {
|
|
8684
8768
|
return part.dynamic;
|
|
8685
8769
|
}
|
|
8686
8770
|
return (tool2 == null ? void 0 : tool2.type) === "dynamic" ? true : void 0;
|
|
8687
8771
|
};
|
|
8688
|
-
const
|
|
8772
|
+
const trackFatalFailures = (stream) => {
|
|
8773
|
+
const reader = stream.getReader();
|
|
8774
|
+
let readerReleased = false;
|
|
8775
|
+
let streamCancelled = false;
|
|
8776
|
+
const releaseReader = () => {
|
|
8777
|
+
if (!readerReleased) {
|
|
8778
|
+
reader.releaseLock();
|
|
8779
|
+
readerReleased = true;
|
|
8780
|
+
}
|
|
8781
|
+
};
|
|
8782
|
+
return new ReadableStream({
|
|
8783
|
+
async pull(controller) {
|
|
8784
|
+
try {
|
|
8785
|
+
const { done, value } = await reader.read();
|
|
8786
|
+
if (done) {
|
|
8787
|
+
releaseReader();
|
|
8788
|
+
if (!streamCancelled) {
|
|
8789
|
+
controller.close();
|
|
8790
|
+
}
|
|
8791
|
+
} else {
|
|
8792
|
+
controller.enqueue(value);
|
|
8793
|
+
}
|
|
8794
|
+
} catch (error) {
|
|
8795
|
+
releaseReader();
|
|
8796
|
+
if (!streamCancelled) {
|
|
8797
|
+
failOutcome(error);
|
|
8798
|
+
controller.error(error);
|
|
8799
|
+
}
|
|
8800
|
+
}
|
|
8801
|
+
},
|
|
8802
|
+
async cancel(reason) {
|
|
8803
|
+
streamCancelled = true;
|
|
8804
|
+
if (readerReleased) {
|
|
8805
|
+
return;
|
|
8806
|
+
}
|
|
8807
|
+
try {
|
|
8808
|
+
await reader.cancel(reason);
|
|
8809
|
+
} finally {
|
|
8810
|
+
releaseReader();
|
|
8811
|
+
}
|
|
8812
|
+
}
|
|
8813
|
+
});
|
|
8814
|
+
};
|
|
8815
|
+
const sourceStream = trackFatalFailures(this.fullStream);
|
|
8816
|
+
const convertedStream = sourceStream.pipeThrough(
|
|
8689
8817
|
new TransformStream({
|
|
8690
8818
|
transform: async (part, controller) => {
|
|
8691
8819
|
const messageMetadataValue = messageMetadata == null ? void 0 : messageMetadata({ part });
|
|
@@ -8922,16 +9050,25 @@ var DefaultStreamTextResult = class {
|
|
|
8922
9050
|
messageMetadata: messageMetadataValue
|
|
8923
9051
|
});
|
|
8924
9052
|
}
|
|
9053
|
+
if (part.type === "finish") {
|
|
9054
|
+
setSourceOutcome({ status: "completed" });
|
|
9055
|
+
} else if (part.type === "abort") {
|
|
9056
|
+
setSourceOutcome({ status: "aborted" });
|
|
9057
|
+
} else if (part.type === "error") {
|
|
9058
|
+
setSourceOutcome({ status: "failed", error: part.error });
|
|
9059
|
+
}
|
|
8925
9060
|
}
|
|
8926
9061
|
})
|
|
8927
9062
|
);
|
|
9063
|
+
const baseStream = trackFatalFailures(convertedStream);
|
|
8928
9064
|
return createAsyncIterableStream(
|
|
8929
9065
|
handleUIMessageStreamFinish({
|
|
8930
9066
|
stream: baseStream,
|
|
8931
9067
|
messageId: responseMessageId != null ? responseMessageId : generateMessageId == null ? void 0 : generateMessageId(),
|
|
8932
9068
|
originalMessages,
|
|
8933
9069
|
onFinish,
|
|
8934
|
-
onError
|
|
9070
|
+
onError,
|
|
9071
|
+
getOutcome: () => outcome
|
|
8935
9072
|
})
|
|
8936
9073
|
);
|
|
8937
9074
|
}
|
|
@@ -9024,7 +9161,7 @@ var ToolLoopAgent = class {
|
|
|
9024
9161
|
return this.settings.tools;
|
|
9025
9162
|
}
|
|
9026
9163
|
async prepareCall(options) {
|
|
9027
|
-
var
|
|
9164
|
+
var _a23, _b, _c, _d;
|
|
9028
9165
|
if (this.settings.callOptionsSchema != null && options.options !== void 0) {
|
|
9029
9166
|
const validatedOptions = await (0, import_provider_utils21.validateTypes)({
|
|
9030
9167
|
value: options.options,
|
|
@@ -9036,7 +9173,7 @@ var ToolLoopAgent = class {
|
|
|
9036
9173
|
const { onStepFinish: _settingsOnStepFinish, ...settingsWithoutCallback } = this.settings;
|
|
9037
9174
|
const baseCallArgs = {
|
|
9038
9175
|
...settingsWithoutCallback,
|
|
9039
|
-
stopWhen: (
|
|
9176
|
+
stopWhen: (_a23 = this.settings.stopWhen) != null ? _a23 : stepCountIs(20),
|
|
9040
9177
|
...options
|
|
9041
9178
|
};
|
|
9042
9179
|
const preparedCallArgs = (_d = await ((_c = (_b = this.settings).prepareCall) == null ? void 0 : _c.call(
|
|
@@ -9122,6 +9259,7 @@ function createUIMessageStream({
|
|
|
9122
9259
|
}) {
|
|
9123
9260
|
let controller;
|
|
9124
9261
|
const ongoingStreamPromises = [];
|
|
9262
|
+
let outcome = { status: "unknown" };
|
|
9125
9263
|
const stream = new ReadableStream({
|
|
9126
9264
|
start(controllerArg) {
|
|
9127
9265
|
controller = controllerArg;
|
|
@@ -9133,6 +9271,35 @@ function createUIMessageStream({
|
|
|
9133
9271
|
} catch (error) {
|
|
9134
9272
|
}
|
|
9135
9273
|
}
|
|
9274
|
+
function setOutcome(newOutcome) {
|
|
9275
|
+
if (outcome.status === "unknown" && newOutcome.status !== "unknown") {
|
|
9276
|
+
outcome = newOutcome;
|
|
9277
|
+
}
|
|
9278
|
+
}
|
|
9279
|
+
function failOutcome(error) {
|
|
9280
|
+
outcome = { status: "failed", error };
|
|
9281
|
+
}
|
|
9282
|
+
function safeError(error) {
|
|
9283
|
+
try {
|
|
9284
|
+
controller.error(error);
|
|
9285
|
+
} catch (e) {
|
|
9286
|
+
}
|
|
9287
|
+
}
|
|
9288
|
+
function handleError(error) {
|
|
9289
|
+
failOutcome(error);
|
|
9290
|
+
let errorText;
|
|
9291
|
+
try {
|
|
9292
|
+
errorText = onError(error);
|
|
9293
|
+
} catch (onErrorError) {
|
|
9294
|
+
failOutcome(onErrorError);
|
|
9295
|
+
safeError(onErrorError);
|
|
9296
|
+
return;
|
|
9297
|
+
}
|
|
9298
|
+
safeEnqueue({
|
|
9299
|
+
type: "error",
|
|
9300
|
+
errorText
|
|
9301
|
+
});
|
|
9302
|
+
}
|
|
9136
9303
|
try {
|
|
9137
9304
|
const result = execute({
|
|
9138
9305
|
writer: {
|
|
@@ -9150,38 +9317,29 @@ function createUIMessageStream({
|
|
|
9150
9317
|
safeEnqueue(value);
|
|
9151
9318
|
}
|
|
9152
9319
|
})().catch((error) => {
|
|
9153
|
-
|
|
9154
|
-
type: "error",
|
|
9155
|
-
errorText: onError(error)
|
|
9156
|
-
});
|
|
9320
|
+
handleError(error);
|
|
9157
9321
|
})
|
|
9158
9322
|
);
|
|
9159
9323
|
},
|
|
9324
|
+
setOutcome,
|
|
9160
9325
|
onError
|
|
9161
9326
|
}
|
|
9162
9327
|
});
|
|
9163
9328
|
if (result) {
|
|
9164
9329
|
ongoingStreamPromises.push(
|
|
9165
9330
|
result.catch((error) => {
|
|
9166
|
-
|
|
9167
|
-
type: "error",
|
|
9168
|
-
errorText: onError(error)
|
|
9169
|
-
});
|
|
9331
|
+
handleError(error);
|
|
9170
9332
|
})
|
|
9171
9333
|
);
|
|
9172
9334
|
}
|
|
9173
9335
|
} catch (error) {
|
|
9174
|
-
|
|
9175
|
-
type: "error",
|
|
9176
|
-
errorText: onError(error)
|
|
9177
|
-
});
|
|
9336
|
+
handleError(error);
|
|
9178
9337
|
}
|
|
9179
|
-
const waitForStreams =
|
|
9338
|
+
const waitForStreams = (async () => {
|
|
9180
9339
|
while (ongoingStreamPromises.length > 0) {
|
|
9181
9340
|
await ongoingStreamPromises.shift();
|
|
9182
9341
|
}
|
|
9183
|
-
|
|
9184
|
-
});
|
|
9342
|
+
})();
|
|
9185
9343
|
waitForStreams.finally(() => {
|
|
9186
9344
|
try {
|
|
9187
9345
|
controller.close();
|
|
@@ -9194,7 +9352,8 @@ function createUIMessageStream({
|
|
|
9194
9352
|
originalMessages,
|
|
9195
9353
|
onStepFinish,
|
|
9196
9354
|
onFinish,
|
|
9197
|
-
onError
|
|
9355
|
+
onError,
|
|
9356
|
+
getOutcome: () => outcome
|
|
9198
9357
|
});
|
|
9199
9358
|
}
|
|
9200
9359
|
|
|
@@ -9226,7 +9385,7 @@ function readUIMessageStream({
|
|
|
9226
9385
|
onError,
|
|
9227
9386
|
terminateOnError = false
|
|
9228
9387
|
}) {
|
|
9229
|
-
var
|
|
9388
|
+
var _a23;
|
|
9230
9389
|
let controller;
|
|
9231
9390
|
let hasErrored = false;
|
|
9232
9391
|
const outputStream = new ReadableStream({
|
|
@@ -9235,7 +9394,7 @@ function readUIMessageStream({
|
|
|
9235
9394
|
}
|
|
9236
9395
|
});
|
|
9237
9396
|
const state = createStreamingUIMessageState({
|
|
9238
|
-
messageId: (
|
|
9397
|
+
messageId: (_a23 = message == null ? void 0 : message.id) != null ? _a23 : "",
|
|
9239
9398
|
lastMessage: message
|
|
9240
9399
|
});
|
|
9241
9400
|
const handleError = (error) => {
|
|
@@ -9302,7 +9461,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
9302
9461
|
modelMessages.push({
|
|
9303
9462
|
role: "user",
|
|
9304
9463
|
content: message.parts.map((part) => {
|
|
9305
|
-
var
|
|
9464
|
+
var _a23;
|
|
9306
9465
|
if (isTextUIPart(part)) {
|
|
9307
9466
|
return {
|
|
9308
9467
|
type: "text",
|
|
@@ -9320,7 +9479,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
9320
9479
|
};
|
|
9321
9480
|
}
|
|
9322
9481
|
if (isDataUIPart(part)) {
|
|
9323
|
-
return (
|
|
9482
|
+
return (_a23 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a23.call(
|
|
9324
9483
|
options,
|
|
9325
9484
|
part
|
|
9326
9485
|
);
|
|
@@ -9333,7 +9492,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
9333
9492
|
if (message.parts != null) {
|
|
9334
9493
|
let block = [];
|
|
9335
9494
|
async function processBlock() {
|
|
9336
|
-
var
|
|
9495
|
+
var _a23, _b, _c, _d, _e, _f, _g, _h;
|
|
9337
9496
|
if (block.length === 0) {
|
|
9338
9497
|
return;
|
|
9339
9498
|
}
|
|
@@ -9366,7 +9525,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
9366
9525
|
type: "tool-call",
|
|
9367
9526
|
toolCallId: part.toolCallId,
|
|
9368
9527
|
toolName,
|
|
9369
|
-
input: part.state === "output-error" ? (
|
|
9528
|
+
input: part.state === "output-error" ? (_a23 = part.input) != null ? _a23 : "rawInput" in part ? part.rawInput : void 0 : part.input,
|
|
9370
9529
|
providerExecuted: part.providerExecuted,
|
|
9371
9530
|
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
|
9372
9531
|
});
|
|
@@ -9416,8 +9575,8 @@ async function convertToModelMessages(messages, options) {
|
|
|
9416
9575
|
}
|
|
9417
9576
|
const toolParts = block.filter(
|
|
9418
9577
|
(part) => {
|
|
9419
|
-
var
|
|
9420
|
-
return isToolUIPart(part) && (part.providerExecuted !== true || ((
|
|
9578
|
+
var _a24;
|
|
9579
|
+
return isToolUIPart(part) && (part.providerExecuted !== true || ((_a24 = part.approval) == null ? void 0 : _a24.approved) != null);
|
|
9421
9580
|
}
|
|
9422
9581
|
);
|
|
9423
9582
|
if (toolParts.length > 0) {
|
|
@@ -9505,13 +9664,24 @@ async function convertToModelMessages(messages, options) {
|
|
|
9505
9664
|
}
|
|
9506
9665
|
|
|
9507
9666
|
// src/ui/validate-ui-messages.ts
|
|
9508
|
-
var
|
|
9667
|
+
var import_provider31 = require("@ai-sdk/provider");
|
|
9509
9668
|
var import_provider_utils24 = require("@ai-sdk/provider-utils");
|
|
9510
9669
|
var import_v48 = require("zod/v4");
|
|
9511
9670
|
var toolMetadataSchema2 = import_v48.z.record(
|
|
9512
9671
|
import_v48.z.string(),
|
|
9513
9672
|
jsonValueSchema.optional()
|
|
9514
9673
|
);
|
|
9674
|
+
function isEmptyObject(value) {
|
|
9675
|
+
return value != null && typeof value === "object" && !Array.isArray(value) && Object.keys(value).length === 0;
|
|
9676
|
+
}
|
|
9677
|
+
function asDynamicToolPart(toolPart) {
|
|
9678
|
+
const { type, ...part } = toolPart;
|
|
9679
|
+
return {
|
|
9680
|
+
...part,
|
|
9681
|
+
type: "dynamic-tool",
|
|
9682
|
+
toolName: type.slice(5)
|
|
9683
|
+
};
|
|
9684
|
+
}
|
|
9515
9685
|
var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
9516
9686
|
() => (0, import_provider_utils24.zodSchema)(
|
|
9517
9687
|
import_v48.z.array(
|
|
@@ -9815,11 +9985,13 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(
|
|
|
9815
9985
|
).nonempty("Messages array must not be empty")
|
|
9816
9986
|
)
|
|
9817
9987
|
);
|
|
9818
|
-
async function
|
|
9988
|
+
async function safeValidateUIMessagesInternal({
|
|
9819
9989
|
messages,
|
|
9820
9990
|
metadataSchema,
|
|
9821
9991
|
dataSchemas,
|
|
9822
9992
|
tools
|
|
9993
|
+
}, {
|
|
9994
|
+
convertMissingTerminalToolsToDynamic
|
|
9823
9995
|
}) {
|
|
9824
9996
|
try {
|
|
9825
9997
|
if (messages == null) {
|
|
@@ -9848,7 +10020,8 @@ async function safeValidateUIMessages({
|
|
|
9848
10020
|
});
|
|
9849
10021
|
}
|
|
9850
10022
|
}
|
|
9851
|
-
|
|
10023
|
+
const shouldValidateToolParts = tools != null || convertMissingTerminalToolsToDynamic;
|
|
10024
|
+
if (dataSchemas || shouldValidateToolParts) {
|
|
9852
10025
|
for (const [msgIdx, message] of validatedMessages.entries()) {
|
|
9853
10026
|
for (const [partIdx, part] of message.parts.entries()) {
|
|
9854
10027
|
if (dataSchemas && part.type.startsWith("data-")) {
|
|
@@ -9858,7 +10031,7 @@ async function safeValidateUIMessages({
|
|
|
9858
10031
|
if (!dataSchema) {
|
|
9859
10032
|
return {
|
|
9860
10033
|
success: false,
|
|
9861
|
-
error: new
|
|
10034
|
+
error: new import_provider31.TypeValidationError({
|
|
9862
10035
|
value: dataPart.data,
|
|
9863
10036
|
cause: `No data schema found for data part ${dataName}`,
|
|
9864
10037
|
context: {
|
|
@@ -9879,17 +10052,23 @@ async function safeValidateUIMessages({
|
|
|
9879
10052
|
}
|
|
9880
10053
|
});
|
|
9881
10054
|
}
|
|
9882
|
-
if (
|
|
10055
|
+
if (shouldValidateToolParts && part.type.startsWith("tool-")) {
|
|
9883
10056
|
const toolPart = part;
|
|
9884
10057
|
const toolName = toolPart.type.slice(5);
|
|
9885
|
-
const tool2 = tools[toolName];
|
|
9886
|
-
|
|
10058
|
+
const tool2 = tools == null ? void 0 : tools[toolName];
|
|
10059
|
+
const isTerminal = toolPart.state === "output-available" || toolPart.state === "output-error" || toolPart.state === "output-denied";
|
|
10060
|
+
if (!tool2 && isTerminal) {
|
|
10061
|
+
if (tools != null || convertMissingTerminalToolsToDynamic) {
|
|
10062
|
+
message.parts[partIdx] = asDynamicToolPart(
|
|
10063
|
+
toolPart
|
|
10064
|
+
);
|
|
10065
|
+
}
|
|
9887
10066
|
continue;
|
|
9888
10067
|
}
|
|
9889
10068
|
if (!tool2) {
|
|
9890
10069
|
return {
|
|
9891
10070
|
success: false,
|
|
9892
|
-
error: new
|
|
10071
|
+
error: new import_provider31.TypeValidationError({
|
|
9893
10072
|
value: toolPart.input,
|
|
9894
10073
|
cause: `No tool schema found for tool part ${toolName}`,
|
|
9895
10074
|
context: {
|
|
@@ -9900,15 +10079,39 @@ async function safeValidateUIMessages({
|
|
|
9900
10079
|
})
|
|
9901
10080
|
};
|
|
9902
10081
|
}
|
|
9903
|
-
|
|
9904
|
-
|
|
10082
|
+
const inputValidationContext = {
|
|
10083
|
+
field: `messages[${msgIdx}].parts[${partIdx}].input`,
|
|
10084
|
+
entityName: toolName,
|
|
10085
|
+
entityId: toolPart.toolCallId
|
|
10086
|
+
};
|
|
10087
|
+
let convertToDynamic = false;
|
|
10088
|
+
if (toolPart.state === "output-error") {
|
|
10089
|
+
if (toolPart.input !== void 0) {
|
|
10090
|
+
const result = await (0, import_provider_utils24.safeValidateTypes)({
|
|
10091
|
+
value: toolPart.input,
|
|
10092
|
+
schema: tool2.inputSchema,
|
|
10093
|
+
context: inputValidationContext
|
|
10094
|
+
});
|
|
10095
|
+
convertToDynamic = !result.success;
|
|
10096
|
+
}
|
|
10097
|
+
} else if (toolPart.state === "output-available") {
|
|
10098
|
+
const result = await (0, import_provider_utils24.safeValidateTypes)({
|
|
9905
10099
|
value: toolPart.input,
|
|
9906
10100
|
schema: tool2.inputSchema,
|
|
9907
|
-
context:
|
|
9908
|
-
|
|
9909
|
-
|
|
9910
|
-
|
|
10101
|
+
context: inputValidationContext
|
|
10102
|
+
});
|
|
10103
|
+
if (!result.success) {
|
|
10104
|
+
if (isEmptyObject(toolPart.input)) {
|
|
10105
|
+
convertToDynamic = true;
|
|
10106
|
+
} else {
|
|
10107
|
+
throw result.error;
|
|
9911
10108
|
}
|
|
10109
|
+
}
|
|
10110
|
+
} else if (toolPart.state === "input-available" || toolPart.state === "approval-requested" || toolPart.state === "approval-responded" || toolPart.state === "output-denied") {
|
|
10111
|
+
await (0, import_provider_utils24.validateTypes)({
|
|
10112
|
+
value: toolPart.input,
|
|
10113
|
+
schema: tool2.inputSchema,
|
|
10114
|
+
context: inputValidationContext
|
|
9912
10115
|
});
|
|
9913
10116
|
}
|
|
9914
10117
|
if (toolPart.state === "output-available" && tool2.outputSchema) {
|
|
@@ -9922,6 +10125,11 @@ async function safeValidateUIMessages({
|
|
|
9922
10125
|
}
|
|
9923
10126
|
});
|
|
9924
10127
|
}
|
|
10128
|
+
if (convertToDynamic) {
|
|
10129
|
+
message.parts[partIdx] = asDynamicToolPart(
|
|
10130
|
+
toolPart
|
|
10131
|
+
);
|
|
10132
|
+
}
|
|
9925
10133
|
}
|
|
9926
10134
|
}
|
|
9927
10135
|
}
|
|
@@ -9938,17 +10146,23 @@ async function safeValidateUIMessages({
|
|
|
9938
10146
|
};
|
|
9939
10147
|
}
|
|
9940
10148
|
}
|
|
9941
|
-
async function
|
|
9942
|
-
|
|
9943
|
-
|
|
9944
|
-
|
|
9945
|
-
|
|
9946
|
-
|
|
9947
|
-
const response = await safeValidateUIMessages(
|
|
9948
|
-
|
|
9949
|
-
|
|
9950
|
-
|
|
9951
|
-
|
|
10149
|
+
async function safeValidateUIMessages(options) {
|
|
10150
|
+
return safeValidateUIMessagesInternal(options, {
|
|
10151
|
+
convertMissingTerminalToolsToDynamic: false
|
|
10152
|
+
});
|
|
10153
|
+
}
|
|
10154
|
+
async function validateUIMessages(options) {
|
|
10155
|
+
const response = await safeValidateUIMessages(options);
|
|
10156
|
+
if (!response.success)
|
|
10157
|
+
throw response.error;
|
|
10158
|
+
return response.data;
|
|
10159
|
+
}
|
|
10160
|
+
async function validateUIMessagesForAgent(options) {
|
|
10161
|
+
const response = await safeValidateUIMessagesInternal(options, {
|
|
10162
|
+
// Agent tool sets can include ephemeral tools (for example, tools from a
|
|
10163
|
+
// disconnected MCP server), so terminal history is converted to dynamic
|
|
10164
|
+
// tool parts when those tools are no longer registered.
|
|
10165
|
+
convertMissingTerminalToolsToDynamic: true
|
|
9952
10166
|
});
|
|
9953
10167
|
if (!response.success)
|
|
9954
10168
|
throw response.error;
|
|
@@ -9966,8 +10180,8 @@ async function createAgentUIStream({
|
|
|
9966
10180
|
onStepFinish,
|
|
9967
10181
|
...uiMessageStreamOptions
|
|
9968
10182
|
}) {
|
|
9969
|
-
var
|
|
9970
|
-
const validatedMessages = await
|
|
10183
|
+
var _a23;
|
|
10184
|
+
const validatedMessages = await validateUIMessagesForAgent({
|
|
9971
10185
|
messages: uiMessages,
|
|
9972
10186
|
tools: agent.tools
|
|
9973
10187
|
});
|
|
@@ -9985,7 +10199,7 @@ async function createAgentUIStream({
|
|
|
9985
10199
|
return result.toUIMessageStream({
|
|
9986
10200
|
...uiMessageStreamOptions,
|
|
9987
10201
|
// TODO reading `originalMessages` is here for bc, always use `validatedMessages` in v7
|
|
9988
|
-
originalMessages: (
|
|
10202
|
+
originalMessages: (_a23 = uiMessageStreamOptions.originalMessages) != null ? _a23 : validatedMessages
|
|
9989
10203
|
});
|
|
9990
10204
|
}
|
|
9991
10205
|
|
|
@@ -10083,7 +10297,7 @@ async function embed({
|
|
|
10083
10297
|
}),
|
|
10084
10298
|
tracer,
|
|
10085
10299
|
fn: async (doEmbedSpan) => {
|
|
10086
|
-
var
|
|
10300
|
+
var _a23, _b;
|
|
10087
10301
|
const modelResponse = await model.doEmbed({
|
|
10088
10302
|
values: [value],
|
|
10089
10303
|
abortSignal,
|
|
@@ -10091,7 +10305,7 @@ async function embed({
|
|
|
10091
10305
|
providerOptions
|
|
10092
10306
|
});
|
|
10093
10307
|
const embedding2 = modelResponse.embeddings[0];
|
|
10094
|
-
const usage2 = (
|
|
10308
|
+
const usage2 = (_a23 = modelResponse.usage) != null ? _a23 : { tokens: NaN };
|
|
10095
10309
|
doEmbedSpan.setAttributes(
|
|
10096
10310
|
await selectTelemetryAttributes({
|
|
10097
10311
|
telemetry,
|
|
@@ -10211,7 +10425,7 @@ async function embedMany({
|
|
|
10211
10425
|
}),
|
|
10212
10426
|
tracer,
|
|
10213
10427
|
fn: async (span) => {
|
|
10214
|
-
var
|
|
10428
|
+
var _a23;
|
|
10215
10429
|
const [
|
|
10216
10430
|
maxEmbeddingsPerCall,
|
|
10217
10431
|
maxInputBytesPerCall,
|
|
@@ -10243,7 +10457,7 @@ async function embedMany({
|
|
|
10243
10457
|
}),
|
|
10244
10458
|
tracer,
|
|
10245
10459
|
fn: async (doEmbedSpan) => {
|
|
10246
|
-
var
|
|
10460
|
+
var _a24, _b;
|
|
10247
10461
|
const modelResponse = await model.doEmbed({
|
|
10248
10462
|
values,
|
|
10249
10463
|
abortSignal,
|
|
@@ -10251,7 +10465,7 @@ async function embedMany({
|
|
|
10251
10465
|
providerOptions
|
|
10252
10466
|
});
|
|
10253
10467
|
const embeddings3 = modelResponse.embeddings;
|
|
10254
|
-
const usage2 = (
|
|
10468
|
+
const usage2 = (_a24 = modelResponse.usage) != null ? _a24 : { tokens: NaN };
|
|
10255
10469
|
doEmbedSpan.setAttributes(
|
|
10256
10470
|
await selectTelemetryAttributes({
|
|
10257
10471
|
telemetry,
|
|
@@ -10336,7 +10550,7 @@ async function embedMany({
|
|
|
10336
10550
|
}),
|
|
10337
10551
|
tracer,
|
|
10338
10552
|
fn: async (doEmbedSpan) => {
|
|
10339
|
-
var
|
|
10553
|
+
var _a24, _b;
|
|
10340
10554
|
const modelResponse = await model.doEmbed({
|
|
10341
10555
|
values: chunk,
|
|
10342
10556
|
abortSignal,
|
|
@@ -10344,7 +10558,7 @@ async function embedMany({
|
|
|
10344
10558
|
providerOptions
|
|
10345
10559
|
});
|
|
10346
10560
|
const embeddings2 = modelResponse.embeddings;
|
|
10347
|
-
const usage = (
|
|
10561
|
+
const usage = (_a24 = modelResponse.usage) != null ? _a24 : { tokens: NaN };
|
|
10348
10562
|
doEmbedSpan.setAttributes(
|
|
10349
10563
|
await selectTelemetryAttributes({
|
|
10350
10564
|
telemetry,
|
|
@@ -10383,7 +10597,7 @@ async function embedMany({
|
|
|
10383
10597
|
result.providerMetadata
|
|
10384
10598
|
)) {
|
|
10385
10599
|
providerMetadata[providerName] = {
|
|
10386
|
-
...(
|
|
10600
|
+
...(_a23 = providerMetadata[providerName]) != null ? _a23 : {},
|
|
10387
10601
|
...metadata
|
|
10388
10602
|
};
|
|
10389
10603
|
}
|
|
@@ -10475,7 +10689,7 @@ async function generateImage({
|
|
|
10475
10689
|
abortSignal,
|
|
10476
10690
|
headers
|
|
10477
10691
|
}) {
|
|
10478
|
-
var
|
|
10692
|
+
var _a23, _b;
|
|
10479
10693
|
const model = resolveImageModel(modelArg);
|
|
10480
10694
|
const headersWithUserAgent = (0, import_provider_utils28.withUserAgentSuffix)(
|
|
10481
10695
|
headers != null ? headers : {},
|
|
@@ -10485,7 +10699,7 @@ async function generateImage({
|
|
|
10485
10699
|
maxRetries: maxRetriesArg,
|
|
10486
10700
|
abortSignal
|
|
10487
10701
|
});
|
|
10488
|
-
const maxImagesPerCallWithDefault = (
|
|
10702
|
+
const maxImagesPerCallWithDefault = (_a23 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a23 : 1;
|
|
10489
10703
|
const callCount = Math.ceil(n / maxImagesPerCallWithDefault);
|
|
10490
10704
|
const callImageCounts = Array.from({ length: callCount }, (_, i) => {
|
|
10491
10705
|
if (i < callCount - 1) {
|
|
@@ -10526,13 +10740,13 @@ async function generateImage({
|
|
|
10526
10740
|
images.push(
|
|
10527
10741
|
...result.images.map(
|
|
10528
10742
|
(image) => {
|
|
10529
|
-
var
|
|
10743
|
+
var _a24;
|
|
10530
10744
|
return new DefaultGeneratedFile({
|
|
10531
10745
|
data: image,
|
|
10532
|
-
mediaType: (
|
|
10746
|
+
mediaType: (_a24 = detectMediaType({
|
|
10533
10747
|
data: image,
|
|
10534
10748
|
signatures: imageMediaTypeSignatures
|
|
10535
|
-
})) != null ?
|
|
10749
|
+
})) != null ? _a24 : "image/png"
|
|
10536
10750
|
});
|
|
10537
10751
|
}
|
|
10538
10752
|
)
|
|
@@ -10649,7 +10863,7 @@ var experimental_generateImage = generateImage;
|
|
|
10649
10863
|
var import_provider_utils31 = require("@ai-sdk/provider-utils");
|
|
10650
10864
|
|
|
10651
10865
|
// src/generate-object/output-strategy.ts
|
|
10652
|
-
var
|
|
10866
|
+
var import_provider32 = require("@ai-sdk/provider");
|
|
10653
10867
|
var import_provider_utils29 = require("@ai-sdk/provider-utils");
|
|
10654
10868
|
var noSchemaOutputStrategy = {
|
|
10655
10869
|
type: "no-schema",
|
|
@@ -10670,7 +10884,7 @@ var noSchemaOutputStrategy = {
|
|
|
10670
10884
|
} : { success: true, value };
|
|
10671
10885
|
},
|
|
10672
10886
|
createElementStream() {
|
|
10673
|
-
throw new
|
|
10887
|
+
throw new import_provider32.UnsupportedFunctionalityError({
|
|
10674
10888
|
functionality: "element streams in no-schema mode"
|
|
10675
10889
|
});
|
|
10676
10890
|
}
|
|
@@ -10692,7 +10906,7 @@ var objectOutputStrategy = (schema) => ({
|
|
|
10692
10906
|
return (0, import_provider_utils29.safeValidateTypes)({ value, schema });
|
|
10693
10907
|
},
|
|
10694
10908
|
createElementStream() {
|
|
10695
|
-
throw new
|
|
10909
|
+
throw new import_provider32.UnsupportedFunctionalityError({
|
|
10696
10910
|
functionality: "element streams in object mode"
|
|
10697
10911
|
});
|
|
10698
10912
|
}
|
|
@@ -10721,11 +10935,11 @@ var arrayOutputStrategy = (schema) => {
|
|
|
10721
10935
|
isFirstDelta,
|
|
10722
10936
|
isFinalDelta
|
|
10723
10937
|
}) {
|
|
10724
|
-
var
|
|
10725
|
-
if (!(0,
|
|
10938
|
+
var _a23;
|
|
10939
|
+
if (!(0, import_provider32.isJSONObject)(value) || !(0, import_provider32.isJSONArray)(value.elements)) {
|
|
10726
10940
|
return {
|
|
10727
10941
|
success: false,
|
|
10728
|
-
error: new
|
|
10942
|
+
error: new import_provider32.TypeValidationError({
|
|
10729
10943
|
value,
|
|
10730
10944
|
cause: "value must be an object that contains an array of elements"
|
|
10731
10945
|
})
|
|
@@ -10744,7 +10958,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
10744
10958
|
}
|
|
10745
10959
|
resultArray.push(result.value);
|
|
10746
10960
|
}
|
|
10747
|
-
const publishedElementCount = (
|
|
10961
|
+
const publishedElementCount = (_a23 = latestObject == null ? void 0 : latestObject.length) != null ? _a23 : 0;
|
|
10748
10962
|
let textDelta = "";
|
|
10749
10963
|
if (isFirstDelta) {
|
|
10750
10964
|
textDelta += "[";
|
|
@@ -10765,10 +10979,10 @@ var arrayOutputStrategy = (schema) => {
|
|
|
10765
10979
|
};
|
|
10766
10980
|
},
|
|
10767
10981
|
async validateFinalResult(value) {
|
|
10768
|
-
if (!(0,
|
|
10982
|
+
if (!(0, import_provider32.isJSONObject)(value) || !(0, import_provider32.isJSONArray)(value.elements)) {
|
|
10769
10983
|
return {
|
|
10770
10984
|
success: false,
|
|
10771
|
-
error: new
|
|
10985
|
+
error: new import_provider32.TypeValidationError({
|
|
10772
10986
|
value,
|
|
10773
10987
|
cause: "value must be an object that contains an array of elements"
|
|
10774
10988
|
})
|
|
@@ -10833,10 +11047,10 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
10833
11047
|
additionalProperties: false
|
|
10834
11048
|
}),
|
|
10835
11049
|
async validateFinalResult(value) {
|
|
10836
|
-
if (!(0,
|
|
11050
|
+
if (!(0, import_provider32.isJSONObject)(value) || typeof value.result !== "string") {
|
|
10837
11051
|
return {
|
|
10838
11052
|
success: false,
|
|
10839
|
-
error: new
|
|
11053
|
+
error: new import_provider32.TypeValidationError({
|
|
10840
11054
|
value,
|
|
10841
11055
|
cause: 'value must be an object that contains a string in the "result" property.'
|
|
10842
11056
|
})
|
|
@@ -10845,17 +11059,17 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
10845
11059
|
const result = value.result;
|
|
10846
11060
|
return enumValues.includes(result) ? { success: true, value: result } : {
|
|
10847
11061
|
success: false,
|
|
10848
|
-
error: new
|
|
11062
|
+
error: new import_provider32.TypeValidationError({
|
|
10849
11063
|
value,
|
|
10850
11064
|
cause: "value must be a string in the enum"
|
|
10851
11065
|
})
|
|
10852
11066
|
};
|
|
10853
11067
|
},
|
|
10854
11068
|
async validatePartialResult({ value, textDelta }) {
|
|
10855
|
-
if (!(0,
|
|
11069
|
+
if (!(0, import_provider32.isJSONObject)(value) || typeof value.result !== "string") {
|
|
10856
11070
|
return {
|
|
10857
11071
|
success: false,
|
|
10858
|
-
error: new
|
|
11072
|
+
error: new import_provider32.TypeValidationError({
|
|
10859
11073
|
value,
|
|
10860
11074
|
cause: 'value must be an object that contains a string in the "result" property.'
|
|
10861
11075
|
})
|
|
@@ -10868,7 +11082,7 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
10868
11082
|
if (value.result.length === 0 || possibleEnumValues.length === 0) {
|
|
10869
11083
|
return {
|
|
10870
11084
|
success: false,
|
|
10871
|
-
error: new
|
|
11085
|
+
error: new import_provider32.TypeValidationError({
|
|
10872
11086
|
value,
|
|
10873
11087
|
cause: "value must be a string in the enum"
|
|
10874
11088
|
})
|
|
@@ -10883,7 +11097,7 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
10883
11097
|
};
|
|
10884
11098
|
},
|
|
10885
11099
|
createElementStream() {
|
|
10886
|
-
throw new
|
|
11100
|
+
throw new import_provider32.UnsupportedFunctionalityError({
|
|
10887
11101
|
functionality: "element streams in enum mode"
|
|
10888
11102
|
});
|
|
10889
11103
|
}
|
|
@@ -10911,7 +11125,7 @@ function getOutputStrategy({
|
|
|
10911
11125
|
}
|
|
10912
11126
|
|
|
10913
11127
|
// src/generate-object/parse-and-validate-object-result.ts
|
|
10914
|
-
var
|
|
11128
|
+
var import_provider33 = require("@ai-sdk/provider");
|
|
10915
11129
|
var import_provider_utils30 = require("@ai-sdk/provider-utils");
|
|
10916
11130
|
async function parseAndValidateObjectResult(result, outputStrategy, context2) {
|
|
10917
11131
|
const parseResult = await (0, import_provider_utils30.safeParseJSON)({ text: result });
|
|
@@ -10949,7 +11163,7 @@ async function parseAndValidateObjectResultWithRepair(result, outputStrategy, re
|
|
|
10949
11163
|
try {
|
|
10950
11164
|
return await parseAndValidateObjectResult(result, outputStrategy, context2);
|
|
10951
11165
|
} catch (error) {
|
|
10952
|
-
if (repairText != null && NoObjectGeneratedError.isInstance(error) && (
|
|
11166
|
+
if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider33.JSONParseError.isInstance(error.cause) || import_provider33.TypeValidationError.isInstance(error.cause))) {
|
|
10953
11167
|
const repairedText = await repairText({
|
|
10954
11168
|
text: result,
|
|
10955
11169
|
error: error.cause
|
|
@@ -11167,7 +11381,7 @@ async function generateObject(options) {
|
|
|
11167
11381
|
}),
|
|
11168
11382
|
tracer,
|
|
11169
11383
|
fn: async (span) => {
|
|
11170
|
-
var
|
|
11384
|
+
var _a23;
|
|
11171
11385
|
let result;
|
|
11172
11386
|
let finishReason;
|
|
11173
11387
|
let usage;
|
|
@@ -11214,7 +11428,7 @@ async function generateObject(options) {
|
|
|
11214
11428
|
}),
|
|
11215
11429
|
tracer,
|
|
11216
11430
|
fn: async (span2) => {
|
|
11217
|
-
var
|
|
11431
|
+
var _a24, _b, _c, _d, _e, _f, _g, _h;
|
|
11218
11432
|
const result2 = await model.doGenerate({
|
|
11219
11433
|
responseFormat: {
|
|
11220
11434
|
type: "json",
|
|
@@ -11229,7 +11443,7 @@ async function generateObject(options) {
|
|
|
11229
11443
|
headers: headersWithUserAgent
|
|
11230
11444
|
});
|
|
11231
11445
|
const responseData = {
|
|
11232
|
-
id: (_b = (
|
|
11446
|
+
id: (_b = (_a24 = result2.response) == null ? void 0 : _a24.id) != null ? _b : generateId2(),
|
|
11233
11447
|
timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
|
|
11234
11448
|
modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,
|
|
11235
11449
|
headers: (_g = result2.response) == null ? void 0 : _g.headers,
|
|
@@ -11285,7 +11499,7 @@ async function generateObject(options) {
|
|
|
11285
11499
|
usage = asLanguageModelUsage(generateResult.usage);
|
|
11286
11500
|
warnings = generateResult.warnings;
|
|
11287
11501
|
resultProviderMetadata = generateResult.providerMetadata;
|
|
11288
|
-
request = (
|
|
11502
|
+
request = (_a23 = generateResult.request) != null ? _a23 : {};
|
|
11289
11503
|
response = generateResult.responseData;
|
|
11290
11504
|
reasoning = generateResult.reasoning;
|
|
11291
11505
|
logWarnings({
|
|
@@ -11348,9 +11562,9 @@ var DefaultGenerateObjectResult = class {
|
|
|
11348
11562
|
this.reasoning = options.reasoning;
|
|
11349
11563
|
}
|
|
11350
11564
|
toJsonResponse(init) {
|
|
11351
|
-
var
|
|
11565
|
+
var _a23;
|
|
11352
11566
|
return new Response(JSON.stringify(this.object), {
|
|
11353
|
-
status: (
|
|
11567
|
+
status: (_a23 = init == null ? void 0 : init.status) != null ? _a23 : 200,
|
|
11354
11568
|
headers: prepareHeaders(init == null ? void 0 : init.headers, {
|
|
11355
11569
|
"content-type": "application/json; charset=utf-8"
|
|
11356
11570
|
})
|
|
@@ -11481,8 +11695,8 @@ function simulateReadableStream({
|
|
|
11481
11695
|
chunkDelayInMs = 0,
|
|
11482
11696
|
_internal
|
|
11483
11697
|
}) {
|
|
11484
|
-
var
|
|
11485
|
-
const delay = (
|
|
11698
|
+
var _a23;
|
|
11699
|
+
const delay = (_a23 = _internal == null ? void 0 : _internal.delay) != null ? _a23 : import_provider_utils32.delay;
|
|
11486
11700
|
let index = 0;
|
|
11487
11701
|
return new ReadableStream({
|
|
11488
11702
|
async pull(controller) {
|
|
@@ -11756,7 +11970,7 @@ var DefaultStreamObjectResult = class {
|
|
|
11756
11970
|
const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
|
|
11757
11971
|
new TransformStream({
|
|
11758
11972
|
async transform(chunk, controller) {
|
|
11759
|
-
var
|
|
11973
|
+
var _a23, _b, _c;
|
|
11760
11974
|
if (typeof chunk === "object" && chunk.type === "stream-start") {
|
|
11761
11975
|
warnings = chunk.warnings;
|
|
11762
11976
|
return;
|
|
@@ -11806,7 +12020,7 @@ var DefaultStreamObjectResult = class {
|
|
|
11806
12020
|
switch (chunk.type) {
|
|
11807
12021
|
case "response-metadata": {
|
|
11808
12022
|
fullResponse = {
|
|
11809
|
-
id: (
|
|
12023
|
+
id: (_a23 = chunk.id) != null ? _a23 : fullResponse.id,
|
|
11810
12024
|
timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,
|
|
11811
12025
|
modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId
|
|
11812
12026
|
};
|
|
@@ -12120,7 +12334,7 @@ async function generateSpeech({
|
|
|
12120
12334
|
abortSignal,
|
|
12121
12335
|
headers
|
|
12122
12336
|
}) {
|
|
12123
|
-
var
|
|
12337
|
+
var _a23;
|
|
12124
12338
|
const resolvedModel = resolveSpeechModel(model);
|
|
12125
12339
|
if (!resolvedModel) {
|
|
12126
12340
|
throw new Error("Model could not be resolved");
|
|
@@ -12157,10 +12371,10 @@ async function generateSpeech({
|
|
|
12157
12371
|
return new DefaultSpeechResult({
|
|
12158
12372
|
audio: new DefaultGeneratedAudioFile({
|
|
12159
12373
|
data: result.audio,
|
|
12160
|
-
mediaType: (
|
|
12374
|
+
mediaType: (_a23 = detectMediaType({
|
|
12161
12375
|
data: result.audio,
|
|
12162
12376
|
signatures: audioMediaTypeSignatures
|
|
12163
|
-
})) != null ?
|
|
12377
|
+
})) != null ? _a23 : "audio/mp3"
|
|
12164
12378
|
}),
|
|
12165
12379
|
warnings: result.warnings,
|
|
12166
12380
|
responses: [result.response],
|
|
@@ -12169,11 +12383,11 @@ async function generateSpeech({
|
|
|
12169
12383
|
}
|
|
12170
12384
|
var DefaultSpeechResult = class {
|
|
12171
12385
|
constructor(options) {
|
|
12172
|
-
var
|
|
12386
|
+
var _a23;
|
|
12173
12387
|
this.audio = options.audio;
|
|
12174
12388
|
this.warnings = options.warnings;
|
|
12175
12389
|
this.responses = options.responses;
|
|
12176
|
-
this.providerMetadata = (
|
|
12390
|
+
this.providerMetadata = (_a23 = options.providerMetadata) != null ? _a23 : {};
|
|
12177
12391
|
}
|
|
12178
12392
|
};
|
|
12179
12393
|
|
|
@@ -12273,7 +12487,7 @@ function pruneMessages({
|
|
|
12273
12487
|
|
|
12274
12488
|
// src/generate-text/smooth-stream.ts
|
|
12275
12489
|
var import_provider_utils35 = require("@ai-sdk/provider-utils");
|
|
12276
|
-
var
|
|
12490
|
+
var import_provider34 = require("@ai-sdk/provider");
|
|
12277
12491
|
var CHUNKING_REGEXPS = {
|
|
12278
12492
|
word: /\S+\s+/m,
|
|
12279
12493
|
line: /\n+/m
|
|
@@ -12312,7 +12526,7 @@ function smoothStream({
|
|
|
12312
12526
|
} else {
|
|
12313
12527
|
const chunkingRegex = typeof chunking === "string" ? CHUNKING_REGEXPS[chunking] : chunking instanceof RegExp ? chunking : void 0;
|
|
12314
12528
|
if (chunkingRegex == null) {
|
|
12315
|
-
throw new
|
|
12529
|
+
throw new import_provider34.InvalidArgumentError({
|
|
12316
12530
|
argument: "chunking",
|
|
12317
12531
|
message: `Chunking must be "word", "line", a RegExp, an Intl.Segmenter, or a ChunkDetector function. Received: ${chunking}`
|
|
12318
12532
|
});
|
|
@@ -12391,7 +12605,7 @@ async function experimental_generateVideo({
|
|
|
12391
12605
|
headers,
|
|
12392
12606
|
download: downloadFn = defaultDownload
|
|
12393
12607
|
}) {
|
|
12394
|
-
var
|
|
12608
|
+
var _a23, _b;
|
|
12395
12609
|
const model = resolveVideoModel(modelArg);
|
|
12396
12610
|
const headersWithUserAgent = (0, import_provider_utils36.withUserAgentSuffix)(
|
|
12397
12611
|
headers != null ? headers : {},
|
|
@@ -12418,9 +12632,9 @@ async function experimental_generateVideo({
|
|
|
12418
12632
|
message: "inputReferences were ignored because frameImages were provided; frameImages and inputReferences cannot be combined."
|
|
12419
12633
|
});
|
|
12420
12634
|
}
|
|
12421
|
-
const firstFrameImage = (
|
|
12635
|
+
const firstFrameImage = (_a23 = normalizedFrameImages == null ? void 0 : normalizedFrameImages.find(
|
|
12422
12636
|
(frame) => frame.frameType === "first_frame"
|
|
12423
|
-
)) == null ? void 0 :
|
|
12637
|
+
)) == null ? void 0 : _a23.image;
|
|
12424
12638
|
if (image != null && firstFrameImage != null) {
|
|
12425
12639
|
warnings.push({
|
|
12426
12640
|
type: "other",
|
|
@@ -12564,8 +12778,8 @@ function normalizePrompt2(promptArg) {
|
|
|
12564
12778
|
};
|
|
12565
12779
|
}
|
|
12566
12780
|
function detectFileMediaType(data, restrictToImages) {
|
|
12567
|
-
var
|
|
12568
|
-
const detected = restrictToImages ? detectMediaType({ data, signatures: imageMediaTypeSignatures }) : (
|
|
12781
|
+
var _a23;
|
|
12782
|
+
const detected = restrictToImages ? detectMediaType({ data, signatures: imageMediaTypeSignatures }) : (_a23 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a23 : detectMediaType({ data, signatures: videoMediaTypeSignatures });
|
|
12569
12783
|
return detected != null ? detected : "image/png";
|
|
12570
12784
|
}
|
|
12571
12785
|
function normalizeImageData(dataContent, { restrictToImages = true } = {}) {
|
|
@@ -12659,8 +12873,8 @@ function stripMarkdownCodeFenceSuffix(text2) {
|
|
|
12659
12873
|
return text2.replace(/\n?```\s*$/, "").trimEnd();
|
|
12660
12874
|
}
|
|
12661
12875
|
function extractJsonMiddleware(options) {
|
|
12662
|
-
var
|
|
12663
|
-
const transform = (
|
|
12876
|
+
var _a23;
|
|
12877
|
+
const transform = (_a23 = options == null ? void 0 : options.transform) != null ? _a23 : defaultTransform;
|
|
12664
12878
|
const hasCustomTransform = (options == null ? void 0 : options.transform) !== void 0;
|
|
12665
12879
|
return {
|
|
12666
12880
|
specificationVersion: "v3",
|
|
@@ -13036,13 +13250,13 @@ function addToolInputExamplesMiddleware({
|
|
|
13036
13250
|
return {
|
|
13037
13251
|
specificationVersion: "v3",
|
|
13038
13252
|
transformParams: async ({ params }) => {
|
|
13039
|
-
var
|
|
13040
|
-
if (!((
|
|
13253
|
+
var _a23;
|
|
13254
|
+
if (!((_a23 = params.tools) == null ? void 0 : _a23.length)) {
|
|
13041
13255
|
return params;
|
|
13042
13256
|
}
|
|
13043
13257
|
const transformedTools = params.tools.map((tool2) => {
|
|
13044
|
-
var
|
|
13045
|
-
if (tool2.type !== "function" || !((
|
|
13258
|
+
var _a24;
|
|
13259
|
+
if (tool2.type !== "function" || !((_a24 = tool2.inputExamples) == null ? void 0 : _a24.length)) {
|
|
13046
13260
|
return tool2;
|
|
13047
13261
|
}
|
|
13048
13262
|
const formattedExamples = tool2.inputExamples.map((example, index) => format(example, index)).join("\n");
|
|
@@ -13089,7 +13303,7 @@ var doWrap = ({
|
|
|
13089
13303
|
modelId,
|
|
13090
13304
|
providerId
|
|
13091
13305
|
}) => {
|
|
13092
|
-
var
|
|
13306
|
+
var _a23, _b, _c;
|
|
13093
13307
|
async function doTransform({
|
|
13094
13308
|
params,
|
|
13095
13309
|
type
|
|
@@ -13098,7 +13312,7 @@ var doWrap = ({
|
|
|
13098
13312
|
}
|
|
13099
13313
|
return {
|
|
13100
13314
|
specificationVersion: "v3",
|
|
13101
|
-
provider: (
|
|
13315
|
+
provider: (_a23 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a23 : model.provider,
|
|
13102
13316
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
13103
13317
|
supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
|
|
13104
13318
|
async doGenerate(params) {
|
|
@@ -13146,7 +13360,7 @@ var doWrap2 = ({
|
|
|
13146
13360
|
modelId,
|
|
13147
13361
|
providerId
|
|
13148
13362
|
}) => {
|
|
13149
|
-
var
|
|
13363
|
+
var _a23, _b, _c, _d;
|
|
13150
13364
|
async function doTransform({
|
|
13151
13365
|
params
|
|
13152
13366
|
}) {
|
|
@@ -13154,7 +13368,7 @@ var doWrap2 = ({
|
|
|
13154
13368
|
}
|
|
13155
13369
|
return {
|
|
13156
13370
|
specificationVersion: "v3",
|
|
13157
|
-
provider: (
|
|
13371
|
+
provider: (_a23 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a23 : model.provider,
|
|
13158
13372
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
13159
13373
|
maxEmbeddingsPerCall: (_c = overrideMaxEmbeddingsPerCall == null ? void 0 : overrideMaxEmbeddingsPerCall({ model })) != null ? _c : model.maxEmbeddingsPerCall,
|
|
13160
13374
|
[import_provider_utils37.EXPERIMENTAL_EMBEDDING_MODEL_MAX_INPUT_BYTES_PER_CALL]: getEmbeddingModelMaxInputBytesPerCall(model),
|
|
@@ -13194,11 +13408,11 @@ var doWrap3 = ({
|
|
|
13194
13408
|
modelId,
|
|
13195
13409
|
providerId
|
|
13196
13410
|
}) => {
|
|
13197
|
-
var
|
|
13411
|
+
var _a23, _b, _c;
|
|
13198
13412
|
async function doTransform({ params }) {
|
|
13199
13413
|
return transformParams ? await transformParams({ params, model }) : params;
|
|
13200
13414
|
}
|
|
13201
|
-
const maxImagesPerCallRaw = (
|
|
13415
|
+
const maxImagesPerCallRaw = (_a23 = overrideMaxImagesPerCall == null ? void 0 : overrideMaxImagesPerCall({ model })) != null ? _a23 : model.maxImagesPerCall;
|
|
13202
13416
|
const maxImagesPerCall = maxImagesPerCallRaw instanceof Function ? maxImagesPerCallRaw.bind(model) : maxImagesPerCallRaw;
|
|
13203
13417
|
return {
|
|
13204
13418
|
specificationVersion: "v3",
|
|
@@ -13263,7 +13477,7 @@ function wrapProvider({
|
|
|
13263
13477
|
}
|
|
13264
13478
|
|
|
13265
13479
|
// src/registry/custom-provider.ts
|
|
13266
|
-
var
|
|
13480
|
+
var import_provider35 = require("@ai-sdk/provider");
|
|
13267
13481
|
function customProvider({
|
|
13268
13482
|
languageModels,
|
|
13269
13483
|
embeddingModels,
|
|
@@ -13284,7 +13498,7 @@ function customProvider({
|
|
|
13284
13498
|
if (fallbackProvider) {
|
|
13285
13499
|
return fallbackProvider.languageModel(modelId);
|
|
13286
13500
|
}
|
|
13287
|
-
throw new
|
|
13501
|
+
throw new import_provider35.NoSuchModelError({ modelId, modelType: "languageModel" });
|
|
13288
13502
|
},
|
|
13289
13503
|
embeddingModel(modelId) {
|
|
13290
13504
|
if (embeddingModels != null && modelId in embeddingModels) {
|
|
@@ -13293,7 +13507,7 @@ function customProvider({
|
|
|
13293
13507
|
if (fallbackProvider) {
|
|
13294
13508
|
return fallbackProvider.embeddingModel(modelId);
|
|
13295
13509
|
}
|
|
13296
|
-
throw new
|
|
13510
|
+
throw new import_provider35.NoSuchModelError({ modelId, modelType: "embeddingModel" });
|
|
13297
13511
|
},
|
|
13298
13512
|
imageModel(modelId) {
|
|
13299
13513
|
if (imageModels != null && modelId in imageModels) {
|
|
@@ -13302,7 +13516,7 @@ function customProvider({
|
|
|
13302
13516
|
if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {
|
|
13303
13517
|
return fallbackProvider.imageModel(modelId);
|
|
13304
13518
|
}
|
|
13305
|
-
throw new
|
|
13519
|
+
throw new import_provider35.NoSuchModelError({ modelId, modelType: "imageModel" });
|
|
13306
13520
|
},
|
|
13307
13521
|
transcriptionModel(modelId) {
|
|
13308
13522
|
if (transcriptionModels != null && modelId in transcriptionModels) {
|
|
@@ -13311,7 +13525,7 @@ function customProvider({
|
|
|
13311
13525
|
if (fallbackProvider == null ? void 0 : fallbackProvider.transcriptionModel) {
|
|
13312
13526
|
return fallbackProvider.transcriptionModel(modelId);
|
|
13313
13527
|
}
|
|
13314
|
-
throw new
|
|
13528
|
+
throw new import_provider35.NoSuchModelError({ modelId, modelType: "transcriptionModel" });
|
|
13315
13529
|
},
|
|
13316
13530
|
speechModel(modelId) {
|
|
13317
13531
|
if (speechModels != null && modelId in speechModels) {
|
|
@@ -13320,7 +13534,7 @@ function customProvider({
|
|
|
13320
13534
|
if (fallbackProvider == null ? void 0 : fallbackProvider.speechModel) {
|
|
13321
13535
|
return fallbackProvider.speechModel(modelId);
|
|
13322
13536
|
}
|
|
13323
|
-
throw new
|
|
13537
|
+
throw new import_provider35.NoSuchModelError({ modelId, modelType: "speechModel" });
|
|
13324
13538
|
},
|
|
13325
13539
|
rerankingModel(modelId) {
|
|
13326
13540
|
if (rerankingModels != null && modelId in rerankingModels) {
|
|
@@ -13329,7 +13543,7 @@ function customProvider({
|
|
|
13329
13543
|
if (fallbackProvider == null ? void 0 : fallbackProvider.rerankingModel) {
|
|
13330
13544
|
return fallbackProvider.rerankingModel(modelId);
|
|
13331
13545
|
}
|
|
13332
|
-
throw new
|
|
13546
|
+
throw new import_provider35.NoSuchModelError({ modelId, modelType: "rerankingModel" });
|
|
13333
13547
|
},
|
|
13334
13548
|
videoModel(modelId) {
|
|
13335
13549
|
if (videoModels != null && modelId in videoModels) {
|
|
@@ -13339,19 +13553,19 @@ function customProvider({
|
|
|
13339
13553
|
if (videoModel) {
|
|
13340
13554
|
return videoModel(modelId);
|
|
13341
13555
|
}
|
|
13342
|
-
throw new
|
|
13556
|
+
throw new import_provider35.NoSuchModelError({ modelId, modelType: "videoModel" });
|
|
13343
13557
|
}
|
|
13344
13558
|
};
|
|
13345
13559
|
}
|
|
13346
13560
|
var experimental_customProvider = customProvider;
|
|
13347
13561
|
|
|
13348
13562
|
// src/registry/no-such-provider-error.ts
|
|
13349
|
-
var
|
|
13350
|
-
var
|
|
13351
|
-
var
|
|
13352
|
-
var
|
|
13353
|
-
var
|
|
13354
|
-
var NoSuchProviderError = class extends
|
|
13563
|
+
var import_provider36 = require("@ai-sdk/provider");
|
|
13564
|
+
var name22 = "AI_NoSuchProviderError";
|
|
13565
|
+
var marker22 = `vercel.ai.error.${name22}`;
|
|
13566
|
+
var symbol22 = Symbol.for(marker22);
|
|
13567
|
+
var _a22;
|
|
13568
|
+
var NoSuchProviderError = class extends import_provider36.NoSuchModelError {
|
|
13355
13569
|
constructor({
|
|
13356
13570
|
modelId,
|
|
13357
13571
|
modelType,
|
|
@@ -13359,19 +13573,19 @@ var NoSuchProviderError = class extends import_provider35.NoSuchModelError {
|
|
|
13359
13573
|
availableProviders,
|
|
13360
13574
|
message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
|
|
13361
13575
|
}) {
|
|
13362
|
-
super({ errorName:
|
|
13363
|
-
this[
|
|
13576
|
+
super({ errorName: name22, modelId, modelType, message });
|
|
13577
|
+
this[_a22] = true;
|
|
13364
13578
|
this.providerId = providerId;
|
|
13365
13579
|
this.availableProviders = availableProviders;
|
|
13366
13580
|
}
|
|
13367
13581
|
static isInstance(error) {
|
|
13368
|
-
return
|
|
13582
|
+
return import_provider36.AISDKError.hasMarker(error, marker22);
|
|
13369
13583
|
}
|
|
13370
13584
|
};
|
|
13371
|
-
|
|
13585
|
+
_a22 = symbol22;
|
|
13372
13586
|
|
|
13373
13587
|
// src/registry/provider-registry.ts
|
|
13374
|
-
var
|
|
13588
|
+
var import_provider37 = require("@ai-sdk/provider");
|
|
13375
13589
|
function createProviderRegistry(providers, {
|
|
13376
13590
|
separator = ":",
|
|
13377
13591
|
languageModelMiddleware,
|
|
@@ -13420,7 +13634,7 @@ var DefaultProviderRegistry = class {
|
|
|
13420
13634
|
splitId(id, modelType) {
|
|
13421
13635
|
const index = id.indexOf(this.separator);
|
|
13422
13636
|
if (index === -1) {
|
|
13423
|
-
throw new
|
|
13637
|
+
throw new import_provider37.NoSuchModelError({
|
|
13424
13638
|
modelId: id,
|
|
13425
13639
|
modelType,
|
|
13426
13640
|
message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId${this.separator}modelId")`
|
|
@@ -13429,14 +13643,14 @@ var DefaultProviderRegistry = class {
|
|
|
13429
13643
|
return [id.slice(0, index), id.slice(index + this.separator.length)];
|
|
13430
13644
|
}
|
|
13431
13645
|
languageModel(id) {
|
|
13432
|
-
var
|
|
13646
|
+
var _a23, _b;
|
|
13433
13647
|
const [providerId, modelId] = this.splitId(id, "languageModel");
|
|
13434
|
-
let model = (_b = (
|
|
13435
|
-
|
|
13648
|
+
let model = (_b = (_a23 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
|
|
13649
|
+
_a23,
|
|
13436
13650
|
modelId
|
|
13437
13651
|
);
|
|
13438
13652
|
if (model == null) {
|
|
13439
|
-
throw new
|
|
13653
|
+
throw new import_provider37.NoSuchModelError({ modelId: id, modelType: "languageModel" });
|
|
13440
13654
|
}
|
|
13441
13655
|
if (this.languageModelMiddleware != null) {
|
|
13442
13656
|
model = wrapLanguageModel({
|
|
@@ -13447,12 +13661,12 @@ var DefaultProviderRegistry = class {
|
|
|
13447
13661
|
return model;
|
|
13448
13662
|
}
|
|
13449
13663
|
embeddingModel(id) {
|
|
13450
|
-
var
|
|
13664
|
+
var _a23;
|
|
13451
13665
|
const [providerId, modelId] = this.splitId(id, "embeddingModel");
|
|
13452
13666
|
const provider = this.getProvider(providerId, "embeddingModel");
|
|
13453
|
-
const model = (
|
|
13667
|
+
const model = (_a23 = provider.embeddingModel) == null ? void 0 : _a23.call(provider, modelId);
|
|
13454
13668
|
if (model == null) {
|
|
13455
|
-
throw new
|
|
13669
|
+
throw new import_provider37.NoSuchModelError({
|
|
13456
13670
|
modelId: id,
|
|
13457
13671
|
modelType: "embeddingModel"
|
|
13458
13672
|
});
|
|
@@ -13460,12 +13674,12 @@ var DefaultProviderRegistry = class {
|
|
|
13460
13674
|
return model;
|
|
13461
13675
|
}
|
|
13462
13676
|
imageModel(id) {
|
|
13463
|
-
var
|
|
13677
|
+
var _a23;
|
|
13464
13678
|
const [providerId, modelId] = this.splitId(id, "imageModel");
|
|
13465
13679
|
const provider = this.getProvider(providerId, "imageModel");
|
|
13466
|
-
let model = (
|
|
13680
|
+
let model = (_a23 = provider.imageModel) == null ? void 0 : _a23.call(provider, modelId);
|
|
13467
13681
|
if (model == null) {
|
|
13468
|
-
throw new
|
|
13682
|
+
throw new import_provider37.NoSuchModelError({ modelId: id, modelType: "imageModel" });
|
|
13469
13683
|
}
|
|
13470
13684
|
if (this.imageModelMiddleware != null) {
|
|
13471
13685
|
model = wrapImageModel({
|
|
@@ -13476,12 +13690,12 @@ var DefaultProviderRegistry = class {
|
|
|
13476
13690
|
return model;
|
|
13477
13691
|
}
|
|
13478
13692
|
transcriptionModel(id) {
|
|
13479
|
-
var
|
|
13693
|
+
var _a23;
|
|
13480
13694
|
const [providerId, modelId] = this.splitId(id, "transcriptionModel");
|
|
13481
13695
|
const provider = this.getProvider(providerId, "transcriptionModel");
|
|
13482
|
-
const model = (
|
|
13696
|
+
const model = (_a23 = provider.transcriptionModel) == null ? void 0 : _a23.call(provider, modelId);
|
|
13483
13697
|
if (model == null) {
|
|
13484
|
-
throw new
|
|
13698
|
+
throw new import_provider37.NoSuchModelError({
|
|
13485
13699
|
modelId: id,
|
|
13486
13700
|
modelType: "transcriptionModel"
|
|
13487
13701
|
});
|
|
@@ -13489,22 +13703,22 @@ var DefaultProviderRegistry = class {
|
|
|
13489
13703
|
return model;
|
|
13490
13704
|
}
|
|
13491
13705
|
speechModel(id) {
|
|
13492
|
-
var
|
|
13706
|
+
var _a23;
|
|
13493
13707
|
const [providerId, modelId] = this.splitId(id, "speechModel");
|
|
13494
13708
|
const provider = this.getProvider(providerId, "speechModel");
|
|
13495
|
-
const model = (
|
|
13709
|
+
const model = (_a23 = provider.speechModel) == null ? void 0 : _a23.call(provider, modelId);
|
|
13496
13710
|
if (model == null) {
|
|
13497
|
-
throw new
|
|
13711
|
+
throw new import_provider37.NoSuchModelError({ modelId: id, modelType: "speechModel" });
|
|
13498
13712
|
}
|
|
13499
13713
|
return model;
|
|
13500
13714
|
}
|
|
13501
13715
|
rerankingModel(id) {
|
|
13502
|
-
var
|
|
13716
|
+
var _a23;
|
|
13503
13717
|
const [providerId, modelId] = this.splitId(id, "rerankingModel");
|
|
13504
13718
|
const provider = this.getProvider(providerId, "rerankingModel");
|
|
13505
|
-
const model = (
|
|
13719
|
+
const model = (_a23 = provider.rerankingModel) == null ? void 0 : _a23.call(provider, modelId);
|
|
13506
13720
|
if (model == null) {
|
|
13507
|
-
throw new
|
|
13721
|
+
throw new import_provider37.NoSuchModelError({ modelId: id, modelType: "rerankingModel" });
|
|
13508
13722
|
}
|
|
13509
13723
|
return model;
|
|
13510
13724
|
}
|
|
@@ -13560,7 +13774,7 @@ async function rerank({
|
|
|
13560
13774
|
}),
|
|
13561
13775
|
tracer,
|
|
13562
13776
|
fn: async () => {
|
|
13563
|
-
var
|
|
13777
|
+
var _a23, _b;
|
|
13564
13778
|
const { ranking, response, providerMetadata, warnings } = await retry(
|
|
13565
13779
|
() => recordSpan({
|
|
13566
13780
|
name: "ai.rerank.doRerank",
|
|
@@ -13624,7 +13838,7 @@ async function rerank({
|
|
|
13624
13838
|
providerMetadata,
|
|
13625
13839
|
response: {
|
|
13626
13840
|
id: response == null ? void 0 : response.id,
|
|
13627
|
-
timestamp: (
|
|
13841
|
+
timestamp: (_a23 = response == null ? void 0 : response.timestamp) != null ? _a23 : /* @__PURE__ */ new Date(),
|
|
13628
13842
|
modelId: (_b = response == null ? void 0 : response.modelId) != null ? _b : model.modelId,
|
|
13629
13843
|
headers: response == null ? void 0 : response.headers,
|
|
13630
13844
|
body: response == null ? void 0 : response.body
|
|
@@ -13672,16 +13886,16 @@ async function transcribe({
|
|
|
13672
13886
|
const audioData = audio instanceof URL ? (await downloadFn({ url: audio, abortSignal })).data : convertDataContentToUint8Array(audio);
|
|
13673
13887
|
const result = await retry(
|
|
13674
13888
|
() => {
|
|
13675
|
-
var
|
|
13889
|
+
var _a23;
|
|
13676
13890
|
return resolvedModel.doGenerate({
|
|
13677
13891
|
audio: audioData,
|
|
13678
13892
|
abortSignal,
|
|
13679
13893
|
headers: headersWithUserAgent,
|
|
13680
13894
|
providerOptions,
|
|
13681
|
-
mediaType: (
|
|
13895
|
+
mediaType: (_a23 = detectMediaType({
|
|
13682
13896
|
data: audioData,
|
|
13683
13897
|
signatures: audioMediaTypeSignatures
|
|
13684
|
-
})) != null ?
|
|
13898
|
+
})) != null ? _a23 : "audio/wav"
|
|
13685
13899
|
});
|
|
13686
13900
|
}
|
|
13687
13901
|
);
|
|
@@ -13705,14 +13919,14 @@ async function transcribe({
|
|
|
13705
13919
|
}
|
|
13706
13920
|
var DefaultTranscriptionResult = class {
|
|
13707
13921
|
constructor(options) {
|
|
13708
|
-
var
|
|
13922
|
+
var _a23;
|
|
13709
13923
|
this.text = options.text;
|
|
13710
13924
|
this.segments = options.segments;
|
|
13711
13925
|
this.language = options.language;
|
|
13712
13926
|
this.durationInSeconds = options.durationInSeconds;
|
|
13713
13927
|
this.warnings = options.warnings;
|
|
13714
13928
|
this.responses = options.responses;
|
|
13715
|
-
this.providerMetadata = (
|
|
13929
|
+
this.providerMetadata = (_a23 = options.providerMetadata) != null ? _a23 : {};
|
|
13716
13930
|
}
|
|
13717
13931
|
};
|
|
13718
13932
|
|
|
@@ -13751,7 +13965,7 @@ async function callCompletionApi({
|
|
|
13751
13965
|
onError,
|
|
13752
13966
|
fetch: fetch2 = getOriginalFetch()
|
|
13753
13967
|
}) {
|
|
13754
|
-
var
|
|
13968
|
+
var _a23;
|
|
13755
13969
|
try {
|
|
13756
13970
|
setLoading(true);
|
|
13757
13971
|
setError(void 0);
|
|
@@ -13779,7 +13993,7 @@ async function callCompletionApi({
|
|
|
13779
13993
|
});
|
|
13780
13994
|
if (!response.ok) {
|
|
13781
13995
|
throw new Error(
|
|
13782
|
-
(
|
|
13996
|
+
(_a23 = await response.text()) != null ? _a23 : "Failed to fetch the chat response."
|
|
13783
13997
|
);
|
|
13784
13998
|
}
|
|
13785
13999
|
if (!response.body) {
|
|
@@ -13863,12 +14077,12 @@ async function convertFileListToFileUIParts(files) {
|
|
|
13863
14077
|
}
|
|
13864
14078
|
return Promise.all(
|
|
13865
14079
|
Array.from(files).map(async (file) => {
|
|
13866
|
-
const { name:
|
|
14080
|
+
const { name: name23, type } = file;
|
|
13867
14081
|
const dataUrl = await new Promise((resolve3, reject) => {
|
|
13868
14082
|
const reader = new FileReader();
|
|
13869
14083
|
reader.onload = (readerEvent) => {
|
|
13870
|
-
var
|
|
13871
|
-
resolve3((
|
|
14084
|
+
var _a23;
|
|
14085
|
+
resolve3((_a23 = readerEvent.target) == null ? void 0 : _a23.result);
|
|
13872
14086
|
};
|
|
13873
14087
|
reader.onerror = (error) => reject(error);
|
|
13874
14088
|
reader.readAsDataURL(file);
|
|
@@ -13876,7 +14090,7 @@ async function convertFileListToFileUIParts(files) {
|
|
|
13876
14090
|
return {
|
|
13877
14091
|
type: "file",
|
|
13878
14092
|
mediaType: type,
|
|
13879
|
-
filename:
|
|
14093
|
+
filename: name23,
|
|
13880
14094
|
url: dataUrl
|
|
13881
14095
|
};
|
|
13882
14096
|
})
|
|
@@ -13910,7 +14124,7 @@ var HttpChatTransport = class {
|
|
|
13910
14124
|
abortSignal,
|
|
13911
14125
|
...options
|
|
13912
14126
|
}) {
|
|
13913
|
-
var
|
|
14127
|
+
var _a23, _b, _c, _d, _e;
|
|
13914
14128
|
const resolvedBody = await (0, import_provider_utils40.resolve)(this.body);
|
|
13915
14129
|
const resolvedHeaders = await (0, import_provider_utils40.resolve)(this.headers);
|
|
13916
14130
|
const resolvedCredentials = await (0, import_provider_utils40.resolve)(this.credentials);
|
|
@@ -13918,7 +14132,7 @@ var HttpChatTransport = class {
|
|
|
13918
14132
|
...(0, import_provider_utils40.normalizeHeaders)(resolvedHeaders),
|
|
13919
14133
|
...(0, import_provider_utils40.normalizeHeaders)(options.headers)
|
|
13920
14134
|
};
|
|
13921
|
-
const preparedRequest = await ((
|
|
14135
|
+
const preparedRequest = await ((_a23 = this.prepareSendMessagesRequest) == null ? void 0 : _a23.call(this, {
|
|
13922
14136
|
api: this.api,
|
|
13923
14137
|
id: options.chatId,
|
|
13924
14138
|
messages: options.messages,
|
|
@@ -13962,7 +14176,7 @@ var HttpChatTransport = class {
|
|
|
13962
14176
|
return this.processResponseStream(response.body);
|
|
13963
14177
|
}
|
|
13964
14178
|
async reconnectToStream(options) {
|
|
13965
|
-
var
|
|
14179
|
+
var _a23, _b, _c, _d, _e;
|
|
13966
14180
|
const resolvedBody = await (0, import_provider_utils40.resolve)(this.body);
|
|
13967
14181
|
const resolvedHeaders = await (0, import_provider_utils40.resolve)(this.headers);
|
|
13968
14182
|
const resolvedCredentials = await (0, import_provider_utils40.resolve)(this.credentials);
|
|
@@ -13970,7 +14184,7 @@ var HttpChatTransport = class {
|
|
|
13970
14184
|
...(0, import_provider_utils40.normalizeHeaders)(resolvedHeaders),
|
|
13971
14185
|
...(0, import_provider_utils40.normalizeHeaders)(options.headers)
|
|
13972
14186
|
};
|
|
13973
|
-
const preparedRequest = await ((
|
|
14187
|
+
const preparedRequest = await ((_a23 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a23.call(this, {
|
|
13974
14188
|
api: this.api,
|
|
13975
14189
|
id: options.chatId,
|
|
13976
14190
|
body: { ...resolvedBody, ...options.body },
|
|
@@ -14050,11 +14264,11 @@ var AbstractChat = class {
|
|
|
14050
14264
|
* If a messageId is provided, the message will be replaced.
|
|
14051
14265
|
*/
|
|
14052
14266
|
this.sendMessage = async (message, options) => {
|
|
14053
|
-
var
|
|
14267
|
+
var _a23, _b, _c, _d;
|
|
14054
14268
|
if (message == null) {
|
|
14055
14269
|
await this.makeRequest({
|
|
14056
14270
|
trigger: "submit-message",
|
|
14057
|
-
messageId: (
|
|
14271
|
+
messageId: (_a23 = this.lastMessage) == null ? void 0 : _a23.id,
|
|
14058
14272
|
...options
|
|
14059
14273
|
});
|
|
14060
14274
|
return;
|
|
@@ -14164,11 +14378,11 @@ var AbstractChat = class {
|
|
|
14164
14378
|
}
|
|
14165
14379
|
if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
|
|
14166
14380
|
this.shouldSendAutomatically().then((shouldSend) => {
|
|
14167
|
-
var
|
|
14381
|
+
var _a23;
|
|
14168
14382
|
if (shouldSend) {
|
|
14169
14383
|
this.makeRequest({
|
|
14170
14384
|
trigger: "submit-message",
|
|
14171
|
-
messageId: (
|
|
14385
|
+
messageId: (_a23 = this.lastMessage) == null ? void 0 : _a23.id,
|
|
14172
14386
|
...options
|
|
14173
14387
|
});
|
|
14174
14388
|
}
|
|
@@ -14194,11 +14408,11 @@ var AbstractChat = class {
|
|
|
14194
14408
|
}
|
|
14195
14409
|
if (this.status !== "streaming" && this.status !== "submitted" && this.sendAutomaticallyWhen) {
|
|
14196
14410
|
this.shouldSendAutomatically().then((shouldSend) => {
|
|
14197
|
-
var
|
|
14411
|
+
var _a23;
|
|
14198
14412
|
if (shouldSend) {
|
|
14199
14413
|
this.makeRequest({
|
|
14200
14414
|
trigger: "submit-message",
|
|
14201
|
-
messageId: (
|
|
14415
|
+
messageId: (_a23 = this.lastMessage) == null ? void 0 : _a23.id,
|
|
14202
14416
|
...options
|
|
14203
14417
|
});
|
|
14204
14418
|
}
|
|
@@ -14211,8 +14425,8 @@ var AbstractChat = class {
|
|
|
14211
14425
|
* Abort the current request immediately, keep the generated tokens if any.
|
|
14212
14426
|
*/
|
|
14213
14427
|
this.stop = async () => {
|
|
14214
|
-
var
|
|
14215
|
-
(
|
|
14428
|
+
var _a23, _b;
|
|
14429
|
+
(_a23 = this.activeResumeRequest) == null ? void 0 : _a23.abortController.abort();
|
|
14216
14430
|
(_b = this.activeResponse) == null ? void 0 : _b.abortController.abort();
|
|
14217
14431
|
};
|
|
14218
14432
|
this.id = id;
|
|
@@ -14277,11 +14491,11 @@ var AbstractChat = class {
|
|
|
14277
14491
|
body,
|
|
14278
14492
|
messageId
|
|
14279
14493
|
}) {
|
|
14280
|
-
var
|
|
14494
|
+
var _a23, _b, _c;
|
|
14281
14495
|
const abortController = new AbortController();
|
|
14282
14496
|
const activeResumeRequest = trigger === "resume-stream" ? { abortController } : void 0;
|
|
14283
14497
|
if (activeResumeRequest) {
|
|
14284
|
-
(
|
|
14498
|
+
(_a23 = this.activeResumeRequest) == null ? void 0 : _a23.abortController.abort();
|
|
14285
14499
|
this.activeResumeRequest = activeResumeRequest;
|
|
14286
14500
|
}
|
|
14287
14501
|
const isCurrentRequest = () => activeResumeRequest == null || this.activeResumeRequest === activeResumeRequest;
|
|
@@ -14377,14 +14591,14 @@ var AbstractChat = class {
|
|
|
14377
14591
|
return job({
|
|
14378
14592
|
state: response.state,
|
|
14379
14593
|
write: ({ updateStatus = true } = {}) => {
|
|
14380
|
-
var
|
|
14594
|
+
var _a24;
|
|
14381
14595
|
if (response.abortController.signal.aborted) {
|
|
14382
14596
|
return;
|
|
14383
14597
|
}
|
|
14384
14598
|
if (updateStatus) {
|
|
14385
14599
|
this.setStatus({ status: "streaming" });
|
|
14386
14600
|
}
|
|
14387
|
-
const replaceLastMessage = response.state.message.id === ((
|
|
14601
|
+
const replaceLastMessage = response.state.message.id === ((_a24 = this.lastMessage) == null ? void 0 : _a24.id);
|
|
14388
14602
|
if (replaceLastMessage) {
|
|
14389
14603
|
this.state.replaceMessage(
|
|
14390
14604
|
this.state.messages.length - 1,
|
|
@@ -14488,7 +14702,7 @@ var DirectChatTransport = class {
|
|
|
14488
14702
|
messages,
|
|
14489
14703
|
abortSignal
|
|
14490
14704
|
}) {
|
|
14491
|
-
const validatedMessages = await
|
|
14705
|
+
const validatedMessages = await validateUIMessagesForAgent({
|
|
14492
14706
|
messages,
|
|
14493
14707
|
tools: this.agent.tools
|
|
14494
14708
|
});
|
|
@@ -14635,6 +14849,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
14635
14849
|
TooManyEmbeddingValuesForCallError,
|
|
14636
14850
|
ToolCallNotFoundForApprovalError,
|
|
14637
14851
|
ToolCallRepairError,
|
|
14852
|
+
ToolChoiceViolationError,
|
|
14638
14853
|
ToolLoopAgent,
|
|
14639
14854
|
TypeValidationError,
|
|
14640
14855
|
UIMessageStreamError,
|