Skip to main content

loong_contracts/
policy_types.rs

1use std::collections::BTreeSet;
2
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6use crate::contracts::Capability;
7
8#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
9pub struct PolicyContext {
10    pub conversation_hash: Option<String>,
11    pub call_depth: u32,
12}
13
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
15pub struct PolicyRequest {
16    pub tool_name: String,
17    pub parameters: Value,
18    pub pack_id: String,
19    pub agent_id: String,
20    pub capabilities_used: BTreeSet<Capability>,
21    pub context: PolicyContext,
22}
23
24#[non_exhaustive]
25#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
26pub enum PolicyDecision {
27    Allow,
28    Deny(String),
29}