Q79: reasoning, encrypted reasoning and signatures survive tool turns
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5d5bc802e9
commit
d96967cfb9
13 files changed
+211
-46
No files matched your search
@@ -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 };
|
||||
}
|
||||
Reference in new issue
Block a user