Files
pi-auto-reinject/test/compaction-source-fallback.test.ts
T
grayhook a6fb292dc3 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>
2026-06-18 22:57:43 +07:00

48 lines
1.4 KiB
TypeScript

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);
});
});