diff --git a/agents_core/base_agent.py b/agents_core/base_agent.py index ce1c3f7..d90bf45 100644 --- a/agents_core/base_agent.py +++ b/agents_core/base_agent.py @@ -559,12 +559,37 @@ class BaseAgent(ABC): all_agents = [a.agent_id for a in self.registry.all_agents()] return f"Agents en ligne : {online}\nAgents connus : {all_agents}" + if cmd == "script": + return self._handle_script_command(args, source_msg) + if cmd == "update": return self._do_self_update(source_msg) # Commandes custom de l'agent return self.handle_custom_command(cmd, args, source_msg) + # ────────────────────────────────────────────── + # Commande script directe (bypass LLM) + # ────────────────────────────────────────────── + + def _handle_script_command(self, args: str, source_msg: Optional[Message] = None) -> str: + """ + Exécute une commande script sans passer par le LLM. + args : 'exec [args]' | 'list' | 'show ' | 'run | ' + """ + context = AgentContext(self) + result = self.skills.run("script", args, context) + if result is None: + result = f"[{self.agent_id}] Skill 'script' non disponible." + + # Renvoi MQTT si la commande vient d'un autre agent + if source_msg and source_msg.reply_to: + try: + self.mqtt.reply(source_msg, result) + except Exception as e: + logger.debug(f"[Script] Impossible d'envoyer la réponse : {e}") + return result + # ────────────────────────────────────────────── # Mise à jour self # ──────────────────────────────────────────────