use crate::{ EditionCapabilities, EditionLimits, MachineAccessMode, OperationSecurityLevel, ProductEdition, Protocol, }; pub trait CapabilityProfile: Send + Sync { fn capabilities(&self) -> EditionCapabilities; } #[derive(Clone, Copy, Debug, Default)] pub struct CommunityCapabilityProfile; impl CapabilityProfile for CommunityCapabilityProfile { fn capabilities(&self) -> EditionCapabilities { EditionCapabilities { edition: ProductEdition::Community, supported_protocols: vec![Protocol::Rest], supported_security_levels: vec![OperationSecurityLevel::Standard], machine_access_modes: vec![MachineAccessMode::StaticAgentKey], limits: EditionLimits { max_workspaces: Some(1), max_users_per_workspace: Some(1), max_agents_per_workspace: None, }, } } }