refactor(agents): remove unused thinking recovery sanitizer

This commit is contained in:
Vincent Koc
2026-06-18 23:45:47 +08:00
parent ed389a87e9
commit ba779d8367
2 changed files with 1 additions and 78 deletions

View File

@@ -10,7 +10,6 @@ import {
dropReasoningFromHistory,
dropThinkingBlocks,
isAssistantMessageWithContent,
sanitizeThinkingForRecovery,
stripInvalidThinkingSignatures,
stripStaleThinkingSignaturesForCompactionReplay,
wrapAnthropicStreamWithRecovery,
@@ -406,50 +405,7 @@ describe("stripInvalidThinkingSignatures", () => {
});
});
describe("sanitizeThinkingForRecovery", () => {
it("drops the latest assistant message when the thinking block is unsigned", () => {
const messages = castAgentMessages([
{ role: "user", content: "hello" },
{
role: "assistant",
content: [{ type: "thinking", thinking: "partial" }],
},
]);
const result = sanitizeThinkingForRecovery(messages);
expect(result.messages).toEqual([messages[0]]);
expect(result.prefill).toBe(false);
});
it("preserves later turns when dropping an incomplete assistant message", () => {
const messages = castAgentMessages([
{ role: "user", content: "hello" },
{
role: "assistant",
content: [{ type: "thinking", thinking: "partial" }],
},
{ role: "user", content: "follow up" },
]);
const result = sanitizeThinkingForRecovery(messages);
expect(result.messages).toEqual([messages[0], messages[2]]);
expect(result.prefill).toBe(false);
});
it("marks signed thinking without text as a prefill recovery case", () => {
const messages = castAgentMessages([
{ role: "user", content: "hello" },
{
role: "assistant",
content: [{ type: "thinking", thinking: "complete", thinkingSignature: "sig" }],
},
]);
const result = sanitizeThinkingForRecovery(messages);
expect(result.messages).toBe(messages);
expect(result.prefill).toBe(true);
});
describe("assessLastAssistantMessage", () => {
it("marks signed thinking with an empty text block as incomplete text", () => {
const message = castAgentMessage({
role: "assistant",

View File

@@ -534,39 +534,6 @@ export function assessLastAssistantMessage(message: AgentMessage): RecoveryAsses
return "valid";
}
export function sanitizeThinkingForRecovery(messages: AgentMessage[]): {
messages: AgentMessage[];
prefill: boolean;
} {
if (messages.length === 0) {
return { messages, prefill: false };
}
let lastAssistantIndex = -1;
for (let index = messages.length - 1; index >= 0; index -= 1) {
if ((messages[index] as { role?: unknown }).role === "assistant") {
lastAssistantIndex = index;
break;
}
}
if (lastAssistantIndex === -1) {
return { messages, prefill: false };
}
const assessment = assessLastAssistantMessage(messages[lastAssistantIndex]);
if (assessment === "valid") {
return { messages, prefill: false };
}
if (assessment === "incomplete-text") {
return { messages, prefill: true };
}
return {
messages: [...messages.slice(0, lastAssistantIndex), ...messages.slice(lastAssistantIndex + 1)],
prefill: false,
};
}
function shouldRecoverAnthropicThinkingError(
error: unknown,
sessionMeta: RecoverySessionMeta,