From 2a14475efc9cfc39472e8c7be181c7f7725c1771 Mon Sep 17 00:00:00 2001 From: abhishekbhakat Date: Mon, 24 Feb 2025 09:27:46 +0000 Subject: [PATCH] Plugin skeleton --- plugins/airflow-wingman/__init__.py | 0 plugins/airflow-wingman/plugin.py | 43 +++++++++++++++++++ plugins/airflow-wingman/pyproject.toml | 20 +++++++++ .../templates/wingman_chat.html | 5 +++ 4 files changed, 68 insertions(+) create mode 100644 plugins/airflow-wingman/__init__.py create mode 100644 plugins/airflow-wingman/plugin.py create mode 100644 plugins/airflow-wingman/pyproject.toml create mode 100644 plugins/airflow-wingman/templates/wingman_chat.html diff --git a/plugins/airflow-wingman/__init__.py b/plugins/airflow-wingman/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plugins/airflow-wingman/plugin.py b/plugins/airflow-wingman/plugin.py new file mode 100644 index 0000000..03f0405 --- /dev/null +++ b/plugins/airflow-wingman/plugin.py @@ -0,0 +1,43 @@ +from airflow.plugins_manager import AirflowPlugin +from flask_appbuilder import BaseView as AppBuilderBaseView, expose +from flask import Blueprint + + +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" + ) + + +# Create AppBuilder View +v_appbuilder_view = WingmanView() +v_appbuilder_package = { + "name": "Airflow Wingman", + "category": "AI", + "view": v_appbuilder_view, +} + + +# Create Plugin +class WingmanPlugin(AirflowPlugin): + name = "wingman" + flask_blueprints = [bp] + appbuilder_views = [v_appbuilder_package] diff --git a/plugins/airflow-wingman/pyproject.toml b/plugins/airflow-wingman/pyproject.toml new file mode 100644 index 0000000..b98e4e3 --- /dev/null +++ b/plugins/airflow-wingman/pyproject.toml @@ -0,0 +1,20 @@ +[build-system] +requires = ["setuptools", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "airflow-wingman" +version = "0.1.0" +description = "Airflow plugin to enable LLMs chat" +authors = [ + {name = "Abhishek Bhakat", email = "abhishek.bhakat@hotmail.com"} +] +dependencies = [ + "apache-airflow>=2.10.0", +] + +[project.urls] +repository = "https://github.com/abhishekbhakat/airflow-mcp-server" + +[tool.setuptools] +packages = ["airflow-wingman"] diff --git a/plugins/airflow-wingman/templates/wingman_chat.html b/plugins/airflow-wingman/templates/wingman_chat.html new file mode 100644 index 0000000..072a34f --- /dev/null +++ b/plugins/airflow-wingman/templates/wingman_chat.html @@ -0,0 +1,5 @@ +{% extends "appbuilder/base.html" %} + +{% block content %} + +{% endblock %}