mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
a99d4845e3
## Why `codex-core` already owns too much of the tool stack, and `AGENTS.md` explicitly pushes us to move shared code out of `codex-core` instead of letting it keep growing. This PR takes the next incremental step in moving `core/src/tools` toward `codex-rs/tools` by extracting low-coupling tool configuration and image-detail gating logic into `codex-tools`. That gives later extraction work a cleaner boundary to build on without trying to move the entire tools subtree in one shot. ## What changed - moved `ToolsConfig`, `ToolsConfigParams`, shell backend config, and unified-exec session selection from `core/src/tools/spec.rs` into `codex-tools` - moved original image-detail gating and normalization into `codex-tools` - updated `codex-core` to consume the new `codex-tools` exports and pass a rendered agent-type description instead of raw role config - kept `codex-rs/tools/src/lib.rs` exports-only, with extracted unit tests living in sibling `*_tests.rs` modules ## Testing - `cargo test -p codex-tools` - `cargo test -p codex-core --lib tools::spec::`
26 lines
791 B
Rust
26 lines
791 B
Rust
use codex_features::Feature;
|
|
use codex_features::Features;
|
|
use codex_protocol::models::ImageDetail;
|
|
use codex_protocol::openai_models::ModelInfo;
|
|
|
|
pub fn can_request_original_image_detail(features: &Features, model_info: &ModelInfo) -> bool {
|
|
model_info.supports_image_detail_original && features.enabled(Feature::ImageDetailOriginal)
|
|
}
|
|
|
|
pub fn normalize_output_image_detail(
|
|
features: &Features,
|
|
model_info: &ModelInfo,
|
|
detail: Option<ImageDetail>,
|
|
) -> Option<ImageDetail> {
|
|
match detail {
|
|
Some(ImageDetail::Original) if can_request_original_image_detail(features, model_info) => {
|
|
Some(ImageDetail::Original)
|
|
}
|
|
Some(ImageDetail::Original) | Some(_) | None => None,
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
#[path = "image_detail_tests.rs"]
|
|
mod tests;
|