From 45ce36de1f41fed08e360f34af6790834270cfe5 Mon Sep 17 00:00:00 2001 From: Charles Cunningham Date: Thu, 22 Jan 2026 14:49:42 -0800 Subject: [PATCH] Lint and fix --- codex-rs/core/src/config/mod.rs | 4 +++ codex-rs/core/src/session_share.rs | 56 ++++++++++++++++++------------ 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/codex-rs/core/src/config/mod.rs b/codex-rs/core/src/config/mod.rs index e5533830b7..01dbc4853d 100644 --- a/codex-rs/core/src/config/mod.rs +++ b/codex-rs/core/src/config/mod.rs @@ -4150,6 +4150,7 @@ model_verbosity = "high" model_verbosity: None, personality: Some(Personality::Pragmatic), chatgpt_base_url: "https://chatgpt.com/backend-api/".to_string(), + session_object_storage_url: None, base_instructions: None, developer_instructions: None, compact_prompt: None, @@ -4261,6 +4262,7 @@ model_verbosity = "high" model_verbosity: None, personality: Some(Personality::Pragmatic), chatgpt_base_url: "https://chatgpt.com/backend-api/".to_string(), + session_object_storage_url: None, base_instructions: None, developer_instructions: None, compact_prompt: None, @@ -4370,6 +4372,7 @@ model_verbosity = "high" model_verbosity: None, personality: Some(Personality::Pragmatic), chatgpt_base_url: "https://chatgpt.com/backend-api/".to_string(), + session_object_storage_url: None, base_instructions: None, developer_instructions: None, compact_prompt: None, @@ -4465,6 +4468,7 @@ model_verbosity = "high" model_verbosity: Some(Verbosity::High), personality: Some(Personality::Pragmatic), chatgpt_base_url: "https://chatgpt.com/backend-api/".to_string(), + session_object_storage_url: None, base_instructions: None, developer_instructions: None, compact_prompt: None, diff --git a/codex-rs/core/src/session_share.rs b/codex-rs/core/src/session_share.rs index 17e821c9e9..29ff795f4d 100644 --- a/codex-rs/core/src/session_share.rs +++ b/codex-rs/core/src/session_share.rs @@ -144,37 +144,47 @@ pub async fn upload_rollout_with_owner( if exists { let meta = fetch_meta(&store, &meta_key).await?; - let Some(meta) = meta else { - return Err(anyhow::anyhow!( - "remote session already exists without metadata; refusing to overwrite" - )); - }; - if meta.owner != owner { - return Err(anyhow::anyhow!( - "remote session already exists and belongs to another user" - )); + if let Some(meta) = meta { + if meta.owner != owner { + return Err(anyhow::anyhow!( + "remote session already exists and belongs to another user" + )); + } + store + .put_object(&key, data, "application/x-ndjson") + .await + .with_context(|| format!("failed to upload rollout for id {session_id}"))?; + let updated = SessionShareMeta { + owner: meta.owner, + created_at: meta.created_at, + updated_at: now, + }; + upload_meta(&store, &meta_key, &updated).await?; + } else { + // Recover from a previous metadata upload failure by restoring metadata + // and overwriting the rollout blob. + let meta = SessionShareMeta { + owner: owner.to_string(), + created_at: now, + updated_at: now, + }; + upload_meta(&store, &meta_key, &meta).await?; + store + .put_object(&key, data, "application/x-ndjson") + .await + .with_context(|| format!("failed to upload rollout for id {session_id}"))?; } - store - .put_object(&key, data, "application/x-ndjson") - .await - .with_context(|| format!("failed to upload rollout for id {session_id}"))?; - let updated = SessionShareMeta { - owner: meta.owner, - created_at: meta.created_at, - updated_at: now, - }; - upload_meta(&store, &meta_key, &updated).await?; } else { - store - .put_object(&key, data, "application/x-ndjson") - .await - .with_context(|| format!("failed to upload rollout for id {session_id}"))?; let meta = SessionShareMeta { owner: owner.to_string(), created_at: now, updated_at: now, }; upload_meta(&store, &meta_key, &meta).await?; + store + .put_object(&key, data, "application/x-ndjson") + .await + .with_context(|| format!("failed to upload rollout for id {session_id}"))?; } let object_url = store.object_url(&key)?;