cannon-and-wall / client /models.py
AI Agent
teammate: models + judge v3-fixed
8420a90
Raw
History Blame Contribute Delete
945 Bytes
from pydantic import BaseModel
from typing import Optional
class CannonAction(BaseModel):
vuln_type: str # "sqli" | "xss" | "broken_auth"
line_number: int # line where vuln was found
proof_of_concept: str = "" # add this after line_number field
patched_code: str # Cannon's attempted bypass patch
class WallAction(BaseModel):
patched_code: str # Wall's security patch
class GameState(BaseModel):
stage: int # 1=easy, 2=medium, 3=hard
original_code: str # vulnerable app.py content
round: int # current round (1–3, then episode ends)
cannon_report: Optional[dict] = None
wall_patch: Optional[str] = None
class StepResult(BaseModel):
observation: dict
reward: dict # {"cannon_total": float, "wall_total": float, ...}
done: bool
info: dict
class ResetResult(BaseModel):
observation: dict
state: GameState