diff --git a/packages/opencode/src/session/compaction.ts b/packages/opencode/src/session/compaction.ts index fa439e4efffa..4f008f962fc1 100644 --- a/packages/opencode/src/session/compaction.ts +++ b/packages/opencode/src/session/compaction.ts @@ -343,8 +343,9 @@ const layer = Layer.effect( const compacting = yield* plugin.trigger( "experimental.session.compacting", { sessionID: input.sessionID }, - { context: [], prompt: undefined }, + { context: [], prompt: undefined, skip: false }, ) + if (compacting.skip) return "continue" const nextPrompt = compacting.prompt ?? buildPrompt({ previousSummary, context: compacting.context }) const msgs = structuredClone(selected.head) yield* plugin.trigger("experimental.chat.messages.transform", {}, { messages: msgs }) diff --git a/packages/plugin/src/index.ts b/packages/plugin/src/index.ts index edfa0139dfca..efec30220b8a 100644 --- a/packages/plugin/src/index.ts +++ b/packages/plugin/src/index.ts @@ -304,7 +304,7 @@ export interface Hooks { */ "experimental.session.compacting"?: ( input: { sessionID: string }, - output: { context: string[]; prompt?: string }, + output: { context: string[]; prompt?: string; skip?: boolean }, ) => Promise /** * Called after compaction succeeds and before a synthetic user