diff --git a/src/settings.ts b/src/settings.ts index e6068fa..15fe850 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -28,6 +28,8 @@ export interface SkillReinjectSettings { maxSkills?: number; /** Verbose reinject filter logging via ui.notify (Phase 14 / B-002). */ debug: boolean; + /** When true, only re-inject skills present in resourceLoader (Phase 14 / B-002). */ + requireRegistered: boolean; } /** Defaults from SPEC §7.3 — extension off until explicitly enabled. */ @@ -39,6 +41,7 @@ export const DEFAULT_SKILL_REINJECT_SETTINGS: Readonly = autoCompactIntegration: "auto", suffix: "[skill-reinject] Re-applied after compaction.", debug: false, + requireRegistered: false, }; export function createDefaultSettings(): SkillReinjectSettings { @@ -83,6 +86,9 @@ export function parseSkillReinjectPartial(raw: unknown): PartialSkillReinjectSet if (typeof obj.debug === "boolean") { result.debug = obj.debug; } + if (typeof obj.requireRegistered === "boolean") { + result.requireRegistered = obj.requireRegistered; + } return result; } diff --git a/test/settings.test.ts b/test/settings.test.ts index 5e079c9..2514318 100644 --- a/test/settings.test.ts +++ b/test/settings.test.ts @@ -58,6 +58,12 @@ describe("parseSkillReinjectPartial", () => { it("parses debug flag", () => { expect(parseSkillReinjectPartial({ debug: true })).toEqual({ debug: true }); }); + + it("parses requireRegistered flag", () => { + expect(parseSkillReinjectPartial({ requireRegistered: true })).toEqual({ + requireRegistered: true, + }); + }); }); describe("mergeSkillReinjectSettings", () => {