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([]); }); });