openclaw/src/agents/pi-embedded-runner.sanitize...

64 lines
2.1 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from "vitest";
import {
loadSanitizeSessionHistoryWithCleanMocks,
makeMockSessionManager,
makeSimpleUserMessages,
type SanitizeSessionHistoryHarness,
sanitizeSnapshotChangedOpenAIReasoning,
sanitizeWithOpenAIResponses,
} from "./pi-embedded-runner.sanitize-session-history.test-harness.js";
vi.mock("./pi-embedded-helpers.js", async () => ({
...(await vi.importActual("./pi-embedded-helpers.js")),
isGoogleModelApi: vi.fn(),
sanitizeSessionMessagesImages: vi.fn(async (msgs) => msgs),
}));
let sanitizeSessionHistory: SanitizeSessionHistoryHarness["sanitizeSessionHistory"];
let mockedHelpers: SanitizeSessionHistoryHarness["mockedHelpers"];
describe("sanitizeSessionHistory e2e smoke", () => {
const mockSessionManager = makeMockSessionManager();
const mockMessages = makeSimpleUserMessages();
beforeEach(async () => {
const harness = await loadSanitizeSessionHistoryWithCleanMocks();
sanitizeSessionHistory = harness.sanitizeSessionHistory;
mockedHelpers = harness.mockedHelpers;
});
it("passes simple user-only history through for google model APIs", async () => {
vi.mocked(mockedHelpers.isGoogleModelApi).mockReturnValue(true);
const result = await sanitizeSessionHistory({
messages: mockMessages,
modelApi: "google-generative-ai",
provider: "google-vertex",
sessionManager: mockSessionManager,
sessionId: "test-session",
});
expect(result).toEqual(mockMessages);
});
it("passes simple user-only history through for openai-responses", async () => {
vi.mocked(mockedHelpers.isGoogleModelApi).mockReturnValue(false);
const result = await sanitizeWithOpenAIResponses({
sanitizeSessionHistory,
messages: mockMessages,
sessionManager: mockSessionManager,
});
expect(result).toEqual(mockMessages);
});
it("downgrades openai reasoning blocks when the model snapshot changed", async () => {
const result = await sanitizeSnapshotChangedOpenAIReasoning({
sanitizeSessionHistory,
});
expect(result).toEqual([]);
});
});