SushCodex's picture
Upload 14 files
85768b6 verified
from fastapi import FastAPI, HTTPException
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()
class ResetRequest(BaseModel):
task_id: int = 1
@app.post("/reset")
async def reset_env(req: ResetRequest):
obs, info = env.reset(options={"level": req.task_id})
return {
"observation": obs,
"info": info,
"status": "Ready"
}
@app.post("/step")
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
}
@app.get("/state")
async def get_state():
return env.state()
# Health check for HF Spaces
@app.get("/")
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)