flare / app.py
ciyidogan's picture
Update app.py
b10856a verified
raw
history blame
1.82 kB
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) -----------------
@app.get("/")
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!)
@app.get("/{full_path:path}")
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)