Skip to content

codex-tools: extract local host tool specs#16138

Merged
bolinfest merged 1 commit intomainfrom
pr16138
Mar 28, 2026
Merged

codex-tools: extract local host tool specs#16138
bolinfest merged 1 commit intomainfrom
pr16138

Conversation

@bolinfest
Copy link
Copy Markdown
Collaborator

@bolinfest bolinfest commented Mar 28, 2026

Why

core/src/tools/spec.rs still bundled a set of pure local-host tool builders with the orchestration that actually decides when those tools are exposed and which handlers back them. That made codex-core responsible for JSON/tool-shape construction that does not depend on session state, and it kept the codex-tools migration from taking a meaningfully larger bite out of spec.rs.

This PR moves that reusable spec-building layer into codex-tools while leaving feature gating, handler registration, and runtime-coupled descriptions in codex-core.

What changed

  • added codex-rs/tools/src/local_tool.rs for the pure builders for exec_command, write_stdin, shell, shell_command, and request_permissions
  • added codex-rs/tools/src/view_image.rs for the view_image tool spec and output schema so the extracted modules stay right-sized
  • rewired codex-rs/core/src/tools/spec.rs to call those extracted builders instead of constructing these specs inline
  • kept the request_permissions description source in codex-core, with codex-tools taking the description as input so the crate boundary does not grow a dependency on handler/runtime code
  • moved the direct constructor coverage for this slice from codex-rs/core/src/tools/spec_tests.rs into codex-rs/tools/src/local_tool_tests.rs and codex-rs/tools/src/view_image_tests.rs
  • updated codex-rs/tools/README.md to reflect that codex-tools now owns this local-host spec layer

Test plan

  • CARGO_TARGET_DIR=/tmp/codex-tools-local-host cargo test -p codex-tools
  • CARGO_TARGET_DIR=/tmp/codex-core-local-tools cargo test -p codex-core --lib tools::spec::
  • just argument-comment-lint

References

@bolinfest bolinfest merged commit 4e119a3 into main Mar 28, 2026
22 checks passed
@bolinfest bolinfest deleted the pr16138 branch March 28, 2026 23:34
@github-actions github-actions bot locked and limited conversation to collaborators Mar 28, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

1 participant