@@ -8,9 +8,7 @@ import type { ThinkLevel } from "../../auto-reply/thinking.js";
88import { resolveAgentModelFallbackValues } from "../../config/model-input.js" ;
99import type { OpenClawConfig } from "../../config/types.openclaw.js" ;
1010import {
11- captureCompactionCheckpointSnapshotAsync ,
12- cleanupCompactionCheckpointSnapshot ,
13- persistSessionCompactionCheckpoint ,
11+ createFileBackedCompactionCheckpointStore ,
1412 readSessionLeafStateFromTranscriptAsync ,
1513 resolveCompactionCheckpointTranscriptPosition ,
1614 resolveSessionCompactionCheckpointReason ,
@@ -107,6 +105,10 @@ import { wrapStreamFnTextTransforms } from "../plugin-text-transforms.js";
107105import { resolveAgentPromptSurfaceForSessionKey } from "../prompt-surface.js" ;
108106import { applyPreparedRuntimeAuthToModel } from "../provider-request-config.js" ;
109107import { registerProviderStreamForModel } from "../provider-stream.js" ;
108+ import {
109+ applyAgentRunSessionTargetIdentity ,
110+ resolveAgentRunSessionTarget ,
111+ } from "../run-session-target.js" ;
110112import { collectRuntimeChannelCapabilities } from "../runtime-capabilities.js" ;
111113import { buildAgentRuntimePlan } from "../runtime-plan/build.js" ;
112114import type { AgentRuntimePlan } from "../runtime-plan/types.js" ;
@@ -135,6 +137,7 @@ import {
135137} from "./compact-reasons.js" ;
136138import type {
137139 CompactEmbeddedAgentSessionParams ,
140+ CompactEmbeddedAgentSessionRuntimeParams ,
138141 CompactionMessageMetrics ,
139142} from "./compact.types.js" ;
140143import { dedupeDuplicateUserMessagesForCompaction } from "./compaction-duplicate-user-messages.js" ;
@@ -192,6 +195,11 @@ import { mapThinkingLevel, normalizeContextTokenBudget } from "./utils.js";
192195import { flushPendingToolResultsAfterIdle } from "./wait-for-idle-before-flush.js" ;
193196export type { CompactEmbeddedAgentSessionParams } from "./compact.types.js" ;
194197
198+ const compactionCheckpointStore = createFileBackedCompactionCheckpointStore ( ) ;
199+ type CompactEmbeddedAgentSessionParamsWithSessionFile = CompactEmbeddedAgentSessionRuntimeParams & {
200+ sessionFile : string ;
201+ } ;
202+
195203function hasRealConversationContent (
196204 msg : AgentMessage ,
197205 messages : AgentMessage [ ] ,
@@ -464,8 +472,17 @@ function fallbackFailureToCompactionResult(err: unknown): EmbeddedAgentCompactRe
464472 * Use this when already inside a session/global lane to avoid deadlocks.
465473 */
466474export async function compactEmbeddedAgentSessionDirect (
467- params : CompactEmbeddedAgentSessionParams ,
475+ paramsInput : CompactEmbeddedAgentSessionRuntimeParams ,
468476) : Promise < EmbeddedAgentCompactResult > {
477+ const paramsBase = applyAgentRunSessionTargetIdentity ( paramsInput ) ;
478+ const runSessionTarget = await resolveAgentRunSessionTarget ( paramsBase ) ;
479+ const params : CompactEmbeddedAgentSessionParamsWithSessionFile = {
480+ ...paramsBase ,
481+ agentId : paramsBase . agentId ?? runSessionTarget . agentId ,
482+ sessionId : runSessionTarget . sessionId ,
483+ sessionKey : paramsBase . sessionKey ?? runSessionTarget . sessionKey ,
484+ sessionFile : runSessionTarget . sessionFile ,
485+ } ;
469486 if ( hasExplicitCompactionModel ( params ) || ! hasCompactionModelFallbackCandidates ( params ) ) {
470487 return await compactEmbeddedAgentSessionDirectOnce ( params ) ;
471488 }
@@ -530,7 +547,7 @@ export async function compactEmbeddedAgentSessionDirect(
530547}
531548
532549async function compactEmbeddedAgentSessionDirectOnce (
533- params : CompactEmbeddedAgentSessionParams ,
550+ params : CompactEmbeddedAgentSessionParamsWithSessionFile ,
534551) : Promise < EmbeddedAgentCompactResult > {
535552 const startedAt = Date . now ( ) ;
536553 const diagId = params . diagId ?. trim ( ) || createCompactionDiagId ( ) ;
@@ -1190,7 +1207,7 @@ async function compactEmbeddedAgentSessionDirectOnce(
11901207 : undefined ,
11911208 allowedToolNames,
11921209 } ) ;
1193- checkpointSnapshot = await captureCompactionCheckpointSnapshotAsync ( {
1210+ checkpointSnapshot = await compactionCheckpointStore . captureSnapshot ( {
11941211 sessionManager,
11951212 sessionFile : params . sessionFile ,
11961213 } ) ;
@@ -1546,7 +1563,7 @@ async function compactEmbeddedAgentSessionDirectOnce(
15461563 preferredLeafId : activePostLeafId ,
15471564 transcriptState,
15481565 } ) ;
1549- const storedCheckpoint = await persistSessionCompactionCheckpoint ( {
1566+ const storedCheckpoint = await compactionCheckpointStore . persistCheckpoint ( {
15501567 cfg : params . config ,
15511568 sessionKey : params . sessionKey ,
15521569 sessionId : activeSessionId ,
@@ -1670,7 +1687,7 @@ async function compactEmbeddedAgentSessionDirectOnce(
16701687 return fail ( reason , err ) ;
16711688 } finally {
16721689 if ( ! checkpointSnapshotRetained ) {
1673- await cleanupCompactionCheckpointSnapshot ( checkpointSnapshot ) ;
1690+ await compactionCheckpointStore . cleanupSnapshot ( checkpointSnapshot ) ;
16741691 }
16751692 restoreSkillEnv ?.( ) ;
16761693 }
0 commit comments