diff --git a/.agents/skills/multi-agent-mux-status/scripts/status.sh b/.agents/skills/multi-agent-mux-status/scripts/status.sh index 6a2dd1b..9026fe8 100755 --- a/.agents/skills/multi-agent-mux-status/scripts/status.sh +++ b/.agents/skills/multi-agent-mux-status/scripts/status.sh @@ -127,6 +127,17 @@ def _sanitize(n): return n return f"{n[:16]}-{n[-15:]}"[:32] +def is_alive(name, server): + if f"{name}|{server}" in alive or f"{_sanitize(name)}|{server}" in alive: + return True + prefix = name[:14] + suffix = name[-12:] + for item in alive: + a_name, a_srv = item.split("|", 1) if "|" in item else (item, "default") + if a_srv == server and a_name.startswith(prefix) and a_name.endswith(suffix): + return True + return False + for s in d.get('herdr_sessions', []): name = s.get('name', '?') server = s.get('herdr_session') or s.get('herdr_server') or s.get('herdr_workspace') or 'default' @@ -139,7 +150,7 @@ for s in d.get('herdr_sessions', []): 'name': name, 'server': server, 'status': s.get('status', '?'), - 'herdr_alive': f"{name}|{server}" in alive or f"{_sanitize(name)}|{server}" in alive, + 'herdr_alive': is_alive(name, server), 'cmd': pane.get('cmd'), 'role': s.get('role'), 'resume_state': resume_on_disk(s), @@ -236,11 +247,22 @@ print(f"{'NAME':<44} {'WORKSPACE':<12} {'YAML':<10} {'HERDR':<6} {'CMD':<6} {'RE print("-" * 136) if not sessions: print("(no sessions registered)") +def is_alive(name, server): + if f"{name}|{server}" in alive or f"{_sanitize(name)}|{server}" in alive: + return True + prefix = name[:14] + suffix = name[-12:] + for item in alive: + a_name, a_srv = item.split("|", 1) if "|" in item else (item, "default") + if a_srv == server and a_name.startswith(prefix) and a_name.endswith(suffix): + return True + return False + for s in sessions: name = s.get('name', '?') server = s.get('herdr_session') or s.get('herdr_server') or s.get('herdr_workspace') or 'default' status = s.get('status', '?') - herdr = 'alive' if (f"{name}|{server}" in alive or f"{_sanitize(name)}|{server}" in alive) else 'dead' + herdr = 'alive' if is_alive(name, server) else 'dead' cmd = (s.get('pane') or {}).get('cmd', '?') res = resume_on_disk(s) jid, jstatus = get_job_status(s)