fix: gate transcript sanitization by provider

This commit is contained in:
Peter Steinberger
2026-01-23 00:28:41 +00:00
parent fac21e6eb4
commit db0235a26a
15 changed files with 307 additions and 212 deletions

View File

@@ -40,17 +40,16 @@ describe("sanitizeSessionHistory", () => {
await sanitizeSessionHistory({
messages: mockMessages,
modelApi: "google-gemini",
modelApi: "google-generative-ai",
provider: "google-vertex",
sessionManager: mockSessionManager,
sessionId: "test-session",
});
expect(helpers.isGoogleModelApi).toHaveBeenCalledWith("google-gemini");
expect(helpers.sanitizeSessionMessagesImages).toHaveBeenCalledWith(
mockMessages,
"session:history",
expect.objectContaining({ sanitizeToolCallIds: true }),
expect.objectContaining({ sanitizeMode: "full", sanitizeToolCallIds: true }),
);
});
@@ -69,7 +68,11 @@ describe("sanitizeSessionHistory", () => {
expect(helpers.sanitizeSessionMessagesImages).toHaveBeenCalledWith(
mockMessages,
"session:history",
expect.objectContaining({ sanitizeToolCallIds: true, toolCallIdMode: "strict9" }),
expect.objectContaining({
sanitizeMode: "full",
sanitizeToolCallIds: true,
toolCallIdMode: "strict9",
}),
);
});
@@ -84,11 +87,10 @@ describe("sanitizeSessionHistory", () => {
sessionId: "test-session",
});
expect(helpers.isGoogleModelApi).toHaveBeenCalledWith("anthropic-messages");
expect(helpers.sanitizeSessionMessagesImages).toHaveBeenCalledWith(
mockMessages,
"session:history",
expect.objectContaining({ sanitizeToolCallIds: false }),
expect.objectContaining({ sanitizeMode: "full", sanitizeToolCallIds: false }),
);
});
@@ -103,11 +105,10 @@ describe("sanitizeSessionHistory", () => {
sessionId: "test-session",
});
expect(helpers.isGoogleModelApi).toHaveBeenCalledWith("openai-responses");
expect(helpers.sanitizeSessionMessagesImages).toHaveBeenCalledWith(
mockMessages,
"session:history",
expect.objectContaining({ sanitizeToolCallIds: false }),
expect.objectContaining({ sanitizeMode: "images-only", sanitizeToolCallIds: false }),
);
});
@@ -137,8 +138,27 @@ describe("sanitizeSessionHistory", () => {
sessionId: "test-session",
});
expect(helpers.isGoogleModelApi).toHaveBeenCalledWith("openai-responses");
expect(result).toHaveLength(2);
expect(result[1]?.role).toBe("assistant");
});
it("does not synthesize tool results for openai-responses", async () => {
const messages: AgentMessage[] = [
{
role: "assistant",
content: [{ type: "toolCall", id: "call_1", name: "read", arguments: {} }],
},
];
const result = await sanitizeSessionHistory({
messages,
modelApi: "openai-responses",
provider: "openai",
sessionManager: mockSessionManager,
sessionId: "test-session",
});
expect(result).toHaveLength(1);
expect(result[0]?.role).toBe("assistant");
});
});