pub mod audit;
pub mod auth;
pub mod cli;
pub mod component_selector;
pub mod config;
pub mod daemon;
#[cfg(feature = "enhanced")]
pub(crate) mod enhanced_impl;
pub mod error;
#[cfg(feature = "enhanced")]
pub mod event_processor;
pub mod logging;
pub mod metrics;
pub mod neutralizer;
pub mod permissions;
pub mod plugins;
pub mod protocol;
pub mod rate_limit;
pub mod resilience;
pub mod scanner;
pub mod security;
pub mod server;
pub mod setup;
pub mod shield;
pub mod signing;
pub mod standard_impl;
pub mod storage;
pub mod telemetry;
pub mod traits;
pub mod transport;
pub mod versioning;
pub mod web;
use std::sync::Arc;
pub use auth::{AuthContext, AuthManager};
pub use component_selector::{ComponentManager, ComponentSelector};
pub use config::{Config, ScannerConfig};
pub use error::{KindlyError, KindlyResult, ResultExt};
pub use metrics::MetricsRegistry;
pub use neutralizer::{
create_neutralizer, create_neutralizer_with_telemetry, NeutralizationConfig,
NeutralizationMode, NeutralizeResult, ThreatNeutralizer,
};
pub use scanner::{Location, SecurityScanner, Severity, Threat, ThreatType};
pub use server::McpServer;
pub use shield::Shield;
pub use traits::{CorrelationEngine, EnhancedScanner, RateLimiter, SecurityEventProcessor};
#[cfg(feature = "enhanced")]
pub fn create_event_buffer(
config: &event_processor::EventProcessorConfig,
) -> anyhow::Result<Option<Box<dyn traits::EventBufferTrait>>> {
if !config.enabled {
return Ok(None);
}
#[cfg(feature = "enhanced")]
{
if config.enhanced_mode.unwrap_or(false) {
tracing::info!(
target: "security.config",
buffer_size_mb = config.buffer_size_mb,
max_endpoints = config.max_endpoints,
"Initializing enhanced atomic bit-packed event buffer"
);
let buffer_size_mb = config.buffer_size_mb;
let max_endpoints = config.max_endpoints;
return Ok(Some(Box::new(enhanced_impl::create_enhanced_event_buffer(
buffer_size_mb,
max_endpoints,
)?)));
}
}
tracing::info!(
target: "security.config",
"Using standard event buffer implementation"
);
Ok(Some(Box::new(event_processor::SimpleEventBuffer::new())))
}
pub fn create_scanner(config: &Config) -> Arc<scanner::SecurityScanner> {
Arc::new(
scanner::SecurityScanner::new(config.scanner.clone())
.expect("Failed to create security scanner"),
)
}
pub fn create_storage(config: &Config) -> Arc<dyn storage::StorageProvider> {
storage::create_storage_provider(config)
}
pub fn create_rate_limiter(config: &Config) -> Arc<rate_limit::RateLimiter> {
Arc::new(rate_limit::RateLimiter::new(config.rate_limit.clone()))
}
pub fn create_transport(config: &Config) -> Arc<dyn transport::Transport> {
transport::create_transport(config)
}
pub fn create_telemetry(config: &Config) -> Arc<dyn telemetry::TelemetryProvider> {
telemetry::create_telemetry_provider(config)
}
pub fn create_audit_logger(config: &Config) -> Arc<dyn audit::AuditLogger> {
audit::create_audit_logger(config)
}
#[cfg(any(test, feature = "test-utils"))]
pub mod mocks {
pub use crate::permissions::MockToolPermissionManager;
pub use crate::traits::MockEnhancedScanner; }