#!/usr/bin/env python3
"""Analiza una imagen con Claude y devuelve lista de herramientas."""
import sys
import os
import json
import subprocess

CLAUDE_BIN = "/home/open/.local/bin/claude"

def analizar_imagen(imagen_path):
    prompt = (
        "Analiza esta imagen y haz una lista de todas las herramientas, "
        "objetos o materiales que ves. "
        "Para cada elemento indica: nombre, descripción breve (1 línea) y categoría "
        "(herramienta_manual, herramienta_eléctrica, material, componente_electrónico, otro). "
        "Responde SOLO con un JSON válido con este formato exacto, sin texto adicional:\n"
        "[{\"nombre\":\"...\",\"descripcion\":\"...\",\"categoria\":\"...\"}]"
        f"\n@{imagen_path}"
    )

    result = subprocess.run(
        [CLAUDE_BIN, "-p", prompt, "--output-format", "text"],
        capture_output=True, text=True, timeout=45,
        env={**os.environ, "HOME": "/home/open"}
    )

    respuesta = result.stdout.strip()

    # Extraer JSON de la respuesta
    try:
        # Buscar el array JSON en la respuesta
        inicio = respuesta.index("[")
        fin = respuesta.rindex("]") + 1
        herramientas = json.loads(respuesta[inicio:fin])
        return {"ok": True, "herramientas": herramientas}
    except (ValueError, json.JSONDecodeError):
        # Si no devuelve JSON limpio, devolver respuesta en texto como fallback
        return {"ok": True, "herramientas": [], "texto": respuesta}

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print(json.dumps({"ok": False, "error": "Falta ruta de imagen"}))
        sys.exit(1)

    resultado = analizar_imagen(sys.argv[1])
    print(json.dumps(resultado, ensure_ascii=False))
