@voltagent/core 1.1.30 → 1.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +127 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +127 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -12578,17 +12578,61 @@ var normalizeText = /* @__PURE__ */ __name((part) => {
|
|
|
12578
12578
|
}
|
|
12579
12579
|
return normalized;
|
|
12580
12580
|
}, "normalizeText");
|
|
12581
|
+
var sanitizeReasoningProviderMetadata = /* @__PURE__ */ __name((providerMetadata) => {
|
|
12582
|
+
if (!isObject(providerMetadata) || Array.isArray(providerMetadata)) {
|
|
12583
|
+
return void 0;
|
|
12584
|
+
}
|
|
12585
|
+
const cloned = safeClone(providerMetadata);
|
|
12586
|
+
if (Object.keys(cloned).length === 0) {
|
|
12587
|
+
return void 0;
|
|
12588
|
+
}
|
|
12589
|
+
return cloned;
|
|
12590
|
+
}, "sanitizeReasoningProviderMetadata");
|
|
12591
|
+
var extractReasoningIdFromMetadata = /* @__PURE__ */ __name((metadata) => {
|
|
12592
|
+
const visit = /* @__PURE__ */ __name((value, hasReasoningContext) => {
|
|
12593
|
+
if (Array.isArray(value)) {
|
|
12594
|
+
for (const element of value) {
|
|
12595
|
+
const found = visit(element, hasReasoningContext);
|
|
12596
|
+
if (found) return found;
|
|
12597
|
+
}
|
|
12598
|
+
return void 0;
|
|
12599
|
+
}
|
|
12600
|
+
if (!isObject(value)) {
|
|
12601
|
+
return void 0;
|
|
12602
|
+
}
|
|
12603
|
+
for (const [key, child] of Object.entries(value)) {
|
|
12604
|
+
const keyHasReasoningContext = hasReasoningContext || /reasoning/i.test(key);
|
|
12605
|
+
if (typeof child === "string") {
|
|
12606
|
+
const trimmed = child.trim();
|
|
12607
|
+
if (trimmed && keyHasReasoningContext && (/(^|_)id$/i.test(key) || /trace/i.test(key) || /id$/i.test(key))) {
|
|
12608
|
+
return trimmed;
|
|
12609
|
+
}
|
|
12610
|
+
} else {
|
|
12611
|
+
const found = visit(child, keyHasReasoningContext);
|
|
12612
|
+
if (found) {
|
|
12613
|
+
return found;
|
|
12614
|
+
}
|
|
12615
|
+
}
|
|
12616
|
+
}
|
|
12617
|
+
return void 0;
|
|
12618
|
+
}, "visit");
|
|
12619
|
+
return visit(metadata, false);
|
|
12620
|
+
}, "extractReasoningIdFromMetadata");
|
|
12581
12621
|
var normalizeReasoning = /* @__PURE__ */ __name((part) => {
|
|
12582
12622
|
const text = typeof part.text === "string" ? part.text : "";
|
|
12583
|
-
|
|
12623
|
+
const explicitReasoningId = typeof part.reasoningId === "string" ? part.reasoningId : "";
|
|
12624
|
+
const providerMetadata = sanitizeReasoningProviderMetadata(part.providerMetadata);
|
|
12625
|
+
const metadataReasoningId = providerMetadata && isObject(providerMetadata) ? extractReasoningIdFromMetadata(providerMetadata) : void 0;
|
|
12626
|
+
const reasoningId = explicitReasoningId || metadataReasoningId || "";
|
|
12627
|
+
if (!text.trim() && !reasoningId.trim()) {
|
|
12584
12628
|
return null;
|
|
12585
12629
|
}
|
|
12586
12630
|
const normalized = {
|
|
12587
12631
|
type: "reasoning",
|
|
12588
12632
|
text
|
|
12589
12633
|
};
|
|
12590
|
-
if (
|
|
12591
|
-
normalized.reasoningId =
|
|
12634
|
+
if (reasoningId) {
|
|
12635
|
+
normalized.reasoningId = reasoningId;
|
|
12592
12636
|
}
|
|
12593
12637
|
if (part.reasoningConfidence !== void 0) {
|
|
12594
12638
|
normalized.reasoningConfidence = part.reasoningConfidence;
|
|
@@ -12623,6 +12667,16 @@ var normalizeToolPart = /* @__PURE__ */ __name((part) => {
|
|
|
12623
12667
|
if (part.providerExecuted !== void 0) normalized.providerExecuted = part.providerExecuted;
|
|
12624
12668
|
if (part.isError !== void 0) normalized.isError = part.isError;
|
|
12625
12669
|
if (part.errorText !== void 0) normalized.errorText = part.errorText;
|
|
12670
|
+
const callProviderMetadata = sanitizeReasoningProviderMetadata(
|
|
12671
|
+
part.callProviderMetadata
|
|
12672
|
+
);
|
|
12673
|
+
if (callProviderMetadata) {
|
|
12674
|
+
normalized.callProviderMetadata = callProviderMetadata;
|
|
12675
|
+
}
|
|
12676
|
+
const providerMetadata = sanitizeReasoningProviderMetadata(part.providerMetadata);
|
|
12677
|
+
if (providerMetadata) {
|
|
12678
|
+
normalized.providerMetadata = providerMetadata;
|
|
12679
|
+
}
|
|
12626
12680
|
return normalized;
|
|
12627
12681
|
}, "normalizeToolPart");
|
|
12628
12682
|
var sanitizeMessagesForModel = /* @__PURE__ */ __name((messages) => messages.map((message) => sanitizeMessageForModel(message)).filter((message) => Boolean(message)), "sanitizeMessagesForModel");
|
|
@@ -12636,12 +12690,16 @@ var sanitizeMessageForModel = /* @__PURE__ */ __name((message) => {
|
|
|
12636
12690
|
sanitizedParts.push(normalized);
|
|
12637
12691
|
}
|
|
12638
12692
|
const pruned = collapseRedundantStepStarts(pruneEmptyToolRuns(sanitizedParts));
|
|
12639
|
-
const
|
|
12693
|
+
const withoutDanglingTools = removeProviderExecutedToolsWithoutReasoning(pruned);
|
|
12694
|
+
const normalizedParts = stripReasoningLinkedProviderMetadata(withoutDanglingTools);
|
|
12695
|
+
const effectiveParts = normalizedParts.filter((part) => {
|
|
12640
12696
|
if (part.type === "text") {
|
|
12641
12697
|
return typeof part.text === "string" && part.text.trim().length > 0;
|
|
12642
12698
|
}
|
|
12643
12699
|
if (part.type === "reasoning") {
|
|
12644
|
-
|
|
12700
|
+
const text = typeof part.text === "string" ? part.text.trim() : "";
|
|
12701
|
+
const reasoningId = typeof part.reasoningId === "string" ? part.reasoningId.trim() : "";
|
|
12702
|
+
return text.length > 0 || reasoningId.length > 0;
|
|
12645
12703
|
}
|
|
12646
12704
|
if (typeof part.type === "string" && part.type.startsWith("tool-")) {
|
|
12647
12705
|
return Boolean(part.toolCallId);
|
|
@@ -12696,6 +12754,70 @@ var pruneEmptyToolRuns = /* @__PURE__ */ __name((parts) => {
|
|
|
12696
12754
|
}
|
|
12697
12755
|
return cleaned;
|
|
12698
12756
|
}, "pruneEmptyToolRuns");
|
|
12757
|
+
var removeProviderExecutedToolsWithoutReasoning = /* @__PURE__ */ __name((parts) => {
|
|
12758
|
+
const hasReasoning = parts.some((part) => part.type === "reasoning");
|
|
12759
|
+
if (hasReasoning) {
|
|
12760
|
+
return parts;
|
|
12761
|
+
}
|
|
12762
|
+
const hasProviderExecutedTool = parts.some(
|
|
12763
|
+
(part) => typeof part.type === "string" && part.type.startsWith("tool-") && part.providerExecuted === true
|
|
12764
|
+
);
|
|
12765
|
+
if (!hasProviderExecutedTool) {
|
|
12766
|
+
return parts;
|
|
12767
|
+
}
|
|
12768
|
+
return parts.filter(
|
|
12769
|
+
(part) => !(typeof part.type === "string" && part.type.startsWith("tool-") && part.providerExecuted === true)
|
|
12770
|
+
);
|
|
12771
|
+
}, "removeProviderExecutedToolsWithoutReasoning");
|
|
12772
|
+
var stripReasoningLinkedProviderMetadata = /* @__PURE__ */ __name((parts) => {
|
|
12773
|
+
const hasReasoning = parts.some((part) => part.type === "reasoning");
|
|
12774
|
+
if (hasReasoning) {
|
|
12775
|
+
return parts;
|
|
12776
|
+
}
|
|
12777
|
+
const stripMetadata = /* @__PURE__ */ __name((metadata) => {
|
|
12778
|
+
if (!isObject(metadata)) {
|
|
12779
|
+
return void 0;
|
|
12780
|
+
}
|
|
12781
|
+
const cloned = { ...metadata };
|
|
12782
|
+
const openaiMetadata = cloned.openai;
|
|
12783
|
+
if (!isObject(openaiMetadata) || !("itemId" in openaiMetadata || "reasoning_trace_id" in openaiMetadata || "reasoning" in openaiMetadata && isObject(openaiMetadata.reasoning))) {
|
|
12784
|
+
return metadata;
|
|
12785
|
+
}
|
|
12786
|
+
cloned.openai = void 0;
|
|
12787
|
+
return Object.keys(cloned).length > 0 ? cloned : void 0;
|
|
12788
|
+
}, "stripMetadata");
|
|
12789
|
+
let mutated = false;
|
|
12790
|
+
const result = parts.map((part) => {
|
|
12791
|
+
let updated = false;
|
|
12792
|
+
const nextPart = { ...part };
|
|
12793
|
+
const applyStrip = /* @__PURE__ */ __name((key) => {
|
|
12794
|
+
const current = part[key];
|
|
12795
|
+
const cleaned = stripMetadata(current);
|
|
12796
|
+
if (cleaned === void 0 && current === void 0) {
|
|
12797
|
+
return;
|
|
12798
|
+
}
|
|
12799
|
+
if (cleaned === current) {
|
|
12800
|
+
return;
|
|
12801
|
+
}
|
|
12802
|
+
if (!updated) {
|
|
12803
|
+
updated = true;
|
|
12804
|
+
}
|
|
12805
|
+
if (cleaned) {
|
|
12806
|
+
nextPart[key] = cleaned;
|
|
12807
|
+
} else {
|
|
12808
|
+
delete nextPart[key];
|
|
12809
|
+
}
|
|
12810
|
+
}, "applyStrip");
|
|
12811
|
+
applyStrip("providerMetadata");
|
|
12812
|
+
applyStrip("callProviderMetadata");
|
|
12813
|
+
if (!updated) {
|
|
12814
|
+
return part;
|
|
12815
|
+
}
|
|
12816
|
+
mutated = true;
|
|
12817
|
+
return nextPart;
|
|
12818
|
+
});
|
|
12819
|
+
return mutated ? result : parts;
|
|
12820
|
+
}, "stripReasoningLinkedProviderMetadata");
|
|
12699
12821
|
var collapseRedundantStepStarts = /* @__PURE__ */ __name((parts) => {
|
|
12700
12822
|
const result = [];
|
|
12701
12823
|
for (const part of parts) {
|