from __future__ import annotations from fastapi import Body, FastAPI import uvicorn from server.environment import OpenEnvAdapter, ResetRequest, StepRequest app = FastAPI(title="EthicsGuard") adapter = OpenEnvAdapter() @app.get("/") async def root() -> dict[str, str]: return {"name": "ethicsguard", "status": "ok"} @app.get("/health") async def health() -> dict[str, str]: return {"status": "ok"} @app.post("/reset") async def reset(request: ResetRequest | None = Body(default=None)) -> dict[str, object]: return (await adapter.reset(request)).model_dump() @app.post("/step") async def step(request: StepRequest) -> dict[str, object]: return (await adapter.step(request)).model_dump() @app.get("/state") async def state() -> dict[str, object]: return (await adapter.state()).model_dump() @app.get("/tasks") async def tasks() -> dict[str, object]: return (await adapter.tasks()).model_dump() @app.post("/close") async def close() -> dict[str, str]: await adapter.close() return {"status": "closed"} def main() -> None: uvicorn.run("server.app:app", host="0.0.0.0", port=7860) if __name__ == "__main__": main()