Spaces:
Sleeping
Sleeping
File size: 1,292 Bytes
7952f32 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | """FastAPI server for the multi-turn repo-editing environment."""
from __future__ import annotations
from typing import Any
from fastapi import FastAPI, HTTPException
from env.actions import RepoEditAction, parse_action
from env.environment import RepoEditEnvironment
from env.models import RepoEditObservation, RepoEditState
_env = RepoEditEnvironment()
def _make_app() -> FastAPI:
app = FastAPI(title="Repo-Edit OpenEnv", version="0.3.0")
@app.post("/reset", response_model=RepoEditObservation)
def reset(task_id: str | None = None) -> RepoEditObservation:
return _env.reset(task_id=task_id)
@app.post("/step")
def step(action_dict: dict[str, Any]) -> dict[str, Any]:
try:
action = parse_action(action_dict)
obs, reward, done = _env.step(action)
except (ValueError, RuntimeError) as exc:
raise HTTPException(status_code=400, detail=str(exc)) from exc
return {"observation": obs.model_dump(), "reward": reward, "done": done}
@app.get("/state", response_model=RepoEditState)
def state() -> RepoEditState:
return _env.get_state()
@app.get("/healthz")
def healthz() -> dict[str, Any]:
return {"status": "ok"}
return app
app = _make_app()
__all__ = ["app"]
|