fix: Convert dictionary views to lists for stable iteration over agents and tool executions.

This commit is contained in:
Vincent550102
2025-12-09 16:07:58 +08:00
committed by Ahmed Allam
parent 62cca3f149
commit 6fc592b4e8
2 changed files with 5 additions and 5 deletions

View File

@@ -472,7 +472,7 @@ class StrixTUIApp(App): # type: ignore[misc]
return return
agent_updates = False agent_updates = False
for agent_id, agent_data in self.tracer.agents.items(): for agent_id, agent_data in list(self.tracer.agents.items()):
if agent_id not in self._displayed_agents: if agent_id not in self._displayed_agents:
self._add_agent_node(agent_data) self._add_agent_node(agent_data)
self._displayed_agents.add(agent_id) self._displayed_agents.add(agent_id)
@@ -750,7 +750,7 @@ class StrixTUIApp(App): # type: ignore[misc]
def _animate_dots(self) -> None: def _animate_dots(self) -> None:
has_active_agents = False has_active_agents = False
for agent_id, agent_data in self.tracer.agents.items(): for agent_id, agent_data in list(self.tracer.agents.items()):
status = agent_data.get("status", "running") status = agent_data.get("status", "running")
if status in ["running", "waiting"]: if status in ["running", "waiting"]:
has_active_agents = True has_active_agents = True
@@ -959,7 +959,7 @@ class StrixTUIApp(App): # type: ignore[misc]
def _reorganize_orphaned_agents(self, new_parent_id: str) -> None: def _reorganize_orphaned_agents(self, new_parent_id: str) -> None:
agents_to_move = [] agents_to_move = []
for agent_id, agent_data in self.tracer.agents.items(): for agent_id, agent_data in list(self.tracer.agents.items()):
if ( if (
agent_data.get("parent_id") == new_parent_id agent_data.get("parent_id") == new_parent_id
and agent_id in self.agent_nodes and agent_id in self.agent_nodes

View File

@@ -291,14 +291,14 @@ class Tracer:
def get_agent_tools(self, agent_id: str) -> list[dict[str, Any]]: def get_agent_tools(self, agent_id: str) -> list[dict[str, Any]]:
return [ return [
exec_data exec_data
for exec_data in self.tool_executions.values() for exec_data in list(self.tool_executions.values())
if exec_data.get("agent_id") == agent_id if exec_data.get("agent_id") == agent_id
] ]
def get_real_tool_count(self) -> int: def get_real_tool_count(self) -> int:
return sum( return sum(
1 1
for exec_data in self.tool_executions.values() for exec_data in list(self.tool_executions.values())
if exec_data.get("tool_name") not in ["scan_start_info", "subagent_start_info"] if exec_data.get("tool_name") not in ["scan_start_info", "subagent_start_info"]
) )