cache-env / server /app.py
Parv Pareek
done
e75c8ce
"""OpenEnv FastAPI server: full HTTPEnvServer + task/grader discovery routes."""
from __future__ import annotations
import os
from typing import Optional
import uvicorn
from openenv.core.env_server import create_fastapi_app
from env.cache_environment import CacheInvalidationEnvironment
from env.models import CacheAction, CacheObservation
from env.task_graders import TASK_AGENT_GRADERS
from env.tasks import TASK_MANIFEST, list_graders
_singleton: CacheInvalidationEnvironment | None = None
def _env_factory() -> CacheInvalidationEnvironment:
global _singleton
if _singleton is None:
_singleton = CacheInvalidationEnvironment()
return _singleton
app = create_fastapi_app(
_env_factory,
CacheAction,
CacheObservation,
max_concurrent_envs=1,
)
@app.get(
"/tasks",
tags=["Environment Info"],
summary="List tasks and grader registration",
)
def http_list_tasks():
return {
"tasks": TASK_MANIFEST,
"graders": list_graders(),
"grader_registry": {
name: {
"enabled": True,
"qualified_name": f"{fn.__module__}:{fn.__name__}",
}
for name, fn in TASK_AGENT_GRADERS.items()
},
}
def main(host: Optional[str] = None, port: Optional[int] = None) -> None:
host = host or os.environ.get("HOST", "0.0.0.0")
port = int(port or os.environ.get("PORT", "7860"))
uvicorn.run(app, host=host, port=port)
if __name__ == "__main__":
main()