Spaces:
Sleeping
Sleeping
File size: 1,221 Bytes
a617acd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | from __future__ import annotations
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from auditenv.models import AuditAction, AuditObservation, EnvState, StepResult, TaskId
from auditenv.state import AuditEnvRuntime
app = FastAPI(title="AuditEnv", version="0.1.0")
runtime = AuditEnvRuntime(default_seed=42)
class ResetRequest(BaseModel):
task_id: TaskId = "easy"
seed: int = 42
@app.get("/health")
def health() -> dict[str, str]:
return {"status": "ok"}
@app.post("/reset", response_model=AuditObservation)
def reset(req: ResetRequest) -> AuditObservation:
return runtime.reset(task_id=req.task_id, seed=req.seed)
@app.post("/step", response_model=StepResult)
def step(action: AuditAction) -> StepResult:
try:
return runtime.step(action)
except RuntimeError as exc:
raise HTTPException(status_code=400, detail=str(exc)) from exc
except ValueError as exc:
raise HTTPException(status_code=422, detail=str(exc)) from exc
@app.get("/state", response_model=EnvState)
def state() -> EnvState:
try:
return runtime.state()
except RuntimeError as exc:
raise HTTPException(status_code=400, detail=str(exc)) from exc
|