Meta / app.py
ayaan-ai's picture
Add Suspect X OpenEnv environment (FastAPI + full reward pipeline)
ffbce00
from typing import Dict, Optional
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from suspect_x_environment import SuspectXEnvironment
app = FastAPI(title="Suspect X — AI Interrogation Room", version="1.0.0")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"],
)
env = SuspectXEnvironment()
# ------------------------------------------------------------------
# Request models
# ------------------------------------------------------------------
class ResetRequest(BaseModel):
n_facts: int = 3
seed: Optional[int] = None
difficulty: Optional[str] = None
class StepRequest(BaseModel):
session_id: str
action_type: str # "question" | "suspect_answer" | "submit_accusation"
content: Optional[str] = None
accusation_json: Optional[Dict[str, str]] = None
# ------------------------------------------------------------------
# Routes
# ------------------------------------------------------------------
@app.get("/")
def health():
return {"status": "ok", "environment": "suspect_x_env"}
@app.post("/reset")
def reset(req: ResetRequest = ResetRequest()):
return env.reset(n_facts=req.n_facts, seed=req.seed, difficulty=req.difficulty)
@app.post("/step")
def step(req: StepRequest):
action = req.model_dump()
return env.step(action)
@app.get("/state")
def state():
return env.state