# Copyright (c) Meta Platforms, Inc. and affiliates. # All rights reserved. # # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. """FastAPI application for the Minesweeper Environment.""" import os # Disable the generic web interface — we serve our own at /web os.environ["ENABLE_WEB_INTERFACE"] = "false" # Support both in-repo and standalone imports try: # In-repo imports (when running from OpenEnv repository) from openenv.core.env_server import create_app except ImportError: # Standalone imports (when environment is standalone with openenv-core from pip) from openenv_core.env_server.http_server import create_app try: from ..models import MinesweeperAction, MinesweeperObservation from .minesweeper_environment import MinesweeperEnvironment except ImportError: from models import MinesweeperAction, MinesweeperObservation from server.minesweeper_environment import MinesweeperEnvironment from fastapi.responses import HTMLResponse # Create the FastAPI app (REST API only, no built-in web UI) app = create_app( MinesweeperEnvironment, MinesweeperAction, MinesweeperObservation, env_name="minesweeper_env" ) # Serve our custom minesweeper web UI at /web try: from .web import MINESWEEPER_HTML except ImportError: from server.web import MINESWEEPER_HTML @app.get("/web", response_class=HTMLResponse) async def web_ui(): return MINESWEEPER_HTML def main(): """Entry point for direct execution.""" import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000) if __name__ == "__main__": main()