From e4da2204784cd58e0b1dc376f22bb5f67f321905 Mon Sep 17 00:00:00 2001 From: Ayaan Zaidi Date: Wed, 22 Apr 2026 10:45:20 +0530 Subject: [PATCH] fix(agents): distill replay content normalization --- .../pi-embedded-runner/replay-history.ts | 21 ++++++------------- src/agents/pi-embedded-runner/run/attempt.ts | 8 +++---- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/src/agents/pi-embedded-runner/replay-history.ts b/src/agents/pi-embedded-runner/replay-history.ts index cb0985cd0c3..68d36827084 100644 --- a/src/agents/pi-embedded-runner/replay-history.ts +++ b/src/agents/pi-embedded-runner/replay-history.ts @@ -40,7 +40,6 @@ import { type AssistantUsageSnapshot, type UsageLike, } from "../usage.js"; -import { log } from "./logger.js"; import { dropThinkingBlocks } from "./thinking.js"; const INTER_SESSION_PREFIX_BASE = "[Inter-session message]"; @@ -232,23 +231,15 @@ export function normalizeAssistantReplayContent(messages: AgentMessage[]): Agent let touched = false; const out = [...messages]; for (let i = 0; i < out.length; i += 1) { - const message = out[i] as (AgentMessage & { role?: unknown; content?: unknown }) | undefined; - if (!message || message.role !== "assistant" || Array.isArray(message.content)) { + const message = out[i]; + const replayContent = (message as { content?: unknown } | undefined)?.content; + if (!message || message.role !== "assistant" || typeof replayContent !== "string") { continue; } - if (typeof message.content !== "string") { - log.warn( - `normalizeAssistantReplayContent: repairing malformed assistant content ` + - `(index=${i}, type=${typeof message.content})`, - ); - } out[i] = { - ...(message as unknown as Record), - content: - typeof message.content === "string" - ? [{ type: "text", text: message.content }] - : [{ type: "text", text: "" }], - } as AgentMessage; + ...message, + content: [{ type: "text", text: replayContent }], + }; touched = true; } return touched ? out : messages; diff --git a/src/agents/pi-embedded-runner/run/attempt.ts b/src/agents/pi-embedded-runner/run/attempt.ts index 01ab6984ba2..d750bbc4f74 100644 --- a/src/agents/pi-embedded-runner/run/attempt.ts +++ b/src/agents/pi-embedded-runner/run/attempt.ts @@ -1144,11 +1144,9 @@ export async function runEmbeddedAttempt( throw new Error("Embedded agent session missing"); } const activeSession = session; - if (typeof activeSession.agent.convertToLlm === "function") { - const baseConvertToLlm = activeSession.agent.convertToLlm.bind(activeSession.agent); - activeSession.agent.convertToLlm = async (messages) => - await baseConvertToLlm(normalizeAssistantReplayContent(messages)); - } + const baseConvertToLlm = activeSession.agent.convertToLlm.bind(activeSession.agent); + activeSession.agent.convertToLlm = async (messages) => + await baseConvertToLlm(normalizeAssistantReplayContent(messages)); let prePromptMessageCount = activeSession.messages.length; abortSessionForYield = () => { yieldAbortSettled = Promise.resolve(activeSession.abort());