Q79: reasoning, encrypted reasoning and signatures survive tool turns

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-10-08 13:24:59 -04:00
1 parent 5d5bc802e9
commit d96967cfb9
13 files changed
+211 -46

No files matched your search

+8 -1
View File
@@ -31,5 +31,12 @@ export function compactToolHistory(messages: AgentTurnMessage[], keepRecent = KE
});
return { ...message, results };
});
return { messages: compacted, elided };
const firstRewritten = compacted.findIndex((message, index) => message.role === "tool" && message.results.some((result, at) => result !== (messages[index] as typeof message).results[at]));
if (firstRewritten < 0) return { messages: compacted, elided };
// Bedrock's reasoning signature hashes every earlier message, so its turns after a rewrite go back unsigned; Gemini requires its signatures kept.
const unsigned = compacted.map((message, index) => {
if (index < firstRewritten || message.role !== "assistant" || message.replay?.format !== "bedrock") return message;
return { role: message.role, text: message.text, toolCalls: message.toolCalls };
});
return { messages: unsigned, elided };
}