# neurotron/echo_agent.py

from neurotron.neuron import Neuron
from neurotron.logbus import logbus
from neurotron.trm.agentes.programador import ProgramadorV01

class EchoAgent(Neuron):
    name = "EchoAgent"

    def __init__(self, ctx):
        super().__init__(ctx)
        self.last = None
        self.programador = ProgramadorV01(ctx, debug=True, vm_trace=False)
        self._ready = False   # 👈 novo estado interno

    def think(self):
        snap = self.ctx.perception.snapshot()
        cpu = snap.get("cpu_percent")
        mem = snap.get("mem_percent")

        msg = f"CPU={cpu}% MEM={mem}%"
        if msg != self.last:
            logbus.info(f"[echo] {msg}")
            self.last = msg

        fib_path = self.ctx.lang_examples_dir / "fib.nl"

        if not fib_path.exists():
            logbus.debug(f"[neuro] aguardando fib.nl em {fib_path}")
            return

        # 👇 só marca como pronto no tick seguinte
        if not self._ready:
            logbus.debug("[neuro] fib.nl detectado — pipeline armada")
            self._ready = True
            return
        else:
            logbus.debug("[neuro] fib.nl detectado — executando agora")
            res = self.programador.run_file("examples/fib.nl")

        if res.ok:
            logbus.debug(f"[neuro] fib.nl → {res.value}")
        else:
            logbus.error("[neuro] erro ao executar fib.nl")
            for err in res.errors or []:
                logbus.error(f"  {err}")

