Spaces:
Sleeping
Sleeping
File size: 2,713 Bytes
6c62fb1 bccfde3 6c62fb1 bccfde3 6c62fb1 bccfde3 4f73b89 bccfde3 4f73b89 bccfde3 6c62fb1 bccfde3 6c62fb1 4f73b89 bccfde3 4f73b89 bccfde3 4f73b89 6c62fb1 bccfde3 6c62fb1 bccfde3 6c62fb1 4f73b89 bccfde3 6c62fb1 bccfde3 4f73b89 6c62fb1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | """Typed models for Agentic Security Lab round 2."""
from typing import Any
from pydantic import BaseModel, Field
# Action payload sent by the policy each turn.
class AgenticSecurityLabAction(BaseModel):
"""One action emitted by the policy."""
command: str
parameters: dict[str, Any] = Field(default_factory=dict)
# Observation payload returned after each action.
class AgenticSecurityLabObservation(BaseModel):
"""Observation after each action."""
success: bool
done: bool
reward: float
result: str
data: dict[str, Any] = Field(default_factory=dict)
incident_summary: str = ""
steps_remaining: int = 0
exposed_secrets: list[str] = Field(default_factory=list)
active_malicious_packages: list[str] = Field(default_factory=list)
visible_alerts: list[str] = Field(default_factory=list)
uncertainty_score: float = 0.0
plan_progress: dict[str, bool] = Field(default_factory=dict)
info: dict[str, Any] = Field(default_factory=dict)
error: str | None = None
# Full internal episode state returned by GET /state.
class AgenticSecurityLabState(BaseModel):
"""Full internal episode state."""
episode_id: str = ""
step_count: int = 0
task_name: str = ""
mode: str = "benchmark"
mode_fallback_used: bool = False
command_fallback_enabled: bool = False
command_fallback_used_count: int = 0
invalid_action_count: int = 0
false_positive_count: int = 0
packages: dict[str, Any] = Field(default_factory=dict)
dependents: dict[str, list[str]] = Field(default_factory=dict)
secrets: dict[str, Any] = Field(default_factory=dict)
quarantined: list[str] = Field(default_factory=list)
rotated_secrets: list[str] = Field(default_factory=list)
notified_teams: list[str] = Field(default_factory=list)
inspected: list[str] = Field(default_factory=list)
scanned_logs: list[str] = Field(default_factory=list)
discovered_packages: list[str] = Field(default_factory=list)
discovered_secrets: list[str] = Field(default_factory=list)
traced_packages: list[str] = Field(default_factory=list)
pending_hidden_iocs: list[str] = Field(default_factory=list)
discovered_iocs: list[str] = Field(default_factory=list)
risk_events: list[str] = Field(default_factory=list)
max_steps: int = 20
exfiltration_step: int = 15
attacker_progress: float = 0.0
total_reward: float = 0.0
incident_contained: bool = False
attacker_succeeded: bool = False
plan_progress: dict[str, bool] = Field(default_factory=dict)
trajectory_log: list[dict[str, Any]] = Field(default_factory=list)
|