code-review-env / client.py
Yero
cleanup comments and readme
c193fbb
Raw
History Blame Contribute Delete
2.73 kB
from openenv.core.env_client import EnvClient
from openenv.core.client_types import StepResult
from .models import CodeReviewAction, CodeReviewObservation, CodeReviewState
class CodeReviewEnv(EnvClient[CodeReviewAction, CodeReviewObservation, CodeReviewState]):
def _step_payload(self, action: CodeReviewAction) -> dict:
return {"decision": action.decision}
def _parse_result(self, payload: dict) -> StepResult:
obs = payload.get("observation", {})
done = payload.get("done", False)
reward = payload.get("reward")
return StepResult(
observation=CodeReviewObservation(
done=done, reward=reward,
file_path=obs.get("file_path", ""),
file_index=obs.get("file_index", 0),
total_files=obs.get("total_files", 0),
churn_score=obs.get("churn_score", 0.0),
complexity_score=obs.get("complexity_score", 0.0),
todo_score=obs.get("todo_score", 0.0),
recency_score=obs.get("recency_score", 0.0),
cve_id=obs.get("cve_id", ""),
cvss_score=obs.get("cvss_score", 0.0),
repo_name=obs.get("repo_name", ""),
files_remaining=obs.get("files_remaining", 0),
files_flagged=obs.get("files_flagged", 0),
review_budget=obs.get("review_budget", 0),
message=obs.get("message", ""),
true_positives=obs.get("true_positives", 0),
false_positives=obs.get("false_positives", 0),
false_negatives=obs.get("false_negatives", 0),
true_negatives=obs.get("true_negatives", 0),
precision=obs.get("precision", 0.0),
recall=obs.get("recall", 0.0),
f1_score=obs.get("f1_score", 0.0),
),
reward=reward,
done=done,
)
def _parse_state(self, payload: dict) -> CodeReviewState:
return CodeReviewState(
episode_id=payload.get("episode_id"),
step_count=payload.get("step_count", 0),
cve_id=payload.get("cve_id", ""),
repo_name=payload.get("repo_name", ""),
total_files=payload.get("total_files", 0),
total_bugs=payload.get("total_bugs", 0),
current_file_index=payload.get("current_file_index", 0),
difficulty_level=payload.get("difficulty_level", "medium"),
files_flagged=payload.get("files_flagged", 0),
correct_flags=payload.get("correct_flags", 0),
review_budget=payload.get("review_budget", 0),
cumulative_reward=payload.get("cumulative_reward", 0.0),
)