use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct Principal {
pub id: String,
pub kind: PrincipalKind,
pub display_name: String,
pub trust_level: TrustLevel,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[non_exhaustive]
#[serde(rename_all = "PascalCase")]
pub enum PrincipalKind {
User,
Agent,
BrowserExtension,
McpServer,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[non_exhaustive]
#[serde(rename_all = "PascalCase")]
pub enum TrustLevel {
Untrusted,
Limited,
Trusted,
}
impl Default for TrustLevel {
fn default() -> Self {
Self::Untrusted
}
}