Team Ai
Apppublic

Dave-13/DevSecOps

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
openenv_env.py75 linesDownload Raw Back to env
1"""2OpenEnv-style environment for the DevSecOps agent.3Exposes state, actions, and a reward function.4"""5 6from core.test_runner import run_tests7from agents.security import run_security_checks8 9 10class OpenEnvDevSecOps:11    def __init__(self, original_code: str, logs: str, test_code: str):12        self._original_code = original_code13        self._test_code = test_code14        self.state = {15            "codebase": original_code,16            "logs": logs,17            "test_results": {},18            "security_flags": {},19            "retries": 0,20            "reward": 0.0,21        }22 23    # ── ACTIONS ──────────────────────────────────────────────────────────────24 25    def apply_patch(self, patched_code: str) -> dict:26        self.state["codebase"] = patched_code27        return {"applied": True}28 29    def run_tests(self) -> dict:30        result = run_tests(self.state["codebase"], self._test_code)31        self.state["test_results"] = result32        return result33 34    def run_security_checks(self) -> dict:35        result = run_security_checks(self.state["codebase"])36        self.state["security_flags"] = result37        return result38 39    def reset_env(self):40        self.state["codebase"] = self._original_code41        self.state["test_results"] = {}42        self.state["security_flags"] = {}43        self.state["retries"] = 044        self.state["reward"] = 0.045 46    # ── REWARD ────────────────────────────────────────────────────────────────47 48    def compute_reward(self) -> float:49        r = 0.050        if self.state["test_results"].get("passed"):51            r += 1.052        else:53            r -= 1.054        if self.state["security_flags"].get("secure"):55            r += 1.056        r -= 0.5 * self.state["retries"]57        self.state["reward"] = r58        return r59 60    def step(self, patched_code: str) -> dict:61        """Single environment step: apply → test → security → reward."""62        self.state["retries"] += 163        self.apply_patch(patched_code)64        test_result = self.run_tests()65        security_result = self.run_security_checks()66        reward = self.compute_reward()67        done = test_result.get("passed") and security_result.get("secure")68        return {69            "test_result": test_result,70            "security_result": security_result,71            "reward": reward,72            "done": done,73            "state": self.state,74        }75