feat: add provider-native request switches (#5254)

This commit is contained in:
chengyongru
2026-08-05 18:26:39 +08:00
committed by GitHub
parent 5a1ab44baa
commit 67805f5db8
32 changed files with 1130 additions and 52 deletions
+25 -1
View File
@@ -16,7 +16,10 @@ export function formatToolCallTrace(call: unknown): string | null {
if (!name) return null;
const args = item.function?.arguments ?? item.arguments;
if (typeof args === "string" && args.trim()) return `${name}(${args})`;
if (args && typeof args === "object") return `${name}(${JSON.stringify(args)})`;
if (args && typeof args === "object") {
const serialized = JSON.stringify(args);
return serialized === "{}" || serialized === "[]" ? `${name}()` : `${name}(${serialized})`;
}
return `${name}()`;
}
@@ -116,3 +119,24 @@ export function mergeUniqueToolTraceLines(
}
return { traces, added };
}
export function mergeToolProgressTraceLines(
previousTraces: string[],
previousEvents: ToolProgressEvent[] | undefined,
incomingTraces: string[],
incomingEvents: ToolProgressEvent[],
): string[] {
const mergedEvents = mergeToolProgressEvents(previousEvents, incomingEvents);
const candidates = mergeUniqueToolTraceLines(previousTraces, incomingTraces).traces;
const eventTraceKeys = new Set([
...toolTraceLinesFromEvents(previousEvents),
...toolTraceLinesFromEvents(incomingEvents),
].map(canonicalToolTrace));
const nonEventTraces = candidates.filter(
(line) => !eventTraceKeys.has(canonicalToolTrace(line)),
);
return mergeUniqueToolTraceLines(
nonEventTraces,
toolTraceLinesFromEvents(mergedEvents),
).traces;
}