diff --git a/codex-rs/app-server-client/src/lib.rs b/codex-rs/app-server-client/src/lib.rs index 31184063e9..49ed5256f0 100644 --- a/codex-rs/app-server-client/src/lib.rs +++ b/codex-rs/app-server-client/src/lib.rs @@ -969,7 +969,7 @@ mod tests { cloud_requirements: CloudRequirementsLoader::default(), feedback: CodexFeedback::new(), log_db: None, - environment_manager: Arc::new(EnvironmentManager::from_exec_server_url( + environment_manager: Arc::new(EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), config_warnings: Vec::new(), @@ -1972,12 +1972,10 @@ mod tests { #[tokio::test] async fn runtime_start_args_forward_environment_manager() { let config = Arc::new(build_test_config().await); - let environment_manager = Arc::new(EnvironmentManager::from_exec_server_url( - EnvironmentManagerArgs { - exec_server_url: Some("ws://127.0.0.1:8765".to_string()), - local_runtime_paths: None, - }, - )); + let environment_manager = Arc::new(EnvironmentManager::new(EnvironmentManagerArgs { + exec_server_url: Some("ws://127.0.0.1:8765".to_string()), + local_runtime_paths: None, + })); let runtime_args = InProcessClientStartArgs { arg0_paths: Arg0DispatchPaths::default(), diff --git a/codex-rs/app-server/src/bespoke_event_handling.rs b/codex-rs/app-server/src/bespoke_event_handling.rs index 43a75df678..806652a7d6 100644 --- a/codex-rs/app-server/src/bespoke_event_handling.rs +++ b/codex-rs/app-server/src/bespoke_event_handling.rs @@ -3497,7 +3497,7 @@ mod tests { CodexAuth::create_dummy_chatgpt_auth_for_testing(), config.model_provider.clone(), config.codex_home.to_path_buf(), - Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), ), diff --git a/codex-rs/app-server/src/in_process.rs b/codex-rs/app-server/src/in_process.rs index c4544a7de7..8c604bcd8b 100644 --- a/codex-rs/app-server/src/in_process.rs +++ b/codex-rs/app-server/src/in_process.rs @@ -738,7 +738,7 @@ mod tests { thread_config_loader: Arc::new(codex_config::NoopThreadConfigLoader), feedback: CodexFeedback::new(), log_db: None, - environment_manager: Arc::new(EnvironmentManager::from_exec_server_url( + environment_manager: Arc::new(EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), config_warnings: Vec::new(), diff --git a/codex-rs/app-server/src/message_processor/tracing_tests.rs b/codex-rs/app-server/src/message_processor/tracing_tests.rs index a6fffce95a..16d14c8413 100644 --- a/codex-rs/app-server/src/message_processor/tracing_tests.rs +++ b/codex-rs/app-server/src/message_processor/tracing_tests.rs @@ -241,7 +241,7 @@ fn build_test_processor( outgoing, arg0_paths: Arg0DispatchPaths::default(), config, - environment_manager: Arc::new(EnvironmentManager::from_exec_server_url( + environment_manager: Arc::new(EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), cli_overrides: Vec::new(), diff --git a/codex-rs/app-server/tests/suite/v2/mcp_resource.rs b/codex-rs/app-server/tests/suite/v2/mcp_resource.rs index 34b7a55d6a..4bc412d54e 100644 --- a/codex-rs/app-server/tests/suite/v2/mcp_resource.rs +++ b/codex-rs/app-server/tests/suite/v2/mcp_resource.rs @@ -204,7 +204,7 @@ async fn mcp_resource_read_returns_error_for_unknown_thread() -> Result<()> { thread_config_loader: Arc::new(codex_config::NoopThreadConfigLoader), feedback: CodexFeedback::new(), log_db: None, - environment_manager: Arc::new(EnvironmentManager::from_exec_server_url( + environment_manager: Arc::new(EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), config_warnings: Vec::new(), diff --git a/codex-rs/core/src/agent/control_tests.rs b/codex-rs/core/src/agent/control_tests.rs index 473180caa3..15eb23d0cd 100644 --- a/codex-rs/core/src/agent/control_tests.rs +++ b/codex-rs/core/src/agent/control_tests.rs @@ -95,7 +95,7 @@ impl AgentControlHarness { CodexAuth::from_api_key("dummy"), config.model_provider.clone(), config.codex_home.to_path_buf(), - std::sync::Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + std::sync::Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), ); @@ -911,7 +911,7 @@ async fn spawn_agent_respects_max_threads_limit() { CodexAuth::from_api_key("dummy"), config.model_provider.clone(), config.codex_home.to_path_buf(), - std::sync::Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + std::sync::Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), ); @@ -965,7 +965,7 @@ async fn spawn_agent_releases_slot_after_shutdown() { CodexAuth::from_api_key("dummy"), config.model_provider.clone(), config.codex_home.to_path_buf(), - std::sync::Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + std::sync::Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), ); @@ -1010,7 +1010,7 @@ async fn spawn_agent_limit_shared_across_clones() { CodexAuth::from_api_key("dummy"), config.model_provider.clone(), config.codex_home.to_path_buf(), - std::sync::Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + std::sync::Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), ); @@ -1057,7 +1057,7 @@ async fn resume_agent_respects_max_threads_limit() { CodexAuth::from_api_key("dummy"), config.model_provider.clone(), config.codex_home.to_path_buf(), - std::sync::Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + std::sync::Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), ); @@ -1115,7 +1115,7 @@ async fn resume_agent_releases_slot_after_resume_failure() { CodexAuth::from_api_key("dummy"), config.model_provider.clone(), config.codex_home.to_path_buf(), - std::sync::Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + std::sync::Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), ); @@ -1512,7 +1512,7 @@ async fn resume_thread_subagent_restores_stored_nickname_and_role() { CodexAuth::from_api_key("dummy"), config.model_provider.clone(), config.codex_home.to_path_buf(), - std::sync::Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + std::sync::Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), ); diff --git a/codex-rs/core/src/memories/tests.rs b/codex-rs/core/src/memories/tests.rs index 2b68596fd4..1048b3da86 100644 --- a/codex-rs/core/src/memories/tests.rs +++ b/codex-rs/core/src/memories/tests.rs @@ -491,7 +491,7 @@ mod phase2 { CodexAuth::from_api_key("dummy"), config.model_provider.clone(), config.codex_home.to_path_buf(), - std::sync::Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + std::sync::Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), ); diff --git a/codex-rs/core/src/session/tests/guardian_tests.rs b/codex-rs/core/src/session/tests/guardian_tests.rs index 9ee27bd202..117223d429 100644 --- a/codex-rs/core/src/session/tests/guardian_tests.rs +++ b/codex-rs/core/src/session/tests/guardian_tests.rs @@ -634,7 +634,7 @@ async fn guardian_subagent_does_not_inherit_parent_exec_policy_rules() { config, auth_manager, models_manager, - environment_manager: Arc::new(EnvironmentManager::from_exec_server_url( + environment_manager: Arc::new(EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), skills_manager, diff --git a/codex-rs/core/src/thread_manager.rs b/codex-rs/core/src/thread_manager.rs index 293423defe..c5da648bf5 100644 --- a/codex-rs/core/src/thread_manager.rs +++ b/codex-rs/core/src/thread_manager.rs @@ -301,7 +301,7 @@ impl ThreadManager { auth, provider, codex_home.clone(), - Arc::new(EnvironmentManager::from_exec_server_url( + Arc::new(EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), ); diff --git a/codex-rs/core/src/thread_manager_tests.rs b/codex-rs/core/src/thread_manager_tests.rs index 8c0fbe5e38..76dd62bb9a 100644 --- a/codex-rs/core/src/thread_manager_tests.rs +++ b/codex-rs/core/src/thread_manager_tests.rs @@ -246,7 +246,7 @@ async fn shutdown_all_threads_bounded_submits_shutdown_to_every_thread() { CodexAuth::from_api_key("dummy"), config.model_provider.clone(), config.codex_home.to_path_buf(), - Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), ); @@ -297,7 +297,7 @@ async fn new_uses_configured_openai_provider_for_model_refresh() { auth_manager, SessionSource::Exec, CollaborationModesConfig::default(), - Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), /*analytics_events_client*/ None, @@ -434,7 +434,7 @@ async fn interrupted_fork_snapshot_does_not_synthesize_turn_id_for_legacy_histor auth_manager.clone(), SessionSource::Exec, CollaborationModesConfig::default(), - Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), /*analytics_events_client*/ None, @@ -537,7 +537,7 @@ async fn interrupted_fork_snapshot_preserves_explicit_turn_id() { auth_manager.clone(), SessionSource::Exec, CollaborationModesConfig::default(), - Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), /*analytics_events_client*/ None, @@ -630,7 +630,7 @@ async fn interrupted_fork_snapshot_uses_persisted_mid_turn_history_without_live_ auth_manager.clone(), SessionSource::Exec, CollaborationModesConfig::default(), - Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), /*analytics_events_client*/ None, diff --git a/codex-rs/core/tests/common/test_codex.rs b/codex-rs/core/tests/common/test_codex.rs index 32f5657b34..0993b5b0e4 100644 --- a/codex-rs/core/tests/common/test_codex.rs +++ b/codex-rs/core/tests/common/test_codex.rs @@ -350,13 +350,12 @@ impl TestCodexBuilder { let (config, fallback_cwd) = self .prepare_config(base_url, &home, test_env.cwd().clone()) .await?; - let environment_manager = - Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( - codex_exec_server::EnvironmentManagerArgs { - exec_server_url: test_env.exec_server_url().map(str::to_owned), - local_runtime_paths: None, - }, - )); + let environment_manager = Arc::new(codex_exec_server::EnvironmentManager::new( + codex_exec_server::EnvironmentManagerArgs { + exec_server_url: test_env.exec_server_url().map(str::to_owned), + local_runtime_paths: None, + }, + )); let file_system = test_env.environment().get_filesystem(); let mut workspace_setups = vec![]; swap(&mut self.workspace_setups, &mut workspace_setups); diff --git a/codex-rs/core/tests/suite/client.rs b/codex-rs/core/tests/suite/client.rs index 3bebd2192c..3f0a7762ba 100644 --- a/codex-rs/core/tests/suite/client.rs +++ b/codex-rs/core/tests/suite/client.rs @@ -1103,7 +1103,7 @@ async fn prefers_apikey_when_config_prefers_apikey_even_with_chatgpt_tokens() { .features .enabled(Feature::DefaultModeRequestUserInput), }, - Arc::new(codex_exec_server::EnvironmentManager::from_exec_server_url( + Arc::new(codex_exec_server::EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), /*analytics_events_client*/ None, diff --git a/codex-rs/core/tests/suite/skills.rs b/codex-rs/core/tests/suite/skills.rs index 4ff6da00d1..090f7a5790 100644 --- a/codex-rs/core/tests/suite/skills.rs +++ b/codex-rs/core/tests/suite/skills.rs @@ -234,7 +234,7 @@ async fn list_skills_skips_cwd_roots_when_environment_disabled() -> Result<()> { codex_core::test_support::auth_manager_from_auth(CodexAuth::from_api_key("dummy")), SessionSource::Exec, CollaborationModesConfig::default(), - Arc::new(EnvironmentManager::from_exec_server_url( + Arc::new(EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs { exec_server_url: Some("none".to_string()), local_runtime_paths: None, diff --git a/codex-rs/exec-server/src/environment.rs b/codex-rs/exec-server/src/environment.rs index d43d2ba2c4..4cfcd6f9c0 100644 --- a/codex-rs/exec-server/src/environment.rs +++ b/codex-rs/exec-server/src/environment.rs @@ -70,7 +70,7 @@ impl LazyRemoteExecServerClient { impl Default for EnvironmentManager { fn default() -> Self { - Self::from_exec_server_url(EnvironmentManagerArgs::default()) + Self::new(EnvironmentManagerArgs::default()) } } @@ -85,7 +85,7 @@ impl EnvironmentManager { pub fn from_env_with_runtime_paths( local_runtime_paths: Option, ) -> Self { - Self::from_exec_server_url(EnvironmentManagerArgs { + Self::new(EnvironmentManagerArgs { exec_server_url: std::env::var(CODEX_EXEC_SERVER_URL_ENV_VAR).ok(), local_runtime_paths, }) @@ -93,7 +93,7 @@ impl EnvironmentManager { /// Builds a manager from the raw `CODEX_EXEC_SERVER_URL` value and local /// runtime paths used when creating local filesystem helpers. - pub fn from_exec_server_url(args: EnvironmentManagerArgs) -> Self { + pub fn new(args: EnvironmentManagerArgs) -> Self { let EnvironmentManagerArgs { exec_server_url, local_runtime_paths, @@ -292,7 +292,7 @@ mod tests { #[test] fn environment_manager_normalizes_empty_url() { - let manager = EnvironmentManager::from_exec_server_url(EnvironmentManagerArgs { + let manager = EnvironmentManager::new(EnvironmentManagerArgs { exec_server_url: Some(String::new()), local_runtime_paths: None, }); @@ -306,7 +306,7 @@ mod tests { #[test] fn environment_manager_treats_none_value_as_disabled() { - let manager = EnvironmentManager::from_exec_server_url(EnvironmentManagerArgs { + let manager = EnvironmentManager::new(EnvironmentManagerArgs { exec_server_url: Some("none".to_string()), local_runtime_paths: None, }); @@ -319,7 +319,7 @@ mod tests { #[test] fn environment_manager_reports_remote_url() { - let manager = EnvironmentManager::from_exec_server_url(EnvironmentManagerArgs { + let manager = EnvironmentManager::new(EnvironmentManagerArgs { exec_server_url: Some("ws://127.0.0.1:8765".to_string()), local_runtime_paths: None, }); @@ -345,7 +345,7 @@ mod tests { #[tokio::test] async fn environment_manager_default_environment_caches_environment() { - let manager = EnvironmentManager::from_exec_server_url(EnvironmentManagerArgs::default()); + let manager = EnvironmentManager::new(EnvironmentManagerArgs::default()); let first = manager.default_environment().expect("local environment"); let second = manager.default_environment().expect("local environment"); @@ -360,7 +360,7 @@ mod tests { /*codex_linux_sandbox_exe*/ None, ) .expect("runtime paths"); - let manager = EnvironmentManager::from_exec_server_url(EnvironmentManagerArgs { + let manager = EnvironmentManager::new(EnvironmentManagerArgs { exec_server_url: None, local_runtime_paths: Some(runtime_paths.clone()), }); @@ -368,7 +368,7 @@ mod tests { let environment = manager.default_environment().expect("local environment"); assert_eq!(environment.local_runtime_paths(), Some(&runtime_paths)); - let manager = EnvironmentManager::from_exec_server_url(EnvironmentManagerArgs { + let manager = EnvironmentManager::new(EnvironmentManagerArgs { exec_server_url: environment.exec_server_url().map(str::to_owned), local_runtime_paths: environment.local_runtime_paths().cloned(), }); @@ -378,7 +378,7 @@ mod tests { #[tokio::test] async fn disabled_environment_manager_has_default_environment_but_no_tool_environment() { - let manager = EnvironmentManager::from_exec_server_url(EnvironmentManagerArgs { + let manager = EnvironmentManager::new(EnvironmentManagerArgs { exec_server_url: Some("none".to_string()), local_runtime_paths: None, }); @@ -389,7 +389,7 @@ mod tests { #[tokio::test] async fn environment_manager_allows_local_lookup_when_disabled() { - let manager = EnvironmentManager::from_exec_server_url(EnvironmentManagerArgs { + let manager = EnvironmentManager::new(EnvironmentManagerArgs { exec_server_url: Some("none".to_string()), local_runtime_paths: None, }); @@ -402,7 +402,7 @@ mod tests { #[tokio::test] async fn get_environment_returns_none_for_unknown_id() { - let manager = EnvironmentManager::from_exec_server_url(EnvironmentManagerArgs::default()); + let manager = EnvironmentManager::new(EnvironmentManagerArgs::default()); assert!(manager.get_environment("does-not-exist").is_none()); } diff --git a/codex-rs/tui/src/app/test_support.rs b/codex-rs/tui/src/app/test_support.rs index 254fc4cfa7..8b2c22512e 100644 --- a/codex-rs/tui/src/app/test_support.rs +++ b/codex-rs/tui/src/app/test_support.rs @@ -38,7 +38,7 @@ pub(super) async fn make_test_app() -> App { backtrack_render_pending: false, feedback: codex_feedback::CodexFeedback::new(), feedback_audience: FeedbackAudience::External, - environment_manager: Arc::new(EnvironmentManager::from_exec_server_url( + environment_manager: Arc::new(EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), remote_app_server_url: None, diff --git a/codex-rs/tui/src/app/tests.rs b/codex-rs/tui/src/app/tests.rs index 6f4ff6d1aa..56d093598f 100644 --- a/codex-rs/tui/src/app/tests.rs +++ b/codex-rs/tui/src/app/tests.rs @@ -3576,7 +3576,7 @@ async fn make_test_app() -> App { backtrack_render_pending: false, feedback: codex_feedback::CodexFeedback::new(), feedback_audience: FeedbackAudience::External, - environment_manager: Arc::new(EnvironmentManager::from_exec_server_url( + environment_manager: Arc::new(EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), remote_app_server_url: None, @@ -3635,7 +3635,7 @@ async fn make_test_app_with_channels() -> ( backtrack_render_pending: false, feedback: codex_feedback::CodexFeedback::new(), feedback_audience: FeedbackAudience::External, - environment_manager: Arc::new(EnvironmentManager::from_exec_server_url( + environment_manager: Arc::new(EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), remote_app_server_url: None, diff --git a/codex-rs/tui/src/lib.rs b/codex-rs/tui/src/lib.rs index 2fb6ace80a..bbc6df14bb 100644 --- a/codex-rs/tui/src/lib.rs +++ b/codex-rs/tui/src/lib.rs @@ -425,7 +425,7 @@ pub(crate) async fn start_embedded_app_server_for_picker( start_app_server_for_picker( config, &AppServerTarget::Embedded, - Arc::new(EnvironmentManager::from_exec_server_url( + Arc::new(EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), ) @@ -1775,7 +1775,7 @@ mod tests { CloudRequirementsLoader::default(), codex_feedback::CodexFeedback::new(), /*log_db*/ None, - Arc::new(EnvironmentManager::from_exec_server_url( + Arc::new(EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), ) @@ -1936,9 +1936,8 @@ mod tests { websocket_url: "ws://127.0.0.1:1234/".to_string(), auth_token: None, }; - let environment_manager = EnvironmentManager::from_exec_server_url( - codex_exec_server::EnvironmentManagerArgs::default(), - ); + let environment_manager = + EnvironmentManager::new(codex_exec_server::EnvironmentManagerArgs::default()); let config_cwd = config_cwd_for_app_server_target(Some(remote_only_cwd), &target, &environment_manager)?; @@ -1951,9 +1950,8 @@ mod tests { fn config_cwd_for_app_server_target_canonicalizes_embedded_cli_cwd() -> std::io::Result<()> { let temp_dir = TempDir::new()?; let target = AppServerTarget::Embedded; - let environment_manager = EnvironmentManager::from_exec_server_url( - codex_exec_server::EnvironmentManagerArgs::default(), - ); + let environment_manager = + EnvironmentManager::new(codex_exec_server::EnvironmentManagerArgs::default()); let config_cwd = config_cwd_for_app_server_target(Some(temp_dir.path()), &target, &environment_manager)?; @@ -1973,9 +1971,8 @@ mod tests { let temp_dir = TempDir::new()?; let missing = temp_dir.path().join("missing"); let target = AppServerTarget::Embedded; - let environment_manager = EnvironmentManager::from_exec_server_url( - codex_exec_server::EnvironmentManagerArgs::default(), - ); + let environment_manager = + EnvironmentManager::new(codex_exec_server::EnvironmentManagerArgs::default()); let err = config_cwd_for_app_server_target(Some(&missing), &target, &environment_manager) .expect_err("missing embedded cwd should fail"); @@ -1993,7 +1990,7 @@ mod tests { }; let target = AppServerTarget::Embedded; let environment_manager = - EnvironmentManager::from_exec_server_url(codex_exec_server::EnvironmentManagerArgs { + EnvironmentManager::new(codex_exec_server::EnvironmentManagerArgs { exec_server_url: Some("ws://127.0.0.1:8765".to_string()), local_runtime_paths: None, }); @@ -2123,7 +2120,7 @@ mod tests { CloudRequirementsLoader::default(), codex_feedback::CodexFeedback::new(), /*log_db*/ None, - Arc::new(EnvironmentManager::from_exec_server_url( + Arc::new(EnvironmentManager::new( codex_exec_server::EnvironmentManagerArgs::default(), )), |_args| async { Err(std::io::Error::other("boom")) }, diff --git a/codex-rs/tui/src/onboarding/auth.rs b/codex-rs/tui/src/onboarding/auth.rs index ee6f843c8c..2379c2d55d 100644 --- a/codex-rs/tui/src/onboarding/auth.rs +++ b/codex-rs/tui/src/onboarding/auth.rs @@ -989,11 +989,9 @@ mod tests { ), feedback: codex_feedback::CodexFeedback::new(), log_db: None, - environment_manager: Arc::new( - codex_app_server_client::EnvironmentManager::from_exec_server_url( - codex_app_server_client::EnvironmentManagerArgs::default(), - ), - ), + environment_manager: Arc::new(codex_app_server_client::EnvironmentManager::new( + codex_app_server_client::EnvironmentManagerArgs::default(), + )), config_warnings: Vec::new(), session_source: SessionSource::Cli, enable_codex_api_key_env: false,