Skip to content

Commit 67e6a22

Browse files
committed
fix: improve checkpoint timing logic
- Save checkpoints AFTER file edits instead of before - Add checkpoint before processing new user prompts - Fixes regression where checkpoints were only saved before file edits Fixes #6800
1 parent 37330b0 commit 67e6a22

File tree

3 files changed

+508
-5
lines changed

3 files changed

+508
-5
lines changed

src/core/assistant-message/presentAssistantMessage.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -410,8 +410,9 @@ export async function presentAssistantMessage(cline: Task) {
410410

411411
switch (block.name) {
412412
case "write_to_file":
413-
await checkpointSaveAndMark(cline)
414413
await writeToFileTool(cline, block, askApproval, handleError, pushToolResult, removeClosingTag)
414+
// Save checkpoint AFTER file edit
415+
await checkpointSaveAndMark(cline)
415416
break
416417
case "update_todo_list":
417418
await updateTodoListTool(cline, block, askApproval, handleError, pushToolResult, removeClosingTag)
@@ -430,10 +431,8 @@ export async function presentAssistantMessage(cline: Task) {
430431
}
431432

432433
if (isMultiFileApplyDiffEnabled) {
433-
await checkpointSaveAndMark(cline)
434434
await applyDiffTool(cline, block, askApproval, handleError, pushToolResult, removeClosingTag)
435435
} else {
436-
await checkpointSaveAndMark(cline)
437436
await applyDiffToolLegacy(
438437
cline,
439438
block,
@@ -443,15 +442,19 @@ export async function presentAssistantMessage(cline: Task) {
443442
removeClosingTag,
444443
)
445444
}
445+
// Save checkpoint AFTER file edit
446+
await checkpointSaveAndMark(cline)
446447
break
447448
}
448449
case "insert_content":
449-
await checkpointSaveAndMark(cline)
450450
await insertContentTool(cline, block, askApproval, handleError, pushToolResult, removeClosingTag)
451+
// Save checkpoint AFTER file edit
452+
await checkpointSaveAndMark(cline)
451453
break
452454
case "search_and_replace":
453-
await checkpointSaveAndMark(cline)
454455
await searchAndReplaceTool(cline, block, askApproval, handleError, pushToolResult, removeClosingTag)
456+
// Save checkpoint AFTER file edit
457+
await checkpointSaveAndMark(cline)
455458
break
456459
case "read_file":
457460
await readFileTool(cline, block, askApproval, handleError, pushToolResult, removeClosingTag)

0 commit comments

Comments
 (0)