From d62f3bf87fc1e60ea764bbda3f5be0ba32fe2458 Mon Sep 17 00:00:00 2001 From: Chris Busillo Date: Sun, 3 May 2026 17:53:51 -0400 Subject: [PATCH] fix(core): isolate Responses WebSocket clone state Give cloned ModelClient instances their own Responses WebSocket session and preserve prewarm-to-request reuse by no longer resetting session state at stream start. --- code-rs/core/src/client.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code-rs/core/src/client.rs b/code-rs/core/src/client.rs index e561d3c1e0f5..b9609840d2ed 100644 --- a/code-rs/core/src/client.rs +++ b/code-rs/core/src/client.rs @@ -396,7 +396,7 @@ impl Clone for ModelClient { websockets_disabled: AtomicBool::new( self.websockets_disabled.load(Ordering::Relaxed), ), - websocket_session: Arc::clone(&self.websocket_session), + websocket_session: Arc::new(TokioMutex::new(ResponsesWebsocketSession::default())), verbosity: self.verbosity, debug_logger: Arc::clone(&self.debug_logger), } @@ -690,7 +690,6 @@ impl ModelClient { /// the provider config. Public callers always invoke `stream()` – the /// specialised helpers are private to avoid accidental misuse. pub async fn stream(&self, prompt: &Prompt) -> Result { - self.reset_responses_websocket_session().await; let env_log_tag = std::env::var("CODE_DEBUG_LOG_TAG").ok(); let log_tag = env_log_tag .as_deref()