import { describe, expect, it, mock } from "bun:test" mock.module("../../shared/system-directive", () => ({ createSystemDirective: (type: string) => `[DIRECTIVE:${type}]`, SystemDirectiveTypes: { TODO_CONTINUATION: "TODO CONTINUATION", RALPH_LOOP: "RALPH LOOP", BOULDER_CONTINUATION: "BOULDER CONTINUATION", DELEGATION_REQUIRED: "DELEGATION REQUIRED", SINGLE_TASK_ONLY: "SINGLE TASK ONLY", COMPACTION_CONTEXT: "COMPACTION CONTEXT", CONTEXT_WINDOW_MONITOR: "CONTEXT WINDOW MONITOR", PROMETHEUS_READ_ONLY: "PROMETHEUS READ-ONLY", }, })) import { createCompactionContextInjector } from "./index" import { TaskHistory } from "../../features/background-agent/task-history" describe("createCompactionContextInjector", () => { describe("Agent Verification State preservation", () => { it("includes Agent Verification State section in compaction prompt", async () => { //#given const injector = createCompactionContextInjector() //#when const prompt = injector() //#then expect(prompt).toContain("Agent Verification State") expect(prompt).toContain("Current Agent") expect(prompt).toContain("Verification Progress") }) it("includes reviewer-agent continuity fields", async () => { //#given const injector = createCompactionContextInjector() //#when const prompt = injector() //#then expect(prompt).toContain("Previous Rejections") expect(prompt).toContain("Acceptance Status") expect(prompt).toContain("reviewer agents") }) it("preserves file verification progress fields", async () => { //#given const injector = createCompactionContextInjector() //#when const prompt = injector() //#then expect(prompt).toContain("Pending Verifications") expect(prompt).toContain("Files already verified") }) }) it("restricts constraints to explicit verbatim statements", async () => { //#given const injector = createCompactionContextInjector() //#when const prompt = injector() //#then expect(prompt).toContain("Explicit Constraints (Verbatim Only)") expect(prompt).toContain("Do NOT invent") expect(prompt).toContain("Quote constraints verbatim") }) describe("Delegated Agent Sessions", () => { it("includes delegated sessions section in compaction prompt", async () => { //#given const injector = createCompactionContextInjector() //#when const prompt = injector() //#then expect(prompt).toContain("Delegated Agent Sessions") expect(prompt).toContain("RESUME, DON'T RESTART") expect(prompt).toContain("session_id") }) it("injects actual task history when backgroundManager and sessionID provided", async () => { //#given const mockManager = { taskHistory: new TaskHistory() } as any mockManager.taskHistory.record("ses_parent", { id: "t1", sessionID: "ses_child", agent: "explore", description: "Find patterns", status: "completed", category: "quick" }) const injector = createCompactionContextInjector(mockManager) //#when const prompt = injector("ses_parent") //#then expect(prompt).toContain("Active/Recent Delegated Sessions") expect(prompt).toContain("**explore**") expect(prompt).toContain("[quick]") expect(prompt).toContain("`ses_child`") }) it("does not inject task history section when no entries exist", async () => { //#given const mockManager = { taskHistory: new TaskHistory() } as any const injector = createCompactionContextInjector(mockManager) //#when const prompt = injector("ses_empty") //#then expect(prompt).not.toContain("Active/Recent Delegated Sessions") }) }) })