"""
Entry point del chatbot — loop interattivo da terminale.

Importa il grafo compilato da graph.py (che a sua volta carica tutti
gli artefatti e crea gli agenti). Poi avvia un loop infinito che:
1. Legge l'input dell'utente
2. Lo invia al grafo come HumanMessage
3. Stampa la risposta dell'ultimo agente

Digitare 'q', 'esci' o 'exit' per uscire.
"""

from langchain_core.messages import HumanMessage
from utils.config import DEFAULT_THREAD_ID
from graph import app

# Configurazione sessione — il thread_id identifica la conversazione
# e permette al MemorySaver di mantenere la cronologia tra i turni
config = {"configurable": {"thread_id": DEFAULT_THREAD_ID}}

print("\n--- SISTEMA PRONTO ---")
while True:
    try:
        user_input = input("Tu: ")
        if user_input.lower() in ["q", "esci", "exit"]:
            break
        # Invia il messaggio al grafo e ottieni lo stato finale
        result = app.invoke({"messages": [HumanMessage(content=user_input)]}, config=config)
        # L'ultimo messaggio nella lista e' la risposta dell'agente
        print(f"Bot: {result['messages'][-1].content}\n")
    except Exception as e:
        print(f"ERRORE DI SISTEMA: {e}")
