from __future__ import annotations

import sys

from flask import Flask, jsonify
from werkzeug.exceptions import HTTPException

loaded_platform = sys.modules.get("platform")
if loaded_platform is not None and not hasattr(loaded_platform, "__path__"):
    del sys.modules["platform"]

from .routes import ui_worker_bp


def create_app() -> Flask:
    app = Flask("ui_automation_worker")
    app.register_blueprint(ui_worker_bp)

    @app.errorhandler(Exception)
    def worker_error(error):
        if isinstance(error, HTTPException):
            return error
        app.logger.exception("AroFlo worker operation failed")
        return jsonify({
            "status": "error",
            "code": "worker_operation_failed",
            "message": "The worker could not complete the BOT operation.",
        }), 500

    return app


app = create_app()
