from airflow.plugins_manager import AirflowPlugin
from flask_appbuilder import BaseView as AppBuilderBaseView, expose
from flask import Blueprint

from airflow_wingman.llms_models import MODELS


bp = Blueprint(
    "wingman",
    __name__,
    template_folder="templates",
    static_folder="static",
    static_url_path="/static/wingman",
)


class WingmanView(AppBuilderBaseView):
    route_base = "/wingman"
    default_view = "chat"

    @expose("/")
    def chat(self):
        """
        Chat interface for Airflow Wingman.
        """
        return self.render_template(
            "wingman_chat.html", title="Airflow Wingman", models=MODELS
        )


# Create AppBuilder View
v_appbuilder_view = WingmanView()
v_appbuilder_package = {
    "name": "Wingman",
    "category": "AI",
    "view": v_appbuilder_view,
}


# Create Plugin
class WingmanPlugin(AirflowPlugin):
    name = "wingman"
    flask_blueprints = [bp]
    appbuilder_views = [v_appbuilder_package]
