Skip to content

Commit 2f28488

Browse files
Gregg CochranCopilot
andcommitted
Align terminal Pulse hierarchy labels
Map terminal commander result statuses onto commander and sub-agent summary rows, and prefer swarm-state totals over ledger-tail counts so completed Agent Conductor runs do not display stale or undercounted hierarchy rows. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent c2a336a commit 2f28488

1 file changed

Lines changed: 74 additions & 24 deletions

File tree

agent_pulse.py

Lines changed: 74 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,20 @@
120120
TERMINAL_COMMANDER_STATUSES = {"success", "partial", "complete", "completed", "done", "failed", "error", "blocked"}
121121
TERMINAL_SUCCESS_COMMANDER_STATUSES = {"success", "partial", "complete", "completed", "done"}
122122

123+
124+
def terminal_commander_status_label(status: str) -> str:
125+
normalized = (status or "").lower()
126+
if normalized == "blocked":
127+
return "BLOCKED"
128+
if normalized in {"failed", "error"}:
129+
return "FAILED"
130+
if normalized == "partial":
131+
return "PARTIAL"
132+
if normalized in TERMINAL_SUCCESS_COMMANDER_STATUSES:
133+
return "DONE"
134+
return "STALE"
135+
136+
123137
_SPARK_CHARS = "▁▂▃▄▅▆▇█"
124138
_WAVE_CHARS = "▁▂▃▄▅▆▇█▇▆▅▄▃▂▁"
125139
_HEARTBEATS = ["💗", "💖", "💓", "❤️", "💓", "💗"]
@@ -1383,15 +1397,57 @@ def metric_int(*values: object, default: int = 0) -> int:
13831397
commander_state.get("atoms_received"),
13841398
),
13851399
heartbeat_age_s=heartbeat_age,
1386-
child_agents_seen=int(child_counts.get("total") or 0),
1400+
child_agents_seen=max(
1401+
int(child_counts.get("total") or 0),
1402+
metric_int(
1403+
telemetry.get("squad_leads_launched"),
1404+
commander_state.get("squad_leads_launched"),
1405+
)
1406+
+ metric_int(
1407+
telemetry.get("workers_launched"),
1408+
commander_state.get("workers_launched"),
1409+
),
1410+
),
13871411
child_agents_running=child_in_progress if commander_active else 0,
1388-
child_agents_completed=int(child_counts.get("completed") or 0),
1389-
child_agents_failed=int(child_counts.get("failed") or 0),
1390-
child_agents_stale=0 if commander_active else child_in_progress,
1412+
child_agents_completed=max(
1413+
int(child_counts.get("completed") or 0),
1414+
metric_int(
1415+
telemetry.get("squad_leads_completed"),
1416+
commander_state.get("squad_leads_completed"),
1417+
)
1418+
+ metric_int(
1419+
telemetry.get("workers_completed"),
1420+
commander_state.get("workers_completed"),
1421+
),
1422+
),
1423+
child_agents_failed=max(
1424+
int(child_counts.get("failed") or 0),
1425+
metric_int(
1426+
telemetry.get("squad_leads_failed"),
1427+
commander_state.get("squad_leads_failed"),
1428+
)
1429+
+ metric_int(
1430+
telemetry.get("workers_failed"),
1431+
commander_state.get("workers_failed"),
1432+
),
1433+
),
1434+
child_agents_stale=0 if commander_active or status_text in TERMINAL_COMMANDER_STATUSES else child_in_progress,
13911435
division_commanders_seen=int(child_counts.get("division_commanders") or 0),
13921436
commanders_seen=int(child_counts.get("commanders") or 0),
1393-
squad_leads_seen=int(child_counts.get("squad_leads") or 0),
1394-
workers_seen=int(child_counts.get("workers") or 0),
1437+
squad_leads_seen=max(
1438+
int(child_counts.get("squad_leads") or 0),
1439+
metric_int(
1440+
telemetry.get("squad_leads_launched"),
1441+
commander_state.get("squad_leads_launched"),
1442+
),
1443+
),
1444+
workers_seen=max(
1445+
int(child_counts.get("workers") or 0),
1446+
metric_int(
1447+
telemetry.get("workers_launched"),
1448+
commander_state.get("workers_launched"),
1449+
),
1450+
),
13951451
reviewers_seen=int(child_counts.get("reviewers") or 0),
13961452
other_children_seen=int(child_counts.get("other") or 0),
13971453
recent_children=recent_children,
@@ -1493,12 +1549,8 @@ def live_agents(self, metaswarm_runs: Optional[List[MetaswarmRun]] = None) -> Li
14931549
)
14941550
)
14951551
if commander_agent_id not in seen_stampede_agents:
1496-
if commander.status == "blocked":
1497-
commander_status = "BLOCKED"
1498-
elif commander.status in {"failed", "error"}:
1499-
commander_status = "FAILED"
1500-
elif commander.status in {"success", "done", "completed"}:
1501-
commander_status = "DONE"
1552+
if commander_status_text in TERMINAL_COMMANDER_STATUSES:
1553+
commander_status = terminal_commander_status_label(commander_status_text)
15021554
elif commander_active:
15031555
commander_status = "RUN"
15041556
else:
@@ -1516,7 +1568,14 @@ def live_agents(self, metaswarm_runs: Optional[List[MetaswarmRun]] = None) -> Li
15161568
)
15171569
)
15181570
if commander.child_agents_seen:
1519-
summary_status = "RUN" if commander_active and commander.child_agents_running else "STALE" if commander.child_agents_stale else "DONE"
1571+
if commander_status_text in TERMINAL_COMMANDER_STATUSES:
1572+
summary_status = terminal_commander_status_label(commander_status_text)
1573+
elif commander_active and commander.child_agents_running:
1574+
summary_status = "RUN"
1575+
elif commander.child_agents_stale:
1576+
summary_status = "STALE"
1577+
else:
1578+
summary_status = "DONE"
15201579
live.append(
15211580
LiveAgent(
15221581
source="metaswarm",
@@ -1525,7 +1584,7 @@ def live_agents(self, metaswarm_runs: Optional[List[MetaswarmRun]] = None) -> Li
15251584
name=(
15261585
f"sub-agents {commander.child_agents_seen} "
15271586
f"(div {commander.division_commanders_seen}, cmd {commander.commanders_seen}, "
1528-
f"sq {commander.squad_leads_seen}, sub {commander.workers_seen}, "
1587+
f"sq {commander.squad_leads_seen}, workers {commander.workers_seen}, "
15291588
f"rev {commander.reviewers_seen}, other {commander.other_children_seen}; "
15301589
f"run {commander.child_agents_running}, stale {commander.child_agents_stale}, "
15311590
f"done {commander.child_agents_completed}, fail {commander.child_agents_failed})"
@@ -2038,16 +2097,7 @@ def _model_from_cmd(cmd: str) -> Optional[str]:
20382097

20392098
@staticmethod
20402099
def _terminal_commander_status(status: str) -> str:
2041-
normalized = (status or "").lower()
2042-
if normalized == "blocked":
2043-
return "BLOCKED"
2044-
if normalized in {"failed", "error"}:
2045-
return "FAILED"
2046-
if normalized == "partial":
2047-
return "PARTIAL"
2048-
if normalized in TERMINAL_SUCCESS_COMMANDER_STATUSES:
2049-
return "DONE"
2050-
return "STALE"
2100+
return terminal_commander_status_label(status)
20512101

20522102
@staticmethod
20532103
def _stampede_commander_key(agent: LiveAgent) -> Optional[Tuple[str, str]]:

0 commit comments

Comments
 (0)