from fastapi import FastAPI from env.environment import OpenEnv from env.runtime_config import RuntimeConfig app = FastAPI(title="workflowTwin OpenEnv Server", version="0.1.0") runtime_config = RuntimeConfig.from_env() env = OpenEnv(**runtime_config.to_env_kwargs()) @app.get("/") def root() -> dict: return {"status": "ok", "service": "workflowTwin"} @app.get("/config") def config() -> dict: return runtime_config.as_dict() @app.post("/reset") def reset() -> dict: return env.reset().model_dump() @app.post("/step") def step(action: dict) -> dict: obs, reward, done, info = env.step(action) return { "observation": obs.model_dump(), "reward": reward, "done": done, "info": info, } @app.get("/state") def state() -> dict: return env.state() def main(): import uvicorn uvicorn.run("server.app:app", host="0.0.0.0", port=8000) if __name__ == "__main__": main()