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.
3.0 kB · 118 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119import type { AgentMessage } from "@earendil-works/pi-agent-core";import type { AssistantMessage, Model } from "@earendil-works/pi-ai";import { beforeEach, describe, expect, it, vi } from "vitest";import { generateSummary } from "../src/core/compaction/index.js";
const { completeSimpleMock } = vi.hoisted(() => ({ completeSimpleMock: vi.fn(),}));
vi.mock("@earendil-works/pi-ai", async (importOriginal) => { const actual = await importOriginal<typeof import("@earendil-works/pi-ai")>(); return { ...actual, completeSimple: completeSimpleMock, };});
function createModel(reasoning: boolean): Model<"anthropic-messages"> { return { id: reasoning ? "reasoning-model" : "non-reasoning-model", name: reasoning ? "Reasoning Model" : "Non-reasoning Model", api: "anthropic-messages", provider: "anthropic", baseUrl: "https://api.anthropic.com", reasoning, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 200000, maxTokens: 8192, };}
const mockSummaryResponse: AssistantMessage = { role: "assistant", content: [{ type: "text", text: "## Goal\nTest summary" }], api: "anthropic-messages", provider: "anthropic", model: "claude-sonnet-4-5", usage: { input: 10, output: 10, cacheRead: 0, cacheWrite: 0, totalTokens: 20, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 }, }, stopReason: "stop", timestamp: Date.now(),};
const messages: AgentMessage[] = [{ role: "user", content: "Summarize this.", timestamp: Date.now() }];
describe("generateSummary reasoning options", () => { beforeEach(() => { completeSimpleMock.mockReset(); completeSimpleMock.mockResolvedValue(mockSummaryResponse); });
it("uses the provided thinking level for reasoning-capable models", async () => { await generateSummary( messages, createModel(true), 2000, "test-key", undefined, undefined, undefined, undefined, "medium", );
expect(completeSimpleMock).toHaveBeenCalledTimes(1); expect(completeSimpleMock.mock.calls[0][2]).toMatchObject({ reasoning: "medium", apiKey: "test-key", }); });
it("does not set reasoning when thinking is off", async () => { await generateSummary( messages, createModel(true), 2000, "test-key", undefined, undefined, undefined, undefined, "off", );
expect(completeSimpleMock).toHaveBeenCalledTimes(1); expect(completeSimpleMock.mock.calls[0][2]).toMatchObject({ apiKey: "test-key", }); expect(completeSimpleMock.mock.calls[0][2]).not.toHaveProperty("reasoning"); });
it("does not set reasoning for non-reasoning models", async () => { await generateSummary( messages, createModel(false), 2000, "test-key", undefined, undefined, undefined, undefined, "medium", );
expect(completeSimpleMock).toHaveBeenCalledTimes(1); expect(completeSimpleMock.mock.calls[0][2]).toMatchObject({ apiKey: "test-key", }); expect(completeSimpleMock.mock.calls[0][2]).not.toHaveProperty("reasoning"); });});