fix(agents): enable tool call ID sanitization for Anthropic provider (#13830)

Co-authored-by: 0xRaini <0xRaini@users.noreply.github.com>
This commit is contained in:
0xRain
2026-02-12 07:42:24 +08:00
committed by GitHub
parent 43818e1583
commit 1d2c5783fd
3 changed files with 44 additions and 3 deletions

View File

@@ -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 }),
);
});

View File

@@ -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);
});
});

View File

@@ -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