import json
import urllib.request

from hermes_brain import ENV_FILE, MODEL, SYSTEM_PROMPT
from hermes_memory import guardar, historial

USUARIO = "prueba"
SESION = "laboratorio_memoria"

with open(ENV_FILE, encoding="utf-8") as f:
    key = next(
        line.strip().split("=", 1)[1]
        for line in f
        if line.startswith("GEMINI_API_KEY=")
    )

def preguntar_con_memoria(pregunta):
    contexto = historial(USUARIO, SESION, limite=12)

    contenidos = contexto + [{
        "role": "user",
        "parts": [{"text": pregunta}]
    }]

    payload = {
        "systemInstruction": {
            "parts": [{"text": SYSTEM_PROMPT}]
        },
        "contents": contenidos,
        "generationConfig": {
            "maxOutputTokens": 500
        }
    }

    url = (
        "https://generativelanguage.googleapis.com/v1beta/"
        f"models/{MODEL}:generateContent"
    )

    request = urllib.request.Request(
        url,
        data=json.dumps(payload).encode("utf-8"),
        headers={
            "Content-Type": "application/json",
            "x-goog-api-key": key
        },
        method="POST"
    )

    with urllib.request.urlopen(request, timeout=30) as response:
        resultado = json.load(response)

    respuesta = "".join(
        p.get("text", "")
        for p in resultado["candidates"][0]["content"]["parts"]
    )

    guardar(USUARIO, SESION, "user", pregunta)
    guardar(USUARIO, SESION, "model", respuesta)

    return respuesta


print("=== PRUEBA DE MEMORIA HERMES ===")

print("1:", preguntar_con_memoria(
    "Recuerda que el nombre de nuestro proyecto secreto de prueba es Proyecto Centurión."
))

print("2:", preguntar_con_memoria(
    "¿Cómo se llama el proyecto secreto que te mencioné?"
))

print("MEMORIA GEMINI: PRUEBA TERMINADA")
