diff --git a/agent1.py b/agent1.py index 4586357..ca2fc24 100644 --- a/agent1.py +++ b/agent1.py @@ -202,26 +202,35 @@ def _handle_agent_command(text: str) -> tuple: return False, None # ── MISE À JOUR DEPUIS GIT ─────────────────────────────────────────────── -def _get_agent_git_info(name: str) -> dict | None: - """Retourne {install_path, service_name, git_branch} depuis le registre, ou None.""" +def _get_agent_git_info(name: str) -> dict: + """ + Retourne {install_path, service_name, git_branch} pour un agent. + Priorité : registre → convention /opt/ (fallback automatique). + """ try: registry = json.loads(REGISTRY_FILE.read_text(encoding="utf-8")) agent = registry.get(name, {}) - if "install_path" not in agent: - return None - return { - "install_path": agent["install_path"], - "service_name": agent.get("service_name", name), - "git_branch" : agent.get("git_branch", "main"), - } except Exception: - return None + agent = {} + + # Fallback : déduire depuis le nom de l'agent (convention /opt/) + # agent1 est un cas particulier : /opt/agent, service "agent" + if name == "agent1": + default_path = "/opt/agent" + default_service = "agent" + else: + default_path = "/opt/{}".format(name) + default_service = name + + return { + "install_path": agent.get("install_path", default_path), + "service_name": agent.get("service_name", default_service), + "git_branch" : agent.get("git_branch", "main"), + } def _handle_update_one(name: str) -> str: from skills.agent_update import check_update info = _get_agent_git_info(name) - if not info: - return "[{}] Infos git absentes du registre (install_path manquant).".format(name) return check_update(name, info["install_path"], info["git_branch"]) def _handle_update_all() -> str: @@ -231,17 +240,14 @@ def _handle_update_all() -> str: except Exception: return "Erreur lecture registre." results = [] - for name, info in registry.items(): - if "install_path" not in info: - continue - results.append(check_update(name, info["install_path"], info.get("git_branch", "main"))) - return "\n\n".join(results) if results else "Aucun agent avec install_path dans le registre." + for name in registry: + info = _get_agent_git_info(name) + results.append(check_update(name, info["install_path"], info["git_branch"])) + return "\n\n".join(results) if results else "Aucun agent dans le registre." def _handle_upgrade_one(name: str) -> str: from skills.agent_update import do_upgrade info = _get_agent_git_info(name) - if not info: - return "[{}] Infos git absentes du registre.".format(name) self_upgrade = (name == "agent1") msg = do_upgrade(name, info["install_path"], info["service_name"], info["git_branch"], self_upgrade=self_upgrade) @@ -264,14 +270,13 @@ def _handle_upgrade_all() -> str: results = [] agent1_info = None - for name, info in registry.items(): - if "install_path" not in info: - continue + for name in registry: + info = _get_agent_git_info(name) if name == "agent1": agent1_info = (name, info) # traiter en dernier continue msg = do_upgrade(name, info["install_path"], - info.get("service_name", name), info.get("git_branch", "main")) + info["service_name"], info["git_branch"]) results.append(msg) summary = "\n\n".join(results) if results else "Aucun agent mis à jour." @@ -279,7 +284,7 @@ def _handle_upgrade_all() -> str: if agent1_info: name, info = agent1_info pull_msg = do_upgrade(name, info["install_path"], - info.get("service_name", "agent"), info.get("git_branch", "main"), + info["service_name"], info["git_branch"], self_upgrade=True) summary += "\n\n" + pull_msg if xmpp_bot: