feat: edit and remove queued messages - #109
Merged
Merged
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
Add TUI controls to edit or remove pending injected messages without changing delivered transcript history. Edits preserve the message ID and queue position.
Technical details
Pending-message controls
F2focuses the queue, arrow keys select a message,Enteropens the editor, andBackspace/Deleterequests removal. Empty queues do not capture focus, and the selector closes automatically when the last pending message disappears. After asynchronous closure, stale send/delete keys cannot touch the parked draft until typing, pasting, cursor movement, or Esc acknowledges composer focus; normal typing remains responsive. Saving or cancelling restores the parked composer draft and attachments; newer edits survive late responses.Mutations run asynchronously with session-generation and request/edit-token checks, keeping rendering and global shortcuts responsive during delivery races. Editing requires
session.inject.pending.replace. Messages containing media remain sendable and removable, but the text-only queue editor refuses to edit them rather than discard attachments.AgentKit integration
Wire
session/replace_injectinto Kit's ACP v2 server and repinagentkit-acpandagentkit-loopto AgentKit commit8e4ee26onfeat/acp-v2-session-inject. That commit adds atomic replacement, capability advertisement, content validation, and delivery-race handling. The reviewed pin delta changes no registry packages, dependency versions, or enabled features.