#!/usr/bin/env python3
"""Se hace pasar por la CLI de Claude, pero no ejecuta nada: pregunta.

Va DENTRO del contenedor de HermesOS, con el nombre que su adaptador espera.
Recibe los mismos argumentos y el mismo texto por la entrada estandar, se lo
pasa al puente del anfitrion y devuelve la respuesta tal cual.

Asi la sesion de Claude se queda en la maquina de Alex y nunca entra en una
imagen: lo que cruza es la pregunta, no la credencial.
"""

from __future__ import annotations

import json
import socket
import sys

SOCKET = "/run/filmos/hermes.sock"


def main() -> int:
    modelo = ""
    argumentos = sys.argv[1:]
    for indice, valor in enumerate(argumentos):
        if valor == "--model" and indice + 1 < len(argumentos):
            modelo = argumentos[indice + 1]

    prompt = sys.stdin.read()
    peticion = {
        "request": "llamar",
        "herramienta": "ia_cuenta",
        "argumentos": {"prompt": prompt, "modelo": modelo},
    }

    try:
        with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as conexion:
            conexion.settimeout(240)
            conexion.connect(SOCKET)
            conexion.sendall((json.dumps(peticion, ensure_ascii=False) + "\n").encode("utf-8"))
            with conexion.makefile("rb") as flujo:
                cruda = flujo.readline(8 * 1024 * 1024)
    except OSError as fallo:
        # Fallar rapido y en silencio es lo correcto: el adaptador de Hermes lo
        # cuenta como «no disponible» y la cascada sigue al modelo local.
        print(f"puente del agente no disponible: {fallo}", file=sys.stderr)
        return 1

    try:
        respuesta = json.loads(cruda.decode("utf-8"))
    except ValueError:
        print("el puente contesto algo que no es JSON", file=sys.stderr)
        return 1

    if not respuesta.get("ok"):
        print(str(respuesta.get("error", "el puente lo rechazo")), file=sys.stderr)
        return 1

    sys.stdout.write(respuesta.get("salida", ""))
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
