from typing import List, Optional from pydantic import Field from openenv.core.env_server.types import Action, Observation class Issue(Action): line_number: Optional[int] = Field(default=None) issue_type: str = Field(default="syntax_error") description: str = Field(default="") severity: str = Field(default="medium") class CodeReviewAction(Action): identified_issues: List[Issue] = Field(default_factory=list) suggested_fix: Optional[str] = Field(default=None) explanation: str = Field(default="") submit: bool = Field(default=False) class CodeReviewObservation(Observation): task_id: str = Field(default="") task_name: str = Field(default="") difficulty: str = Field(default="easy") language: str = Field(default="python") code_snippet: str = Field(default="") context: str = Field(default="") step_number: int = Field(default=0) max_steps: int = Field(default=5) previous_feedback: Optional[str] = Field(default=None)