codex: fix multi-agent version CI failures

This commit is contained in:
Ahmed Ibrahim
2026-05-30 20:18:55 -07:00
parent c6dced1800
commit 745307ad08
4 changed files with 14 additions and 4 deletions

View File

@@ -248,6 +248,7 @@ impl TurnContext {
compact_prompt: self.compact_prompt.clone(),
user_instructions: self.user_instructions.clone(),
collaboration_mode,
multi_agent_version: self.multi_agent_version,
personality: self.personality,
approval_policy: self.approval_policy.clone(),
permission_profile: self.permission_profile.clone(),

View File

@@ -2459,7 +2459,9 @@ impl InitialHistory {
InitialHistory::Resumed(resumed) => {
multi_agent_version_from_items(&resumed.history, Some(resumed.conversation_id))
}
InitialHistory::Forked(items) => multi_agent_version_from_items(items, None),
InitialHistory::Forked(items) => {
multi_agent_version_from_items(items, /*thread_id*/ None)
}
}
}

View File

@@ -21,6 +21,7 @@ use std::collections::hash_map::Entry;
use std::path::PathBuf;
use std::sync::Arc;
use tokio::sync::Mutex;
use tokio::sync::Semaphore;
use crate::AppendThreadItemsParams;
use crate::ArchiveThreadParams;
@@ -59,7 +60,7 @@ use codex_protocol::protocol::MultiAgentVersion;
pub struct LocalThreadStore {
pub(super) config: LocalThreadStoreConfig,
live_recorders: Arc<Mutex<HashMap<ThreadId, RolloutRecorder>>>,
multi_agent_version_seed_lock: Arc<Mutex<()>>,
multi_agent_version_seed_lock: Arc<Semaphore>,
state_db: Option<StateDbHandle>,
}
@@ -99,7 +100,7 @@ impl LocalThreadStore {
Self {
config,
live_recorders: Arc::new(Mutex::new(HashMap::new())),
multi_agent_version_seed_lock: Arc::new(Mutex::new(())),
multi_agent_version_seed_lock: Arc::new(Semaphore::new(/*permits*/ 1)),
state_db,
}
}

View File

@@ -16,7 +16,13 @@ pub(super) async fn set_multi_agent_version_if_unset(
store: &LocalThreadStore,
params: SetMultiAgentVersionIfUnsetParams,
) -> ThreadStoreResult<MultiAgentVersion> {
let _guard = store.multi_agent_version_seed_lock.lock().await;
let _permit = store
.multi_agent_version_seed_lock
.acquire()
.await
.map_err(|err| ThreadStoreError::Internal {
message: format!("failed to lock thread multi-agent version seed: {err}"),
})?;
let has_live_writer = live_writer::rollout_path(store, params.thread_id)
.await
.is_ok();