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:
@@ -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).
|
* Defer path on before_agent_start: inject one combined message, then clear queue (SPEC §6.5.1).
|
||||||
* Returns undefined when pendingReinject is empty.
|
* Returns undefined when pendingReinject is empty.
|
||||||
|
|||||||
Reference in New Issue
Block a user