defrun(self):model=get_model(config=self.config["config"]["model"])self.agent=ClashAgent(model=model,env=self.environment,logger=self.logger,**self.config["config"]["agent"],)exit_status=Noneexc_message=Nonetry:result=self.agent.run(task="",**self.game_context.to_template_vars())exit_status=result.get("exit_status","")exceptExceptionase:exit_status=str(e)exc_message=traceback.format_exc()self.logger.critical(exc_message)finally:traj_path=(self.game_context.log_local/"players"/self.name/f"{self.name}_r{self.game_context.round}.traj.json")self.agent.save(traj_path)copy_to_container(self.environment,traj_path,self.game_context.log_env/"edits"/traj_path.name,)self._metadata["agent_stats"][self.game_context.round]={"exit_status":exit_status,"cost":self.agent.cost,"api_calls":self.agent.n_calls,}ifexit_status.lower().strip()notin["","submitted","limitsexceeded"]andexc_messageisnotNone:raiseRuntimeError(f"Agent {self.name} failed with exit status: {exit_status} and exception: {exc_message}")