Phase 14: split kept-window filter from registry gate — defer planning stage
filterSkillsNeedingReinjectByKept tracks absent skills without registeredNames; immediate path keeps the combined filter. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -2,6 +2,7 @@ import type { SessionEntry } from "@earendil-works/pi-coding-agent";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
filterSkillsNeedingReinject,
|
||||
filterSkillsNeedingReinjectByKept,
|
||||
getKeptEntries,
|
||||
skillsPresentInKeptWindow,
|
||||
} from "../src/kept";
|
||||
@@ -95,6 +96,23 @@ describe("skillsPresentInKeptWindow", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("filterSkillsNeedingReinjectByKept", () => {
|
||||
it("returns tracked skills absent from kept window regardless of registration", () => {
|
||||
const keptPresent = new Set(["alpha"]);
|
||||
expect(filterSkillsNeedingReinjectByKept(trackedSkills, keptPresent)).toEqual(["beta"]);
|
||||
});
|
||||
|
||||
it("preserves tracked order including unregistered names", () => {
|
||||
const keptPresent = new Set<string>();
|
||||
expect(filterSkillsNeedingReinjectByKept(trackedSkills, keptPresent)).toEqual(["alpha", "beta"]);
|
||||
});
|
||||
|
||||
it("returns empty when all tracked skills are in kept window", () => {
|
||||
const keptPresent = new Set(["alpha", "beta"]);
|
||||
expect(filterSkillsNeedingReinjectByKept(trackedSkills, keptPresent)).toEqual([]);
|
||||
});
|
||||
});
|
||||
|
||||
describe("filterSkillsNeedingReinject", () => {
|
||||
it("returns registered tracked skills absent from kept window", () => {
|
||||
const keptPresent = new Set(["alpha"]);
|
||||
|
||||
Reference in New Issue
Block a user