diff --git a/codex-rs/core/src/tools/handlers/mod.rs b/codex-rs/core/src/tools/handlers/mod.rs index bced9b3546..629dcfc9f5 100644 --- a/codex-rs/core/src/tools/handlers/mod.rs +++ b/codex-rs/core/src/tools/handlers/mod.rs @@ -80,6 +80,18 @@ where parse_arguments(arguments) } +fn resolve_workdir_base_path( + arguments: &str, + cwd: &AbsolutePathBuf, +) -> Result { + let target_args: EnvironmentTargetArgs = parse_arguments(arguments)?; + Ok(target_args + .workdir + .as_deref() + .filter(|workdir| !workdir.is_empty()) + .map_or_else(|| cwd.clone(), |workdir| cwd.join(workdir))) +} + #[derive(Debug, Deserialize)] struct EnvironmentTargetArgs { #[serde(default)]