From d0cbaec173cf8617b821a7c5713a6ca29f5d7b12 Mon Sep 17 00:00:00 2001 From: Matthew Flanagan <188046+mattimustang@users.noreply.github.com> Date: Fri, 22 May 2026 12:44:52 +1000 Subject: [PATCH] perf(tui): index chat_messages by agent to eliminate O(N) scan per frame --- strix/interface/tui.py | 3 +-- strix/telemetry/tracer.py | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/strix/interface/tui.py b/strix/interface/tui.py index 086701bbe..a8a71cbdc 100644 --- a/strix/interface/tui.py +++ b/strix/interface/tui.py @@ -1477,8 +1477,7 @@ class StrixTUIApp(App): # type: ignore[misc] "id": f"chat_{msg['message_id']}", "data": msg, } - for msg in self.tracer.chat_messages - if msg.get("agent_id") == agent_id + for msg in self.tracer.chat_messages_by_agent.get(agent_id, []) ] agent_data = self.tracer.agents.get(agent_id, {}) diff --git a/strix/telemetry/tracer.py b/strix/telemetry/tracer.py index 3f3ca6c69..eb4c0d7ac 100644 --- a/strix/telemetry/tracer.py +++ b/strix/telemetry/tracer.py @@ -57,6 +57,7 @@ class Tracer: self.agents: dict[str, dict[str, Any]] = {} self.tool_executions: dict[int, dict[str, Any]] = {} self.chat_messages: list[dict[str, Any]] = [] + self.chat_messages_by_agent: dict[str, list[dict[str, Any]]] = {} self.streaming_content: dict[str, str] = {} self.interrupted_content: dict[str, str] = {} @@ -474,6 +475,7 @@ class Tracer: } self.chat_messages.append(message_data) + self.chat_messages_by_agent.setdefault(agent_id, []).append(message_data) self._emit_event( "chat.message", actor={"agent_id": agent_id, "role": role},