| import enum | |
| from pathlib import Path | |
| from typing import Any, Dict, List, Optional | |
| from pydantic import BaseModel, Field | |
| class Severity(str, enum.Enum): | |
| CRITICAL = "CRITICAL" | |
| HIGH = "HIGH" | |
| MEDIUM = "MEDIUM" | |
| LOW = "LOW" | |
| INFO = "INFO" | |
| class Finding(BaseModel): | |
| """ | |
| Represents a single security finding detected by an analyzer. | |
| """ | |
| rule_id: str | |
| category: str | |
| severity: Severity | |
| file_path: str | |
| line_number: int | |
| line_content: Optional[str] = None | |
| description: str | |
| remediation: Optional[str] = None | |
| metadata: Dict[str, Any] = Field(default_factory=dict) | |
| class ScanResult(BaseModel): | |
| """ | |
| Results from scanning a single skill or directory. | |
| """ | |
| is_safe: bool | |
| max_severity: Severity | |
| findings: List[Finding] | |
| scan_duration: float | |
| files_scanned: int | |
| analyzers_run: List[str] | |
| class SecurityRule(BaseModel): | |
| """ | |
| Definition of a security rule for pattern matching. | |
| """ | |
| id: str | |
| category: str | |
| severity: Severity | |
| patterns: List[str] | |
| exclude_patterns: List[str] = Field(default_factory=list) | |
| file_types: List[str] | |
| description: str | |
| remediation: Optional[str] = None | |