Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, HTTPException, Body | |
| from pydantic import BaseModel | |
| from typing import Dict, Optional, List | |
| from env import EmailEnv | |
| from models import Action, Observation | |
| import uvicorn | |
| import os | |
| app = FastAPI(title="EmailTriage OpenEnv", description="A real-world email management and scheduling environment.") | |
| # Global instance | |
| env = EmailEnv() | |
| async def reset_env(req: Optional[Dict] = Body(default={})): | |
| task_id = req.get("task_id", req.get("level", 1)) if req else 1 | |
| obs, info = env.reset(options={"level": task_id}) | |
| return { | |
| "observation": obs, | |
| "info": info, | |
| "status": "Ready" | |
| } | |
| async def step_env(action: Dict): | |
| obs, reward, terminated, truncated, info = env.step(action) | |
| return { | |
| "observation": obs, | |
| "reward": float(reward), | |
| "terminated": bool(terminated), | |
| "truncated": bool(truncated), | |
| "info": info | |
| } | |
| async def get_state(): | |
| return env.state() | |
| # Health check for HF Spaces | |
| async def root(): | |
| return {"status": "running", "environment": "OpenEnv"} | |
| if __name__ == "__main__": | |
| # HF Spaces default port is 7860 | |
| port = int(os.getenv("PORT", 7860)) | |
| uvicorn.run(app, host="0.0.0.0", port=port) | |