import logging
from flask import Flask, session, request, render_template, jsonify
from flask_session import Session
from datetime import datetime

from modules.tools import tool_definitions
from modules.llm.ollama_client import ensure_ollama_running, list_models_cached

app = Flask(__name__)
app.config['SESSION_TYPE'] = 'filesystem'
app.config['SESSION_FILE_DIR'] = '../flask_session_dir'
app.config['SESSION_PERMANENT'] = False
Session(app)
app.secret_key = "your_secure_random_string_here"

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

from modules.system_prompts.system_prompts import SYSTEM_PROMPTS

SYSTEM_PROMPTS = SYSTEM_PROMPTS

MODE = "COGITO"

def get_system_prompt(mode: str) -> str:
    return SYSTEM_PROMPTS.get(mode, SYSTEM_PROMPTS["COGITO"])

def init_chat_history(mode: str = "COGITO") -> None:
    session['chat_history'] = [{"role": "system", "content": get_system_prompt(mode)}]

@app.route("/")
def index():
    if 'chat_history' not in session:
        init_chat_history(MODE)
    return render_template("index.html", chat_history=session['chat_history'])

@app.route("/chat", methods=["POST"])
async def chat():
    user_message = request.form.get("message", "").strip()
    logger.info("User ▶ %s", user_message)
    if not user_message:
        return jsonify(error="No message provided"), 400

    if 'chat_history' not in session:
        init_chat_history(MODE)

    session['chat_history'].append({"role": "user", "content": user_message})
    chat_history = session['chat_history']
    model_name = "huihui_ai/qwen2.5-1m-abliterated:latest"
    # logger.info(f"Chat History: {chat_history}")
    # prompt_text = "\n".join([m['content'] for m in chat_history ])

    from modules.agent.planner import Planner
    planner = Planner()
    planner.receive_input(user_message)
    assistant_text = await planner.process()

    session['chat_history'].append({"role": "assistant", "content": assistant_text})
    session.modified = True
    logger.info("Nova ▶ %s", assistant_text)
    return jsonify(chat_history=session['chat_history'])

@app.route("/clear", methods=["POST"])
def clear_history():
    init_chat_history(MODE)
    return jsonify(chat_history=session['chat_history'])

if __name__ == "__main__":
    logger.info("Available models: %s", list_models_cached())
    app.run(host="localhost", debug=True, port=4141)
