use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, Default)]
#[serde(rename_all = "kebab-case")]
pub enum HostId {
MurAgent,
MurCommander,
#[default]
All,
#[serde(untagged)]
Custom(String),
}
#[derive(
Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, PartialOrd, Ord, Default,
)]
#[serde(rename_all = "kebab-case")]
pub enum TrustLevel {
#[default]
Sandboxed,
Verified,
Trusted,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum Category {
Context,
Workflow,
Command,
Meta,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum ContentMode {
Context,
Workflow,
Command,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "lowercase")]
pub enum Priority {
Low,
#[default]
Normal,
High,
Critical,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Ord, PartialOrd)]
#[serde(rename_all = "snake_case")]
pub enum TriggerKind {
Command,
Keyword,
SessionStart,
Manual,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn host_id_serialises_kebab_case() {
let yaml = serde_yaml_ng::to_string(&HostId::MurAgent).unwrap();
assert_eq!(yaml.trim(), "mur-agent");
}
#[test]
fn trust_level_ordering_matches_spec() {
assert!(TrustLevel::Sandboxed < TrustLevel::Verified);
assert!(TrustLevel::Verified < TrustLevel::Trusted);
}
#[test]
fn host_id_default_is_all() {
assert_eq!(HostId::default(), HostId::All);
}
}