Download openenv/retroenv_openenv/server.py from FineEnvs/retroenv: direct link, hf CLI and curl.
- Browser
- Download file 1.57 kB
-
https://huggingface.co/spaces/FineEnvs/retroenv/resolve/main/openenv/retroenv_openenv/server.py
- Command line
-
hf download hf://spaces/FineEnvs/retroenv/openenv/retroenv_openenv/server.py
-
curl -L -o server.py https://huggingface.co/spaces/FineEnvs/retroenv/resolve/main/openenv/retroenv_openenv/server.py
1.57 kB
| """FastAPI app: MCP tools over /ws and /mcp, the Task API, and the playground at /web.""" | |
| import os | |
| from fastapi.responses import HTMLResponse | |
| from fastapi.staticfiles import StaticFiles | |
| from openenv.core.env_server.http_server import create_app | |
| from openenv.core.env_server.mcp_types import CallToolAction, CallToolObservation | |
| from rdkit import RDLogger | |
| from .config import ENV_NAME | |
| from .environment import RetroRouteEnvironment | |
| from .molecule3d import STATIC, viewer_page | |
| # Agents send unparsable SMILES all the time; the verifier reports them, so | |
| # RDKit's per-molecule stderr messages are only noise in the server log. | |
| RDLogger.DisableLog("rdApp.*") | |
| os.environ.setdefault("ENABLE_WEB_INTERFACE", "true") | |
| def _build_ui(*args, **kwargs): | |
| from .ui import build_ui | |
| return build_ui(*args, **kwargs) | |
| app = create_app( | |
| RetroRouteEnvironment, | |
| CallToolAction, | |
| CallToolObservation, | |
| env_name=ENV_NAME, | |
| max_concurrent_envs=int(os.getenv("MAX_CONCURRENT_ENVS", "64")), | |
| gradio_builder=_build_ui, | |
| show_default_tab=False, | |
| title_override="RetroEnv", | |
| ) | |
| # The playground's 3D view: a conformer page per SMILES, and the vendored 3Dmol.js it loads. | |
| app.mount("/molecule/static", StaticFiles(directory=STATIC), name="molecule-static") | |
| def molecule_3d(smiles: str) -> HTMLResponse: | |
| # A given SMILES always yields the same conformer, so browsers may keep it. | |
| return HTMLResponse(viewer_page(smiles), headers={"Cache-Control": "public, max-age=86400"}) | |