-
Notifications
You must be signed in to change notification settings - Fork 6.9k
feat(app-server): thread/rollback API #8454
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
@codex review |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback". |
| turn.status = TurnStatus::Interrupted; | ||
| } | ||
|
|
||
| fn handle_thread_rollback(&mut self, payload: &ThreadRolledBackEvent) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI for code reviewers, this file is responsible for building app-server's Thread + Turns from the rollout file (i.e. on thread/resume), reading mostly from EventMsg
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
@codex review |
|
Codex Review: Didn't find any major issues. Hooray! ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback". |
Add
thread/rollbackto app-server to support IDEs undo-ing the last N turns of a thread.For context, an IDE partner will be supporting an "undo" capability where the IDE (the app-server client) will be responsible for reverting the local changes made during the last turn. To support this well, we also need a way to drop the last turn (or more generally, the last N turns) from the agent's context. This is what
thread/rollbackdoes.Core idea: A Thread rollback is represented as a persisted event message (EventMsg::ThreadRollback) in the rollout JSONL file, not by rewriting history. On resume, both the model's context (core replay) and the UI turn list (app-server v2's thread history builder) apply these markers so the pruned history is consistent across live conversations and
thread/resume.Implementation notes:
thread/rollbackcalls are rejected.CodexConversation::submitand codex core tracks active turns, returning an error on concurrent rollbacks is communicated via anEventMsg::Errorwith a new variantCodexErrorInfo::ThreadRollbackFailed. app-server watches for that and sends the BAD_REQUEST RPC response.Tests cover thread rollbacks in both core and app-server, including when
num_turns> existing turns (which clears all turns).Note: this explicitly does not behave like
/undowhich we just removed from the CLI, which does the opposite of whatthread/rollbackdoes./undoreverts local changes via ghost commits/snapshots and does not modify the agent's context / conversation history.