loong_contracts/
policy_types.rs1use 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}