Phase 7: add reinjectNow — force immediate re-inject of all tracked skills for debug.

Uses idle vs followUp delivery based on ctx.isIdle(); skips unregistered skills via existing buildReinjectBlocks warnings.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-17 11:59:24 +07:00
parent 9a197aee10
commit d637722ea5
+23
View File
@@ -150,6 +150,29 @@ export function sendImmediateReinjectAllFollowUp(
}
}
/** Force re-inject all tracked registered skills for /skill-reinject now (SPEC §7.1). */
export function reinjectNow(
pi: ExtensionAPI,
state: ExtensionState,
settings: SkillReinjectSettings,
ctx: ExtensionContext,
registeredSkills: readonly Pick<Skill, "name" | "filePath" | "baseDir">[],
): void {
const registered = registeredSkillNames(registeredSkills);
const skillNames = state.skills.map((skill) => skill.name).filter((name) => registered.has(name));
if (skillNames.length === 0) {
if (ctx.hasUI) {
ctx.ui.notify("skill-reinject: no tracked skills to re-inject", "info");
}
return;
}
if (ctx.isIdle()) {
sendImmediateReinjectIdle(pi, skillNames, state, settings, registeredSkills, ctx);
return;
}
sendImmediateReinjectAllFollowUp(pi, skillNames, state, settings, registeredSkills, ctx);
}
/**
* Defer path on before_agent_start: inject one combined message, then clear queue (SPEC §6.5.1).
* Returns undefined when pendingReinject is empty.