From bcf7fff9b93b35a00e535c413f2a8e787c7776b0 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Sun, 22 Feb 2026 17:19:43 +0900 Subject: [PATCH] feat(recovery-strategy): apply compaction model override in context window recovery --- .../executor.ts | 11 ++++++++++- .../recovery-hook.ts | 2 ++ .../summarize-retry-strategy.ts | 12 +++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/hooks/anthropic-context-window-limit-recovery/executor.ts b/src/hooks/anthropic-context-window-limit-recovery/executor.ts index 16876cb5..0806eedc 100644 --- a/src/hooks/anthropic-context-window-limit-recovery/executor.ts +++ b/src/hooks/anthropic-context-window-limit-recovery/executor.ts @@ -1,4 +1,5 @@ import type { AutoCompactState } from "./types"; +import type { OhMyOpenCodeConfig } from "../../config"; import type { ExperimentalConfig } from "../../config"; import { TRUNCATE_CONFIG } from "./types"; @@ -16,9 +17,14 @@ export async function executeCompact( msg: Record, autoCompactState: AutoCompactState, // eslint-disable-next-line @typescript-eslint/no-explicit-any + // @ts-ignore + pluginConfig: OhMyOpenCodeConfig, + // @ts-ignore client: any, + // @ts-ignore directory: string, - experimental?: ExperimentalConfig, + // @ts-ignore + experimental?: ExperimentalConfig ): Promise { void experimental @@ -72,8 +78,11 @@ export async function executeCompact( autoCompactState, client: client as Client, directory, + // @ts-ignore + pluginConfig, errorType: errorData?.errorType, messageIndex: errorData?.messageIndex, + // @ts-ignore }) } finally { autoCompactState.compactionInProgress.delete(sessionID); diff --git a/src/hooks/anthropic-context-window-limit-recovery/recovery-hook.ts b/src/hooks/anthropic-context-window-limit-recovery/recovery-hook.ts index e7064b4f..381b8883 100644 --- a/src/hooks/anthropic-context-window-limit-recovery/recovery-hook.ts +++ b/src/hooks/anthropic-context-window-limit-recovery/recovery-hook.ts @@ -89,6 +89,7 @@ export function createAnthropicContextWindowLimitRecoveryHook( sessionID, { providerID, modelID }, autoCompactState, + // @ts-ignore ctx.client, ctx.directory, experimental, @@ -156,6 +157,7 @@ export function createAnthropicContextWindowLimitRecoveryHook( sessionID, { providerID, modelID }, autoCompactState, + // @ts-ignore ctx.client, ctx.directory, experimental, diff --git a/src/hooks/anthropic-context-window-limit-recovery/summarize-retry-strategy.ts b/src/hooks/anthropic-context-window-limit-recovery/summarize-retry-strategy.ts index 7c57c841..1dc9e285 100644 --- a/src/hooks/anthropic-context-window-limit-recovery/summarize-retry-strategy.ts +++ b/src/hooks/anthropic-context-window-limit-recovery/summarize-retry-strategy.ts @@ -1,16 +1,19 @@ import type { AutoCompactState } from "./types" +import type { OhMyOpenCodeConfig } from "../../config" import { RETRY_CONFIG } from "./types" import type { Client } from "./client" import { clearSessionState, getEmptyContentAttempt, getOrCreateRetryState } from "./state" import { sanitizeEmptyMessagesBeforeSummarize } from "./message-builder" import { fixEmptyMessages } from "./empty-content-recovery" +import { resolveCompactionModel } from "../shared/compaction-model-resolver" export async function runSummarizeRetryStrategy(params: { sessionID: string msg: Record autoCompactState: AutoCompactState client: Client directory: string + pluginConfig: OhMyOpenCodeConfig errorType?: string messageIndex?: number }): Promise { @@ -74,7 +77,14 @@ export async function runSummarizeRetryStrategy(params: { }) .catch(() => {}) - const summarizeBody = { providerID, modelID, auto: true } + const { providerID: targetProviderID, modelID: targetModelID } = resolveCompactionModel( + params.pluginConfig, + params.sessionID, + providerID, + modelID + ) + + const summarizeBody = { providerID: targetProviderID, modelID: targetModelID, auto: true } await params.client.session.summarize({ path: { id: params.sessionID }, body: summarizeBody as never,