Ismail131's picture
Upload folder using huggingface_hub
4b0d924 verified
"""Data models for the Smart Contract Audit Environment."""
from typing import List, Dict, Optional
from openenv.core.env_server.types import Action, Observation, State
from pydantic import Field
class AuditAction(Action):
"""What the agent sends to the environment"""
analysis: str = Field(..., description="Full vulnerability report text")
vulnerabilities: List[Dict] = Field(default_factory=list, description="[{type, line, severity, description}]")
suggested_fixes: List[str] = Field(default_factory=list, description="Recommended code fixes")
class AuditObservation(Observation):
"""What the environment returns to the agent"""
contract_code: str = Field(..., description="Solidity source code to audit")
contract_name: str = Field(..., description="Name of the contract")
task_id: str = Field(..., description="easy_reentrancy / medium_multi_vuln / ...")
task_description: str = Field(..., description="Human-readable task instructions")
hint: str = Field(default="", description="Optional hint for the agent")
feedback: str = Field(default="", description="Grader feedback from previous step")
reward: float = Field(default=0.0, description="0.0 to 1.0")
done: bool = Field(default=False, description="Episode complete?")
class AuditState(State):
"""Episode metadata"""
episode_id: str = Field(..., description="Unique episode identifier")
step_count: int = Field(default=0, description="Current step number")
current_task: str = Field(..., description="ID of the current task")
max_steps: int = Field(default=5, description="Maximum allowed steps")
total_reward: float = Field(default=0.0, description="Cumulative reward earned")