fix (agents): harden transcript tool-call block sanitization

This commit is contained in:
Vignesh Natarajan
2026-02-14 20:09:04 -08:00
parent cbf712b7be
commit aa56045b49
2 changed files with 42 additions and 1 deletions

View File

@@ -58,6 +58,18 @@ function hasToolCallInput(block: ToolCallBlock): boolean {
return hasInput || hasArguments;
}
function hasNonEmptyStringField(value: unknown): boolean {
return typeof value === "string" && value.trim().length > 0;
}
function hasToolCallId(block: ToolCallBlock): boolean {
return hasNonEmptyStringField(block.id);
}
function hasToolCallName(block: ToolCallBlock): boolean {
return hasNonEmptyStringField(block.name);
}
function extractToolResultId(msg: Extract<AgentMessage, { role: "toolResult" }>): string | null {
const toolCallId = (msg as { toolCallId?: unknown }).toolCallId;
if (typeof toolCallId === "string" && toolCallId) {
@@ -118,7 +130,10 @@ export function repairToolCallInputs(messages: AgentMessage[]): ToolCallInputRep
let droppedInMessage = 0;
for (const block of msg.content) {
if (isToolCallBlock(block) && !hasToolCallInput(block)) {
if (
isToolCallBlock(block) &&
(!hasToolCallInput(block) || !hasToolCallId(block) || !hasToolCallName(block))
) {
droppedToolCalls += 1;
droppedInMessage += 1;
changed = true;