pub async fn execute_tool( name: &str, args_val: &Map<String, Value>, undo_stack: &mut Vec<UndoAction>, agent_cwd: Option<&Path>, ) -> Result<String>