import redis
import json
import subprocess
import os

# Configuração
REDIS_HOST = '10.99.0.3'
REDIS_PORT = 6379
REDIS_PASS = 'clube67_dragonfly_pass_9903'
CHANNELS = ['swarm:tasks', 'swarm:updates']

r = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, password=REDIS_PASS, db=0)
pubsub = r.pubsub()
pubsub.subscribe(*CHANNELS)

print(f" [*] Swarm Listener Ativo - Aguardando eventos nos canais {CHANNELS}...")

for message in pubsub.listen():
    if message['type'] == 'message':
        try:
            payload = json.loads(message['data'])
            event = payload.get('event')
            repo = payload.get('repository')
            channel = message['channel'].decode('utf-8') if isinstance(message['channel'], bytes) else message['channel']
            
            print(f" [!] Novo evento recebido no canal {channel}: {event} no repo {repo}")
            
            # Se for uma tarefa de desenvolvimento (tasks), dispara o executor inteligente
            if channel == 'swarm:tasks':
                executor_path = "/home/deploy/instrucoes/templates/agent_executor.py"
                if os.path.exists(executor_path):
                    print(f" [>] Disparando executor inteligente: {executor_path}")
                    subprocess.run(["python3", executor_path, "--data", json.dumps(payload)])
                else:
                    print(f" [E] Executor não encontrado em {executor_path}")
                    
        except Exception as e:
            print(f" [E] Erro ao processar mensagem: {e}")
