From 83c1b8d5a496617f6704cb45d40183e9e4ecb562 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 657f2c8..ee7a257 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 {}