@@ -129,6 +129,7 @@ import { getMessagesSinceLastSummary, summarizeConversation, getEffectiveApiHist
129129import { MessageQueueService } from "../message-queue/MessageQueueService"
130130import { AutoApprovalHandler , checkAutoApproval } from "../auto-approval"
131131import { MessageManager } from "../message-manager"
132+ import { validateAndFixToolResultIds } from "./validateToolResultIds"
132133
133134const MAX_EXPONENTIAL_BACKOFF_SECONDS = 600 // 10 minutes
134135const DEFAULT_USAGE_COLLECTION_TIMEOUT_MS = 5000 // 5 seconds
@@ -811,7 +812,9 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
811812
812813 this . apiConversationHistory . push ( messageWithTs )
813814 } else {
814- const messageWithTs = { ...message , ts : Date . now ( ) }
815+ // For user messages, validate and fix tool_result IDs against the previous assistant message
816+ const validatedMessage = validateAndFixToolResultIds ( message , this . apiConversationHistory )
817+ const messageWithTs = { ...validatedMessage , ts : Date . now ( ) }
815818 this . apiConversationHistory . push ( messageWithTs )
816819 }
817820
@@ -850,7 +853,9 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
850853 content : this . userMessageContent ,
851854 }
852855
853- const userMessageWithTs = { ...userMessage , ts : Date . now ( ) }
856+ // Validate and fix tool_result IDs against the previous assistant message
857+ const validatedMessage = validateAndFixToolResultIds ( userMessage , this . apiConversationHistory )
858+ const userMessageWithTs = { ...validatedMessage , ts : Date . now ( ) }
854859 this . apiConversationHistory . push ( userMessageWithTs as ApiMessage )
855860
856861 await this . saveApiConversationHistory ( )
0 commit comments