mirror of https://github.com/openclaw/openclaw.git
55 lines
1.4 KiB
TypeScript
55 lines
1.4 KiB
TypeScript
import type { AgentMessage } from "@mariozechner/pi-agent-core";
|
|
|
|
export type CompactionTimeoutSignal = {
|
|
isTimeout: boolean;
|
|
isCompactionPendingOrRetrying: boolean;
|
|
isCompactionInFlight: boolean;
|
|
};
|
|
|
|
export function shouldFlagCompactionTimeout(signal: CompactionTimeoutSignal): boolean {
|
|
if (!signal.isTimeout) {
|
|
return false;
|
|
}
|
|
return signal.isCompactionPendingOrRetrying || signal.isCompactionInFlight;
|
|
}
|
|
|
|
export type SnapshotSelectionParams = {
|
|
timedOutDuringCompaction: boolean;
|
|
preCompactionSnapshot: AgentMessage[] | null;
|
|
preCompactionSessionId: string;
|
|
currentSnapshot: AgentMessage[];
|
|
currentSessionId: string;
|
|
};
|
|
|
|
export type SnapshotSelection = {
|
|
messagesSnapshot: AgentMessage[];
|
|
sessionIdUsed: string;
|
|
source: "pre-compaction" | "current";
|
|
};
|
|
|
|
export function selectCompactionTimeoutSnapshot(
|
|
params: SnapshotSelectionParams,
|
|
): SnapshotSelection {
|
|
if (!params.timedOutDuringCompaction) {
|
|
return {
|
|
messagesSnapshot: params.currentSnapshot,
|
|
sessionIdUsed: params.currentSessionId,
|
|
source: "current",
|
|
};
|
|
}
|
|
|
|
if (params.preCompactionSnapshot) {
|
|
return {
|
|
messagesSnapshot: params.preCompactionSnapshot,
|
|
sessionIdUsed: params.preCompactionSessionId,
|
|
source: "pre-compaction",
|
|
};
|
|
}
|
|
|
|
return {
|
|
messagesSnapshot: params.currentSnapshot,
|
|
sessionIdUsed: params.currentSessionId,
|
|
source: "current",
|
|
};
|
|
}
|