import type { createOpencodeClient } from "@opencode-ai/sdk" import type { MessageData } from "./types" import { extractMessageIndex } from "./detect-error-type" import { findMessageByIndexNeedingThinking, findMessagesWithOrphanThinking, prependThinkingPart } from "./storage" type Client = ReturnType export async function recoverThinkingBlockOrder( _client: Client, sessionID: string, _failedAssistantMsg: MessageData, _directory: string, error: unknown ): Promise { const targetIndex = extractMessageIndex(error) if (targetIndex !== null) { const targetMessageID = findMessageByIndexNeedingThinking(sessionID, targetIndex) if (targetMessageID) { return prependThinkingPart(sessionID, targetMessageID) } } const orphanMessages = findMessagesWithOrphanThinking(sessionID) if (orphanMessages.length === 0) { return false } let anySuccess = false for (const messageID of orphanMessages) { if (prependThinkingPart(sessionID, messageID)) { anySuccess = true } } return anySuccess }