34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
"""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)
|