mirror of
https://github.com/openai/codex.git
synced 2026-11-05 16:29:31 +00:00
Retry safety-buffered turns on a forked thread (#33207)
## Why Retrying a safety-buffered turn by rolling back the active thread rewrites the source conversation and requires the TUI to repair its local transcript state. ## What changed - Interrupt the buffered turn, then fork after the preceding completed turn and submit the prompt on the new thread with the faster model and low reasoning effort. - Start a new thread when the buffered request is the conversation's first turn. - Preserve committed steering input in the retry, leave the source thread intact, and restore the prompt alongside any existing draft if branching fails. - Do not offer the retry action for side conversations or stale and in-progress turns. ## Testing Added coverage for retries with prior context, first-turn retries, committed steering input, branch failures, existing composer drafts and attachments, and side conversations. GitOrigin-RevId: adb49da8236e9212ef0082e033e6f715986b5cd9
This commit is contained in:
1 parent
77a3f4e80f
commit
9cddda7556
21 files changed
+897
-586
No files matched your search
@@ -85,8 +85,6 @@ use codex_app_server_protocol::ThreadReadParams;
|
||||
use codex_app_server_protocol::ThreadReadResponse;
|
||||
use codex_app_server_protocol::ThreadResumeParams;
|
||||
use codex_app_server_protocol::ThreadResumeResponse;
|
||||
use codex_app_server_protocol::ThreadRollbackParams;
|
||||
use codex_app_server_protocol::ThreadRollbackResponse;
|
||||
use codex_app_server_protocol::ThreadSetNameParams;
|
||||
use codex_app_server_protocol::ThreadSetNameResponse;
|
||||
use codex_app_server_protocol::ThreadSettingsUpdateParams;
|
||||
@@ -1114,24 +1112,6 @@ impl AppServerSession {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(crate) async fn thread_rollback(
|
||||
&mut self,
|
||||
thread_id: ThreadId,
|
||||
num_turns: u32,
|
||||
) -> Result<ThreadRollbackResponse> {
|
||||
let request_id = self.next_request_id();
|
||||
self.client
|
||||
.request_typed(ClientRequest::ThreadRollback {
|
||||
request_id,
|
||||
params: ThreadRollbackParams {
|
||||
thread_id: thread_id.to_string(),
|
||||
num_turns,
|
||||
},
|
||||
})
|
||||
.await
|
||||
.wrap_err("thread/rollback failed in TUI")
|
||||
}
|
||||
|
||||
pub(crate) async fn review_start(
|
||||
&mut self,
|
||||
thread_id: ThreadId,
|
||||
|
||||
Reference in new issue
Block a user