sxchin01/code-security-audit-env-3
0
1from __future__ import annotations2 3from pathlib import Path4import importlib5from typing import Any6 7from fastapi import FastAPI, HTTPException8 9# Make this module behave like a package proxy so imports like app.env10# resolve to the existing ./app package even though this file is named app.py.11__path__ = [str(Path(__file__).parent / "app")]12 13_env_module = importlib.import_module("app.env")14_models_module = importlib.import_module("app.models")15 16CodeSecurityAuditEnv = _env_module.CodeSecurityAuditEnv17Action = _models_module.Action18 19app = FastAPI(title="CodeSecurityAuditEnv Space API")20env = CodeSecurityAuditEnv()21 22 23@app.get("/")24def root() -> dict[str, str]:25 return {"status": "ok"}26 27 28@app.get("/reset")29def reset() -> dict[str, Any]:30 observation = env.reset()31 return {"observation": observation.model_dump()}32 33 34@app.post("/step")35def step(action: dict[str, Any]) -> dict[str, Any]:36 try:37 parsed_action = Action.model_validate(action)38 except Exception as exc:39 raise HTTPException(status_code=400, detail=f"Invalid action payload: {exc}") from exc40 41 observation, reward, done, info = env.step(parsed_action)42 return {43 "observation": observation.model_dump(),44 "reward": reward,45 "done": done,46 "info": info,47 }48 