"""Communication Agent — analyzes email, chat logs, and messaging artifacts.""" from __future__ import annotations from base_agent import BaseAgent from evidence_graph import EvidenceGraph from llm_client import LLMClient from tool_registry import TOOL_CATALOG class CommunicationAgent(BaseAgent): name = "communication" role = ( "Communication forensic analyst. You analyze email files (.dbx, .pst), " "IRC/mIRC chat logs, newsgroup data, and other messaging artifacts " "to identify communication patterns, contacts, and content." ) def __init__(self, llm: LLMClient, graph: EvidenceGraph) -> None: super().__init__(llm, graph) self._register_tools() def _register_tools(self) -> None: tool_names = [ "list_directory", "extract_file", "read_text_file", "read_binary_preview", "list_extracted_dir", "search_strings", "search_text_file", "read_text_file_section", ] for name in tool_names: td = TOOL_CATALOG.get(name) if td: self.register_tool(td.name, td.description, td.input_schema, td.executor)