File size: 925 Bytes
3807ea3
 
 
 
 
 
 
6abc8c5
3807ea3
 
 
6abc8c5
3807ea3
 
 
 
 
 
6abc8c5
 
3807ea3
6abc8c5
 
 
 
 
 
3807ea3
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
"""Server-side verifier aggregation for terminal scoring."""

from __future__ import annotations

try:
    from ..models import CyberSecurityOWASPAction, CyberSecurityOWASPState
    from ..rewards import compute_reward
    from .verifier import MultiLayerVerifier
except ImportError:  # pragma: no cover
    from models import CyberSecurityOWASPAction, CyberSecurityOWASPState
    from rewards import compute_reward
    from server.verifier import MultiLayerVerifier


def evaluate_action(
    state: CyberSecurityOWASPState,
    action: CyberSecurityOWASPAction,
    anti_cheat_flags: list[str] | None = None,
    *,
    invalid_action: bool = False,
) -> tuple[dict, dict[str, float]]:
    verifier_result = MultiLayerVerifier().evaluate_action(
        state,
        action,
        anti_cheat_flags,
        invalid_action=invalid_action,
    )
    return verifier_result, compute_reward(state, action, verifier_result)