mirror of
https://github.com/openai/codex.git
synced 2026-10-18 17:18:52 +00:00
Allow idle threads to prewarm and repair WebSocket connections (#47701)
## Why A previously used WebSocket can close while a thread is idle. Hosts need a way to prepare the connection before the next turn without repeating warmup on a healthy connection. ## What changed - Expose `CodexThread::prewarm()` using the existing startup warmup and next-turn handoff. - Reuse healthy connections and pending warmups, retry failed warmups, and repair closed connections. Treat a finished WebSocket reader task as a closed connection. - Skip scheduling during an active turn or shutdown, and stop warmup admission before shutdown takes the pending task. - Expose `active_turn_environment_selections()` so hosts can inspect the environments captured by the active turn, including those still starting or failed, when authorizing steering. ## Testing Add regression coverage for repeated idle prewarm calls, healthy connection reuse with preserved response continuation, reconnection with `generate: false`, and warmup rejection after shutdown. Update delayed MCP discovery coverage to verify prewarm repairs an eagerly closed socket and the first turn reuses it. GitOrigin-RevId: aa164b91a399de2375eda3bf28397725439fce93
This commit is contained in:
@@ -223,7 +223,11 @@ impl ResponsesWebsocketConnection {
|
||||
}
|
||||
|
||||
pub async fn is_closed(&self) -> bool {
|
||||
self.stream.lock().await.is_none()
|
||||
self.stream
|
||||
.lock()
|
||||
.await
|
||||
.as_ref()
|
||||
.is_none_or(|stream| stream.pump_task.is_finished())
|
||||
}
|
||||
|
||||
#[instrument(
|
||||
|
||||
Reference in New Issue
Block a user