From 6fc592b4e8d88c3a191ee006a0572d8ec065fd57 Mon Sep 17 00:00:00 2001 From: Vincent550102 <5020559@gmail.com> Date: Tue, 9 Dec 2025 16:07:58 +0800 Subject: [PATCH] fix: Convert dictionary views to lists for stable iteration over agents and tool executions. --- strix/interface/tui.py | 6 +++--- strix/telemetry/tracer.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/strix/interface/tui.py b/strix/interface/tui.py index 2f328f6..dc01f9f 100644 --- a/strix/interface/tui.py +++ b/strix/interface/tui.py @@ -472,7 +472,7 @@ class StrixTUIApp(App): # type: ignore[misc] return 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: self._add_agent_node(agent_data) self._displayed_agents.add(agent_id) @@ -750,7 +750,7 @@ class StrixTUIApp(App): # type: ignore[misc] def _animate_dots(self) -> None: 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") if status in ["running", "waiting"]: has_active_agents = True @@ -959,7 +959,7 @@ class StrixTUIApp(App): # type: ignore[misc] def _reorganize_orphaned_agents(self, new_parent_id: str) -> None: 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 ( agent_data.get("parent_id") == new_parent_id and agent_id in self.agent_nodes diff --git a/strix/telemetry/tracer.py b/strix/telemetry/tracer.py index 6da30d5..63781bc 100644 --- a/strix/telemetry/tracer.py +++ b/strix/telemetry/tracer.py @@ -291,14 +291,14 @@ class Tracer: def get_agent_tools(self, agent_id: str) -> list[dict[str, Any]]: return [ 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 ] def get_real_tool_count(self) -> int: return sum( 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"] )