diff --git a/src/agents/pi-embedded-runner.sanitize-session-history.test.ts b/src/agents/pi-embedded-runner.sanitize-session-history.test.ts index 6ee05837bfc..d8efba99a22 100644 --- a/src/agents/pi-embedded-runner.sanitize-session-history.test.ts +++ b/src/agents/pi-embedded-runner.sanitize-session-history.test.ts @@ -76,7 +76,7 @@ describe("sanitizeSessionHistory", () => { ); }); - it("does not sanitize tool call ids for non-Google APIs", async () => { + it("sanitizes tool call ids for Anthropic APIs", async () => { vi.mocked(helpers.isGoogleModelApi).mockReturnValue(false); await sanitizeSessionHistory({ @@ -90,7 +90,7 @@ describe("sanitizeSessionHistory", () => { expect(helpers.sanitizeSessionMessagesImages).toHaveBeenCalledWith( mockMessages, "session:history", - expect.objectContaining({ sanitizeMode: "full", sanitizeToolCallIds: false }), + expect.objectContaining({ sanitizeMode: "full", sanitizeToolCallIds: true }), ); }); diff --git a/src/agents/transcript-policy.test.ts b/src/agents/transcript-policy.test.ts new file mode 100644 index 00000000000..48977ec98fe --- /dev/null +++ b/src/agents/transcript-policy.test.ts @@ -0,0 +1,41 @@ +import { describe, expect, it } from "vitest"; +import { resolveTranscriptPolicy } from "./transcript-policy.js"; + +describe("resolveTranscriptPolicy", () => { + it("enables sanitizeToolCallIds for Anthropic provider", () => { + const policy = resolveTranscriptPolicy({ + provider: "anthropic", + modelId: "claude-opus-4-5", + modelApi: "anthropic-messages", + }); + expect(policy.sanitizeToolCallIds).toBe(true); + expect(policy.toolCallIdMode).toBe("strict"); + }); + + it("enables sanitizeToolCallIds for Google provider", () => { + const policy = resolveTranscriptPolicy({ + provider: "google", + modelId: "gemini-2.0-flash", + modelApi: "google-generative-ai", + }); + expect(policy.sanitizeToolCallIds).toBe(true); + }); + + it("enables sanitizeToolCallIds for Mistral provider", () => { + const policy = resolveTranscriptPolicy({ + provider: "mistral", + modelId: "mistral-large-latest", + }); + expect(policy.sanitizeToolCallIds).toBe(true); + expect(policy.toolCallIdMode).toBe("strict9"); + }); + + it("disables sanitizeToolCallIds for OpenAI provider", () => { + const policy = resolveTranscriptPolicy({ + provider: "openai", + modelId: "gpt-4o", + modelApi: "openai", + }); + expect(policy.sanitizeToolCallIds).toBe(false); + }); +}); diff --git a/src/agents/transcript-policy.ts b/src/agents/transcript-policy.ts index 6d74c3832b7..22e173320b5 100644 --- a/src/agents/transcript-policy.ts +++ b/src/agents/transcript-policy.ts @@ -95,7 +95,7 @@ export function resolveTranscriptPolicy(params: { const needsNonImageSanitize = isGoogle || isAnthropic || isMistral || isOpenRouterGemini; - const sanitizeToolCallIds = isGoogle || isMistral; + const sanitizeToolCallIds = isGoogle || isMistral || isAnthropic; const toolCallIdMode: ToolCallIdMode | undefined = isMistral ? "strict9" : sanitizeToolCallIds