From c0e451e418644c64ed0a76cd80bd2fbf877eded0 Mon Sep 17 00:00:00 2001 From: David Rudduck Date: Tue, 10 Mar 2026 02:42:36 +1000 Subject: [PATCH] fix: only fire after_compaction hook on successful compaction Match legacy path semantics: compactEmbeddedPiSessionDirect only reaches the after_compaction hook after session.compact() succeeds. Gate the engine-owned path on result.ok && result.compacted so subscribers don't receive after_compaction for failed compactions. --- src/agents/pi-embedded-runner/compact.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/agents/pi-embedded-runner/compact.ts b/src/agents/pi-embedded-runner/compact.ts index 882cf0140fa..feba0f81493 100644 --- a/src/agents/pi-embedded-runner/compact.ts +++ b/src/agents/pi-embedded-runner/compact.ts @@ -981,7 +981,7 @@ export async function compactEmbeddedPiSession( force: params.trigger === "manual", runtimeContext: params as Record, }); - if (hookRunner?.hasHooks("after_compaction")) { + if (result.ok && result.compacted && hookRunner?.hasHooks("after_compaction")) { try { await hookRunner.runAfterCompaction( {