diff --git a/src/agents/pi-extensions/compaction-safeguard.test.ts b/src/agents/pi-extensions/compaction-safeguard.test.ts index 1394f265f91..8f8e022f9de 100644 --- a/src/agents/pi-extensions/compaction-safeguard.test.ts +++ b/src/agents/pi-extensions/compaction-safeguard.test.ts @@ -546,6 +546,19 @@ describe("compaction-safeguard recent-turn preservation", () => { expect(section).toContain("[non-text content: image]"); }); + it("does not add non-text placeholders for text-only content blocks", () => { + const section = formatPreservedTurnsSection([ + { + role: "assistant", + content: [{ type: "text", text: "plain text reply" }], + timestamp: 1, + } as unknown as AgentMessage, + ]); + + expect(section).toContain("- Assistant: plain text reply"); + expect(section).not.toContain("[non-text content]"); + }); + it("clamps preserve count into a safe range", () => { expect(resolveRecentTurnsPreserve(undefined)).toBe(3); expect(resolveRecentTurnsPreserve(-1)).toBe(0); diff --git a/src/agents/pi-extensions/compaction-safeguard.ts b/src/agents/pi-extensions/compaction-safeguard.ts index 17714beed55..f54de615463 100644 --- a/src/agents/pi-extensions/compaction-safeguard.ts +++ b/src/agents/pi-extensions/compaction-safeguard.ts @@ -220,7 +220,7 @@ function formatNonTextPlaceholder(content: unknown): string | null { typeCounts.set(type, (typeCounts.get(type) ?? 0) + 1); } if (typeCounts.size === 0) { - return "[non-text content]"; + return null; } const parts = [...typeCounts.entries()].map(([type, count]) => count > 1 ? `${type} x${count}` : type,