Something went wrong. Try again.
fork of prime agent with changes i want but are not upstreamable probqbly (and some fixes)
Something went wrong. Try again.
2.0 kB · 78 lines
TypeScript
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879import type { Message } from "@earendil-works/pi-ai";import { describe, expect, it } from "vitest";import { serializeConversation } from "../src/core/compaction/utils.js";
describe("serializeConversation", () => { it("should truncate long tool results", () => { const longContent = "x".repeat(5000); const messages: Message[] = [ { role: "toolResult", toolCallId: "tc1", toolName: "ipython", content: [{ type: "text", text: longContent }], isError: false, timestamp: Date.now(), }, ];
const result = serializeConversation(messages);
expect(result).toContain("[Tool result]:"); expect(result).toContain("[... 3000 more characters truncated]"); expect(result).not.toContain("x".repeat(3000)); expect(result).toContain("x".repeat(2000)); });
it("should not truncate short tool results", () => { const shortContent = "x".repeat(1500); const messages: Message[] = [ { role: "toolResult", toolCallId: "tc1", toolName: "ipython", content: [{ type: "text", text: shortContent }], isError: false, timestamp: Date.now(), }, ];
const result = serializeConversation(messages);
expect(result).toBe(`[Tool result]: ${shortContent}`); expect(result).not.toContain("truncated"); });
it("should not truncate assistant or user messages", () => { const longText = "y".repeat(5000); const messages: Message[] = [ { role: "user", content: [{ type: "text", text: longText }], timestamp: Date.now(), }, { role: "assistant", content: [{ type: "text", text: longText }], api: "anthropic", provider: "anthropic", model: "test", usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 }, }, stopReason: "stop", timestamp: Date.now(), }, ];
const result = serializeConversation(messages);
expect(result).not.toContain("truncated"); expect(result).toContain(longText); });});