























@@ -1720,6 +1720,75 @@ describe("sanitizeSessionHistory", () => {
17201720expect((result[2] as Extract<AgentMessage, { role: "toolResult" }>).toolCallId).toBe("call_1");
17211721});
172217221723+it.each([
1724+{
1725+provider: "anthropic",
1726+modelApi: "anthropic-messages",
1727+label: "anthropic",
1728+},
1729+{
1730+provider: "amazon-bedrock",
1731+modelApi: "bedrock-converse-stream",
1732+label: "bedrock",
1733+},
1734+])(
1735+"preserves signed thinking tool ids for $label when preserveSignatures is false",
1736+async ({ provider, modelApi }) => {
1737+setNonGoogleModelApi();
1738+1739+const messages = castAgentMessages([
1740+makeUserMessage("retry"),
1741+makeAssistantMessage([
1742+{
1743+type: "thinking",
1744+thinking: "internal",
1745+thinkingSignature: "sig_1",
1746+},
1747+{ type: "toolCall", id: "call_1", name: "read", arguments: {} },
1748+] as unknown as AssistantMessage["content"]),
1749+castAgentMessage({
1750+role: "toolResult",
1751+toolCallId: "call_1",
1752+toolName: "read",
1753+content: [{ type: "text", text: "ok" }],
1754+isError: false,
1755+}),
1756+]);
1757+1758+const result = await sanitizeAnthropicHistory({
1759+ provider,
1760+ modelApi,
1761+ messages,
1762+policy: {
1763+sanitizeMode: "full",
1764+sanitizeToolCallIds: true,
1765+toolCallIdMode: "strict",
1766+preserveNativeAnthropicToolUseIds: false,
1767+repairToolUseResultPairing: true,
1768+preserveSignatures: false,
1769+sanitizeThinkingSignatures: false,
1770+dropThinkingBlocks: false,
1771+applyGoogleTurnOrdering: false,
1772+validateGeminiTurns: false,
1773+validateAnthropicTurns: true,
1774+allowSyntheticToolResults: false,
1775+},
1776+});
1777+1778+expect((result[1] as Extract<AgentMessage, { role: "assistant" }>).content).toEqual([
1779+{
1780+type: "thinking",
1781+thinking: "internal",
1782+thinkingSignature: "sig_1",
1783+},
1784+{ type: "toolCall", id: "call_1", name: "read", arguments: {} },
1785+]);
1786+expect((result[2] as Extract<AgentMessage, { role: "toolResult" }>).toolCallId).toBe(
1787+"call_1",
1788+);
1789+},
1790+);
1791+17231792it("keeps earlier mutable ids from colliding with later preserved signed ids", async () => {
17241793setNonGoogleModelApi();
17251794此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。