import subprocess import os import psutil def run_bash_command(command: str) -> str: """Executa um comando bash na VPS e retorna a saída.""" try: # Executa comando arriscado com root de forma segura dentro da VPS result = subprocess.run( command, shell=True, capture_output=True, text=True, timeout=60 # Limite de tempo de execução ) output = result.stdout.strip() error = result.stderr.strip() if result.returncode != 0: return f"ERRO ({result.returncode}):\n{error}" return output if output else "Comando executado com sucesso (sem saída)." except subprocess.TimeoutExpired: return "ERRO: O comando demorou muito e foi cancelado (timeout)." except Exception as e: return f"ERRO fatal ao rodar bash: {str(e)}" def get_system_health() -> str: """Retorna um texto base rápido da saúde atual do servidor para a IA analisar.""" cpu = psutil.cpu_percent(interval=0.1) ram = psutil.virtual_memory().percent disk = psutil.disk_usage('/').percent return f"CPU: {cpu}% | RAM Usada: {ram}% | Disco Usado: {disk}%" # Mapeamento estático para o LLM entender quais tools ele possui AVAILABLE_TOOLS = { "run_bash_command": { "description": "Executa qualquer comando Linux no terminal da VPS. Use para criar arquivos, rodar git, verificar logs do docker, etc.", "func": run_bash_command }, "get_system_health": { "description": "Verifica como está o uso de RAM, CPU e Disco agora.", "func": get_system_health } }