From 7f5944180d7c6312e27f331ecce1c6f413bb4cb5 Mon Sep 17 00:00:00 2001 From: Friel Date: Mon, 30 Mar 2026 07:49:11 +0000 Subject: [PATCH] test(core): handle namespaced spawn_agent description --- .../tests/suite/spawn_agent_description.rs | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/codex-rs/core/tests/suite/spawn_agent_description.rs b/codex-rs/core/tests/suite/spawn_agent_description.rs index e27e3466f7..9623d7164b 100644 --- a/codex-rs/core/tests/suite/spawn_agent_description.rs +++ b/codex-rs/core/tests/suite/spawn_agent_description.rs @@ -30,19 +30,30 @@ use tokio::time::sleep; const SPAWN_AGENT_TOOL_NAME: &str = "spawn_agent"; +fn find_tool_description(tool: &Value, name: &str) -> Option { + if tool.get("name").and_then(Value::as_str) == Some(name) { + return tool + .get("description") + .and_then(Value::as_str) + .map(str::to_string); + } + + tool.get("tools") + .and_then(Value::as_array) + .and_then(|tools| { + tools + .iter() + .find_map(|tool| find_tool_description(tool, name)) + }) +} + fn spawn_agent_description(body: &Value) -> Option { body.get("tools") .and_then(Value::as_array) .and_then(|tools| { - tools.iter().find_map(|tool| { - if tool.get("name").and_then(Value::as_str) == Some(SPAWN_AGENT_TOOL_NAME) { - tool.get("description") - .and_then(Value::as_str) - .map(str::to_string) - } else { - None - } - }) + tools + .iter() + .find_map(|tool| find_tool_description(tool, SPAWN_AGENT_TOOL_NAME)) }) }