mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
Extract code-mode nested tool collection into codex-tools (#16509)
## Why This is another small step in the `codex-core` -> `codex-tools` migration described in `AGENTS.md`. `core/src/tools/spec.rs` and `core/src/tools/code_mode/mod.rs` were both hand-rolling the same pure transformation: convert visible `ToolSpec`s into code-mode nested tool definitions, then sort and deduplicate by tool name. That logic does not depend on core runtime state or handlers, so keeping it in `codex-core` makes `spec.rs` harder to peel out later than it needs to be. ## What Changed - Add `collect_code_mode_tool_definitions()` to `codex-rs/tools/src/code_mode.rs`. - Reuse that helper from `codex-rs/core/src/tools/spec.rs` when assembling the `exec` tool description. - Reuse the same helper from `codex-rs/core/src/tools/code_mode/mod.rs` when exposing nested tool metadata to the code-mode runtime. This is intended to be a straight refactor with no behavior change and no new test surface. ## Verification - `cargo test -p codex-tools` - `cargo test -p codex-core tools::spec::tests` - `cargo test -p codex-core code_mode_only_`
This commit is contained in:
committed by
GitHub
Unverified
parent
cc97982bbb
commit
9f71d57a65
@@ -28,7 +28,7 @@ use crate::tools::router::ToolRouterParams;
|
||||
use crate::unified_exec::resolve_max_tokens;
|
||||
use codex_features::Feature;
|
||||
use codex_tools::ToolSpec;
|
||||
use codex_tools::tool_spec_to_code_mode_tool_definition;
|
||||
use codex_tools::collect_code_mode_tool_definitions;
|
||||
use codex_utils_output_truncation::TruncationPolicy;
|
||||
use codex_utils_output_truncation::formatted_truncate_text_content_items_with_policy;
|
||||
use codex_utils_output_truncation::truncate_function_output_items_with_policy;
|
||||
@@ -244,14 +244,8 @@ pub(super) async fn build_enabled_tools(
|
||||
exec: &ExecContext,
|
||||
) -> Vec<codex_code_mode::ToolDefinition> {
|
||||
let router = build_nested_router(exec).await;
|
||||
let mut out = router
|
||||
.specs()
|
||||
.into_iter()
|
||||
.filter_map(|spec| tool_spec_to_code_mode_tool_definition(&spec))
|
||||
.collect::<Vec<_>>();
|
||||
out.sort_by(|left, right| left.name.cmp(&right.name));
|
||||
out.dedup_by(|left, right| left.name == right.name);
|
||||
out
|
||||
let specs = router.specs();
|
||||
collect_code_mode_tool_definitions(&specs)
|
||||
}
|
||||
|
||||
async fn build_nested_router(exec: &ExecContext) -> ToolRouter {
|
||||
|
||||
Reference in New Issue
Block a user