core-agent-ide/codex-rs/exec/src
Owen Lin 8b7ec31ba7
feat(app-server): thread/rollback API (#8454)
Add `thread/rollback` to 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/rollback` does.

**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:
- Rollback only affects agent context and appends to the rollout file;
clients are responsible for reverting files on disk.
- If a thread rollback is currently in progress, subsequent
`thread/rollback` calls are rejected.
- Because we use `CodexConversation::submit` and codex core tracks
active turns, returning an error on concurrent rollbacks is communicated
via an `EventMsg::Error` with a new variant
`CodexErrorInfo::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 `/undo` which we just
removed from the CLI, which does the opposite of what `thread/rollback`
does. `/undo` reverts local changes via ghost commits/snapshots and does
not modify the agent's context / conversation history.
2026-01-06 21:23:48 +00:00
..
cli.rs Allow global exec flags after resume and fix CI codex build/timeout (#8440) 2026-01-05 22:12:09 +00:00
event_processor.rs Minor cleanup of codex exec output (#4585) 2025-10-02 14:17:42 -07:00
event_processor_with_human_output.rs feat(app-server): thread/rollback API (#8454) 2026-01-06 21:23:48 +00:00
event_processor_with_jsonl_output.rs [chore] add additional_details to StreamErrorEvent + wire through (#8307) 2025-12-24 10:07:38 -08:00
exec_events.rs [app-server] feat: add Declined status for command exec (#7101) 2025-11-21 09:19:39 -08:00
lib.rs Allow global exec flags after resume and fix CI codex build/timeout (#8440) 2026-01-05 22:12:09 +00:00
main.rs fix: move arg0 handling out of codex-linux-sandbox and into its own crate (#1697) 2025-07-28 08:31:24 -07:00