From cb932cfe21ba5b45fd398678598ddce2944f4fd8 Mon Sep 17 00:00:00 2001 From: Jarvis Date: Wed, 28 Jan 2026 04:12:48 +0000 Subject: [PATCH] fix(compaction): resolve model via runtime when ctx.model is undefined MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When using the embedded pi-agent runner (createAgentSession path), extensionRunner.initialize() is never called, leaving ctx.model undefined. This fix passes the model through the existing WeakMap-based runtime registry and uses it as a fallback when ctx.model is unavailable. Fixes #2851 🤖 Generated with Claude Code --- src/agents/pi-embedded-runner/extensions.ts | 1 + src/agents/pi-extensions/compaction-safeguard-runtime.ts | 3 +++ src/agents/pi-extensions/compaction-safeguard.ts | 7 +++++-- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/agents/pi-embedded-runner/extensions.ts b/src/agents/pi-embedded-runner/extensions.ts index 270458f2e..fde02652e 100644 --- a/src/agents/pi-embedded-runner/extensions.ts +++ b/src/agents/pi-embedded-runner/extensions.ts @@ -79,6 +79,7 @@ export function buildEmbeddedExtensionPaths(params: { const compactionCfg = params.cfg?.agents?.defaults?.compaction; setCompactionSafeguardRuntime(params.sessionManager, { maxHistoryShare: compactionCfg?.maxHistoryShare, + model: params.model, }); paths.push(resolvePiExtensionPath("compaction-safeguard")); } diff --git a/src/agents/pi-extensions/compaction-safeguard-runtime.ts b/src/agents/pi-extensions/compaction-safeguard-runtime.ts index f42cf7abe..3bcbd4edf 100644 --- a/src/agents/pi-extensions/compaction-safeguard-runtime.ts +++ b/src/agents/pi-extensions/compaction-safeguard-runtime.ts @@ -1,5 +1,8 @@ +import type { Api, Model } from "@mariozechner/pi-ai"; + export type CompactionSafeguardRuntimeValue = { maxHistoryShare?: number; + model?: Model; }; // Session-scoped runtime registry keyed by object identity. diff --git a/src/agents/pi-extensions/compaction-safeguard.ts b/src/agents/pi-extensions/compaction-safeguard.ts index b2fe39884..d2922df63 100644 --- a/src/agents/pi-extensions/compaction-safeguard.ts +++ b/src/agents/pi-extensions/compaction-safeguard.ts @@ -146,8 +146,12 @@ export default function compactionSafeguardExtension(api: ExtensionAPI): void { const toolFailureSection = formatToolFailuresSection(toolFailures); const fallbackSummary = `${FALLBACK_SUMMARY}${toolFailureSection}${fileOpsSummary}`; - const model = ctx.model; + const runtime = getCompactionSafeguardRuntime(ctx.sessionManager); + const model = ctx.model ?? runtime?.model; if (!model) { + console.warn( + "Compaction safeguard: no model available (ctx.model and runtime.model both undefined)", + ); return { compaction: { summary: fallbackSummary, @@ -175,7 +179,6 @@ export default function compactionSafeguardExtension(api: ExtensionAPI): void { const turnPrefixMessages = preparation.turnPrefixMessages ?? []; let messagesToSummarize = preparation.messagesToSummarize; - const runtime = getCompactionSafeguardRuntime(ctx.sessionManager); const maxHistoryShare = runtime?.maxHistoryShare ?? 0.5; const tokensBefore =