"""FastAPI application for the Model Release environment.""" from __future__ import annotations from fastapi.responses import HTMLResponse, RedirectResponse try: from openenv.core.env_server.http_server import create_app except ImportError as exc: # pragma: no cover raise ImportError( "openenv is required for the web interface. Install dependencies with '\n uv sync\n'" ) from exc try: from model_release_env.models import ModelReleaseAction, ModelReleaseObservation from server.model_release_env_environment import ModelReleaseEnvironment except ImportError: from models import ModelReleaseAction, ModelReleaseObservation from server.model_release_env_environment import ModelReleaseEnvironment app = create_app( ModelReleaseEnvironment, ModelReleaseAction, ModelReleaseObservation, env_name="model_release_env", max_concurrent_envs=4, ) LANDING_PAGE = """ Model Release Env

Model Release Env

Deterministic OpenEnv environment for LLM release-readiness decisions. Use POST /reset to start an episode, POST /step to act, and GET /state to inspect progress.

API DocsSwagger UI for reset, step, state, schema, and metadata SchemaTyped action and observation contract HealthSimple readiness status for deployment checks MetadataEnvironment information and capability summary
""" @app.get("/", include_in_schema=False) def landing_page() -> HTMLResponse: return HTMLResponse(LANDING_PAGE) @app.get("/web", include_in_schema=False) def legacy_web_redirect() -> RedirectResponse: return RedirectResponse(url="/", status_code=307) def main(host: str = "0.0.0.0", port: int = 8000) -> None: import uvicorn uvicorn.run(app, host=host, port=port) if __name__ == "__main__": main()