"""API application entrypoint.""" from __future__ import annotations import os import uvicorn from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.common.config import load_project_env from app.api.routes import router load_project_env() _cors_local = [ "http://127.0.0.1:5173", "http://localhost:5173", ] _extra = os.getenv("POLYGUARD_CORS_ORIGINS", "").strip() if _extra and _extra != "*": _cors_local = _cors_local + [o.strip() for o in _extra.split(",") if o.strip()] _hf_space_regex = None if os.getenv("POLYGUARD_ALLOW_HF_SPACE_CORS", "").lower() in {"1", "true", "yes", "on"}: _hf_space_regex = r"https://.*\.hf\.space" app = FastAPI(title="POLYGUARD-RL API", version="0.1.0") app.add_middleware( CORSMiddleware, allow_origins=_cors_local, allow_origin_regex=_hf_space_regex, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(router) def main() -> None: host = os.getenv("POLYGUARD_API_HOST", "127.0.0.1") port = int(os.getenv("POLYGUARD_API_PORT", "8200")) uvicorn.run("app.api:app", host=host, port=port, reload=False) if __name__ == "__main__": main()