diff --git a/docs/reference/session-management-compaction.md b/docs/reference/session-management-compaction.md index 7529c103aa00..d279de436993 100644 --- a/docs/reference/session-management-compaction.md +++ b/docs/reference/session-management-compaction.md @@ -362,8 +362,8 @@ OpenClaw also enforces a safety floor for embedded runs: Why: leave enough headroom for multi-turn "housekeeping" (like memory writes) before compaction becomes unavoidable. -Implementation: `ensureAgentCompactionReserveTokens()` in `src/agents/agent-settings.ts` -(called from `src/agents/embedded-agent-runner.ts`). +Implementation: `applyAgentCompactionSettingsFromConfig()` in `src/agents/agent-settings.ts` +(called from embedded-runner turn and compaction setup paths). --- diff --git a/src/agents/agent-settings.ts b/src/agents/agent-settings.ts index 871d2b90dcc0..9c822fca2181 100644 --- a/src/agents/agent-settings.ts +++ b/src/agents/agent-settings.ts @@ -20,30 +20,6 @@ type AgentSettingsManagerLike = { setCompactionEnabled?: (enabled: boolean) => void; }; -/** - * Ensures the compaction reserve tokens are at least the specified minimum. - * Note: This function is not context-aware and uses an uncapped floor. - * If called for small-context models without threading `contextTokenBudget`, - * it may re-introduce context overflow issues. - */ -export function ensureAgentCompactionReserveTokens(params: { - settingsManager: AgentSettingsManagerLike; - minReserveTokens?: number; -}): { didOverride: boolean; reserveTokens: number } { - const minReserveTokens = params.minReserveTokens ?? DEFAULT_AGENT_COMPACTION_RESERVE_TOKENS_FLOOR; - const current = params.settingsManager.getCompactionReserveTokens(); - - if (current >= minReserveTokens) { - return { didOverride: false, reserveTokens: current }; - } - - params.settingsManager.applyOverrides({ - compaction: { reserveTokens: minReserveTokens }, - }); - - return { didOverride: true, reserveTokens: minReserveTokens }; -} - /** Resolves the configured reserve-token floor for agent compaction. */ export function resolveCompactionReserveTokensFloor(cfg?: OpenClawConfig): number { const raw = cfg?.agents?.defaults?.compaction?.reserveTokensFloor; diff --git a/src/agents/embedded-agent-runner/compact.hooks.harness.ts b/src/agents/embedded-agent-runner/compact.hooks.harness.ts index 36dd36bcc144..f9363dba5933 100644 --- a/src/agents/embedded-agent-runner/compact.hooks.harness.ts +++ b/src/agents/embedded-agent-runner/compact.hooks.harness.ts @@ -528,7 +528,6 @@ export async function loadCompactHooksHarness(): Promise<{ vi.doMock("../agent-settings.js", () => ({ applyAgentAutoCompactionGuard: vi.fn(() => ({ supported: true, disabled: false })), applyAgentCompactionSettingsFromConfig: applyAgentCompactionSettingsFromConfigMock, - ensureAgentCompactionReserveTokens: vi.fn(), isSilentOverflowProneModel: vi.fn(() => false), resolveCompactionReserveTokensFloor: vi.fn(() => 0), })); diff --git a/src/agents/embedded-agent-runner/extensions.ts b/src/agents/embedded-agent-runner/extensions.ts index f7e5593123ec..d5e900205362 100644 --- a/src/agents/embedded-agent-runner/extensions.ts +++ b/src/agents/embedded-agent-runner/extensions.ts @@ -10,10 +10,7 @@ import contextPruningExtension from "../agent-hooks/context-pruning.js"; import { setContextPruningRuntime } from "../agent-hooks/context-pruning/runtime.js"; import { computeEffectiveSettings } from "../agent-hooks/context-pruning/settings.js"; import { makeToolPrunablePredicate } from "../agent-hooks/context-pruning/tools.js"; -import { - ensureAgentCompactionReserveTokens, - resolveEffectiveCompactionMode, -} from "../agent-settings.js"; +import { resolveEffectiveCompactionMode } from "../agent-settings.js"; import { finalizeToolTerminalPresentation, peekAdjustedParamsForToolCall, @@ -209,5 +206,3 @@ export function buildEmbeddedExtensionFactories(params: { factories.push(buildAgentToolResultMiddlewareFactory(params.sessionManager, params.runId)); return factories; } - -export { ensureAgentCompactionReserveTokens };