mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
1d65ccabd5
## Why Config layer provenance describes how effective configuration was assembled, so it belongs with the config loader rather than in app-server's serialized API types. ## What changed - Moved `ConfigLayerSource`, `ConfigLayerMetadata`, and `ConfigLayer` ownership into `codex-config`. - Kept app-server's wire payloads unchanged and added explicit conversions at the app boundary. - Removed lower-level app-server-protocol dependencies from config consumers. ## Stack This is PR 3 of 6, stacked on [PR #29721](https://github.com/openai/codex/pull/29721). Review only the delta from `codex/split-auth-domain-types`. Next: [PR #29723](https://github.com/openai/codex/pull/29723). ## Validation - `codex-config` coverage passed. - App-server config-manager and config RPC coverage passed.
64 lines
2.9 KiB
Rust
64 lines
2.9 KiB
Rust
use codex_app_server_protocol::ConfigLayer as ApiConfigLayer;
|
|
use codex_app_server_protocol::ConfigLayerMetadata as ApiConfigLayerMetadata;
|
|
use codex_app_server_protocol::ConfigLayerSource as ApiConfigLayerSource;
|
|
use codex_config::ConfigLayer;
|
|
use codex_config::ConfigLayerMetadata;
|
|
use codex_config::ConfigLayerSource;
|
|
|
|
/// Converts a config-layer source owned by `codex-config` into the app-server wire type owned by
|
|
/// `codex-app-server-protocol`.
|
|
///
|
|
/// The types stay separate so app-server protocol ownership does not leak into the config domain
|
|
/// crate. Because this crate owns neither type, Rust's orphan rules require an explicit conversion
|
|
/// function instead of a `From` implementation.
|
|
pub(crate) fn config_layer_source_to_api(source: ConfigLayerSource) -> ApiConfigLayerSource {
|
|
match source {
|
|
ConfigLayerSource::Mdm { domain, key } => ApiConfigLayerSource::Mdm { domain, key },
|
|
ConfigLayerSource::System { file } => ApiConfigLayerSource::System { file },
|
|
ConfigLayerSource::EnterpriseManaged { id, name } => {
|
|
ApiConfigLayerSource::EnterpriseManaged { id, name }
|
|
}
|
|
ConfigLayerSource::User { file, profile } => ApiConfigLayerSource::User { file, profile },
|
|
ConfigLayerSource::Project { dot_codex_folder } => {
|
|
ApiConfigLayerSource::Project { dot_codex_folder }
|
|
}
|
|
ConfigLayerSource::SessionFlags => ApiConfigLayerSource::SessionFlags,
|
|
ConfigLayerSource::LegacyManagedConfigTomlFromFile { file } => {
|
|
ApiConfigLayerSource::LegacyManagedConfigTomlFromFile { file }
|
|
}
|
|
ConfigLayerSource::LegacyManagedConfigTomlFromMdm => {
|
|
ApiConfigLayerSource::LegacyManagedConfigTomlFromMdm
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Converts config-layer metadata owned by `codex-config` into the app-server wire type owned by
|
|
/// `codex-app-server-protocol`.
|
|
///
|
|
/// The types stay separate so app-server protocol ownership does not leak into the config domain
|
|
/// crate. Because this crate owns neither type, Rust's orphan rules require an explicit conversion
|
|
/// function instead of a `From` implementation.
|
|
pub(crate) fn config_layer_metadata_to_api(
|
|
metadata: ConfigLayerMetadata,
|
|
) -> ApiConfigLayerMetadata {
|
|
ApiConfigLayerMetadata {
|
|
name: config_layer_source_to_api(metadata.name),
|
|
version: metadata.version,
|
|
}
|
|
}
|
|
|
|
/// Converts a config layer owned by `codex-config` into the app-server wire type owned by
|
|
/// `codex-app-server-protocol`.
|
|
///
|
|
/// The types stay separate so app-server protocol ownership does not leak into the config domain
|
|
/// crate. Because this crate owns neither type, Rust's orphan rules require an explicit conversion
|
|
/// function instead of a `From` implementation.
|
|
pub(crate) fn config_layer_to_api(layer: ConfigLayer) -> ApiConfigLayer {
|
|
ApiConfigLayer {
|
|
name: config_layer_source_to_api(layer.name),
|
|
version: layer.version,
|
|
config: layer.config,
|
|
disabled_reason: layer.disabled_reason,
|
|
}
|
|
}
|