Meta_Hackathon / main.py
SushCodex's picture
Upload 14 files
13ac338 verified
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()
@app.post("/reset")
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"
}
@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)