From 10a905ee3f13f4f39a5db3279e9a0406ea195153 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Tue, 23 Dec 2025 15:17:51 +0900 Subject: [PATCH] Preserve agent context in preemptive compaction's continue message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When sending the 'Continue' message after compaction, now includes the original agent parameter from the stored message. Previously, the Continue message was sent without the agent parameter, causing OpenCode to use the default 'build' agent instead of preserving the original agent context (e.g., Sisyphus). Implementation: - Get messageDir using getMessageDir(sessionID) - Retrieve storedMessage using findNearestMessageWithFields - Pass agent: storedMessage?.agent to promptAsync body 🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) --- src/hooks/preemptive-compaction/index.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/hooks/preemptive-compaction/index.ts b/src/hooks/preemptive-compaction/index.ts index 657f2c886..ee7a257b8 100644 --- a/src/hooks/preemptive-compaction/index.ts +++ b/src/hooks/preemptive-compaction/index.ts @@ -184,9 +184,15 @@ export function createPreemptiveCompactionHook( setTimeout(async () => { try { + const messageDir = getMessageDir(sessionID) + const storedMessage = messageDir ? findNearestMessageWithFields(messageDir) : null + await ctx.client.session.promptAsync({ path: { id: sessionID }, - body: { parts: [{ type: "text", text: "Continue" }] }, + body: { + agent: storedMessage?.agent, + parts: [{ type: "text", text: "Continue" }], + }, query: { directory: ctx.directory }, }) } catch {}