Files
openclaw/src/agents/pi-embedded-runner/run.overflow-compaction.fixture.ts
2026-02-19 08:55:33 +00:00

67 lines
1.7 KiB
TypeScript

import type { EmbeddedRunAttemptResult } from "./run/types.js";
export function makeAttemptResult(
overrides: Partial<EmbeddedRunAttemptResult> = {},
): EmbeddedRunAttemptResult {
return {
aborted: false,
timedOut: false,
timedOutDuringCompaction: false,
promptError: null,
sessionIdUsed: "test-session",
assistantTexts: ["Hello!"],
toolMetas: [],
lastAssistant: undefined,
messagesSnapshot: [],
didSendViaMessagingTool: false,
messagingToolSentTexts: [],
messagingToolSentMediaUrls: [],
messagingToolSentTargets: [],
cloudCodeAssistFormatError: false,
...overrides,
};
}
type MockRunEmbeddedAttempt = {
mockResolvedValueOnce: (value: EmbeddedRunAttemptResult) => unknown;
};
type MockCompactDirect = {
mockResolvedValueOnce: (value: {
ok: true;
compacted: true;
result: {
summary: string;
firstKeptEntryId: string;
tokensBefore: number;
};
}) => unknown;
};
export function mockOverflowRetrySuccess(params: {
runEmbeddedAttempt: MockRunEmbeddedAttempt;
compactDirect: MockCompactDirect;
overflowMessage?: string;
}) {
const overflowError = new Error(
params.overflowMessage ?? "request_too_large: Request size exceeds model context window",
);
params.runEmbeddedAttempt.mockResolvedValueOnce(
makeAttemptResult({ promptError: overflowError }),
);
params.runEmbeddedAttempt.mockResolvedValueOnce(makeAttemptResult({ promptError: null }));
params.compactDirect.mockResolvedValueOnce({
ok: true,
compacted: true,
result: {
summary: "Compacted session",
firstKeptEntryId: "entry-5",
tokensBefore: 150000,
},
});
return overflowError;
}