Implement a class that represents a stateful conversational agent, demonstrating proper encapsulation and error handling. The agent must maintain a current user and conversation history while exposing behavior through public methods rather than direct state access. Implement run_conversation(commands) to execute command dictionaries and return one result per command. Supported commands are set_user, send, and reset; invalid commands, missing users, and empty messages must return structured errors instead of raising exceptions. For example, setting user Ada followed by sending hello returns a successful greeting.
def run_conversation(commands):