mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 20:54:30 +00:00
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:
@@ -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);
|
vi.mocked(helpers.isGoogleModelApi).mockReturnValue(false);
|
||||||
|
|
||||||
await sanitizeSessionHistory({
|
await sanitizeSessionHistory({
|
||||||
@@ -90,7 +90,7 @@ describe("sanitizeSessionHistory", () => {
|
|||||||
expect(helpers.sanitizeSessionMessagesImages).toHaveBeenCalledWith(
|
expect(helpers.sanitizeSessionMessagesImages).toHaveBeenCalledWith(
|
||||||
mockMessages,
|
mockMessages,
|
||||||
"session:history",
|
"session:history",
|
||||||
expect.objectContaining({ sanitizeMode: "full", sanitizeToolCallIds: false }),
|
expect.objectContaining({ sanitizeMode: "full", sanitizeToolCallIds: true }),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
41
src/agents/transcript-policy.test.ts
Normal file
41
src/agents/transcript-policy.test.ts
Normal 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);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -95,7 +95,7 @@ export function resolveTranscriptPolicy(params: {
|
|||||||
|
|
||||||
const needsNonImageSanitize = isGoogle || isAnthropic || isMistral || isOpenRouterGemini;
|
const needsNonImageSanitize = isGoogle || isAnthropic || isMistral || isOpenRouterGemini;
|
||||||
|
|
||||||
const sanitizeToolCallIds = isGoogle || isMistral;
|
const sanitizeToolCallIds = isGoogle || isMistral || isAnthropic;
|
||||||
const toolCallIdMode: ToolCallIdMode | undefined = isMistral
|
const toolCallIdMode: ToolCallIdMode | undefined = isMistral
|
||||||
? "strict9"
|
? "strict9"
|
||||||
: sanitizeToolCallIds
|
: sanitizeToolCallIds
|
||||||
|
|||||||
Reference in New Issue
Block a user