im-core 0.1.0

Rust IM SDK for Awiki clients built on Agent Network Protocol (ANP)
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct SecretAccessPolicy {
    pub no_prompt: bool,
    pub user_presence_required: bool,
    pub exportable: bool,
    pub cache_ttl_seconds: Option<u64>,
}

impl SecretAccessPolicy {
    pub fn no_prompt_local_secret() -> Self {
        Self {
            no_prompt: true,
            user_presence_required: false,
            exportable: false,
            cache_ttl_seconds: None,
        }
    }

    pub fn validate_no_prompt(&self) -> crate::ImResult<()> {
        if !self.no_prompt || self.user_presence_required {
            return Err(crate::ImError::unsupported(
                "secret vault record requires user presence; awiki vault access must be no-prompt",
            ));
        }
        Ok(())
    }
}