Skip to content
9 changes: 7 additions & 2 deletions src/core/task/Task.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ import { getMessagesSinceLastSummary, summarizeConversation, getEffectiveApiHist
import { MessageQueueService } from "../message-queue/MessageQueueService"
import { AutoApprovalHandler, checkAutoApproval } from "../auto-approval"
import { MessageManager } from "../message-manager"
import { validateAndFixToolResultIds } from "./validateToolResultIds"

const MAX_EXPONENTIAL_BACKOFF_SECONDS = 600 // 10 minutes
const DEFAULT_USAGE_COLLECTION_TIMEOUT_MS = 5000 // 5 seconds
Expand Down Expand Up @@ -811,7 +812,9 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {

this.apiConversationHistory.push(messageWithTs)
} else {
const messageWithTs = { ...message, ts: Date.now() }
// For user messages, validate and fix tool_result IDs against the previous assistant message
const validatedMessage = validateAndFixToolResultIds(message, this.apiConversationHistory)
const messageWithTs = { ...validatedMessage, ts: Date.now() }
this.apiConversationHistory.push(messageWithTs)
}

Expand Down Expand Up @@ -850,7 +853,9 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
content: this.userMessageContent,
}

const userMessageWithTs = { ...userMessage, ts: Date.now() }
// Validate and fix tool_result IDs against the previous assistant message
const validatedMessage = validateAndFixToolResultIds(userMessage, this.apiConversationHistory)
const userMessageWithTs = { ...validatedMessage, ts: Date.now() }
this.apiConversationHistory.push(userMessageWithTs as ApiMessage)

await this.saveApiConversationHistory()
Expand Down
Loading
Loading