import { describe, expect, it } from "vitest"; import { consumeCompactionOnSessionCompact, createCompactionRuntime, ensureCompactionSourceMarked, markManualCompactionFromInput, } from "../src/compaction"; import { createDefaultSettings } from "../src/settings"; import { createInitialState } from "../src/state"; describe("compaction source fallback on session_compact", () => { it("infers auto when session_compact runs without prior session_before_compact", () => { const runtime = createCompactionRuntime(); const state = createInitialState(); expect(runtime.pendingCompactionSource).toBeNull(); ensureCompactionSourceMarked(runtime); const shouldReinject = consumeCompactionOnSessionCompact( runtime, state, true, createDefaultSettings(), ); expect(shouldReinject).toBe(true); expect(state.lastCompactionSource).toBe("auto"); expect(runtime.pendingCompactionSource).toBeNull(); }); it("keeps manual source from input and skips reinject by default", () => { const runtime = createCompactionRuntime(); const state = createInitialState(); markManualCompactionFromInput("/compact", runtime); ensureCompactionSourceMarked(runtime); const shouldReinject = consumeCompactionOnSessionCompact( runtime, state, true, createDefaultSettings(), ); expect(shouldReinject).toBe(false); expect(state.lastCompactionSource).toBe("manual"); expect(runtime.clearPendingReinjectOnNextUserInput).toBe(true); }); });