mirror of
https://github.com/openai/codex.git
synced 2026-11-14 14:49:31 +00:00
Restore collaboration mode when resuming threads (#45519)
## Why Resuming a thread initialized its collaboration mode to Default, losing the saved Plan mode and its developer instructions. Reconnecting clients also lacked a server-reported mode to reconcile changes made by another client. ## What changed - Restore the saved collaboration mode from the latest matching `ThreadSettingsApplied` event, falling back to the last legacy `TurnContext`. Apply the effective model and reasoning effort while retaining the saved mode and developer instructions. - Include `collaborationMode` in `thread/resume` responses and update the generated schemas and bindings. - Use the restored mode in the TUI, including the first prompt after resume. Prefer the server's mode when restoring disconnected input, while preserving the local selection for older servers that omit it. ## Testing Add regression coverage for persisted and legacy collaboration modes, model and reasoning-effort overrides, the resumed Plan mode display and first prompt, and reconnect behavior with and without a server-reported mode. GitOrigin-RevId: ed064516e7fae1c1668152ab448f510cbcacfe06
This commit is contained in:
1 parent
7c73903be2
commit
91d54f1667
22 files changed
+309
-13
No files matched your search
@@ -951,13 +951,14 @@ async fn resume_replays_collaboration_instructions() -> Result<()> {
|
||||
.await;
|
||||
|
||||
let mut builder = test_codex();
|
||||
let initial = builder.build(&server).await?;
|
||||
let initial = builder.build_with_auto_env(&server).await?;
|
||||
|
||||
let collab_text = "resume instructions";
|
||||
let mode = collab_mode_for_model(ModeKind::Plan, "gpt-5.5", Some(collab_text));
|
||||
core_test_support::submit_thread_settings(
|
||||
&initial.codex,
|
||||
ThreadSettingsOverrides {
|
||||
collaboration_mode: Some(collab_mode_with_instructions(Some(collab_text))),
|
||||
collaboration_mode: Some(mode),
|
||||
..Default::default()
|
||||
},
|
||||
)
|
||||
@@ -973,6 +974,15 @@ async fn resume_replays_collaboration_instructions() -> Result<()> {
|
||||
wait_for_event(&initial.codex, |ev| matches!(ev, EventMsg::TurnComplete(_))).await;
|
||||
|
||||
let resumed = builder.restart(&server, &initial).await?;
|
||||
assert_eq!(
|
||||
resumed
|
||||
.codex
|
||||
.config_snapshot()
|
||||
.await
|
||||
.collaboration_mode
|
||||
.mode,
|
||||
ModeKind::Plan
|
||||
);
|
||||
resumed
|
||||
.codex
|
||||
.start_or_steer_turn(TurnInputRequest::user_input(vec![UserInput::Text {
|
||||
|
||||
Reference in new issue
Block a user