pub mod adapters;
pub mod benchmarking;
pub mod multi_model_validator;
pub mod platforms;
pub mod scoring;
pub mod validation;
pub mod validation_config;
pub mod demo;
pub mod integration_examples;
pub use adapters::{CrossPlatformValidator, ValidationAdapter, ValidationSuite};
pub use benchmarking::{BenchmarkSuite, PerformanceMetrics};
pub use multi_model_validator::{
CostAnalysis, MultiModelConfig, MultiModelValidationResult, MultiModelValidator,
PerformanceMetrics as MultiModelPerformanceMetrics, ValidationStrategy,
};
pub use platforms::{Platform, PlatformValidator, ValidationEnvironment};
pub use scoring::{ScoreBreakdown, ScoringCriteria, VIBEScore};
pub use validation::{VIBEEngine, ValidationResult};
pub use validation_config::ValidationConfig;
pub use demo::{run_vibe_demo, VIBEDemo};
pub use integration_examples::{IntegratedValidationResult, ThinkToolVIBEIntegration};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use uuid::Uuid;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidationRequest {
pub protocol_id: Uuid,
pub protocol_content: String,
pub protocol_type: ProtocolType,
pub target_platforms: Vec<Platform>,
pub validation_criteria: ValidationCriteria,
pub environment_config: EnvironmentConfig,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ProtocolType {
ThinkToolChain,
DecisionFramework,
ReasoningProcess,
ValidationMethod,
LogicFlow,
CustomProtocol,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidationCriteria {
pub logical_consistency: bool,
pub practical_applicability: bool,
pub platform_compatibility: bool,
pub performance_requirements: bool,
pub security_considerations: bool,
pub user_experience: bool,
pub custom_metrics: HashMap<String, f32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EnvironmentConfig {
pub timeout_ms: u64,
pub resource_limits: ResourceLimits,
pub network_conditions: NetworkConditions,
pub browser_settings: Option<BrowserSettings>,
pub mobile_settings: Option<MobileSettings>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceLimits {
pub max_memory_mb: u64,
pub max_cpu_percent: f32,
pub max_disk_usage_mb: u64,
pub max_network_requests: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NetworkConditions {
pub latency_ms: u32,
pub bandwidth_mbps: f32,
pub packet_loss_percent: f32,
pub connection_type: ConnectionType,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ConnectionType {
Wifi,
Cellular4G,
Cellular5G,
Ethernet,
Satellite,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BrowserSettings {
pub browser_type: BrowserType,
pub viewport_size: ViewportSize,
pub device_pixel_ratio: f32,
pub touch_enabled: bool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum BrowserType {
Chrome,
Firefox,
Safari,
Edge,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ViewportSize {
pub width: u32,
pub height: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MobileSettings {
pub device_type: DeviceType,
pub screen_size: ScreenSize,
pub os_version: String,
pub orientation: Orientation,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum DeviceType {
Phone,
Tablet,
Watch,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ScreenSize {
pub width: u32,
pub height: u32,
pub density: f32,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Orientation {
Portrait,
Landscape,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VIBEStats {
pub total_validations: u64,
pub average_score: f32,
pub success_rate: f32,
pub platform_distribution: HashMap<Platform, u32>,
pub validation_trends: Vec<ScoreTrend>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ScoreTrend {
pub timestamp: chrono::DateTime<chrono::Utc>,
pub score: f32,
pub platform: Platform,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_validation_request_creation() {
let request = ValidationRequest {
protocol_id: Uuid::new_v4(),
protocol_content: "Test protocol".to_string(),
protocol_type: ProtocolType::ThinkToolChain,
target_platforms: vec![Platform::Web],
validation_criteria: ValidationCriteria {
logical_consistency: true,
practical_applicability: true,
platform_compatibility: true,
performance_requirements: false,
security_considerations: false,
user_experience: true,
custom_metrics: HashMap::new(),
},
environment_config: EnvironmentConfig {
timeout_ms: 30000,
resource_limits: ResourceLimits {
max_memory_mb: 512,
max_cpu_percent: 80.0,
max_disk_usage_mb: 1024,
max_network_requests: 100,
},
network_conditions: NetworkConditions {
latency_ms: 50,
bandwidth_mbps: 10.0,
packet_loss_percent: 0.0,
connection_type: ConnectionType::Wifi,
},
browser_settings: None,
mobile_settings: None,
},
};
assert_eq!(request.protocol_type, ProtocolType::ThinkToolChain);
assert!(request.validation_criteria.logical_consistency);
}
}