pub struct PolicyEngine { /* private fields */ }Expand description
Combines multiple ActionPolicy instances with a ContextMinimizer
into a single evaluation engine.
Policies are evaluated in order. The first deny verdict wins; if none deny, the last warn wins; if none warn, the action is allowed. Session action counters track per-session usage for rate limiting.
Implementations§
Source§impl PolicyEngine
impl PolicyEngine
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new policy engine with default context minimization and no policies.
Sourcepub fn with_context_minimizer(context_minimizer: ContextMinimizer) -> Self
pub fn with_context_minimizer(context_minimizer: ContextMinimizer) -> Self
Create a new policy engine with a custom context minimizer.
Sourcepub fn add_policy(&mut self, policy: ActionPolicy)
pub fn add_policy(&mut self, policy: ActionPolicy)
Add a policy to the engine. Policies are evaluated in insertion order.
Sourcepub fn policy_count(&self) -> usize
pub fn policy_count(&self) -> usize
Return the number of configured policies.
Sourcepub fn evaluate_action(
&self,
action: &AgentAction,
tool_def: Option<&ToolDefinition>,
session_id: &str,
) -> PolicyDecision
pub fn evaluate_action( &self, action: &AgentAction, tool_def: Option<&ToolDefinition>, session_id: &str, ) -> PolicyDecision
Evaluate an action against all configured policies.
Returns a combined PolicyDecision:
- First deny verdict wins (short-circuit).
- If no deny, the last warn verdict is returned.
- If no violations at all, allow is returned.
Also checks session-level rate limits if any policy has
max_actions_per_session configured.
Sourcepub fn minimize_context(&self, messages: &[Message]) -> Vec<Message>
pub fn minimize_context(&self, messages: &[Message]) -> Vec<Message>
Minimize a sequence of messages using the configured context minimizer.
Sourcepub fn record_action(&self, session_id: &str)
pub fn record_action(&self, session_id: &str)
Record an action for a session (increment counter).
Sourcepub fn reset_session(&self, session_id: &str)
pub fn reset_session(&self, session_id: &str)
Reset the action counter for a session.