#!/usr/bin/env python3
"""
patch_tools.py — Apunta las herramientas HTML de LAFHER al proxy PHP propio
en vez de llamar directo a api.anthropic.com desde el navegador.

Uso:
    python3 patch_tools.py /ruta/a/carpeta/con/htmls https://tu-dominio.com/api/chat.php

Reemplaza, en cada archivo .html de la carpeta, las dos llamadas fetch()
que apuntan a 'https://api.anthropic.com/v1/messages' (una en askAI, otra
en askAIVision) por el endpoint propio, agregando el header X-Access-Code
con el ACCESS_CODE que cada herramienta ya trae definido.

No modifica nada más: el body que arma cada función (model, max_tokens,
temperature, system, messages) se manda tal cual.
"""
import sys
import re
from pathlib import Path

OLD_FETCH = "fetch('https://api.anthropic.com/v1/messages',{"
OLD_HEADERS = "headers:{'Content-Type':'application/json'},"

def patch_file(path: Path, backend_url: str) -> str:
    text = path.read_text(encoding='utf-8')
    original = text

    new_fetch = f"fetch('{backend_url}',{{"
    text = text.replace(OLD_FETCH, new_fetch)

    new_headers = "headers:{'Content-Type':'application/json','X-Access-Code':ACCESS_CODE},"
    text = text.replace(OLD_HEADERS, new_headers)

    n_fetch = original.count(OLD_FETCH)
    n_headers = original.count(OLD_HEADERS)

    if n_fetch == 0:
        return f"  ! {path.name}: no se encontró el patrón de fetch esperado (revisar a mano)"
    if n_headers == 0:
        return f"  ! {path.name}: se cambió la URL pero no el header (revisar a mano)"

    path.write_text(text, encoding='utf-8')
    return f"  OK {path.name}: {n_fetch} fetch(s) y {n_headers} header(s) actualizados"

def main():
    if len(sys.argv) != 3:
        print("Uso: python3 patch_tools.py <carpeta_con_htmls> <url_del_proxy>")
        sys.exit(1)

    folder = Path(sys.argv[1])
    backend_url = sys.argv[2]

    if not folder.is_dir():
        print(f"No es una carpeta válida: {folder}")
        sys.exit(1)

    html_files = sorted(folder.glob('*.html'))
    if not html_files:
        print(f"No se encontraron archivos .html en {folder}")
        sys.exit(1)

    print(f"Apuntando {len(html_files)} archivo(s) a {backend_url}\n")
    for f in html_files:
        print(patch_file(f, backend_url))

    print("\nVerifica que no haya quedado ninguna llamada directa con:")
    print(f'  grep -n "api.anthropic.com" {folder}/*.html')

if __name__ == '__main__':
    main()
