from app.llm.translator_llm import TranslatorLLM from app.net.restconf_client import RestconfClient class IncidentPipeline: def __init__(self, inventory: dict): """ inventory = { "CORE-R1": { "restconf_url": "...", "username": "...", "password": "..." } } """ self.inventory = inventory self.translator = TranslatorLLM() def run( self, device: str, show_cli: list[str], fix_cli: list[str] | None = None ) -> dict: # ---- SHOW PHASE ---- show_rest = self.translator.translate(show_cli, mode="show") client = self._get_client(device) show_results = client.execute(show_rest) # ---- INCIDENT LLM by tu reálne bežala ---- # fix_cli = incident_llm(wazuh_alert, show_results) fix_results = None if fix_cli: fix_rest = self.translator.translate(fix_cli, mode="fix") fix_results = client.execute(fix_rest) return { "device": device, "show": show_results, "fix": fix_results } def _get_client(self, device: str) -> RestconfClient: if device not in self.inventory: raise KeyError(f"Device '{device}' not found in inventory") d = self.inventory[device] return RestconfClient( base_url=d["restconf_url"], username=d["username"], password=d["password"] )