feat(recovery-strategy): apply compaction model override in context window recovery

This commit is contained in:
YeonGyu-Kim
2026-02-22 17:19:43 +09:00
parent 2d069ce4cc
commit bcf7fff9b9
3 changed files with 23 additions and 2 deletions

View File

@@ -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<string, unknown>,
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> {
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);

View File

@@ -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,

View File

@@ -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<string, unknown>
autoCompactState: AutoCompactState
client: Client
directory: string
pluginConfig: OhMyOpenCodeConfig
errorType?: string
messageIndex?: number
}): Promise<void> {
@@ -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,