Phase 15: add compaction source fallback regression tests

Cover session_compact without prior before_compact inferring auto, and
manual /compact preserving manual source with reinject off by default.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-18 22:57:43 +07:00
parent eba5b5dc99
commit a6fb292dc3
+47
View File
@@ -0,0 +1,47 @@
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);
});
});