Spaces:
Building
Building
from fastapi import FastAPI | |
from fastapi.staticfiles import StaticFiles | |
from fastapi.responses import FileResponse | |
import uvicorn | |
import os | |
from pathlib import Path | |
from utils import log | |
from chat_handler import router as chat_router # β start_session & chat | |
from admin_routes import router as admin_router # β Admin API endpoints | |
app = FastAPI( | |
title="Flare Orchestration Service", | |
version="0.1.0", | |
description="LLM-driven intent & API flow engine (bootstrap)", | |
) | |
from spark_startup import run_in_thread | |
run_in_thread() | |
# ---------------- Health probe (HF Spaces watchdog) ----------------- | |
def health_check(): | |
return {"status": "ok"} | |
# ---------------- Core chat/session routes -------------------------- | |
app.include_router(chat_router) | |
# ---------------- Admin API routes ---------------------------------- | |
app.include_router(admin_router) | |
# ---------------- Serve Angular UI if exists ------------------------ | |
static_path = Path("static") | |
if static_path.exists() and static_path.is_dir(): | |
# Serve static files (Angular assets) | |
app.mount("/assets", StaticFiles(directory="static/assets"), name="assets") | |
# Catch-all route for Angular routing (must be last!) | |
async def serve_angular(full_path: str): | |
# Don't catch API routes | |
if full_path.startswith("api/") or full_path in ["start_session", "chat"]: | |
return {"error": "Not found"}, 404 | |
# Return Angular index.html for all other routes | |
index_path = static_path / "index.html" | |
if index_path.exists(): | |
return FileResponse(str(index_path)) | |
return {"error": "UI not found"}, 404 | |
if __name__ == "__main__": | |
log("π Starting Flare backend β¦") | |
uvicorn.run(app, host="0.0.0.0", port=7860) |