from fastapi import APIRouter from fastapi.responses import HTMLResponse from app.plugins import PLUGINS, Plugin from app.render import render router = APIRouter(prefix="/api/plugins", tags=["plugins"]) @router.get("") async def plugins_index(): items: list[dict[str, Plugin | str]] = [] for p in PLUGINS: try: body = await p.skeleton() except Exception as e: # noqa body = f"
plugin error: {e}
" items.append({"p": p, "body": body}) return HTMLResponse(render("plugins.html", items=items))