Expand description
tools run — resolve a tool by (owner, name, version), build its
command from the current platform’s exec vector + the caller’s
args, run it with the tool’s version folder’s cli/ subdir as the
working directory (per resolve_tool), and yield each
stdout/stderr line as a ResponseItem as it arrives. A non-zero
exit code surfaces as a final Err(Error::ToolExit(code)).