Spaces:
Sleeping
Sleeping
| """ | |
| FastAPI server exposing the OpenEnv-compatible HTTP API. | |
| Port: 7860 (Hugging Face Spaces default) | |
| """ | |
| from fastapi import FastAPI, HTTPException | |
| from fastapi.responses import JSONResponse | |
| from ..models import ( | |
| DebugState, | |
| ResetRequest, | |
| ResetResponse, | |
| StepRequest, | |
| StepResponse, | |
| ) | |
| from .environment import CodeDebugEnvironment | |
| app = FastAPI( | |
| title="Code Debug OpenEnv", | |
| description="An OpenEnv environment where an AI agent debugs broken Python code.", | |
| version="1.0.0", | |
| ) | |
| env = CodeDebugEnvironment() | |
| # ------------------------------------------------------------------ | |
| # Health & metadata | |
| # ------------------------------------------------------------------ | |
| async def health(): | |
| return {"status": "healthy", "tasks_loaded": len(env.tasks)} | |
| async def list_tasks(): | |
| return env.list_tasks() | |
| # ------------------------------------------------------------------ | |
| # OpenEnv core endpoints | |
| # ------------------------------------------------------------------ | |
| async def reset(req: ResetRequest = None): | |
| if req is None: | |
| req = ResetRequest() | |
| try: | |
| result = env.reset(task_id=req.task_id, seed=req.seed) | |
| return result | |
| except KeyError as e: | |
| raise HTTPException(status_code=404, detail=str(e)) | |
| async def step(episode_id: str, req: StepRequest): | |
| try: | |
| result = env.step(episode_id, req.action.model_dump()) | |
| return result | |
| except KeyError as e: | |
| raise HTTPException(status_code=404, detail=str(e)) | |
| except ValueError as e: | |
| raise HTTPException(status_code=400, detail=str(e)) | |
| async def state(episode_id: str): | |
| try: | |
| return env.state(episode_id) | |
| except KeyError as e: | |
| raise HTTPException(status_code=404, detail=str(e)) | |
| # ------------------------------------------------------------------ | |
| # Entry point for local dev | |
| # ------------------------------------------------------------------ | |
| if __name__ == "__main__": | |
| import uvicorn | |
| uvicorn.run("code_debug_env.server.app:app", host="0.0.0.0", port=7860, reload=True) | |