SecureCodeEnv / app /models.py
vishaldhakad's picture
making full cordinate with each other
87f5919
"""SecureCodeEnv - Pydantic Models v2 (production-complete)"""
from pydantic import BaseModel, Field
from typing import Optional, Dict, Any, List
class StepAction(BaseModel):
session_id: str
code: str = Field(..., min_length=1)
filename: str = Field(default="solution.py")
task_id: Optional[str] = None
class ScoreDetails(BaseModel):
correctness_passed: Optional[int] = None
correctness_total: Optional[int] = None
attacks_blocked: Optional[int] = None
attacks_total: Optional[int] = None
attack_type: Optional[str] = None
bandit_score: Optional[float] = None
static_issues_count: Optional[int] = None
agent_ms: Optional[float] = None
naive_ms: Optional[float] = None
optimal_ms: Optional[float] = None
class StepObservation(BaseModel):
scores: Dict[str, float]
total_reward: float
feedback: Dict[str, str]
codegraph: Dict[str, Any]
done: bool
step_count: int
details: Optional[ScoreDetails] = None
class ResetRequest(BaseModel):
difficulty: Optional[str] = Field(default="medium")
task_id: Optional[str] = Field(default=None, description="Override: request a specific task ID")
session_id: Optional[str] = None
class ResetObservation(BaseModel):
session_id: str
task_id: str
problem_statement: str
difficulty: str
cwe_targets: List[str]
codegraph: Dict[str, Any]
starter_code: str = ""
naive_baseline: Optional[Dict] = None
class StateResponse(BaseModel):
session_id: str
task_id: str
step: int
done: bool
codegraph: Dict[str, Any]
difficulty: str
scores_history: List[float] = []
class HealthResponse(BaseModel):
status: str
env: str
version: str
tasks_loaded: int
class TaskSummary(BaseModel):
id: str
difficulty: str
cwe_targets: List[str]
description: str = ""