From ba779d836736426c93d7608ebcee0b05fed6b8fd Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 18 Jun 2026 23:45:47 +0800 Subject: [PATCH] refactor(agents): remove unused thinking recovery sanitizer --- .../embedded-agent-runner/thinking.test.ts | 46 +------------------ src/agents/embedded-agent-runner/thinking.ts | 33 ------------- 2 files changed, 1 insertion(+), 78 deletions(-) diff --git a/src/agents/embedded-agent-runner/thinking.test.ts b/src/agents/embedded-agent-runner/thinking.test.ts index 794a182ec0ae..688772014c01 100644 --- a/src/agents/embedded-agent-runner/thinking.test.ts +++ b/src/agents/embedded-agent-runner/thinking.test.ts @@ -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", diff --git a/src/agents/embedded-agent-runner/thinking.ts b/src/agents/embedded-agent-runner/thinking.ts index 2a97bd09ce9e..210c508d6c72 100644 --- a/src/agents/embedded-agent-runner/thinking.ts +++ b/src/agents/embedded-agent-runner/thinking.ts @@ -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,