import sys
import os
import traceback
import datetime

# --- PLIKI ---
LOG_FILE = "/home/pali112/rag_debug.txt"
OUTPUT_FILE = "/home/pali112/deep_odpowiedz.md"


def log(message):
    """Zapisuje logi do pliku, żebyśmy widzieli co się dzieje"""
    with open(LOG_FILE, "a", encoding="utf-8") as f:
        f.write(f"[{datetime.datetime.now()}] {message}\n")

def main():
    # Czyścimy log przy każdym uruchomieniu
    with open(LOG_FILE, "w", encoding="utf-8") as f:
        f.write("--- START SKRYPTU ---\n")

    log("1. Skrypt uruchomiony.")

    # Dodajemy ścieżkę do importów
    sys.path.append("/home/pali112")
    log(f"2. Ścieżka sys.path: {sys.path}")

    try:
        # 3. Próba importu
        log("3. Próbuję importować qa_chain z connect_chaint...")
        try:
            from connect_chaint import qa_chain
            log("   -> Import SUKCES.")
        except ImportError as e:
            log(f"   -> BŁĄD IMPORTU: {e}")
            log(traceback.format_exc())
            raise e
        except Exception as e:
            log(f"   -> INNY BŁĄD PODCZAS IMPORTU: {e}")
            log(traceback.format_exc())
            raise e

        # 4. Czytanie wejścia z Vima
        log("4. Czytam stdin...")
        try:
            input_text = sys.stdin.read().strip()
        except Exception as e:
            input_text = ""
            log(f"   -> Błąd czytania stdin: {e}")

        log(f"   -> Długość wejścia: {len(input_text)} znaków")

        if not input_text:
            msg = "Błąd: Vim nie przekazał żadnego tekstu na wejście."
            log(msg)
            with open(OUTPUT_FILE, "w", encoding="utf-8") as f:
                f.write(f"# BŁĄD\n{msg}")
            return

        # 5. Uruchamianie AI
        log("5. Uruchamiam qa_chain.invoke()...")
        response = qa_chain.invoke(input_text)
        log("   -> AI odpowiedziało.")

        # Wyciąganie wyniku
        if isinstance(response, dict) and "result" in response:
            final_answer = response["result"]
        else:
            final_answer = str(response)

        # Czyszczenie <think>
        if "<think>" in final_answer:
            final_answer = final_answer.split("</think>")[-1].strip()

        # 6. Zapis wyniku
        log("6. Zapisuję wynik do pliku md.")
        with open(OUTPUT_FILE, "w", encoding="utf-8") as f:
            f.write("# Odpowiedź Build123d\n\n")
            f.write(final_answer)

        log("--- KONIEC SUKCES ---")

    except Exception as e:
        error_message = traceback.format_exc()
        log(f"!!! KRYTYCZNY BŁĄD SKRYPTU !!!\n{error_message}")

        # Zapisz błąd też do pliku md, żebyś widział go w Vimie
        with open(OUTPUT_FILE, "w", encoding="utf-8") as f:
            f.write("# BŁĄD KRYTYCZNY SKRYPTU PYTHON\n\n")
            f.write("Sprawdź plik: /home/pali112/rag_debug.txt\n\n")
            f.write("```\n")
            f.write(error_message)
            f.write("\n```")

if __name__ == "__main__":
    main()
