"""Cybersec OpenEnv environment package. A long-horizon, partially-observable, multi-agent enterprise cyber-defense environment. The defender (the agent the user trains) faces a scripted attacker walking a MITRE ATT&CK-aligned stage DAG with stochastic dwell times and detection delays. Public surface: * :class:`CybersecAction` / :class:`CybersecObservation` - action / observation * :class:`CybersecEnvironment` - the env subclass * :class:`CybersecEnv` - the persistent client * :func:`list_scenarios` / :func:`get_scenario` - scenario catalog * :class:`AttackerPersonality` - the three archetypes * :func:`list_attacker_personalities` - all personality enum members """ from .__version__ import __version__ from .client import CybersecEnv from .server.cybersec_environment import CybersecEnvironment from .models import ( ActionType, AlertEvent, AlertSignal, AttackerPersonality, CybersecAction, CybersecObservation, CybersecState, ForensicResult, RewardBreakdown, ) from .scenarios import ( AssetTemplate, AttackStage, IdentityTemplate, Scenario, get_scenario, list_eval_scenarios, list_scenarios, list_train_scenarios, scenario_catalog, ) def list_attacker_personalities() -> list[AttackerPersonality]: """Return every :class:`AttackerPersonality` value (scripted attacker modes).""" return list(AttackerPersonality) __all__ = [ "__version__", "CybersecEnv", "CybersecEnvironment", "ActionType", "AlertEvent", "AlertSignal", "AttackerPersonality", "CybersecAction", "CybersecObservation", "CybersecState", "ForensicResult", "RewardBreakdown", "AssetTemplate", "AttackStage", "IdentityTemplate", "Scenario", "get_scenario", "list_eval_scenarios", "list_scenarios", "list_train_scenarios", "scenario_catalog", "list_attacker_personalities", ]