feat: thread checkpoints#740
Draft
ethanoroshiba wants to merge 6 commits into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR implements a thread checkpoint system that enables editing in conversations and working directory restoration.
Background
AI coding assistants need the ability to let users edit previous messages and re-run conversations from that point. However, as the AI makes changes to files during a conversation, simply editing an earlier message would create inconsistencies - the AI would be working with files in their current state, not the state they were in at that point in the conversation. This checkpoint system solves that problem by capturing filesystem state after each message and restoring it when needed.
Changes
Core Checkpoint Infrastructure
thread_checkpointandcheckpoint_file_snapshottables for storing checkpoint metadata and file stateAPI Changes
EditThreadMessageRPC endpoint for editing messages with checkpoint supportConfigureThreadWorkingDirectoryRPC endpoint to set up checkpoint trackingworking_directoryfieldrequires_confirmationandrestorationsfields to edit response for client-side restorationCLI v2 Enhancements
Ctrl+Lkeybinding to view and select messages in a threadDatabase Migrations
20251105000000_create_thread_checkpoints.sql: Core checkpoint tables and indexes20251105000001_add_thread_working_directory.sql: Add working directory tracking to threads20251105204430_add_deleted_at_to_llm_message.sql: Soft delete support for messagesAuthorization
thread_message.yamlpolicy to allow editing of user messagesTesting