mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-11 20:13:43 +00:00
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 64a28900f1
Co-authored-by: mverrilli <816450+mverrilli@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
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",
|
|
};
|
|
}
|