[codex] Outline ToolExecutor handler bodies (#27299)

## Why

We're now [discouraging use of
`async_trait`](https://github.com/openai/codex/pull/20242).

Removing use of `async_trait` from `ToolExecutor` yields a `codex_core`
debug test build speedup of ~78% (from 227.5s to 50.3s) on my machine.

For ease of reviewing, this is a prefactor to extract trait method
implementations to inherent methods. This will prevent changing
indentation from creating a huge diff.

## What

Outlined existing `ToolExecutor::handle` bodies into inherent async
`handle_call` methods across core and extension tool handlers.

The trait methods still use `async_trait` and now delegate to
`self.handle_call(...).await`; handler behavior is unchanged.
This commit is contained in:
Adam Perry @ OpenAI authored and GitHub committed 2026-06-10 09:40:41 -07:00
1 parent c365b8a4ab
commit db531b4a6c
37 files changed
+351

No files matched your search

+9
View File
@@ -76,6 +76,15 @@ impl ToolExecutor<ExtensionToolCall> for ExtensionEchoExecutor {
async fn handle(
&self,
call: ExtensionToolCall,
) -> Result<Box<dyn codex_tools::ToolOutput>, codex_tools::FunctionCallError> {
self.handle_call(call).await
}
}
impl ExtensionEchoExecutor {
async fn handle_call(
&self,
call: ExtensionToolCall,
) -> Result<Box<dyn codex_tools::ToolOutput>, codex_tools::FunctionCallError> {
let arguments: serde_json::Value =
serde_json::from_str(call.function_arguments()?).expect("test arguments should parse");