import { describe, expect, it } from "vitest"; import { planDeferredReinject, planReinject } from "../src/reinject.js"; import { createDefaultSettings } from "../src/settings.js"; import { createInitialState, trackSkill } from "../src/state.js"; describe("B-002 pre-fix filter hypothesis", () => { it("planned empty when skill stays in kept window even if registered", () => { const state = createInitialState(); trackSkill(state, { name: "fup-blame-commits", filePath: "/home/user/.cursor/skills/fup-blame-commits/SKILL.md", baseDir: "/home/user/.cursor/skills/fup-blame-commits", source: "slash", }); const branch = [ { id: "keep-1", type: "message", message: { role: "user", content: '\nbody\n', }, }, ] as never; const planned = planReinject( state, createDefaultSettings(), { sessionManager: { getBranch: () => branch }, } as never, { compactionEntry: { firstKeptEntryId: "keep-1" } } as never, [{ name: "fup-blame-commits" }], ); expect(planned).toEqual([]); }); it("pre-fix: registered empty drops skill even when absent from kept (post-fix should reinject)", () => { const state = createInitialState(); trackSkill(state, { name: "fup-blame-commits", filePath: "/home/user/.cursor/skills/fup-blame-commits/SKILL.md", baseDir: "/home/user/.cursor/skills/fup-blame-commits", source: "skill-block", }); const branch = [ { id: "keep-1", type: "message", message: { role: "user", content: "plain text after compact" }, }, ] as never; const planned = planReinject( state, createDefaultSettings(), { sessionManager: { getBranch: () => branch }, } as never, { compactionEntry: { firstKeptEntryId: "keep-1" } } as never, [], ); expect(planned).toEqual([]); }); it("defer plan includes skill absent from kept even when registered is empty", () => { const state = createInitialState(); trackSkill(state, { name: "fup-blame-commits", filePath: "/home/user/.cursor/skills/fup-blame-commits/SKILL.md", baseDir: "/home/user/.cursor/skills/fup-blame-commits", source: "skill-block", }); const branch = [ { id: "keep-1", type: "message", message: { role: "user", content: "plain text after compact" }, }, ] as never; const planned = planDeferredReinject( state, { sessionManager: { getBranch: () => branch }, } as never, { compactionEntry: { firstKeptEntryId: "keep-1" } } as never, ); expect(planned).toEqual(["fup-blame-commits"]); }); });