From e0daa50cce3747eb050f29366a7d2daa0d156d5e Mon Sep 17 00:00:00 2001 From: GRayHook Date: Wed, 17 Jun 2026 11:55:13 +0700 Subject: [PATCH] =?UTF-8?q?Phase=207:=20add=20enqueueDeferredReinjectFromC?= =?UTF-8?q?ompact=20=E2=80=94=20queue=20plan=20on=20session=5Fcompact=20wi?= =?UTF-8?q?thout=20sendUserMessage.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Defer delivery stores planned skill names in pendingReinject for injection on the next before_agent_start, avoiding races with pi-auto-compact follow-ups. Co-authored-by: Cursor --- src/reinject.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/reinject.ts b/src/reinject.ts index b99f54a..febd92d 100644 --- a/src/reinject.ts +++ b/src/reinject.ts @@ -37,3 +37,20 @@ export function planReinject( registeredSkillNames(registeredSkills), ); } + +/** Defer path on session_compact: queue planned skills without sendUserMessage (SPEC §6.5.1, §16.2). */ +export function enqueueDeferredReinjectFromCompact( + state: ExtensionState, + settings: SkillReinjectSettings, + ctx: ExtensionContext, + compactionEvent: SessionCompactEvent, + registeredSkills: readonly Pick[], +): void { + state.pendingReinject = planReinject( + state, + settings, + ctx, + compactionEvent, + registeredSkills, + ); +}