#!/usr/bin/env python3
"""Interaktiver Chat mit Colibri GLM-5.2 — direkt im Terminal."""
import urllib.request, json, sys, os

API = "http://127.0.0.1:8082/v1/chat/completions"
KEY = "colibri-glm52-local"
MODEL = "glm-5.2"
HISTORY = []

print("\033[1;36m╔══════════════════════════════════╗")
print("║   Colibri GLM-5.2 — Terminal    ║")
print("║   /quit • /clear • /help        ║")
print("╚══════════════════════════════════╝\033[0m\n")

while True:
    try:
        user = input("\033[1;33mDu>\033[0m ")
    except (EOFError, KeyboardInterrupt):
        print("\n\033[2mTschüss!\033[0m")
        break

    if user.strip().lower() in ("/quit", "/exit", "/q"):
        print("\033[2mTschüss!\033[0m")
        break
    if user.strip().lower() == "/clear":
        HISTORY.clear()
        print("\033[2mVerlauf gelöscht.\033[0m")
        continue
    if user.strip().lower() == "/help":
        print("  /quit  • Beenden\n  /clear • Verlauf löschen\n  /help  • Hilfe")
        continue
    if not user.strip():
        continue

    HISTORY.append({"role": "user", "content": user})
    
    data = json.dumps({
        "model": MODEL,
        "messages": HISTORY[-30:],  # Letzte 30 Nachrichten
        "max_tokens": 512,
        "stream": False
    }).encode()
    
    req = urllib.request.Request(API, data=data, headers={
        "Content-Type": "application/json",
        "Authorization": f"Bearer {KEY}"
    })
    
    print("\033[2m⏳\033[0m", end="", flush=True)
    try:
        resp = urllib.request.urlopen(req, timeout=300)
        j = json.loads(resp.read().decode())
        text = j["choices"][0]["message"]["content"]
        print(f"\r\033[1;36mGLM>\033[0m {text}")
        HISTORY.append({"role": "assistant", "content": text})
    except Exception as e:
        print(f"\r\033[1;31mFehler:\033[0m {e}")
        HISTORY.pop()  # Fehlgeschlagenen Request entfernen
