mirror of
https://github.com/openai/codex.git
synced 2026-05-19 18:52:57 +00:00
## Why The earlier PRs add stdio transport support and the config-backed environment provider, but the feature remains inert until normal Codex entrypoints construct `EnvironmentManager` with enough context to discover `CODEX_HOME/environments.toml`. This final stack PR activates the provider while preserving the legacy `CODEX_EXEC_SERVER_URL` fallback when no environments file exists. **Stack position:** this is PR 5 of 5. It is the product wiring PR that activates the configured environment provider added in PR 4. ## What Changed - Thread `codex_home` into `EnvironmentManagerArgs`. - Change `EnvironmentManager::new(...)` to load the provider from `CODEX_HOME`. - Preserve legacy behavior by falling back to `DefaultEnvironmentProvider::from_env()` when `environments.toml` is absent. - Make `environments.toml`-backed managers start new threads with all configured environments, default first, while keeping the legacy env-var path single-default. - Update the app-server, TUI, exec, MCP server, connector, prompt-debug, and thread-manager-sample callsites to pass `codex_home` and handle provider-loading errors. ## Self-Review Notes - The multi-environment startup path is intentionally tied to the `environments.toml` provider. Using `>1` configured environment as the only signal would also expand the legacy `CODEX_EXEC_SERVER_URL` provider because it keeps `local` addressable alongside `remote`. - The startup environment list is still derived inside `EnvironmentManager`; the provider only says whether its snapshot should start new threads with all configured environments. - The thread-manager sample was updated to pass the current `ThreadManager::new(...)` installation id argument so the stack compiles under Bazel. ## Stack - 1. https://github.com/openai/codex/pull/20663 - Add stdio exec-server listener - 2. https://github.com/openai/codex/pull/20664 - Add stdio exec-server client transport - 3. https://github.com/openai/codex/pull/20665 - Make environment providers own default selection - 4. https://github.com/openai/codex/pull/20666 - Add CODEX_HOME environments TOML provider - **5. This PR:** https://github.com/openai/codex/pull/20667 - Load configured environments from CODEX_HOME Split from original draft: https://github.com/openai/codex/pull/20508 ## Validation - `just fmt` - `git diff --check` - `bazel build --config=remote --strategy=remote --remote_download_toplevel //codex-rs/thread-manager-sample:codex-thread-manager-sample` - `bazel test --config=remote --strategy=remote --remote_download_toplevel //codex-rs/exec-server:exec-server-unit-tests` - `bazel test --config=remote --strategy=remote --remote_download_toplevel --test_sharding_strategy=disabled --test_arg=default_thread_environment_selections_use_manager_default_id //codex-rs/core:core-unit-tests` - `bazel test --config=remote --strategy=remote --remote_download_toplevel --test_sharding_strategy=disabled --test_arg=start_thread_uses_all_default_environments_from_codex_home //codex-rs/core:core-unit-tests` ## Documentation This activates `CODEX_HOME/environments.toml`; user-facing documentation should be added before this stack is treated as a documented public workflow. --------- Co-authored-by: Codex <noreply@openai.com>
77 lines
3.5 KiB
Rust
77 lines
3.5 KiB
Rust
//! Public facade for thread management APIs built on `codex-core`.
|
|
|
|
#![deny(private_bounds, private_interfaces, unreachable_pub)]
|
|
|
|
pub use codex_analytics::AnalyticsEventsClient;
|
|
pub use codex_app_server_protocol::ServerNotification;
|
|
pub use codex_app_server_protocol::item_event_to_server_notification;
|
|
pub use codex_arg0::Arg0DispatchPaths;
|
|
pub use codex_arg0::arg0_dispatch_or_else;
|
|
pub use codex_config::ConfigLayerStack;
|
|
pub use codex_config::config_toml::ProjectConfig;
|
|
pub use codex_config::config_toml::RealtimeAudioConfig;
|
|
pub use codex_config::config_toml::RealtimeConfig;
|
|
pub use codex_config::types::AuthCredentialsStoreMode;
|
|
pub use codex_config::types::History;
|
|
pub use codex_config::types::MemoriesConfig;
|
|
pub use codex_config::types::ModelAvailabilityNuxConfig;
|
|
pub use codex_config::types::Notice;
|
|
pub use codex_config::types::OAuthCredentialsStoreMode;
|
|
pub use codex_config::types::OtelConfig;
|
|
pub use codex_config::types::SessionPickerViewMode;
|
|
pub use codex_config::types::ToolSuggestConfig;
|
|
pub use codex_config::types::TuiKeymap;
|
|
pub use codex_config::types::TuiNotificationSettings;
|
|
pub use codex_config::types::UriBasedFileOpener;
|
|
pub use codex_core::CodexThread;
|
|
pub use codex_core::ForkSnapshot;
|
|
pub use codex_core::McpManager;
|
|
pub use codex_core::NewThread;
|
|
pub use codex_core::StartThreadOptions;
|
|
pub use codex_core::StateDbHandle;
|
|
pub use codex_core::ThreadManager;
|
|
pub use codex_core::ThreadShutdownReport;
|
|
pub use codex_core::config::Config;
|
|
pub use codex_core::config::Constrained;
|
|
pub use codex_core::config::GhostSnapshotConfig;
|
|
pub use codex_core::config::MultiAgentV2Config;
|
|
pub use codex_core::config::Permissions;
|
|
pub use codex_core::config::TerminalResizeReflowConfig;
|
|
pub use codex_core::config::ThreadStoreConfig;
|
|
pub use codex_core::config::find_codex_home;
|
|
pub use codex_core::init_state_db;
|
|
pub use codex_core::resolve_installation_id;
|
|
pub use codex_core::skills::SkillsManager;
|
|
pub use codex_core::thread_store_from_config;
|
|
pub use codex_exec_server::EnvironmentManager;
|
|
pub use codex_exec_server::ExecServerRuntimePaths;
|
|
pub use codex_features::Feature;
|
|
pub use codex_features::Features;
|
|
pub use codex_login::AuthManager;
|
|
pub use codex_login::default_client::set_default_originator;
|
|
pub use codex_model_provider_info::OPENAI_PROVIDER_ID;
|
|
pub use codex_model_provider_info::built_in_model_providers;
|
|
pub use codex_models_manager::manager::RefreshStrategy;
|
|
pub use codex_models_manager::manager::SharedModelsManager;
|
|
pub use codex_protocol::ThreadId;
|
|
pub use codex_protocol::config_types::AltScreenMode;
|
|
pub use codex_protocol::config_types::ApprovalsReviewer;
|
|
pub use codex_protocol::config_types::CollaborationModeMask;
|
|
pub use codex_protocol::config_types::ShellEnvironmentPolicy;
|
|
pub use codex_protocol::config_types::WebSearchMode;
|
|
pub use codex_protocol::dynamic_tools::DynamicToolSpec;
|
|
pub use codex_protocol::error::Result as CodexResult;
|
|
pub use codex_protocol::models::PermissionProfile;
|
|
pub use codex_protocol::openai_models::ModelPreset;
|
|
pub use codex_protocol::protocol::AskForApproval;
|
|
pub use codex_protocol::protocol::EventMsg;
|
|
pub use codex_protocol::protocol::InitialHistory;
|
|
pub use codex_protocol::protocol::McpServerRefreshConfig;
|
|
pub use codex_protocol::protocol::Op;
|
|
pub use codex_protocol::protocol::SessionConfiguredEvent;
|
|
pub use codex_protocol::protocol::SessionSource;
|
|
pub use codex_protocol::protocol::TurnEnvironmentSelection;
|
|
pub use codex_protocol::protocol::W3cTraceContext;
|
|
pub use codex_protocol::user_input::UserInput;
|
|
pub use codex_utils_absolute_path::AbsolutePathBuf;
|