!agentUPDATE/UPGRADE : fallback automatique sur /opt/<nom> si install_path absent
_get_agent_git_info déduit le chemin depuis le nom de l'agent par convention (/opt/<nom>, service <nom>) au lieu de bloquer avec une erreur. !agentsUPDATE/UPGRADE couvre tous les agents du registre sans filtre. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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/<nom> (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
|
||||
except Exception:
|
||||
agent = {}
|
||||
|
||||
# Fallback : déduire depuis le nom de l'agent (convention /opt/<nom>)
|
||||
# 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["install_path"],
|
||||
"service_name": agent.get("service_name", name),
|
||||
"install_path": agent.get("install_path", default_path),
|
||||
"service_name": agent.get("service_name", default_service),
|
||||
"git_branch" : agent.get("git_branch", "main"),
|
||||
}
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
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:
|
||||
|
||||
Reference in New Issue
Block a user